aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-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/jamvm/jamvm-1.3.0/.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/altboot/altboot_1.1.1+wip-SVNR73.bb (renamed from packages/altboot/altboot_1.1.1+wip-SVNR69.bb)2
-rw-r--r--packages/angstrom/angstrom-gpe-task-base.bb3
-rw-r--r--packages/apex/apex-env_1.5.13.bb24
-rw-r--r--packages/apex/apex-env_1.5.8.bb6
-rw-r--r--packages/apex/apex-nslu2-1.5.13/.mtn2git_empty (renamed from packages/jamvm/jamvm/.mtn2git_empty)0
-rw-r--r--packages/apex/apex-nslu2-1.5.13/defconfig164
-rw-r--r--packages/apex/apex-nslu2-1.5.8/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/.mtn2git_empty)0
-rw-r--r--packages/apex/apex-nslu2-1.5.8/defconfig (renamed from packages/apex/files/defconfig)0
-rw-r--r--packages/apex/apex-nslu2-16mb-1.5.13/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/asus620/.mtn2git_empty)0
-rw-r--r--packages/apex/apex-nslu2-16mb-1.5.13/defconfig164
-rw-r--r--packages/apex/apex-nslu2-16mb-1.5.8/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/asus730/.mtn2git_empty)0
-rw-r--r--packages/apex/apex-nslu2-16mb-1.5.8/defconfig (renamed from packages/apex/files/defconfig-16mb)0
-rw-r--r--packages/apex/apex-nslu2-16mb_1.5.13.bb63
-rw-r--r--packages/apex/apex-nslu2-16mb_1.5.8.bb8
-rw-r--r--packages/apex/apex-nslu2_1.5.13.bb63
-rw-r--r--packages/apex/files/find-apex-partition.patch34
-rw-r--r--packages/apr/apr-util_1.2.7.bb9
-rw-r--r--packages/apr/apr_1.2.7.bb3
-rw-r--r--packages/asterisk-core-sounds-en-alaw/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty)0
-rw-r--r--packages/asterisk-core-sounds-en-alaw/asterisk-core-sounds-en-alaw_1.4.7.bb46
-rw-r--r--packages/asterisk-core-sounds-en-g729/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/eteng500/.mtn2git_empty)0
-rw-r--r--packages/asterisk-core-sounds-en-g729/asterisk-core-sounds-en-g729_1.4.7.bb46
-rw-r--r--packages/asterisk-core-sounds-en-gsm/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/ghi270/.mtn2git_empty)0
-rw-r--r--packages/asterisk-core-sounds-en-gsm/asterisk-core-sounds-en-gsm_1.4.7.bb48
-rw-r--r--packages/asterisk-core-sounds-en-ulaw/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h1910/.mtn2git_empty)0
-rw-r--r--packages/asterisk-core-sounds-en-ulaw/asterisk-core-sounds-en-ulaw_1.4.7.bb46
-rw-r--r--packages/asterisk-extra-sounds-en-alaw/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h2200/.mtn2git_empty)0
-rw-r--r--packages/asterisk-extra-sounds-en-alaw/asterisk-extra-sounds-en-alaw_1.4.6.bb37
-rw-r--r--packages/asterisk-extra-sounds-en-g729/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h3600/.mtn2git_empty)0
-rw-r--r--packages/asterisk-extra-sounds-en-g729/asterisk-extra-sounds-en-g729_1.4.6.bb37
-rw-r--r--packages/asterisk-extra-sounds-en-gsm/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h3800/.mtn2git_empty)0
-rw-r--r--packages/asterisk-extra-sounds-en-gsm/asterisk-extra-sounds-en-gsm_1.4.6.bb37
-rw-r--r--packages/asterisk-extra-sounds-en-ulaw/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h3900/.mtn2git_empty)0
-rw-r--r--packages/asterisk-extra-sounds-en-ulaw/asterisk-extra-sounds-en-ulaw_1.4.6.bb37
-rw-r--r--packages/asterisk-moh-freeplay-alaw/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h4000/.mtn2git_empty)0
-rw-r--r--packages/asterisk-moh-freeplay-alaw/asterisk-moh-freeplay-alaw_0.0.0.bb22
-rw-r--r--packages/asterisk-moh-freeplay-g729/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/h5000/.mtn2git_empty)0
-rw-r--r--packages/asterisk-moh-freeplay-g729/asterisk-moh-freeplay-g729_0.0.0.bb20
-rw-r--r--packages/asterisk-moh-freeplay-gsm/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcalpine/.mtn2git_empty)0
-rw-r--r--packages/asterisk-moh-freeplay-gsm/asterisk-moh-freeplay-gsm_0.0.0.bb20
-rw-r--r--packages/asterisk-moh-freeplay-ulaw/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcapache/.mtn2git_empty)0
-rw-r--r--packages/asterisk-moh-freeplay-ulaw/asterisk-moh-freeplay-ulaw_0.0.0.bb22
-rw-r--r--packages/asterisk/asterisk-1.4.17/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcbeetles/.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_1.4.17.bb171
-rw-r--r--packages/atftp/atftp_0.7.bb4
-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/avahi/avahi.inc8
-rw-r--r--packages/avetanabt/avetanabt_20060413.bb5
-rw-r--r--packages/avetanabt/avetanabt_cvs.bb5
-rw-r--r--packages/backsaver/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty)0
-rw-r--r--packages/backsaver/backsaver_1.0.bb14
-rw-r--r--packages/backsaver/files/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htchimalaya/.mtn2git_empty)0
-rw-r--r--packages/backsaver/files/Makefile8
-rw-r--r--packages/backsaver/files/backsaver.c256
-rw-r--r--packages/bluez/bluez-cups-backend_3.24.bb28
-rw-r--r--packages/bluez/bluez-gnome_0.15.bb14
-rw-r--r--packages/bluez/bluez-gstreamer-plugin_3.24.bb28
-rw-r--r--packages/bluez/bluez-libs_3.24.bb4
-rw-r--r--packages/bluez/bluez-utils-alsa_3.24.bb26
-rw-r--r--packages/bluez/bluez-utils/hciattach-ti-bts.patch68
-rw-r--r--packages/bluez/bluez-utils3.inc8
-rw-r--r--packages/bluez/bluez-utils_3.23.bb1
-rw-r--r--packages/bluez/bluez-utils_3.24.bb30
-rw-r--r--packages/busybox/busybox_1.00.bb2
-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.bb16
-rw-r--r--packages/cacao/cacaoh-cldc-native_0.98.bb25
-rw-r--r--packages/cacao/cacaoh-native.inc28
-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.patch12
-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/cmake/cmake-native_2.4.7.bb3
-rw-r--r--packages/cmake/cmake.inc (renamed from packages/cmake/cmake-native_2.2.3.bb)4
-rw-r--r--packages/cmake/cmake_2.4.7.bb2
-rw-r--r--packages/dbus/dbus-1.1.1/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcsable/.mtn2git_empty)0
-rw-r--r--packages/dbus/dbus-1.1.1/cross.patch10
-rw-r--r--packages/dbus/dbus-1.1.1/dbus-1.init110
-rw-r--r--packages/dbus/dbus-1.1.1/fix-install-daemon.patch13
-rw-r--r--packages/dbus/dbus-1.1.1/tmpdir.patch30
-rw-r--r--packages/dbus/dbus-native_1.1.1.bb31
-rw-r--r--packages/dbus/dbus_1.1.1.bb63
-rw-r--r--packages/distcc/distcc_2.18.3.bb15
-rw-r--r--packages/distcc/files/distcc2
-rw-r--r--packages/distcc/files/distcc-avahi.patch12305
-rw-r--r--packages/distcc/files/no-man.patch11
-rw-r--r--packages/docbook-dsssl-stylesheets/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcuniversal/.mtn2git_empty)0
-rw-r--r--packages/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb35
-rw-r--r--packages/docbook-sgml-dtd/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty)0
-rw-r--r--packages/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb12
-rw-r--r--packages/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb12
-rw-r--r--packages/docbook-sgml-dtd/docbook-sgml-dtd-4.4-native.bb10
-rw-r--r--packages/docbook-sgml-dtd/docbook-sgml-dtd-native.inc31
-rw-r--r--packages/docbook-utils/docbook-utils-native_0.6.13.bb2
-rw-r--r--packages/docbook-utils/docbook-utils-native_0.6.14.bb41
-rw-r--r--packages/docbook-utils/docbook-utils_0.6.13.bb3
-rw-r--r--packages/docbook-utils/docbook-utils_0.6.14.bb10
-rw-r--r--packages/dpkg/dpkg.inc4
-rw-r--r--packages/dtnrg/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/hx4700/.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/linux/linux-handhelds-2.6/looxc550/.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/e2fsprogs/e2fsprogs_1.38.bb6
-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/fix-plugin-path-check.patch24
-rw-r--r--packages/efl1/epdf_cvs.bb3
-rw-r--r--packages/efl1/etk_cvs.bb3
-rw-r--r--packages/efl1/evas.inc16
-rw-r--r--packages/efl1/evas_cvs.bb3
-rw-r--r--packages/efl1/ewl_cvs.bb5
-rw-r--r--packages/emacs/emacs-x11_20060801.bb4
-rw-r--r--packages/emacs/emacs-x11_cvs.bb3
-rw-r--r--packages/emacs/emacs_20060801.bb2
-rw-r--r--packages/emacs/emacs_cvs.bb12
-rw-r--r--packages/enca/enca_1.9.bb4
-rw-r--r--packages/espeak/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty)0
-rw-r--r--packages/espeak/espeak_1.30.bb52
-rw-r--r--packages/flite/flite-1.3/flite-1.3-Makefile.patch405
-rw-r--r--packages/flite/flite-1.3/flite-1.3-configure-with-audio.patch12
-rw-r--r--packages/flite/flite-1.3/flite-1.3-fix-read-only-assignments.patch15
-rw-r--r--packages/flite/flite-alsa-1.2/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/rx1950/.mtn2git_empty)0
-rw-r--r--packages/flite/flite-alsa-1.2/flite-1.2-alsa_support-1.2.diff (renamed from packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff)0
-rw-r--r--packages/flite/flite-alsa-1.2/flite-alsa-1.2-configure-with-audio.patch12
-rw-r--r--packages/flite/flite-alsa-1.3/.mtn2git_empty (renamed from packages/linux/linux-handhelds-2.6/rx3000/.mtn2git_empty)0
-rw-r--r--packages/flite/flite-alsa-1.3/flite-1.3-alsa_support-1.2.diff (renamed from packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff)0
-rw-r--r--packages/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch12
-rw-r--r--packages/flite/flite-alsa_1.2.bb10
-rw-r--r--packages/flite/flite-alsa_1.3.bb11
-rw-r--r--packages/flite/flite.inc9
-rw-r--r--packages/flite/flite_1.2.bb9
-rw-r--r--packages/flite/flite_1.3.bb10
-rw-r--r--packages/flumotion/flumotion_0.4.1.bb16
-rw-r--r--packages/fmtools/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.16/.mtn2git_empty)0
-rw-r--r--packages/fmtools/files/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.17/.mtn2git_empty)0
-rw-r--r--packages/fmtools/files/makefile.patch11
-rw-r--r--packages/fmtools/fmtools_1.0.2.bb15
-rw-r--r--packages/freenote/freenote_1.12.0.bb2
-rw-r--r--packages/fstests/fstests.bb4
-rw-r--r--packages/gallery/gallery_1.5.5.bb2
-rw-r--r--packages/gammu/gammu_1.17.0.bb (renamed from packages/gammu/gammu_1.13.0.bb)0
-rw-r--r--packages/gcc/gcc-cross-sdk_4.2.2.bb16
-rw-r--r--packages/gcc/gcc-native.inc28
-rw-r--r--packages/gcc/gcc-native_3.4.4.bb2
-rw-r--r--packages/gcc/gcc-package.inc6
-rw-r--r--packages/gettext/gettext_0.14.1.bb16
-rw-r--r--packages/git/files/git-gui-install-mode-arg-spaces.patch32
-rw-r--r--packages/git/git.inc4
-rw-r--r--packages/glibc/eglibc-package.bbclass8
-rw-r--r--packages/glibc/glibc-package.bbclass10
-rw-r--r--packages/gnome-mplayer/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.21/.mtn2git_empty)0
-rw-r--r--packages/gnome-mplayer/files/.mtn2git_empty (renamed from packages/qmake/qmake2-native-2.10a/.mtn2git_empty)0
-rw-r--r--packages/gnome-mplayer/files/1.patch37
-rw-r--r--packages/gnome-mplayer/files/ac-gthread.patch12
-rw-r--r--packages/gnome-mplayer/files/non-utf8-id3-fallback.patch22
-rw-r--r--packages/gnome-mplayer/files/uchar-for-utf8-check.patch22
-rw-r--r--packages/gnome-mplayer/gnome-mplayer_0.5.3.bb14
-rw-r--r--packages/gnome-mplayer/gnome-mplayer_cvs.bb18
-rw-r--r--packages/gpe-login/files/c-locale.patch11
-rw-r--r--packages/gpe-login/gpe-login_0.90.bb3
-rw-r--r--packages/gpe-nmf/gpe-nmf.inc2
-rw-r--r--packages/gpe-nmf/gpe-nmf_0.22.bb2
-rw-r--r--packages/gpe-session-scripts/gpe-session-scripts_0.67.bb2
-rw-r--r--packages/gpsd/files/fic-gta01/.mtn2git_empty (renamed from packages/qt/qt4-x11-free-4.1.2/.mtn2git_empty)0
-rw-r--r--packages/gpsd/files/fic-gta01/gps-hardware41
-rw-r--r--packages/gpsd/files/fic-gta01/gpsd-default3
-rw-r--r--packages/gpsd/files/fic-gta01/restart_gllin.sh6
-rw-r--r--packages/gpsd/files/gps-hardware2
-rwxr-xr-xpackages/gpsd/files/gpsd11
-rw-r--r--packages/gpsd/gpsd.inc40
-rw-r--r--packages/gpsd/gpsd_2.28.bb2
-rw-r--r--packages/gpsd/gpsd_2.34.bb2
-rw-r--r--packages/gpsd/gpsd_2.36.bb3
-rw-r--r--packages/gpsdrive/gpsdrive-pda/.mtn2git_empty (renamed from packages/qt/qt4-x11-free-4.3.2/.mtn2git_empty)0
-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/default14
-rw-r--r--packages/gsm/gsmd.inc2
-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.bb16
-rw-r--r--packages/helloworld/helloworld_1.0.0.bb2
-rw-r--r--packages/hwdata/hwdata_0.191.bb6
-rw-r--r--packages/imagemagick/imagemagick-native_6.3.5-10.bb3
-rw-r--r--packages/images/base-image.bb16
-rw-r--r--packages/images/initramfs-minimal-image.bb3
-rw-r--r--packages/images/minimal-gpe-image.bb3
-rw-r--r--packages/images/nas-server-image.bb53
-rw-r--r--packages/images/openmoko-python-devel-image.bb6
-rw-r--r--packages/images/opie-image-16mb.bb45
-rw-r--r--packages/images/opie-image.bb47
-rw-r--r--packages/images/unslung-image.bb14
-rw-r--r--packages/initrdscripts/files/30-bootmenu.sh4
-rw-r--r--packages/initrdscripts/files/80-nfsboot.sh2
-rw-r--r--packages/initrdscripts/initramfs-module-bootmenu_1.0.bb4
-rw-r--r--packages/initrdscripts/initramfs-module-nfs_1.0.bb4
-rw-r--r--packages/initscripts/initscripts-1.0/functions4
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/ipaq-sleep/files/unbreak.patch11
-rw-r--r--packages/ipaq-sleep/ipaq-sleep_0.9.bb4
-rw-r--r--packages/ipkg/ipkg-native_0.99.163.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-npe-2.4/.mtn2git_empty (renamed from packages/qte/qtopia-core/.mtn2git_empty)0
-rw-r--r--packages/ixp4xx/ixp4xx-npe-2.4/Intel40
-rw-r--r--packages/ixp4xx/ixp4xx-npe_2.4.bb9
-rw-r--r--packages/jamvm/files/.mtn2git_empty (renamed from packages/quilt/quilt-0.39/.mtn2git_empty)0
-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/kdepimpi/kdepimpi-base.inc2
-rw-r--r--packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch294
-rw-r--r--packages/kexec/kexec-tools_1.101.bb9
-rw-r--r--packages/kismet/kismet_2007-10-R1.bb4
-rw-r--r--packages/knights/knights_1.14.bb2
-rw-r--r--packages/libdotconf/.mtn2git_empty (renamed from packages/roadmap/zroadmap-1.0.12/.mtn2git_empty)0
-rw-r--r--packages/libdotconf/files/.mtn2git_empty (renamed from packages/uboot/.mtn2git_empty)0
-rw-r--r--packages/libdotconf/files/srcMakefile.am_00.patch9
-rw-r--r--packages/libdotconf/libdotconf_1.0.13.bb25
-rw-r--r--packages/libqanava/libqanava_0.0.7.bb4
-rw-r--r--packages/libsdl/libsdl-mixer_1.2.6.bb6
-rw-r--r--packages/libtool/libtool-1.5.6/.mtn2git_empty (renamed from packages/uboot/files/.mtn2git_empty)0
-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/linux-2.6.22.6/mx31moboard/.mtn2git_empty (renamed from packages/uboot/u-boot-1.1.2/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.22.6/mx31moboard/defconfig1492
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc5/alix/.mtn2git_empty (renamed from packages/uboot/u-boot-1.1.4/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc5/alix/defconfig1836
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc5/cm-x270/defconfig76
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/.mtn2git_empty (renamed from packages/uboot/u-boot-1.1.6/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/0001-gesbc-nand.patch306
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/defconfig (renamed from packages/linux/linux-rp-2.6.17/defconfig-qemuarm)955
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc6/.mtn2git_empty (renamed from packages/uboot/u-boot-1.2.0/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/.mtn2git_empty (renamed from packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0001-2.6.23-at91.patch16686
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0002-at91sam9260ek_defconfig.patch959
-rw-r--r--packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/defconfig1129
-rw-r--r--packages/linux/linux-2.6.23/kallsyms-missing-include.patch19
-rw-r--r--packages/linux/linux-dht-walnut-2.6.20/dht-walnut/.mtn2git_empty (renamed from packages/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-dht-walnut-2.6.20/dht-walnut/defconfig (renamed from packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig)0
-rw-r--r--packages/linux/linux-dht-walnut/.mtn2git_empty (renamed from packages/uboot/u-boot-mkimage-openmoko-native/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-dht-walnut/dht-walnut/.mtn2git_empty (renamed from packages/uboot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-dht-walnut/dht-walnut/defconfig2353
-rw-r--r--packages/linux/linux-dht-walnut/remove-todc.patch920
-rw-r--r--packages/linux/linux-dht-walnut_2.6.20.bb48
-rw-r--r--packages/linux/linux-dht-walnut_2.6.23.bb56
-rw-r--r--packages/linux/linux-efika_2.6.20.20.bb8
-rw-r--r--packages/linux/linux-efika_2.6.20.bb8
-rw-r--r--packages/linux/linux-efika_2.6.21+git.bb8
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/.mtn2git_empty (renamed from packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/asus620/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig (renamed from packages/linux/linux-handhelds-2.6/asus620/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/asus730/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig (renamed from packages/linux/linux-handhelds-2.6/asus730/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/aximx50/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig (renamed from packages/linux/linux-handhelds-2.6/aximx50/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/eteng500/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig (renamed from packages/linux/linux-handhelds-2.6/eteng500/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h1910/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig (renamed from packages/linux/linux-handhelds-2.6/h1910/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h2200/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig (renamed from packages/linux/linux-handhelds-2.6/h2200/defconfig)95
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3600/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig (renamed from packages/linux/linux-handhelds-2.6/h3600/defconfig)80
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3800/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig (renamed from packages/linux/linux-handhelds-2.6/h3800/defconfig)80
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3900/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig (renamed from packages/linux/linux-handhelds-2.6/h3900/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h4000/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig (renamed from packages/linux/linux-handhelds-2.6/h4000/defconfig)100
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h5000/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig (renamed from packages/linux/linux-handhelds-2.6/h5000/defconfig)216
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcalpine/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcapache/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcapache/defconfig)100
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcbeetles/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcblueangel/defconfig)106
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig (renamed from packages/linux/linux-handhelds-2.6/htchimalaya/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcsable/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcsable/defconfig)100
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcuniversal/defconfig)101
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig (renamed from packages/linux/linux-handhelds-2.6/htcwallaby/defconfig)80
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/hx4700/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig (renamed from packages/linux/linux-handhelds-2.6/hx4700/defconfig)95
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/looxc550/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig (renamed from packages/linux/linux-handhelds-2.6/looxc550/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/magician/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig (renamed from packages/linux/linux-handhelds-2.6/magician/defconfig)99
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/rx1950/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig (renamed from packages/linux/linux-handhelds-2.6/rx1950/defconfig)89
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/rx3000/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig (renamed from packages/linux/linux-handhelds-2.6/rx3000/defconfig)102
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb11
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb4
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb4
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb11
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb6
-rw-r--r--packages/linux/linux-handhelds-2.6_cvs.bb6
-rw-r--r--packages/linux/linux-ixp4xx.inc2
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.23.12 (renamed from packages/linux/linux-ixp4xx/defconfig-2.6.23.8)0
-rw-r--r--packages/linux/linux-ixp4xx_2.6.23.12.bb (renamed from packages/linux/linux-ixp4xx_2.6.23.8.bb)26
-rw-r--r--packages/linux/linux-magicbox_2.6.18.6.bb8
-rw-r--r--packages/linux/linux-magicbox_2.6.19.2.bb10
-rw-r--r--packages/linux/linux-ml403-mvista-2.6.x_git.bb8
-rw-r--r--packages/linux/linux-ml403-slab-2.6.x_git.bb8
-rw-r--r--packages/linux/linux-omap2-git/omap2430sdp/.mtn2git_empty0
-rw-r--r--packages/linux/linux-omap2-git/omap2430sdp/defconfig (renamed from packages/linux/linux-omap2-git/defconfig)0
-rw-r--r--packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi (renamed from packages/linux/linux-omap2-git/defconfig.eabi)0
-rw-r--r--packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc61814
-rw-r--r--packages/linux/linux-openmoko-devel_2.6.23+2.6.24-rc7.bb59
-rw-r--r--packages/linux/linux-openmoko-devel_svn+2.6.24-rc6.bb68
-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.bb2
-rw-r--r--packages/linux/linux-rp-2.6.16/00-hostap.patch45
-rw-r--r--packages/linux/linux-rp-2.6.16/10-pcnet.patch27
-rw-r--r--packages/linux/linux-rp-2.6.16/add-oz-release-string.patch24
-rw-r--r--packages/linux/linux-rp-2.6.16/connectplus-remove-ide-HACK.patch12
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-akita1572
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-c7x01608
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-collie1154
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-hx20001028
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-poodle1556
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-qemuarm941
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-spitz1572
-rw-r--r--packages/linux/linux-rp-2.6.16/defconfig-tosa1608
-rw-r--r--packages/linux/linux-rp-2.6.16/hrw-pcmcia-ids-r5.patch63
-rw-r--r--packages/linux/linux-rp-2.6.16/locomo-kbd-hotkeys.patch48
-rw-r--r--packages/linux/linux-rp-2.6.16/locomo-lcd-def-bightness.patch11
-rw-r--r--packages/linux/linux-rp-2.6.16/locomo-sysrq+keyrepeat.patch49
-rw-r--r--packages/linux/linux-rp-2.6.16/maxpower-message.patch55
-rw-r--r--packages/linux/linux-rp-2.6.16/pxa-serial-hack.patch73
-rw-r--r--packages/linux/linux-rp-2.6.16/rmk-mmc1.patch61
-rw-r--r--packages/linux/linux-rp-2.6.16/rmk-mmc2.patch26
-rw-r--r--packages/linux/linux-rp-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch155
-rw-r--r--packages/linux/linux-rp-2.6.16/squashfs3.0-2.6.15.patch4174
-rw-r--r--packages/linux/linux-rp-2.6.17/00-hostap.patch45
-rw-r--r--packages/linux/linux-rp-2.6.17/10-pcnet.patch27
-rw-r--r--packages/linux/linux-rp-2.6.17/add-oz-release-string.patch24
-rw-r--r--packages/linux/linux-rp-2.6.17/asoc-v0.12.4_2.6.17.patch31713
-rw-r--r--packages/linux/linux-rp-2.6.17/connectplus-remove-ide-HACK.patch12
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-akita1572
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-c7x01608
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-collie1641
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-hx20001028
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-poodle1655
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-qemux861562
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-spitz1603
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-tosa1609
-rw-r--r--packages/linux/linux-rp-2.6.17/hrw-pcmcia-ids-r5.patch63
-rw-r--r--packages/linux/linux-rp-2.6.17/orinoco-remove-all-which-are-in-hostap-HACK.patch88
-rw-r--r--packages/linux/linux-rp-2.6.17/pxa-serial-hack.patch73
-rw-r--r--packages/linux/linux-rp-2.6.17/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch155
-rw-r--r--packages/linux/linux-rp-2.6.17/squashfs3.0-2.6.15.patch4174
-rw-r--r--packages/linux/linux-rp-2.6.17/tosa-lcdnoise-r0.patch157
-rw-r--r--packages/linux/linux-rp-2.6.17/vesafb-tng-1.0-rc2-git-20060629.patch3089
-rw-r--r--packages/linux/linux-rp-2.6.17/wm9712-reset-loop-r2.patch44
-rw-r--r--packages/linux/linux-rp-2.6.17/wm9712-suspend-cold-res-r2.patch16
-rw-r--r--packages/linux/linux-rp-2.6.17/wm97xx-lcdnoise-r0.patch208
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-c7x02
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-collie2
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-poodle2
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-tosa2
-rw-r--r--packages/linux/linux-rp-2.6.21/connectplus-prevent-oops-HACK.patch17
-rw-r--r--packages/linux/linux-rp-2.6.21/connectplus-remove-ide-HACK.patch12
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-akita1744
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-bootcdx861606
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-c7x01787
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-collie1739
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-poodle1657
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-qemuarm1194
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-qemux861568
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-spitz1781
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-tosa1613
-rw-r--r--packages/linux/linux-rp-2.6.21/hostap-monitor-mode.patch209
-rw-r--r--packages/linux/linux-rp-2.6.21/orinoco-remove-all-which-are-in-hostap-HACK.patch88
-rw-r--r--packages/linux/linux-rp-2.6.21/pxa-serial-hack.patch90
-rw-r--r--packages/linux/linux-rp-2.6.21/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch155
-rw-r--r--packages/linux/linux-rp-2.6.21/sharpsl-rc-r1.patch519
-rw-r--r--packages/linux/linux-rp-2.6.21/squashfs3.0-2.6.15.patch4191
-rw-r--r--packages/linux/linux-rp-2.6.21/vesafb-tng-1.0-rc2-2.6.20-rc2.patch3141
-rw-r--r--packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch208
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-collie709
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-akita54
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-bootcdx8671
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-c7x054
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-collie53
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-htcuniversal68
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-hx200073
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-poodle871
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-qemuarm69
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-qemux8668
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-spitz74
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-tosa70
-rw-r--r--packages/linux/linux-rp-2.6.23/defconfig-zylonite71
-rw-r--r--packages/linux/linux-rp-2.6.23/hrw-add-wcf11-to-hostap.patch31
-rw-r--r--packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch135
-rw-r--r--packages/linux/linux-rp.inc6
-rw-r--r--packages/linux/linux-rp_2.6.16.bb156
-rw-r--r--packages/linux/linux-rp_2.6.17.bb127
-rw-r--r--packages/linux/linux-rp_2.6.20.bb3
-rw-r--r--packages/linux/linux-rp_2.6.21.bb119
-rw-r--r--packages/linux/linux-rp_2.6.23+2.6.24-rc0+git.bb21
-rw-r--r--packages/linux/linux-rp_2.6.23.bb33
-rw-r--r--packages/linux/linux-sequoia_2.6.21.bb8
-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+2.6.23-rc3.bb4
-rw-r--r--packages/linux/linux_2.6.22.6.bb3
-rw-r--r--packages/linux/linux_2.6.23+2.6.24-rc5.bb8
-rw-r--r--packages/linux/linux_2.6.23+2.6.24-rc6.bb32
-rw-r--r--packages/linux/linux_2.6.23.bb10
-rw-r--r--packages/linux/mainstone-kernel/flash-unlock.patch14
-rw-r--r--packages/linux/mainstone-kernel/mainstone/.mtn2git_empty0
-rw-r--r--packages/linux/mainstone-kernel/mainstone/defconfig (renamed from packages/linux/linux-rp-2.6.21/defconfig-hx2000)622
-rw-r--r--packages/linux/mainstone-kernel/mainstone_defconfig972
-rw-r--r--packages/linux/mainstone-kernel_2.6.18.bb31
-rw-r--r--packages/matchbox-applet-startup-monitor/files/.mtn2git_empty0
-rwxr-xr-xpackages/matchbox-applet-startup-monitor/files/85mb-applet-startup-monitor2
-rw-r--r--packages/matchbox-applet-startup-monitor/matchbox-applet-startup-monitor_0.1.bb11
-rw-r--r--packages/meta/external-toolchain.bb10
-rw-r--r--packages/meta/meta-nas-server.bb10
-rw-r--r--packages/meta/slugos-packages.bb5
-rw-r--r--packages/meta/unslung-binary-kernel-packages.bb19
-rw-r--r--packages/mgetty/mgetty_1.1.30.bb2
-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/mkbot/mkbot_0.3.bb2
-rw-r--r--packages/mtd/mtd-utils_1.0.0+git.bb6
-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/files/navit.desktop12
-rw-r--r--packages/navit/files/navit.launcher30
-rw-r--r--packages/navit/files/navit.xml-so.patch13
-rw-r--r--packages/navit/navit.inc27
-rw-r--r--packages/navit/navit_0.0.1.bb13
-rw-r--r--packages/navit/navit_0.0.2.bb13
-rw-r--r--packages/navit/navit_0.0.3.bb5
-rw-r--r--packages/navit/navit_cvs.bb18
-rw-r--r--packages/ncurses/ncurses.inc23
-rw-r--r--packages/netbase/netbase/interfaces17
-rw-r--r--packages/netbase/netbase/mx31moboard/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/mx31moboard/interfaces14
-rw-r--r--packages/netbase/netbase_4.21.bb2
-rw-r--r--packages/nonworking/imkit/imkit_0.4.5.bb2
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/NOTES18
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/README415
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs/linuxrc8
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/telnet.htm2
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/upgrade.htm7
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb2
-rw-r--r--packages/ntpclient/ntpclient_2007_365.bb34
-rw-r--r--packages/nunome/nunome_1.0.2.bb8
-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.bb27
-rw-r--r--packages/openjade/openjade-1.3.2/oj-native-libosp-fix.patch12
-rw-r--r--packages/openjade/openjade-native_1.3.2.bb23
-rw-r--r--packages/openmoko-apps/openmoko-gps_0.0.1+svnr9.bb33
-rw-r--r--packages/openmoko2/openmoko-dialer2_svn.bb2
-rw-r--r--packages/openmoko2/openmoko-messages2_svn.bb2
-rw-r--r--packages/openmoko2/openmoko-sample2_svn.bb4
-rw-r--r--packages/openmoko2/openmoko-terminal2_svn.bb8
-rw-r--r--packages/openmoko2/settingsgui_0.7+0.8-beta.bb11
-rw-r--r--packages/opensp/opensp-native_1.5.bb21
-rw-r--r--packages/opie-reader/uqtreader_cvs.bb2
-rw-r--r--packages/opie-taskbar/opie-taskbar/firstuse-path.patch11
-rw-r--r--packages/opie-taskbar/opie-taskbar_1.2.3.bb1
-rw-r--r--packages/opie-taskbar/opie-taskbar_cvs.bb3
-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/poppler/poppler0.6_cvs.bb6
-rw-r--r--packages/portaudio/portaudio-v19_20071207.bb27
-rw-r--r--packages/portmap/portmap_6.0.bb4
-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/psplash/files/psplash-init11
-rw-r--r--packages/psplash/psplash_svn.bb3
-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-gammu_0.24.bb (renamed from packages/python/python-gammu_0.21.bb)0
-rw-r--r--packages/python/python-gsmd_svn.bb15
-rw-r--r--packages/python/python-pygtk_2.10.4.bb8
-rw-r--r--packages/python/python-pyqt/assistantclient-fix.patch13
-rw-r--r--packages/python/python-pyqt_4.3.3.bb18
-rw-r--r--packages/python/python24-pyqt2_3.13.bb2
-rw-r--r--packages/python/python24-pyqwt2_3.10.bb2
-rw-r--r--packages/python/python_2.5.1.bb4
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch23
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch26
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch17
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch45
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch26
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch21
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch18
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch48
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch55
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch22
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch21
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch104
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch17
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch27
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch18
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch18
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch35
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch55
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch18
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch17
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch37
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch22
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch219
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch929
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch37
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch25
-rw-r--r--packages/qemu/qemu-gcc3-check.inc19
-rw-r--r--packages/qemu/qemu-native_20071121.bb8
-rw-r--r--packages/qemu/qemu_20071121.bb60
-rw-r--r--packages/qmake/qmake2-native.inc68
-rw-r--r--packages/qmake/qmake2-native/.mtn2git_empty0
-rw-r--r--packages/qmake/qmake2-native/0001-fix-mkspecs.patch (renamed from packages/qmake/qmake2-native-2.10a/0001-fix-mkspecs.patch)59
-rw-r--r--packages/qmake/qmake2-native/0008-backport-qt-lib-infix.patch33
-rw-r--r--packages/qmake/qmake2-native/linux-oe-qmake.conf (renamed from packages/qmake/qmake2-native-2.10a/linux-oe-qmake.conf)0
-rw-r--r--packages/qmake/qmake2-native/qt-config.patch27
-rw-r--r--packages/qmake/qmake2-native/use-lflags-last.patch (renamed from packages/qmake/qmake2-native-2.10a/use-lflags-last.patch)0
-rw-r--r--packages/qmake/qmake2-native_2.10a.bb69
-rw-r--r--packages/qpe-games/crossword_0.0.3.bb2
-rw-r--r--packages/qpegps/files/qpegps.desktop3
-rw-r--r--packages/qpegps/qpegps.inc6
-rw-r--r--packages/qpegps/qpegps_0.9.2.3.3.bb2
-rw-r--r--packages/qpegps/qpegps_0.9.3.1.bb8
-rw-r--r--packages/qpegps/qpegps_0.9.3.bb1
-rw-r--r--packages/qpegps/qpegps_svn.bb15
-rw-r--r--packages/qpf-fonts/qpf-unismall_1.0.0.bb4
-rw-r--r--packages/qsvn/qsvn-qte_0.3.0.bb3
-rw-r--r--packages/qsvn/qsvn.inc25
-rw-r--r--packages/qsvn/qsvn_0.3.0.bb22
-rw-r--r--packages/qt/qt4-x11-free_4.3.2.bb187
-rw-r--r--packages/qt/qt4_arch.inc13
-rw-r--r--packages/qt4/.mtn2git_empty0
-rw-r--r--packages/qt4/files/.mtn2git_empty0
-rw-r--r--packages/qt4/files/0001-cross-compile.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0001-cross-compile.patch)0
-rw-r--r--packages/qt4/files/0003-no-tools.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0003-no-tools.patch)0
-rw-r--r--packages/qt4/files/0005-fix-mkspecs.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0005-fix-mkspecs.patch)44
-rw-r--r--packages/qt4/files/0008-backport-qt-lib-infix.patch166
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/.mtn2git_empty0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/configurable-cpu-extensions.patch (renamed from packages/qt/qt4-x11-free-4.1.2/configurable-cpu-extensions.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/cross-compile.patch (renamed from packages/qt/qt4-x11-free-4.1.2/cross-compile.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/fix-asm-constraints.patch (renamed from packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/fix-mkspecs.patch (renamed from packages/qt/qt4-x11-free-4.1.2/fix-mkspecs.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/fix-resinit-declaration.patch (renamed from packages/qt/qt4-x11-free-4.1.2/fix-resinit-declaration.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/gcc4_1.patch (renamed from packages/qt/qt4-x11-free-4.1.2/gcc4_1.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/no-qmake.patch (renamed from packages/qt/qt4-x11-free-4.1.2/no-qmake.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.1.2/no-tools.patch (renamed from packages/qt/qt4-x11-free-4.1.2/no-tools.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.3.3/.mtn2git_empty0
-rw-r--r--packages/qt4/qt4-x11-free-4.3.3/0002-fix-resinit-declaration.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0002-fix-resinit-declaration.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.3.3/0004-no-qmake.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0004-no-qmake.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.3.3/0006-freetype-host-includes.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0006-freetype-host-includes.patch)0
-rw-r--r--packages/qt4/qt4-x11-free-4.3.3/0007-openssl-host-includes.patch (renamed from packages/qt/qt4-x11-free-4.3.2/0007-openssl-host-includes.patch)0
-rw-r--r--packages/qt4/qt4-x11-free.inc27
-rw-r--r--packages/qt4/qt4-x11-free_4.1.2.bb (renamed from packages/qt/qt4-x11-free_4.1.2.bb)0
-rw-r--r--packages/qt4/qt4-x11-free_4.3.3.bb5
-rw-r--r--packages/qt4/qt4_arch.inc23
-rw-r--r--packages/qt4/qt_configuration.inc82
-rw-r--r--packages/qt4/qt_depends.inc3
-rw-r--r--packages/qt4/qt_packaging.inc153
-rw-r--r--packages/qt4/qt_staging.inc36
-rw-r--r--packages/qt4/qtopia-core-4.3.3/.mtn2git_empty0
-rw-r--r--packages/qt4/qtopia-core-4.3.3/0006-freetype-host-includes.patch23
-rw-r--r--packages/qt4/qtopia-core-4.3.3/0007-openssl-host-includes.patch23
-rw-r--r--packages/qt4/qtopia-core.inc30
-rw-r--r--packages/qt4/qtopia-core/.mtn2git_empty0
-rw-r--r--packages/qt4/qtopia-core/0004-no-qmake.patch25
-rw-r--r--packages/qt4/qtopia-core/build-tools.patch28
-rw-r--r--packages/qt4/qtopia-core/linux-oe-qmake.conf (renamed from packages/qte/qtopia-core/linux-oe-qmake.conf)0
-rw-r--r--packages/qt4/qtopia-core_4.2.0.bb1
-rw-r--r--packages/qt4/qtopia-core_4.3.3.bb5
-rw-r--r--packages/qte/qtopia-core_4.2.0.bb218
-rw-r--r--packages/qte/qtopia-core_4.3.2.bb222
-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/qxmp/qxmp_1.0.bb2
-rw-r--r--packages/roadmap/files/options.mk.patch34
-rw-r--r--packages/roadmap/files/roadmap.desktop.patch (renamed from packages/roadmap/files/qt/roadmap.desktop.patch)0
-rw-r--r--packages/roadmap/files/roadmap_path.patch57
-rw-r--r--packages/roadmap/roadmap-gtk2.inc11
-rw-r--r--packages/roadmap/roadmap-gtk2_1.1.0.bb12
-rw-r--r--packages/roadmap/roadmap-gtk2_cvs.bb34
-rw-r--r--packages/roadmap/roadmap.inc13
-rw-r--r--packages/roadmap/zroadmap-1.0.12/qt2-fixes-r1.patch36
-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.bb33
-rw-r--r--packages/roadmap/zroadmap_1.1.0.bb36
-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/screen/screen_4.0.2.bb4
-rw-r--r--packages/settings-daemon/settings-daemon_svn.bb4
-rw-r--r--packages/sgml-common/sgml-common-native_0.6.3.bb25
-rw-r--r--packages/sgml-common/sgml-common_0.6.3.bb26
-rw-r--r--packages/sgmlspl/.mtn2git_empty0
-rw-r--r--packages/sgmlspl/files/.mtn2git_empty0
-rw-r--r--packages/sgmlspl/files/combined.patch454
-rw-r--r--packages/sgmlspl/sgmlspl-native_1.03ii.bb21
-rw-r--r--packages/slugos-init/slugos-init_4.8.bb149
-rw-r--r--packages/slutils/slutils_0.1.0.bb2
-rw-r--r--packages/speech-dispatcher/.mtn2git_empty0
-rw-r--r--packages/speech-dispatcher/files/.mtn2git_empty0
-rw-r--r--packages/speech-dispatcher/files/configSpeechd.conf.in_00.patch31
-rw-r--r--packages/speech-dispatcher/files/speech-dispatcher.init42
-rw-r--r--packages/speech-dispatcher/files/srcMakefile.am.patch60
-rw-r--r--packages/speech-dispatcher/speech-dispatcher_0.6.5.bb56
-rw-r--r--packages/supertux/files/.mtn2git_empty0
-rw-r--r--packages/supertux/files/supertux.desktop21
-rw-r--r--packages/supertux/files/supertux.pngbin0 -> 4097 bytes
-rw-r--r--packages/supertux/supertux_0.1.2.bb16
-rw-r--r--packages/supertux/supertux_0.1.3.bb22
-rw-r--r--packages/tasks/task-base.bb4
-rw-r--r--packages/tasks/task-boot.bb2
-rw-r--r--packages/tasks/task-nas-server.bb102
-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-opie-16mb.bb2
-rw-r--r--packages/tasks/task-opie.bb2
-rw-r--r--packages/tasks/task-python-everything.bb6
-rw-r--r--packages/tea/tea_17.3.5.bb3
-rw-r--r--packages/texmaker/texmaker_1.3.bb2
-rw-r--r--packages/ttf-fonts/ttf.inc2
-rw-r--r--packages/tzdata/tzdata_2007e.bb5
-rw-r--r--packages/u-boot/.mtn2git_empty0
-rw-r--r--packages/u-boot/files/.mtn2git_empty0
-rw-r--r--packages/u-boot/files/arm_flags.patch (renamed from packages/uboot/files/arm_flags.patch)0
-rw-r--r--packages/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch29
-rw-r--r--packages/u-boot/files/fix-arm920t-eabi.patch (renamed from packages/uboot/files/fix-arm920t-eabi.patch)0
-rw-r--r--packages/u-boot/files/fix-data-abort-from-sd-ombug799.patch11
-rw-r--r--packages/u-boot/files/makefile-no-dirafter.patch (renamed from packages/uboot/files/makefile-no-dirafter.patch)0
-rw-r--r--packages/u-boot/files/u-boot-20061030-ext2load_hex.patch (renamed from packages/uboot/files/u-boot-20061030-ext2load_hex.patch)0
-rw-r--r--packages/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch (renamed from packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch)0
-rw-r--r--packages/u-boot/files/uboot-eabi-fix-HACK.patch (renamed from packages/uboot/files/uboot-eabi-fix-HACK.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.1.2/arm_flags.patch (renamed from packages/uboot/u-boot-1.1.2/arm_flags.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/cmd-arm-linux.patch (renamed from packages/uboot/u-boot-1.1.2/cmd-arm-linux.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/command-names.patch (renamed from packages/uboot/u-boot-1.1.2/command-names.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/mnci-jffs2.patch (renamed from packages/uboot/u-boot-1.1.2/mnci-jffs2.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/mnci.patch (renamed from packages/uboot/u-boot-1.1.2/mnci.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch (renamed from packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.2/u-boot-emetec.patch (renamed from packages/uboot/u-boot-1.1.2/u-boot-emetec.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-autoscript.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-autoscript.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-base.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-base.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-crc-warning-not-so-scary.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-crc-warning-not-so-scary.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-flash-protect-fixup.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-flash-protect-fixup.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-fw_printenv.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-fw_printenv.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-install.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-install.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-jerase-cmd.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-jerase-cmd.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-jffs2-new-nodetypes.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-jffs2-new-nodetypes.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-loadb-safe.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-loadb-safe.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-make381-fix.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-make381-fix.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-mmc-init.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-mmc-init.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-mmcclk-alternate.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-mmcclk-alternate.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-smc91x-multi.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-smc91x-multi.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.4/u-boot-zzz-osx.patch (renamed from packages/uboot/u-boot-1.1.4/u-boot-zzz-osx.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.1.6/devkit-idp.patch (renamed from packages/uboot/u-boot-1.1.6/devkit-idp.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/sarge-uboot.patch (renamed from packages/uboot/u-boot-1.1.6/sarge-uboot.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch)0
-rw-r--r--packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch (renamed from packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.2.0/defconfig_lsppchd (renamed from packages/uboot/u-boot-1.2.0/defconfig_lsppchd)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/defconfig_lsppchg (renamed from packages/uboot/u-boot-1.2.0/defconfig_lsppchg)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/env-Makefile.patch (renamed from packages/uboot/u-boot-1.2.0/env-Makefile.patch)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/fic-gta01/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.2.0/fic-gta01/fw_env.config (renamed from packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/fw_env.c.patch (renamed from packages/uboot/u-boot-1.2.0/fw_env.c.patch)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/fw_env.config (renamed from packages/uboot/u-boot-1.2.0/fw_env.config)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff (renamed from packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/qnap.diff (renamed from packages/uboot/u-boot-1.2.0/qnap.diff)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/tools-Makefile.patch (renamed from packages/uboot/u-boot-1.2.0/tools-Makefile.patch)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/turbostation/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-1.2.0/turbostation/fw_env.config (renamed from packages/uboot/u-boot-1.2.0/turbostation/fw_env.config)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/u-boot-kurobox-fdt.patch (renamed from packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/u-boot-kurobox.patch (renamed from packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch)0
-rw-r--r--packages/u-boot/u-boot-1.2.0/uboot-qnap.diff (renamed from packages/uboot/u-boot-1.2.0/uboot-qnap.diff)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/bbt-create-optional.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/bbt-create-optional.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/bbt-scan-second.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/bbt-scan-second.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/boot-from-ram-and-nand.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/boot-from-ram-and-nand.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/boot-from-ram-reloc.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/boot-from-ram-reloc.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/boot-menu.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/boot-menu.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/cmd-unzip.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/cmd-unzip.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/console-ansi.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/console-ansi.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/default-env.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/default-env.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/dontask.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/dontask.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/dynenv-harden.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/dynenv-harden.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/early-powerdown.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/early-powerdown.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/enable-splash-bmp.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/enable-splash-bmp.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/env_nand_oob.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/env_nand_oob.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/ext2load_hex.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/ext2load_hex.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/lowlevel_foo.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/lowlevel_foo.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/nand-badisbad.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/nand-badisbad.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/nand-createbbt.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/nand-createbbt.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/nand-dynamic_partitions.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/nand-dynamic_partitions.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/nand-otp.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/nand-otp.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/nand-read_write_oob.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/nand-read_write_oob.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/preboot-override.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/preboot-override.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/raise-limits.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/raise-limits.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/series (renamed from packages/uboot/u-boot-mkimage-openmoko-native/series)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/splashimage-command.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/splashimage-command.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-20061030-neo1973.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-20061030-neo1973.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-20061030-qt2410.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-20061030-qt2410.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-arm920_s3c2410_irq_demux.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-arm920_s3c2410_irq_demux.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-arm920t-gd_in_irq.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-arm920t-gd_in_irq.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-bbt-quiet.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-bbt-quiet.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-cmd_s3c2410.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-cmd_s3c2410.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-cramfs_but_no_jffs2.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-cramfs_but_no_jffs2.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-dfu.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-dfu.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-gta02.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-gta02.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-hxd8.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-hxd8.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-license.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-license.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-machtypes.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-machtypes.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-mokoversion.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-mokoversion.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-nand-markbad-reallybad.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-nand-markbad-reallybad.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-neo1973-defaultenv.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-neo1973-defaultenv.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-neo1973-resume.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-neo1973-resume.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-misccr-definitions.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-misccr-definitions.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-mmc.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-mmc.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-nand.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-nand.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-warnings-fix.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-warnings-fix.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410_fb.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410_fb.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410_udc.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410_udc.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2440.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2440.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2443.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2443.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-smdk2440.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-smdk2440.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-smdk2443.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-smdk2443.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-strtoul.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-strtoul.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/uboot-usbtty-acm.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/uboot-usbtty-acm.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/unbusy-i2c.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/unbusy-i2c.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/usbdcore-multiple_configs.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/usbdcore-multiple_configs.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native/wakeup-reason-nand-only.patch (renamed from packages/uboot/u-boot-mkimage-openmoko-native/wakeup-reason-nand-only.patch)0
-rw-r--r--packages/u-boot/u-boot-mkimage-openmoko-native_oe.bb (renamed from packages/uboot/u-boot-mkimage-openmoko-native_oe.bb)2
-rw-r--r--packages/u-boot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty0
-rw-r--r--packages/u-boot/u-boot-omap2430sdp-1.1.4/u-boot-makefile-3.81.patch (renamed from packages/uboot/u-boot-omap2430sdp-1.1.4/u-boot-makefile-3.81.patch)0
-rw-r--r--packages/u-boot/u-boot-omap2430sdp_1.1.4.bb (renamed from packages/uboot/u-boot-omap2430sdp_1.1.4.bb)0
-rw-r--r--packages/u-boot/u-boot-openmoko_1.2.0+git+svn.bb (renamed from packages/uboot/uboot-openmoko_1.2.0+gitf34024d4a328e6edd906456da98d2c537155c4f7+svn2943.bb)10
-rw-r--r--packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb (renamed from packages/uboot/uboot-openmoko_svn.bb)28
-rw-r--r--packages/u-boot/u-boot-openmoko_svn.bb79
-rw-r--r--packages/u-boot/u-boot-utils-native_1.2.0.bb (renamed from packages/uboot/u-boot-utils-native_1.2.0.bb)0
-rw-r--r--packages/u-boot/u-boot-utils_1.2.0.bb (renamed from packages/uboot/u-boot-utils_1.2.0.bb)0
-rw-r--r--packages/u-boot/u-boot.inc (renamed from packages/uboot/u-boot.inc)0
-rw-r--r--packages/u-boot/u-boot_1.1.2.bb (renamed from packages/uboot/u-boot_1.1.2.bb)0
-rw-r--r--packages/u-boot/u-boot_1.1.4.bb (renamed from packages/uboot/u-boot_1.1.4.bb)0
-rw-r--r--packages/u-boot/u-boot_1.1.6.bb (renamed from packages/uboot/u-boot_1.1.6.bb)0
-rw-r--r--packages/u-boot/u-boot_1.2.0.bb (renamed from packages/uboot/u-boot_1.2.0.bb)0
-rw-r--r--packages/u-boot/u-boot_1.3.0.bb (renamed from packages/uboot/u-boot_1.3.0.bb)0
-rw-r--r--packages/u-boot/u-boot_git.bb (renamed from packages/uboot/u-boot_git.bb)0
-rw-r--r--packages/uicmoc/files/.mtn2git_empty0
-rw-r--r--packages/uicmoc/files/configure-fix.patch13
-rw-r--r--packages/uicmoc/uicmoc-native_2.3.10.bb2
-rw-r--r--packages/uicmoc/uicmoc4-native.inc30
-rw-r--r--packages/uicmoc/uicmoc4-native_4.3.3.bb (renamed from packages/uicmoc/uicmoc4-native_4.3.2.bb)0
-rw-r--r--packages/util-linux-ng/.mtn2git_empty0
-rw-r--r--packages/util-linux-ng/util-linux-ng.inc216
-rw-r--r--packages/util-linux-ng/util-linux-ng_2.13.1.bb7
-rw-r--r--packages/vala/vala-native_0.1.5.bb (renamed from packages/vala/vala-native_0.1.4.bb)2
-rw-r--r--packages/vala/vala_0.1.5.bb (renamed from packages/vala/vala_0.1.4.bb)0
-rw-r--r--packages/vlc/vlc-gpe_0.7.2.bb4
-rw-r--r--packages/vlc/vlc-gpe_0.8.1.bb4
-rw-r--r--packages/vlc/vlc-gpe_0.8.4.bb4
-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/vte/vte.inc15
-rw-r--r--packages/vte/vte_0.16.8.bb16
-rw-r--r--packages/vte/vte_0.16.9.bb2
-rw-r--r--packages/webkit/files/GNUmakefile.am314
-rw-r--r--packages/webkit/files/autogen.sh40
-rw-r--r--packages/webkit/files/configure.ac384
-rw-r--r--packages/webkit/webkit-gtk_svn.bb5
-rw-r--r--packages/xcursor-transparent-theme/files/.mtn2git_empty0
-rw-r--r--packages/xcursor-transparent-theme/files/fix_watch_cursor.patch (renamed from packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/fix_watch_cursor.patch)0
-rw-r--r--packages/xcursor-transparent-theme/files/use-relative-symlinks.patch (renamed from packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/use-relative-symlinks.patch)0
-rw-r--r--packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb15
-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--packages/xorg-xserver/xserver-kdrive-1.3.0.0/tosa-fbdev.patch13
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.4.bb3
-rw-r--r--packages/xrestop/xrestop_0.4.bb3
-rw-r--r--packages/xscreensaver/xscreensaver-4.22/configure.in-includedir.patch72
-rw-r--r--packages/xscreensaver/xscreensaver_4.22.bb5
-rw-r--r--packages/xserver-common/files/unbreak-simpad.patch18
-rw-r--r--packages/xserver-common/xserver-common_1.18.bb4
-rw-r--r--packages/zaurus-updater/zaurus-updater.bb6
-rw-r--r--packages/zaurus-updater/zaurus-updater/updater.sh243
-rw-r--r--packages/zaurusd/files/alsa-6000x-default.state.patch750
-rw-r--r--packages/zaurusd/files/zaurus-hinge.bl-off15
-rw-r--r--packages/zaurusd/files/zaurus-hinge.bl-on51
-rw-r--r--packages/zaurusd/zaurusd_svn.bb3
939 files changed, 64258 insertions, 96532 deletions
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/jamvm/jamvm-1.3.0/.mtn2git_empty b/packages/alsa/alsa-state/fic-gta02/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/jamvm/jamvm-1.3.0/.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/altboot/altboot_1.1.1+wip-SVNR69.bb b/packages/altboot/altboot_1.1.1+wip-SVNR73.bb
index b9ee96d048..58d5721dbf 100644
--- a/packages/altboot/altboot_1.1.1+wip-SVNR69.bb
+++ b/packages/altboot/altboot_1.1.1+wip-SVNR73.bb
@@ -2,7 +2,7 @@ require altboot.inc
PR = "r0"
-SVN_REV = "69"
+SVN_REV = "73"
SRC_URI = "svn://hentges.net/public/altboot;module=trunk;rev=${SVN_REV} \
"
diff --git a/packages/angstrom/angstrom-gpe-task-base.bb b/packages/angstrom/angstrom-gpe-task-base.bb
index cc3d08972f..036f1af75a 100644
--- a/packages/angstrom/angstrom-gpe-task-base.bb
+++ b/packages/angstrom/angstrom-gpe-task-base.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Task packages for the Angstrom distribution"
-PR = "r33"
+PR = "r34"
inherit task
@@ -8,6 +8,7 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
RDEPENDS_${PN} = "\
matchbox \
matchbox-panel-hacks \
+ matchbox-applet-startup-monitor \
xcursor-transparent-theme \
rxvt-unicode \
gpe-terminal \
diff --git a/packages/apex/apex-env_1.5.13.bb b/packages/apex/apex-env_1.5.13.bb
new file mode 100644
index 0000000000..aad0b12af9
--- /dev/null
+++ b/packages/apex/apex-env_1.5.13.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "APEX Boot Loader Environment User Modification Tool"
+SECTION = "util"
+PRIORITY = "optional"
+HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
+ file://find-apex-partition.patch;patch=1 \
+ "
+S = ${WORKDIR}/apex-${PV}/usr
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
+
+oe_runmake() {
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@"
+ make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@" || die "oe_runmake failed"
+}
+
+do_install() {
+ ${STRIP} ${S}/apex-env
+ install -d ${D}/${sbindir}
+ install -m 755 ${S}/apex-env ${D}/${sbindir}
+}
diff --git a/packages/apex/apex-env_1.5.8.bb b/packages/apex/apex-env_1.5.8.bb
index 0f310f107e..a0e44346bb 100644
--- a/packages/apex/apex-env_1.5.8.bb
+++ b/packages/apex/apex-env_1.5.8.bb
@@ -3,9 +3,11 @@ SECTION = "util"
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-# PR = "r1"
+PR = "r1"
-SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz"
+SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
+ file://find-apex-partition.patch;patch=1 \
+ "
S = ${WORKDIR}/apex-${PV}/usr
EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
diff --git a/packages/jamvm/jamvm/.mtn2git_empty b/packages/apex/apex-nslu2-1.5.13/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/jamvm/jamvm/.mtn2git_empty
+++ b/packages/apex/apex-nslu2-1.5.13/.mtn2git_empty
diff --git a/packages/apex/apex-nslu2-1.5.13/defconfig b/packages/apex/apex-nslu2-1.5.13/defconfig
new file mode 100644
index 0000000000..91517025bf
--- /dev/null
+++ b/packages/apex/apex-nslu2-1.5.13/defconfig
@@ -0,0 +1,164 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version:
+# Mon Dec 24 14:54:47 2007
+#
+CONFIG_ARM=y
+CONFIG_CPU_ARMV5=y
+CONFIG_CPU_XSCALE=y
+# CONFIG_ARCH_LH7952X is not set
+# CONFIG_ARCH_LH7A40X is not set
+CONFIG_ARCH_IXP42X=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_MX3 is not set
+CONFIG_EXPERIMENTAL=y
+# CONFIG_SMALL is not set
+
+#
+# General Setup
+#
+CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2 (bigendian)"
+CONFIG_CROSS_COMPILE=""
+CONFIG_AEABI=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CC_OPTIMIZE_FOR_SPEED is not set
+# CONFIG_CC_NO_OPTIMIZATION is not set
+CONFIG_STARTUP_UART=y
+# CONFIG_DEBUG_LL is not set
+CONFIG_SPINNER=y
+CONFIG_ATAG=y
+CONFIG_MMU=y
+# CONFIG_FORCE_WRITETHROUGH_DCACHE is not set
+CONFIG_DISABLE_MMU_AT_BOOT=y
+# CONFIG_INTERRUPTS is not set
+CONFIG_SDRAMBOOT_REPORT=y
+CONFIG_STACK_SIZE=0x1000
+CONFIG_STACKLIMIT=y
+# CONFIG_BOOTSTRAP_MEMTEST is not set
+CONFIG_ATAG_PHYS=0x00000100
+CONFIG_ARCH_NUMBER=597
+CONFIG_APEX_VMA=0x00200000
+CONFIG_KERNEL_LMA=0x00008000
+# CONFIG_USE_RAMDISK is not set
+CONFIG_SDRAM_BANK0=y
+# CONFIG_SDRAM_BANK1 is not set
+CONFIG_NOR_BUSWIDTH=16
+CONFIG_NOR_BANK0=y
+CONFIG_NOR_BANK0_START=0x50000000
+CONFIG_NOR_BANK0_LENGTH=0x00800000
+CONFIG_MACH="ixp42x"
+CONFIG_MACH_NSLU2=y
+# CONFIG_MACH_NAS100D is not set
+# CONFIG_MACH_DSMG600 is not set
+# CONFIG_MACH_FSG3 is not set
+# CONFIG_MACH_AVILA2347 is not set
+# CONFIG_USER_DEFAULTENDIAN is not set
+# CONFIG_USER_BIGENDIAN is not set
+# CONFIG_USER_LITTLEENDIAN is not set
+
+#
+# Platform Setup
+#
+CONFIG_SDRAM_BANK_LENGTH=0x02000000
+# CONFIG_DISABLE_SECOND_UART_INIT is not set
+CONFIG_ARCH_IXP420=y
+
+#
+# Commands
+#
+CONFIG_ALLHELP=y
+CONFIG_ALPHABETIZE_COMMANDS=y
+CONFIG_DEL_IS_BS=y
+CONFIG_ANSI_KEYS=y
+CONFIG_COMMAND_HISTORY=y
+CONFIG_COMMAND_EDITING=y
+# CONFIG_TIME_COMMANDS is not set
+CONFIG_CMD_ALIAS=y
+CONFIG_CMD_CHECKSUM=y
+CONFIG_CMD_COPY=y
+CONFIG_CMD_COMPARE=y
+CONFIG_CMD_DRVINFO=y
+CONFIG_CMD_DUMP=y
+CONFIG_CMD_ENV=y
+CONFIG_CMD_SETENV=y
+CONFIG_CMD_ERASE=y
+CONFIG_CMD_FILL=y
+CONFIG_CMD_GO=y
+CONFIG_CMD_INFO=y
+# CONFIG_CMD_PAUSE is not set
+CONFIG_CMD_WAIT=y
+CONFIG_CMD_XRECEIVE=y
+CONFIG_CMD_MEMLIMIT=y
+CONFIG_CMD_MEMSCAN=y
+CONFIG_CMD_MEMTEST=y
+
+#
+# Generic Drivers
+#
+# CONFIG_DRIVER_FAT is not set
+# CONFIG_DRIVER_EXT2 is not set
+# CONFIG_DRIVER_JFFS2 is not set
+CONFIG_DRIVER_FIS=y
+CONFIG_DRIVER_FIS_BLOCKDEVICE="nor:0x7e0000+4k"
+CONFIG_DRIVER_NOR_CFI=y
+# CONFIG_DRIVER_NOR_CFI_NO_BUFFERED is not set
+# CONFIG_DRIVER_NOR_CFI_USE_CACHE is not set
+CONFIG_DRIVER_NOR_CFI_TYPE_INTEL=y
+# CONFIG_DRIVER_NOR_CFI_TYPE_SPANSION is not set
+# CONFIG_DRIVER_ONENAND is not set
+# CONFIG_DRIVER_IXP4XX_NPE_ETH is not set
+CONFIG_USES_NOR_CFI=y
+CONFIG_USES_PATHNAME_PARSER=y
+CONFIG_USES_IXP4XX_NPE_ETH=y
+
+#
+# Environment
+#
+CONFIG_ENV=y
+CONFIG_ENV_LINK=y
+CONFIG_ENV_MUTABLE=y
+CONFIG_ENV_REGION="nor:0x7c000+15k"
+# CONFIG_ENV_SAVEATONCE is not set
+CONFIG_ENV_CHECK_LEN=1024
+CONFIG_VARIATIONS=y
+CONFIG_VARIATION_SUFFIX="-alt"
+# CONFIG_NO_BOOTSTRAP is not set
+CONFIG_NOR_BOOT=y
+# CONFIG_NAND_BOOT is not set
+# CONFIG_ONENAND_BOOT is not set
+# CONFIG_COMPANION_EVT1_BOOT is not set
+# CONFIG_COMPANION_EVT2_BOOT is not set
+
+#
+# Default Startup
+#
+CONFIG_AUTOBOOT=y
+CONFIG_AUTOBOOT_DELAY=10
+CONFIG_ENV_STARTUP_KERNEL_COPY=y
+# CONFIG_ENV_REGION_KERNEL_SWAP is not set
+# CONFIG_ENV_STARTUP_PREFIX_P is not set
+
+#
+# Regions
+#
+CONFIG_ENV_REGION_KERNEL="fis://kernel"
+CONFIG_ENV_REGION_KERNEL_ALT_P=y
+CONFIG_ENV_REGION_KERNEL_ALT="fis://kernel"
+
+#
+# Overrides
+#
+CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200"
+CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
+CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200"
+# CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+# CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
+CONFIG_USES_NOR_BOOTFLASH=y
+CONFIG_RELOCATE_SIMPLE=y
+CONFIG_INLINE_PLATFORM_INITIALIZATION=y
+CONFIG_INLINE_PLATFORM_INITIALIZATION_SDRAM_PRE_OVERRIDE=y
+# CONFIG_BIGENDIAN is not set
+# CONFIG_LITTLEENDIAN is not set
+CONFIG_CLEAR_STACKS=y
+CONFIG_ALIASES=y
diff --git a/packages/linux/linux-handhelds-2.6/.mtn2git_empty b/packages/apex/apex-nslu2-1.5.8/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/.mtn2git_empty
+++ b/packages/apex/apex-nslu2-1.5.8/.mtn2git_empty
diff --git a/packages/apex/files/defconfig b/packages/apex/apex-nslu2-1.5.8/defconfig
index 3c8522e2e8..3c8522e2e8 100644
--- a/packages/apex/files/defconfig
+++ b/packages/apex/apex-nslu2-1.5.8/defconfig
diff --git a/packages/linux/linux-handhelds-2.6/asus620/.mtn2git_empty b/packages/apex/apex-nslu2-16mb-1.5.13/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/asus620/.mtn2git_empty
+++ b/packages/apex/apex-nslu2-16mb-1.5.13/.mtn2git_empty
diff --git a/packages/apex/apex-nslu2-16mb-1.5.13/defconfig b/packages/apex/apex-nslu2-16mb-1.5.13/defconfig
new file mode 100644
index 0000000000..420e0a61fd
--- /dev/null
+++ b/packages/apex/apex-nslu2-16mb-1.5.13/defconfig
@@ -0,0 +1,164 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version:
+# Mon Dec 24 15:00:01 2007
+#
+CONFIG_ARM=y
+CONFIG_CPU_ARMV5=y
+CONFIG_CPU_XSCALE=y
+# CONFIG_ARCH_LH7952X is not set
+# CONFIG_ARCH_LH7A40X is not set
+CONFIG_ARCH_IXP42X=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_MX3 is not set
+CONFIG_EXPERIMENTAL=y
+# CONFIG_SMALL is not set
+
+#
+# General Setup
+#
+CONFIG_TARGET_DESCRIPTION="SlugOS NSLU2/BE (16MiB Flash)"
+CONFIG_CROSS_COMPILE=""
+CONFIG_AEABI=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CC_OPTIMIZE_FOR_SPEED is not set
+# CONFIG_CC_NO_OPTIMIZATION is not set
+CONFIG_STARTUP_UART=y
+# CONFIG_DEBUG_LL is not set
+CONFIG_SPINNER=y
+CONFIG_ATAG=y
+CONFIG_MMU=y
+# CONFIG_FORCE_WRITETHROUGH_DCACHE is not set
+CONFIG_DISABLE_MMU_AT_BOOT=y
+# CONFIG_INTERRUPTS is not set
+CONFIG_SDRAMBOOT_REPORT=y
+CONFIG_STACK_SIZE=0x1000
+CONFIG_STACKLIMIT=y
+# CONFIG_BOOTSTRAP_MEMTEST is not set
+CONFIG_ATAG_PHYS=0x00000100
+CONFIG_ARCH_NUMBER=597
+CONFIG_APEX_VMA=0x00200000
+CONFIG_KERNEL_LMA=0x00008000
+# CONFIG_USE_RAMDISK is not set
+CONFIG_SDRAM_BANK0=y
+# CONFIG_SDRAM_BANK1 is not set
+CONFIG_NOR_BUSWIDTH=16
+CONFIG_NOR_BANK0=y
+CONFIG_NOR_BANK0_START=0x50000000
+CONFIG_NOR_BANK0_LENGTH=0x01000000
+CONFIG_MACH="ixp42x"
+CONFIG_MACH_NSLU2=y
+# CONFIG_MACH_NAS100D is not set
+# CONFIG_MACH_DSMG600 is not set
+# CONFIG_MACH_FSG3 is not set
+# CONFIG_MACH_AVILA2347 is not set
+# CONFIG_USER_DEFAULTENDIAN is not set
+# CONFIG_USER_BIGENDIAN is not set
+# CONFIG_USER_LITTLEENDIAN is not set
+
+#
+# Platform Setup
+#
+CONFIG_SDRAM_BANK_LENGTH=0x02000000
+# CONFIG_DISABLE_SECOND_UART_INIT is not set
+CONFIG_ARCH_IXP420=y
+
+#
+# Commands
+#
+CONFIG_ALLHELP=y
+CONFIG_ALPHABETIZE_COMMANDS=y
+CONFIG_DEL_IS_BS=y
+CONFIG_ANSI_KEYS=y
+CONFIG_COMMAND_HISTORY=y
+CONFIG_COMMAND_EDITING=y
+# CONFIG_TIME_COMMANDS is not set
+CONFIG_CMD_ALIAS=y
+CONFIG_CMD_CHECKSUM=y
+CONFIG_CMD_COPY=y
+CONFIG_CMD_COMPARE=y
+CONFIG_CMD_DRVINFO=y
+CONFIG_CMD_DUMP=y
+CONFIG_CMD_ENV=y
+CONFIG_CMD_SETENV=y
+CONFIG_CMD_ERASE=y
+CONFIG_CMD_FILL=y
+CONFIG_CMD_GO=y
+CONFIG_CMD_INFO=y
+# CONFIG_CMD_PAUSE is not set
+CONFIG_CMD_WAIT=y
+CONFIG_CMD_XRECEIVE=y
+CONFIG_CMD_MEMLIMIT=y
+CONFIG_CMD_MEMSCAN=y
+CONFIG_CMD_MEMTEST=y
+
+#
+# Generic Drivers
+#
+# CONFIG_DRIVER_FAT is not set
+# CONFIG_DRIVER_EXT2 is not set
+# CONFIG_DRIVER_JFFS2 is not set
+CONFIG_DRIVER_FIS=y
+CONFIG_DRIVER_FIS_BLOCKDEVICE="nor:0xfe0000+4k"
+CONFIG_DRIVER_NOR_CFI=y
+# CONFIG_DRIVER_NOR_CFI_NO_BUFFERED is not set
+# CONFIG_DRIVER_NOR_CFI_USE_CACHE is not set
+CONFIG_DRIVER_NOR_CFI_TYPE_INTEL=y
+# CONFIG_DRIVER_NOR_CFI_TYPE_SPANSION is not set
+# CONFIG_DRIVER_ONENAND is not set
+# CONFIG_DRIVER_IXP4XX_NPE_ETH is not set
+CONFIG_USES_NOR_CFI=y
+CONFIG_USES_PATHNAME_PARSER=y
+CONFIG_USES_IXP4XX_NPE_ETH=y
+
+#
+# Environment
+#
+CONFIG_ENV=y
+CONFIG_ENV_LINK=y
+CONFIG_ENV_MUTABLE=y
+CONFIG_ENV_REGION="nor:0x7c000+15k"
+# CONFIG_ENV_SAVEATONCE is not set
+CONFIG_ENV_CHECK_LEN=1024
+CONFIG_VARIATIONS=y
+CONFIG_VARIATION_SUFFIX="-alt"
+# CONFIG_NO_BOOTSTRAP is not set
+CONFIG_NOR_BOOT=y
+# CONFIG_NAND_BOOT is not set
+# CONFIG_ONENAND_BOOT is not set
+# CONFIG_COMPANION_EVT1_BOOT is not set
+# CONFIG_COMPANION_EVT2_BOOT is not set
+
+#
+# Default Startup
+#
+CONFIG_AUTOBOOT=y
+CONFIG_AUTOBOOT_DELAY=10
+CONFIG_ENV_STARTUP_KERNEL_COPY=y
+# CONFIG_ENV_REGION_KERNEL_SWAP is not set
+# CONFIG_ENV_STARTUP_PREFIX_P is not set
+
+#
+# Regions
+#
+CONFIG_ENV_REGION_KERNEL="fis://kernel"
+CONFIG_ENV_REGION_KERNEL_ALT_P=y
+CONFIG_ENV_REGION_KERNEL_ALT="fis://kernel"
+
+#
+# Overrides
+#
+CONFIG_ENV_DEFAULT_CMDLINE_OVERRIDE=y
+CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200"
+CONFIG_ENV_DEFAULT_CMDLINE_ALT_P=y
+CONFIG_ENV_DEFAULT_CMDLINE_ALT="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,115200"
+# CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE is not set
+# CONFIG_ENV_DEFAULT_STARTUP_ALT_P is not set
+CONFIG_USES_NOR_BOOTFLASH=y
+CONFIG_RELOCATE_SIMPLE=y
+CONFIG_INLINE_PLATFORM_INITIALIZATION=y
+CONFIG_INLINE_PLATFORM_INITIALIZATION_SDRAM_PRE_OVERRIDE=y
+# CONFIG_BIGENDIAN is not set
+# CONFIG_LITTLEENDIAN is not set
+CONFIG_CLEAR_STACKS=y
+CONFIG_ALIASES=y
diff --git a/packages/linux/linux-handhelds-2.6/asus730/.mtn2git_empty b/packages/apex/apex-nslu2-16mb-1.5.8/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/asus730/.mtn2git_empty
+++ b/packages/apex/apex-nslu2-16mb-1.5.8/.mtn2git_empty
diff --git a/packages/apex/files/defconfig-16mb b/packages/apex/apex-nslu2-16mb-1.5.8/defconfig
index c9688e3d75..c9688e3d75 100644
--- a/packages/apex/files/defconfig-16mb
+++ b/packages/apex/apex-nslu2-16mb-1.5.8/defconfig
diff --git a/packages/apex/apex-nslu2-16mb_1.5.13.bb b/packages/apex/apex-nslu2-16mb_1.5.13.bb
new file mode 100644
index 0000000000..5fc835fc00
--- /dev/null
+++ b/packages/apex/apex-nslu2-16mb_1.5.13.bb
@@ -0,0 +1,63 @@
+DESCRIPTION = "APEX Boot Loader"
+SECTION = ""
+PRIORITY = "optional"
+HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
+ file://defconfig"
+S = ${WORKDIR}/apex-${PV}
+
+CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
+
+CMDLINE_ROOT ?= "root=/dev/mtdblock4 rootfstype=jffs2 rw"
+
+CMDLINE_DEBUG ?= ""
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
+
+oe_runmake() {
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@"
+ make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@" || die "oe_runmake failed"
+}
+
+# Set the correct CONFIG_USER_xxx_ENDIAN and CONFIG_CMDLINE at the head
+# of the .config file and remove any settings in defconfig then append
+# defconfig to .config
+do_configure() {
+ rm -f ${S}/.config
+ . ${CONFIG_SITE}
+ if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
+ sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \
+ -e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
+ -e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/BE (16MiB Flash)\"/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE_ALT=|CONFIG_ENV_DEFAULT_CMDLINE_ALT=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ ${WORKDIR}/defconfig > ${S}/.config
+ elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
+ sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
+ -e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
+ -e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/LE (16MiB Flash)\"/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE_ALT=|CONFIG_ENV_DEFAULT_CMDLINE_ALT=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ ${WORKDIR}/defconfig > ${S}/.config
+ else
+ oefatal do_configure cannot determine endianess
+ fi
+ oe_runmake oldconfig
+}
+
+DEPENDS += "devio-native"
+
+do_populate_staging() {
+ install -d ${STAGING_LOADER_DIR}
+ . ${CONFIG_SITE}
+ if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
+ cp src/arch-arm/rom/apex.bin ${STAGING_LOADER_DIR}/apex-nslu2-16mb.bin
+ elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
+ devio '<<'src/arch-arm/rom/apex.bin >${STAGING_LOADER_DIR}/apex-nslu2-16mb.bin 'xp $,4'
+ else
+ oefatal do_populate_staging cannot determine endianess
+ fi
+}
diff --git a/packages/apex/apex-nslu2-16mb_1.5.8.bb b/packages/apex/apex-nslu2-16mb_1.5.8.bb
index 48b8412088..6289d7c104 100644
--- a/packages/apex/apex-nslu2-16mb_1.5.8.bb
+++ b/packages/apex/apex-nslu2-16mb_1.5.8.bb
@@ -3,10 +3,10 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
- file://defconfig-16mb"
+ file://defconfig"
S = ${WORKDIR}/apex-${PV}
CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
@@ -33,13 +33,13 @@ do_configure() {
-e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
-e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/BE (16MiB Flash)\"/' \
-e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
- ${WORKDIR}/defconfig-16mb > ${S}/.config
+ ${WORKDIR}/defconfig > ${S}/.config
elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
-e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
-e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/LE (16MiB Flash)\"/' \
-e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
- ${WORKDIR}/defconfig-16mb > ${S}/.config
+ ${WORKDIR}/defconfig > ${S}/.config
else
oefatal do_configure cannot determine endianess
fi
diff --git a/packages/apex/apex-nslu2_1.5.13.bb b/packages/apex/apex-nslu2_1.5.13.bb
new file mode 100644
index 0000000000..ac3858f3a5
--- /dev/null
+++ b/packages/apex/apex-nslu2_1.5.13.bb
@@ -0,0 +1,63 @@
+DESCRIPTION = "APEX Boot Loader"
+SECTION = ""
+PRIORITY = "optional"
+HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.buici.com/pub/apex/apex-${PV}.tar.gz \
+ file://defconfig"
+S = ${WORKDIR}/apex-${PV}
+
+CMDLINE_CONSOLE = "console=${@bb.data.getVar("KERNEL_CONSOLE",d,1) or "ttyS0"}"
+
+CMDLINE_ROOT ?= "root=/dev/mtdblock4 rootfstype=jffs2 rw"
+
+CMDLINE_DEBUG ?= ""
+
+EXTRA_OEMAKE_append = " CROSS_COMPILE=${CROSS_DIR}/bin/${HOST_PREFIX}"
+
+oe_runmake() {
+ oenote make ${PARALLEL_MAKE} CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@"
+ make ${PARALLEL_MAKE} LDFLAGS= CROSS_COMPILE=${CROSS_DIR}/bin/${TARGET_PREFIX} "$@" || die "oe_runmake failed"
+}
+
+# Set the correct CONFIG_USER_xxx_ENDIAN and CONFIG_CMDLINE at the head
+# of the .config file and remove any settings in defconfig then append
+# defconfig to .config
+do_configure() {
+ rm -f ${S}/.config
+ . ${CONFIG_SITE}
+ if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
+ sed -e 's/.*CONFIG_USER_BIGENDIAN.*/CONFIG_USER_BIGENDIAN=y/' \
+ -e 's/.*CONFIG_BIGENDIAN.*/CONFIG_BIGENDIAN=y/' \
+ -e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/BE (8MiB Flash)\"/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE_ALT=|CONFIG_ENV_DEFAULT_CMDLINE_ALT=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ ${WORKDIR}/defconfig > ${S}/.config
+ elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
+ sed -e 's/.*CONFIG_USER_LITTLEENDIAN.*/CONFIG_USER_LITTLEENDIAN=y/' \
+ -e 's/.*CONFIG_LITTLEENDIAN.*/CONFIG_LITTLEENDIAN=y/' \
+ -e 's/.*CONFIG_TARGET_DESCRIPTION.*/CONFIG_TARGET_DESCRIPTION=\"OpenEmbedded NSLU2\/LE (8MiB Flash)\"/' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE=|CONFIG_ENV_DEFAULT_CMDLINE=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ -e 's|CONFIG_ENV_DEFAULT_CMDLINE_ALT=|CONFIG_ENV_DEFAULT_CMDLINE_ALT=\"${CMDLINE_CONSOLE} ${CMDLINE_ROOT} ${CMDLINE_DEBUG}\"|' \
+ ${WORKDIR}/defconfig > ${S}/.config
+ else
+ oefatal do_configure cannot determine endianess
+ fi
+ oe_runmake oldconfig
+}
+
+DEPENDS += "devio-native"
+
+do_populate_staging() {
+ install -d ${STAGING_LOADER_DIR}
+ . ${CONFIG_SITE}
+ if [ "x$ac_cv_c_bigendian" = "xyes" -o "x$ac_cv_c_littleendian" = "xno" ]; then
+ cp src/arch-arm/rom/apex.bin ${STAGING_LOADER_DIR}/apex-nslu2.bin
+ elif [ "x$ac_cv_c_littleendian" = "xyes" -o "x$ac_cv_c_bigendian" = "xno" ]; then
+ devio '<<'src/arch-arm/rom/apex.bin >${STAGING_LOADER_DIR}/apex-nslu2.bin 'xp $,4'
+ else
+ oefatal do_populate_staging cannot determine endianess
+ fi
+}
diff --git a/packages/apex/files/find-apex-partition.patch b/packages/apex/files/find-apex-partition.patch
new file mode 100644
index 0000000000..3aa62a186a
--- /dev/null
+++ b/packages/apex/files/find-apex-partition.patch
@@ -0,0 +1,34 @@
+*** usr/link.cc.orig Sun Dec 23 20:31:49 2007
+--- usr/link.cc Sun Dec 23 20:32:46 2007
+***************
+*** 278,285 ****
+ fixed-up env_link structure, scanning for the environment variables
+ and their defaults, and opening the flash instance of the
+ environment. It first looks for the "Loader" partition. If there
+! is none, it uses the first partition with the assumption that APEX
+! may be the primary boot loader.
+
+ */
+
+--- 278,286 ----
+ fixed-up env_link structure, scanning for the environment variables
+ and their defaults, and opening the flash instance of the
+ environment. It first looks for the "Loader" partition. If there
+! is none, it then looks for the "apex" partition. If there is none,
+! it uses the first partition with the assumption that APEX may be
+! the primary boot loader.
+
+ */
+
+***************
+*** 289,294 ****
+--- 290,298 ----
+ MTDPartition mtd = MTDPartition::find ("Loader");
+
+ if (!mtd.is ())
++ mtd = MTDPartition::find ("apex");
++
++ if (!mtd.is ())
+ mtd = MTDPartition::first ();
+
+ bool fFound = mtd.is () && open_apex (mtd);
diff --git a/packages/apr/apr-util_1.2.7.bb b/packages/apr/apr-util_1.2.7.bb
index ea81607953..904e41f8a3 100644
--- a/packages/apr/apr-util_1.2.7.bb
+++ b/packages/apr/apr-util_1.2.7.bb
@@ -14,12 +14,19 @@ EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS} --with-dbm=gdbm \
--without-sqlite3 \
--with-expat=${STAGING_DIR_HOST}${layout_prefix}"
+
inherit autotools lib_package binconfig
+OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
+
do_configure() {
+ cp ${STAGING_DATADIR}/apr_rules.mk ${S}/build/rules.mk
oe_runconf
}
do_stage() {
- autotools_stage_all
+ autotools_stage_all
+ sed -i s,/usr/lib/libgdbm.la,-lgdbm,g ${STAGING_LIBDIR}/libaprutil-1.la
+ sed -i s,/usr/lib/libexpat.la,-lexpat,g ${STAGING_LIBDIR}/libaprutil-1.la
+ sed -i s,/usr/lib/libapr-1.la,-lapr-1,g ${STAGING_LIBDIR}/libaprutil-1.la
}
diff --git a/packages/apr/apr_1.2.7.bb b/packages/apr/apr_1.2.7.bb
index 2016ca0126..d0f2916bfa 100644
--- a/packages/apr/apr_1.2.7.bb
+++ b/packages/apr/apr_1.2.7.bb
@@ -9,10 +9,13 @@ SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.bz2"
inherit autotools lib_package binconfig
+OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
+
do_configure() {
oe_runconf
}
do_stage() {
autotools_stage_all
+ cp ${S}/build/apr_rules.mk ${STAGING_DATADIR}
}
diff --git a/packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty b/packages/asterisk-core-sounds-en-alaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/aximx50/.mtn2git_empty
+++ b/packages/asterisk-core-sounds-en-alaw/.mtn2git_empty
diff --git a/packages/asterisk-core-sounds-en-alaw/asterisk-core-sounds-en-alaw_1.4.7.bb b/packages/asterisk-core-sounds-en-alaw/asterisk-core-sounds-en-alaw_1.4.7.bb
new file mode 100644
index 0000000000..f1b3d12cd7
--- /dev/null
+++ b/packages/asterisk-core-sounds-en-alaw/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/linux/linux-handhelds-2.6/eteng500/.mtn2git_empty b/packages/asterisk-core-sounds-en-g729/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/eteng500/.mtn2git_empty
+++ b/packages/asterisk-core-sounds-en-g729/.mtn2git_empty
diff --git a/packages/asterisk-core-sounds-en-g729/asterisk-core-sounds-en-g729_1.4.7.bb b/packages/asterisk-core-sounds-en-g729/asterisk-core-sounds-en-g729_1.4.7.bb
new file mode 100644
index 0000000000..205c8ff067
--- /dev/null
+++ b/packages/asterisk-core-sounds-en-g729/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/linux/linux-handhelds-2.6/ghi270/.mtn2git_empty b/packages/asterisk-core-sounds-en-gsm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/ghi270/.mtn2git_empty
+++ b/packages/asterisk-core-sounds-en-gsm/.mtn2git_empty
diff --git a/packages/asterisk-core-sounds-en-gsm/asterisk-core-sounds-en-gsm_1.4.7.bb b/packages/asterisk-core-sounds-en-gsm/asterisk-core-sounds-en-gsm_1.4.7.bb
new file mode 100644
index 0000000000..2a46c74f84
--- /dev/null
+++ b/packages/asterisk-core-sounds-en-gsm/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/linux/linux-handhelds-2.6/h1910/.mtn2git_empty b/packages/asterisk-core-sounds-en-ulaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h1910/.mtn2git_empty
+++ b/packages/asterisk-core-sounds-en-ulaw/.mtn2git_empty
diff --git a/packages/asterisk-core-sounds-en-ulaw/asterisk-core-sounds-en-ulaw_1.4.7.bb b/packages/asterisk-core-sounds-en-ulaw/asterisk-core-sounds-en-ulaw_1.4.7.bb
new file mode 100644
index 0000000000..c29ae60f99
--- /dev/null
+++ b/packages/asterisk-core-sounds-en-ulaw/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/linux/linux-handhelds-2.6/h2200/.mtn2git_empty b/packages/asterisk-extra-sounds-en-alaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h2200/.mtn2git_empty
+++ b/packages/asterisk-extra-sounds-en-alaw/.mtn2git_empty
diff --git a/packages/asterisk-extra-sounds-en-alaw/asterisk-extra-sounds-en-alaw_1.4.6.bb b/packages/asterisk-extra-sounds-en-alaw/asterisk-extra-sounds-en-alaw_1.4.6.bb
new file mode 100644
index 0000000000..f18d46258f
--- /dev/null
+++ b/packages/asterisk-extra-sounds-en-alaw/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/linux/linux-handhelds-2.6/h3600/.mtn2git_empty b/packages/asterisk-extra-sounds-en-g729/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h3600/.mtn2git_empty
+++ b/packages/asterisk-extra-sounds-en-g729/.mtn2git_empty
diff --git a/packages/asterisk-extra-sounds-en-g729/asterisk-extra-sounds-en-g729_1.4.6.bb b/packages/asterisk-extra-sounds-en-g729/asterisk-extra-sounds-en-g729_1.4.6.bb
new file mode 100644
index 0000000000..48fabbbdc4
--- /dev/null
+++ b/packages/asterisk-extra-sounds-en-g729/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/linux/linux-handhelds-2.6/h3800/.mtn2git_empty b/packages/asterisk-extra-sounds-en-gsm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h3800/.mtn2git_empty
+++ b/packages/asterisk-extra-sounds-en-gsm/.mtn2git_empty
diff --git a/packages/asterisk-extra-sounds-en-gsm/asterisk-extra-sounds-en-gsm_1.4.6.bb b/packages/asterisk-extra-sounds-en-gsm/asterisk-extra-sounds-en-gsm_1.4.6.bb
new file mode 100644
index 0000000000..da463391b1
--- /dev/null
+++ b/packages/asterisk-extra-sounds-en-gsm/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/linux/linux-handhelds-2.6/h3900/.mtn2git_empty b/packages/asterisk-extra-sounds-en-ulaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h3900/.mtn2git_empty
+++ b/packages/asterisk-extra-sounds-en-ulaw/.mtn2git_empty
diff --git a/packages/asterisk-extra-sounds-en-ulaw/asterisk-extra-sounds-en-ulaw_1.4.6.bb b/packages/asterisk-extra-sounds-en-ulaw/asterisk-extra-sounds-en-ulaw_1.4.6.bb
new file mode 100644
index 0000000000..6a6f3f5fba
--- /dev/null
+++ b/packages/asterisk-extra-sounds-en-ulaw/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/linux/linux-handhelds-2.6/h4000/.mtn2git_empty b/packages/asterisk-moh-freeplay-alaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h4000/.mtn2git_empty
+++ b/packages/asterisk-moh-freeplay-alaw/.mtn2git_empty
diff --git a/packages/asterisk-moh-freeplay-alaw/asterisk-moh-freeplay-alaw_0.0.0.bb b/packages/asterisk-moh-freeplay-alaw/asterisk-moh-freeplay-alaw_0.0.0.bb
new file mode 100644
index 0000000000..96c662444e
--- /dev/null
+++ b/packages/asterisk-moh-freeplay-alaw/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/linux/linux-handhelds-2.6/h5000/.mtn2git_empty b/packages/asterisk-moh-freeplay-g729/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/h5000/.mtn2git_empty
+++ b/packages/asterisk-moh-freeplay-g729/.mtn2git_empty
diff --git a/packages/asterisk-moh-freeplay-g729/asterisk-moh-freeplay-g729_0.0.0.bb b/packages/asterisk-moh-freeplay-g729/asterisk-moh-freeplay-g729_0.0.0.bb
new file mode 100644
index 0000000000..581e6bf84f
--- /dev/null
+++ b/packages/asterisk-moh-freeplay-g729/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/linux/linux-handhelds-2.6/htcalpine/.mtn2git_empty b/packages/asterisk-moh-freeplay-gsm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcalpine/.mtn2git_empty
+++ b/packages/asterisk-moh-freeplay-gsm/.mtn2git_empty
diff --git a/packages/asterisk-moh-freeplay-gsm/asterisk-moh-freeplay-gsm_0.0.0.bb b/packages/asterisk-moh-freeplay-gsm/asterisk-moh-freeplay-gsm_0.0.0.bb
new file mode 100644
index 0000000000..e45c3eec4e
--- /dev/null
+++ b/packages/asterisk-moh-freeplay-gsm/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/linux/linux-handhelds-2.6/htcapache/.mtn2git_empty b/packages/asterisk-moh-freeplay-ulaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcapache/.mtn2git_empty
+++ b/packages/asterisk-moh-freeplay-ulaw/.mtn2git_empty
diff --git a/packages/asterisk-moh-freeplay-ulaw/asterisk-moh-freeplay-ulaw_0.0.0.bb b/packages/asterisk-moh-freeplay-ulaw/asterisk-moh-freeplay-ulaw_0.0.0.bb
new file mode 100644
index 0000000000..e0e0293c34
--- /dev/null
+++ b/packages/asterisk-moh-freeplay-ulaw/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/linux/linux-handhelds-2.6/htcbeetles/.mtn2git_empty b/packages/asterisk/asterisk-1.4.17/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcbeetles/.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_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/atftp/atftp_0.7.bb b/packages/atftp/atftp_0.7.bb
index 23bdfaf64b..07040562dd 100644
--- a/packages/atftp/atftp_0.7.bb
+++ b/packages/atftp/atftp_0.7.bb
@@ -3,10 +3,10 @@ SECTION = "network"
PRIORITY = "optional"
HOMEPAGE = "http://packages.debian.org/atftp"
LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
SRC_URI = "${DEBIAN_MIRROR}/main/a/atftp/atftp_${PV}.orig.tar.gz \
- ${DEBIAN_MIRROR}/main/a/atftp/atftp_${PV}-7.diff.gz;patch=1 \
+ ${DEBIAN_MIRROR}/main/a/atftp/atftp_${PV}.dfsg-3.diff.gz;patch=1 \
file://atftpd.init"
S = "${WORKDIR}/atftp-${PV}"
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/avahi/avahi.inc b/packages/avahi/avahi.inc
index e8e9e7c4a8..ae03d00e05 100644
--- a/packages/avahi/avahi.inc
+++ b/packages/avahi/avahi.inc
@@ -6,7 +6,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
PR = "r5"
-DEPENDS = "expat libdaemon dbus glib-2.0"
+DEPENDS = "expat virtual/libintl libdaemon dbus glib-2.0"
# uclibc has no nss
RRECOMMENDS_avahi-daemon_append_linux = "libnss-mdns"
@@ -22,10 +22,14 @@ inherit autotools pkgconfig update-rc.d
RDEPENDS_append = ""
# TODO: build and enable all the extra stuff avahi offers
-EXTRA_OECONF = "--with-distro=debian --disable-gdbm ${AVAHI_GTK} --disable-mono --disable-monodoc --disable-qt3 --disable-qt4 ${AVAHI_PYTHON}"
+EXTRA_OECONF = "--with-distro=debian --disable-nls --disable-gdbm ${AVAHI_GTK} --disable-mono --disable-monodoc --disable-qt3 --disable-qt4 ${AVAHI_PYTHON}"
AVAHI_PYTHON = "--disable-python"
AVAHI_GTK = "--disable-gtk"
+LDFLAGS_append_linux-uclibc = " -lintl"
+LDFLAGS_append_linux-uclibcgnueabi = " -lintl "
+LDFLAGS_append_uclinux-uclibc = " -lintl"
+
PACKAGES =+ "avahi-daemon avahi-discover libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib libavahi-ui avahi-discover-standalone avahi-autoipd avahi-utils"
FILES_libavahi-common = "${libdir}/libavahi-common.so.*"
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/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty b/packages/backsaver/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcblueangel/.mtn2git_empty
+++ b/packages/backsaver/.mtn2git_empty
diff --git a/packages/backsaver/backsaver_1.0.bb b/packages/backsaver/backsaver_1.0.bb
new file mode 100644
index 0000000000..a63f9d7f60
--- /dev/null
+++ b/packages/backsaver/backsaver_1.0.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Lightweight backlight saver daemon"
+SECTION = "base"
+LICENSE="GPL"
+
+PR = "r0"
+
+SRC_URI = "file://Makefile \
+ file://backsaver.c"
+
+S = ${WORKDIR}
+
+do_install () {
+ oe_runmake 'prefix=${D}' install
+}
diff --git a/packages/linux/linux-handhelds-2.6/htchimalaya/.mtn2git_empty b/packages/backsaver/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htchimalaya/.mtn2git_empty
+++ b/packages/backsaver/files/.mtn2git_empty
diff --git a/packages/backsaver/files/Makefile b/packages/backsaver/files/Makefile
new file mode 100644
index 0000000000..dd4d2b0875
--- /dev/null
+++ b/packages/backsaver/files/Makefile
@@ -0,0 +1,8 @@
+backsaver: backsaver.o
+
+backsaver.o: backsaver.c
+
+install:
+ install -d ${prefix}/usr/bin/
+ # Needs to be installed suid to access sysfs & dev/input
+ install -m 4755 backsaver ${prefix}/usr/bin/
diff --git a/packages/backsaver/files/backsaver.c b/packages/backsaver/files/backsaver.c
new file mode 100644
index 0000000000..3f030b9dd9
--- /dev/null
+++ b/packages/backsaver/files/backsaver.c
@@ -0,0 +1,256 @@
+/*
+ * backsaver - Small backlight power saver daemon
+ *
+ * This app relies on contemporary Linux 2.6 intefaces, like
+ * backlight class dev and generic input devices. Legacy interfaces
+ * are not supported by design.
+ *
+ * Copyright (C) 2007, 2008 Paul Sokolovsky <pmiscml@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#include <getopt.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int opt_verbose;
+int opt_timeout = 2;
+int opt_power;
+int opt_brightness = -1;
+
+char readbuf[256];
+fd_set read_fds;
+fd_set work_fds;
+int fds[32];
+
+int bl_state = 1;
+
+#define BL_PATH "/sys/class/backlight/"
+
+/* Backlight device properties */
+char bldev_brightness_path[256] = BL_PATH;
+char bldev_power_path[256] = BL_PATH;
+int bldev_max_brightness;
+int bldev_saved_brightness;
+int bldev_dim_brightness;
+
+void fatal(char *msg)
+{
+ fprintf(stderr, "%s\n", msg);
+ exit(1);
+}
+
+int sysfs_get_value(char *fname)
+{
+ char buf[64];
+ int fd = open(fname, O_RDONLY);
+ int sz = read(fd, buf, sizeof(buf) - 1);
+ buf[sz] = 0;
+ close(fd);
+ return atoi(buf);
+}
+
+void sysfs_set_value(char *fname, int val)
+{
+ char buf[64];
+ int fd = open(fname, O_WRONLY);
+ int sz = sprintf(buf, "%d\n", val);
+ write(fd, buf, sz);
+ close(fd);
+}
+
+char *bldev_scan()
+{
+ static char name[256];
+ DIR *dir;
+ struct dirent *de;
+ int more_than_one = 0;
+
+ dir = opendir(BL_PATH);
+ if (!dir)
+ fatal("Backlight device class does not seem to be support by kernel (" BL_PATH " is absent)");
+
+ *name = 0;
+ while (de = readdir(dir)) {
+ if (de->d_name[0] == '.')
+ continue;
+ if (*name == 0) {
+ strcpy(name, de->d_name);
+ } else {
+ more_than_one = 1;
+ break;
+ }
+ }
+
+ closedir(dir);
+ if (*name == 0)
+ fatal("There does not seem to be any backlight device available (" BL_PATH " is empty)");
+ if (more_than_one)
+ fatal("There seems to be several backlight devices available, use --device= option");
+
+ return name;
+}
+
+void bldev_init(char *bldev)
+{
+ strcat(bldev_brightness_path, bldev);
+ strcat(bldev_brightness_path, "/brightness");
+ strcat(bldev_power_path, bldev);
+ strcat(bldev_power_path, "/power");
+
+ char buf[PATH_MAX];
+ memcpy(buf, BL_PATH, sizeof(BL_PATH));
+ strcat(buf, bldev);
+ strcat(buf, "/max_brightness");
+ bldev_max_brightness = sysfs_get_value(buf);
+
+ bldev_dim_brightness = bldev_max_brightness * opt_brightness / 100;
+}
+
+void set_backlight(int state)
+{
+ if (!bl_state) {
+ if (opt_verbose)
+ printf("BL off\n");
+ if (opt_power) {
+ sysfs_set_value(bldev_power_path, 4);
+ } else {
+ bldev_saved_brightness = sysfs_get_value(bldev_brightness_path);
+ sysfs_set_value(bldev_brightness_path, bldev_dim_brightness);
+ }
+ } else {
+ if (opt_verbose)
+ printf("BL on\n");
+ if (opt_power) {
+ sysfs_set_value(bldev_power_path, 0);
+ } else {
+ sysfs_set_value(bldev_brightness_path, bldev_saved_brightness);
+ }
+ }
+}
+
+#define INPUT_PATH "/dev/input/"
+
+int main_loop(int argc, char *argv[], int argstart)
+{
+ fd_set read_fds;
+ struct timeval timeout;
+ int i, maxfd = 0, numfd = 0;
+
+ FD_ZERO(&read_fds);
+
+ if (argstart == argc) {
+ static char path[256] = INPUT_PATH;
+ DIR *dir;
+ struct dirent *de;
+ struct stat stat;
+
+ dir = opendir(INPUT_PATH);
+ if (!dir)
+ fatal("Cannot open generic input device directory (" INPUT_PATH " is absent)");
+
+ while (de = readdir(dir)) {
+ if (de->d_name[0] == '.')
+ continue;
+ strcpy(path + sizeof(INPUT_PATH) - 1, de->d_name);
+
+ if (lstat(path, &stat))
+ fatal("Cannot stat input device to monitor");
+ if (S_ISLNK(stat.st_mode)) {
+ if (opt_verbose)
+ printf("Skipping symlink %s\n", path);
+ continue;
+ }
+ if (opt_verbose)
+ printf("Using %s\n", path);
+
+ int fd = open(path, O_RDONLY);
+ if (fd == -1)
+ fatal("Cannot open input device to monitor");
+ if (fd > maxfd)
+ maxfd = fd;
+ fds[numfd++] = fd;
+ FD_SET(fd, &read_fds);
+ }
+
+ closedir(dir);
+ } else {
+ for (i = argstart; i < argc; i++) {
+ if (opt_verbose)
+ printf("Using: %s\n", argv[i]);
+ int fd = open(argv[i], O_RDONLY);
+ if (fd == -1)
+ fatal("Cannot open input device to monitor");
+ if (fd > maxfd)
+ maxfd = fd;
+ fds[numfd++] = fd;
+ FD_SET(fd, &read_fds);
+ }
+ }
+
+ timeout.tv_usec = 0;
+
+ while (1) {
+ memcpy(&work_fds, &read_fds, sizeof(read_fds));
+ timeout.tv_sec = opt_timeout;
+ i = select(maxfd + 1, &work_fds, NULL, NULL, &timeout);
+ if (opt_verbose)
+ printf("Select returned: %d\n", i);
+ if (i > 0) {
+ if (!bl_state) {
+ bl_state = 1;
+ set_backlight(bl_state);
+ }
+ for (i = 0; i < numfd; i++) {
+ if (FD_ISSET(fds[i], &work_fds)) {
+ int sz = read(fds[i], readbuf, sizeof(readbuf));
+ if (opt_verbose)
+ printf("Discarded %d bytes from fd %d\n", sz, fds[i]);
+ }
+ }
+ } else {
+ if (bl_state) {
+ bl_state = 0;
+ set_backlight(bl_state);
+ }
+ }
+
+ }
+}
+
+struct option options[] = {
+ { "verbose", no_argument, &opt_verbose, 1 },
+ { "timeout", required_argument, NULL, 't' },
+ { "power", no_argument, &opt_power, 1 },
+ { "brightness", required_argument, NULL, 'b' },
+ NULL
+};
+int main(int argc, char *argv[])
+{
+ int opt;
+ while ((opt = getopt_long(argc, argv, "?h", options, NULL)) != -1) {
+ switch (opt) {
+ case 't':
+ opt_timeout = atoi(optarg);
+ break;
+ case 'b':
+ opt_brightness = atoi(optarg);
+ break;
+ }
+ }
+ printf("%d\n", optind);
+
+ char *bldev = bldev_scan();
+ bldev_init(bldev);
+
+ return main_loop(argc, argv, optind);
+}
diff --git a/packages/bluez/bluez-cups-backend_3.24.bb b/packages/bluez/bluez-cups-backend_3.24.bb
new file mode 100644
index 0000000000..1c43313a8a
--- /dev/null
+++ b/packages/bluez/bluez-cups-backend_3.24.bb
@@ -0,0 +1,28 @@
+require bluez-utils3.inc
+
+PR = "r1"
+
+DEPENDS += "cups"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --enable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_${PN} = "cups"
diff --git a/packages/bluez/bluez-gnome_0.15.bb b/packages/bluez/bluez-gnome_0.15.bb
new file mode 100644
index 0000000000..e3aaeafeb3
--- /dev/null
+++ b/packages/bluez/bluez-gnome_0.15.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Bluetooth configuration applet"
+LICENSE = "GPL+LGPL"
+
+PR = "r1"
+
+DEPENDS = "dbus-glib gconf libnotify gtk+"
+RRECOMMENDS = "gnome-icon-theme"
+
+SRC_URI = "http://bluez.sourceforge.net/download/${P}.tar.gz"
+
+inherit autotools pkgconfig gconf
+
+FILES_${PN} += "${datadir}/gconf"
+
diff --git a/packages/bluez/bluez-gstreamer-plugin_3.24.bb b/packages/bluez/bluez-gstreamer-plugin_3.24.bb
new file mode 100644
index 0000000000..e485d95c36
--- /dev/null
+++ b/packages/bluez/bluez-gstreamer-plugin_3.24.bb
@@ -0,0 +1,28 @@
+require bluez-utils3.inc
+
+PR = "r1"
+
+DEPENDS += "gstreamer gst-plugins-base "
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --enable-gstreamer \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so"
diff --git a/packages/bluez/bluez-libs_3.24.bb b/packages/bluez/bluez-libs_3.24.bb
new file mode 100644
index 0000000000..eb515b4aba
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.24.bb
@@ -0,0 +1,4 @@
+require bluez-libs.inc
+
+PR = "r1"
+
diff --git a/packages/bluez/bluez-utils-alsa_3.24.bb b/packages/bluez/bluez-utils-alsa_3.24.bb
new file mode 100644
index 0000000000..5ef75b54a4
--- /dev/null
+++ b/packages/bluez/bluez-utils-alsa_3.24.bb
@@ -0,0 +1,26 @@
+require bluez-utils3.inc
+
+PR = "r1"
+
+DEPENDS += "alsa-lib"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --disable-hid2hci \
+ --enable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+PACKAGES = "${PN}"
+FILES_${PN} = "${libdir}/alsa-lib/libasound*"
diff --git a/packages/bluez/bluez-utils/hciattach-ti-bts.patch b/packages/bluez/bluez-utils/hciattach-ti-bts.patch
index 217c32619d..1b208f7979 100644
--- a/packages/bluez/bluez-utils/hciattach-ti-bts.patch
+++ b/packages/bluez/bluez-utils/hciattach-ti-bts.patch
@@ -1,6 +1,6 @@
--- bluez-utils-3.1/tools/hciattach.c.orig 2006-07-23 14:02:14.000000000 +0200
+++ bluez-utils-3.1/tools/hciattach.c 2006-07-23 14:06:29.000000000 +0200
-@@ -58,6 +58,8 @@
+@@ -60,6 +60,8 @@
#define HCI_UART_3WIRE 2
#define HCI_UART_H4DS 3
@@ -9,15 +9,15 @@
struct uart_t {
char *type;
int m_id;
-@@ -67,6 +69,7 @@
- int speed;
+@@ -70,6 +72,7 @@
int flags;
+ char *bdaddr;
int (*init) (int fd, struct uart_t *u, struct termios *ti);
+ char *bts; /* bluetooth script */
};
#define FLOW_CTL 0x0001
-@@ -256,6 +259,114 @@
+@@ -279,6 +282,114 @@
return 0;
}
@@ -132,29 +132,17 @@
static int texas(int fd, struct uart_t *u, struct termios *ti)
{
struct timespec tm = {0, 50000};
-@@ -296,15 +407,26 @@
- } while (resp[4] != cmd[1] && resp[5] != cmd[2]);
-
- /* Verify manufacturer */
-- if ((resp[11] & 0xFF) != 0x0d)
-+ if (resp[11] != 0x0d)
- fprintf(stderr,"WARNING : module's manufacturer is not Texas Instrument\n");
-
- /* Print LMP version */
-- fprintf(stderr, "Texas module LMP version : 0x%02x\n", resp[10] & 0xFF);
-+ fprintf(stderr, "TI module LMP version : 0x%02x\n", resp[10]);
-
+@@ -328,6 +439,17 @@
/* Print LMP subversion */
-- fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF);
-+ fprintf(stderr, "TI module LMP sub-version : 0x%02x%02x\n", resp[14], resp[13]);
+ fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF);
+
+ if ((resp[14] >> 2) == 3) {
++ /* BRF6150 */
+ int err;
++
+ nanosleep(&tm, NULL);
-
-+ /* BRF6150 */
-+ if ((err=brf6150( fd, u, ti )) != 0) {
-+ fprintf( stderr, "TI script failed (err=%d)\n",
-+ err );
++ if ((err = brf6150(fd, u, ti)) != 0) {
++ fprintf(stderr, "Texas module script failed (err=%d)\n", err);
+ return -1;
+ }
+ }
@@ -162,16 +150,16 @@
nanosleep(&tm, NULL);
return 0;
}
-@@ -1103,7 +1225,7 @@
+@@ -1204,7 +1326,7 @@
{
printf("hciattach - HCI UART driver initialization utility\n");
printf("Usage:\n");
-- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow]\n");
-+ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow]\n");
+- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n");
printf("\thciattach -l\n");
}
-@@ -1118,11 +1240,12 @@
+@@ -1219,11 +1341,12 @@
struct sigaction sa;
struct pollfd p;
char dev[PATH_MAX];
@@ -185,7 +173,7 @@
switch(opt) {
case 'b':
send_break = 1;
-@@ -1144,6 +1267,10 @@
+@@ -1245,6 +1368,10 @@
init_speed = atoi(optarg);
break;
@@ -196,7 +184,7 @@
case 'l':
for (i = 0; uart[i].type; i++) {
printf("%-10s0x%04x,0x%04x\n", uart[i].type,
-@@ -1215,6 +1342,8 @@
+@@ -1320,6 +1447,8 @@
if (init_speed)
u->init_speed = init_speed;
@@ -205,17 +193,6 @@
memset(&sa, 0, sizeof(sa));
sa.sa_flags = SA_NOCLDSTOP;
sa.sa_handler = sig_alarm;
---- bluez-utils-3.1/tools/Makefile.am.orig 2006-07-23 14:06:59.000000000 +0200
-+++ bluez-utils-3.1/tools/Makefile.am 2006-07-23 14:07:18.000000000 +0200
-@@ -37,7 +37,7 @@
-
- noinst_PROGRAMS = hcisecfilter ppporc
-
--hciattach_SOURCES = hciattach.c hciattach_st.c
-+hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c
-
- hciconfig_SOURCES = hciconfig.c csr.h csr.c
- hciconfig_LDADD = @BLUEZ_LIBS@ $(top_builddir)/common/libhelper.a
--- bluez-utils-3.1/tools/ti_bts.h.orig 2006-07-23 14:07:26.000000000 +0200
+++ bluez-utils-3.1/tools/ti_bts.h 2006-07-23 14:07:46.000000000 +0200
@@ -0,0 +1,116 @@
@@ -487,3 +464,14 @@
+ }
+}
+
+--- bluez-utils-3.1/tools/Makefile.am.orig 2006-07-23 14:06:59.000000000 +0200
++++ bluez-utils-3.1/tools/Makefile.am 2006-07-23 14:07:18.000000000 +0200
+@@ -45,7 +45,7 @@
+
+ noinst_PROGRAMS = hcisecfilter ppporc
+
+-hciattach_SOURCES = hciattach.c hciattach_st.c
++hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c
+ hciattach_LDADD = @BLUEZ_LIBS@
+
+ hciconfig_SOURCES = hciconfig.c csr.h csr.c
diff --git a/packages/bluez/bluez-utils3.inc b/packages/bluez/bluez-utils3.inc
index 8f787292ba..b995d6990c 100644
--- a/packages/bluez/bluez-utils3.inc
+++ b/packages/bluez/bluez-utils3.inc
@@ -8,10 +8,10 @@ RREPLACES = "bluez-utils-dbus"
RCONFLICTS_${PN} = "bluez-utils-nodbus"
LICENSE = "GPL"
-# ti patch doesn't apply, people using it should rediff it and send it upstream
+# ti patch should be sent it upstream!
SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
- file://hcid.conf "
-# file://hciattach-ti-bts.patch;patch=1 \
+ file://hcid.conf \
+ file://hciattach-ti-bts.patch;patch=1"
S = "${WORKDIR}/bluez-utils-${PV}"
@@ -68,6 +68,8 @@ EXTRA_OECONF = " \
#disable it:
# --disable-hid2hci
+OE_LT_RPATH_ALLOW = "any"
+OE_LT_RPATH_ALLOW[export]="1"
do_install_append() {
install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/
diff --git a/packages/bluez/bluez-utils_3.23.bb b/packages/bluez/bluez-utils_3.23.bb
index 48f147aa69..f96d1f2ba4 100644
--- a/packages/bluez/bluez-utils_3.23.bb
+++ b/packages/bluez/bluez-utils_3.23.bb
@@ -1,4 +1,5 @@
require bluez-utils3.inc
+PR = "r1"
# see bluez-utils3.inc for the explanation of these option
EXTRA_OECONF = " \
diff --git a/packages/bluez/bluez-utils_3.24.bb b/packages/bluez/bluez-utils_3.24.bb
new file mode 100644
index 0000000000..37365f67fc
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.24.bb
@@ -0,0 +1,30 @@
+require bluez-utils3.inc
+PR = "r2"
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+ --enable-bccmd \
+ --enable-hid2hci \
+ --disable-alsa \
+ --disable-cups \
+ --enable-glib \
+ --disable-sdpd \
+ --enable-network \
+ --enable-serial \
+ --enable-input \
+ --enable-audio \
+ --enable-echo \
+ --enable-configfile \
+ --enable-initscripts \
+ --enable-test \
+ "
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default/bluetooth \
+ "
+
+CONFFILES_${PN}-compat = " \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
diff --git a/packages/busybox/busybox_1.00.bb b/packages/busybox/busybox_1.00.bb
index ca2db7e760..262d6afff1 100644
--- a/packages/busybox/busybox_1.00.bb
+++ b/packages/busybox/busybox_1.00.bb
@@ -94,7 +94,7 @@ pkg_prerm_${PN} () {
# providing its files, this will make update-alternatives work, but the update-rc.d part
# for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
tmpdir=`mktemp -d /tmp/busyboxrm-XXXXXX`
- cp -a /bin/busybox $tmpdir/
+ cp -pPR /bin/busybox $tmpdir/
ln -s /bin/busybox $tmpdir/[
ln -s /bin/busybox $tmpdir/test
ln -s /bin/busybox $tmpdir/head
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..38fcb37b82
--- /dev/null
+++ b/packages/cacao/cacao_0.98+hg20071001.bb
@@ -0,0 +1,16 @@
+require cacao.inc
+
+PR = "r5"
+
+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 \
+ "
+
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..1f81672e7f
--- /dev/null
+++ b/packages/cacao/cacaoh-native.inc
@@ -0,0 +1,28 @@
+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
+inherit 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..b3dfabc625
--- /dev/null
+++ b/packages/cacao/files/cacao-0.98+hg-attachthread.patch
@@ -0,0 +1,12 @@
+diff -r d8fe2c3ba284 src/threads/native/threads.c
+--- a/src/threads/native/threads.c Sun Dec 30 17:43:35 2007 +0100
++++ b/src/threads/native/threads.c Wed Jan 02 16:41:57 2008 +0100
+@@ -1432,6 +1432,8 @@ bool threads_attach_current_thread(JavaV
+
+ threads_thread_set_object(thread, (java_handle_t *) t);
+
++ threads_set_current_threadobject(thread);
++
+ /* thread is completely initialized */
+
+ threads_thread_state_runnable(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/cmake/cmake-native_2.4.7.bb b/packages/cmake/cmake-native_2.4.7.bb
new file mode 100644
index 0000000000..fcfdda1c1a
--- /dev/null
+++ b/packages/cmake/cmake-native_2.4.7.bb
@@ -0,0 +1,3 @@
+CMAKE_MAJOR_VERSION="2.4"
+require cmake.inc
+inherit native
diff --git a/packages/cmake/cmake-native_2.2.3.bb b/packages/cmake/cmake.inc
index b4e84cc093..83475bb5eb 100644
--- a/packages/cmake/cmake-native_2.2.3.bb
+++ b/packages/cmake/cmake.inc
@@ -7,14 +7,12 @@ HOMEPAGE = "http://www.cmake.org/"
LICENSE = "Berkely-style license"
SECTION = "console/utils"
-SRC_URI = "http://www.cmake.org/files/v2.2/cmake-${PV}.tar.gz"
+SRC_URI = "http://www.cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz"
inherit autotools
S = "${WORKDIR}/cmake-${PV}"
-inherit native
-
do_configure () {
./configure --prefix=${base_prefix} || die "./bootstrap failed"
}
diff --git a/packages/cmake/cmake_2.4.7.bb b/packages/cmake/cmake_2.4.7.bb
new file mode 100644
index 0000000000..619aea9701
--- /dev/null
+++ b/packages/cmake/cmake_2.4.7.bb
@@ -0,0 +1,2 @@
+CMAKE_MAJOR_VERSION="2.4"
+require cmake.inc
diff --git a/packages/linux/linux-handhelds-2.6/htcsable/.mtn2git_empty b/packages/dbus/dbus-1.1.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcsable/.mtn2git_empty
+++ b/packages/dbus/dbus-1.1.1/.mtn2git_empty
diff --git a/packages/dbus/dbus-1.1.1/cross.patch b/packages/dbus/dbus-1.1.1/cross.patch
new file mode 100644
index 0000000000..268a3ae3de
--- /dev/null
+++ b/packages/dbus/dbus-1.1.1/cross.patch
@@ -0,0 +1,10 @@
+--- /tmp/configure.in 2006-11-09 21:47:10.000000000 +0100
++++ dbus-0.95/configure.in 2006-11-09 21:48:13.108554000 +0100
+@@ -719,6 +719,7 @@
+ exit (0);
+ ]])],
+ [ac_cv_have_abstract_sockets=yes],
++ [ac_cv_have_abstract_sockets=no],
+ [ac_cv_have_abstract_sockets=no]
+ )])
+ AC_LANG_POP(C)
diff --git a/packages/dbus/dbus-1.1.1/dbus-1.init b/packages/dbus/dbus-1.1.1/dbus-1.init
new file mode 100644
index 0000000000..0725083c69
--- /dev/null
+++ b/packages/dbus/dbus-1.1.1/dbus-1.init
@@ -0,0 +1,110 @@
+#! /bin/sh
+# -*- coding: utf-8 -*-
+# Debian init.d script for D-BUS
+# Copyright © 2003 Colin Walters <walters@debian.org>
+
+set -e
+
+DAEMON=/usr/bin/dbus-daemon
+NAME=dbus
+DAEMONUSER=messagebus
+PIDDIR=/var/run/dbus
+PIDFILE=$PIDDIR/pid
+UUIDDIR=/var/lib/dbus
+DESC="system message bus"
+EVENTDIR=/etc/dbus-1/event.d
+
+test -x $DAEMON || exit 0
+
+# Source defaults file; edit that file to configure this script.
+ENABLED=1
+PARAMS=""
+if [ -e /etc/default/dbus ]; then
+ . /etc/default/dbus
+fi
+
+test "$ENABLED" != "0" || exit 0
+
+start_it_up()
+{
+ if [ ! -d $PIDDIR ]; then
+ mkdir -p $PIDDIR
+ chown $DAEMONUSER $PIDDIR
+ chgrp $DAEMONUSER $PIDDIR
+ fi
+ if [ -e $PIDFILE ]; then
+ PIDDIR=/proc/$(cat $PIDFILE)
+ if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
+ echo "$DESC already started; not starting."
+ else
+ echo "Removing stale PID file $PIDFILE."
+ rm -f $PIDFILE
+ fi
+ fi
+
+ if [ ! -d $UUIDDIR ]; then
+ mkdir -p $UUIDDIR
+ chown $DAEMONUSER $UUIDDIR
+ chgrp $DAEMONUSER $UUIDDIR
+ fi
+
+ dbus-uuidgen --ensure
+
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ if [ -d $EVENTDIR ]; then
+ run-parts --arg=start $EVENTDIR
+ fi
+}
+
+shut_it_down()
+{
+ if [ -d $EVENTDIR ]; then
+ # TODO: --reverse when busybox supports it
+ run-parts --arg=stop $EVENTDIR
+ fi
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER
+ # We no longer include these arguments so that start-stop-daemon
+ # can do its job even given that we may have been upgraded.
+ # We rely on the pidfile being sanely managed
+ # --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ rm -f $PIDFILE
+}
+
+reload_it()
+{
+ echo -n "Reloading $DESC config: "
+ dbus-send --print-reply --system --type=method_call \
+ --dest=org.freedesktop.DBus \
+ / org.freedesktop.DBus.ReloadConfig > /dev/null
+ # hopefully this is enough time for dbus to reload it's config file.
+ echo "done."
+}
+
+case "$1" in
+ start)
+ start_it_up
+ ;;
+ stop)
+ shut_it_down
+ ;;
+ reload|force-reload)
+ reload_it
+ ;;
+ restart)
+ shut_it_down
+ sleep 1
+ start_it_up
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/dbus/dbus-1.1.1/fix-install-daemon.patch b/packages/dbus/dbus-1.1.1/fix-install-daemon.patch
new file mode 100644
index 0000000000..c31786357d
--- /dev/null
+++ b/packages/dbus/dbus-1.1.1/fix-install-daemon.patch
@@ -0,0 +1,13 @@
+Index: dbus-0.94/bus/Makefile.am
+===================================================================
+--- dbus-0.94.orig/bus/Makefile.am 2006-10-01 17:36:18.000000000 +0200
++++ dbus-0.94/bus/Makefile.am 2006-10-14 21:40:05.000000000 +0200
+@@ -110,7 +110,7 @@
+ $(mkinstalldirs) $(DESTDIR)$(DBUS_DAEMONDIR); \
+ chmod 755 $(DESTDIR)$(DBUS_DAEMONDIR); \
+ fi
+- $(INSTALL_PROGRAM) dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR)
++ $(INSTALL_PROGRAM) .libs/dbus-daemon $(DESTDIR)$(DBUS_DAEMONDIR)
+ $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus
+ $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d
+ $(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services
diff --git a/packages/dbus/dbus-1.1.1/tmpdir.patch b/packages/dbus/dbus-1.1.1/tmpdir.patch
new file mode 100644
index 0000000000..838b903f0a
--- /dev/null
+++ b/packages/dbus/dbus-1.1.1/tmpdir.patch
@@ -0,0 +1,30 @@
+--- dbus-0.22/configure.in.orig 2004-08-13 00:57:16.000000000 +0200
++++ dbus-0.22/configure.in 2004-12-30 21:15:57.000000000 +0100
+@@ -1047,15 +1048,18 @@
+ AC_SUBST(ABSOLUTE_TOP_BUILDDIR)
+
+ #### Find socket directories
+-if ! test -z "$TMPDIR" ; then
+- DEFAULT_SOCKET_DIR=$TMPDIR
+-elif ! test -z "$TEMP" ; then
+- DEFAULT_SOCKET_DIR=$TEMP
+-elif ! test -z "$TMP" ; then
+- DEFAULT_SOCKET_DIR=$TMP
+-else
+- DEFAULT_SOCKET_DIR=/tmp
+-fi
++#if ! test -z "$TMPDIR" ; then
++# DEFAULT_SOCKET_DIR=$TMPDIR
++#elif ! test -z "$TEMP" ; then
++# DEFAULT_SOCKET_DIR=$TEMP
++#elif ! test -z "$TMP" ; then
++# DEFAULT_SOCKET_DIR=$TMP
++#else
++# DEFAULT_SOCKET_DIR=/tmp
++#fi
++
++# checks disabled to avoid expanding this at build time
++DEFAULT_SOCKET_DIR=/tmp
+
+ if ! test -z "$with_test_socket_dir" ; then
+ TEST_SOCKET_DIR="$with_test_socket_dir"
diff --git a/packages/dbus/dbus-native_1.1.1.bb b/packages/dbus/dbus-native_1.1.1.bb
new file mode 100644
index 0000000000..72e2190f78
--- /dev/null
+++ b/packages/dbus/dbus-native_1.1.1.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "message bus system for applications to talk to one another"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "GPL"
+SECTION = "base"
+
+PR = "r0"
+
+DEPENDS = "glib-2.0-native libxml2-native expat-native"
+
+DEFAULT_PREFERENCE = "-1"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-1.0.2"
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ "
+
+inherit autotools pkgconfig gettext native
+
+S = "${WORKDIR}/dbus-${PV}"
+
+EXTRA_OECONF = " --disable-tests --disable-checks --disable-xml-docs \
+ --disable-doxygen-docs --with-xml=expat --without-x"
+
+do_stage () {
+ oe_runmake install
+ autotools_stage_all
+
+ # for dbus-glib-native introspection generation
+ install -d ${STAGING_DATADIR}/dbus
+ install -m 0644 bus/session.conf ${STAGING_DATADIR}/dbus/session.conf
+}
diff --git a/packages/dbus/dbus_1.1.1.bb b/packages/dbus/dbus_1.1.1.bb
new file mode 100644
index 0000000000..7bf0a8634d
--- /dev/null
+++ b/packages/dbus/dbus_1.1.1.bb
@@ -0,0 +1,63 @@
+DEFAULT_PREFERENCE = "-1"
+
+SECTION = "base"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+
+PR = "r3"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
+ file://tmpdir.patch;patch=1 \
+ file://dbus-1.init \
+ file://cross.patch;patch=1 \
+ file://fix-install-daemon.patch;patch=1"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${bindir}/dbus-uuidgen ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = " --disable-tests --disable-checks --disable-xml-docs \
+ --disable-doxygen-docs --with-xml=expat --without-x"
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/packages/distcc/distcc_2.18.3.bb b/packages/distcc/distcc_2.18.3.bb
index 7f557c41d1..ebf02e17ee 100644
--- a/packages/distcc/distcc_2.18.3.bb
+++ b/packages/distcc/distcc_2.18.3.bb
@@ -2,14 +2,15 @@ DESCRIPTION = "distcc is a parallel build system that distributes \
compilation of C/C++/ObjC code across machines on a network."
SECTION = "devel"
LICENSE = "GPLv2"
-PR = "r1"
+PR = "r3"
DEPENDS = "avahi gtk+"
RRECOMMENDS = "avahi-daemon"
SRC_URI = "http://distcc.samba.org/ftp/distcc/distcc-${PV}.tar.bz2 \
- http://0pointer.de/public/distcc-avahi.patch;patch=1 \
- file://default \
+ file://distcc-avahi.patch;patch=1 \
+ file://no-man.patch;patch=1 \
+ file://default \
file://distcc"
inherit autotools pkgconfig update-rc.d
@@ -21,8 +22,10 @@ EXTRA_OECONF = " --with-gtk "
do_install_append() {
install -d ${D}${sysconfdir}/init.d/
install -d ${D}${sysconfdir}/default
+ install -d ${D}${sysconfdir}/distcc
install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc
+ echo "+zeroconf" > ${D}${sysconfdir}/distcc/hosts
}
PACKAGES += "distcc-distmon-gnome"
@@ -31,5 +34,11 @@ FILES_${PN} = " ${sysconfdir} \
${bindir}/distcc \
${bindir}/distccd \
${bindir}/distccmon-text"
+
+CONFFILES_${PN} += "${sysconfdir}/default/distcc \
+ ${sysconfdir}/distcc/hosts \
+ ${sysconfdir}/init.d/distcc \
+ "
+
FILES_distcc-distmon-gnome = " ${bindir}/distccmon-gnome \
${datadir}/distcc"
diff --git a/packages/distcc/files/distcc b/packages/distcc/files/distcc
index bbd4707497..d700e38de0 100644
--- a/packages/distcc/files/distcc
+++ b/packages/distcc/files/distcc
@@ -16,7 +16,7 @@ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/distccd
NAME=distcc
DESC="Distributed Compiler Daemon"
-DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --daemon"
+DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --daemon --zeroconf"
# please change those variables by overriding them in /etc/defaults/distcc
ALLOWEDNETS="127.0.0.1"
diff --git a/packages/distcc/files/distcc-avahi.patch b/packages/distcc/files/distcc-avahi.patch
new file mode 100644
index 0000000000..4444196fbe
--- /dev/null
+++ b/packages/distcc/files/distcc-avahi.patch
@@ -0,0 +1,12305 @@
+--- distcc-2.18.3/aclocal.m4 1970-01-01 01:00:00.000000000 +0100
++++ distcc-2.18.3.lennart/aclocal.m4 2007-12-30 13:55:27.000000000 +0100
+@@ -0,0 +1,171 @@
++# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
++
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
++# 2005 Free Software Foundation, Inc.
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
++# PARTICULAR PURPOSE.
++
++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
++#
++# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++#
++# As a special exception to the GNU General Public License, if you
++# distribute this file as part of a program that contains a
++# configuration script generated by Autoconf, you may include it under
++# the same distribution terms that you use for the rest of that program.
++
++# PKG_PROG_PKG_CONFIG([MIN-VERSION])
++# ----------------------------------
++AC_DEFUN([PKG_PROG_PKG_CONFIG],
++[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
++m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
++ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
++fi
++if test -n "$PKG_CONFIG"; then
++ _pkg_min_version=m4_default([$1], [0.9.0])
++ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
++ AC_MSG_RESULT([yes])
++ else
++ AC_MSG_RESULT([no])
++ PKG_CONFIG=""
++ fi
++
++fi[]dnl
++])# PKG_PROG_PKG_CONFIG
++
++# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
++#
++# Check to see whether a particular set of modules exists. Similar
++# to PKG_CHECK_MODULES(), but does not set variables or print errors.
++#
++#
++# Similar to PKG_CHECK_MODULES, make sure that the first instance of
++# this or PKG_CHECK_MODULES is called, or make sure to call
++# PKG_CHECK_EXISTS manually
++# --------------------------------------------------------------
++AC_DEFUN([PKG_CHECK_EXISTS],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++if test -n "$PKG_CONFIG" && \
++ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
++ m4_ifval([$2], [$2], [:])
++m4_ifvaln([$3], [else
++ $3])dnl
++fi])
++
++
++# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
++# ---------------------------------------------
++m4_define([_PKG_CONFIG],
++[if test -n "$PKG_CONFIG"; then
++ if test -n "$$1"; then
++ pkg_cv_[]$1="$$1"
++ else
++ PKG_CHECK_EXISTS([$3],
++ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
++ [pkg_failed=yes])
++ fi
++else
++ pkg_failed=untried
++fi[]dnl
++])# _PKG_CONFIG
++
++# _PKG_SHORT_ERRORS_SUPPORTED
++# -----------------------------
++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
++ _pkg_short_errors_supported=yes
++else
++ _pkg_short_errors_supported=no
++fi[]dnl
++])# _PKG_SHORT_ERRORS_SUPPORTED
++
++
++# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
++# [ACTION-IF-NOT-FOUND])
++#
++#
++# Note that if there is a possibility the first call to
++# PKG_CHECK_MODULES might not happen, you should be sure to include an
++# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
++#
++#
++# --------------------------------------------------------------
++AC_DEFUN([PKG_CHECK_MODULES],
++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
++
++pkg_failed=no
++AC_MSG_CHECKING([for $1])
++
++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
++_PKG_CONFIG([$1][_LIBS], [libs], [$2])
++
++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
++and $1[]_LIBS to avoid the need to call pkg-config.
++See the pkg-config man page for more details.])
++
++if test $pkg_failed = yes; then
++ _PKG_SHORT_ERRORS_SUPPORTED
++ if test $_pkg_short_errors_supported = yes; then
++ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
++ else
++ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
++ fi
++ # Put the nasty error message in config.log where it belongs
++ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
++
++ ifelse([$4], , [AC_MSG_ERROR(dnl
++[Package requirements ($2) were not met:
++
++$$1_PKG_ERRORS
++
++Consider adjusting the PKG_CONFIG_PATH environment variable if you
++installed software in a non-standard prefix.
++
++_PKG_TEXT
++])],
++ [$4])
++elif test $pkg_failed = untried; then
++ ifelse([$4], , [AC_MSG_FAILURE(dnl
++[The pkg-config script could not be found or is too old. Make sure it
++is in your PATH or set the PKG_CONFIG environment variable to the full
++path to pkg-config.
++
++_PKG_TEXT
++
++To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
++ [$4])
++else
++ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
++ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
++ AC_MSG_RESULT([yes])
++ ifelse([$3], , :, [$3])
++fi[]dnl
++])# PKG_CHECK_MODULES
++
++m4_include([acinclude.m4])
+--- distcc-2.18.3/configure.ac 2004-11-30 12:34:32.000000000 +0100
++++ distcc-2.18.3.lennart/configure.ac 2007-12-30 15:45:58.000000000 +0100
+@@ -386,6 +386,18 @@ AC_CHECK_MEMBER([struct sockaddr_storage
+ AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [define if you have struct sockaddr_storage]),,
+ [#include <sys/socket.h>])
+
++dnl check for avahi
++PKG_CHECK_MODULES(AVAHI, [avahi-client >= 0.6.5],
++[AC_DEFINE(HAVE_AVAHI, 1, [defined if Avahi is available])
++CFLAGS="$CFLAGS $AVAHI_CFLAGS"
++LIBS="$LIBS $AVAHI_LIBS"
++ZEROCONF_DISTCC_OBJS="src/zeroconf.o src/gcc-id.o"
++ZEROCONF_DISTCCD_OBJS="src/zeroconf-reg.o src/gcc-id.o"],
++[ZEROCONF_DISTCC_OBJS=""
++ZEROCONF_DISTCCD_OBJS=""])
++AC_SUBST(ZEROCONF_DISTCC_OBJS)
++AC_SUBST(ZEROCONF_DISTCCD_OBJS)
++
+ dnl ##### Output
+ AC_SUBST(docdir)
+ AC_SUBST(CFLAGS)
+--- distcc-2.18.3/configure 2004-11-30 12:34:40.000000000 +0100
++++ distcc-2.18.3.lennart/configure 2007-12-30 16:20:44.000000000 +0100
+@@ -1,27 +1,56 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.59 for distcc 2.18.3.
++# Generated by GNU Autoconf 2.61 for distcc 2.18.3.
+ #
+ # Report bugs to <distcc@lists.samba.org>.
+ #
+-# Copyright (C) 2003 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ ## --------------------- ##
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -31,8 +60,43 @@ else
+ fi
+
+
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
++
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
+ # Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
+ PS1='$ '
+ PS2='> '
+ PS4='+ '
+@@ -46,18 +110,19 @@ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -65,157 +130,388 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
++# CDPATH.
++$as_unset CDPATH
+
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
++if test "x$CONFIG_SHELL" = x; then
++ if (eval ":") 2>/dev/null; then
++ as_have_required=yes
++else
++ as_have_required=no
++fi
++
++ if test $as_have_required = yes && (eval ":
++(as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
+ fi
+
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0) || { (exit 1); exit 1; }
++
++(
++ as_lineno_1=\$LINENO
++ as_lineno_2=\$LINENO
++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
++") 2> /dev/null; then
++ :
++else
++ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
++ case $as_dir in
+ /*)
+- if ("$as_dir/$as_base" -c '
++ for as_base in sh bash ksh sh5; do
++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
++ done;;
++ esac
++done
++IFS=$as_save_IFS
++
++
++ for as_shell in $as_candidate_shells $SHELL; do
++ # Try only shells that exist, to save several forks.
++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
++ { ("$as_shell") 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++_ASEOF
++}; then
++ CONFIG_SHELL=$as_shell
++ as_have_required=yes
++ if { "$as_shell" 2> /dev/null <<\_ASEOF
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++:
++(as_func_return () {
++ (exit $1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = "$1" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test $exitcode = 0) || { (exit 1); exit 1; }
++
++(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
++
++_ASEOF
++}; then
++ break
++fi
++
++fi
++
++ done
++
++ if test "x$CONFIG_SHELL" != x; then
++ for as_var in BASH_ENV ENV
++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++ done
++ export CONFIG_SHELL
++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
++fi
++
++
++ if test $as_have_required = no; then
++ echo This script requires a shell more modern than all the
++ echo shells that I found on your system. Please install a
++ echo modern shell, or manually run the script under such a
++ echo shell if you do have one.
++ { (exit 1); exit 1; }
++fi
++
++
++fi
++
++fi
++
++
++
++(eval "as_func_return () {
++ (exit \$1)
++}
++as_func_success () {
++ as_func_return 0
++}
++as_func_failure () {
++ as_func_return 1
++}
++as_func_ret_success () {
++ return 0
++}
++as_func_ret_failure () {
++ return 1
++}
++
++exitcode=0
++if as_func_success; then
++ :
++else
++ exitcode=1
++ echo as_func_success failed.
++fi
++
++if as_func_failure; then
++ exitcode=1
++ echo as_func_failure succeeded.
++fi
++
++if as_func_ret_success; then
++ :
++else
++ exitcode=1
++ echo as_func_ret_success failed.
++fi
++
++if as_func_ret_failure; then
++ exitcode=1
++ echo as_func_ret_failure succeeded.
++fi
++
++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
++ :
++else
++ exitcode=1
++ echo positional parameters were not saved.
++fi
++
++test \$exitcode = 0") || {
++ echo No shell found that supports shell functions.
++ echo Please tell autoconf@gnu.org about your system,
++ echo including any error possibly output before this
++ echo message
++}
++
++
++
++ as_lineno_1=$LINENO
++ as_lineno_2=$LINENO
++ test "x$as_lineno_1" != "x$as_lineno_2" &&
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
++ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -224,7 +520,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -233,39 +550,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+
++exec 7<&0 </dev/null 6>&1
+
+ # Name of the host.
+ # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+ # so uname gets run too.
+ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+-exec 6>&1
+-
+ #
+ # Initializations.
+ #
+ ac_default_prefix=/usr/local
++ac_clean_files=
+ ac_config_libobj_dir=.
++LIBOBJS=
+ cross_compiling=no
+ subdirs=
+ MFLAGS=
+ MAKEFLAGS=
+ SHELL=${CONFIG_SHELL-/bin/sh}
+
+-# Maximum number of lines to put in a shell here document.
+-# This variable seems obsolete. It should probably be removed, and
+-# only ac_max_sed_lines should be used.
+-: ${ac_max_here_lines=38}
+-
+ # Identity of this package.
+ PACKAGE_NAME='distcc'
+ PACKAGE_TARNAME='distcc'
+@@ -276,42 +581,127 @@ PACKAGE_BUGREPORT='distcc@lists.samba.or
+ # Factoring default headers for most tests.
+ ac_includes_default="\
+ #include <stdio.h>
+-#if HAVE_SYS_TYPES_H
++#ifdef HAVE_SYS_TYPES_H
+ # include <sys/types.h>
+ #endif
+-#if HAVE_SYS_STAT_H
++#ifdef HAVE_SYS_STAT_H
+ # include <sys/stat.h>
+ #endif
+-#if STDC_HEADERS
++#ifdef STDC_HEADERS
+ # include <stdlib.h>
+ # include <stddef.h>
+ #else
+-# if HAVE_STDLIB_H
++# ifdef HAVE_STDLIB_H
+ # include <stdlib.h>
+ # endif
+ #endif
+-#if HAVE_STRING_H
+-# if !STDC_HEADERS && HAVE_MEMORY_H
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+ # include <memory.h>
+ # endif
+ # include <string.h>
+ #endif
+-#if HAVE_STRINGS_H
++#ifdef HAVE_STRINGS_H
+ # include <strings.h>
+ #endif
+-#if HAVE_INTTYPES_H
++#ifdef HAVE_INTTYPES_H
+ # include <inttypes.h>
+-#else
+-# if HAVE_STDINT_H
+-# include <stdint.h>
+-# endif
+ #endif
+-#if HAVE_UNISTD_H
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif"
+
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os docdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNOME_PACKAGES GNOME_CFLAGS GNOME_LIBS INSTALL_GNOME SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PYTHON CPP EGREP BUILD_POPT GNOME_BIN LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL
++PATH_SEPARATOR
++PACKAGE_NAME
++PACKAGE_TARNAME
++PACKAGE_VERSION
++PACKAGE_STRING
++PACKAGE_BUGREPORT
++exec_prefix
++prefix
++program_transform_name
++bindir
++sbindir
++libexecdir
++datarootdir
++datadir
++sysconfdir
++sharedstatedir
++localstatedir
++includedir
++oldincludedir
++docdir
++infodir
++htmldir
++dvidir
++pdfdir
++psdir
++libdir
++localedir
++mandir
++DEFS
++ECHO_C
++ECHO_N
++ECHO_T
++LIBS
++build_alias
++host_alias
++target_alias
++build
++build_cpu
++build_vendor
++build_os
++host
++host_cpu
++host_vendor
++host_os
++CC
++CFLAGS
++LDFLAGS
++CPPFLAGS
++ac_ct_CC
++EXEEXT
++OBJEXT
++GNOME_PACKAGES
++GNOME_CFLAGS
++GNOME_LIBS
++INSTALL_GNOME
++SET_MAKE
++INSTALL_PROGRAM
++INSTALL_SCRIPT
++INSTALL_DATA
++PYTHON
++CPP
++GREP
++EGREP
++PKG_CONFIG
++AVAHI_CFLAGS
++AVAHI_LIBS
++ZEROCONF_DISTCC_OBJS
++ZEROCONF_DISTCCD_OBJS
++BUILD_POPT
++GNOME_BIN
++LIBOBJS
++LTLIBOBJS'
+ ac_subst_files=''
++ ac_precious_vars='build_alias
++host_alias
++target_alias
++CC
++CFLAGS
++LDFLAGS
++LIBS
++CPPFLAGS
++PYTHON
++CPP
++PKG_CONFIG
++AVAHI_CFLAGS
++AVAHI_LIBS'
++
+
+ # Initialize some variables set by options.
+ ac_init_help=
+@@ -338,34 +728,48 @@ x_libraries=NONE
+ # and all the variables that are supposed to be based on exec_prefix
+ # by default will actually change.
+ # Use braces instead of parens because sh, perl, etc. also accept them.
++# (The list follows the same order as the GNU Coding Standards.)
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+-datadir='${prefix}/share'
++datarootdir='${prefix}/share'
++datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+-libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+-infodir='${prefix}/info'
+-mandir='${prefix}/man'
++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
++infodir='${datarootdir}/info'
++htmldir='${docdir}'
++dvidir='${docdir}'
++pdfdir='${docdir}'
++psdir='${docdir}'
++libdir='${exec_prefix}/lib'
++localedir='${datarootdir}/locale'
++mandir='${datarootdir}/man'
+
+ ac_prev=
++ac_dashdash=
+ for ac_option
+ do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+- eval "$ac_prev=\$ac_option"
++ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
++ case $ac_option in
++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
++ *) ac_optarg=yes ;;
++ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+- case $ac_option in
++ case $ac_dashdash$ac_option in
++ --)
++ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+@@ -387,33 +791,45 @@ do
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
++ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+- | --da=*)
++ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
++ | --dataroo | --dataro | --datar)
++ ac_prev=datarootdir ;;
++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
++ datarootdir=$ac_optarg ;;
++
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- eval "enable_$ac_feature=no" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=no ;;
++
++ -docdir | --docdir | --docdi | --doc | --do)
++ ac_prev=docdir ;;
++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
++ docdir=$ac_optarg ;;
++
++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
++ ac_prev=dvidir ;;
++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
++ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "enable_$ac_feature='$ac_optarg'" ;;
++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
++ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+@@ -440,6 +856,12 @@ do
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
++ ac_prev=htmldir ;;
++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
++ | --ht=*)
++ htmldir=$ac_optarg ;;
++
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+@@ -464,13 +886,16 @@ do
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
++ -localedir | --localedir | --localedi | --localed | --locale)
++ ac_prev=localedir ;;
++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
++ localedir=$ac_optarg ;;
++
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+- | --localstate | --localstat | --localsta | --localst \
+- | --locals | --local | --loca | --loc | --lo)
++ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+@@ -535,6 +960,16 @@ do
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
++ ac_prev=pdfdir ;;
++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
++ pdfdir=$ac_optarg ;;
++
++ -psdir | --psdir | --psdi | --psd | --ps)
++ ac_prev=psdir ;;
++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
++ psdir=$ac_optarg ;;
++
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+@@ -587,24 +1022,20 @@ do
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package| sed 's/-/_/g'`
+- case $ac_option in
+- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+- *) ac_optarg=yes ;;
+- esac
+- eval "with_$ac_package='$ac_optarg'" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+- ac_package=`echo $ac_package | sed 's/-/_/g'`
+- eval "with_$ac_package=no" ;;
++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
++ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+@@ -635,8 +1066,7 @@ Try \`$0 --help' for more information."
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+- eval "$ac_envvar='$ac_optarg'"
++ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+@@ -656,27 +1086,19 @@ if test -n "$ac_prev"; then
+ { (exit 1); exit 1; }; }
+ fi
+
+-# Be sure to have absolute paths.
+-for ac_var in exec_prefix prefix
++# Be sure to have absolute directory names.
++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
++ datadir sysconfdir sharedstatedir localstatedir includedir \
++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
++ libdir localedir mandir
+ do
+- eval ac_val=$`echo $ac_var`
++ eval ac_val=\$$ac_var
+ case $ac_val in
+- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
+- esac
+-done
+-
+-# Be sure to have absolute paths.
+-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+- localstatedir libdir includedir oldincludedir infodir mandir
+-do
+- eval ac_val=$`echo $ac_var`
+- case $ac_val in
+- [\\/$]* | ?:[\\/]* ) ;;
+- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+- { (exit 1); exit 1; }; };;
++ [\\/$]* | ?:[\\/]* ) continue;;
++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
++ { (exit 1); exit 1; }; }
+ done
+
+ # There might be people who depend on the old broken behavior: `$host'
+@@ -703,79 +1125,77 @@ test -n "$host_alias" && ac_tool_prefix=
+ test "$silent" = yes && exec 6>/dev/null
+
+
++ac_pwd=`pwd` && test -n "$ac_pwd" &&
++ac_ls_di=`ls -di .` &&
++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
++ { echo "$as_me: error: Working directory cannot be determined" >&2
++ { (exit 1); exit 1; }; }
++test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
++ { echo "$as_me: error: pwd does not report name of working directory" >&2
++ { (exit 1); exit 1; }; }
++
++
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+- # Try the directory containing this script, then its parent.
+- ac_confdir=`(dirname "$0") 2>/dev/null ||
++ # Try the directory containing this script, then the parent directory.
++ ac_confdir=`$as_dirname -- "$0" ||
+ $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$0" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+ srcdir=$ac_confdir
+- if test ! -r $srcdir/$ac_unique_file; then
++ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+ else
+ ac_srcdir_defaulted=no
+ fi
+-if test ! -r $srcdir/$ac_unique_file; then
+- if test "$ac_srcdir_defaulted" = yes; then
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
++if test ! -r "$srcdir/$ac_unique_file"; then
++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+- else
+- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+- { (exit 1); exit 1; }; }
+- fi
+ fi
+-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
++ac_abs_confdir=`(
++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+-ac_env_build_alias_set=${build_alias+set}
+-ac_env_build_alias_value=$build_alias
+-ac_cv_env_build_alias_set=${build_alias+set}
+-ac_cv_env_build_alias_value=$build_alias
+-ac_env_host_alias_set=${host_alias+set}
+-ac_env_host_alias_value=$host_alias
+-ac_cv_env_host_alias_set=${host_alias+set}
+-ac_cv_env_host_alias_value=$host_alias
+-ac_env_target_alias_set=${target_alias+set}
+-ac_env_target_alias_value=$target_alias
+-ac_cv_env_target_alias_set=${target_alias+set}
+-ac_cv_env_target_alias_value=$target_alias
+-ac_env_CC_set=${CC+set}
+-ac_env_CC_value=$CC
+-ac_cv_env_CC_set=${CC+set}
+-ac_cv_env_CC_value=$CC
+-ac_env_CFLAGS_set=${CFLAGS+set}
+-ac_env_CFLAGS_value=$CFLAGS
+-ac_cv_env_CFLAGS_set=${CFLAGS+set}
+-ac_cv_env_CFLAGS_value=$CFLAGS
+-ac_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_env_LDFLAGS_value=$LDFLAGS
+-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+-ac_cv_env_LDFLAGS_value=$LDFLAGS
+-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_env_CPPFLAGS_value=$CPPFLAGS
+-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+-ac_env_PYTHON_set=${PYTHON+set}
+-ac_env_PYTHON_value=$PYTHON
+-ac_cv_env_PYTHON_set=${PYTHON+set}
+-ac_cv_env_PYTHON_value=$PYTHON
+-ac_env_CPP_set=${CPP+set}
+-ac_env_CPP_value=$CPP
+-ac_cv_env_CPP_set=${CPP+set}
+-ac_cv_env_CPP_value=$CPP
+-
++ pwd)`
++# When building in place, set srcdir=.
++if test "$ac_abs_confdir" = "$ac_pwd"; then
++ srcdir=.
++fi
++# Remove unnecessary trailing slashes from srcdir.
++# Double slashes in file names in object file debugging info
++# mess up M-x gdb in Emacs.
++case $srcdir in
++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
++esac
++for ac_var in $ac_precious_vars; do
++ eval ac_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_env_${ac_var}_value=\$${ac_var}
++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
++ eval ac_cv_env_${ac_var}_value=\$${ac_var}
++done
++
+ #
+ # Report the --help message.
+ #
+@@ -803,9 +1223,6 @@ Configuration:
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+-_ACEOF
+-
+- cat <<_ACEOF
+ Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+@@ -823,15 +1240,22 @@ Fine tuning of the installation director
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+- --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+- --infodir=DIR info documentation [PREFIX/info]
+- --mandir=DIR man documentation [PREFIX/man]
++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
++ --infodir=DIR info documentation [DATAROOTDIR/info]
++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
++ --mandir=DIR man documentation [DATAROOTDIR/man]
++ --docdir=DIR documentation root [DATAROOTDIR/doc/distcc]
++ --htmldir=DIR html documentation [DOCDIR]
++ --dvidir=DIR dvi documentation [DOCDIR]
++ --pdfdir=DIR pdf documentation [DOCDIR]
++ --psdir=DIR ps documentation [DOCDIR]
+ _ACEOF
+
+ cat <<\_ACEOF
+@@ -868,130 +1292,101 @@ Some influential environment variables:
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+- headers in a nonstandard directory <include dir>
++ LIBS libraries to pass to the linker, e.g. -l<library>
++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
++ you have headers in a nonstandard directory <include dir>
+ PYTHON Python interpreter to use for running tests
+ CPP C preprocessor
++ PKG_CONFIG path to pkg-config utility
++ AVAHI_CFLAGS
++ C compiler flags for AVAHI, overriding pkg-config
++ AVAHI_LIBS linker flags for AVAHI, overriding pkg-config
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+
+ Report bugs to <distcc@lists.samba.org>.
+ _ACEOF
++ac_status=$?
+ fi
+
+ if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+- ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+- test -d $ac_dir || continue
++ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
+-esac
+-
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+ esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+- cd $ac_dir
+- # Check for guested configure; otherwise get Cygnus style configure.
+- if test -f $ac_srcdir/configure.gnu; then
+- echo
+- $SHELL $ac_srcdir/configure.gnu --help=recursive
+- elif test -f $ac_srcdir/configure; then
+- echo
+- $SHELL $ac_srcdir/configure --help=recursive
+- elif test -f $ac_srcdir/configure.ac ||
+- test -f $ac_srcdir/configure.in; then
+- echo
+- $ac_configure --help
++ cd "$ac_dir" || { ac_status=$?; continue; }
++ # Check for guested configure.
++ if test -f "$ac_srcdir/configure.gnu"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
++ elif test -f "$ac_srcdir/configure"; then
++ echo &&
++ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+- fi
+- cd "$ac_popdir"
++ fi || ac_status=$?
++ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+ fi
+
+-test -n "$ac_init_help" && exit 0
++test -n "$ac_init_help" && exit $ac_status
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ distcc configure 2.18.3
+-generated by GNU Autoconf 2.59
++generated by GNU Autoconf 2.61
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+- exit 0
++ exit
+ fi
+-exec 5>config.log
+-cat >&5 <<_ACEOF
++cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by distcc $as_me 2.18.3, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+ _ACEOF
++exec 5>>config.log
+ {
+ cat <<_ASUNAME
+ ## --------- ##
+@@ -1010,7 +1405,7 @@ uname -v = `(uname -v) 2>/dev/null || ec
+ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+ /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+ /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+ /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+ /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+ /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+@@ -1024,6 +1419,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+ done
++IFS=$as_save_IFS
+
+ } >&5
+
+@@ -1045,7 +1441,6 @@ _ACEOF
+ ac_configure_args=
+ ac_configure_args0=
+ ac_configure_args1=
+-ac_sep=
+ ac_must_keep_next=false
+ for ac_pass in 1 2
+ do
+@@ -1056,7 +1451,7 @@ do
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
++ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+@@ -1078,9 +1473,7 @@ do
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+- # Get rid of the leading space.
+- ac_sep=" "
++ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+@@ -1091,8 +1484,8 @@ $as_unset ac_configure_args1 || test "${
+ # When interrupted or exit'd, cleanup temporary files, and complete
+ # config.log. We remove comments because anyway the quotes in there
+ # would cause problems or look ugly.
+-# WARNING: Be sure not to use single quotes in there, as some shells,
+-# such as our DU 5.0 friend, will then `close' the trap.
++# WARNING: Use '\'' to represent an apostrophe within the trap.
++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+ trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+@@ -1105,20 +1498,34 @@ trap 'exit_status=$?
+ _ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
+ (set) 2>&1 |
+- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ sed -n \
+- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+- ;;
++ "s/'\''/'\''\\\\'\'''\''/g;
++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
++ ;; #(
+ *)
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-}
++ esac |
++ sort
++)
+ echo
+
+ cat <<\_ASBOX
+@@ -1129,22 +1536,28 @@ _ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+-## ------------- ##
+-## Output files. ##
+-## ------------- ##
++## ------------------- ##
++## File substitutions. ##
++## ------------------- ##
+ _ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+- eval ac_val=$`echo $ac_var`
+- echo "$ac_var='"'"'$ac_val'"'"'"
++ eval ac_val=\$$ac_var
++ case $ac_val in
++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
++ esac
++ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+@@ -1156,26 +1569,24 @@ _ASBOX
+ ## ----------- ##
+ _ASBOX
+ echo
+- sed "/^$/d" confdefs.h | sort
++ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+- rm -f core *.core &&
+- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
++ rm -f core *.core core.conftest.* &&
++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+- ' 0
++' 0
+ for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+ done
+ ac_signal=0
+
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+-rm -rf conftest* confdefs.h
+-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+-echo >confdefs.h
++rm -f -r conftest* confdefs.h
+
+ # Predefined preprocessor variables.
+
+@@ -1206,14 +1617,17 @@ _ACEOF
+
+ # Let the site file select an alternate cache file if it wants to.
+ # Prefer explicitly selected file to automatically selected ones.
+-if test -z "$CONFIG_SITE"; then
+- if test "x$prefix" != xNONE; then
+- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+- else
+- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+- fi
++if test -n "$CONFIG_SITE"; then
++ set x "$CONFIG_SITE"
++elif test "x$prefix" != xNONE; then
++ set x "$prefix/share/config.site" "$prefix/etc/config.site"
++else
++ set x "$ac_default_prefix/share/config.site" \
++ "$ac_default_prefix/etc/config.site"
+ fi
+-for ac_site_file in $CONFIG_SITE; do
++shift
++for ac_site_file
++do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+ echo "$as_me: loading site script $ac_site_file" >&6;}
+@@ -1229,8 +1643,8 @@ if test -r "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+ echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+- [\\/]* | ?:[\\/]* ) . $cache_file;;
+- *) . ./$cache_file;;
++ [\\/]* | ?:[\\/]* ) . "$cache_file";;
++ *) . "./$cache_file";;
+ esac
+ fi
+ else
+@@ -1242,12 +1656,11 @@ fi
+ # Check that the precious variables saved in the cache have kept the same
+ # value.
+ ac_cache_corrupted=false
+-for ac_var in `(set) 2>&1 |
+- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
++for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+- eval ac_new_val="\$ac_env_${ac_var}_value"
++ eval ac_old_val=\$ac_cv_env_${ac_var}_value
++ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+@@ -1272,8 +1685,7 @@ echo "$as_me: current value: $ac_new_v
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+@@ -1290,12 +1702,6 @@ echo "$as_me: error: run \`make distclea
+ { (exit 1); exit 1; }; }
+ fi
+
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+
+
+
+@@ -1320,87 +1726,127 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+- ac_config_headers="$ac_config_headers src/config.h"
++ac_config_headers="$ac_config_headers src/config.h"
+
+ ac_aux_dir=
+-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+- if test -f $ac_dir/install-sh; then
++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
++ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+- elif test -f $ac_dir/install.sh; then
++ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+- elif test -f $ac_dir/shtool; then
++ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+ done
+ if test -z "$ac_aux_dir"; then
+- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
++
++# These three variables are undocumented and unsupported,
++# and are intended to be withdrawn in a future Autoconf release.
++# They can cause serious problems if a builder's source tree is in a directory
++# whose full name contains unusual characters.
++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
++
+
+ # Make sure we can run config.sub.
+-$ac_config_sub sun4 >/dev/null 2>&1 ||
+- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+-echo "$as_me:$LINENO: checking build system type" >&5
+-echo $ECHO_N "checking build system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking build system type" >&5
++echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+ if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_build_alias=$build_alias
+-test -z "$ac_cv_build_alias" &&
+- ac_cv_build_alias=`$ac_config_guess`
+-test -z "$ac_cv_build_alias" &&
++ ac_build_alias=$build_alias
++test "x$ac_build_alias" = x &&
++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
++test "x$ac_build_alias" = x &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+ echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+-echo "${ECHO_T}$ac_cv_build" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
++echo "${ECHO_T}$ac_cv_build" >&6; }
++case $ac_cv_build in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
++echo "$as_me: error: invalid value of canonical build" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ build=$ac_cv_build
+-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_build
++shift
++build_cpu=$1
++build_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++build_os=$*
++IFS=$ac_save_IFS
++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+-echo "$as_me:$LINENO: checking host system type" >&5
+-echo $ECHO_N "checking host system type... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking host system type" >&5
++echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+ if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_host_alias=$host_alias
+-test -z "$ac_cv_host_alias" &&
+- ac_cv_host_alias=$ac_cv_build_alias
+-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
++ if test "x$host_alias" = x; then
++ ac_cv_host=$ac_cv_build
++else
++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
++fi
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+-echo "${ECHO_T}$ac_cv_host" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
++echo "${ECHO_T}$ac_cv_host" >&6; }
++case $ac_cv_host in
++*-*-*) ;;
++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
++echo "$as_me: error: invalid value of canonical host" >&2;}
++ { (exit 1); exit 1; }; };;
++esac
+ host=$ac_cv_host
+-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
++ac_save_IFS=$IFS; IFS='-'
++set x $ac_cv_host
++shift
++host_cpu=$1
++host_vendor=$2
++shift; shift
++# Remember, the first character of IFS is used to create $*,
++# except with old shells:
++host_os=$*
++IFS=$ac_save_IFS
++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+@@ -1417,11 +1863,11 @@ host_os=`echo $ac_cv_host | sed 's/^\([^
+
+
+
+-# Check whether --with-docdir or --without-docdir was given.
++# Check whether --with-docdir was given.
+ if test "${with_docdir+set}" = set; then
+- withval="$with_docdir"
+- with_docdir=$withval
+-fi;
++ withval=$with_docdir; with_docdir=$withval
++fi
++
+ if test "x$with_docdir" = "x" ; then
+ docdir='${datadir}/doc/distcc'
+ else
+@@ -1440,8 +1886,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1454,32 +1900,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1492,36 +1940,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1534,74 +1997,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1615,7 +2038,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -1626,6 +2049,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -1643,22 +2067,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1671,36 +2096,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1713,29 +2140,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -1748,21 +2191,35 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+@@ -1787,47 +2244,77 @@ ac_clean_files="$ac_clean_files a.out a.
+ # Try to create an executable without -o first, disregard a.out.
+ # It will help us diagnose broken compilers, and finding out an intuition
+ # of exeext.
+-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+- (eval $ac_link_default) 2>&5
++#
++# List of possible output files, starting from the most likely.
++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
++# only as a last resort. b.out is created by i960 compilers.
++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
++#
++# The IRIX 6 linker writes into existing files which may not be
++# executable, retaining their permissions. Remove them first so a
++# subsequent execution test works.
++ac_rmfiles=
++for ac_file in $ac_files
++do
++ case $ac_file in
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
++ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
++ esac
++done
++rm -f $ac_rmfiles
++
++if { (ac_try="$ac_link_default"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- # Find the output, starting from the most likely. This scheme is
+-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+-# resort.
+-
+-# Be careful to initialize this variable, since it used to be cached.
+-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+-ac_cv_exeext=
+-# b.out is created by i960 compilers.
+-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
++# in a Makefile. We should not override ac_cv_exeext if it was cached,
++# so that the user can short-circuit this test for compilers unknown to
++# Autoconf.
++for ac_file in $ac_files ''
+ do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+- ;;
+- conftest.$ac_ext )
+- # This is the source file.
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- # FIXME: I believe we export ac_cv_exeext for Libtool,
+- # but it would be cool to find out if it's true. Does anybody
+- # maintain Libtool? --akim.
+- export ac_cv_exeext
++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
++ then :; else
++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
++ fi
++ # We set ac_cv_exeext here because the later test for it is not
++ # safe: cross compilers may not add the suffix if given an `-o'
++ # argument, so we may need to know it at that point already.
++ # Even if this section looks crufty: it has the advantage of
++ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+ done
++test "$ac_cv_exeext" = no && ac_cv_exeext=
++
+ else
++ ac_file=''
++fi
++
++{ echo "$as_me:$LINENO: result: $ac_file" >&5
++echo "${ECHO_T}$ac_file" >&6; }
++if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+@@ -1839,19 +2326,21 @@ See \`config.log' for more details." >&2
+ fi
+
+ ac_exeext=$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_file" >&5
+-echo "${ECHO_T}$ac_file" >&6
+
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+ # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+ # If not cross compiling, check that we can run a simple program.
+ if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -1870,22 +2359,27 @@ See \`config.log' for more details." >&2
+ fi
+ fi
+ fi
+-echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++{ echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ ac_clean_files=$ac_clean_files_save
+-# Check the compiler produces executables we can run. If not, either
++# Check that the compiler produces executables we can run. If not, either
+ # the compiler is broken, or we cross compile.
+-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+-echo "$as_me:$LINENO: result: $cross_compiling" >&5
+-echo "${ECHO_T}$cross_compiling" >&6
+-
+-echo "$as_me:$LINENO: checking for suffix of executables" >&5
+-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
++echo "${ECHO_T}$cross_compiling" >&6; }
++
++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+@@ -1896,9 +2390,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
+ for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+- export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+@@ -1912,14 +2405,14 @@ See \`config.log' for more details." >&2
+ fi
+
+ rm -f conftest$ac_cv_exeext
+-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+-echo "${ECHO_T}$ac_cv_exeext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
++echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+ rm -f conftest.$ac_ext
+ EXEEXT=$ac_cv_exeext
+ ac_exeext=$EXEEXT
+-echo "$as_me:$LINENO: checking for suffix of object files" >&5
+-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+ if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1939,14 +2432,20 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.o conftest.obj
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>&5
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
++ for ac_file in conftest.o conftest.obj conftest.*; do
++ test -f "$ac_file" || continue;
+ case $ac_file in
+- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+@@ -1964,12 +2463,12 @@ fi
+
+ rm -f conftest.$ac_cv_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+-echo "${ECHO_T}$ac_cv_objext" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
++echo "${ECHO_T}$ac_cv_objext" >&6; }
+ OBJEXT=$ac_cv_objext
+ ac_objext=$OBJEXT
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -1992,49 +2491,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -2050,37 +2549,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -2096,12 +2676,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -2135,12 +2715,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -2155,271 +2740,125 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
+-cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
+-#endif
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ echo "$as_me:$LINENO: checking for socklen_t" >&5
++echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; }
++if test "${ac_cv_type_socklen_t+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
++#include <sys/types.h>
++#include <sys/socket.h>
++
++typedef socklen_t ac__type_new_;
+ int
+ main ()
+ {
+-exit (42);
++if ((ac__type_new_ *) 0)
++ return 0;
++if (sizeof (ac__type_new_))
++ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_type_socklen_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
++ ac_cv_type_socklen_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-
+-
+-echo "$as_me:$LINENO: checking for socklen_t" >&5
+-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6
+-if test "${ac_cv_type_socklen_t+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <sys/types.h>
+-#include <sys/socket.h>
+-
+-int
+-main ()
+-{
+-if ((socklen_t *) 0)
+- return 0;
+-if (sizeof (socklen_t))
+- return 0;
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_type_socklen_t=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_socklen_t=no
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
+-echo "${ECHO_T}$ac_cv_type_socklen_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
++echo "${ECHO_T}$ac_cv_type_socklen_t" >&6; }
+ if test $ac_cv_type_socklen_t = yes; then
+ :
+ else
+
+- echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
+-echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
++echo $ECHO_N "checking for socklen_t equivalent... $ECHO_C" >&6; }
+ if test "${dcc_cv_socklen_t_equiv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2453,26 +2892,22 @@ getpeername(0,0,&len);
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+
+ dcc_cv_socklen_t_equiv="$t"
+ break
+@@ -2481,8 +2916,10 @@ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ done
+
+@@ -2494,8 +2931,8 @@ echo "$as_me: error: Cannot find a type
+
+ fi
+
+- echo "$as_me:$LINENO: result: $dcc_cv_socklen_t_equiv" >&5
+-echo "${ECHO_T}$dcc_cv_socklen_t_equiv" >&6
++ { echo "$as_me:$LINENO: result: $dcc_cv_socklen_t_equiv" >&5
++echo "${ECHO_T}$dcc_cv_socklen_t_equiv" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define socklen_t $dcc_cv_socklen_t_equiv
+@@ -2509,29 +2946,29 @@ fi
+ ### Checks for configure options
+
+
+-# Check whether --with-included-popt or --without-included-popt was given.
++# Check whether --with-included-popt was given.
+ if test "${with_included_popt+set}" = set; then
+- withval="$with_included_popt"
++ withval=$with_included_popt;
++fi
+
+-fi;
+
+-# Check whether --enable-rfc2553 or --disable-rfc2553 was given.
++# Check whether --enable-rfc2553 was given.
+ if test "${enable_rfc2553+set}" = set; then
+- enableval="$enable_rfc2553"
+-
++ enableval=$enable_rfc2553;
+ cat >>confdefs.h <<\_ACEOF
+ #define ENABLE_RFC2553 1
+ _ACEOF
+
+-fi;
++fi
++
+
+
+
+-# Check whether --with-gnome or --without-gnome was given.
++# Check whether --with-gnome was given.
+ if test "${with_gnome+set}" = set; then
+- withval="$with_gnome"
++ withval=$with_gnome;
++fi
+
+-fi;
+
+ if test x"$with_gnome" = xyes
+ then
+@@ -2544,11 +2981,11 @@ _ACEOF
+ fi
+
+
+-# Check whether --with-gtk or --without-gtk was given.
++# Check whether --with-gtk was given.
+ if test "${with_gtk+set}" = set; then
+- withval="$with_gtk"
++ withval=$with_gtk;
++fi
+
+-fi;
+ if test x"$with_gtk" = xyes
+ then
+ GNOME_BIN=distccmon-gnome
+@@ -2559,11 +2996,11 @@ _ACEOF
+
+ fi
+
+-# Check whether --enable-profile or --disable-profile was given.
++# Check whether --enable-profile was given.
+ if test "${enable_profile+set}" = set; then
+- enableval="$enable_profile"
++ enableval=$enable_profile;
++fi
+
+-fi;
+
+ if test x"$enable_profile" = xyes
+ then
+@@ -2585,12 +3022,12 @@ fi
+
+ for pkg in $GNOME_PACKAGES
+ do
+- echo "$as_me:$LINENO: checking version of $pkg" >&5
+-echo $ECHO_N "checking version of $pkg... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking version of $pkg" >&5
++echo $ECHO_N "checking version of $pkg... $ECHO_C" >&6; }
+ if gnomevers=`pkg-config --modversion $pkg`
+ then
+- echo "$as_me:$LINENO: result: $gnomevers" >&5
+-echo "${ECHO_T}$gnomevers" >&6
++ { echo "$as_me:$LINENO: result: $gnomevers" >&5
++echo "${ECHO_T}$gnomevers" >&6; }
+ else
+ { { echo "$as_me:$LINENO: error: $pkg was not found by pkg-config" >&5
+ echo "$as_me: error: $pkg was not found by pkg-config" >&2;}
+@@ -2601,21 +3038,21 @@ done
+ if test x${with_gnome} = xyes -o x${with_gtk} = xyes
+ then
+ INSTALL_GNOME="install-gnome-data"
+- echo "$as_me:$LINENO: checking GNOME/GTK+ cflags" >&5
+-echo $ECHO_N "checking GNOME/GTK+ cflags... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking GNOME/GTK+ cflags" >&5
++echo $ECHO_N "checking GNOME/GTK+ cflags... $ECHO_C" >&6; }
+ GNOME_CFLAGS="`pkg-config --cflags $GNOME_PACKAGES`" || { { echo "$as_me:$LINENO: error: failed to get cflags" >&5
+ echo "$as_me: error: failed to get cflags" >&2;}
+ { (exit 1); exit 1; }; }
+- echo "$as_me:$LINENO: result: ${GNOME_CFLAGS}" >&5
+-echo "${ECHO_T}${GNOME_CFLAGS}" >&6
++ { echo "$as_me:$LINENO: result: ${GNOME_CFLAGS}" >&5
++echo "${ECHO_T}${GNOME_CFLAGS}" >&6; }
+
+- echo "$as_me:$LINENO: checking GNOME/GTK+ libraries" >&5
+-echo $ECHO_N "checking GNOME/GTK+ libraries... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking GNOME/GTK+ libraries" >&5
++echo $ECHO_N "checking GNOME/GTK+ libraries... $ECHO_C" >&6; }
+ GNOME_LIBS="`pkg-config --libs $GNOME_PACKAGES`" || { { echo "$as_me:$LINENO: error: failed to get libs" >&5
+ echo "$as_me: error: failed to get libs" >&2;}
+ { (exit 1); exit 1; }; }
+- echo "$as_me:$LINENO: result: ${GNOME_LIBS}" >&5
+-echo "${ECHO_T}${GNOME_LIBS}" >&6
++ { echo "$as_me:$LINENO: result: ${GNOME_LIBS}" >&5
++echo "${ECHO_T}${GNOME_LIBS}" >&6; }
+ fi
+
+
+@@ -2631,8 +3068,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2645,32 +3082,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2683,36 +3122,51 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ else
+ CC="$ac_cv_prog_CC"
+ fi
+
+ if test -z "$CC"; then
+- if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2725,74 +3179,34 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-fi
+-if test -z "$ac_cv_prog_CC"; then
+- ac_ct_CC=$CC
+- # Extract the first word of "cc", so it can be a program name with args.
+-set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- if test -n "$ac_ct_CC"; then
+- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+- ac_cv_prog_ac_ct_CC="cc"
+- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+-done
+-
+-fi
+-fi
+-ac_ct_CC=$ac_cv_prog_ac_ct_CC
+-if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+- CC=$ac_ct_CC
+-else
+- CC="$ac_cv_prog_CC"
+-fi
+
++ fi
+ fi
+ if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2806,7 +3220,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -2817,6 +3231,7 @@ do
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+@@ -2834,22 +3249,23 @@ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ fi
+ if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+ set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2862,36 +3278,38 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ CC=$ac_cv_prog_CC
+ if test -n "$CC"; then
+- echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
++ { echo "$as_me:$LINENO: result: $CC" >&5
++echo "${ECHO_T}$CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$CC" && break
+ done
+ fi
+ if test -z "$CC"; then
+ ac_ct_CC=$CC
+- for ac_prog in cl
++ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2904,29 +3322,45 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ ac_ct_CC=$ac_cv_prog_ac_ct_CC
+ if test -n "$ac_ct_CC"; then
+- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+-echo "${ECHO_T}$ac_ct_CC" >&6
++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
++echo "${ECHO_T}$ac_ct_CC" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$ac_ct_CC" && break
+ done
+
+- CC=$ac_ct_CC
++ if test "x$ac_ct_CC" = x; then
++ CC=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ CC=$ac_ct_CC
++ fi
+ fi
+
+ fi
+@@ -2939,27 +3373,41 @@ See \`config.log' for more details." >&2
+ { (exit 1); exit 1; }; }
+
+ # Provide some information about the compiler.
+-echo "$as_me:$LINENO:" \
+- "checking for C compiler version" >&5
++echo "$as_me:$LINENO: checking for C compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+- (eval $ac_compiler --version </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler --version >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+- (eval $ac_compiler -v </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -v >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+- (eval $ac_compiler -V </dev/null >&5) 2>&5
++{ (ac_try="$ac_compiler -V >&5"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+ if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -2982,49 +3430,49 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_compiler_gnu=no
++ ac_compiler_gnu=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+ GCC=`test $ac_compiler_gnu = yes && echo yes`
+ ac_test_CFLAGS=${CFLAGS+set}
+ ac_save_CFLAGS=$CFLAGS
+-CFLAGS="-g"
+-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- cat >conftest.$ac_ext <<_ACEOF
++ ac_save_c_werror_flag=$ac_c_werror_flag
++ ac_c_werror_flag=yes
++ ac_cv_prog_cc_g=no
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -3040,37 +3488,118 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_g=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ CFLAGS=""
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ :
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_c_werror_flag=$ac_save_c_werror_flag
++ CFLAGS="-g"
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_prog_cc_g=no
++
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ ac_c_werror_flag=$ac_save_c_werror_flag
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+ elif test $ac_cv_prog_cc_g = yes; then
+@@ -3086,12 +3615,12 @@ else
+ CFLAGS=
+ fi
+ fi
+-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+-if test "${ac_cv_prog_cc_stdc+set}" = set; then
++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
++if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- ac_cv_prog_cc_stdc=no
++ ac_cv_prog_cc_c89=no
+ ac_save_CC=$CC
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3125,12 +3654,17 @@ static char *f (char * (*g) (char **, in
+ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+- as 'x'. The following induces an error, until -std1 is added to get
++ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+- that's true only with -std1. */
++ that's true only with -std. */
+ int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
++ inside strings and character constants. */
++#define FOO(x) 'x'
++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
++
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+@@ -3145,337 +3679,152 @@ return f (e, argv, 0) != argv[0] || f
+ return 0;
+ }
+ _ACEOF
+-# Don't try gcc -ansi; that turns off useful extensions and
+-# breaks some systems' header files.
+-# AIX -qlanglvl=ansi
+-# Ultrix and OSF/1 -std1
+-# HP-UX 10.20 and later -Ae
+-# HP-UX older versions -Aa -D_HPUX_SOURCE
+-# SVR4 -Xc -D__EXTENSIONS__
+-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+ do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_prog_cc_stdc=$ac_arg
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_prog_cc_c89=$ac_arg
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext
++
++rm -f core conftest.err conftest.$ac_objext
++ test "x$ac_cv_prog_cc_c89" != "xno" && break
+ done
+-rm -f conftest.$ac_ext conftest.$ac_objext
++rm -f conftest.$ac_ext
+ CC=$ac_save_CC
+
+ fi
+-
+-case "x$ac_cv_prog_cc_stdc" in
+- x|xno)
+- echo "$as_me:$LINENO: result: none needed" >&5
+-echo "${ECHO_T}none needed" >&6 ;;
++# AC_CACHE_VAL
++case "x$ac_cv_prog_cc_c89" in
++ x)
++ { echo "$as_me:$LINENO: result: none needed" >&5
++echo "${ECHO_T}none needed" >&6; } ;;
++ xno)
++ { echo "$as_me:$LINENO: result: unsupported" >&5
++echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+- CC="$CC $ac_cv_prog_cc_stdc" ;;
++ CC="$CC $ac_cv_prog_cc_c89"
++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+ esac
+
+-# Some people use a C++ compiler to compile C. Since we use `exit',
+-# in C++ we need to declare it. In case someone uses the same compiler
+-# for both compiling C and C++ we need to have the C++ compiler decide
+-# the declaration of exit, since it's the most demanding environment.
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++if test x"$GCC" = xyes
++then
++ CFLAGS="$CFLAGS -W -Wall -Wimplicit \
++-Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings \
++-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes \
++-Wnested-externs -Wconversion -Wpointer-arith -Wmissing-declarations"
++ { echo "$as_me:$LINENO: Adding gcc options: $CFLAGS" >&5
++echo "$as_me: Adding gcc options: $CFLAGS" >&6;}
++fi
++{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
++echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
++if test "${ac_cv_search_strerror+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
+ cat >conftest.$ac_ext <<_ACEOF
+-#ifndef __cplusplus
+- choke me
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
+ #endif
++char strerror ();
++int
++main ()
++{
++return strerror ();
++ ;
++ return 0;
++}
+ _ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++for ac_lib in '' cposix; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- for ac_declaration in \
+- '' \
+- 'extern "C" void std::exit (int) throw (); using std::exit;' \
+- 'extern "C" void std::exit (int); using std::exit;' \
+- 'extern "C" void exit (int) throw ();' \
+- 'extern "C" void exit (int);' \
+- 'void exit (int);'
+-do
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-#include <stdlib.h>
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- :
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_strerror=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-continue
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_declaration
+-int
+-main ()
+-{
+-exit (42);
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-done
+-rm -f conftest*
+-if test -n "$ac_declaration"; then
+- echo '#ifdef __cplusplus' >>confdefs.h
+- echo $ac_declaration >>confdefs.h
+- echo '#endif' >>confdefs.h
+-fi
+-
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-ac_ext=c
+-ac_cpp='$CPP $CPPFLAGS'
+-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+-if test x"$GCC" = xyes
+-then
+- CFLAGS="$CFLAGS -W -Wall -Wimplicit \
+--Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings \
+--Waggregate-return -Wstrict-prototypes -Wmissing-prototypes \
+--Wnested-externs -Wconversion -Wpointer-arith -Wmissing-declarations"
+- { echo "$as_me:$LINENO: Adding gcc options: $CFLAGS" >&5
+-echo "$as_me: Adding gcc options: $CFLAGS" >&6;}
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_strerror+set}" = set; then
++ break
+ fi
+-echo "$as_me:$LINENO: checking for library containing strerror" >&5
+-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
++done
+ if test "${ac_cv_search_strerror+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_strerror=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_strerror" = no; then
+- for ac_lib in cposix; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char strerror ();
+-int
+-main ()
+-{
+-strerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_strerror="-l$ac_lib"
+-break
++ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++ ac_cv_search_strerror=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+-echo "${ECHO_T}$ac_cv_search_strerror" >&6
+-if test "$ac_cv_search_strerror" != no; then
+- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
++echo "${ECHO_T}$ac_cv_search_strerror" >&6; }
++ac_res=$ac_cv_search_strerror
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+@@ -3496,32 +3845,33 @@ CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H"
+ # there.
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+
+-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
++echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
++set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
++if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.make <<\_ACEOF
++SHELL = /bin/sh
+ all:
+- @echo 'ac_maketemp="$(MAKE)"'
++ @echo '@@@%%%=$(MAKE)=@@@%%%'
+ _ACEOF
+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+-if test -n "$ac_maketemp"; then
+- eval ac_cv_prog_make_${ac_make}_set=yes
+-else
+- eval ac_cv_prog_make_${ac_make}_set=no
+-fi
++case `${MAKE-make} -f conftest.make 2>/dev/null` in
++ *@@@%%%=?*=@@@%%%*)
++ eval ac_cv_prog_make_${ac_make}_set=yes;;
++ *)
++ eval ac_cv_prog_make_${ac_make}_set=no;;
++esac
+ rm -f conftest.make
+ fi
+-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+ fi
+
+@@ -3538,8 +3888,8 @@ fi
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # OS/2's system install, which has a completely different semantic
+ # ./install, which can be erroneously created by make from ./install.sh.
+-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+ if test -z "$INSTALL"; then
+ if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -3561,7 +3911,7 @@ case $as_dir/ in
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -3580,21 +3930,22 @@ case $as_dir/ in
+ ;;
+ esac
+ done
++IFS=$as_save_IFS
+
+
+ fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+- # As a last resort, use the slow shell script. We don't cache a
+- # path for INSTALL within a source directory, because that will
++ # As a last resort, use the slow shell script. Don't cache a
++ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+- # removed, or if the path is relative.
++ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $INSTALL" >&5
+-echo "${ECHO_T}$INSTALL" >&6
++{ echo "$as_me:$LINENO: result: $INSTALL" >&5
++echo "${ECHO_T}$INSTALL" >&6; }
+
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+@@ -3614,8 +3965,8 @@ for ac_prog in python2.2 python-2.2 pyth
+ do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_PYTHON+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3628,25 +3979,27 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_PYTHON="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+ done
+ done
++IFS=$as_save_IFS
+
+ fi
+ fi
+ PYTHON=$ac_cv_prog_PYTHON
+ if test -n "$PYTHON"; then
+- echo "$as_me:$LINENO: result: $PYTHON" >&5
+-echo "${ECHO_T}$PYTHON" >&6
++ { echo "$as_me:$LINENO: result: $PYTHON" >&5
++echo "${ECHO_T}$PYTHON" >&6; }
+ else
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
++
+ test -n "$PYTHON" && break
+ done
+
+@@ -3654,8 +4007,8 @@ done
+ # NB: Cannot use AC_CONFIG_LIBOBJ_DIR here, because it's not present
+ # in autoconf 2.53.
+
+-echo "$as_me:$LINENO: checking for inline" >&5
+-echo $ECHO_N "checking for inline... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for inline" >&5
++echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+ if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -3675,38 +4028,37 @@ $ac_kw foo_t foo () {return 0; }
+
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_c_inline=$ac_kw; break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_c_inline=$ac_kw
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ test "$ac_cv_c_inline" != no && break
+ done
+
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+-echo "${ECHO_T}$ac_cv_c_inline" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
++echo "${ECHO_T}$ac_cv_c_inline" >&6; }
+
+
+ case $ac_cv_c_inline in
+@@ -3735,8 +4087,8 @@ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -3770,24 +4122,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -3796,9 +4146,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3808,24 +4159,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -3836,6 +4185,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -3853,8 +4203,8 @@ fi
+ else
+ ac_cv_prog_CPP=$CPP
+ fi
+-echo "$as_me:$LINENO: result: $CPP" >&5
+-echo "${ECHO_T}$CPP" >&6
++{ echo "$as_me:$LINENO: result: $CPP" >&5
++echo "${ECHO_T}$CPP" >&6; }
+ ac_preproc_ok=false
+ for ac_c_preproc_warn_flag in '' yes
+ do
+@@ -3877,24 +4227,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+ Syntax error
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -3903,9 +4251,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+ continue
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+- # OK, works on sane cases. Now check whether non-existent headers
++ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+@@ -3915,24 +4264,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ac_nonexistent.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ # Broken: success on invalid input.
+ continue
+ else
+@@ -3943,6 +4290,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ac_preproc_ok=:
+ break
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+
+ done
+@@ -3965,80 +4313,224 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+-echo "$as_me:$LINENO: checking for egrep" >&5
+-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+-if test "${ac_cv_prog_egrep+set}" = set; then
++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
++if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+- then ac_cv_prog_egrep='grep -E'
+- else ac_cv_prog_egrep='egrep'
++ # Extract the first word of "grep ggrep" to use in msg output
++if test -z "$GREP"; then
++set dummy grep ggrep; ac_prog_name=$2
++if test "${ac_cv_path_GREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_GREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
++ # Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
+ fi
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+- EGREP=$ac_cv_prog_egrep
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
+
+
+-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+-if test "${ac_cv_header_stdc+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <stdlib.h>
+-#include <stdarg.h>
+-#include <string.h>
+-#include <float.h>
++ $ac_path_GREP_found && break 3
++ done
++done
+
+-int
+-main ()
+-{
++done
++IFS=$as_save_IFS
+
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_header_stdc=yes
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_header_stdc=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+-if test $ac_cv_header_stdc = yes; then
+- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
++GREP="$ac_cv_path_GREP"
++if test -z "$GREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
++echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ echo "$as_me:$LINENO: checking for egrep" >&5
++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ # Extract the first word of "egrep" to use in msg output
++if test -z "$EGREP"; then
++set dummy egrep; ac_prog_name=$2
++if test "${ac_cv_path_EGREP+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_path_EGREP_found=false
++# Loop through the user's path and test for each of PROGNAME-LIST
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
++ # Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
++ ac_count=`expr $ac_count + 1`
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++
++ $ac_path_EGREP_found && break 3
++ done
++done
++
++done
++IFS=$as_save_IFS
++
++
++fi
++
++EGREP="$ac_cv_path_EGREP"
++if test -z "$EGREP"; then
++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++
++ fi
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
++if test "${ac_cv_header_stdc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_header_stdc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_header_stdc=no
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+@@ -4088,6 +4580,7 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <ctype.h>
++#include <stdlib.h>
+ #if ((' ' & 0x0FF) == 0x020)
+ # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+ # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+@@ -4107,18 +4600,27 @@ main ()
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+- exit(2);
+- exit (0);
++ return 2;
++ return 0;
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -4131,12 +4633,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ ac_cv_header_stdc=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+-echo "${ECHO_T}$ac_cv_header_stdc" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
++echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+ if test $ac_cv_header_stdc = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -4159,9 +4663,9 @@ for ac_header in sys/types.h sys/stat.h
+ inttypes.h stdint.h unistd.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -4175,37 +4679,35 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -4223,18 +4725,19 @@ done
+ for ac_header in unistd.h sys/types.h sys/sendfile.h sys/signal.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -4245,40 +4748,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -4287,24 +4787,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -4312,9 +4810,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -4338,25 +4837,24 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
++ ( cat <<\_ASBOX
+ ## ------------------------------------- ##
+ ## Report this to distcc@lists.samba.org ##
+ ## ------------------------------------- ##
+ _ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -4375,18 +4873,19 @@ done
+ for ac_header in ctype.h sys/resource.h sys/socket.h sys/select.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -4397,40 +4896,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -4439,24 +4935,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -4464,9 +4958,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -4490,25 +4985,24 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
++ ( cat <<\_ASBOX
+ ## ------------------------------------- ##
+ ## Report this to distcc@lists.samba.org ##
+ ## ------------------------------------- ##
+ _ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -4524,9 +5018,9 @@ done
+ for ac_header in netinet/in.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -4543,37 +5037,35 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -4587,9 +5079,9 @@ done
+ for ac_header in arpa/nameser.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -4606,37 +5098,35 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -4650,9 +5140,9 @@ done
+ for ac_header in resolv.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -4675,37 +5165,35 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_Header=no"
++ eval "$as_ac_Header=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@@ -4724,18 +5212,19 @@ done
+ for ac_header in float.h mcheck.h alloca.h sys/mman.h sys/loadavg.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+- echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
++ { echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -4746,40 +5235,37 @@ $ac_includes_default
+ #include <$ac_header>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -4788,24 +5274,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <$ac_header>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -4813,9 +5297,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -4839,25 +5324,24 @@ echo "$as_me: WARNING: $ac_header: s
+ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
++ ( cat <<\_ASBOX
+ ## ------------------------------------- ##
+ ## Report this to distcc@lists.samba.org ##
+ ## ------------------------------------- ##
+ _ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for $ac_header" >&5
+-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_Header+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ eval "$as_ac_Header=\$ac_header_preproc"
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++ac_res=`eval echo '${'$as_ac_Header'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+
+ fi
+ if test `eval echo '${'$as_ac_Header'}'` = yes; then
+@@ -4872,8 +5356,8 @@ done
+
+ ######################################################################
+
+-echo "$as_me:$LINENO: checking for in_port_t" >&5
+-echo $ECHO_N "checking for in_port_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for in_port_t" >&5
++echo $ECHO_N "checking for in_port_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_in_port_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4898,49 +5382,47 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+
+
++typedef in_port_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((in_port_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (in_port_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_in_port_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_in_port_t=no
++ ac_cv_type_in_port_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_in_port_t" >&5
+-echo "${ECHO_T}$ac_cv_type_in_port_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_in_port_t" >&5
++echo "${ECHO_T}$ac_cv_type_in_port_t" >&6; }
+ if test $ac_cv_type_in_port_t = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -4949,8 +5431,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking for in_addr_t" >&5
+-echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for in_addr_t" >&5
++echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6; }
+ if test "${ac_cv_type_in_addr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -4975,49 +5457,47 @@ cat >>conftest.$ac_ext <<_ACEOF
+ #endif
+
+
++typedef in_addr_t ac__type_new_;
+ int
+ main ()
+ {
+-if ((in_addr_t *) 0)
++if ((ac__type_new_ *) 0)
+ return 0;
+-if (sizeof (in_addr_t))
++if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_type_in_addr_t=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_in_addr_t=no
++ ac_cv_type_in_addr_t=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_in_addr_t" >&5
+-echo "${ECHO_T}$ac_cv_type_in_addr_t" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_in_addr_t" >&5
++echo "${ECHO_T}$ac_cv_type_in_addr_t" >&6; }
+ if test $ac_cv_type_in_addr_t = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -5039,13 +5519,12 @@ fi
+ # libsocket.so which has a bad implementation of gethostbyname (it
+ # only looks in /etc/hosts), so we only look for -lsocket if we need
+ # it.
+-echo "$as_me:$LINENO: checking for library containing gethostent" >&5
+-echo $ECHO_N "checking for library containing gethostent... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for library containing gethostent" >&5
++echo $ECHO_N "checking for library containing gethostent... $ECHO_C" >&6; }
+ if test "${ac_cv_search_gethostent+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_gethostent=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5053,123 +5532,165 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char gethostent ();
+ int
+ main ()
+ {
+-gethostent ();
++return gethostent ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' nsl; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_gethostent="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_gethostent=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_gethostent" = no; then
+- for ac_lib in nsl; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_gethostent+set}" = set; then
++ break
++fi
++done
++if test "${ac_cv_search_gethostent+set}" = set; then
++ :
++else
++ ac_cv_search_gethostent=no
++fi
++rm conftest.$ac_ext
++LIBS=$ac_func_search_save_LIBS
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostent" >&5
++echo "${ECHO_T}$ac_cv_search_gethostent" >&6; }
++ac_res=$ac_cv_search_gethostent
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
++
++fi
++
++{ echo "$as_me:$LINENO: checking for library containing setsockopt" >&5
++echo $ECHO_N "checking for library containing setsockopt... $ECHO_C" >&6; }
++if test "${ac_cv_search_setsockopt+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_func_search_save_LIBS=$LIBS
++cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char gethostent ();
++char setsockopt ();
+ int
+ main ()
+ {
+-gethostent ();
++return setsockopt ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' socket; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_gethostent="-l$ac_lib"
+-break
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_setsockopt=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_setsockopt+set}" = set; then
++ break
++fi
++done
++if test "${ac_cv_search_setsockopt+set}" = set; then
++ :
++else
++ ac_cv_search_setsockopt=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_gethostent" >&5
+-echo "${ECHO_T}$ac_cv_search_gethostent" >&6
+-if test "$ac_cv_search_gethostent" != no; then
+- test "$ac_cv_search_gethostent" = "none required" || LIBS="$ac_cv_search_gethostent $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_setsockopt" >&5
++echo "${ECHO_T}$ac_cv_search_setsockopt" >&6; }
++ac_res=$ac_cv_search_setsockopt
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+-echo "$as_me:$LINENO: checking for library containing setsockopt" >&5
+-echo $ECHO_N "checking for library containing setsockopt... $ECHO_C" >&6
+-if test "${ac_cv_search_setsockopt+set}" = set; then
++{ echo "$as_me:$LINENO: checking for library containing hstrerror" >&5
++echo $ECHO_N "checking for library containing hstrerror... $ECHO_C" >&6; }
++if test "${ac_cv_search_hstrerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_setsockopt=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5177,247 +5698,82 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char setsockopt ();
++char hstrerror ();
+ int
+ main ()
+ {
+-setsockopt ();
++return hstrerror ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' resolv; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_setsockopt="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_hstrerror=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_setsockopt" = no; then
+- for ac_lib in socket; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char setsockopt ();
+-int
+-main ()
+-{
+-setsockopt ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_setsockopt="-l$ac_lib"
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
+-fi
+-LIBS=$ac_func_search_save_LIBS
+-fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_setsockopt" >&5
+-echo "${ECHO_T}$ac_cv_search_setsockopt" >&6
+-if test "$ac_cv_search_setsockopt" != no; then
+- test "$ac_cv_search_setsockopt" = "none required" || LIBS="$ac_cv_search_setsockopt $LIBS"
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_hstrerror+set}" = set; then
++ break
+ fi
+-
+-echo "$as_me:$LINENO: checking for library containing hstrerror" >&5
+-echo $ECHO_N "checking for library containing hstrerror... $ECHO_C" >&6
++done
+ if test "${ac_cv_search_hstrerror+set}" = set; then
+- echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+- ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_hstrerror=no
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char hstrerror ();
+-int
+-main ()
+-{
+-hstrerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_hstrerror="none required"
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_hstrerror" = no; then
+- for ac_lib in resolv; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char hstrerror ();
+-int
+-main ()
+-{
+-hstrerror ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_hstrerror="-l$ac_lib"
+-break
++ :
+ else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++ ac_cv_search_hstrerror=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_hstrerror" >&5
+-echo "${ECHO_T}$ac_cv_search_hstrerror" >&6
+-if test "$ac_cv_search_hstrerror" != no; then
+- test "$ac_cv_search_hstrerror" = "none required" || LIBS="$ac_cv_search_hstrerror $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_hstrerror" >&5
++echo "${ECHO_T}$ac_cv_search_hstrerror" >&6; }
++ac_res=$ac_cv_search_hstrerror
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+-echo "$as_me:$LINENO: checking for library containing inet_aton" >&5
+-echo $ECHO_N "checking for library containing inet_aton... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for library containing inet_aton" >&5
++echo $ECHO_N "checking for library containing inet_aton... $ECHO_C" >&6; }
+ if test "${ac_cv_search_inet_aton+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_func_search_save_LIBS=$LIBS
+-ac_cv_search_inet_aton=no
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5425,113 +5781,73 @@ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char inet_aton ();
+ int
+ main ()
+ {
+-inet_aton ();
++return inet_aton ();
+ ;
+ return 0;
+ }
+ _ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++for ac_lib in '' resolv; do
++ if test -z "$ac_lib"; then
++ ac_res="none required"
++ else
++ ac_res=-l$ac_lib
++ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
++ fi
++ rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_inet_aton="none required"
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_search_inet_aton=$ac_res
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-if test "$ac_cv_search_inet_aton" = no; then
+- for ac_lib in resolv; do
+- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+
+-/* Override any gcc2 internal prototype to avoid an error. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+-char inet_aton ();
+-int
+-main ()
+-{
+-inet_aton ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_search_inet_aton="-l$ac_lib"
+-break
+-else
+- echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
++fi
+
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext
++ if test "${ac_cv_search_inet_aton+set}" = set; then
++ break
+ fi
+-rm -f conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+- done
++done
++if test "${ac_cv_search_inet_aton+set}" = set; then
++ :
++else
++ ac_cv_search_inet_aton=no
+ fi
++rm conftest.$ac_ext
+ LIBS=$ac_func_search_save_LIBS
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_search_inet_aton" >&5
+-echo "${ECHO_T}$ac_cv_search_inet_aton" >&6
+-if test "$ac_cv_search_inet_aton" != no; then
+- test "$ac_cv_search_inet_aton" = "none required" || LIBS="$ac_cv_search_inet_aton $LIBS"
++{ echo "$as_me:$LINENO: result: $ac_cv_search_inet_aton" >&5
++echo "${ECHO_T}$ac_cv_search_inet_aton" >&6; }
++ac_res=$ac_cv_search_inet_aton
++if test "$ac_res" != no; then
++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+ fi
+
+@@ -5542,17 +5858,17 @@ then
+ # People might have the library but not the header, in which case we
+ # still need to use the included copy.
+ if test "${ac_cv_header_popt_h+set}" = set; then
+- echo "$as_me:$LINENO: checking for popt.h" >&5
+-echo $ECHO_N "checking for popt.h... $ECHO_C" >&6
++ { echo "$as_me:$LINENO: checking for popt.h" >&5
++echo $ECHO_N "checking for popt.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_popt_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5
+-echo "${ECHO_T}$ac_cv_header_popt_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5
++echo "${ECHO_T}$ac_cv_header_popt_h" >&6; }
+ else
+ # Is the header compilable?
+-echo "$as_me:$LINENO: checking popt.h usability" >&5
+-echo $ECHO_N "checking popt.h usability... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking popt.h usability" >&5
++echo $ECHO_N "checking popt.h usability... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5563,40 +5879,37 @@ $ac_includes_default
+ #include <popt.h>
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_header_compiler=no
++ ac_header_compiler=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-echo "${ECHO_T}$ac_header_compiler" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+ # Is the header present?
+-echo "$as_me:$LINENO: checking popt.h presence" >&5
+-echo $ECHO_N "checking popt.h presence... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking popt.h presence" >&5
++echo $ECHO_N "checking popt.h presence... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -5605,24 +5918,22 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <popt.h>
+ _ACEOF
+-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++if { (ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null; then
+- if test -s conftest.err; then
+- ac_cpp_err=$ac_c_preproc_warn_flag
+- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+- else
+- ac_cpp_err=
+- fi
+-else
+- ac_cpp_err=yes
+-fi
+-if test -z "$ac_cpp_err"; then
++ (exit $ac_status); } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then
+ ac_header_preproc=yes
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -5630,9 +5941,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+ fi
++
+ rm -f conftest.err conftest.$ac_ext
+-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-echo "${ECHO_T}$ac_header_preproc" >&6
++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+ # So? What about this header?
+ case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+@@ -5656,25 +5968,23 @@ echo "$as_me: WARNING: popt.h: secti
+ echo "$as_me: WARNING: popt.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: popt.h: in the future, the compiler will take precedence" >&5
+ echo "$as_me: WARNING: popt.h: in the future, the compiler will take precedence" >&2;}
+- (
+- cat <<\_ASBOX
++ ( cat <<\_ASBOX
+ ## ------------------------------------- ##
+ ## Report this to distcc@lists.samba.org ##
+ ## ------------------------------------- ##
+ _ASBOX
+- ) |
+- sed "s/^/$as_me: WARNING: /" >&2
++ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+ esac
+-echo "$as_me:$LINENO: checking for popt.h" >&5
+-echo $ECHO_N "checking for popt.h... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for popt.h" >&5
++echo $ECHO_N "checking for popt.h... $ECHO_C" >&6; }
+ if test "${ac_cv_header_popt_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ ac_cv_header_popt_h=$ac_header_preproc
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5
+-echo "${ECHO_T}$ac_cv_header_popt_h" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_header_popt_h" >&5
++echo "${ECHO_T}$ac_cv_header_popt_h" >&6; }
+
+ fi
+ if test $ac_cv_header_popt_h = yes; then
+@@ -5703,64 +6013,83 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+
+-echo "$as_me:$LINENO: checking whether to use included libpopt" >&5
+-echo $ECHO_N "checking whether to use included libpopt... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether to use included libpopt" >&5
++echo $ECHO_N "checking whether to use included libpopt... $ECHO_C" >&6; }
+ if test x"$with_included_popt" = x"yes"
+ then
+- echo "$as_me:$LINENO: result: $srcdir/popt" >&5
+-echo "${ECHO_T}$srcdir/popt" >&6
++ { echo "$as_me:$LINENO: result: $srcdir/popt" >&5
++echo "${ECHO_T}$srcdir/popt" >&6; }
+ # popt_OBJS gets appended to distccd object list
+ BUILD_POPT='$(popt_OBJS)'
+ CPPFLAGS="$CPPFLAGS -I$srcdir/popt"
+ else
+ LIBS="$LIBS -lpopt"
+- echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+
+
+
+ ########################################################################
+ # Check for types
+-echo "$as_me:$LINENO: checking return type of signal handlers" >&5
+-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5
++echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; }
+ if test "${ac_cv_type_signal+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -5772,55 +6101,44 @@ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+ #include <sys/types.h>
+ #include <signal.h>
+-#ifdef signal
+-# undef signal
+-#endif
+-#ifdef __cplusplus
+-extern "C" void (*signal (int, void (*)(int)))(int);
+-#else
+-void (*signal ()) ();
+-#endif
+
+ int
+ main ()
+ {
+-int i;
++return *(signal (0, 0)) (0) == 1;
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- ac_cv_type_signal=void
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ ac_cv_type_signal=int
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_type_signal=int
++ ac_cv_type_signal=void
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
+-echo "${ECHO_T}$ac_cv_type_signal" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
++echo "${ECHO_T}$ac_cv_type_signal" >&6; }
+
+ cat >>confdefs.h <<_ACEOF
+ #define RETSIGTYPE $ac_cv_type_signal
+@@ -5844,9 +6162,9 @@ CPPFLAGS="$CPPFLAGS -I$srcdir/src"
+ for ac_func in sendfile setsid flock lockf hstrerror strerror setuid setreuid
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5872,67 +6190,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -5952,9 +6263,9 @@ done
+ for ac_func in getuid geteuid mcheck wait4 wait3 waitpid setgroups getcwd
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -5980,67 +6291,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6058,9 +6362,9 @@ done
+ for ac_func in snprintf vsnprintf vasprintf asprintf getcwd getwd
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6086,67 +6390,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6161,9 +6458,9 @@ done
+ for ac_func in getrusage strsignal gettimeofday
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6189,67 +6486,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6265,9 +6555,9 @@ done
+ for ac_func in getaddrinfo getnameinfo inet_ntop inet_ntoa
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6293,67 +6583,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6368,9 +6651,9 @@ done
+ for ac_func in strndup mmap strlcpy
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-echo "$as_me:$LINENO: checking for $ac_func" >&5
+-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+-if eval "test \"\${$as_ac_var+set}\" = set"; then
++{ echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
++if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+@@ -6396,67 +6679,60 @@ cat >>conftest.$ac_ext <<_ACEOF
+
+ #undef $ac_func
+
+-/* Override any gcc2 internal prototype to avoid an error. */
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
+ #ifdef __cplusplus
+ extern "C"
+-{
+ #endif
+-/* We use char because int might match the return type of a gcc2
+- builtin and then its argument prototype would still apply. */
+ char $ac_func ();
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++#if defined __stub_$ac_func || defined __stub___$ac_func
+ choke me
+-#else
+-char (*f) () = $ac_func;
+-#endif
+-#ifdef __cplusplus
+-}
+ #endif
+
+ int
+ main ()
+ {
+-return f != $ac_func;
++return $ac_func ();
+ ;
+ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-eval "$as_ac_var=no"
++ eval "$as_ac_var=no"
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++ac_res=`eval echo '${'$as_ac_var'}'`
++ { echo "$as_me:$LINENO: result: $ac_res" >&5
++echo "${ECHO_T}$ac_res" >&6; }
+ if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@@ -6466,8 +6742,8 @@ fi
+ done
+
+
+-echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
+-echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
++echo $ECHO_N "checking whether snprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_snprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6482,7 +6758,7 @@ int
+ main ()
+ {
+ #ifndef snprintf
+- char *p = (char *) snprintf;
++ (void) snprintf;
+ #endif
+
+ ;
+@@ -6490,37 +6766,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_snprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_snprintf=no
++ ac_cv_have_decl_snprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_snprintf" >&6; }
+ if test $ac_cv_have_decl_snprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6535,8 +6808,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
+-echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5
++echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_vsnprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6551,7 +6824,7 @@ int
+ main ()
+ {
+ #ifndef vsnprintf
+- char *p = (char *) vsnprintf;
++ (void) vsnprintf;
+ #endif
+
+ ;
+@@ -6559,37 +6832,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_vsnprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_vsnprintf=no
++ ac_cv_have_decl_vsnprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6; }
+ if test $ac_cv_have_decl_vsnprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6604,8 +6874,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether vasprintf is declared" >&5
+-echo $ECHO_N "checking whether vasprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether vasprintf is declared" >&5
++echo $ECHO_N "checking whether vasprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_vasprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6620,7 +6890,7 @@ int
+ main ()
+ {
+ #ifndef vasprintf
+- char *p = (char *) vasprintf;
++ (void) vasprintf;
+ #endif
+
+ ;
+@@ -6628,37 +6898,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_vasprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_vasprintf=no
++ ac_cv_have_decl_vasprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_vasprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_vasprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_vasprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_vasprintf" >&6; }
+ if test $ac_cv_have_decl_vasprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6673,8 +6940,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether asprintf is declared" >&5
+-echo $ECHO_N "checking whether asprintf is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether asprintf is declared" >&5
++echo $ECHO_N "checking whether asprintf is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_asprintf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6689,7 +6956,7 @@ int
+ main ()
+ {
+ #ifndef asprintf
+- char *p = (char *) asprintf;
++ (void) asprintf;
+ #endif
+
+ ;
+@@ -6697,37 +6964,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_asprintf=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_asprintf=no
++ ac_cv_have_decl_asprintf=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_asprintf" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_asprintf" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_asprintf" >&5
++echo "${ECHO_T}$ac_cv_have_decl_asprintf" >&6; }
+ if test $ac_cv_have_decl_asprintf = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6742,8 +7006,8 @@ _ACEOF
+
+
+ fi
+-echo "$as_me:$LINENO: checking whether strndup is declared" >&5
+-echo $ECHO_N "checking whether strndup is declared... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking whether strndup is declared" >&5
++echo $ECHO_N "checking whether strndup is declared... $ECHO_C" >&6; }
+ if test "${ac_cv_have_decl_strndup+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6758,7 +7022,7 @@ int
+ main ()
+ {
+ #ifndef strndup
+- char *p = (char *) strndup;
++ (void) strndup;
+ #endif
+
+ ;
+@@ -6766,37 +7030,34 @@ main ()
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strndup=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_have_decl_strndup=no
++ ac_cv_have_decl_strndup=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_have_decl_strndup" >&5
+-echo "${ECHO_T}$ac_cv_have_decl_strndup" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strndup" >&5
++echo "${ECHO_T}$ac_cv_have_decl_strndup" >&6; }
+ if test $ac_cv_have_decl_strndup = yes; then
+
+ cat >>confdefs.h <<_ACEOF
+@@ -6814,8 +7075,8 @@ fi
+
+
+
+-echo "$as_me:$LINENO: checking if mmap() supports MAP_FAILED" >&5
+-echo $ECHO_N "checking if mmap() supports MAP_FAILED... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking if mmap() supports MAP_FAILED" >&5
++echo $ECHO_N "checking if mmap() supports MAP_FAILED... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6841,26 +7102,22 @@ if (mmap (NULL, 0, 0, 0, 0, 0) == MAP_FA
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ :
+ else
+ echo "$as_me: failed program was:" >&5
+@@ -6874,13 +7131,14 @@ _ACEOF
+
+
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+-echo "$as_me:$LINENO: result: " >&5
+-echo "${ECHO_T}" >&6
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ echo "$as_me:$LINENO: result: " >&5
++echo "${ECHO_T}" >&6; }
+
+
+-echo "$as_me:$LINENO: checking for vararg macro support" >&5
+-echo $ECHO_N "checking for vararg macro support... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for vararg macro support" >&5
++echo $ECHO_N "checking for vararg macro support... $ECHO_C" >&6; }
+ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+@@ -6897,28 +7155,24 @@ func("a"); func("a", "b"); func("a", "b"
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
+- echo "$as_me:$LINENO: result: yes" >&5
+-echo "${ECHO_T}yes" >&6
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_VARARG_MACROS
+@@ -6928,13 +7182,14 @@ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+-echo "$as_me:$LINENO: checking for __va_copy" >&5
+-echo $ECHO_N "checking for __va_copy... $ECHO_C" >&6
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++{ echo "$as_me:$LINENO: checking for __va_copy" >&5
++echo $ECHO_N "checking for __va_copy... $ECHO_C" >&6; }
+ if test "${samba_cv_HAVE_VA_COPY+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -6956,38 +7211,36 @@ __va_copy(ap1,ap2);
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>conftest.er1
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
+ samba_cv_HAVE_VA_COPY=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-samba_cv_HAVE_VA_COPY=no
++ samba_cv_HAVE_VA_COPY=no
+ fi
+-rm -f conftest.err conftest.$ac_objext \
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $samba_cv_HAVE_VA_COPY" >&5
+-echo "${ECHO_T}$samba_cv_HAVE_VA_COPY" >&6
++{ echo "$as_me:$LINENO: result: $samba_cv_HAVE_VA_COPY" >&5
++echo "${ECHO_T}$samba_cv_HAVE_VA_COPY" >&6; }
+ if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -6996,8 +7249,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for C99 vsnprintf" >&5
+-echo $ECHO_N "checking for C99 vsnprintf... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for C99 vsnprintf" >&5
++echo $ECHO_N "checking for C99 vsnprintf... $ECHO_C" >&6; }
+ if test "${rsync_cv_HAVE_C99_VSNPRINTF+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7032,13 +7285,22 @@ main() { foo("hello"); }
+
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -7051,11 +7313,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ rsync_cv_HAVE_C99_VSNPRINTF=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $rsync_cv_HAVE_C99_VSNPRINTF" >&5
+-echo "${ECHO_T}$rsync_cv_HAVE_C99_VSNPRINTF" >&6
++{ echo "$as_me:$LINENO: result: $rsync_cv_HAVE_C99_VSNPRINTF" >&5
++echo "${ECHO_T}$rsync_cv_HAVE_C99_VSNPRINTF" >&6; }
+ if test x"$rsync_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7065,8 +7329,8 @@ _ACEOF
+ fi
+
+
+-echo "$as_me:$LINENO: checking for working socketpair" >&5
+-echo $ECHO_N "checking for working socketpair... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for working socketpair" >&5
++echo $ECHO_N "checking for working socketpair... $ECHO_C" >&6; }
+ if test "${rsync_cv_HAVE_SOCKETPAIR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7090,13 +7354,22 @@ main() {
+ }
+ _ACEOF
+ rm -f conftest$ac_exeext
+-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+- (eval $ac_link) 2>&5
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
++ { (case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+@@ -7109,11 +7382,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
+ ( exit $ac_status )
+ rsync_cv_HAVE_SOCKETPAIR=no
+ fi
+-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+ fi
++
++
+ fi
+-echo "$as_me:$LINENO: result: $rsync_cv_HAVE_SOCKETPAIR" >&5
+-echo "${ECHO_T}$rsync_cv_HAVE_SOCKETPAIR" >&6
++{ echo "$as_me:$LINENO: result: $rsync_cv_HAVE_SOCKETPAIR" >&5
++echo "${ECHO_T}$rsync_cv_HAVE_SOCKETPAIR" >&6; }
+ if test x"$rsync_cv_HAVE_SOCKETPAIR" = x"yes"; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7122,8 +7397,8 @@ _ACEOF
+
+ fi
+
+-echo "$as_me:$LINENO: checking for struct sockaddr_storage.ss_family" >&5
+-echo $ECHO_N "checking for struct sockaddr_storage.ss_family... $ECHO_C" >&6
++{ echo "$as_me:$LINENO: checking for struct sockaddr_storage.ss_family" >&5
++echo $ECHO_N "checking for struct sockaddr_storage.ss_family... $ECHO_C" >&6; }
+ if test "${ac_cv_member_struct_sockaddr_storage_ss_family+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+ else
+@@ -7146,32 +7421,28 @@ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_sockaddr_storage_ss_family=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-cat >conftest.$ac_ext <<_ACEOF
++ cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h. */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+@@ -7190,39 +7461,37 @@ return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+- (eval $ac_compile) 2>conftest.er1
++if { (ac_try="$ac_compile"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } &&
+- { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; } &&
+- { ac_try='test -s conftest.$ac_objext'
+- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+- (eval $ac_try) 2>&5
+- ac_status=$?
+- echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); }; }; then
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_sockaddr_storage_ss_family=yes
+ else
+ echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+-ac_cv_member_struct_sockaddr_storage_ss_family=no
++ ac_cv_member_struct_sockaddr_storage_ss_family=no
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
++
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+-echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_storage_ss_family" >&5
+-echo "${ECHO_T}$ac_cv_member_struct_sockaddr_storage_ss_family" >&6
++{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_storage_ss_family" >&5
++echo "${ECHO_T}$ac_cv_member_struct_sockaddr_storage_ss_family" >&6; }
+ if test $ac_cv_member_struct_sockaddr_storage_ss_family = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+@@ -7234,6 +7503,208 @@ fi
+
+
+
++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
++ if test -n "$ac_tool_prefix"; then
++ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
++set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++fi
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++if test -n "$PKG_CONFIG"; then
++ { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
++echo "${ECHO_T}$PKG_CONFIG" >&6; }
++else
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++ ac_pt_PKG_CONFIG=$PKG_CONFIG
++ # Extract the first word of "pkg-config", so it can be a program name with args.
++set dummy pkg-config; ac_word=$2
++{ echo "$as_me:$LINENO: checking for $ac_word" >&5
++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
++if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ case $ac_pt_PKG_CONFIG in
++ [\\/]* | ?:[\\/]*)
++ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
++ ;;
++ *)
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++fi
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++ { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
++echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
++else
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
++fi
++
++ if test "x$ac_pt_PKG_CONFIG" = x; then
++ PKG_CONFIG=""
++ else
++ case $cross_compiling:$ac_tool_warned in
++yes:)
++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&5
++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
++whose name does not start with the host triplet. If you think this
++configuration is useful to you, please write to autoconf@gnu.org." >&2;}
++ac_tool_warned=yes ;;
++esac
++ PKG_CONFIG=$ac_pt_PKG_CONFIG
++ fi
++else
++ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
++fi
++
++fi
++if test -n "$PKG_CONFIG"; then
++ _pkg_min_version=0.9.0
++ { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
++echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
++ else
++ { echo "$as_me:$LINENO: result: no" >&5
++echo "${ECHO_T}no" >&6; }
++ PKG_CONFIG=""
++ fi
++
++fi
++
++pkg_failed=no
++{ echo "$as_me:$LINENO: checking for AVAHI" >&5
++echo $ECHO_N "checking for AVAHI... $ECHO_C" >&6; }
++
++if test -n "$PKG_CONFIG"; then
++ if test -n "$AVAHI_CFLAGS"; then
++ pkg_cv_AVAHI_CFLAGS="$AVAHI_CFLAGS"
++ else
++ if test -n "$PKG_CONFIG" && \
++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"avahi-client >= 0.6.5\"") >&5
++ ($PKG_CONFIG --exists --print-errors "avahi-client >= 0.6.5") 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; then
++ pkg_cv_AVAHI_CFLAGS=`$PKG_CONFIG --cflags "avahi-client >= 0.6.5" 2>/dev/null`
++else
++ pkg_failed=yes
++fi
++ fi
++else
++ pkg_failed=untried
++fi
++if test -n "$PKG_CONFIG"; then
++ if test -n "$AVAHI_LIBS"; then
++ pkg_cv_AVAHI_LIBS="$AVAHI_LIBS"
++ else
++ if test -n "$PKG_CONFIG" && \
++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"avahi-client >= 0.6.5\"") >&5
++ ($PKG_CONFIG --exists --print-errors "avahi-client >= 0.6.5") 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; then
++ pkg_cv_AVAHI_LIBS=`$PKG_CONFIG --libs "avahi-client >= 0.6.5" 2>/dev/null`
++else
++ pkg_failed=yes
++fi
++ fi
++else
++ pkg_failed=untried
++fi
++
++
++
++if test $pkg_failed = yes; then
++
++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
++ _pkg_short_errors_supported=yes
++else
++ _pkg_short_errors_supported=no
++fi
++ if test $_pkg_short_errors_supported = yes; then
++ AVAHI_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "avahi-client >= 0.6.5"`
++ else
++ AVAHI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "avahi-client >= 0.6.5"`
++ fi
++ # Put the nasty error message in config.log where it belongs
++ echo "$AVAHI_PKG_ERRORS" >&5
++
++ ZEROCONF_DISTCC_OBJS=""
++ZEROCONF_DISTCCD_OBJS=""
++elif test $pkg_failed = untried; then
++ ZEROCONF_DISTCC_OBJS=""
++ZEROCONF_DISTCCD_OBJS=""
++else
++ AVAHI_CFLAGS=$pkg_cv_AVAHI_CFLAGS
++ AVAHI_LIBS=$pkg_cv_AVAHI_LIBS
++ { echo "$as_me:$LINENO: result: yes" >&5
++echo "${ECHO_T}yes" >&6; }
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_AVAHI 1
++_ACEOF
++
++CFLAGS="$CFLAGS $AVAHI_CFLAGS"
++LIBS="$LIBS $AVAHI_LIBS"
++ZEROCONF_DISTCC_OBJS="src/zeroconf.o src/gcc-id.o"
++ZEROCONF_DISTCCD_OBJS="src/zeroconf-reg.o src/gcc-id.o"
++fi
++
++
++
++
++
+
+
+
+@@ -7243,7 +7714,8 @@ cat >>confdefs.h <<_ACEOF
+ #define GNU_HOST "$host"
+ _ACEOF
+
+- ac_config_files="$ac_config_files Makefile popt/.stamp-conf lzo/.stamp-conf"
++ac_config_files="$ac_config_files Makefile popt/.stamp-conf lzo/.stamp-conf"
++
+ cat >confcache <<\_ACEOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+@@ -7262,39 +7734,58 @@ _ACEOF
+
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+-# So, don't put newlines in cache variables' values.
++# So, we kill variables containing newlines.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+-{
++(
++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
++ eval ac_val=\$$ac_var
++ case $ac_val in #(
++ *${as_nl}*)
++ case $ac_var in #(
++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
++ esac
++ case $ac_var in #(
++ _ | IFS | as_nl) ;; #(
++ *) $as_unset $ac_var ;;
++ esac ;;
++ esac
++ done
++
+ (set) 2>&1 |
+- case `(ac_space=' '; set | grep ac_space) 2>&1` in
+- *ac_space=\ *)
++ case $as_nl`(ac_space=' '; set) 2>&1` in #(
++ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+- ;;
++ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+- sed -n \
+- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+- esac;
+-} |
++ esac |
++ sort
++) |
+ sed '
++ /^ac_cv_env_/b end
+ t clear
+- : clear
++ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+- : end' >>confcache
+-if diff $cache_file confcache >/dev/null 2>&1; then :; else
+- if test -w $cache_file; then
+- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
++ :end' >>confcache
++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
++ if test -w "$cache_file"; then
++ test "x$cache_file" != "x/dev/null" &&
++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
++echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+- echo "not updating unwritable cache $cache_file"
++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
++echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+ fi
+ rm -f confcache
+@@ -7303,32 +7794,18 @@ test "x$prefix" = xNONE && prefix=$ac_de
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+-# VPATH may cause trouble with some makes, so we remove $(srcdir),
+-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+-# trailing colons and then remove the whole line if VPATH becomes empty
+-# (actually we leave an empty line to preserve line numbers).
+-if test "x$srcdir" = x.; then
+- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+-s/:*\$(srcdir):*/:/;
+-s/:*\${srcdir}:*/:/;
+-s/:*@srcdir@:*/:/;
+-s/^\([^=]*=[ ]*\):*/\1/;
+-s/:*$//;
+-s/^[^=]*=[ ]*$//;
+-}'
+-fi
+-
+ DEFS=-DHAVE_CONFIG_H
+
+ ac_libobjs=
+ ac_ltlibobjs=
+ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+- ac_i=`echo "$ac_i" |
+- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+- # 2. Add them.
+- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
++ ac_i=`echo "$ac_i" | sed "$ac_script"`
++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
++ # will be set to the directory where LIBOBJS objects are built.
++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+ done
+ LIBOBJS=$ac_libobjs
+
+@@ -7359,17 +7836,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
+ ## M4sh Initialization. ##
+ ## --------------------- ##
+
+-# Be Bourne compatible
++# Be more Bourne compatible
++DUALCASE=1; export DUALCASE # for MKS sh
+ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+- set -o posix
++ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in
++ *posix*) set -o posix ;;
++esac
++
++fi
++
++
++
++
++# PATH needs CR
++# Avoid depending upon Character Ranges.
++as_cr_letters='abcdefghijklmnopqrstuvwxyz'
++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
++as_cr_Letters=$as_cr_letters$as_cr_LETTERS
++as_cr_digits='0123456789'
++as_cr_alnum=$as_cr_Letters$as_cr_digits
++
++# The user is always right.
++if test "${PATH_SEPARATOR+set}" != set; then
++ echo "#! /bin/sh" >conf$$.sh
++ echo "exit 0" >>conf$$.sh
++ chmod +x conf$$.sh
++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
++ PATH_SEPARATOR=';'
++ else
++ PATH_SEPARATOR=:
++ fi
++ rm -f conf$$.sh
+ fi
+-DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Support unset when possible.
+ if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+@@ -7379,33 +7884,69 @@ else
+ fi
+
+
+-# Work around bugs in pre-3.0 UWIN ksh.
+-$as_unset ENV MAIL MAILPATH
+-PS1='$ '
+-PS2='> '
+-PS4='+ '
++# IFS
++# We need space, tab and new line, in precisely that order. Quoting is
++# there to prevent editors from complaining about space-tab.
++# (If _AS_PATH_WALK were called with IFS unset, it would disable word
++# splitting by setting IFS to empty value.)
++as_nl='
++'
++IFS=" "" $as_nl"
+
+-# NLS nuisances.
+-for as_var in \
+- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
++# Find who we are. Look in the path if we contain no directory separator.
++case $0 in
++ *[\\/]* ) as_myself=$0 ;;
++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
++done
++IFS=$as_save_IFS
++
++ ;;
++esac
++# We did not find ourselves, most probably we were run as `sh COMMAND'
++# in which case we are not to be found in the path.
++if test "x$as_myself" = x; then
++ as_myself=$0
++fi
++if test ! -f "$as_myself"; then
++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
++ { (exit 1); exit 1; }
++fi
++
++# Work around bugs in pre-3.0 UWIN ksh.
++for as_var in ENV MAIL MAILPATH
++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
++done
++PS1='$ '
++PS2='> '
++PS4='+ '
++
++# NLS nuisances.
++for as_var in \
++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+ do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+- $as_unset $as_var
++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+ done
+
+ # Required to use basename.
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+ else
+ as_basename=false
+@@ -7413,159 +7954,120 @@ fi
+
+
+ # Name of the executable.
+-as_me=`$as_basename "$0" ||
++as_me=`$as_basename -- "$0" ||
+ $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+- X"$0" : 'X\(/\)$' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X/"$0" |
+- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+- /^X\/\(\/\/\)$/{ s//\1/; q; }
+- /^X\/\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+-
+-
+-# PATH needs CR, and LINENO needs CR and PATH.
+-# Avoid depending upon Character Ranges.
+-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+-as_cr_digits='0123456789'
+-as_cr_alnum=$as_cr_Letters$as_cr_digits
++ sed '/^.*\/\([^/][^/]*\)\/*$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\/\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
+
+-# The user is always right.
+-if test "${PATH_SEPARATOR+set}" != set; then
+- echo "#! /bin/sh" >conf$$.sh
+- echo "exit 0" >>conf$$.sh
+- chmod +x conf$$.sh
+- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+- PATH_SEPARATOR=';'
+- else
+- PATH_SEPARATOR=:
+- fi
+- rm -f conf$$.sh
+-fi
++# CDPATH.
++$as_unset CDPATH
+
+
+- as_lineno_1=$LINENO
+- as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+- test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" || {
+- # Find who we are. Look in the path if we contain no path at all
+- # relative or not.
+- case $0 in
+- *[\\/]* ) as_myself=$0 ;;
+- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+-done
+
+- ;;
+- esac
+- # We did not find ourselves, most probably we were run as `sh COMMAND'
+- # in which case we are not to be found in the path.
+- if test "x$as_myself" = x; then
+- as_myself=$0
+- fi
+- if test ! -f "$as_myself"; then
+- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+- { (exit 1); exit 1; }; }
+- fi
+- case $CONFIG_SHELL in
+- '')
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for as_base in sh bash ksh sh5; do
+- case $as_dir in
+- /*)
+- if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+- CONFIG_SHELL=$as_dir/$as_base
+- export CONFIG_SHELL
+- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+- fi;;
+- esac
+- done
+-done
+-;;
+- esac
++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+- # line-number line before each line; the second 'sed' does the real
+- # work. The second script uses 'N' to pair each line-number line
+- # with the numbered line, and appends trailing '-' during
+- # substitution so that $LINENO is not a special case at line end.
++ # line-number line after each line using $LINENO; the second 'sed'
++ # does the real work. The second script uses 'N' to pair each
++ # line-number line with the line containing $LINENO, and appends
++ # trailing '-' during substitution so that $LINENO is not a special
++ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+- sed '=' <$as_myself |
++ # scripts with optimization help from Paolo Bonzini. Blame Lee
++ # E. McMahon (1931-1989) for sed's syntax. :-)
++ sed -n '
++ p
++ /[$]LINENO/=
++ ' <$as_myself |
+ sed '
++ s/[$]LINENO.*/&-/
++ t lineno
++ b
++ :lineno
+ N
+- s,$,-,
+- : loop
+- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
++ :loop
++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+- s,-$,,
+- s,^['$as_cr_digits']*\n,,
++ s/-\n.*//
+ ' >$as_me.lineno &&
+- chmod +x $as_me.lineno ||
+- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
++ chmod +x "$as_me.lineno" ||
++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+- # original and so on. Autoconf is especially sensible to this).
+- . ./$as_me.lineno
++ # original and so on. Autoconf is especially sensitive to this).
++ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+ }
+
+
+-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+- *c*,-n*) ECHO_N= ECHO_C='
+-' ECHO_T=' ' ;;
+- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
++ as_dirname=dirname
++else
++ as_dirname=false
++fi
++
++ECHO_C= ECHO_N= ECHO_T=
++case `echo -n x` in
++-n*)
++ case `echo 'x\c'` in
++ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
++ *) ECHO_C='\c';;
++ esac;;
++*)
++ ECHO_N='-n';;
+ esac
+
+-if expr a : '\(a\)' >/dev/null 2>&1; then
++if expr a : '\(a\)' >/dev/null 2>&1 &&
++ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+ else
+ as_expr=false
+ fi
+
+ rm -f conf$$ conf$$.exe conf$$.file
++if test -d conf$$.dir; then
++ rm -f conf$$.dir/conf$$.file
++else
++ rm -f conf$$.dir
++ mkdir conf$$.dir
++fi
+ echo >conf$$.file
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+- # We could just check for DJGPP; but this test a) works b) is more generic
+- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+- if test -f conf$$.exe; then
+- # Don't use ln at all; we don't have any links
++ as_ln_s='ln -s'
++ # ... but there are two gotchas:
++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
++ # In both cases, we have to default to `cp -p'.
++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+- else
+- as_ln_s='ln -s'
+- fi
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+-rm -f conf$$ conf$$.exe conf$$.file
++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
++rmdir conf$$.dir 2>/dev/null
+
+ if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+@@ -7574,7 +8076,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_executable_p="test -f"
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -7583,31 +8106,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
+ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+-# IFS
+-# We need space, tab and new line, in precisely that order.
+-as_nl='
+-'
+-IFS=" $as_nl"
+-
+-# CDPATH.
+-$as_unset CDPATH
+-
+ exec 6>&1
+
+-# Open the log real soon, to keep \$[0] and so on meaningful, and to
++# Save the log message, to keep $[0] and so on meaningful, and to
+ # report actual input values of CONFIG_FILES etc. instead of their
+-# values after options handling. Logging --version etc. is OK.
+-exec 5>>config.log
+-{
+- echo
+- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+-## Running $as_me. ##
+-_ASBOX
+-} >&5
+-cat >&5 <<_CSEOF
+-
++# values after options handling.
++ac_log="
+ This file was extended by distcc $as_me 2.18.3, which was
+-generated by GNU Autoconf 2.59. Invocation command line was
++generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -7615,30 +8121,19 @@ generated by GNU Autoconf 2.59. Invocat
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+-_CSEOF
+-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+-echo >&5
++on `(hostname || uname -n) 2>/dev/null | sed 1q`
++"
++
+ _ACEOF
+
++cat >>$CONFIG_STATUS <<_ACEOF
+ # Files that config.status was made for.
+-if test -n "$ac_config_files"; then
+- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_headers"; then
+- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+-fi
++config_files="$ac_config_files"
++config_headers="$ac_config_headers"
+
+-if test -n "$ac_config_links"; then
+- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+-fi
+-
+-if test -n "$ac_config_commands"; then
+- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+-fi
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-
+ ac_cs_usage="\
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+@@ -7646,7 +8141,7 @@ current configuration.
+ Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+- -V, --version print version number, then exit
++ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+@@ -7662,19 +8157,21 @@ Configuration headers:
+ $config_headers
+
+ Report bugs to <bug-autoconf@gnu.org>."
+-_ACEOF
+
++_ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ ac_cs_version="\\
+ distcc config.status 2.18.3
+-configured by $0, generated by GNU Autoconf 2.59,
+- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
++configured by $0, generated by GNU Autoconf 2.61,
++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+-Copyright (C) 2003 Free Software Foundation, Inc.
++Copyright (C) 2006 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+-srcdir=$srcdir
+-INSTALL="$INSTALL"
++
++ac_pwd='$ac_pwd'
++srcdir='$srcdir'
++INSTALL='$INSTALL'
+ _ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+@@ -7685,39 +8182,24 @@ while test $# != 0
+ do
+ case $1 in
+ --*=*)
+- ac_option=`expr "x$1" : 'x\([^=]*\)='`
+- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
++ ac_option=`expr "X$1" : 'X\([^=]*\)='`
++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+- -*)
++ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+- *) # This is not an option, so the user has probably given explicit
+- # arguments.
+- ac_option=$1
+- ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+- --version | --vers* | -V )
+- echo "$ac_cs_version"; exit 0 ;;
+- --he | --h)
+- # Conflict between --help and --header
+- { { echo "$as_me:$LINENO: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: ambiguous option: $1
+-Try \`$0 --help' for more information." >&2;}
+- { (exit 1); exit 1; }; };;
+- --help | --hel | -h )
+- echo "$ac_cs_usage"; exit 0 ;;
+- --debug | --d* | -d )
++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
++ echo "$ac_cs_version"; exit ;;
++ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+@@ -7727,18 +8209,24 @@ Try \`$0 --help' for more information."
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
++ --he | --h)
++ # Conflict between --help and --header
++ { echo "$as_me: error: ambiguous option: $1
++Try \`$0 --help' for more information." >&2
++ { (exit 1); exit 1; }; };;
++ --help | --hel | -h )
++ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&5
+-echo "$as_me: error: unrecognized option: $1
+-Try \`$0 --help' for more information." >&2;}
++ -*) { echo "$as_me: error: unrecognized option: $1
++Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+- *) ac_config_targets="$ac_config_targets $1" ;;
++ *) ac_config_targets="$ac_config_targets $1"
++ ac_need_defaults=false ;;
+
+ esac
+ shift
+@@ -7754,31 +8242,45 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
+ if \$ac_cs_recheck; then
+- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
++ CONFIG_SHELL=$SHELL
++ export CONFIG_SHELL
++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ fi
+
+ _ACEOF
++cat >>$CONFIG_STATUS <<\_ACEOF
++exec 5>>config.log
++{
++ echo
++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
++## Running $as_me. ##
++_ASBOX
++ echo "$ac_log"
++} >&5
+
+-
+-
+-
++_ACEOF
++cat >>$CONFIG_STATUS <<_ACEOF
++_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
++
++# Handling of arguments.
+ for ac_config_target in $ac_config_targets
+ do
+- case "$ac_config_target" in
+- # Handling of arguments.
+- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+- "popt/.stamp-conf" ) CONFIG_FILES="$CONFIG_FILES popt/.stamp-conf" ;;
+- "lzo/.stamp-conf" ) CONFIG_FILES="$CONFIG_FILES lzo/.stamp-conf" ;;
+- "src/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
++ case $ac_config_target in
++ "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
++ "popt/.stamp-conf") CONFIG_FILES="$CONFIG_FILES popt/.stamp-conf" ;;
++ "lzo/.stamp-conf") CONFIG_FILES="$CONFIG_FILES lzo/.stamp-conf" ;;
++
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+ echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ done
+
++
+ # If the user did not use the arguments to specify the items to instantiate,
+ # then the envvar interface is used. Set only those that are not.
+ # We use the long form for the default assignment because of an extremely
+@@ -7789,569 +8291,525 @@ if $ac_need_defaults; then
+ fi
+
+ # Have a temporary directory for convenience. Make it in the build tree
+-# simply because there is no reason to put it here, and in addition,
++# simply because there is no reason against having it here, and in addition,
+ # creating and moving files from /tmp can sometimes cause problems.
+-# Create a temporary directory, and hook for its removal unless debugging.
++# Hook for its removal unless debugging.
++# Note that there is a small window in which the directory will not be cleaned:
++# after its creation but before its name has been assigned to `$tmp'.
+ $debug ||
+ {
+- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
++ tmp=
++ trap 'exit_status=$?
++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
++' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+ }
+-
+ # Create a (secure) tmp directory for tmp files.
+
+ {
+- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+ } ||
+ {
+- tmp=./confstat$$-$RANDOM
+- (umask 077 && mkdir $tmp)
++ tmp=./conf$$-$RANDOM
++ (umask 077 && mkdir "$tmp")
+ } ||
+ {
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+ }
+
+-_ACEOF
+-
+-cat >>$CONFIG_STATUS <<_ACEOF
+-
+ #
+-# CONFIG_FILES section.
++# Set up the sed scripts for CONFIG_FILES section.
+ #
+
+ # No need to generate the scripts if there are no CONFIG_FILES.
+ # This happens for instance when ./config.status config.h
+-if test -n "\$CONFIG_FILES"; then
+- # Protect against being on the right side of a sed subst in config.status.
+- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+-s,@SHELL@,$SHELL,;t t
+-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+-s,@exec_prefix@,$exec_prefix,;t t
+-s,@prefix@,$prefix,;t t
+-s,@program_transform_name@,$program_transform_name,;t t
+-s,@bindir@,$bindir,;t t
+-s,@sbindir@,$sbindir,;t t
+-s,@libexecdir@,$libexecdir,;t t
+-s,@datadir@,$datadir,;t t
+-s,@sysconfdir@,$sysconfdir,;t t
+-s,@sharedstatedir@,$sharedstatedir,;t t
+-s,@localstatedir@,$localstatedir,;t t
+-s,@libdir@,$libdir,;t t
+-s,@includedir@,$includedir,;t t
+-s,@oldincludedir@,$oldincludedir,;t t
+-s,@infodir@,$infodir,;t t
+-s,@mandir@,$mandir,;t t
+-s,@build_alias@,$build_alias,;t t
+-s,@host_alias@,$host_alias,;t t
+-s,@target_alias@,$target_alias,;t t
+-s,@DEFS@,$DEFS,;t t
+-s,@ECHO_C@,$ECHO_C,;t t
+-s,@ECHO_N@,$ECHO_N,;t t
+-s,@ECHO_T@,$ECHO_T,;t t
+-s,@LIBS@,$LIBS,;t t
+-s,@build@,$build,;t t
+-s,@build_cpu@,$build_cpu,;t t
+-s,@build_vendor@,$build_vendor,;t t
+-s,@build_os@,$build_os,;t t
+-s,@host@,$host,;t t
+-s,@host_cpu@,$host_cpu,;t t
+-s,@host_vendor@,$host_vendor,;t t
+-s,@host_os@,$host_os,;t t
+-s,@docdir@,$docdir,;t t
+-s,@CC@,$CC,;t t
+-s,@CFLAGS@,$CFLAGS,;t t
+-s,@LDFLAGS@,$LDFLAGS,;t t
+-s,@CPPFLAGS@,$CPPFLAGS,;t t
+-s,@ac_ct_CC@,$ac_ct_CC,;t t
+-s,@EXEEXT@,$EXEEXT,;t t
+-s,@OBJEXT@,$OBJEXT,;t t
+-s,@GNOME_PACKAGES@,$GNOME_PACKAGES,;t t
+-s,@GNOME_CFLAGS@,$GNOME_CFLAGS,;t t
+-s,@GNOME_LIBS@,$GNOME_LIBS,;t t
+-s,@INSTALL_GNOME@,$INSTALL_GNOME,;t t
+-s,@SET_MAKE@,$SET_MAKE,;t t
+-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+-s,@PYTHON@,$PYTHON,;t t
+-s,@CPP@,$CPP,;t t
+-s,@EGREP@,$EGREP,;t t
+-s,@BUILD_POPT@,$BUILD_POPT,;t t
+-s,@GNOME_BIN@,$GNOME_BIN,;t t
+-s,@LIBOBJS@,$LIBOBJS,;t t
+-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+-CEOF
+-
+-_ACEOF
+-
+- cat >>$CONFIG_STATUS <<\_ACEOF
+- # Split the substitutions into bite-sized pieces for seds with
+- # small command number limits, like on Digital OSF/1 and HP-UX.
+- ac_max_sed_lines=48
+- ac_sed_frag=1 # Number of current file.
+- ac_beg=1 # First line for current file.
+- ac_end=$ac_max_sed_lines # Line after last line for current file.
+- ac_more_lines=:
+- ac_sed_cmds=
+- while $ac_more_lines; do
+- if test $ac_beg -gt 1; then
+- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- else
+- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+- fi
+- if test ! -s $tmp/subs.frag; then
+- ac_more_lines=false
+- else
+- # The purpose of the label and of the branching condition is to
+- # speed up the sed processing (if there are no `@' at all, there
+- # is no need to browse any of the substitutions).
+- # These are the two extra sed commands mentioned above.
+- (echo ':t
+- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+- else
+- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+- fi
+- ac_sed_frag=`expr $ac_sed_frag + 1`
+- ac_beg=$ac_end
+- ac_end=`expr $ac_end + $ac_max_sed_lines`
+- fi
+- done
+- if test -z "$ac_sed_cmds"; then
+- ac_sed_cmds=cat
++if test -n "$CONFIG_FILES"; then
++
++_ACEOF
++
++
++
++ac_delim='%!_!# '
++for ac_last_try in false false false false false :; do
++ cat >conf$$subs.sed <<_ACEOF
++SHELL!$SHELL$ac_delim
++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
++PACKAGE_NAME!$PACKAGE_NAME$ac_delim
++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
++PACKAGE_STRING!$PACKAGE_STRING$ac_delim
++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
++exec_prefix!$exec_prefix$ac_delim
++prefix!$prefix$ac_delim
++program_transform_name!$program_transform_name$ac_delim
++bindir!$bindir$ac_delim
++sbindir!$sbindir$ac_delim
++libexecdir!$libexecdir$ac_delim
++datarootdir!$datarootdir$ac_delim
++datadir!$datadir$ac_delim
++sysconfdir!$sysconfdir$ac_delim
++sharedstatedir!$sharedstatedir$ac_delim
++localstatedir!$localstatedir$ac_delim
++includedir!$includedir$ac_delim
++oldincludedir!$oldincludedir$ac_delim
++docdir!$docdir$ac_delim
++infodir!$infodir$ac_delim
++htmldir!$htmldir$ac_delim
++dvidir!$dvidir$ac_delim
++pdfdir!$pdfdir$ac_delim
++psdir!$psdir$ac_delim
++libdir!$libdir$ac_delim
++localedir!$localedir$ac_delim
++mandir!$mandir$ac_delim
++DEFS!$DEFS$ac_delim
++ECHO_C!$ECHO_C$ac_delim
++ECHO_N!$ECHO_N$ac_delim
++ECHO_T!$ECHO_T$ac_delim
++LIBS!$LIBS$ac_delim
++build_alias!$build_alias$ac_delim
++host_alias!$host_alias$ac_delim
++target_alias!$target_alias$ac_delim
++build!$build$ac_delim
++build_cpu!$build_cpu$ac_delim
++build_vendor!$build_vendor$ac_delim
++build_os!$build_os$ac_delim
++host!$host$ac_delim
++host_cpu!$host_cpu$ac_delim
++host_vendor!$host_vendor$ac_delim
++host_os!$host_os$ac_delim
++CC!$CC$ac_delim
++CFLAGS!$CFLAGS$ac_delim
++LDFLAGS!$LDFLAGS$ac_delim
++CPPFLAGS!$CPPFLAGS$ac_delim
++ac_ct_CC!$ac_ct_CC$ac_delim
++EXEEXT!$EXEEXT$ac_delim
++OBJEXT!$OBJEXT$ac_delim
++GNOME_PACKAGES!$GNOME_PACKAGES$ac_delim
++GNOME_CFLAGS!$GNOME_CFLAGS$ac_delim
++GNOME_LIBS!$GNOME_LIBS$ac_delim
++INSTALL_GNOME!$INSTALL_GNOME$ac_delim
++SET_MAKE!$SET_MAKE$ac_delim
++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
++INSTALL_DATA!$INSTALL_DATA$ac_delim
++PYTHON!$PYTHON$ac_delim
++CPP!$CPP$ac_delim
++GREP!$GREP$ac_delim
++EGREP!$EGREP$ac_delim
++PKG_CONFIG!$PKG_CONFIG$ac_delim
++AVAHI_CFLAGS!$AVAHI_CFLAGS$ac_delim
++AVAHI_LIBS!$AVAHI_LIBS$ac_delim
++ZEROCONF_DISTCC_OBJS!$ZEROCONF_DISTCC_OBJS$ac_delim
++ZEROCONF_DISTCCD_OBJS!$ZEROCONF_DISTCCD_OBJS$ac_delim
++BUILD_POPT!$BUILD_POPT$ac_delim
++GNOME_BIN!$GNOME_BIN$ac_delim
++LIBOBJS!$LIBOBJS$ac_delim
++LTLIBOBJS!$LTLIBOBJS$ac_delim
++_ACEOF
++
++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 73; then
++ break
++ elif $ac_last_try; then
++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+-fi # test -n "$CONFIG_FILES"
++done
++
++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
++if test -n "$ac_eof"; then
++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
++ ac_eof=`expr $ac_eof + 1`
++fi
+
++cat >>$CONFIG_STATUS <<_ACEOF
++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+ _ACEOF
++sed '
++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
++s/^/s,@/; s/!/@,|#_!!_#|/
++:n
++t n
++s/'"$ac_delim"'$/,g/; t
++s/$/\\/; p
++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
++' >>$CONFIG_STATUS <conf$$subs.sed
++rm -f conf$$subs.sed
++cat >>$CONFIG_STATUS <<_ACEOF
++:end
++s/|#_!!_#|//g
++CEOF$ac_eof
++_ACEOF
++
++
++# VPATH may cause trouble with some makes, so we remove $(srcdir),
++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
++# trailing colons and then remove the whole line if VPATH becomes empty
++# (actually we leave an empty line to preserve line numbers).
++if test "x$srcdir" = x.; then
++ ac_vpsub='/^[ ]*VPATH[ ]*=/{
++s/:*\$(srcdir):*/:/
++s/:*\${srcdir}:*/:/
++s/:*@srcdir@:*/:/
++s/^\([^=]*=[ ]*\):*/\1/
++s/:*$//
++s/^[^=]*=[ ]*$//
++}'
++fi
++
+ cat >>$CONFIG_STATUS <<\_ACEOF
+-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+- case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++fi # test -n "$CONFIG_FILES"
++
++
++for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS
++do
++ case $ac_tag in
++ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
++ case $ac_mode$ac_tag in
++ :[FHL]*:*);;
++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
++echo "$as_me: error: Invalid tag $ac_tag." >&2;}
++ { (exit 1); exit 1; }; };;
++ :[FH]-) ac_tag=-:-;;
++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
++ esac
++ ac_save_IFS=$IFS
++ IFS=:
++ set x $ac_tag
++ IFS=$ac_save_IFS
++ shift
++ ac_file=$1
++ shift
++
++ case $ac_mode in
++ :L) ac_source=$1;;
++ :[FH])
++ ac_file_inputs=
++ for ac_f
++ do
++ case $ac_f in
++ -) ac_f="$tmp/stdin";;
++ *) # Look for the file first in the build tree, then in the source tree
++ # (if the path is not absolute). The absolute path cannot be DOS-style,
++ # because $ac_f cannot contain `:'.
++ test -f "$ac_f" ||
++ case $ac_f in
++ [\\/$]*) false;;
++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
++ esac ||
++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
++echo "$as_me: error: cannot find input file: $ac_f" >&2;}
++ { (exit 1); exit 1; }; };;
++ esac
++ ac_file_inputs="$ac_file_inputs $ac_f"
++ done
+
+- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
++ # Let's still pretend it is `configure' which instantiates (i.e., don't
++ # use $as_me), people would be surprised to read:
++ # /* config.h. Generated by config.status. */
++ configure_input="Generated from "`IFS=:
++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
++ if test x"$ac_file" != x-; then
++ configure_input="$ac_file. $configure_input"
++ { echo "$as_me:$LINENO: creating $ac_file" >&5
++echo "$as_me: creating $ac_file" >&6;}
++ fi
++
++ case $ac_tag in
++ *:-:* | *:-) cat >"$tmp/stdin";;
++ esac
++ ;;
++ esac
++
++ ac_dir=`$as_dirname -- "$ac_file" ||
+ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ { as_dir="$ac_dir"
++ case $as_dir in #(
++ -*) as_dir=./$as_dir;;
++ esac
++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
++ while :; do
++ case $as_dir in #(
++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
++ *) as_qdir=$as_dir;;
++ esac
++ as_dirs="'$as_qdir' $as_dirs"
++ as_dir=`$as_dirname -- "$as_dir" ||
+ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'`
++ test -d "$as_dir" && break
+ done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
++ test -z "$as_dirs" || eval "mkdir $as_dirs"
++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
++echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+-
+ ac_builddir=.
+
+-if test "$ac_dir" != .; then
++case "$ac_dir" in
++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
++*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+- # A "../" for each directory in $ac_dir_suffix.
+- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+-else
+- ac_dir_suffix= ac_top_builddir=
+-fi
++ # A ".." for each directory in $ac_dir_suffix.
++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
++ case $ac_top_builddir_sub in
++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
++ esac ;;
++esac
++ac_abs_top_builddir=$ac_pwd
++ac_abs_builddir=$ac_pwd$ac_dir_suffix
++# for backward compatibility:
++ac_top_builddir=$ac_top_build_prefix
+
+ case $srcdir in
+- .) # No --srcdir option. We are building in place.
++ .) # We are building in place.
+ ac_srcdir=.
+- if test -z "$ac_top_builddir"; then
+- ac_top_srcdir=.
+- else
+- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+- fi ;;
+- [\\/]* | ?:[\\/]* ) # Absolute path.
++ ac_top_srcdir=$ac_top_builddir_sub
++ ac_abs_top_srcdir=$ac_pwd ;;
++ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+- ac_top_srcdir=$srcdir ;;
+- *) # Relative path.
+- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+- ac_top_srcdir=$ac_top_builddir$srcdir ;;
++ ac_top_srcdir=$srcdir
++ ac_abs_top_srcdir=$srcdir ;;
++ *) # Relative name.
++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
++ ac_top_srcdir=$ac_top_build_prefix$srcdir
++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+ esac
++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+-# Do not use `cd foo && pwd` to compute absolute paths, because
+-# the directories may not exist.
+-case `pwd` in
+-.) ac_abs_builddir="$ac_dir";;
+-*)
+- case "$ac_dir" in
+- .) ac_abs_builddir=`pwd`;;
+- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+- *) ac_abs_builddir=`pwd`/"$ac_dir";;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_builddir=${ac_top_builddir}.;;
+-*)
+- case ${ac_top_builddir}. in
+- .) ac_abs_top_builddir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_srcdir=$ac_srcdir;;
+-*)
+- case $ac_srcdir in
+- .) ac_abs_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+- esac;;
+-esac
+-case $ac_abs_builddir in
+-.) ac_abs_top_srcdir=$ac_top_srcdir;;
+-*)
+- case $ac_top_srcdir in
+- .) ac_abs_top_srcdir=$ac_abs_builddir;;
+- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+- esac;;
+-esac
+
++ case $ac_mode in
++ :F)
++ #
++ # CONFIG_FILE
++ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
++_ACEOF
+
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- configure_input=
+- else
+- configure_input="$ac_file. "
+- fi
+- configure_input=$configure_input"Generated from `echo $ac_file_in |
+- sed 's,.*/,,'` by configure."
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+-
+- if test x"$ac_file" != x-; then
+- { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+- rm -f "$ac_file"
+- fi
++cat >>$CONFIG_STATUS <<\_ACEOF
++# If the template does not know about datarootdir, expand it.
++# FIXME: This hack should be removed a few years after 2.60.
++ac_datarootdir_hack=; ac_datarootdir_seen=
++
++case `sed -n '/datarootdir/ {
++ p
++ q
++}
++/@datadir@/p
++/@docdir@/p
++/@infodir@/p
++/@localedir@/p
++/@mandir@/p
++' $ac_file_inputs` in
++*datarootdir*) ac_datarootdir_seen=yes;;
++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF
++ ac_datarootdir_hack='
++ s&@datadir@&$datadir&g
++ s&@docdir@&$docdir&g
++ s&@infodir@&$infodir&g
++ s&@localedir@&$localedir&g
++ s&@mandir@&$mandir&g
++ s&\\\${datarootdir}&$datarootdir&g' ;;
++esac
++_ACEOF
++
++# Neutralize VPATH when `$srcdir' = `.'.
++# Shell code in configure.ac might set extrasub.
++# FIXME: do we really want to maintain this feature?
++cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+ $extrasub
+ _ACEOF
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ :t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+-s,@configure_input@,$configure_input,;t t
+-s,@srcdir@,$ac_srcdir,;t t
+-s,@abs_srcdir@,$ac_abs_srcdir,;t t
+-s,@top_srcdir@,$ac_top_srcdir,;t t
+-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+-s,@builddir@,$ac_builddir,;t t
+-s,@abs_builddir@,$ac_abs_builddir,;t t
+-s,@top_builddir@,$ac_top_builddir,;t t
+-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+-s,@INSTALL@,$ac_INSTALL,;t t
+-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+- rm -f $tmp/stdin
+- if test x"$ac_file" != x-; then
+- mv $tmp/out $ac_file
+- else
+- cat $tmp/out
+- rm -f $tmp/out
+- fi
+-
+-done
+-_ACEOF
+-cat >>$CONFIG_STATUS <<\_ACEOF
+-
+-#
+-# CONFIG_HEADER section.
+-#
+-
+-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+-# NAME is the cpp macro being defined and VALUE is the value it is being given.
+-#
+-# ac_d sets the value in "#define NAME VALUE" lines.
+-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+-ac_dB='[ ].*$,\1#\2'
+-ac_dC=' '
+-ac_dD=',;t'
+-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+-ac_uB='$,\1#\2define\3'
+-ac_uC=' '
+-ac_uD=',;t'
++s&@configure_input@&$configure_input&;t t
++s&@top_builddir@&$ac_top_builddir_sub&;t t
++s&@srcdir@&$ac_srcdir&;t t
++s&@abs_srcdir@&$ac_abs_srcdir&;t t
++s&@top_srcdir@&$ac_top_srcdir&;t t
++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
++s&@builddir@&$ac_builddir&;t t
++s&@abs_builddir@&$ac_abs_builddir&;t t
++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
++s&@INSTALL@&$ac_INSTALL&;t t
++$ac_datarootdir_hack
++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
++
++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&5
++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
++which seems to be undefined. Please make sure it is defined." >&2;}
+
+-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
++ rm -f "$tmp/stdin"
+ case $ac_file in
+- - | *:- | *:-:* ) # input from stdin
+- cat >$tmp/stdin
+- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+- * ) ac_file_in=$ac_file.in ;;
++ -) cat "$tmp/out"; rm -f "$tmp/out";;
++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
++ ;;
++ :H)
++ #
++ # CONFIG_HEADER
++ #
++_ACEOF
++
++# Transform confdefs.h into a sed script `conftest.defines', that
++# substitutes the proper values into config.h.in to produce config.h.
++rm -f conftest.defines conftest.tail
++# First, append a space to every undef/define line, to ease matching.
++echo 's/$/ /' >conftest.defines
++# Then, protect against being on the right side of a sed subst, or in
++# an unquoted here document, in config.status. If some macros were
++# called several times there might be several #defines for the same
++# symbol, which is useless. But do not sort them, since the last
++# AC_DEFINE must be honored.
++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
++# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
++# NAME is the cpp macro being defined, VALUE is the value it is being given.
++# PARAMS is the parameter list in the macro definition--in most cases, it's
++# just an empty string.
++ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
++ac_dB='\\)[ (].*,\\1define\\2'
++ac_dC=' '
++ac_dD=' ,'
+
+- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+-echo "$as_me: creating $ac_file" >&6;}
+-
+- # First look for the input files in the build tree, otherwise in the
+- # src tree.
+- ac_file_inputs=`IFS=:
+- for f in $ac_file_in; do
+- case $f in
+- -) echo $tmp/stdin ;;
+- [\\/$]*)
+- # Absolute (can't be DOS-style, as IFS=:)
+- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- # Do quote $f, to prevent DOS paths from being IFS'd.
+- echo "$f";;
+- *) # Relative
+- if test -f "$f"; then
+- # Build tree
+- echo "$f"
+- elif test -f "$srcdir/$f"; then
+- # Source tree
+- echo "$srcdir/$f"
+- else
+- # /dev/null tree
+- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+-echo "$as_me: error: cannot find input file: $f" >&2;}
+- { (exit 1); exit 1; }; }
+- fi;;
+- esac
+- done` || { (exit 1); exit 1; }
+- # Remove the trailing spaces.
+- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+-
+-_ACEOF
+-
+-# Transform confdefs.h into two sed scripts, `conftest.defines' and
+-# `conftest.undefs', that substitutes the proper values into
+-# config.h.in to produce config.h. The first handles `#define'
+-# templates, and the second `#undef' templates.
+-# And first: Protect against being on the right side of a sed subst in
+-# config.status. Protect against being in an unquoted here document
+-# in config.status.
+-rm -f conftest.defines conftest.undefs
+-# Using a here document instead of a string reduces the quoting nightmare.
+-# Putting comments in sed scripts is not portable.
+-#
+-# `end' is used to avoid that the second main sed command (meant for
+-# 0-ary CPP macros) applies to n-ary macro definitions.
+-# See the Autoconf documentation for `clear'.
+-cat >confdef2sed.sed <<\_ACEOF
+-s/[\\&,]/\\&/g
+-s,[\\$`],\\&,g
+-t clear
+-: clear
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+-t end
+-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+-: end
+-_ACEOF
+-# If some macros were called several times there might be several times
+-# the same #defines, which is useless. Nevertheless, we may not want to
+-# sort them, since we want the *last* AC-DEFINE to be honored.
+-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+-rm -f confdef2sed.sed
++uniq confdefs.h |
++ sed -n '
++ t rset
++ :rset
++ s/^[ ]*#[ ]*define[ ][ ]*//
++ t ok
++ d
++ :ok
++ s/[\\&,]/\\&/g
++ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
++ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
++ ' >>conftest.defines
+
+-# This sed command replaces #undef with comments. This is necessary, for
++# Remove the space that was appended to ease matching.
++# Then replace #undef with comments. This is necessary, for
+ # example, in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+-cat >>conftest.undefs <<\_ACEOF
+-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
++# (The regexp can be short, since the line contains either #define or #undef.)
++echo 's/ $//
++s,^[ #]*u.*,/* & */,' >>conftest.defines
++
++# Break up conftest.defines:
++ac_max_sed_lines=50
++
++# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
++# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
++# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
++# et cetera.
++ac_in='$ac_file_inputs'
++ac_out='"$tmp/out1"'
++ac_nxt='"$tmp/out2"'
++
++while :
++do
++ # Write a here document:
++ cat >>$CONFIG_STATUS <<_ACEOF
++ # First, check the format of the line:
++ cat >"\$tmp/defines.sed" <<\\CEOF
++/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
++/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
++b
++:def
+ _ACEOF
+-
+-# Break up conftest.defines because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+-echo ' :' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.defines >/dev/null
+-do
+- # Write a limited-size here document to $tmp/defines.sed.
+- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#define' lines.
+- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
++ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+- sed -f $tmp/defines.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
++ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
++ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
++ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
++ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+ done
+-rm -f conftest.defines
+-echo ' fi # grep' >>$CONFIG_STATUS
+-echo >>$CONFIG_STATUS
+-
+-# Break up conftest.undefs because some shells have a limit on the size
+-# of here documents, and old seds have small limits too (100 cmds).
+-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+-rm -f conftest.tail
+-while grep . conftest.undefs >/dev/null
+-do
+- # Write a limited-size here document to $tmp/undefs.sed.
+- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+- # Speed up: don't consider the non `#undef'
+- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+- # Work around the forget-to-reset-the-flag bug.
+- echo 't clr' >>$CONFIG_STATUS
+- echo ': clr' >>$CONFIG_STATUS
+- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+- echo 'CEOF
+- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+- rm -f $tmp/in
+- mv $tmp/out $tmp/in
+-' >>$CONFIG_STATUS
+- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+- rm -f conftest.undefs
+- mv conftest.tail conftest.undefs
+-done
+-rm -f conftest.undefs
++rm -f conftest.defines conftest.tail
+
++echo "ac_result=$ac_in" >>$CONFIG_STATUS
+ cat >>$CONFIG_STATUS <<\_ACEOF
+- # Let's still pretend it is `configure' which instantiates (i.e., don't
+- # use $as_me), people would be surprised to read:
+- # /* config.h. Generated by config.status. */
+- if test x"$ac_file" = x-; then
+- echo "/* Generated by configure. */" >$tmp/config.h
+- else
+- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+- fi
+- cat $tmp/in >>$tmp/config.h
+- rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
++ echo "/* $configure_input */" >"$tmp/config.h"
++ cat "$ac_result" >>"$tmp/config.h"
++ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+ echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$ac_file" : 'X\(//\)[^/]' \| \
+- X"$ac_file" : 'X\(//\)$' \| \
+- X"$ac_file" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$ac_file" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- { if $as_mkdir_p; then
+- mkdir -p "$ac_dir"
+- else
+- as_dir="$ac_dir"
+- as_dirs=
+- while test ! -d "$as_dir"; do
+- as_dirs="$as_dir $as_dirs"
+- as_dir=`(dirname "$as_dir") 2>/dev/null ||
+-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+- X"$as_dir" : 'X\(//\)[^/]' \| \
+- X"$as_dir" : 'X\(//\)$' \| \
+- X"$as_dir" : 'X\(/\)' \| \
+- . : '\(.\)' 2>/dev/null ||
+-echo X"$as_dir" |
+- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+- /^X\(\/\/\)$/{ s//\1/; q; }
+- /^X\(\/\).*/{ s//\1/; q; }
+- s/.*/./; q'`
+- done
+- test ! -n "$as_dirs" || mkdir $as_dirs
+- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+- { (exit 1); exit 1; }; }; }
+-
+ rm -f $ac_file
+- mv $tmp/config.h $ac_file
++ mv "$tmp/config.h" $ac_file
+ fi
+ else
+- cat $tmp/config.h
+- rm -f $tmp/config.h
++ echo "/* $configure_input */"
++ cat "$ac_result"
+ fi
+-done
+-_ACEOF
++ rm -f "$tmp/out12"
++ ;;
++
++
++ esac
++
++done # for ac_tag
+
+-cat >>$CONFIG_STATUS <<\_ACEOF
+
+ { (exit 0); exit 0; }
+ _ACEOF
+--- distcc-2.18.3/Makefile.in 2004-10-24 07:05:48.000000000 +0200
++++ distcc-2.18.3.lennart/Makefile.in 2007-12-30 16:05:58.000000000 +0100
+@@ -180,6 +180,7 @@ distcc_obj = src/backoff.o \
+ src/ssh.o src/state.o src/strip.o \
+ src/timefile.o src/traceenv.o \
+ src/where.o \
++ @ZEROCONF_DISTCC_OBJS@ \
+ $(common_obj)
+
+ distccd_obj = src/access.o \
+@@ -187,6 +188,7 @@ distccd_obj = src/access.o \
+ src/ncpus.o \
+ src/prefork.o \
+ src/serve.o src/setuid.o src/srvnet.o src/srvrpc.o src/state.o \
++ @ZEROCONF_DISTCCD_OBJS@ \
+ $(common_obj) @BUILD_POPT@
+
+ # Objects that need to be linked in to build monitors
+@@ -257,7 +259,7 @@ HEADERS = src/access.h \
+ src/util.h \
+ src/exec.h src/lock.h src/where.h src/srvnet.h
+
+-man1_MEN = man/distcc.1 man/distccd.1 man/distccmon-text.1
++man1_MEN = man/distcc.1 man/distccd.1 man/distccmon-text.1 man/distccmon-gnome.1
+ man_HTML = man/distcc_1.html man/distccd_1.html man/distccmon_text_1.html
+ MEN = $(man1_MEN)
+
+--- distcc-2.18.3/src/distcc.c 2004-10-02 02:47:07.000000000 +0200
++++ distcc-2.18.3.lennart/src/distcc.c 2007-12-30 13:55:27.000000000 +0100
+@@ -83,6 +83,9 @@ static void dcc_show_usage(void)
+ " COMPILER defaults to \"cc\"\n"
+ " --help explain usage and exit\n"
+ " --version show version and exit\n"
++" --show-hosts show host list and exit\n"
++" -j calculate the concurrency level from\n"
++" the host list.\n"
+ "\n"
+ "Environment variables:\n"
+ " See the manual page for a complete list.\n"
+@@ -135,7 +138,46 @@ static void dcc_client_catch_signals(voi
+ signal(SIGHUP, &dcc_client_signalled);
+ }
+
++static void dcc_free_hostlist(struct dcc_hostdef *list) {
++ while (list) {
++ struct dcc_hostdef *l = list;
++ list = list->next;
++ dcc_free_hostdef(l);
++ }
++}
++
++static void dcc_show_hosts(void) {
++ struct dcc_hostdef *list, *l;
++ int nhosts;
++
++ if (dcc_get_hostlist(&list, &nhosts) != 0) {
++ rs_log_crit("Failed to get host list");
++ return;
++ }
++
++ for (l = list; l; l = l->next)
++ printf("%s\n", l->hostdef_string);
++
++ dcc_free_hostlist(list);
++}
++
++static void dcc_concurrency_level(void) {
++ struct dcc_hostdef *list, *l;
++ int nhosts;
++ int nslots = 0;
++
++ if (dcc_get_hostlist(&list, &nhosts) != 0) {
++ rs_log_crit("Failed to get host list");
++ return;
++ }
++
++ for (l = list; l; l = l->next)
++ nslots += l->n_slots;
+
++ dcc_free_hostlist(list);
++
++ printf("%i\n", nslots);
++}
+
+ /**
+ * distcc client entry point.
+@@ -182,6 +224,18 @@ int main(int argc, char **argv)
+ ret = 0;
+ goto out;
+ }
++
++ if (!strcmp(argv[1], "--show-hosts")) {
++ dcc_show_hosts();
++ ret = 0;
++ goto out;
++ }
++
++ if (!strcmp(argv[1], "-j")) {
++ dcc_concurrency_level();
++ ret = 0;
++ goto out;
++ }
+
+ dcc_find_compiler(argv, &compiler_args);
+ /* compiler_args is now respectively either "cc -c hello.c" or
+--- distcc-2.18.3/src/distcc.h 2004-11-21 19:36:30.000000000 +0100
++++ distcc-2.18.3.lennart/src/distcc.h 2007-12-30 13:55:27.000000000 +0100
+@@ -112,7 +112,7 @@ int dcc_parse_hosts_env(struct dcc_hostd
+ int *ret_nhosts);
+ int dcc_parse_hosts(const char *where, const char *source_name,
+ struct dcc_hostdef **ret_list,
+- int *ret_nhosts);
++ int *ret_nhosts, struct dcc_hostdef **ret_prev);
+
+ /* ncpu.c */
+ int dcc_ncpus(int *);
+@@ -226,6 +226,7 @@ int dcc_get_tempdir(const char **);
+ int dcc_make_tmpnam(const char *, const char *suffix, char **);
+
+ int dcc_mkdir(const char *path) WARN_UNUSED;
++int dcc_get_subdir(const char *name, char **path_ret) WARN_UNUSED;
+ int dcc_get_lock_dir(char **path_ret) WARN_UNUSED;
+ int dcc_get_state_dir(char **path_ret) WARN_UNUSED;
+ int dcc_get_top_dir(char **path_ret) WARN_UNUSED;
+--- distcc-2.18.3/src/dopt.c 2004-10-24 07:05:48.000000000 +0200
++++ distcc-2.18.3.lennart/src/dopt.c 2007-12-30 13:55:27.000000000 +0100
+@@ -93,6 +93,10 @@ enum {
+ opt_log_level
+ };
+
++#ifdef HAVE_AVAHI
++/* Flag for enabling/disabling Zeroconf using Avahi */
++int opt_zeroconf = 0;
++#endif
+
+ const struct poptOption options[] = {
+ { "allow", 'a', POPT_ARG_STRING, 0, 'a', 0, 0 },
+@@ -115,6 +119,9 @@ const struct poptOption options[] = {
+ { "verbose", 0, POPT_ARG_NONE, 0, 'v', 0, 0 },
+ { "version", 0, POPT_ARG_NONE, 0, 'V', 0, 0 },
+ { "wizard", 'W', POPT_ARG_NONE, 0, 'W', 0, 0 },
++#ifdef HAVE_AVAHI
++ { "zeroconf", 0, POPT_ARG_NONE, &opt_zeroconf, 0, 0, 0 },
++#endif
+ { 0, 0, 0, 0, 0, 0, 0 }
+ };
+
+@@ -137,6 +144,9 @@ static void distccd_show_usage(void)
+ " -p, --port PORT TCP port to listen on\n"
+ " --listen ADDRESS IP address to listen on\n"
+ " -a, --allow IP[/BITS] client address access control\n"
++#ifdef HAVE_AVAHI
++" --zeroconf register via mDNS/DNS-SD\n"
++#endif
+ " Debug and trace:\n"
+ " --log-level=LEVEL set detail level for log file\n"
+ " levels: critical, error, warning, notice, info, debug\n"
+--- distcc-2.18.3/src/dopt.h 2004-07-30 03:12:13.000000000 +0200
++++ distcc-2.18.3.lennart/src/dopt.h 2007-12-30 13:55:27.000000000 +0100
+@@ -38,3 +38,7 @@ extern int opt_log_stderr;
+ extern int opt_lifetime;
+ extern char *opt_listen_addr;
+ extern int opt_niceness;
++
++#ifdef HAVE_AVAHI
++extern int opt_zeroconf;
++#endif
+--- distcc-2.18.3/src/dparent.c 2004-10-24 07:05:48.000000000 +0200
++++ distcc-2.18.3.lennart/src/dparent.c 2007-12-30 13:55:27.000000000 +0100
+@@ -70,6 +70,7 @@
+ #include "types.h"
+ #include "daemon.h"
+ #include "netutil.h"
++#include "zeroconf.h"
+
+ static void dcc_nofork_parent(int listen_fd) NORETURN;
+ static void dcc_detach(void);
+@@ -94,6 +95,9 @@ int dcc_standalone_server(void)
+ int listen_fd;
+ int n_cpus;
+ int ret;
++#ifdef HAVE_AVAHI
++ void *avahi = NULL;
++#endif
+
+ if ((ret = dcc_socket_listen(arg_port, &listen_fd, opt_listen_addr)) != 0)
+ return ret;
+@@ -131,6 +135,14 @@ int dcc_standalone_server(void)
+ /* Don't catch signals until we've detached or created a process group. */
+ dcc_daemon_catch_signals();
+
++#ifdef HAVE_AVAHI
++ /* Zeroconf registration */
++ if (opt_zeroconf) {
++ if (!(avahi = dcc_zeroconf_register((uint16_t) arg_port, n_cpus)))
++ return EXIT_CONNECT_FAILED;
++ }
++#endif
++
+ /* This is called in the master daemon, whether that is detached or
+ * not. */
+ dcc_master_pid = getpid();
+@@ -138,10 +150,21 @@ int dcc_standalone_server(void)
+ if (opt_no_fork) {
+ dcc_log_daemon_started("non-forking daemon");
+ dcc_nofork_parent(listen_fd);
++ ret = 0;
+ } else {
+ dcc_log_daemon_started("preforking daemon");
+- return dcc_preforking_parent(listen_fd);
++ ret = dcc_preforking_parent(listen_fd);
+ }
++
++#ifdef HAVE_AVAHI
++ /* Remove zeroconf registration */
++ if (opt_zeroconf) {
++ if (dcc_zeroconf_unregister(avahi) != 0)
++ return EXIT_CONNECT_FAILED;
++ }
++#endif
++
++ return ret;
+ }
+
+
+--- distcc-2.18.3/src/tempfile.c 2004-07-30 03:12:14.000000000 +0200
++++ distcc-2.18.3.lennart/src/tempfile.c 2007-12-30 13:55:27.000000000 +0100
+@@ -161,7 +161,7 @@ int dcc_get_top_dir(char **path_ret)
+ * Return a subdirectory of the DISTCC_DIR of the given name, making
+ * sure that the directory exists.
+ **/
+-static int dcc_get_subdir(const char *name,
++int dcc_get_subdir(const char *name,
+ char **dir_ret)
+ {
+ int ret;
+--- distcc-2.18.3/src/zeroconf.c 1970-01-01 01:00:00.000000000 +0100
++++ distcc-2.18.3.lennart/src/zeroconf.c 2007-12-30 15:13:05.000000000 +0100
+@@ -0,0 +1,616 @@
++#include "config.h"
++
++#include <assert.h>
++#include <stdio.h>
++#include <sys/select.h>
++#include <signal.h>
++#include <sys/file.h>
++#include <sys/time.h>
++#include <time.h>
++#include <sys/stat.h>
++#include <string.h>
++#include <errno.h>
++#include <unistd.h>
++#include <stdlib.h>
++#include <limits.h>
++
++#include <avahi-common/domain.h>
++#include <avahi-common/error.h>
++#include <avahi-common/malloc.h>
++#include <avahi-common/address.h>
++#include <avahi-common/simple-watch.h>
++#include <avahi-client/lookup.h>
++
++#include "distcc.h"
++#include "hosts.h"
++#include "zeroconf.h"
++#include "trace.h"
++#include "exitcode.h"
++
++/* How long shall the background daemon be idle before i terminates itself? */
++#define MAX_IDLE_TIME 20
++
++/* Maxium size of host file to load */
++#define MAX_FILE_SIZE (1024*100)
++
++/* General daemon data */
++struct daemon_data {
++ struct host *hosts;
++ int fd;
++ int n_slots;
++
++ AvahiClient *client;
++ AvahiServiceBrowser *browser;
++ AvahiSimplePoll *simple_poll;
++};
++
++/* Zeroconf service wrapper */
++struct host {
++ struct daemon_data *daemon_data;
++ struct host *next;
++
++ AvahiIfIndex interface;
++ AvahiProtocol protocol;
++ char *service;
++ char *domain;
++
++ AvahiAddress address;
++ uint16_t port;
++ int n_cpus;
++
++ AvahiServiceResolver *resolver;
++};
++
++/* A generic, system independant lock routine, similar to sys_lock,
++ * but more powerful:
++ * rw: if non-zero: r/w lock instead of r/o lock
++ * enable: lock or unlock
++ * block: block when locking */
++static int generic_lock(int fd, int rw, int enable, int block) {
++#if defined(F_SETLK)
++ struct flock lockparam;
++
++ lockparam.l_type = enable ? (rw ? F_WRLCK : F_RDLCK) : F_UNLCK;
++ lockparam.l_whence = SEEK_SET;
++ lockparam.l_start = 0;
++ lockparam.l_len = 0; /* whole file */
++
++ return fcntl(fd, block ? F_SETLKW : F_SETLK, &lockparam);
++#elif defined(HAVE_FLOCK)
++ return flock(fd, (enable ? (rw ? LOCK_EX : LOCK_SH) : LOCK_UN) | (block ? LOCK_NB : 0));
++#elif defined(HAVE_LOCKF)
++ return lockf(fd, (enable ? (block ? F_LOCK : F_TLOCK) : F_ULOCK));
++#else
++# error "No supported lock method. Please port this code."
++#endif
++}
++
++/* Return the number of seconds, when the specified file was last
++ * read. If the atime of that file is < clip_time, use clip_time
++ * instead */
++static time_t fd_last_used(int fd, time_t clip_time) {
++ struct stat st;
++ time_t now, ft;
++ assert(fd >= 0);
++
++ if (fstat(fd, &st) < 0) {
++ rs_log_crit("fstat() failed: %s\n", strerror(errno));
++ return -1;
++ }
++
++ if ((now = time(NULL)) == (time_t) -1) {
++ rs_log_crit("time() failed: %s\n", strerror(errno));
++ return -1;
++ }
++
++ ft = clip_time ? (st.st_atime < clip_time ? clip_time : st.st_atime) : st.st_atime;
++ assert(ft <= now);
++
++ return now - ft;
++}
++
++/* Write host data to host file */
++static int write_hosts(struct daemon_data *d) {
++ struct host *h;
++ int r = 0;
++ assert(d);
++
++ rs_log_info("writing zeroconf data.\n");
++
++ if (generic_lock(d->fd, 1, 1, 1) < 0) {
++ rs_log_crit("lock failed: %s\n", strerror(errno));
++ return -1;
++ }
++
++ if (lseek(d->fd, 0, SEEK_SET) < 0) {
++ rs_log_crit("lseek() failed: %s\n", strerror(errno));
++ return -1;
++ }
++
++ if (ftruncate(d->fd, 0) < 0) {
++ rs_log_crit("ftruncate() failed: %s\n", strerror(errno));
++ return -1;
++ }
++
++ for (h = d->hosts; h; h = h->next) {
++ char t[256], a[AVAHI_ADDRESS_STR_MAX];
++
++ if (h->resolver)
++ /* Not yet fully resolved */
++ continue;
++
++ snprintf(t, sizeof(t), "%s:%u/%i\n", avahi_address_snprint(a, sizeof(a), &h->address), h->port, d->n_slots * h->n_cpus);
++
++ if (dcc_writex(d->fd, t, strlen(t)) != 0) {
++ rs_log_crit("write() failed: %s\n", strerror(errno));
++ goto finish;
++ }
++ }
++
++ r = 0;
++
++finish:
++
++ generic_lock(d->fd, 1, 0, 1);
++ return r;
++
++};
++
++/* Free host data */
++static void free_host(struct host *h) {
++ assert(h);
++
++ if (h->resolver)
++ avahi_service_resolver_free(h->resolver);
++
++ free(h->service);
++ free(h->domain);
++ free(h);
++}
++
++/* Remove a service from the host list */
++static void remove_service(struct daemon_data *d, AvahiIfIndex interface, AvahiProtocol protocol, const char *name, const char *domain) {
++ struct host *h, *p = NULL;
++ assert(d);
++
++ for (h = d->hosts; h; h = h->next) {
++ if (h->interface == interface &&
++ h->protocol == protocol &&
++ !strcmp(h->service, name) &&
++ avahi_domain_equal(h->domain, domain)) {
++
++ if (p)
++ p->next = h->next;
++ else
++ d->hosts = h->next;
++
++ free_host(h);
++
++ break;
++ } else
++ p = h;
++ }
++}
++
++/* Called when a resolve call completes */
++static void resolve_reply(
++ AvahiServiceResolver *UNUSED(r),
++ AvahiIfIndex UNUSED(interface),
++ AvahiProtocol UNUSED(protocol),
++ AvahiResolverEvent event,
++ const char *name,
++ const char *UNUSED(type),
++ const char *UNUSED(domain),
++ const char *UNUSED(host_name),
++ const AvahiAddress *a,
++ uint16_t port,
++ AvahiStringList *txt,
++ AvahiLookupResultFlags UNUSED(flags),
++ void *userdata) {
++
++ struct host *h = userdata;
++
++ switch (event) {
++
++ case AVAHI_RESOLVER_FOUND: {
++ AvahiStringList *i;
++
++ /* Look for the number of CPUs in TXT RRs */
++ for (i = txt; i; i = i->next) {
++ char *key, *value;
++
++ if (avahi_string_list_get_pair(i, &key, &value, NULL) < 0)
++ continue;
++
++ if (!strcmp(key, "cpus"))
++ if ((h->n_cpus = atoi(value)) <= 0)
++ h->n_cpus = 1;
++
++ avahi_free(key);
++ avahi_free(value);
++ }
++
++ h->address = *a;
++ h->port = port;
++
++ avahi_service_resolver_free(h->resolver);
++ h->resolver = NULL;
++
++ /* Write modified hosts file */
++ write_hosts(h->daemon_data);
++
++ break;
++ }
++
++ case AVAHI_RESOLVER_FAILURE:
++
++ rs_log_warning("Failed to resolve service '%s': %s\n", name,
++ avahi_strerror(avahi_client_errno(h->daemon_data->client)));
++
++ free_host(h);
++ break;
++ }
++
++}
++
++/* Called whenever a new service is found or removed */
++static void browse_reply(
++ AvahiServiceBrowser *UNUSED(b),
++ AvahiIfIndex interface,
++ AvahiProtocol protocol,
++ AvahiBrowserEvent event,
++ const char *name,
++ const char *type,
++ const char *domain,
++ AvahiLookupResultFlags UNUSED(flags),
++ void *userdata) {
++
++ struct daemon_data *d = userdata;
++ assert(d);
++
++ switch (event) {
++ case AVAHI_BROWSER_NEW: {
++ struct host *h;
++
++ h = malloc(sizeof(struct host));
++ assert(h);
++
++ rs_log_info("new service: %s\n", name);
++
++ if (!(h->resolver = avahi_service_resolver_new(d->client,
++ interface,
++ protocol,
++ name,
++ type,
++ domain,
++ AVAHI_PROTO_UNSPEC,
++ 0,
++ resolve_reply,
++ h))) {
++ rs_log_warning("Failed to create service resolver for '%s': %s\n", name,
++ avahi_strerror(avahi_client_errno(d->client)));
++
++ free(h);
++
++ } else {
++
++ /* Fill in missing data */
++ h->service = strdup(name);
++ assert(h->service);
++ h->domain = strdup(domain);
++ assert(h->domain);
++ h->daemon_data = d;
++ h->interface = interface;
++ h->protocol = protocol;
++ h->next = d->hosts;
++ h->n_cpus = 1;
++ d->hosts = h;
++ }
++
++ break;
++ }
++
++ case AVAHI_BROWSER_REMOVE:
++
++ rs_log_info("Removed service: %s\n", name);
++
++ remove_service(d, interface, protocol, name, domain);
++ write_hosts(d);
++ break;
++
++ case AVAHI_BROWSER_FAILURE:
++ rs_log_crit("Service Browser failure '%s': %s\n", name,
++ avahi_strerror(avahi_client_errno(d->client)));
++
++ avahi_simple_poll_quit(d->simple_poll);
++ break;
++
++ case AVAHI_BROWSER_CACHE_EXHAUSTED:
++ case AVAHI_BROWSER_ALL_FOR_NOW:
++ ;
++
++ }
++}
++
++static void client_callback(AvahiClient *client, AvahiClientState state, void *userdata) {
++ struct daemon_data *d = userdata;
++
++ switch (state) {
++
++ case AVAHI_CLIENT_FAILURE:
++ rs_log_crit("Client failure: %s\n", avahi_strerror(avahi_client_errno(client)));
++ avahi_simple_poll_quit(d->simple_poll);
++ break;
++
++ case AVAHI_CLIENT_S_COLLISION:
++ case AVAHI_CLIENT_S_REGISTERING:
++ case AVAHI_CLIENT_S_RUNNING:
++ case AVAHI_CLIENT_CONNECTING:
++ ;
++ }
++}
++
++/* The main function of the background daemon */
++static int daemon_proc(const char *host_file, const char *lock_file, int n_slots) {
++ int ret = 1;
++ int lock_fd = -1;
++ struct daemon_data d;
++ time_t clip_time;
++ int error;
++ char machine[64], version[64], stype[128];
++
++ rs_add_logger(rs_logger_syslog, RS_LOG_DEBUG, NULL, 0);
++
++ /* Prepare daemon data structure */
++ d.fd = -1;
++ d.hosts = NULL;
++ d.n_slots = n_slots;
++ d.simple_poll = NULL;
++ d.browser = NULL;
++ d.client = NULL;
++ clip_time = time(NULL);
++
++ rs_log_info("Zeroconf daemon running.\n");
++
++ /* Open daemon lock file and lock it */
++ if ((lock_fd = open(lock_file, O_RDWR|O_CREAT, 0666)) < 0) {
++ rs_log_crit("open('%s') failed: %s\n", lock_file, strerror(errno));
++ goto finish;
++ }
++
++ if (generic_lock(lock_fd, 1, 1, 0) < 0) {
++ /* lock failed, there's probably already another daemon running */
++ goto finish;
++ }
++
++ /* Open host file */
++ if ((d.fd = open(host_file, O_RDWR|O_CREAT, 0666)) < 0) {
++ rs_log_crit("open('%s') failed: %s\n", host_file, strerror(errno));
++ goto finish;
++ }
++
++ /* Clear host file */
++ write_hosts(&d);
++
++ if (!(d.simple_poll = avahi_simple_poll_new())) {
++ rs_log_crit("Failed to create simple poll object.\n");
++ goto finish;
++ }
++
++ if (!(d.client = avahi_client_new(
++ avahi_simple_poll_get(d.simple_poll),
++ 0,
++ client_callback,
++ &d,
++ &error))) {
++ rs_log_crit("Failed to create Avahi client object: %s\n", avahi_strerror(error));
++ goto finish;
++ }
++
++ if (dcc_get_gcc_version(version, sizeof(version)) &&
++ dcc_get_gcc_machine(machine, sizeof(machine))) {
++
++ dcc_make_dnssd_subtype(stype, sizeof(stype), version, machine);
++ } else {
++ rs_log_warning("Warning, failed to get CC version and machine type.\n");
++
++ strncpy(stype, DCC_DNS_SERVICE_TYPE, sizeof(stype));
++ stype[sizeof(stype)-1] = 0;
++ }
++
++ rs_log_info("Browsing for '%s'.\n", stype);
++
++ if (!(d.browser = avahi_service_browser_new(
++ d.client,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ stype,
++ NULL,
++ 0,
++ browse_reply,
++ &d))) {
++ rs_log_crit("Failed to create service browser object: %s\n", avahi_strerror(avahi_client_errno(d.client)));
++ goto finish;
++ }
++
++ /* Check whether the host file has been used recently */
++ while (fd_last_used(d.fd, clip_time) <= MAX_IDLE_TIME) {
++
++ /* Iterate the main loop for 5s */
++ if (avahi_simple_poll_iterate(d.simple_poll, 5000) != 0) {
++ rs_log_crit("Event loop exited abnormaly.\n");
++ goto finish;
++ }
++ }
++
++ /* Wer are idle */
++ rs_log_info("Zeroconf daemon unused.\n");
++
++ ret = 0;
++
++finish:
++
++ /* Cleanup */
++ if (lock_fd >= 0) {
++ generic_lock(lock_fd, 1, 0, 0);
++ close(lock_fd);
++ }
++
++ if (d.fd >= 0)
++ close(d.fd);
++
++ while (d.hosts) {
++ struct host *h = d.hosts;
++ d.hosts = d.hosts->next;
++ free_host(h);
++ }
++
++ if (d.client)
++ avahi_client_free(d.client);
++
++ if (d.simple_poll)
++ avahi_simple_poll_free(d.simple_poll);
++
++ rs_log_info("zeroconf daemon ended.\n");
++
++ return ret;
++}
++
++/* Return path to the zeroconf directory in ~/.distcc */
++static int get_zeroconf_dir(char **dir_ret) {
++ static char *cached;
++ int ret;
++
++ if (cached) {
++ *dir_ret = cached;
++ return 0;
++ } else {
++ ret = dcc_get_subdir("zeroconf", dir_ret);
++ if (ret == 0)
++ cached = *dir_ret;
++ return ret;
++ }
++}
++
++/* Get the host list from zeroconf */
++int dcc_zeroconf_add_hosts(struct dcc_hostdef **ret_list, int *ret_nhosts, int n_slots, struct dcc_hostdef **ret_prev) {
++ char host_file[PATH_MAX], lock_file[PATH_MAX], *s = NULL;
++ int lock_fd = -1, host_fd = -1;
++ int fork_daemon = 0;
++ int r = -1;
++ char *dir;
++ struct stat st;
++
++ if (get_zeroconf_dir(&dir) != 0) {
++ rs_log_crit("failed to get zeroconf dir.\n");
++ goto finish;
++ }
++
++ snprintf(lock_file, sizeof(lock_file), "%s/lock", dir);
++ snprintf(host_file, sizeof(host_file), "%s/hosts", dir);
++
++ /* Open lock file */
++ if ((lock_fd = open(lock_file, O_RDWR|O_CREAT, 0666)) < 0) {
++ rs_log_crit("open('%s') failed: %s\n", lock_file, strerror(errno));
++ goto finish;
++ }
++
++ /* Try to lock the lock file */
++ if (generic_lock(lock_fd, 1, 1, 0) >= 0) {
++ /* The lock succeeded => there's no daemon running yet! */
++ fork_daemon = 1;
++ generic_lock(lock_fd, 1, 0, 0);
++ }
++
++ close(lock_fd);
++
++ /* Shall we fork a new daemon? */
++ if (fork_daemon) {
++ pid_t pid;
++
++ rs_log_info("Spawning zeroconf daemon.\n");
++
++ if ((pid = fork()) == -1) {
++ rs_log_crit("fork() failed: %s\n", strerror(errno));
++ goto finish;
++ } else if (pid == 0) {
++ int fd;
++ /* Child */
++
++ /* Close file descriptors and replace them by /dev/null */
++ close(0);
++ close(1);
++ close(2);
++ fd = open("/dev/null", O_RDWR);
++ assert(fd == 0);
++ fd = dup(0);
++ assert(fd == 1);
++ fd = dup(0);
++ assert(fd == 2);
++
++#ifdef HAVE_SETSID
++ setsid();
++#endif
++
++ chdir("/");
++ rs_add_logger(rs_logger_syslog, RS_LOG_DEBUG, NULL, 0);
++ _exit(daemon_proc(host_file, lock_file, n_slots));
++ }
++
++ /* Parent */
++
++ /* Wait some time for initial host gathering */
++ usleep(1000000); /* 1000 ms */
++ }
++
++ /* Open host list read-only */
++ if ((host_fd = open(host_file, O_RDONLY)) < 0) {
++ rs_log_crit("open('%s') failed: %s\n", host_file, strerror(errno));
++ goto finish;
++ }
++
++ /* A read lock */
++ if (generic_lock(host_fd, 0, 1, 1) < 0) {
++ rs_log_crit("lock failed: %s\n", strerror(errno));
++ goto finish;
++ }
++
++ /* Get file size */
++ if (fstat(host_fd, &st) < 0) {
++ rs_log_crit("stat() failed: %s\n", strerror(errno));
++ goto finish;
++ }
++
++ if (st.st_size >= MAX_FILE_SIZE) {
++ rs_log_crit("file too large.\n");
++ goto finish;
++ }
++
++ /* read file data */
++ s = malloc((size_t) st.st_size+1);
++ assert(s);
++
++ if (dcc_readx(host_fd, s, (size_t) st.st_size) != 0) {
++ rs_log_crit("failed to read from file.\n");
++ goto finish;
++ }
++ s[st.st_size] = 0;
++
++ /* Parse host data */
++ if (dcc_parse_hosts(s, host_file, ret_list, ret_nhosts, ret_prev) != 0) {
++ rs_log_crit("failed to parse host file.\n");
++ goto finish;
++ }
++
++ r = 0;
++
++finish:
++ if (host_fd >= 0) {
++ generic_lock(host_fd, 0, 0, 1);
++ close(host_fd);
++ }
++
++ free(s);
++
++ return r;
++}
+--- distcc-2.18.3/src/zeroconf.h 1970-01-01 01:00:00.000000000 +0100
++++ distcc-2.18.3.lennart/src/zeroconf.h 2007-12-30 15:09:58.000000000 +0100
+@@ -0,0 +1,18 @@
++#ifndef foozeroconfhfoo
++#define foozeroconfhfoo
++
++#include <inttypes.h>
++
++int dcc_zeroconf_add_hosts(struct dcc_hostdef **re_list, int *ret_nhosts, int slots, struct dcc_hostdef **ret_prev);
++
++void *dcc_zeroconf_register(uint16_t port, int n_cpus);
++int dcc_zeroconf_unregister(void*);
++
++char* dcc_get_gcc_version(char *s, size_t nbytes);
++char* dcc_get_gcc_machine(char *s, size_t nbytes);
++
++char* dcc_make_dnssd_subtype(char *stype, size_t nbytes, const char *v, const char *m);
++
++#define DCC_DNS_SERVICE_TYPE "_distcc._tcp"
++
++#endif
+--- distcc-2.18.3/src/zeroconf-reg.c 1970-01-01 01:00:00.000000000 +0100
++++ distcc-2.18.3.lennart/src/zeroconf-reg.c 2007-12-30 15:17:29.000000000 +0100
+@@ -0,0 +1,265 @@
++#include "config.h"
++
++#include <assert.h>
++#include <stdio.h>
++#include <sys/select.h>
++#include <signal.h>
++#include <sys/file.h>
++#include <sys/time.h>
++#include <time.h>
++#include <sys/stat.h>
++#include <sys/poll.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <errno.h>
++
++#include <avahi-common/thread-watch.h>
++#include <avahi-common/error.h>
++#include <avahi-common/alternative.h>
++#include <avahi-common/malloc.h>
++#include <avahi-client/publish.h>
++
++#include "distcc.h"
++#include "zeroconf.h"
++#include "trace.h"
++#include "exitcode.h"
++
++struct context {
++ char *name;
++ AvahiThreadedPoll *threaded_poll;
++ AvahiClient *client;
++ AvahiEntryGroup *group;
++ uint16_t port;
++ int n_cpus;
++};
++
++static void publish_reply(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata);
++
++static void register_stuff(struct context *ctx) {
++
++ if (!ctx->group) {
++
++ if (!(ctx->group = avahi_entry_group_new(ctx->client, publish_reply, ctx))) {
++ rs_log_crit("Failed to create entry group: %s\n", avahi_strerror(avahi_client_errno(ctx->client)));
++ goto fail;
++ }
++
++ }
++
++ if (avahi_entry_group_is_empty(ctx->group)) {
++ char cpus[32], machine[64] = "cc_machine=", version[64] = "cc_version=", *m, *v;
++
++ snprintf(cpus, sizeof(cpus), "cpus=%i", ctx->n_cpus);
++ v = dcc_get_gcc_version(version+11, sizeof(version)-11);
++ m = dcc_get_gcc_machine(machine+11, sizeof(machine)-11);
++
++ /* Register our service */
++
++ if (avahi_entry_group_add_service(
++ ctx->group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0,
++ ctx->name,
++ DCC_DNS_SERVICE_TYPE,
++ NULL,
++ NULL,
++ ctx->port,
++ "txtvers=1",
++ cpus,
++ "distcc="PACKAGE_VERSION,
++ "gnuhost="GNU_HOST,
++ v ? version : NULL,
++ m ? machine : NULL,
++ NULL) < 0) {
++ rs_log_crit("Failed to add service: %s\n", avahi_strerror(avahi_client_errno(ctx->client)));
++ goto fail;
++ }
++
++ if (v && m) {
++ char stype[128];
++
++ dcc_make_dnssd_subtype(stype, sizeof(stype), v, m);
++
++ if (avahi_entry_group_add_service_subtype(
++ ctx->group,
++ AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ 0,
++ ctx->name,
++ DCC_DNS_SERVICE_TYPE,
++ NULL,
++ stype) < 0) {
++ rs_log_crit("Failed to add service: %s\n", avahi_strerror(avahi_client_errno(ctx->client)));
++ goto fail;
++ }
++ } else
++ rs_log_warning("Failed to determine CC version, not registering DNS-SD service subtype!");
++
++ if (avahi_entry_group_commit(ctx->group) < 0) {
++ rs_log_crit("Failed to commit entry group: %s\n", avahi_strerror(avahi_client_errno(ctx->client)));
++ goto fail;
++ }
++
++ }
++
++ return;
++
++fail:
++ avahi_threaded_poll_quit(ctx->threaded_poll);
++}
++
++/* Called when publishing of service data completes */
++static void publish_reply(AvahiEntryGroup *UNUSED(g), AvahiEntryGroupState state, void *userdata) {
++ struct context *ctx = userdata;
++
++ switch (state) {
++
++ case AVAHI_ENTRY_GROUP_COLLISION: {
++ char *n;
++
++ /* Pick a new name for our service */
++
++ n = avahi_alternative_service_name(ctx->name);
++ assert(n);
++
++ avahi_free(ctx->name);
++ ctx->name = n;
++
++ register_stuff(ctx);
++ break;
++ }
++
++ case AVAHI_ENTRY_GROUP_FAILURE:
++ rs_log_crit("Failed to register service: %s\n", avahi_strerror(avahi_client_errno(ctx->client)));
++ avahi_threaded_poll_quit(ctx->threaded_poll);
++ break;
++
++ case AVAHI_ENTRY_GROUP_UNCOMMITED:
++ case AVAHI_ENTRY_GROUP_REGISTERING:
++ case AVAHI_ENTRY_GROUP_ESTABLISHED:
++ ;
++ }
++}
++
++static void client_callback(AvahiClient *client, AvahiClientState state, void *userdata) {
++ struct context *ctx = userdata;
++
++ ctx->client = client;
++
++ switch (state) {
++
++ case AVAHI_CLIENT_S_RUNNING:
++
++ register_stuff(ctx);
++ break;
++
++ case AVAHI_CLIENT_S_COLLISION:
++ case AVAHI_CLIENT_S_REGISTERING:
++
++ if (ctx->group)
++ avahi_entry_group_reset(ctx->group);
++
++ break;
++
++ case AVAHI_CLIENT_FAILURE:
++
++ if (avahi_client_errno(client) == AVAHI_ERR_DISCONNECTED) {
++ int error;
++
++ avahi_client_free(ctx->client);
++ ctx->client = NULL;
++ ctx->group = NULL;
++
++ /* Reconnect to the server */
++
++ if (!(ctx->client = avahi_client_new(
++ avahi_threaded_poll_get(ctx->threaded_poll),
++ AVAHI_CLIENT_NO_FAIL,
++ client_callback,
++ ctx,
++ &error))) {
++
++ rs_log_crit("Failed to contact server: %s\n", avahi_strerror(error));
++ avahi_threaded_poll_quit(ctx->threaded_poll);
++ }
++
++ } else {
++ rs_log_crit("Client failure: %s\n", avahi_strerror(avahi_client_errno(client)));
++ avahi_threaded_poll_quit(ctx->threaded_poll);
++ }
++
++ break;
++
++ case AVAHI_CLIENT_CONNECTING:
++ ;
++ }
++}
++
++/* register a distcc service in DNS-SD/mDNS with the given port and number of CPUs */
++void* dcc_zeroconf_register(uint16_t port, int n_cpus) {
++ struct context *ctx = NULL;
++ char service[256] = "distcc@";
++ int error;
++
++ ctx = malloc(sizeof(struct context));
++ assert(ctx);
++ ctx->client = NULL;
++ ctx->group = NULL;
++ ctx->threaded_poll = NULL;
++ ctx->port = port;
++ ctx->n_cpus = n_cpus;
++
++ /* Prepare service name */
++ gethostname(service+7, sizeof(service)-8);
++ service[sizeof(service)-1] = 0;
++
++ ctx->name = strdup(service);
++ assert(ctx->name);
++
++ if (!(ctx->threaded_poll = avahi_threaded_poll_new())) {
++ rs_log_crit("Failed to create event loop object.\n");
++ goto fail;
++ }
++
++ if (!(ctx->client = avahi_client_new(avahi_threaded_poll_get(ctx->threaded_poll), AVAHI_CLIENT_NO_FAIL, client_callback, ctx, &error))) {
++ rs_log_crit("Failed to create client object: %s\n", avahi_strerror(avahi_client_errno(ctx->client)));
++ goto fail;
++ }
++
++ /* Create the mDNS event handler */
++ if (avahi_threaded_poll_start(ctx->threaded_poll) < 0) {
++ rs_log_crit("Failed to create thread.\n");
++ goto fail;
++ }
++
++ return ctx;
++
++fail:
++
++ if (ctx)
++ dcc_zeroconf_unregister(ctx);
++
++ return NULL;
++}
++
++/* Unregister this server from DNS-SD/mDNS */
++int dcc_zeroconf_unregister(void *u) {
++ struct context *ctx = u;
++
++ if (ctx->threaded_poll)
++ avahi_threaded_poll_stop(ctx->threaded_poll);
++
++ if (ctx->client)
++ avahi_client_free(ctx->client);
++
++ if (ctx->threaded_poll)
++ avahi_threaded_poll_free(ctx->threaded_poll);
++
++ avahi_free(ctx->name);
++
++ free(ctx);
++
++ return 0;
++}
+--- distcc-2.18.3/src/help.c 2004-07-30 03:12:13.000000000 +0200
++++ distcc-2.18.3.lennart/src/help.c 2007-12-30 13:55:27.000000000 +0100
+@@ -62,6 +62,9 @@ int dcc_show_version(const char *prog)
+ "distcc comes with ABSOLUTELY NO WARRANTY. distcc is free software, and\n"
+ "you may use, modify and redistribute it under the terms of the GNU \n"
+ "General Public License version 2 or later.\n"
++#ifdef HAVE_AVAHI
++"\nBuilt with Zeroconf support.\n"
++#endif
+ "\n"
+ ,
+ prog, PACKAGE_VERSION, GNU_HOST, DISTCC_DEFAULT_PORT,
+--- distcc-2.18.3/src/hosts.c 2004-10-24 07:05:47.000000000 +0200
++++ distcc-2.18.3.lennart/src/hosts.c 2007-12-30 13:55:27.000000000 +0100
+@@ -96,6 +96,10 @@
+ #include "hosts.h"
+ #include "exitcode.h"
+ #include "snprintf.h"
++#ifdef HAVE_AVAHI
++#include "zeroconf.h"
++#define ZEROCONF_MAGIC "+zeroconf"
++#endif
+
+ const int dcc_default_port = DISTCC_DEFAULT_PORT;
+
+@@ -134,9 +138,12 @@ int dcc_get_hostlist(struct dcc_hostdef
+ char *path, *top;
+ int ret;
+
++ *ret_list = NULL;
++ *ret_nhosts = 0;
++
+ if ((env = getenv("DISTCC_HOSTS")) != NULL) {
+ rs_trace("read hosts from environment");
+- return dcc_parse_hosts(env, "$DISTCC_HOSTS", ret_list, ret_nhosts);
++ return dcc_parse_hosts(env, "$DISTCC_HOSTS", ret_list, ret_nhosts, NULL);
+ }
+
+ /* $DISTCC_DIR or ~/.distcc */
+@@ -163,7 +170,7 @@ int dcc_get_hostlist(struct dcc_hostdef
+ rs_trace("not reading %s: %s", path, strerror(errno));
+ free(path);
+ }
+-
++
+ /* FIXME: Clearer message? */
+ rs_log_warning("no hostlist is set; can't distribute work");
+
+@@ -346,17 +353,19 @@ static int dcc_parse_localhost(struct dc
+ **/
+ int dcc_parse_hosts(const char *where, const char *source_name,
+ struct dcc_hostdef **ret_list,
+- int *ret_nhosts)
++ int *ret_nhosts, struct dcc_hostdef **ret_prev)
+ {
+ int ret;
+- struct dcc_hostdef *prev, *curr;
++ struct dcc_hostdef *curr, *_prev;
++
++ if (!ret_prev) {
++ ret_prev = &_prev;
++ _prev = NULL;
++ }
+
+ /* TODO: Check for '/' in places where it might cause trouble with
+ * a lock file name. */
+
+- prev = NULL;
+- *ret_list = NULL;
+- *ret_nhosts = 0;
+ /* A simple, hardcoded scanner. Some of the GNU routines might be
+ * useful here, but they won't work on less capable systems.
+ *
+@@ -390,6 +399,15 @@ int dcc_parse_hosts(const char *where, c
+ token_start = where;
+ token_len = strcspn(where, " #\t\n\f\r");
+
++#ifdef HAVE_AVAHI
++ if (token_len == sizeof(ZEROCONF_MAGIC)-1 &&
++ !strncmp(token_start, ZEROCONF_MAGIC, (unsigned) token_len)) {
++ if ((ret = dcc_zeroconf_add_hosts(ret_list, ret_nhosts, 4, ret_prev) != 0))
++ return ret;
++ goto skip;
++ }
++#endif
++
+ /* Allocate new list item */
+ curr = calloc(1, sizeof(struct dcc_hostdef));
+ if (!curr) {
+@@ -404,8 +422,8 @@ int dcc_parse_hosts(const char *where, c
+ }
+
+ /* Link into list */
+- if (prev) {
+- prev->next = curr;
++ if (*ret_prev) {
++ (*ret_prev)->next = curr;
+ } else {
+ *ret_list = curr; /* first */
+ }
+@@ -434,10 +452,15 @@ int dcc_parse_hosts(const char *where, c
+ return ret;
+ }
+
++ (*ret_nhosts)++;
++ *ret_prev = curr;
++
++#ifdef HAVE_AVAHI
++ skip:
++#endif
++
+ /* continue to next token if any */
+ where = token_start + token_len;
+- prev = curr;
+- (*ret_nhosts)++;
+ }
+
+ if (*ret_nhosts) {
+--- distcc-2.18.3/src/io.c 2004-10-24 07:05:48.000000000 +0200
++++ distcc-2.18.3.lennart/src/io.c 2007-12-30 13:55:27.000000000 +0100
+@@ -160,7 +160,7 @@ int dcc_readx(int fd, void *buf, size_t
+ return ret;
+ else
+ continue;
+- } else if (r == -1 && errno == EAGAIN) {
++ } else if (r == -1 && errno == EINTR) {
+ continue;
+ } else if (r == -1) {
+ rs_log_error("failed to read: %s", strerror(errno));
+@@ -202,9 +202,6 @@ int dcc_writex(int fd, const void *buf,
+ } else if (r == -1) {
+ rs_log_error("failed to write: %s", strerror(errno));
+ return EXIT_IO_ERROR;
+- } else if (r == 0) {
+- rs_log_error("unexpected eof on fd%d", fd);
+- return EXIT_TRUNCATED;
+ } else {
+ buf = &((char *) buf)[r];
+ len -= r;
+--- distcc-2.18.3/src/hostfile.c 2004-10-24 07:05:48.000000000 +0200
++++ distcc-2.18.3.lennart/src/hostfile.c 2007-12-30 13:55:27.000000000 +0100
+@@ -59,7 +59,7 @@ int dcc_parse_hosts_file(const char *fna
+ if ((ret = dcc_load_file_string(fname, &body)) != 0)
+ return ret;
+
+- ret = dcc_parse_hosts(body, fname, ret_list, ret_nhosts);
++ ret = dcc_parse_hosts(body, fname, ret_list, ret_nhosts, NULL);
+
+ free(body);
+
+--- distcc-2.18.3/src/gcc-id.c 1970-01-01 01:00:00.000000000 +0100
++++ distcc-2.18.3.lennart/src/gcc-id.c 2007-12-30 15:14:31.000000000 +0100
+@@ -0,0 +1,84 @@
++#include "config.h"
++
++#include <ctype.h>
++#include <string.h>
++#include <stdio.h>
++#include <errno.h>
++
++#include "distcc.h"
++#include "hosts.h"
++#include "zeroconf.h"
++#include "trace.h"
++
++static char *strip_bad_chars(char *s) {
++ char *k;
++
++ for (k = s; *k; k++) {
++
++ if (*k >= 'a' && *k <= 'z')
++ continue;
++
++ if (*k >= '0' && *k <= '9')
++ continue;
++
++ if (*k >= 'A' && *k <= 'Z')
++ *k = tolower(*k);
++ else
++ *k = '-';
++ }
++
++ return s;
++}
++
++static char* read_string_from_popen(const char *cmdline, char *s, size_t nbytes) {
++ FILE *p = NULL;
++ char *ret = NULL;
++
++ errno = 0;
++ if (!(p = popen(cmdline, "r"))) {
++ rs_log_crit("Failed to read string from C compiler: %s\n", errno ? strerror(errno) : "failure");
++ goto fail;
++ }
++
++ if (!fgets(s, (int) nbytes, p)) {
++ rs_log_crit("Failed to read string from C compiler.\n");
++ goto fail;
++ }
++
++ s[nbytes-1] = 0;
++ s[strcspn(s, " \t\n\r")] = 0;
++
++ ret = s;
++
++fail:
++
++ if (p)
++ pclose(p);
++
++ return ret;
++}
++
++char* dcc_get_gcc_version(char *s, size_t nbytes) {
++ return read_string_from_popen("cc -dumpversion", s, nbytes);
++}
++
++char* dcc_get_gcc_machine(char *s, size_t nbytes) {
++ return read_string_from_popen("cc -dumpmachine", s, nbytes);
++}
++
++char* dcc_make_dnssd_subtype(char *stype, size_t nbytes, const char *v, const char *m) {
++ char version[64], machine[64];
++
++ strncpy(version, v, sizeof(version)-1);
++ version[sizeof(version)-1] = 0;
++ strncpy(machine, m, sizeof(machine)-1);
++ machine[sizeof(machine)-1] = 0;
++
++ strip_bad_chars(version);
++ strip_bad_chars(machine);
++
++ snprintf(stype, nbytes, "_%s--%s._sub." DCC_DNS_SERVICE_TYPE, machine, version);
++ stype[nbytes-1] = 0;
++
++ return stype;
++}
+--- distcc-2.18.3/src/config.h.in 2004-11-30 12:32:54.000000000 +0100
++++ distcc-2.18.3.lennart/src/config.h.in 2007-12-30 15:40:52.000000000 +0100
+@@ -15,6 +15,9 @@
+ /* Define to 1 if you have the `asprintf' function. */
+ #undef HAVE_ASPRINTF
+
++/* defined if Avahi is available */
++#undef HAVE_AVAHI
++
+ /* define if vsnprintf is C99 compliant */
+ #undef HAVE_C99_VSNPRINTF
+
+--- distcc-2.18.3/src/config.h 1970-01-01 01:00:00.000000000 +0100
++++ distcc-2.18.3.lennart/src/config.h 2007-12-30 16:06:25.000000000 +0100
+@@ -0,0 +1,253 @@
++/* src/config.h. Generated from config.h.in by configure. */
++/* src/config.h.in. Generated from configure.ac by autoheader. */
++
++/* Use getaddrinfo(), getnameinfo(), etc */
++#define ENABLE_RFC2553 1
++
++/* Your gnu-style host triple */
++#define GNU_HOST "i486-pc-linux-gnu"
++
++/* Define to 1 if you have the <alloca.h> header file. */
++#define HAVE_ALLOCA_H 1
++
++/* Define to 1 if you have the <arpa/nameser.h> header file. */
++#define HAVE_ARPA_NAMESER_H 1
++
++/* Define to 1 if you have the `asprintf' function. */
++#define HAVE_ASPRINTF 1
++
++/* defined if Avahi is available */
++#define HAVE_AVAHI 1
++
++/* define if vsnprintf is C99 compliant */
++#define HAVE_C99_VSNPRINTF 1
++
++/* Define to 1 if you have the <ctype.h> header file. */
++#define HAVE_CTYPE_H 1
++
++/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
++ don't. */
++#define HAVE_DECL_ASPRINTF 1
++
++/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
++ don't. */
++#define HAVE_DECL_SNPRINTF 1
++
++/* Define to 1 if you have the declaration of `strndup', and to 0 if you
++ don't. */
++#define HAVE_DECL_STRNDUP 1
++
++/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
++ don't. */
++#define HAVE_DECL_VASPRINTF 1
++
++/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
++ don't. */
++#define HAVE_DECL_VSNPRINTF 1
++
++/* Define to 1 if you have the <float.h> header file. */
++#define HAVE_FLOAT_H 1
++
++/* Define to 1 if you have the `flock' function. */
++#define HAVE_FLOCK 1
++
++/* Define to 1 if you have the `getaddrinfo' function. */
++#define HAVE_GETADDRINFO 1
++
++/* Define to 1 if you have the `getcwd' function. */
++#define HAVE_GETCWD 1
++
++/* Define to 1 if you have the `geteuid' function. */
++#define HAVE_GETEUID 1
++
++/* Define to 1 if you have the `getnameinfo' function. */
++#define HAVE_GETNAMEINFO 1
++
++/* Define to 1 if you have the `getrusage' function. */
++#define HAVE_GETRUSAGE 1
++
++/* Define to 1 if you have the `gettimeofday' function. */
++#define HAVE_GETTIMEOFDAY 1
++
++/* Define to 1 if you have the `getuid' function. */
++#define HAVE_GETUID 1
++
++/* Define to 1 if you have the `getwd' function. */
++#define HAVE_GETWD 1
++
++/* Define to 1 if you have the `hstrerror' function. */
++#define HAVE_HSTRERROR 1
++
++/* Define to 1 if you have the `inet_ntoa' function. */
++#define HAVE_INET_NTOA 1
++
++/* Define to 1 if you have the `inet_ntop' function. */
++#define HAVE_INET_NTOP 1
++
++/* Define to 1 if you have the <inttypes.h> header file. */
++#define HAVE_INTTYPES_H 1
++
++/* Define to 1 if the system has the type `in_addr_t'. */
++#define HAVE_IN_ADDR_T 1
++
++/* Define to 1 if the system has the type `in_port_t'. */
++#define HAVE_IN_PORT_T 1
++
++/* Define to 1 if you have the `lockf' function. */
++#define HAVE_LOCKF 1
++
++/* Define to 1 if you have the `mcheck' function. */
++#define HAVE_MCHECK 1
++
++/* Define to 1 if you have the <mcheck.h> header file. */
++#define HAVE_MCHECK_H 1
++
++/* Define to 1 if you have the <memory.h> header file. */
++#define HAVE_MEMORY_H 1
++
++/* Define to 1 if you have the `mmap' function. */
++#define HAVE_MMAP 1
++
++/* Define to 1 if you have the <netinet/in.h> header file. */
++#define HAVE_NETINET_IN_H 1
++
++/* Define to 1 if you have the <resolv.h> header file. */
++#define HAVE_RESOLV_H 1
++
++/* Define to 1 if you have the `sendfile' function. */
++#define HAVE_SENDFILE 1
++
++/* Define to 1 if you have the `setgroups' function. */
++#define HAVE_SETGROUPS 1
++
++/* Define to 1 if you have the `setreuid' function. */
++#define HAVE_SETREUID 1
++
++/* Define to 1 if you have the `setsid' function. */
++#define HAVE_SETSID 1
++
++/* Define to 1 if you have the `setuid' function. */
++#define HAVE_SETUID 1
++
++/* Define to 1 if you have the `snprintf' function. */
++#define HAVE_SNPRINTF 1
++
++/* define if you have struct sockaddr_storage */
++#define HAVE_SOCKADDR_STORAGE 1
++
++/* define if you have a working socketpair */
++#define HAVE_SOCKETPAIR 1
++
++/* Define to 1 if you have the <stdint.h> header file. */
++#define HAVE_STDINT_H 1
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#define HAVE_STDLIB_H 1
++
++/* Define to 1 if you have the `strerror' function. */
++#define HAVE_STRERROR 1
++
++/* Define to 1 if you have the <strings.h> header file. */
++#define HAVE_STRINGS_H 1
++
++/* Define to 1 if you have the <string.h> header file. */
++#define HAVE_STRING_H 1
++
++/* Define to 1 if you have the `strlcpy' function. */
++/* #undef HAVE_STRLCPY */
++
++/* Define to 1 if you have the `strndup' function. */
++#define HAVE_STRNDUP 1
++
++/* Define to 1 if you have the `strsignal' function. */
++#define HAVE_STRSIGNAL 1
++
++/* Define to 1 if you have the <sys/loadavg.h> header file. */
++/* #undef HAVE_SYS_LOADAVG_H */
++
++/* Define to 1 if you have the <sys/mman.h> header file. */
++#define HAVE_SYS_MMAN_H 1
++
++/* Define to 1 if you have the <sys/resource.h> header file. */
++#define HAVE_SYS_RESOURCE_H 1
++
++/* Define to 1 if you have the <sys/select.h> header file. */
++#define HAVE_SYS_SELECT_H 1
++
++/* Define to 1 if you have the <sys/sendfile.h> header file. */
++#define HAVE_SYS_SENDFILE_H 1
++
++/* Define to 1 if you have the <sys/signal.h> header file. */
++#define HAVE_SYS_SIGNAL_H 1
++
++/* Define to 1 if you have the <sys/socket.h> header file. */
++#define HAVE_SYS_SOCKET_H 1
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#define HAVE_SYS_STAT_H 1
++
++/* Define to 1 if you have the <sys/types.h> header file. */
++#define HAVE_SYS_TYPES_H 1
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#define HAVE_UNISTD_H 1
++
++/* Define if your cpp has vararg macros */
++#define HAVE_VARARG_MACROS
++
++/* Define to 1 if you have the `vasprintf' function. */
++#define HAVE_VASPRINTF 1
++
++/* Whether __va_copy() is available */
++#define HAVE_VA_COPY 1
++
++/* Define to 1 if you have the `vsnprintf' function. */
++#define HAVE_VSNPRINTF 1
++
++/* Define to 1 if you have the `wait3' function. */
++#define HAVE_WAIT3 1
++
++/* Define to 1 if you have the `wait4' function. */
++#define HAVE_WAIT4 1
++
++/* Define to 1 if you have the `waitpid' function. */
++#define HAVE_WAITPID 1
++
++/* Define if MAP_FAILED constant not available */
++#define MAP_FAILED (void *)-1L
++
++/* Define to the address where bug reports for this package should be sent. */
++#define PACKAGE_BUGREPORT "distcc@lists.samba.org"
++
++/* Define to the full name of this package. */
++#define PACKAGE_NAME "distcc"
++
++/* Define to the full name and version of this package. */
++#define PACKAGE_STRING "distcc 2.18.3"
++
++/* Define to the one symbol short name of this package. */
++#define PACKAGE_TARNAME "distcc"
++
++/* Define to the version of this package. */
++#define PACKAGE_VERSION "2.18.3"
++
++/* Define as the return type of signal handlers (`int' or `void'). */
++#define RETSIGTYPE void
++
++/* Define to 1 if you have the ANSI C header files. */
++#define STDC_HEADERS 1
++
++/* Use GNOME */
++#define WITH_GNOME 1
++
++/* Use GTK+ */
++/* #undef WITH_GTK */
++
++/* Define to `__inline__' or `__inline' if that's what the C compiler
++ calls it, or to nothing if 'inline' is not supported under any name. */
++#ifndef __cplusplus
++/* #undef inline */
++#endif
++
++/* type to use in place of socklen_t if not defined */
++/* #undef socklen_t */
diff --git a/packages/distcc/files/no-man.patch b/packages/distcc/files/no-man.patch
new file mode 100644
index 0000000000..ac1c18ac96
--- /dev/null
+++ b/packages/distcc/files/no-man.patch
@@ -0,0 +1,11 @@
+--- /tmp/Makefile.in 2008-01-06 16:44:45.696595605 +0100
++++ distcc-2.18.3/Makefile.in 2008-01-06 16:44:56.879181132 +0100
+@@ -556,7 +556,7 @@
+ # install-sh can't handle multiple arguments, but we don't need any
+ # tricky features so mkinstalldirs and cp will do
+
+-install: showpaths install-doc install-man install-programs install-example @INSTALL_GNOME@
++install: showpaths install-doc install-programs install-example @INSTALL_GNOME@
+
+ install-programs: $(bin_PROGRAMS)
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
diff --git a/packages/linux/linux-handhelds-2.6/htcuniversal/.mtn2git_empty b/packages/docbook-dsssl-stylesheets/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcuniversal/.mtn2git_empty
+++ b/packages/docbook-dsssl-stylesheets/.mtn2git_empty
diff --git a/packages/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb b/packages/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb
new file mode 100644
index 0000000000..1be79d7cc5
--- /dev/null
+++ b/packages/docbook-dsssl-stylesheets/docbook-dsssl-stylesheets-native_1.79.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "DSSSL stylesheets used to transform SGML and XML DocBook files"
+
+# Simple persmissive
+LICENSE = "DSSSL"
+
+DEPENDS = "sgml-common-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/docbook/docbook-dsssl-${PV}.tar.bz2"
+
+S = "${WORKDIR}/docbook-dsssl-${PV}"
+
+inherit native
+
+do_stage () {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/docbook-dsssl.html
+ # for details.
+ install -d ${STAGING_BINDIR_NATIVE}
+ install -m 0755 bin/collateindex.pl ${STAGING_BINDIR_NATIVE}
+
+ install -d ${STAGING_DATADIR}/sgml/docbook/dsssl-stylesheets-${PV}
+ install -m 0644 catalog ${STAGING_DATADIR}/sgml/docbook/dsssl-stylesheets-${PV}
+ cp -dpr common ${STAGING_DATADIR}/sgml/docbook/dsssl-stylesheets-${PV}
+
+ install-catalog --add ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat \
+ ${STAGING_DATADIR}/sgml/docbook/dsssl-stylesheets-${PV}/catalog
+
+ install-catalog --add ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat \
+ ${STAGING_DATADIR}/sgml/docbook/dsssl-stylesheets-${PV}/common/catalog
+
+ install-catalog --add ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/dsssl-docbook-stylesheets.cat
+
+}
+
+PACKAGES = ""
diff --git a/packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty b/packages/docbook-sgml-dtd/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/htcwallaby/.mtn2git_empty
+++ b/packages/docbook-sgml-dtd/.mtn2git_empty
diff --git a/packages/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb b/packages/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb
new file mode 100644
index 0000000000..4b0e4629b8
--- /dev/null
+++ b/packages/docbook-sgml-dtd/docbook-sgml-dtd-3.1-native.bb
@@ -0,0 +1,12 @@
+require docbook-sgml-dtd-native.inc
+
+DTD_VERSION = "3.1"
+
+SRC_URI = "http://www.docbook.org/sgml/3.1/docbk31.zip;md5sum=432749c0c806dbae81c8bcb70da3b5d3"
+
+do_compile() {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd-3.html
+ # for details.
+ sed -i -e '/ISO 8879/d' -e 's|DTDDECL "-//OASIS//DTD DocBook V3.1//EN"|SGMLDECL|g' docbook.cat
+}
+
diff --git a/packages/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb b/packages/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb
new file mode 100644
index 0000000000..bd75d6ad68
--- /dev/null
+++ b/packages/docbook-sgml-dtd/docbook-sgml-dtd-4.1-native.bb
@@ -0,0 +1,12 @@
+require docbook-sgml-dtd-native.inc
+
+DTD_VERSION = "4.1"
+
+SRC_URI = "http://docbook.org/sgml/4.1/docbk41.zip"
+
+do_compile() {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd.html
+ # for details.
+ sed -i -e '/ISO 8879/d' -e '/gml/d' docbook.cat
+}
+
diff --git a/packages/docbook-sgml-dtd/docbook-sgml-dtd-4.4-native.bb b/packages/docbook-sgml-dtd/docbook-sgml-dtd-4.4-native.bb
new file mode 100644
index 0000000000..4ff48b7940
--- /dev/null
+++ b/packages/docbook-sgml-dtd/docbook-sgml-dtd-4.4-native.bb
@@ -0,0 +1,10 @@
+require docbook-sgml-dtd-native.inc
+
+DTD_VERSION = "4.4"
+
+do_compile() {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd.html
+ # for details.
+ sed -i -e '/ISO 8879/d' -e '/gml/d' docbook.cat
+}
+
diff --git a/packages/docbook-sgml-dtd/docbook-sgml-dtd-native.inc b/packages/docbook-sgml-dtd/docbook-sgml-dtd-native.inc
new file mode 100644
index 0000000000..69c9811d8a
--- /dev/null
+++ b/packages/docbook-sgml-dtd/docbook-sgml-dtd-native.inc
@@ -0,0 +1,31 @@
+# The DTDs of the various versions have to be installed in parallel and should
+# not replace each other. The installation step is common for all versions
+# and just differs in the DTD_VERSION.
+#
+# However the DTDs need some quirks (see LFS documentation).
+
+DESCRIPTION = "Document type definitions for verification of SGML data files against the DocBook rule set"
+
+DEPENDS = "sgml-common-native"
+
+SRC_URI = "http://www.docbook.org/sgml/${DTD_VERSION}/docbook-${DTD_VERSION}.zip"
+
+S = "${WORKDIR}"
+
+inherit native
+
+do_stage () {
+ # Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/sgml-dtd.html
+ # for details.
+ install -d -m 755 ${STAGING_DATADIR}/sgml/docbook/sgml-dtd-${DTD_VERSION}
+ install docbook.cat ${STAGING_DATADIR}/sgml/docbook/sgml-dtd-${DTD_VERSION}/catalog
+ cp -dpr *.dtd *.mod *.dcl ${STAGING_DATADIR}/sgml/docbook/sgml-dtd-${DTD_VERSION}
+
+ install-catalog --add ${sysconfdir}/sgml/sgml-docbook-dtd-${DTD_VERSION}.cat \
+ ${STAGING_DATADIR}/sgml/docbook/sgml-dtd-${DTD_VERSION}/catalog
+
+ install-catalog --add ${sysconfdir}/sgml/sgml-docbook-dtd-${DTD_VERSION}.cat \
+ ${sysconfdir}/sgml/sgml-docbook.cat
+}
+
+PACKAGES = ""
diff --git a/packages/docbook-utils/docbook-utils-native_0.6.13.bb b/packages/docbook-utils/docbook-utils-native_0.6.13.bb
index a8b6f6a4d6..19aa327107 100644
--- a/packages/docbook-utils/docbook-utils-native_0.6.13.bb
+++ b/packages/docbook-utils/docbook-utils-native_0.6.13.bb
@@ -1,6 +1,6 @@
SECTION = "console/utils"
LICENSE = "GPL"
-DEPENDS = "openjade-native"
+DEPENDS = "openjade-native docbook-sgml-dtd-3.1-native docbook-dsssl-stylesheets-native"
SRC_URI = "ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-${PV}.tar.gz"
S = "${WORKDIR}/docbook-utils-${PV}"
diff --git a/packages/docbook-utils/docbook-utils-native_0.6.14.bb b/packages/docbook-utils/docbook-utils-native_0.6.14.bb
new file mode 100644
index 0000000000..af1113b331
--- /dev/null
+++ b/packages/docbook-utils/docbook-utils-native_0.6.14.bb
@@ -0,0 +1,41 @@
+SECTION = "console/utils"
+LICENSE = "GPL"
+
+PR = "r1"
+
+DEPENDS = "openjade-native sgmlspl-native docbook-dsssl-stylesheets-native docbook-sgml-dtd-3.1-native"
+
+SRC_URI = "ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-${PV}.tar.gz"
+S = "${WORKDIR}/docbook-utils-${PV}"
+
+inherit autotools native
+
+do_configure_prepend() {
+ # Prevents the jw script to search on the build system.
+ sed -i -e "s|/etc/sgml|${sysconfdir}/sgml|g" bin/jw.in
+
+ sed -i -e "s|/etc/sgml|${sysconfdir}/sgml|g" doc/man/Makefile.am
+ sed -i -e "s|/etc/sgml|${sysconfdir}/sgml|g" doc/HTML/Makefile.am
+}
+
+do_stage () {
+ install -d ${STAGING_BINDIR_NATIVE}/
+
+ # Installs the binaries and a bunch of other commonly used names for them.
+ for doctype in html ps dvi man pdf rtf tex texi txt
+ do
+ install -m 0755 ${S}/bin/docbook2$doctype ${STAGING_BINDIR_NATIVE}/
+ ln -sf docbook2$doctype ${STAGING_BINDIR_NATIVE}/db2$doctype
+ ln -sf docbook2$doctype ${STAGING_BINDIR_NATIVE}/docbook-to-$doctype
+ done
+ install -m 0755 ${S}/bin/jw ${STAGING_BINDIR_NATIVE}/
+
+ for i in backends/dvi backends/html backends/man \
+ backends/pdf backends/ps backends/rtf backends/tex \
+ backends/texi backends/txt frontends/docbook \
+ helpers/docbook2man-spec.pl helpers/docbook2texi-spec.pl \
+ docbook-utils.dsl; do
+ install -d ${STAGING_DATADIR}/sgml/docbook/utils-${PV}/`dirname $i`
+ install ${S}/$i ${STAGING_DATADIR}/sgml/docbook/utils-${PV}/$i
+ done
+}
diff --git a/packages/docbook-utils/docbook-utils_0.6.13.bb b/packages/docbook-utils/docbook-utils_0.6.13.bb
index c22d9053bf..ab27062970 100644
--- a/packages/docbook-utils/docbook-utils_0.6.13.bb
+++ b/packages/docbook-utils/docbook-utils_0.6.13.bb
@@ -5,6 +5,9 @@ DESCRIPTION = "docbook-utils contains scripts for easy conversion \
from DocBook SGML files to other formats (for example, HTML, RTF, \
and PostScript), and for comparing SGML files."
+# Not tested.
+DEFAULT_PREFERENCE = "-1"
+
SRC_URI = "ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-${PV}.tar.gz"
inherit autotools
diff --git a/packages/docbook-utils/docbook-utils_0.6.14.bb b/packages/docbook-utils/docbook-utils_0.6.14.bb
new file mode 100644
index 0000000000..c22d9053bf
--- /dev/null
+++ b/packages/docbook-utils/docbook-utils_0.6.14.bb
@@ -0,0 +1,10 @@
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = ""
+DESCRIPTION = "docbook-utils contains scripts for easy conversion \
+from DocBook SGML files to other formats (for example, HTML, RTF, \
+and PostScript), and for comparing SGML files."
+
+SRC_URI = "ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/docbook-utils-${PV}.tar.gz"
+
+inherit autotools
diff --git a/packages/dpkg/dpkg.inc b/packages/dpkg/dpkg.inc
index 5fab2a7e3a..1065f2c186 100644
--- a/packages/dpkg/dpkg.inc
+++ b/packages/dpkg/dpkg.inc
@@ -22,9 +22,9 @@ pkg_postinst_dpkg () {
if [ "x$D" != "x" ]; then
install -d ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d
# this happens at S98 where our good 'ole packages script used to run
- echo -e "#!/bin/sh
+ printf "#!/bin/sh
dpkg --configure -a
-" > ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}configure
+\n" > ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}configure
chmod 0755 ${IMAGE_ROOTFS}/${sysconfdir}/rcS.d/S${DPKG_INIT_POSITION}configure
fi
}
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/.mtn2git_empty b/packages/dtnrg/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/hx4700/.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/linux/linux-handhelds-2.6/looxc550/.mtn2git_empty b/packages/e17/edje-viewer/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/looxc550/.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/e2fsprogs/e2fsprogs_1.38.bb b/packages/e2fsprogs/e2fsprogs_1.38.bb
index 4f6f62bb12..91a391975f 100644
--- a/packages/e2fsprogs/e2fsprogs_1.38.bb
+++ b/packages/e2fsprogs/e2fsprogs_1.38.bb
@@ -1,10 +1,12 @@
require e2fsprogs.inc
-PR = "r10"
+PR = "r11"
SRC_URI += "file://no-hardlinks.patch;patch=1"
-EXTRA_OECONF += " --sbindir=${base_sbindir}"
+EXTRA_OECONF += " --sbindir=${base_sbindir} \
+ --disable-nls \
+ "
do_compile_prepend () {
find ./ -print|xargs chmod u=rwX
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/fix-plugin-path-check.patch b/packages/efl1/epdf/fix-plugin-path-check.patch
index dd5469c286..b218fffb7a 100644
--- a/packages/efl1/epdf/fix-plugin-path-check.patch
+++ b/packages/efl1/epdf/fix-plugin-path-check.patch
@@ -2,18 +2,18 @@ Index: epdf/configure.in
===================================================================
--- epdf.orig/configure.in
+++ epdf/configure.in
-@@ -27,8 +27,8 @@ PKG_CHECK_MODULES(EWL,
- [
- have_ewl="yes"
- requirements="$requirements ewl"
-- EWL_TEST_LIBS_DIR="`$PKG_CONFIG --variable=testsdir ewl`"
-- EWL_TEST_SOURCE_DIR="`$PKG_CONFIG --variable=testssrcdir ewl`"
-+ EWL_TEST_LIBS_DIR="/usr/lib/ewl/tests/"
-+ EWL_TEST_SOURCE_DIR="/usr/share/ewl/examples/"
- AC_SUBST(EWL_TEST_LIBS_DIR)
- AC_SUBST(EWL_TEST_SOURCE_DIR)
- ],
-@@ -55,7 +55,7 @@ PKG_CHECK_MODULES(EPSILON,
+@@ -95,8 +95,8 @@
+ [
+ have_ewl="yes"
+ requirements="$requirements ewl"
+- EWL_TEST_LIBS_DIR="`$PKG_CONFIG --variable=testsdir ewl`"
+- EWL_TEST_SOURCE_DIR="`$PKG_CONFIG --variable=testssrcdir ewl`"
++ EWL_TEST_LIBS_DIR="/usr/lib/ewl/tests/"
++ EWL_TEST_SOURCE_DIR="/usr/share/ewl/examples/"
+ AC_SUBST(EWL_TEST_LIBS_DIR)
+ AC_SUBST(EWL_TEST_SOURCE_DIR)
+ ],
+@@ -144,7 +144,7 @@
[
have_epsilon="yes"
requirements="$requirements epsilon imlib2"
diff --git a/packages/efl1/epdf_cvs.bb b/packages/efl1/epdf_cvs.bb
index 8426b75a17..7ca33bf9d8 100644
--- a/packages/efl1/epdf_cvs.bb
+++ b/packages/efl1/epdf_cvs.bb
@@ -1,8 +1,7 @@
DESCRIPTION = "Epdf is the glue between EFL and libpoppler"
LICENSE = "BSD"
-DEPENDS = "poppler0.6 evas ecore etk ewl"
+DEPENDS = "poppler evas ecore etk ewl"
PV = "0.1.0+cvs${SRCDATE}"
-
PR = "r1"
inherit efl_library
diff --git a/packages/efl1/etk_cvs.bb b/packages/efl1/etk_cvs.bb
index ad959edef6..238d640a68 100644
--- a/packages/efl1/etk_cvs.bb
+++ b/packages/efl1/etk_cvs.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Etk is an advanced widget toolkit based on the Enlightenment Foun
DEPENDS = "evas ecore edje"
LICENSE = "MIT"
PV = "0.1.0+cvs${SRCDATE}"
-PR = "r0"
+PR = "r1"
inherit efl_library
@@ -15,3 +15,4 @@ FILES_${PN}-engines = "${libdir}/etk/engines/*.so ${datadir}"
FILES_${PN}-dev += "${libdir}/etk/engines/*.a ${libdir}/etk/engines/*.la"
FILES_${PN}-dbg += "${libdir}/etk/engines/.debug/"
+RRECOMMENDS_${PN} = "${PN}-engines"
diff --git a/packages/efl1/evas.inc b/packages/efl1/evas.inc
index 179f03b0d8..0dc8f2d0e8 100644
--- a/packages/efl1/evas.inc
+++ b/packages/efl1/evas.inc
@@ -35,3 +35,19 @@ FILES_${PN}-dbg += "${libdir}/evas/modules/*/*/*/.debug/"
FILES_${PN} = "${libdir}/libevas*.so*"
PACKAGES_DYNAMIC = "libevas-engine-* libevas-loader-* libevas-saver-*"
+
+RRECOMMENDS_${PN} = "\
+ libevas-engine-buffer \
+ libevas-engine-fb \
+ libevas-engine-software-generic \
+ libevas-engine-software-x11 \
+ libevas-engine-software-16 \
+ libevas-engine-software-16-x11 \
+ libevas-engine-xrender-x11 \
+ \
+ libevas-loader-png \
+ libevas-loader-jpeg \
+ libevas-loader-eet \
+ libevas-loader-svg \
+"
+
diff --git a/packages/efl1/evas_cvs.bb b/packages/efl1/evas_cvs.bb
index 1bacbe3d1c..0734967992 100644
--- a/packages/efl1/evas_cvs.bb
+++ b/packages/efl1/evas_cvs.bb
@@ -1,5 +1,5 @@
require evas.inc
-PR = "r3"
+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/efl1/ewl_cvs.bb b/packages/efl1/ewl_cvs.bb
index 8fb8521d62..193efcbe18 100644
--- a/packages/efl1/ewl_cvs.bb
+++ b/packages/efl1/ewl_cvs.bb
@@ -2,10 +2,9 @@ DESCRIPTION = "The Enlightened Widget Library, \
a simple-to-use general purpose widget library \
based on the enlightenment foundation libraries."
DEPENDS = "evas ecore edje emotion efreet epsilon"
-RSUGGESTS_${PN} += "ewl-themes"
LICENSE = "MIT"
PV = "0.5.1+cvs${SRCDATE}"
-PR = "r1"
+PR = "r2"
inherit efl_library
@@ -31,3 +30,5 @@ FILES_${PN}-dbg += "${libdir}/ewl/*/.debug"
FILES_${PN}-engines = "${libdir}/ewl/engines/*.so*"
FILES_${PN}-plugins = "${libdir}/ewl/plugins/*.so*"
+
+RRECOMMENDS_${PN} = "${PN}-engines ${PN}-plugins ewl-themes"
diff --git a/packages/emacs/emacs-x11_20060801.bb b/packages/emacs/emacs-x11_20060801.bb
index 8b598bf21f..3878c42536 100644
--- a/packages/emacs/emacs-x11_20060801.bb
+++ b/packages/emacs/emacs-x11_20060801.bb
@@ -1,3 +1,5 @@
require emacs-x11_cvs.bb
-SRCDATE = "${PV}"
+
+SRCDATE = "20060801"
+
DEFAULT_PREFERENCE = "0"
diff --git a/packages/emacs/emacs-x11_cvs.bb b/packages/emacs/emacs-x11_cvs.bb
index 8fdba95742..809176a3c3 100644
--- a/packages/emacs/emacs-x11_cvs.bb
+++ b/packages/emacs/emacs-x11_cvs.bb
@@ -1,5 +1,8 @@
require emacs_cvs.bb
+
# full X (non-diet) is needed for X support
DEPENDS += "libx11"
+
EXTRA_OECONF = "--without-sound"
+
RREPLACES = "emacs"
diff --git a/packages/emacs/emacs_20060801.bb b/packages/emacs/emacs_20060801.bb
index aa72944eca..834e5b6239 100644
--- a/packages/emacs/emacs_20060801.bb
+++ b/packages/emacs/emacs_20060801.bb
@@ -1,3 +1,3 @@
require emacs_cvs.bb
-SRCDATE = "${PV}"
+SRCDATE = "20060801"
DEFAULT_PREFERENCE = "0"
diff --git a/packages/emacs/emacs_cvs.bb b/packages/emacs/emacs_cvs.bb
index ef58dfa5b6..e8f263d1a9 100644
--- a/packages/emacs/emacs_cvs.bb
+++ b/packages/emacs/emacs_cvs.bb
@@ -7,7 +7,9 @@ DEPENDS += "qemu-native"
#NOTE: I have found that this only works with qemu-0.8.0. If I use 0.8.1 or 0.8.2
# the build gets hung up on compiling certain .el files
-PR = "r7"
+PV = "22.0.50+cvs${SRCDATE}"
+PE = "1"
+PR = "r9"
DEFAULT_PREFERENCE = "-1"
@@ -17,14 +19,14 @@ S = "${WORKDIR}/emacs"
inherit autotools
-PACKAGES = "${PN}-el ${PN}-dbg ${PN} ${PN}-doc ${PN}-dev ${PN}-locale"
+PACKAGES =+ "${PN}-el"
-FILES_${PN}-el = "${datadir}/emacs/22.0.50/*/*.el.gz \
- ${datadir}/emacs/22.0.50/*/*/*.el.gz"
+FILES_${PN}-el = "${datadir}/emacs/*/*/*.el.gz \
+ ${datadir}/emacs/*/*/*/*.el.gz"
FILES_${PN} += "${datadir}/emacs"
-QEMU = "qemu-arm -L ${STAGING_DIR}/${TARGET_SYS}"
+QEMU = "qemu-${TARGET_ARCH} -L ${STAGING_DIR}/${TARGET_SYS}"
LDFLAGS += "-L${CROSS_DIR}/${TARGET_SYS}/lib"
EXTRA_OECONF = "--without-sound --without-x"
diff --git a/packages/enca/enca_1.9.bb b/packages/enca/enca_1.9.bb
index 1db1e19be7..ddd7acef82 100644
--- a/packages/enca/enca_1.9.bb
+++ b/packages/enca/enca_1.9.bb
@@ -3,9 +3,9 @@ SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPLv2"
HOMEPAGE = "http://trific.ath.cx/software/enca/"
-PR = "r2"
+PR = "r3"
-SRC_URI = "http://trific.ath.cx/Ftp//enca/enca-${PV}.tar.bz2 \
+SRC_URI = "http://www.sourcefiles.org/Networking/Tools/Miscellanenous/enca-${PV}.tar.bz2 \
file://configure-hack.patch;patch=1 \
file://dont-run-tests.patch;patch=1 \
file://configure-remove-dumbness.patch;patch=1 \
diff --git a/packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty b/packages/espeak/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/magician/.mtn2git_empty
+++ b/packages/espeak/.mtn2git_empty
diff --git a/packages/espeak/espeak_1.30.bb b/packages/espeak/espeak_1.30.bb
new file mode 100644
index 0000000000..a460b5b4ba
--- /dev/null
+++ b/packages/espeak/espeak_1.30.bb
@@ -0,0 +1,52 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: espeak_1.30.bb
+# Date: 20080104 (YMD)
+
+DESCRIPTION = "eSpeak is a compact open source software speech synthesizer"
+SECTION = "base"
+LICENSE = "GPL"
+
+DEPENDS = "portaudio-v19"
+
+######################################################################################
+
+PR = "r1"
+
+SRC_URI = "http://kent.dl.sourceforge.net/sourceforge/espeak/espeak-${PV}-source.zip"
+
+S = "${WORKDIR}/${PN}-${PV}-source"
+
+FILES_${PN} += " /usr/share/espeak-data/ "
+
+do_configure() {
+ # espeak supports portaudio in APIs V18 and V19
+ cp ${S}/src/portaudio19.h ${S}/src/portaudio.h
+}
+
+do_compile() {
+ cd src
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ install -d ${D}/usr/share/espeak-data
+
+ install -m 0755 ${S}/src/espeak ${D}${bindir}
+ oe_libinstall -so -C src libespeak ${D}${libdir}
+
+ cp -prf ${S}/espeak-data/* ${D}/usr/share/espeak-data
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/espeak
+ install -m 0644 ${S}/src/speak_lib.h ${STAGING_INCDIR}/espeak/
+ oe_libinstall -so -C src libespeak ${STAGING_LIBDIR}
+}
diff --git a/packages/flite/flite-1.3/flite-1.3-Makefile.patch b/packages/flite/flite-1.3/flite-1.3-Makefile.patch
new file mode 100644
index 0000000000..9a1a82e13b
--- /dev/null
+++ b/packages/flite/flite-1.3/flite-1.3-Makefile.patch
@@ -0,0 +1,405 @@
+Index: lang/usenglish/Makefile
+===================================================================
+--- flite-1.3-release/lang/usenglish/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/usenglish/Makefile (.../release-1.2) (revision 7)
+@@ -38,6 +38,7 @@
+ DIRNAME=lang/usenglish
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ H = usenglish.h us_int_accent_cart.h us_int_tone_cart.h us_durz_cart.h \
+ us_ffeatures.h us_phrasing_cart.h us_text.h us_f0.h us_nums_cart.h
+ SRCS = us_int_accent_cart.c us_int_tone_cart.c us_f0_model.c \
+@@ -45,7 +46,11 @@
+ us_phoneset.c us_ffeatures.c us_phrasing_cart.c \
+ us_gpos.c us_text.c us_expand.c us_postlex.c \
+ us_nums_cart.c us_aswd.c usenglish.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_usenglish
+
+Index: lang/cmu_us_kal/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_us_kal/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmu_us_kal/Makefile (.../release-1.2) (revision 7)
+@@ -43,7 +43,12 @@
+ cmu_us_kal_lpc.c \
+ cmu_us_kal_res.c \
+ cmu_us_kal_residx.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_us_kal
+
+Index: lang/cmu_us_kal16/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_us_kal16/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmu_us_kal16/Makefile (.../release-1.2) (revision 7)
+@@ -44,7 +44,12 @@
+ cmu_us_kal16_lpc.c \
+ cmu_us_kal16_res.c \
+ cmu_us_kal16_residx.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_us_kal16
+
+Index: lang/cmu_time_awb/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmu_time_awb/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmu_time_awb/Makefile (.../release-1.2) (revision 7)
+@@ -45,7 +45,12 @@
+ cmu_time_awb_mcep.c \
+ cmu_time_awb_lpc.c \
+ cmu_time_awb_lex_entry.c
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ SCM=
+ FILES = Makefile $(SCM) $(SRCS) $(H)
+ LIBNAME = flite_cmu_time_awb
+
+Index: lang/cmulex/Makefile
+===================================================================
+--- flite-1.3-release/lang/cmulex/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/lang/cmulex/Makefile (.../release-1.2) (revision 7)
+@@ -38,13 +38,20 @@
+ DIRNAME=lang/cmulex
+ BUILD_DIRS =
+ ALL_DIRS=
++
+ H = cmu_lts_model.h cmulex.h
+ SRCS = cmu_lts_rules.c cmu_lts_model.c \
+ cmu_lex.c cmu_lex_entries.c cmu_lex_data.c
+ LEX_DATA_INCLUDES = cmu_lex_data_raw.c cmu_lex_num_bytes.c \
+ cmu_lex_phones_huff_table.c cmu_lex_entries_huff_table.c
+
+-OBJS = $(SRCS:.c=.o)
++include $(TOP)/config/config
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
++
+ SCRIPTS=make_cmulex
+
+ SCM=
+
+Index: src/hrg/Makefile
+===================================================================
+--- flite-1.3-release/src/hrg/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/hrg/Makefile (.../release-1.2) (revision 7)
+@@ -39,9 +39,14 @@
+ BUILD_DIRS =
+ ALL_DIRS=
+ H =
++include $(TOP)/config/config
+ SRCS = cst_utterance.c cst_relation.c cst_item.c cst_ffeature.c \
+ cst_rel_io.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: src/utils/Makefile
+===================================================================
+--- flite-1.3-release/src/utils/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/utils/Makefile (.../release-1.2) (revision 7)
+@@ -44,8 +44,13 @@
+ cst_tokenstream.c cst_val.c cst_features.c \
+ cst_endian.c cst_socket.c cst_val_const.c \
+ cst_val_user.c cst_args.c
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os) $(MMAPTYPE:%=cst_mmap_%.os) \
++ $(STDIOTYPE:%=cst_file_%.os)
++else
+ OBJS := $(SRCS:.c=.o) $(MMAPTYPE:%=cst_mmap_%.o) \
+ $(STDIOTYPE:%=cst_file_%.o)
++endif
+ FILES = Makefile $(H) $(SRCS) \
+ cst_mmap_posix.c cst_mmap_win32.c cst_mmap_none.c \
+ cst_file_stdio.c cst_file_wince.c cst_file_palmos.c
+
+Index: src/audio/Makefile
+===================================================================
+--- flite-1.3-release/src/audio/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/audio/Makefile (.../release-1.2) (revision 7)
+@@ -43,9 +43,13 @@
+
+ BASESRCS = auclient.c auserver.c audio.c
+ SRCS = $(BASESRCS) $(AUDIODRIVER:%=au_%.c)
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(BASESRCS) au_command.c au_none.c \
+- au_oss.c au_sun.c au_wince.c au_palmos.c
++ au_oss.c au_sun.c au_wince.c au_palmos.c au_alsa.c
+ LIBNAME = flite
+
+ LOCAL_INCLUDES = -I. $(AUDIODEFS)
+
+Index: src/lexicon/Makefile
+===================================================================
+--- flite-1.3-release/src/lexicon/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/lexicon/Makefile (.../release-1.2) (revision 7)
+@@ -38,8 +38,13 @@
+ DIRNAME=src/lexicon
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_lexicon.c cst_lts.c cst_lts_rewrites.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(SRCS)
+ LIBNAME = flite
+
+Index: src/synth/Makefile
+===================================================================
+--- flite-1.3-release/src/synth/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/synth/Makefile (.../release-1.2) (revision 7)
+@@ -38,9 +38,14 @@
+ DIRNAME=src/synth
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_synth.c cst_utt_utils.c cst_voice.c cst_phoneset.c \
+ flite.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(SRCS)
+ LIBNAME = flite
+
+Index: src/speech/Makefile
+===================================================================
+--- flite-1.3-release/src/speech/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/speech/Makefile (.../release-1.2) (revision 7)
+@@ -39,9 +39,14 @@
+ BUILD_DIRS =
+ ALL_DIRS=
+ H =
++include $(TOP)/config/config
+ SRCS = cst_wave.c cst_wave_io.c cst_track.c cst_track_io.c \
+ cst_wave_utils.c cst_lpcres.c rateconv.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: src/wavesynth/Makefile
+===================================================================
+--- flite-1.3-release/src/wavesynth/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/wavesynth/Makefile (.../release-1.2) (revision 7)
+@@ -38,9 +38,14 @@
+ DIRNAME=src/wavesynth
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_units.c cst_sigpr.c cst_clunits.c cst_diphone.c \
+ cst_sigprFP.c cst_sts.c cst_reflpc.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ LIBNAME = flite
+ FILES = Makefile $(SRCS)
+
+Index: src/regex/Makefile
+===================================================================
+--- flite-1.3-release/src/regex/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/regex/Makefile (.../release-1.2) (revision 7)
+@@ -42,8 +42,13 @@
+ DIRNAME=src/regex
+ BUILD_DIRS =
+ ALL_DIRS=
++include $(TOP)/config/config
+ SRCS = cst_regex.c regexp.c regsub.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: src/stats/Makefile
+===================================================================
+--- flite-1.3-release/src/stats/Makefile (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/src/stats/Makefile (.../release-1.2) (revision 7)
+@@ -39,8 +39,13 @@
+ BUILD_DIRS =
+ ALL_DIRS=
+ H =
++include $(TOP)/config/config
+ SRCS = cst_cart.c cst_viterbi.c cst_ss.c
+-OBJS = $(SRCS:.c=.o)
++ifdef SHFLAGS
++OBJS := $(SRCS:.c=.os)
++else
++OBJS := $(SRCS:.c=.o)
++endif
+ FILES = Makefile $(H) $(SRCS)
+ LIBNAME = flite
+
+Index: config/common_make_rules
+===================================================================
+--- flite-1.3-release/config/common_make_rules (.../flite-1.3-orig) (revision 7)
++++ flite-1.3-release/config/common_make_rules (.../release-1.2) (revision 7)
+@@ -73,12 +73,13 @@
+ ifdef SHFLAGS
+ SOOBJS = $(OBJS:.o=.os)
+ FULLSHOBJS = $(SOOBJS:%=$(OBJDIR)/%)
+-ifdef LIBNAME
+-ALL += $(OBJDIR)/.build_so
++#ifdef LIBNAME
++#ALL += $(OBJDIR)/.build_so
++#endif
+ endif
+-endif
+ ifdef LIBNAME
+ ALL += $(OBJDIR)/.build_lib
++ALL += $(OBJDIR)/.build_so
+ endif
+ # Only do some directories when you are not cross compiling
+ ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
+@@ -117,14 +118,17 @@
+ @ touch $(OBJDIR)/.build_so
+
+ # Used in the lib/ directory and in building new voices
+-$(OBJDIR)/%.so: %.shared.a
++#$(OBJDIR)/%.so: %.shared.a
++%.so: %.shared.a
+ @ echo making $@
+ @ rm -rf shared_os && mkdir shared_os
+ @ rm -f $@ $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+ @ (cd shared_os && ar x ../$<)
+ @ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
+- @ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+- @ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
++ #@ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
++ #@ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
++ @ ln -s $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION}
++ @ ln -s $@.${PROJECT_SHLIB_VERSION} $@
+ @ rm -rf shared_os
+
+ $(OBJDIR)/.make_build_dirs:
+
+Index: lib/Makefile
+===================================================================
+--- flite-1.3-release/lib/Makefile (.../flite-1.3-orig) (revision 0)
++++ flite-1.3-release/lib/Makefile (.../release-1.2) (revision 7)
+@@ -0,0 +1,70 @@
++###########################################################################
++## ##
++## Language Technologies Institute ##
++## Carnegie Mellon University ##
++## Copyright (c) 1999 ##
++## All Rights Reserved. ##
++## ##
++## Permission is hereby granted, free of charge, to use and distribute ##
++## this software and its documentation without restriction, including ##
++## without limitation the rights to use, copy, modify, merge, publish, ##
++## distribute, sublicense, and/or sell copies of this work, and to ##
++## permit persons to whom this work is furnished to do so, subject to ##
++## the following conditions: ##
++## 1. The code must retain the above copyright notice, this list of ##
++## conditions and the following disclaimer. ##
++## 2. Any modifications must be clearly marked as such. ##
++## 3. Original authors' names are not deleted. ##
++## 4. The authors' names are not used to endorse or promote products ##
++## derived from this software without specific prior written ##
++## permission. ##
++## ##
++## CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ##
++## DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ##
++## ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ##
++## SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ##
++## FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ##
++## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ##
++## AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ##
++## ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ##
++## THIS SOFTWARE. ##
++## ##
++###########################################################################
++## ##
++## FLITE libraries ##
++## ##
++###########################################################################
++TOP=..
++DIRNAME=lib
++BUILD_DIRS =
++ALL_DIRS=
++FILES = Makefile
++LIBNAMES = flite flite_cmulex flite_usenglish \
++ flite_cmu_us_kal flite_cmu_us_kal16 flite_cmu_time_awb
++
++STATICLIBS= $(LIBNAMES:%=lib%.a)
++SHAREDARLIBS= $(LIBNAMES:%=lib%.shared.a)
++#SHAREDLIBS = $(LIBNAMES:%=lib%.so)
++SHAREDLIBS = $(SHAREDARLIBS:%.shared.a=%.so)
++VERSIONSHAREDLIBS = $(SHAREDLIBS:%=%.${PROJECT_VERSION}) \
++ $(SHAREDLIBS:%=%.${PROJECT_SHLIB_VERSION})
++ALL_LIBS = $(STATICLIBS) $(SHAREDLIBS) $(VERSIONSHAREDLIBS)
++
++ALL = shared_libs
++
++LOCAL_CLEAN=*.a *.so *.so.${PROJECT_VERSION} *.so.${PROJECT_SHLIB_VERSION}
++
++include $(TOP)/config/common_make_rules
++
++ifdef SHFLAGS
++shared_libs: $(SHAREDLIBS)
++else
++shared_libs: nothing
++endif
++
++install:
++ @ cp -vf $(LIBDIR)/* .
++ @ $(MAKE) shared_libs
++ @ echo ARLIBS: $(SHAREDARLIBS)
++ @ echo SHARLIBS: $(SHAREDLIBS)
++ @ tar cvf - $(ALL_LIBS) | ( cd $(INSTALLLIBDIR) && tar xf -)
diff --git a/packages/flite/flite-1.3/flite-1.3-configure-with-audio.patch b/packages/flite/flite-1.3/flite-1.3-configure-with-audio.patch
new file mode 100644
index 0000000000..3c077530f6
--- /dev/null
+++ b/packages/flite/flite-1.3/flite-1.3-configure-with-audio.patch
@@ -0,0 +1,12 @@
+--- flite-1.3-release/configure.in.old 2008-01-05 10:14:57.000000000 -0600
++++ flite-1.3-release/configure.in 2008-01-05 10:15:38.000000000 -0600
+@@ -220,7 +220,8 @@ dnl allow the user to override the one d
+ dnl
+ AC_ARG_WITH( audio,
+ [ --with-audio with specific audio support (none linux freebsd etc) ],
+- AUDIODRIVER=$with_audio )
++ [AUDIODRIVER=$with_audio
++ AUDIODEFS=])
+
+ if test "x$AUDIODEFS" = x; then
+ case "$AUDIODRIVER" in
diff --git a/packages/flite/flite-1.3/flite-1.3-fix-read-only-assignments.patch b/packages/flite/flite-1.3/flite-1.3-fix-read-only-assignments.patch
new file mode 100644
index 0000000000..da8c88370f
--- /dev/null
+++ b/packages/flite/flite-1.3/flite-1.3-fix-read-only-assignments.patch
@@ -0,0 +1,15 @@
+--- flite-1.3-release/include/cst_sts.h.old 2008-01-05 10:09:35.000000000 -0600
++++ flite-1.3-release/include/cst_sts.h 2008-01-05 10:08:38.000000000 -0600
+@@ -45,9 +45,9 @@
+ /* else where, this information plus the indexes in the Unit relation */
+ /* allow reconstruction of the signal itself */
+ struct cst_sts_struct {
+- const unsigned short *frame;
+- const int size; /* in samples */
+- const unsigned char *residual;
++ unsigned short *frame;
++ int size; /* in samples */
++ unsigned char *residual;
+ };
+ typedef struct cst_sts_struct cst_sts;
+
diff --git a/packages/linux/linux-handhelds-2.6/rx1950/.mtn2git_empty b/packages/flite/flite-alsa-1.2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/rx1950/.mtn2git_empty
+++ b/packages/flite/flite-alsa-1.2/.mtn2git_empty
diff --git a/packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff b/packages/flite/flite-alsa-1.2/flite-1.2-alsa_support-1.2.diff
index 3d2753a01f..3d2753a01f 100644
--- a/packages/flite/flite-1.2/flite-1.2-alsa_support-1.2.diff
+++ b/packages/flite/flite-alsa-1.2/flite-1.2-alsa_support-1.2.diff
diff --git a/packages/flite/flite-alsa-1.2/flite-alsa-1.2-configure-with-audio.patch b/packages/flite/flite-alsa-1.2/flite-alsa-1.2-configure-with-audio.patch
new file mode 100644
index 0000000000..b344877d04
--- /dev/null
+++ b/packages/flite/flite-alsa-1.2/flite-alsa-1.2-configure-with-audio.patch
@@ -0,0 +1,12 @@
+--- flite-1.2-release/configure.in.old 2008-01-06 02:30:57.000000000 -0600
++++ flite-1.2-release/configure.in 2008-01-06 02:31:32.000000000 -0600
+@@ -145,7 +145,8 @@ dnl allow the user to override the one d
+ dnl
+ AC_ARG_WITH( audio,
+ [ --with-audio with specific audio support (none linux freebsd etc) ],
+- AUDIODRIVER=$with_audio )
++ [AUDIODRIVER=$with_audio
++ AUDIODEFS=])
+
+ if test "x$AUDIODEFS" = x; then
+ case "$AUDIODRIVER" in
diff --git a/packages/linux/linux-handhelds-2.6/rx3000/.mtn2git_empty b/packages/flite/flite-alsa-1.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-handhelds-2.6/rx3000/.mtn2git_empty
+++ b/packages/flite/flite-alsa-1.3/.mtn2git_empty
diff --git a/packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff b/packages/flite/flite-alsa-1.3/flite-1.3-alsa_support-1.2.diff
index b3e4b7aae4..b3e4b7aae4 100644
--- a/packages/flite/flite-1.3/flite-1.3-alsa_support-1.2.diff
+++ b/packages/flite/flite-alsa-1.3/flite-1.3-alsa_support-1.2.diff
diff --git a/packages/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch b/packages/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch
new file mode 100644
index 0000000000..e1e7aed508
--- /dev/null
+++ b/packages/flite/flite-alsa-1.3/flite-alsa-1.3-configure-with-audio.patch
@@ -0,0 +1,12 @@
+--- flite-1.3-release/configure.in.old 2008-01-06 02:17:47.000000000 -0600
++++ flite-1.3-release/configure.in 2008-01-06 02:19:56.000000000 -0600
+@@ -220,7 +220,8 @@ dnl allow the user to override the one d
+ dnl
+ AC_ARG_WITH( audio,
+ [ --with-audio with specific audio support (none linux freebsd etc) ],
+- AUDIODRIVER=$with_audio )
++ [AUDIODRIVER=$with_audio
++ AUDIODEFS=])
+
+ if test "x$AUDIODEFS" = x; then
+ case "$AUDIODRIVER" in
diff --git a/packages/flite/flite-alsa_1.2.bb b/packages/flite/flite-alsa_1.2.bb
new file mode 100644
index 0000000000..92db8c34f9
--- /dev/null
+++ b/packages/flite/flite-alsa_1.2.bb
@@ -0,0 +1,10 @@
+require flite.inc
+
+PR = "r1"
+
+EXTRA_OECONF = "--with-audio=alsa --enable-shared"
+
+SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.bz2 \
+# file://fix-read-only-assignments.patch;patch=1 \ # included in the alsa patch
+#source http://homepage.hispeed.ch/loehrer/downloads/flite-1.2-alsa_support-1.2.diff.bz2 \
+ file://flite-1.2-alsa_support-1.2.diff;patch=1"
diff --git a/packages/flite/flite-alsa_1.3.bb b/packages/flite/flite-alsa_1.3.bb
new file mode 100644
index 0000000000..438fe38e0e
--- /dev/null
+++ b/packages/flite/flite-alsa_1.3.bb
@@ -0,0 +1,11 @@
+require flite.inc
+
+PR = "r1"
+
+EXTRA_OECONF = "--with-audio=alsa --enable-shared"
+
+SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.gz \
+# file://fix-read-only-assignments.patch;patch=1 \ # fixed elsewhere in 1.3 release?
+#source http://homepage.hispeed.ch/loehrer/downloads/flite-1.3-alsa_support-1.2.diff.bz2 \
+ file://flite-1.3-alsa_support-1.2.diff;patch=1 \
+ file://flite-alsa-1.3-configure-with-audio.patch;patch=1"
diff --git a/packages/flite/flite.inc b/packages/flite/flite.inc
index 59373ba60d..60a9d04419 100644
--- a/packages/flite/flite.inc
+++ b/packages/flite/flite.inc
@@ -9,9 +9,9 @@ PARALLEL_MAKE = ""
S = "${WORKDIR}/flite-${PV}-release"
-inherit autotools
+CFLAGS += " -lasound "
-EXTRA_OECONF = "--with-audio=alsa --enable-shared"
+inherit autotools
PACKAGES += "lib${PN} lib${PN}-vox8 lib${PN}-vox16"
@@ -32,9 +32,10 @@ do_install() {
oe_runmake INSTALLBINDIR="${D}${bindir}" INSTALLLIBDIR="${D}${libdir}" INSTALLINCDIR="${D}${includedir}" install
}
-
do_stage () {
- install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/
+ install -d ${STAGING_INCDIR}/flite
+ install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/flite/
+
oe_libinstall -C lib -a -so libflite ${STAGING_LIBDIR}
oe_libinstall -C lib -a -so libflite_cmu_time_awb ${STAGING_LIBDIR}
oe_libinstall -C lib -a -so libflite_cmulex ${STAGING_LIBDIR}
diff --git a/packages/flite/flite_1.2.bb b/packages/flite/flite_1.2.bb
index e5a165eb97..7169663ce7 100644
--- a/packages/flite/flite_1.2.bb
+++ b/packages/flite/flite_1.2.bb
@@ -1,8 +1,9 @@
require flite.inc
-PR = "r3"
+PR = "r5"
+
+EXTRA_OECONF = "--with-audio=oss --enable-shared"
SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.bz2 \
-# http://homepage.hispeed.ch/loehrer/downloads/flite-1.2-alsa_support-1.2.diff.bz2 \
- file://flite-1.2-alsa_support-1.2.diff;patch=1"
-# file://configure-with-audio.patch;patch=1 \
+ file://fix-read-only-assignments.patch;patch=1 \
+ file://configure-with-audio.patch;patch=1"
diff --git a/packages/flite/flite_1.3.bb b/packages/flite/flite_1.3.bb
index 85154b2b36..360ccb0c23 100644
--- a/packages/flite/flite_1.3.bb
+++ b/packages/flite/flite_1.3.bb
@@ -1,8 +1,10 @@
require flite.inc
-PR = "r0"
+PR = "r3"
+
+EXTRA_OECONF = "--with-audio=oss --enable-shared"
SRC_URI = "http://www.speech.cs.cmu.edu/flite/packed/flite-${PV}/flite-${PV}-release.tar.gz \
-# http://homepage.hispeed.ch/loehrer/downloads/flite-1.3-alsa_support-1.2.diff.bz2 \
- file://flite-1.3-alsa_support-1.2.diff;patch=1"
-# file://fix-read-only-assignments.patch;patch=1 \
+ file://flite-1.3-Makefile.patch;patch=1 \
+# file://flite-1.3-fix-read-only-assignments.patch;patch=1 \ # fixed elsewhere in 1.3 release?
+ file://flite-1.3-configure-with-audio.patch;patch=1"
diff --git a/packages/flumotion/flumotion_0.4.1.bb b/packages/flumotion/flumotion_0.4.1.bb
index aad4eb3382..f709086846 100644
--- a/packages/flumotion/flumotion_0.4.1.bb
+++ b/packages/flumotion/flumotion_0.4.1.bb
@@ -1,13 +1,19 @@
DESCRIPTION = "Fluendo Streaming Server"
LICENSE = "GPL"
-DEPENDS = "gstreamer python-imaging python-gst twisted python-pygtk2"
-RDEPENDS = " python-resource python-pprint python-threading python-imaging python-xml python-curses python-compression python-fcntl python-pygobject python-pickle python-netclient python-datetime python-crypt python-twisted-core python-twisted-web python-lang python-zopeinterface python-textutils python-core python-gst python-misc"
-RDEPENDS_${PN}-gui = "${PN} python-pygtk2 python-pycairo "
-PR = "r7"
+DEPENDS = "gstreamer python-imaging python-gst twisted python-pygtk"
+RDEPENDS = "python-resource python-pprint python-threading \
+ python-imaging python-xml python-curses \
+ python-compression python-fcntl python-pygobject \
+ python-pickle python-netclient python-datetime \
+ python-crypt python-twisted-core python-twisted-web \
+ python-lang python-zopeinterface python-textutils \
+ python-gst python-misc"
+RDEPENDS_${PN}-gui = "${PN} python-pygtk python-pycairo"
+PR = "r9"
SRC_URI = "http://www.flumotion.net/src/flumotion/flumotion-${PV}.tar.bz2 \
file://python-path.patch;patch=1 \
- file://no-check-for-python-stuff.patch;patch=1"
+ file://no-check-for-python-stuff.patch;patch=1"
inherit autotools distutils-base pkgconfig
diff --git a/packages/linux/linux-rp-2.6.16/.mtn2git_empty b/packages/fmtools/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.16/.mtn2git_empty
+++ b/packages/fmtools/.mtn2git_empty
diff --git a/packages/linux/linux-rp-2.6.17/.mtn2git_empty b/packages/fmtools/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.17/.mtn2git_empty
+++ b/packages/fmtools/files/.mtn2git_empty
diff --git a/packages/fmtools/files/makefile.patch b/packages/fmtools/files/makefile.patch
new file mode 100644
index 0000000000..41c0086b82
--- /dev/null
+++ b/packages/fmtools/files/makefile.patch
@@ -0,0 +1,11 @@
+--- fmtools-1.0.2/Makefile 2002-08-17 06:05:09.000000000 +0200
++++ fmtools-1.0.2p/Makefile 2007-12-22 21:45:28.000000000 +0100
+@@ -1,8 +1,5 @@
+ # fmtools Makefile - just the basics for now
+
+-CC = gcc
+-CFLAGS = -Wall -O2
+-
+ INSTALL = /usr/bin/install
+
+ # Since fmtools doesn't use configure, these paths are provided here
diff --git a/packages/fmtools/fmtools_1.0.2.bb b/packages/fmtools/fmtools_1.0.2.bb
new file mode 100644
index 0000000000..a1f9fb0f39
--- /dev/null
+++ b/packages/fmtools/fmtools_1.0.2.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "fmtools - programs for Video for Linux radio cards"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://www.stanford.edu/~blp/fmtools/fmtools-1.0.2.tar.gz \
+ file://makefile.patch;patch=1"
+
+inherit autotools
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${S}/fm ${D}${bindir}/fm
+ install -m 0755 ${S}/fmscan ${D}${bindir}/fmscan
+}
+
diff --git a/packages/freenote/freenote_1.12.0.bb b/packages/freenote/freenote_1.12.0.bb
index 72610c306c..e28689ebf0 100644
--- a/packages/freenote/freenote_1.12.0.bb
+++ b/packages/freenote/freenote_1.12.0.bb
@@ -15,7 +15,7 @@ inherit opie
do_configure_prepend() {
mv -f FreeNote subdir1
mv -f FreeNoteSetup subdir2
- echo -e "TEMPLATE=subdirs\nSUBDIRS=subdir1 subdir2\n" >> freenote.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=subdir1 subdir2\n" >> freenote.pro
pushd ${S}/subdir1 && rm *.pro && qmake -project && echo "TARGET=FreeNote" >> subdir1.pro && popd
pushd ${S}/subdir2 && rm *.pro && qmake -project && echo "TARGET=FreeNoteSetup" >> subdir2.pro && popd
}
diff --git a/packages/fstests/fstests.bb b/packages/fstests/fstests.bb
index a84237f263..027a990200 100644
--- a/packages/fstests/fstests.bb
+++ b/packages/fstests/fstests.bb
@@ -3,7 +3,9 @@ HOMEPAGE = "http://www.o-hand.com"
SECTION = "devel"
LICENSE = "GPL"
PV = "0.0+svn${SRCDATE}"
-PR = "r1"
+PR = "r2"
+
+DEPENDS = "gtk+"
inherit autotools
diff --git a/packages/gallery/gallery_1.5.5.bb b/packages/gallery/gallery_1.5.5.bb
index 9aba2a2f0a..5756e98567 100644
--- a/packages/gallery/gallery_1.5.5.bb
+++ b/packages/gallery/gallery_1.5.5.bb
@@ -32,7 +32,7 @@ do_compile() {
#
do_install() {
mkdir -p ${D}/${DEST_DIR} ${D}/etc/apache2/modules.d
- cp -a ${S} ${D}/${DEST_DIR}
+ cp -pPR ${S} ${D}/${DEST_DIR}
cp ${FILESDIR}/gallery.conf ${D}/etc/apache2/modules.d/95_gallery.conf
}
diff --git a/packages/gammu/gammu_1.13.0.bb b/packages/gammu/gammu_1.17.0.bb
index fc7adb1b79..fc7adb1b79 100644
--- a/packages/gammu/gammu_1.13.0.bb
+++ b/packages/gammu/gammu_1.17.0.bb
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..dea1819cdb
--- /dev/null
+++ b/packages/gcc/gcc-cross-sdk_4.2.2.bb
@@ -0,0 +1,16 @@
+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}"
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc mpfr"
+PACKAGES = "${PN}"
+
+require gcc_${PV}.bb
+require gcc4-build-sdk.inc
+require gcc-package-sdk.inc
diff --git a/packages/gcc/gcc-native.inc b/packages/gcc/gcc-native.inc
new file mode 100644
index 0000000000..3cf20a4589
--- /dev/null
+++ b/packages/gcc/gcc-native.inc
@@ -0,0 +1,28 @@
+DEPENDS = ""
+PACKAGES = ""
+PROVIDES = "gcc-native-${PV}"
+
+inherit native
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
+
+# This is intended to be a -very- basic config
+EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${layout_prefix} \
+ --with-newlib \
+ --disable-shared \
+ --disable-threads \
+ --disable-multilib \
+ --disable-__cxa_atexit \
+ --enable-languages=c \
+ --enable-target-optspace \
+ --program-prefix=${TARGET_PREFIX}"
+
+do_install () {
+ :
+}
+
+do_stage () {
+ cd gcc
+ oe_runmake install-common install-headers install-libgcc
+ install -m 0755 xgcc ${STAGING_BINDIR}/gcc-${PV}
+}
diff --git a/packages/gcc/gcc-native_3.4.4.bb b/packages/gcc/gcc-native_3.4.4.bb
new file mode 100644
index 0000000000..2e5d3ac263
--- /dev/null
+++ b/packages/gcc/gcc-native_3.4.4.bb
@@ -0,0 +1,2 @@
+require gcc_${PV}.bb
+require gcc-native.inc
diff --git a/packages/gcc/gcc-package.inc b/packages/gcc/gcc-package.inc
index 96f1604997..d1b4607de5 100644
--- a/packages/gcc/gcc-package.inc
+++ b/packages/gcc/gcc-package.inc
@@ -92,7 +92,11 @@ do_install () {
# Move libgcc_s into /lib
mkdir -p ${D}${base_libdir}
- mv ${D}${libdir}/libgcc_s.so.* ${D}${base_libdir}
+ if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
+ mv ${D}${libdir}/nof/libgcc_s.so.* ${D}${base_libdir}
+ else
+ mv ${D}${libdir}/libgcc_s.so.* ${D}${base_libdir}
+ fi
rm -f ${D}${libdir}/libgcc_s.so
ln -sf `echo ${libdir}/gcc/${TARGET_SYS}/${BINV} \
| tr -s / \
diff --git a/packages/gettext/gettext_0.14.1.bb b/packages/gettext/gettext_0.14.1.bb
index 960db30b56..2184b8c863 100644
--- a/packages/gettext/gettext_0.14.1.bb
+++ b/packages/gettext/gettext_0.14.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "The GNU internationalization library."
HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
SECTION = "libs"
LICENSE = "GPL"
-PR = "r6"
+PR = "r7"
PROVIDES = "virtual/libintl"
SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
@@ -28,6 +28,20 @@ do_configure_prepend() {
install -m 0644 ${STAGING_DATADIR}/aclocal/libtool.m4 ${S}/config/m4/
}
+# these lack the .x behind the .so, but shouldn't be in the -dev package
+# Otherwise you get the following results:
+# 7.4M glibc/images/ep93xx/Angstrom-console-image-glibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
+# 25M uclibc/images/ep93xx/Angstrom-console-image-uclibc-ipk-2008.1-test-20080104-ep93xx.rootfs.tar.gz
+# because gettext depends on gettext-dev, which pulls in more -dev packages:
+# 15228 KiB /ep93xx/libstdc++-dev_4.2.2-r2_ep93xx.ipk
+# 1300 KiB /ep93xx/uclibc-dev_0.9.29-r8_ep93xx.ipk
+# 140 KiB /armv4t/gettext-dev_0.14.1-r6_armv4t.ipk
+# 4 KiB /ep93xx/libgcc-s-dev_4.2.2-r2_ep93xx.ipk
+
+PACKAGES =+ "libgettextlib libgettextsrc"
+FILES_libgettextlib = "${libdir}/libgettextlib-*.so*"
+FILES_libgettextsrc = "${libdir}/libgettextsrc-*.so*"
+
do_stage () {
autotools_stage_includes
oe_libinstall -so -C gettext-tools/lib libgettextlib ${STAGING_LIBDIR}/
diff --git a/packages/git/files/git-gui-install-mode-arg-spaces.patch b/packages/git/files/git-gui-install-mode-arg-spaces.patch
new file mode 100644
index 0000000000..10e4eb2e1c
--- /dev/null
+++ b/packages/git/files/git-gui-install-mode-arg-spaces.patch
@@ -0,0 +1,32 @@
+--- git/git-gui/Makefile.orig 2007-12-26 17:16:42.000000000 +1030
++++ git/git-gui/Makefile 2007-12-26 17:17:16.000000000 +1030
+@@ -31,11 +31,11 @@
+ INSTALL = install
+ endif
+
+-INSTALL_D0 = $(INSTALL) -d -m755 # space is required here
++INSTALL_D0 = $(INSTALL) -d -m 755 # space is required here
+ INSTALL_D1 =
+-INSTALL_R0 = $(INSTALL) -m644 # space is required here
++INSTALL_R0 = $(INSTALL) -m 644 # space is required here
+ INSTALL_R1 =
+-INSTALL_X0 = $(INSTALL) -m755 # space is required here
++INSTALL_X0 = $(INSTALL) -m 755 # space is required here
+ INSTALL_X1 =
+ INSTALL_L0 = rm -f # space is required here
+ INSTALL_L1 = && ln # space is required here
+@@ -50,11 +50,11 @@
+ QUIET_2DEVNULL = 2>/dev/null
+
+ INSTALL_D0 = dir=
+- INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m755 "$$dir"
++ INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m 755 "$$dir"
+ INSTALL_R0 = src=
+- INSTALL_R1 = && echo ' ' INSTALL 644 `basename $$src` && $(INSTALL) -m644 $$src
++ INSTALL_R1 = && echo ' ' INSTALL 644 `basename $$src` && $(INSTALL) -m 644 $$src
+ INSTALL_X0 = src=
+- INSTALL_X1 = && echo ' ' INSTALL 755 `basename $$src` && $(INSTALL) -m755 $$src
++ INSTALL_X1 = && echo ' ' INSTALL 755 `basename $$src` && $(INSTALL) -m 755 $$src
+
+ INSTALL_L0 = dst=
+ INSTALL_L1 = && src=
diff --git a/packages/git/git.inc b/packages/git/git.inc
index 7115d44b35..3a80c5d950 100644
--- a/packages/git/git.inc
+++ b/packages/git/git.inc
@@ -3,7 +3,9 @@ SECTION = "console/utils"
LICENSE = "GPL"
SRC_URI = "http://www.kernel.org/pub/software/scm/git/git-${PV}.tar.bz2 \
- file://autotools.patch;patch=1"
+ file://autotools.patch;patch=1 \
+ file://git-gui-install-mode-arg-spaces.patch;patch=1 \
+ "
S = "${WORKDIR}/git-${PV}"
EXTRA_OEMAKE = "NO_TCLTL=1"
diff --git a/packages/glibc/eglibc-package.bbclass b/packages/glibc/eglibc-package.bbclass
index a859ac2ca9..702d354591 100644
--- a/packages/glibc/eglibc-package.bbclass
+++ b/packages/glibc/eglibc-package.bbclass
@@ -150,14 +150,14 @@ do_prep_locale_tree() {
treedir=${WORKDIR}/locale-tree
rm -rf $treedir
mkdir -p $treedir/bin $treedir/lib $treedir/${datadir} $treedir/${libdir}/locale
- cp -a ${D}${datadir}/i18n $treedir/${datadir}/i18n
+ cp -pPR ${D}${datadir}/i18n $treedir/${datadir}/i18n
# unzip to avoid parsing errors
for i in $treedir/${datadir}/i18n/charmaps/*gz; do
gunzip $i
done
- ls ${D}/lib/* | xargs -iBLAH cp -a BLAH $treedir/lib
+ ls ${D}/lib/* | xargs -iBLAH cp -pPR BLAH $treedir/lib
if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* ]; then
- cp -a ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* $treedir/lib
+ cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* $treedir/lib
fi
install -m 0755 ${D}${bindir}/localedef $treedir/bin
}
@@ -166,7 +166,7 @@ do_collect_bins_from_locale_tree() {
treedir=${WORKDIR}/locale-tree
mkdir -p ${D}${libdir}
- cp -a $treedir/${libdir}/locale ${D}${libdir}
+ cp -pPR $treedir/${libdir}/locale ${D}${libdir}
}
python package_do_split_gconvs () {
diff --git a/packages/glibc/glibc-package.bbclass b/packages/glibc/glibc-package.bbclass
index b96aae37b9..50fae44bf3 100644
--- a/packages/glibc/glibc-package.bbclass
+++ b/packages/glibc/glibc-package.bbclass
@@ -141,17 +141,17 @@ do_prep_locale_tree() {
treedir=${WORKDIR}/locale-tree
rm -rf $treedir
mkdir -p $treedir/bin $treedir/lib $treedir/${datadir} $treedir/${libdir}/locale
- cp -a ${D}${datadir}/i18n $treedir/${datadir}/i18n
+ cp -pPR ${D}${datadir}/i18n $treedir/${datadir}/i18n
# unzip to avoid parsing errors
for i in $treedir/${datadir}/i18n/charmaps/*gz; do
gunzip $i
done
- ls ${D}/lib/* | xargs -iBLAH cp -a BLAH $treedir/lib
+ ls ${D}/lib/* | xargs -iBLAH cp -pPR BLAH $treedir/lib
if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so ]; then
- cp -a ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so $treedir/lib
+ cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so $treedir/lib
fi
if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* ]; then
- cp -a ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* $treedir/lib
+ cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so.* $treedir/lib
fi
install -m 0755 ${D}${bindir}/localedef $treedir/bin
}
@@ -160,7 +160,7 @@ do_collect_bins_from_locale_tree() {
treedir=${WORKDIR}/locale-tree
mkdir -p ${D}${libdir}
- cp -a $treedir/${libdir}/locale ${D}${libdir}
+ cp -pPR $treedir/${libdir}/locale ${D}${libdir}
}
python package_do_split_gconvs () {
diff --git a/packages/linux/linux-rp-2.6.21/.mtn2git_empty b/packages/gnome-mplayer/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.21/.mtn2git_empty
+++ b/packages/gnome-mplayer/.mtn2git_empty
diff --git a/packages/qmake/qmake2-native-2.10a/.mtn2git_empty b/packages/gnome-mplayer/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qmake/qmake2-native-2.10a/.mtn2git_empty
+++ b/packages/gnome-mplayer/files/.mtn2git_empty
diff --git a/packages/gnome-mplayer/files/1.patch b/packages/gnome-mplayer/files/1.patch
new file mode 100644
index 0000000000..77e03365f4
--- /dev/null
+++ b/packages/gnome-mplayer/files/1.patch
@@ -0,0 +1,37 @@
+# HG changeset patch
+# User "Paul Sokolovsky <pfalcon@users.sourceforge.net>"
+# Date 1199174323 -7200
+# Node ID d630a2e72d3fa094a330f5bd6351b0cf7c9690a6
+# Parent 4b4820fa6fff9dbb8c6c8e1bd23eed54faf10982
+gui.c: Add vertical pane layout for main i/f vs playlist.
+Decision which layout to use is based on screen aspect.
+This change will allow sane layout on PDA devices, many
+of which have vertical layout by default. Possible
+improvements:
+1. Add menu check item for users to be able to select layout
+as they see fit.
+
+diff -r 4b4820fa6fff -r d630a2e72d3f src/gui.c
+--- a/src/gui.c Tue Jan 01 09:29:28 2008 +0200
++++ b/src/gui.c Tue Jan 01 09:58:43 2008 +0200
+@@ -3071,8 +3071,20 @@ GtkWidget *create_window(gint windowid)
+
+ gtk_widget_show(menubar);
+ gtk_widget_show(drawing_area);
++ if (gdk_screen_width() > gdk_screen_height()) {
+ pane = gtk_hpaned_new();
+ gtk_paned_pack1(GTK_PANED(pane),vbox,TRUE,TRUE);
++ } else {
++ GtkRequisition menu_size;
++ GtkRequisition vbox_size;
++ pane = gtk_vpaned_new();
++ gtk_paned_pack1(GTK_PANED(pane),vbox,TRUE,FALSE); /* No shrink beyond size request*/
++
++ gtk_widget_size_request(menubar, &menu_size);
++ gtk_widget_size_request(vbox, &vbox_size);
++ /* 5 is adhox compensation for layout issues ;-( */
++ gtk_widget_set_size_request(vbox, -1, menu_size.height + vbox_size.height - 5);
++ }
+
+ gtk_container_add(GTK_CONTAINER(window), pane);
+
diff --git a/packages/gnome-mplayer/files/ac-gthread.patch b/packages/gnome-mplayer/files/ac-gthread.patch
new file mode 100644
index 0000000000..ea4abf143d
--- /dev/null
+++ b/packages/gnome-mplayer/files/ac-gthread.patch
@@ -0,0 +1,12 @@
+diff -r d630a2e72d3f configure.in
+--- a/configure.in Tue Jan 01 09:58:43 2008 +0200
++++ b/configure.in Tue Jan 01 10:16:44 2008 +0200
+@@ -32,7 +32,7 @@ AM_PROG_LIBTOOL
+ #AC_SUBST(GNOME_CFLAGS)
+ #AC_SUBST(GNOME_LIBS)
+
+-PKG_CHECK_MODULES(GTK, [gtk+-2.0 glib-2.0])
++PKG_CHECK_MODULES(GTK, [gtk+-2.0 glib-2.0 gthread-2.0])
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+
diff --git a/packages/gnome-mplayer/files/non-utf8-id3-fallback.patch b/packages/gnome-mplayer/files/non-utf8-id3-fallback.patch
new file mode 100644
index 0000000000..3b13bf0015
--- /dev/null
+++ b/packages/gnome-mplayer/files/non-utf8-id3-fallback.patch
@@ -0,0 +1,22 @@
+I found that on ARM/glibc 2.5/glib 2.12.something test in strip_unicode() doesn't
+really catch invalid utf-8 chars. Also, let's tell user where problem lies straight.
+
+Paul Sokolovsky <pmiscml@gmail.com>
+--- a/src/thread.c.org 2007-12-24 00:10:15.000000000 +0200
++++ a/src/thread.c 2008-01-04 22:04:30.000000000 +0200
+@@ -349,13 +349,11 @@
+ //g_idle_add(set_media_info, idledata);
+ utf8name = g_locale_to_utf8(parse[name],-1, NULL, NULL,NULL);
+ if (utf8name == NULL) {
+- strip_unicode(parse[name],strlen(parse[name]));
+- utf8name = g_strdup(parse[name]);
++ utf8name = g_strdup("<cannot convert to utf-8>");
+ }
+ utf8artist = g_locale_to_utf8(parse[artist],-1, NULL, NULL,NULL);
+ if (utf8artist == NULL) {
+- strip_unicode(parse[artist],strlen(parse[artist]));
+- utf8artist = g_strdup(parse[artist]);
++ utf8artist = g_strdup("<cannot convert to utf-8>");
+ }
+
+ message = g_markup_printf_escaped(_("<small>\n<b>Title:</b>\t%s\n<b>Artist:</b>\t%s\n<b>File:</b>\t%s\n</small>"),utf8name,utf8artist,idledata->info);
diff --git a/packages/gnome-mplayer/files/uchar-for-utf8-check.patch b/packages/gnome-mplayer/files/uchar-for-utf8-check.patch
new file mode 100644
index 0000000000..f19d20716e
--- /dev/null
+++ b/packages/gnome-mplayer/files/uchar-for-utf8-check.patch
@@ -0,0 +1,22 @@
+--- a/src/support.c.org 2007-12-18 20:39:09.000000000 +0200
++++ a/src/support.c 2008-01-04 22:12:32.000000000 +0200
+@@ -24,7 +24,7 @@
+
+ #include "support.h"
+
+-void strip_unicode(gchar * data, gsize len)
++void strip_unicode(guchar * data, gsize len)
+ {
+ gsize i = 0;
+
+--- a/src/support.h.org 2007-12-17 18:21:46.000000000 +0200
++++ a/src/support.h 2008-01-04 22:24:15.000000000 +0200
+@@ -31,7 +31,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+
+-void strip_unicode(gchar * data, gsize len);
++void strip_unicode(guchar * data, gsize len);
+ gint play_file(gchar * filename, gint playlist);
+ gint detect_playlist(gchar * filename);
+ gint parse_playlist(gchar * filename);
diff --git a/packages/gnome-mplayer/gnome-mplayer_0.5.3.bb b/packages/gnome-mplayer/gnome-mplayer_0.5.3.bb
new file mode 100644
index 0000000000..c01152cfb8
--- /dev/null
+++ b/packages/gnome-mplayer/gnome-mplayer_0.5.3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Simple MPlayer frontend with lite Gnome integration"
+HOMEPAGE = "http://dekorte.homeip.net/download/gnome-mplayer/"
+LICENSE = "GPL"
+DEPENDS = "gtk+ gconf dbus-glib"
+RDEPENDS = "mplayer"
+PR = "r3"
+
+inherit autotools pkgconfig gconf
+
+SRC_URI = "http://dekorte.homeip.net/download/${PN}/${P}.tar.gz \
+ file://ac-gthread.patch;patch=1 \
+ file://1.patch;patch=1 \
+ file://uchar-for-utf8-check.patch;patch=1 \
+ file://non-utf8-id3-fallback.patch;patch=1"
diff --git a/packages/gnome-mplayer/gnome-mplayer_cvs.bb b/packages/gnome-mplayer/gnome-mplayer_cvs.bb
new file mode 100644
index 0000000000..fb7ad0d0ea
--- /dev/null
+++ b/packages/gnome-mplayer/gnome-mplayer_cvs.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Simple MPlayer frontend with lite Gnome integration"
+HOMEPAGE = "http://dekorte.homeip.net/download/gnome-mplayer/"
+LICENSE = "GPL"
+DEPENDS = "gtk+ gconf dbus-glib"
+RDEPENDS = "mplayer"
+SRCDATE = "20080101"
+PV = "0.5.3+cvs${SRCDATE}"
+PR = "r4"
+
+inherit autotools pkgconfig gconf
+
+S = "${WORKDIR}/${PN}"
+
+SRC_URI = "cvs://anonymous@dekorte.homeip.net/data/cvs;module=${PN} \
+ file://ac-gthread.patch;patch=1 \
+ file://1.patch;patch=1 \
+ file://uchar-for-utf8-check.patch;patch=1 \
+ file://non-utf8-id3-fallback.patch;patch=1"
diff --git a/packages/gpe-login/files/c-locale.patch b/packages/gpe-login/files/c-locale.patch
new file mode 100644
index 0000000000..109825b53b
--- /dev/null
+++ b/packages/gpe-login/files/c-locale.patch
@@ -0,0 +1,11 @@
+--- a/gpe-login.c.org 2007-11-29 16:11:53.000000000 +0200
++++ a/gpe-login.c 2008-01-02 20:13:27.000000000 +0200
+@@ -1180,7 +1180,7 @@
+ language_menu = gtk_option_menu_new ();
+
+ c_locale = g_malloc (sizeof (locale_item_t));
+- c_locale->name = "English";
++ c_locale->name = "English(C locale)";
+ c_locale->locale = "C";
+ locale_system_list = g_slist_append (NULL, c_locale);
+
diff --git a/packages/gpe-login/gpe-login_0.90.bb b/packages/gpe-login/gpe-login_0.90.bb
index 253d581953..c22d259a9f 100644
--- a/packages/gpe-login/gpe-login_0.90.bb
+++ b/packages/gpe-login/gpe-login_0.90.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL"
DEPENDS = "gtk+ libgpewidget gpe-ownerinfo xkbd"
RDEPENDS = "xkbd gpe-theme-clearlooks"
RPROVIDES_${PN} = "gpe-session-starter"
-PR = "r5"
+PR = "r6"
SRC_URI_OVERRIDES_PACKAGE_ARCH = "1"
@@ -19,6 +19,7 @@ SRC_URI += " file://chvt-keylaunch.patch;patch=1 "
SRC_URI += " file://lock-on-supend.patch;patch=1 "
SRC_URI += " file://gpe-xcalibrate-rises-from-dead.patch;patch=1 "
SRC_URI += " file://size-autolock-properly.patch;patch=1 "
+SRC_URI += " file://c-locale.patch;patch=1 "
SRC_URI_append_spitz = "file://brightness-adjust-keyluanchrc.patch;patch=1"
SRC_URI_append_akita = "file://brightness-adjust-keyluanchrc.patch;patch=1"
diff --git a/packages/gpe-nmf/gpe-nmf.inc b/packages/gpe-nmf/gpe-nmf.inc
index d3b39abdcf..b7992e824a 100644
--- a/packages/gpe-nmf/gpe-nmf.inc
+++ b/packages/gpe-nmf/gpe-nmf.inc
@@ -1,5 +1,5 @@
DESCRIPTION = "GPE audio player"
-SECTION = "gpe"
+SECTION = "gpe/multimedia"
PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "gtk+ libgpewidget gstreamer gst-plugins"
diff --git a/packages/gpe-nmf/gpe-nmf_0.22.bb b/packages/gpe-nmf/gpe-nmf_0.22.bb
index 8b70d83c6b..98b7683232 100644
--- a/packages/gpe-nmf/gpe-nmf_0.22.bb
+++ b/packages/gpe-nmf/gpe-nmf_0.22.bb
@@ -2,7 +2,7 @@ require gpe-nmf.inc
RDEPENDS += "gst-plugin-decodebin"
RRECOMMENDS += "gst-plugin-ivorbis gst-plugin-tcp"
-PR = "r2"
+PR = "r3"
SRC_URI += " file://playlist-segfault.patch;patch=1;pnum=0 \
file://fix-includepath.patch;patch=1"
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 75b79ec870..b8d91538c6 100644
--- a/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
+++ b/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
@@ -35,7 +35,7 @@ do_install_append() {
fi
install -d ${D}${sysconfdir}/matchbox
install ${WORKDIR}/matchbox-session ${D}${sysconfdir}/matchbox/session
- echo -e "exec matchbox-window-manager ${CURSOR_HIDE} \$@ \n" >> ${D}${sysconfdir}/matchbox/session
+ printf "exec matchbox-window-manager ${CURSOR_HIDE} \$@ \n" >> ${D}${sysconfdir}/matchbox/session
install -d ${D}${sysconfdir}/gpe/xsettings-default.d
diff --git a/packages/qt/qt4-x11-free-4.1.2/.mtn2git_empty b/packages/gpsd/files/fic-gta01/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qt/qt4-x11-free-4.1.2/.mtn2git_empty
+++ b/packages/gpsd/files/fic-gta01/.mtn2git_empty
diff --git a/packages/gpsd/files/fic-gta01/gps-hardware b/packages/gpsd/files/fic-gta01/gps-hardware
new file mode 100644
index 0000000000..6490f52c27
--- /dev/null
+++ b/packages/gpsd/files/fic-gta01/gps-hardware
@@ -0,0 +1,41 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: gps-hardware
+# Date: 20080103 (YMD)
+#
+#################################################################################
+#
+# 20080103 - v0.0.1 - Initial release
+
+if ! test -e /home/root/gllin/gllin
+then
+ echo -e "\n\ngllin GPS driver for Neo1973 not found,"
+ echo "please install the gllin package from"
+ echo "http://3rdparty.downloads.openmoko.org/gllin/"
+ echo ""
+ exit 1
+fi
+
+
+do_start() {
+ /home/root/gllin/gllin >/var/log/gllin.log 2>&1 &
+ sleep 1
+}
+
+do_stop() {
+ gllin_PIDs="`ps ax | grep "/home/root/gllin" | grep -v grep | awk '{print $1}'`"
+ test -n "$gllin_PIDs" && kill $gllin_PIDs
+}
+
+do_status() {
+ ps ax | grep -v grep | grep -q gllin && echo "ready" || echo "unknown"
+}
+
+case "$1" in
+ start) do_start ;;
+ stop) do_stop ;;
+ status) do_status ;;
+esac
diff --git a/packages/gpsd/files/fic-gta01/gpsd-default b/packages/gpsd/files/fic-gta01/gpsd-default
new file mode 100644
index 0000000000..abd35927e5
--- /dev/null
+++ b/packages/gpsd/files/fic-gta01/gpsd-default
@@ -0,0 +1,3 @@
+# If you must specify a non-NMEA driver, uncomment and modify the next line
+#GPSD_OPTS=
+GPS_DEV="/tmp/nmeaNP"
diff --git a/packages/gpsd/files/fic-gta01/restart_gllin.sh b/packages/gpsd/files/fic-gta01/restart_gllin.sh
new file mode 100644
index 0000000000..50810c3583
--- /dev/null
+++ b/packages/gpsd/files/fic-gta01/restart_gllin.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+/etc/init.d/gps-hardware stop
+sleep 1
+/etc/init.d/gps-hardware start
+
diff --git a/packages/gpsd/files/gps-hardware b/packages/gpsd/files/gps-hardware
new file mode 100644
index 0000000000..ff2ddb3650
--- /dev/null
+++ b/packages/gpsd/files/gps-hardware
@@ -0,0 +1,2 @@
+# This is a dummy file. Some machines use it to bring up integrated GPS
+# devices on demand.
diff --git a/packages/gpsd/files/gpsd b/packages/gpsd/files/gpsd
index 3a14867f8a..e536837e1c 100755
--- a/packages/gpsd/files/gpsd
+++ b/packages/gpsd/files/gpsd
@@ -29,9 +29,18 @@ start() {
# 2. We don't need all the logging crud that daemon/initlog sets
# up -- gpsd does its own syslog calls.
#
+
+ if test -x /etc/init.d/gps-hardware
+ then
+ if ! ( /etc/init.d/gps-hardware status | grep -q "ready" )
+ then
+ /etc/init.d/gps-hardware start
+ fi
+ fi
+
if [ -e "${GPS_DEV}" ]
then
- gpsd ${GPSD_OPTS} -p ${GPS_DEV}
+ gpsd ${GPSD_OPTS} ${GPS_DEV}
echo "success"
else
# User needs to symlink ${GPS_DEV} to the right thing
diff --git a/packages/gpsd/gpsd.inc b/packages/gpsd/gpsd.inc
index d493b2bca7..237971c9c7 100644
--- a/packages/gpsd/gpsd.inc
+++ b/packages/gpsd/gpsd.inc
@@ -3,6 +3,7 @@ SECTION = "console/network"
PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "dbus-glib ncurses python"
+RDEPENDS = "gpsd-conf"
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--x-libraries=${STAGING_LIBDIR} \
@@ -11,8 +12,13 @@ EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
SRC_URI = "http://download.berlios.de/gpsd/gpsd-${PV}.tar.gz \
file://gpsd-default \
+ file://gps-hardware \
file://gpsd"
+SRC_URI_append_fic-gta01 = " \
+ file://restart_gllin.sh \
+ "
+
inherit autotools update-rc.d
INITSCRIPT_NAME = "gpsd"
@@ -32,25 +38,43 @@ do_install_prepend() {
}
do_stage() {
- oe_libinstall -so -C ${S}/.libs libgps ${STAGING_LIBDIR}
- install -m 0655 ${S}/libgps.la ${STAGING_LIBDIR}
- install -m 0655 ${S}/gps.h ${STAGING_INCDIR}
- install -m 0655 ${S}/gpsd.h ${STAGING_INCDIR}
+ oe_libinstall -so libgps ${STAGING_LIBDIR}
+ install -m 0644 ${S}/gps.h ${STAGING_INCDIR}
+ install -m 0644 ${S}/gpsd.h ${STAGING_INCDIR}
}
do_install_append() {
install -d ${D}/${sysconfdir}/init.d
install -d ${D}/dev
install -m 0755 ${WORKDIR}/gpsd ${D}/${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/gps-hardware ${D}/${sysconfdir}/init.d/gps-hardware.default
install -d ${D}/${sysconfdir}/default
- install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd
+ install -m 0644 ${WORKDIR}/gpsd-default ${D}/${sysconfdir}/default/gpsd.default
}
-PACKAGES =+ "libgps python-pygps"
+do_install_append_fic-gta01() {
+ install -d ${D}/${sysconfdir}/apm/resume.d
+ install -m 755 ${WORKDIR}/restart_gllin.sh ${D}/${sysconfdir}/apm/resume.d
+}
+
+pkg_postinst_${PN}-conf() {
+ update-alternatives --install ${sysconfdir}/default/gpsd gpsd-defaults ${sysconfdir}/default/gpsd.default 10
+ update-alternatives --install ${sysconfdir}/init.d/gps-hardware gps-hardware ${sysconfdir}/init.d/gps-hardware.default 10
+}
+
+pkg_postrm_${PN}-conf() {
+ update-alternatives --remove gpsd-defaults ${sysconfdir}/default/gpsd.default
+ update-alternatives --remove gps-hardware ${sysconfdir}/init.d/gps-hardware.default
+}
+
+SRC_URI_OVERRIDES_PACKAGE_ARCH = "0"
+
+PACKAGES =+ "libgps python-pygps gpsd-conf"
+
+PACKAGE_ARCH_gpsd-conf = "${MACHINE_ARCH}"
-FILES_${PN} += "${sysconfdir}"
FILES_libgps = "${libdir}/*.so.*"
-CONFFILES_${PN} = "${sysconfdir}/default/gpsd"
+FILES_gpsd-conf = "${sysconfdir}"
DESCRIPTION_python-pygps = "Python bindings to gpsd"
FILES_python-pygps = "${libdir}/*/site-packages/*"
diff --git a/packages/gpsd/gpsd_2.28.bb b/packages/gpsd/gpsd_2.28.bb
index c16de2e951..7094893b99 100644
--- a/packages/gpsd/gpsd_2.28.bb
+++ b/packages/gpsd/gpsd_2.28.bb
@@ -1,2 +1,2 @@
require gpsd.inc
-PR = "r4"
+PR = "r8"
diff --git a/packages/gpsd/gpsd_2.34.bb b/packages/gpsd/gpsd_2.34.bb
index 32cb4b925d..ea9fe4f550 100644
--- a/packages/gpsd/gpsd_2.34.bb
+++ b/packages/gpsd/gpsd_2.34.bb
@@ -1,4 +1,4 @@
require gpsd.inc
-PR = "r5"
+PR = "r8"
diff --git a/packages/gpsd/gpsd_2.36.bb b/packages/gpsd/gpsd_2.36.bb
new file mode 100644
index 0000000000..726ba42481
--- /dev/null
+++ b/packages/gpsd/gpsd_2.36.bb
@@ -0,0 +1,3 @@
+require gpsd.inc
+
+PR = "r2"
diff --git a/packages/qt/qt4-x11-free-4.3.2/.mtn2git_empty b/packages/gpsdrive/gpsdrive-pda/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qt/qt4-x11-free-4.3.2/.mtn2git_empty
+++ 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/default b/packages/gsm/files/default
index 761100f702..f113d8bab0 100644
--- a/packages/gsm/files/default
+++ b/packages/gsm/files/default
@@ -2,30 +2,30 @@
. /etc/init.d/functions
-case `cpuinfo_id` in
- "GTA01"|"GTA02")
+case `machine_id` in
+ "gta01"|"gta02")
GSMD_OPTS="-s 115200 -F"
GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
GSM_RES="/sys/bus/platform/devices/gta01-pm-gsm.0/reset"
GSM_DEV="/dev/ttySAC0"
;;
- "HTC Apache"|"HTC Blueangel"|"HTC Universal")
+ "htc_apache"|"htc_blueangel"|"htc_universal")
GSMD_OPTS="-s 115200 -F"
GSM_DEV="/dev/ttyS0"
;;
- "HTC Himalaya")
+ "htc_himalaya")
GSMD_OPTS="-s 115200 -F"
GSM_DEV="/dev/ttyS2"
;;
- "HTC Magician")
+ "htc_magician")
GSMD_OPTS="-s 115200 -F"
GSM_DEV="/dev/ttyS1"
;;
- "Palm Treo 650")
+ "palm_treo_650")
GSMD_OPTS="-s 460800 -F -w 1"
GSM_DEV="/dev/ttyS0"
;;
- "Motorola Ezx Platform")
+ "motorola_ezx_platform")
GSMD_OPTS="-s 115200 -F -v ti"
GSM_DEV="/dev/mux0"
;;
diff --git a/packages/gsm/gsmd.inc b/packages/gsm/gsmd.inc
index c8167d648e..f7d609e2c9 100644
--- a/packages/gsm/gsmd.inc
+++ b/packages/gsm/gsmd.inc
@@ -5,7 +5,7 @@ SECTION = "libs/gsm"
PROVIDES += "gsmd"
RPROVIDES_${PN} = "libgsmd0 libgsmd gsmd gsmd-devel"
PV = "0.1+svnr${SRCREV}"
-PR = "r39"
+PR = "r40"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
file://gsmd \
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 03c45623a4..e835f80434 100644
--- a/packages/hal/hal_0.5.9.bb
+++ b/packages/hal/hal_0.5.9.bb
@@ -1,16 +1,18 @@
require hal.inc
-DEPENDS = "virtual/kernel dbus-glib udev intltool expat libusb"
+DEPENDS = "virtual/kernel dbus-glib udev intltool intltool-native expat libusb"
RDEPENDS += "udev hal-info"
#RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
-PR = "r3"
+PR = "r5"
SRC_URI += "file://99_hal \
file://20hal \
"
+LEAD_SONAME = "libhal.so"
+
# machines with pci and acpi get a machine dependant hal
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
@@ -36,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/helloworld/helloworld_1.0.0.bb b/packages/helloworld/helloworld_1.0.0.bb
index da4daa408d..af29a7769a 100644
--- a/packages/helloworld/helloworld_1.0.0.bb
+++ b/packages/helloworld/helloworld_1.0.0.bb
@@ -7,7 +7,7 @@ S = "${WORKDIR}/${P}"
do_fetch () {
mkdir -p ${WORKDIR}/${P}
cd ${WORKDIR}/${P}
- echo -e "#include <stdio.h>\nint main(void)\n{\n\tprintf(\"Hello world!\\\n\");\twhile(1);\n\treturn 0;\n}\n" >helloworld.c
+ printf "#include <stdio.h>\nint main(void)\n{\n\tprintf(\"Hello world!\\\n\");\twhile(1);\n\treturn 0;\n}\n" >helloworld.c
}
do_compile () {
diff --git a/packages/hwdata/hwdata_0.191.bb b/packages/hwdata/hwdata_0.191.bb
index 2dfe1433bf..5d607ddc1a 100644
--- a/packages/hwdata/hwdata_0.191.bb
+++ b/packages/hwdata/hwdata_0.191.bb
@@ -1,14 +1,16 @@
DESCRIPTION = "This package contains various hardware identification and configuration data, such as the pci.ids database, or the XFree86/xorg Cards database. It's needed for the kudzu hardware detection."
LICENSE = "GPL + X11"
+PR = "r1"
+
SRC_URI = "http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191.orig.tar.gz \
http://archive.ubuntu.com/ubuntu/pool/main/h/hwdata/hwdata_0.191-1.diff.gz;patch=1 \
"
PACKAGE_ARCH = "all"
-
+FILES_${PN} = "${datadir}"
do_install() {
mkdir -p ${D}${datadir}/hwdata
- install -m644 MonitorsDB pci* usb.ids video* upgradelist ${D}${datadir}/hwdata
+ install -m 644 MonitorsDB pci* usb.ids video* upgradelist ${D}${datadir}/hwdata
}
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/base-image.bb b/packages/images/base-image.bb
index 20a5fd9445..9afa682d2c 100644
--- a/packages/images/base-image.bb
+++ b/packages/images/base-image.bb
@@ -17,22 +17,30 @@
# image is intended to be distro-agnostic.
DISTRO_SSH_DAEMON ?= "dropbear"
+
DISTRO_PACKAGE_MANAGER ?= "ipkg ipkg-collateral"
+# FIXME: We need a distro-indendent way of specifying feed configs.
+# Once the RFC for the DISTRO_FEED_CONFIGS variable name is approved,
+# we can remove this default definition and set it in the distro config.
+DISTRO_FEED_CONFIGS ?= "${ANGSTROM_FEED_CONFIGS}"
+
DEPENDS = "\
task-boot \
- task-distro-base task-machine-base \
${DISTRO_SSH_DAEMON} \
${DISTRO_PACKAGE_MANAGER} \
- task-base-usbhost task-base-ext2 \
+ ${DISTRO_FEED_CONFIGS} \
+ ${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
+ ${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
"
IMAGE_INSTALL = "\
task-boot \
- task-distro-base task-machine-base \
${DISTRO_SSH_DAEMON} \
${DISTRO_PACKAGE_MANAGER} \
- task-base-usbhost task-base-ext2 \
+ ${DISTRO_FEED_CONFIGS} \
+ ${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
+ ${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
"
export IMAGE_BASENAME = "base-image"
diff --git a/packages/images/initramfs-minimal-image.bb b/packages/images/initramfs-minimal-image.bb
index 1aa928b2a9..d696468913 100644
--- a/packages/images/initramfs-minimal-image.bb
+++ b/packages/images/initramfs-minimal-image.bb
@@ -1,7 +1,6 @@
# Sample initramfs image
-#IMAGE_INSTALL = "initramfs-boot busybox kernel-module-uinput uclibc libgcc1"
-IMAGE_INSTALL = "initramfs-nfsboot busybox-static kernel-module-uinput"
+IMAGE_INSTALL = "initramfs-module-nfs busybox-static"
export IMAGE_BASENAME = "initramfs-image"
IMAGE_LINGUAS = ""
diff --git a/packages/images/minimal-gpe-image.bb b/packages/images/minimal-gpe-image.bb
index 3f475567d2..64583741cd 100644
--- a/packages/images/minimal-gpe-image.bb
+++ b/packages/images/minimal-gpe-image.bb
@@ -6,7 +6,7 @@ XSERVER ?= "xserver-kdrive-fbdev"
export IMAGE_BASENAME = "minimalist-gpe-image"
-PR = "r1"
+PR = "r2"
DEPENDS = "task-boot"
IMAGE_INSTALL = "\
@@ -14,6 +14,7 @@ IMAGE_INSTALL = "\
task-boot \
gpe-dm gpe-session-scripts gpe-login \
matchbox-wm \
+ gpe-terminal \
angstrom-feed-configs \
ipkg \
"
diff --git a/packages/images/nas-server-image.bb b/packages/images/nas-server-image.bb
new file mode 100644
index 0000000000..ca8f94e749
--- /dev/null
+++ b/packages/images/nas-server-image.bb
@@ -0,0 +1,53 @@
+# This image is intended to provide a configuration
+# for a network attached storage server device.
+
+# Key features are:
+#
+# 1) Must be able to mount attached storage devices like
+# internal disks, external USB disks, etc. Should support
+# various filesystem choices, but ext2 at a minimum.
+#
+# 2) Must be able to boot from internal flash, or directly
+# from a filesystem stored on the attached storage.
+#
+# 3) Must be able to share that storage across the network
+# using various protocols like Samba, NFS, etc.
+#
+# 4) Bonus points for being able to support other central
+# network services like a central gateway machine might.
+
+# Although it is tested with the Angstrom distro, it is
+# intended to be distro-agnostic.
+
+DISTRO_SSH_DAEMON ?= "dropbear"
+DISTRO_PACKAGE_MANAGER ?= "ipkg ipkg-collateral"
+
+DEPENDS = "\
+ task-boot \
+ ${@base_contains('MACHINE_FEATURES', 'apex', 'task-base-apex', '', d)} \
+ task-distro-base task-machine-base \
+ ${DISTRO_SSH_DAEMON} \
+ ${DISTRO_PACKAGE_MANAGER} \
+ ${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
+ ${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
+ task-nas-server-everything \
+ "
+
+IMAGE_INSTALL_TASKS = "\
+ task-nas-server-everything \
+ "
+
+IMAGE_INSTALL = "\
+ task-boot \
+ ${@base_contains('MACHINE_FEATURES', 'apex', 'task-base-apex', '', d)} \
+ ${DISTRO_SSH_DAEMON} \
+ ${DISTRO_PACKAGE_MANAGER} \
+ ${@base_contains('MACHINE_FEATURES', 'ext2', 'task-base-ext2', '', d)} \
+ ${@base_contains('MACHINE_FEATURES', 'usbhost', 'task-base-usbhost', '', d)} \
+ ${IMAGE_INSTALL_TASKS} \
+ "
+
+export IMAGE_BASENAME = "nas-server-image"
+IMAGE_LINGUAS = ""
+
+inherit image
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/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/images/unslung-image.bb b/packages/images/unslung-image.bb
index c6d4e73718..c258f4250a 100644
--- a/packages/images/unslung-image.bb
+++ b/packages/images/unslung-image.bb
@@ -87,3 +87,17 @@ unslung_clean_image () {
# #### End of Hack!
}
+
+
+# Override this function for unslung, since we don't need Apex.
+
+nslu2_pack_image () {
+ slugimage -p \
+ -b ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \
+ -s ${STAGING_LIBDIR}/nslu2-binaries/SysConf \
+ -k ${DEPLOY_DIR_IMAGE}/zImage-${MACHINE}.bin \
+ -r Ramdisk:1,Flashdisk:${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ -m ${STAGING_FIRMWARE_DIR}/NPE-B \
+ -t ${STAGING_LIBDIR}/nslu2-binaries/Trailer \
+ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-nslu2.bin
+}
diff --git a/packages/initrdscripts/files/30-bootmenu.sh b/packages/initrdscripts/files/30-bootmenu.sh
index 1bb53d20a3..319f85aa6e 100644
--- a/packages/initrdscripts/files/30-bootmenu.sh
+++ b/packages/initrdscripts/files/30-bootmenu.sh
@@ -94,7 +94,7 @@ while read maj min nblk dev; do
add_menu_item "$dev ($fstype)"
done < /proc/partitions
-add_menu_item "NFS (nfsroot=192.168.2.200:/nfs/image)"
+add_menu_item "NFS (nfsroot=192.168.2.200:/srv/nfs/oe/image)"
total=`echo -e $list | wc -l`
num=0
@@ -145,7 +145,7 @@ path=`expr "$sel" : '[^/]*\([^ ]*\).*'`
if [ "$dev" == "NFS" ]; then
ROOT_DEVICE="/dev/nfs"
- CMDLINE="$CMDLINE nfsroot=192.168.2.200:/nfs/image"
+ CMDLINE="$CMDLINE nfsroot=192.168.2.200:/srv/nfs/oe/image"
elif [ -n "$path" ]; then
ROOT_DEVICE="/dev/loop"
CMDLINE="looproot=/dev/$dev:$path"
diff --git a/packages/initrdscripts/files/80-nfsboot.sh b/packages/initrdscripts/files/80-nfsboot.sh
index 5129a53ebb..e1588c16a8 100644
--- a/packages/initrdscripts/files/80-nfsboot.sh
+++ b/packages/initrdscripts/files/80-nfsboot.sh
@@ -31,10 +31,12 @@ if [ "$ROOT_DEVICE" = "/dev/nfs" ]; then
usb*)
echo "USB"
modprobe g_ether
+ sleep 5
;;
esac
ifconfig $device $client_ip
+ ping -c 2 $server_ip
)
echo "booting from NFS: $nfsroot"
diff --git a/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
index e90247c522..19e7403b83 100644
--- a/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
@@ -1,7 +1,7 @@
SRC_URI = "file://30-bootmenu.sh"
-PR = "r4"
+PR = "r7"
DESCRIPTION = "An initramfs module with UI for selection of boot device."
-RDEPENDS = "klibc-utils-fstype initramfs-uniboot initramfs-module-block initramfs-module-loop"
+RDEPENDS = "klibc-utils-fstype initramfs-uniboot initramfs-module-block initramfs-module-loop initramfs-module-nfs"
# For VFAT mounting.
RRECOMMENDS = "kernel-module-nls-cp437 kernel-module-nls-iso8859-1"
diff --git a/packages/initrdscripts/initramfs-module-nfs_1.0.bb b/packages/initrdscripts/initramfs-module-nfs_1.0.bb
index acf71adb92..77c38799f3 100644
--- a/packages/initrdscripts/initramfs-module-nfs_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-nfs_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://80-nfsboot.sh"
-PR = "r1"
+PR = "r2"
DESCRIPTION = "An initramfs module for booting via NFS."
RDEPENDS = "initramfs-uniboot"
RRECOMMENDS = "kernel-module-g-ether kernel-module-nfs"
@@ -10,4 +10,4 @@ do_install() {
}
PACKAGE_ARCH = "all"
-FILES_${PN} += " /initrd.d/nfs "
+FILES_${PN} += " /initrd.d/* "
diff --git a/packages/initscripts/initscripts-1.0/functions b/packages/initscripts/initscripts-1.0/functions
index 358fc6edb3..fb9a914e4d 100644
--- a/packages/initscripts/initscripts-1.0/functions
+++ b/packages/initscripts/initscripts-1.0/functions
@@ -4,8 +4,8 @@
# shell scripts in the /etc/init.d directory.
#
-cpuinfo_id() { # return the Hardware module ID
- awk 'BEGIN { FS=": " } /Hardware/ { print $2 } ' </proc/cpuinfo
+machine_id() { # return the machine ID
+ awk 'BEGIN { FS=": " } /Hardware/ { gsub(" ", "_", $2); print tolower($2) } ' </proc/cpuinfo
}
killproc() { # kill the named process(es)
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 7fab41858b..4433d12318 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
DEPENDS = "makedevs"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r103"
+PR = "r104"
SRC_URI = "file://functions \
file://halt \
diff --git a/packages/ipaq-sleep/files/unbreak.patch b/packages/ipaq-sleep/files/unbreak.patch
new file mode 100644
index 0000000000..5116e9957f
--- /dev/null
+++ b/packages/ipaq-sleep/files/unbreak.patch
@@ -0,0 +1,11 @@
+--- a/ipaq-sleep.c.org 2006-01-20 19:43:14.000000000 +0200
++++ a/ipaq-sleep.c 2007-12-26 06:26:32.000000000 +0200
+@@ -108,7 +111,7 @@
+ if (fgets (buf, 32, input))
+ {
+ if (!strncmp (buf, "on ", 3))
+- r = atoi (buf + 4);
++ r = atoi (buf + 3);
+ else
+ r = -1;
+ }
diff --git a/packages/ipaq-sleep/ipaq-sleep_0.9.bb b/packages/ipaq-sleep/ipaq-sleep_0.9.bb
index d41cacdf58..a3fcbdf270 100644
--- a/packages/ipaq-sleep/ipaq-sleep_0.9.bb
+++ b/packages/ipaq-sleep/ipaq-sleep_0.9.bb
@@ -8,8 +8,10 @@ RDEPENDS = "apm"
SRC_URI_append = " file://init-script-busybox.patch;patch=1"
SRC_URI_append = " file://install-fix.patch;patch=1"
+SRC_URI_append = " file://unbreak.patch;patch=1"
-PR = "r1"
+PR = "r6"
DESCRIPTION = "Automatic sleep/suspend control daemon"
+CONFFILES_${PN} += "${sysconfdir}/ipaq-sleep.conf"
diff --git a/packages/ipkg/ipkg-native_0.99.163.bb b/packages/ipkg/ipkg-native_0.99.163.bb
index 13609c9037..7a95b28159 100644
--- a/packages/ipkg/ipkg-native_0.99.163.bb
+++ b/packages/ipkg/ipkg-native_0.99.163.bb
@@ -2,7 +2,7 @@ S = "${WORKDIR}/ipkg-${PV}"
#require ipkg_${PV}.bb
require ipkg-native.inc
-PR = "r2"
+PR = "r4"
inherit autotools pkgconfig native
diff --git a/packages/qte/qtopia-core/.mtn2git_empty b/packages/ixp4xx/ixp4xx-npe-2.4/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qte/qtopia-core/.mtn2git_empty
+++ b/packages/ixp4xx/ixp4xx-npe-2.4/.mtn2git_empty
diff --git a/packages/ixp4xx/ixp4xx-npe-2.4/Intel b/packages/ixp4xx/ixp4xx-npe-2.4/Intel
new file mode 100644
index 0000000000..2d57fedc15
--- /dev/null
+++ b/packages/ixp4xx/ixp4xx-npe-2.4/Intel
@@ -0,0 +1,40 @@
+The ixp4xx-npe package (which installs unmodified Intel NPE microcode
+files in /lib/firmware/NPE-B and /lib/firmware/NPE-C) is licensed
+according to the following Intel Software License Agreement:
+
+INTEL SOFTWARE LICENSE AGREEMENT
+
+Copyright (c) 2007, Intel Corporation.
+All rights reserved.
+
+Redistribution. Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+* Redistributions must reproduce the above copyright notice and the
+following disclaimer in the documentation and/or other materials
+provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software is permitted.
+
+Limited patent license. Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell (.Utilize.) this software, but solely to the extent that any such
+patent is necessary to Utilize the software alone. The patent license
+shall not apply to any combinations which include this software. No
+hardware per se is licensed hereunder.
+
+DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/packages/ixp4xx/ixp4xx-npe_2.4.bb b/packages/ixp4xx/ixp4xx-npe_2.4.bb
index 71dc71e274..1d999e3d4b 100644
--- a/packages/ixp4xx/ixp4xx-npe_2.4.bb
+++ b/packages/ixp4xx/ixp4xx-npe_2.4.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "NPE firmware for the IXP4xx line of devices"
-LICENSE = "Intel Software Licence Agreement"
-PR = "r0"
+LICENSE = "Intel"
+PR = "r1"
DEPENDS = "ixp4xx-npe-native"
# You need to download the IPL_ixp400NpeLibrary-2_4.zip file (without crypto) from:
@@ -9,7 +9,8 @@ DEPENDS = "ixp4xx-npe-native"
# and put it in your downloads directory so bitbake will find it.
# Make sure you *read* and accept the license - it is not a standard one.
-SRC_URI = "http://You-Have-To-Download-The-Microcode-Manually-So-Please-Read-ixp4xx-npe_2.4.bb-For-Instructions/IPL_ixp400NpeLibrary-2_4.zip"
+SRC_URI = "http://You-Have-To-Download-The-Microcode-Manually-So-Please-Read-ixp4xx-npe_2.4.bb-For-Instructions/IPL_ixp400NpeLibrary-2_4.zip \
+ file://Intel"
S = "${WORKDIR}/ixp400_xscale_sw/src/npeDl"
COMPATIBLE_MACHINE = "(nslu2|ixp4xx)"
@@ -28,6 +29,8 @@ do_install() {
rm ${S}/NPE-C
mv ${S}/NPE-C.* ${S}/NPE-C
install ${S}/NPE-C ${D}/${base_libdir}/firmware/
+ install -d ${D}/${datadir}/common-licenses/
+ install -m 0644 ${WORKDIR}/Intel ${D}${datadir}/common-licenses/
}
do_populate_staging() {
diff --git a/packages/quilt/quilt-0.39/.mtn2git_empty b/packages/jamvm/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/quilt/quilt-0.39/.mtn2git_empty
+++ 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/kdepimpi/kdepimpi-base.inc b/packages/kdepimpi/kdepimpi-base.inc
index 5a50be3de7..036292d81f 100644
--- a/packages/kdepimpi/kdepimpi-base.inc
+++ b/packages/kdepimpi/kdepimpi-base.inc
@@ -53,7 +53,7 @@ inherit palmtop
do_configure_prepend() {
mv ${S}/kabc/formats/binary/kabcformat_binaryE.pro ${S}/kabc/formats/binary/binaryE.pro
- echo -e "TEMPLATE=subdirs\nSUBDIRS=${SUBDIRS}\n" >all.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=${SUBDIRS}\n" >all.pro
for d in ${SUBDIRS}
do
if [ -f ${d}/`basename ${d}`E.pro ];
diff --git a/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch b/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch
new file mode 100644
index 0000000000..bf6f640035
--- /dev/null
+++ b/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch
@@ -0,0 +1,294 @@
+---
+ kexec/arch/arm/kexec-zImage-arm.c | 259 ++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 252 insertions(+), 7 deletions(-)
+
+Index: kexec-tools-1.101/kexec/arch/arm/kexec-zImage-arm.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/arch/arm/kexec-zImage-arm.c 2007-12-26 21:17:07.000000000 +0000
++++ kexec-tools-1.101/kexec/arch/arm/kexec-zImage-arm.c 2007-12-27 01:24:25.000000000 +0000
+@@ -1,11 +1,83 @@
++/*
++ * - 08/21/2007 ATAG support added by Uli Luckas <u.luckas@road.de>
++ *
++ */
+ #define _GNU_SOURCE
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+ #include <errno.h>
+ #include <limits.h>
++#include <stdint.h>
++#include <getopt.h>
++#include <arch/options.h>
++#include <asm/page.h>
+ #include "../../kexec.h"
+
++#define COMMAND_LINE_SIZE 1024
++#define BOOT_PARAMS_SIZE 1536
++
++struct tag_header {
++ uint32_t size;
++ uint32_t tag;
++};
++
++/* The list must start with an ATAG_CORE node */
++#define ATAG_CORE 0x54410001
++
++struct tag_core {
++ uint32_t flags; /* bit 0 = read-only */
++ uint32_t pagesize;
++ uint32_t rootdev;
++};
++
++/* it is allowed to have multiple ATAG_MEM nodes */
++#define ATAG_MEM 0x54410002
++
++struct tag_mem32 {
++ uint32_t size;
++ uint32_t start; /* physical start address */
++};
++
++/* describes where the compressed ramdisk image lives (virtual address) */
++/*
++ * this one accidentally used virtual addresses - as such,
++ * it's deprecated.
++ */
++#define ATAG_INITRD 0x54410005
++
++/* describes where the compressed ramdisk image lives (physical address) */
++#define ATAG_INITRD2 0x54420005
++
++struct tag_initrd {
++ uint32_t start; /* physical start address */
++ uint32_t size; /* size of compressed ramdisk image in bytes */
++};
++
++/* command line: \0 terminated string */
++#define ATAG_CMDLINE 0x54410009
++
++struct tag_cmdline {
++ char cmdline[1]; /* this is the minimum size */
++};
++
++/* The list ends with an ATAG_NONE node. */
++#define ATAG_NONE 0x00000000
++
++struct tag {
++ struct tag_header hdr;
++ union {
++ struct tag_core core;
++ struct tag_mem32 mem;
++ struct tag_initrd initrd;
++ struct tag_cmdline cmdline;
++ } u;
++};
++
++#define tag_next(t) ((struct tag *)((uint32_t *)(t) + (t)->hdr.size))
++#define byte_size(t) ((t)->hdr.size << 2)
++#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type) + 3) >> 2)
++
+ int zImage_arm_probe(const char *buf, off_t len)
+ {
+ /*
+@@ -14,21 +86,194 @@ int zImage_arm_probe(const char *buf, of
+ */
+ return 0;
+ }
++
+ void zImage_arm_usage(void)
+ {
++ printf( " --command-line=STRING Set the kernel command line to STRING.\n"
++ " --append=STRING Set the kernel command line to STRING.\n"
++ " --initrd=FILE Use FILE as the kernel's initial ramdisk.\n"
++ " --ramdisk=FILE Use FILE as the kernel's initial ramdisk.\n"
++ );
+ }
+-int zImage_arm_load(int argc, char **argv, const char *buf, off_t len,
++
++static
++struct tag * atag_read_tags(void)
++{
++ static unsigned long buf[BOOT_PARAMS_SIZE];
++ const char fn[]= "/proc/atags";
++ FILE *fp;
++ fp = fopen(fn, "r");
++ if (!fp) {
++ fprintf(stderr, "Cannot open %s: %s\n",
++ fn, strerror(errno));
++ return NULL;
++ }
++
++ fread(buf, sizeof(buf[1]), BOOT_PARAMS_SIZE, fp);
++ if (ferror(fp)) {
++ fprintf(stderr, "Cannot read %s: %s\n",
++ fn, strerror(errno));
++ fclose(fp);
++ return NULL;
++ }
++
++ fclose(fp);
++ return (struct tag *) buf;
++}
++
++
++static
++int atag_arm_load(struct kexec_info *info, unsigned long base,
++ const char *command_line, off_t command_line_len,
++ const char *initrd, off_t initrd_len)
++{
++ struct tag *saved_tags = atag_read_tags();
++ char *buf;
++ off_t len;
++ struct tag *params;
++ uint32_t *initrd_start;
++
++ buf = xmalloc(getpagesize());
++ if (!buf) {
++ fprintf(stderr, "Compiling ATAGs: out of memory\n");
++ return -1;
++ }
++
++ memset(buf, 0xff, getpagesize());
++ params = (struct tag *)buf;
++
++ if (saved_tags) {
++ // Copy tags
++ saved_tags = (struct tag *) saved_tags;
++ while(byte_size(saved_tags)) {
++ switch (saved_tags->hdr.tag) {
++ case ATAG_INITRD:
++ case ATAG_INITRD2:
++ case ATAG_CMDLINE:
++ case ATAG_NONE:
++ // skip these tags
++ break;
++ default:
++ // copy all other tags
++ memcpy(params, saved_tags, byte_size(saved_tags));
++ params = tag_next(params);
++ }
++ saved_tags = tag_next(saved_tags);
++ }
++ } else {
++ params->hdr.size = 2;
++ params->hdr.tag = ATAG_CORE;
++ params = tag_next(params);
++ }
++
++ if (initrd) {
++ params->hdr.size = tag_size(tag_initrd);
++ params->hdr.tag = ATAG_INITRD2;
++ initrd_start = &params->u.initrd.start;
++ params->u.initrd.size = initrd_len;
++ params = tag_next(params);
++ }
++
++ if (command_line) {
++ params->hdr.size = (sizeof(struct tag_header) + command_line_len + 3) >> 2;
++ params->hdr.tag = ATAG_CMDLINE;
++ memcpy(params->u.cmdline.cmdline, command_line,
++ command_line_len);
++ params->u.cmdline.cmdline[command_line_len - 1] = '\0';
++ params = tag_next(params);
++ }
++
++ params->hdr.size = 0;
++ params->hdr.tag = ATAG_NONE;
++
++ len = ((char *)params - buf) + sizeof(struct tag_header);
++
++ add_segment(info, buf, len, base, len);
++
++ if (initrd) {
++ struct memory_range *range;
++ int ranges;
++ get_memory_ranges(&range, &ranges);
++ *initrd_start = locate_hole(info, initrd_len, getpagesize(), range[0].start + 0x800000, ULONG_MAX, INT_MAX);
++ if (*initrd_start == ULONG_MAX)
++ return -1;
++ add_segment(info, initrd, initrd_len, *initrd_start, initrd_len);
++ }
++
++ return 0;
++}
++
++int zImage_arm_load(int argc, char **argv, const char *buf, off_t len,
+ struct kexec_info *info)
+ {
+ unsigned long base;
+- unsigned int offset = 0x8000; /* 32k offset from memory start */
++ unsigned int atag_offset = 0x1000; /* 4k offset from memory start */
++ unsigned int offset = 0x8000; /* 32k offset from memory start */
++ const char *command_line;
++ off_t command_line_len;
++ const char *ramdisk;
++ char *ramdisk_buf;
++ off_t ramdisk_length;
++ int opt;
++#define OPT_APPEND 'a'
++#define OPT_RAMDISK 'r'
++ static const struct option options[] = {
++ KEXEC_ARCH_OPTIONS
++ { "command-line", 1, 0, OPT_APPEND },
++ { "append", 1, 0, OPT_APPEND },
++ { "initrd", 1, 0, OPT_RAMDISK },
++ { "ramdisk", 1, 0, OPT_RAMDISK },
++ { 0, 0, 0, 0 },
++ };
++ static const char short_options[] = KEXEC_ARCH_OPT_STR "a:r:";
++
++ /*
++ * Parse the command line arguments
++ */
++ command_line = 0;
++ command_line_len = 0;
++ ramdisk = 0;
++ ramdisk_buf = 0;
++ ramdisk_length = 0;
++ while((opt = getopt_long(argc, argv, short_options, options, 0)) != -1) {
++ switch(opt) {
++ default:
++ /* Ignore core options */
++ if (opt < OPT_ARCH_MAX) {
++ break;
++ }
++ case '?':
++ usage();
++ return -1;
++ case OPT_APPEND:
++ command_line = optarg;
++ break;
++ case OPT_RAMDISK:
++ ramdisk = optarg;
++ break;
++ }
++ }
++ if (command_line) {
++ command_line_len = strlen(command_line) + 1;
++ if (command_line_len > COMMAND_LINE_SIZE)
++ command_line_len = COMMAND_LINE_SIZE;
++ }
++ if (ramdisk) {
++ ramdisk_buf = slurp_file(ramdisk, &ramdisk_length);
++ }
++
+ base = locate_hole(info,len+offset,0,0,ULONG_MAX,INT_MAX);
+ if (base == ULONG_MAX)
+- {
+ return -1;
+- }
+- base += offset;
+- add_segment(info,buf,len,base,len);
+- info->entry = (void*)base;
++
++ if (atag_arm_load(info, base + atag_offset,
++ command_line, command_line_len,
++ ramdisk_buf, ramdisk_length) == -1)
++ return -1;
++
++ add_segment(info, buf, len, base + offset, len);
++
++ info->entry = (void*)base + offset;
++
+ return 0;
+ }
diff --git a/packages/kexec/kexec-tools_1.101.bb b/packages/kexec/kexec-tools_1.101.bb
index 4dfab1e06f..d152a678ed 100644
--- a/packages/kexec/kexec-tools_1.101.bb
+++ b/packages/kexec/kexec-tools_1.101.bb
@@ -4,12 +4,13 @@ HOMEPAGE = "http://www.xmission.com/~ebiederm/files/kexec/"
SECTION = "kernel/userland"
DEPENDS = "virtual/kernel zlib"
LICENSE = "GPL"
-PR = "r1"
+PR = "r3"
inherit autotools
-EXTRA_OEMAKE = "LDFLAGS=-L${STAGING_LIBDIR} -Wl,--rpath-link,${STAGING_LIBDIR} "
-EXTRA_OECONF = " --with-zlib=${STAGING_LIBDIR}/.."
+export LDFLAGS = "-L${STAGING_LIBDIR}"
+EXTRA_OECONF = " --with-zlib=yes"
SRC_URI = "http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-${PV}.tar.gz \
- file://kexec-tools-arm.patch;patch=1 "
+ file://kexec-tools-arm.patch;patch=1 \
+ file://kexec-arm-atags.patch;patch=1"
diff --git a/packages/kismet/kismet_2007-10-R1.bb b/packages/kismet/kismet_2007-10-R1.bb
index 1c78d468d7..1a53c6f78f 100644
--- a/packages/kismet/kismet_2007-10-R1.bb
+++ b/packages/kismet/kismet_2007-10-R1.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Kismet is an 802.11 layer2 wireless network detector, sniffer, an
HOMEPAGE = "http://www.kismetwireless.net/"
SECTION = "console/network"
LICENSE = "GPLv2"
-DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2"
-PR = "r1"
+DEPENDS = "expat gmp imagemagick tiff fakeroot-native zlib bzip2 libpcap"
+PR = "r2"
SRC_URI = "http://www.kismetwireless.net/code/kismet-${PV}.tar.gz"
diff --git a/packages/knights/knights_1.14.bb b/packages/knights/knights_1.14.bb
index 1e0766a7c7..dc3e026376 100644
--- a/packages/knights/knights_1.14.bb
+++ b/packages/knights/knights_1.14.bb
@@ -17,7 +17,7 @@ inherit palmtop
QMAKE_PROFILES = "knights.pro"
do_configure_prepend() {
- echo -e "TEMPLATE=subdirs\nSUBDIRS=qtcompat microkde knights\n" >knights.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=qtcompat microkde knights\n" >knights.pro
}
do_install() {
diff --git a/packages/roadmap/zroadmap-1.0.12/.mtn2git_empty b/packages/libdotconf/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/roadmap/zroadmap-1.0.12/.mtn2git_empty
+++ b/packages/libdotconf/.mtn2git_empty
diff --git a/packages/uboot/.mtn2git_empty b/packages/libdotconf/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/.mtn2git_empty
+++ b/packages/libdotconf/files/.mtn2git_empty
diff --git a/packages/libdotconf/files/srcMakefile.am_00.patch b/packages/libdotconf/files/srcMakefile.am_00.patch
new file mode 100644
index 0000000000..500f1fd2d7
--- /dev/null
+++ b/packages/libdotconf/files/srcMakefile.am_00.patch
@@ -0,0 +1,9 @@
+--- dotconf-1.0.13/src/Makefile.am.orig 2008-01-02 11:48:16.000000000 +0000
++++ dotconf-1.0.13/src/Makefile.am 2008-01-02 11:48:22.000000000 +0000
+@@ -1,5 +1,5 @@
+
+-INCLUDES = -I. -I$(includedir)
++INCLUDES = -I.
+
+ include_HEADERS = dotconf.h
+ noinst_HEADERS = readdir.h
diff --git a/packages/libdotconf/libdotconf_1.0.13.bb b/packages/libdotconf/libdotconf_1.0.13.bb
new file mode 100644
index 0000000000..05520519b6
--- /dev/null
+++ b/packages/libdotconf/libdotconf_1.0.13.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = " dot.conf is an easy to use and powerful configuration file parser library"
+HOMEPAGE = "http://www.azzit.de/dotconf/"
+LICENSE = "LGPLv2"
+
+PR = "r0"
+
+inherit autotools
+
+SRC_URI = "http://www.azzit.de/dotconf/download/v1.0/dotconf-${PV}.tar.gz \
+ file://srcMakefile.am_00.patch;patch=1"
+
+S = "${WORKDIR}/dotconf-${PV}"
+
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+
+ install -m 0644 ${S}/src/dotconf.h ${D}${includedir}
+ oe_libinstall -C src -so libdotconf ${D}${libdir}
+}
+
+do_stage() {
+ install -m 0644 ${S}/src/dotconf.h ${STAGING_INCDIR}/
+ oe_libinstall -C src -so libdotconf ${STAGING_LIBDIR}/
+}
diff --git a/packages/libqanava/libqanava_0.0.7.bb b/packages/libqanava/libqanava_0.0.7.bb
index dbec5c7001..5edf1417c1 100644
--- a/packages/libqanava/libqanava_0.0.7.bb
+++ b/packages/libqanava/libqanava_0.0.7.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "Qanava is a gtaph library based on the Qt4 Arthur framework."
+DESCRIPTION = "Qanava is a graph library based on the Qt4 Arthur framework."
SECTION = "x11/libs"
HOMEPAGE = "http://www.libqanava.org/"
# LGPL after 0.0.7
@@ -8,7 +8,7 @@ PR = "r0"
SRC_URI = "http://www.libqanava.org/dl/qanava-${PV}.tar.gz"
S = "${WORKDIR}/qanava-${PV}"
-inherit qmake qt4x11
+inherit qt4x11
PARALLEL_MAKE = ""
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/uboot/files/.mtn2git_empty b/packages/libtool/libtool-1.5.6/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/files/.mtn2git_empty
+++ 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/uboot/u-boot-1.1.2/.mtn2git_empty b/packages/linux/linux-2.6.22.6/mx31moboard/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-1.1.2/.mtn2git_empty
+++ 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/uboot/u-boot-1.1.4/.mtn2git_empty b/packages/linux/linux-2.6.23+2.6.24-rc5/alix/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-1.1.4/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23+2.6.24-rc5/alix/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.23+2.6.24-rc5/alix/defconfig b/packages/linux/linux-2.6.23+2.6.24-rc5/alix/defconfig
new file mode 100644
index 0000000000..c2750cc213
--- /dev/null
+++ b/packages/linux/linux-2.6.23+2.6.24-rc5/alix/defconfig
@@ -0,0 +1,1836 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc5
+# Fri Dec 21 10:16:47 2007
+#
+# CONFIG_64BIT is not set
+CONFIG_X86_32=y
+# CONFIG_X86_64 is not set
+CONFIG_X86=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_SEMAPHORE_SLEEPERS=y
+CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
+CONFIG_QUICKLIST=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_DMI=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+# CONFIG_GENERIC_TIME_VSYSCALL is not set
+CONFIG_ARCH_SUPPORTS_OPROFILE=y
+# CONFIG_ZONE_DMA32 is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_AUDIT_ARCH is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_KTIME_SCALAR=y
+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=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+CONFIG_AUDIT=y
+# CONFIG_AUDITSYSCALL 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 is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD 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=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# Processor type and features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_SMP is not set
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_X86_VSMP is not set
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+# CONFIG_PARAVIRT_GUEST is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MGEODEGX1 is not set
+CONFIG_MGEODE_LX=y
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_GENERIC_CPU is not set
+# CONFIG_X86_GENERIC is not set
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_X86_XADD=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_USE_3DNOW=y
+CONFIG_X86_TSC=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=4
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_BKL=y
+# CONFIG_X86_UP_APIC is not set
+# CONFIG_X86_MCE is not set
+CONFIG_VM86=y
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+CONFIG_X86_REBOOTFIXUPS=y
+# CONFIG_MICROCODE is not set
+CONFIG_X86_MSR=m
+# CONFIG_X86_CPUID is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_X86_PAE is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_NR_QUICK=1
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_MTRR is not set
+# CONFIG_EFI is not set
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+# CONFIG_KEXEC is not set
+CONFIG_PHYSICAL_START=0x100000
+# CONFIG_RELOCATABLE is not set
+CONFIG_PHYSICAL_ALIGN=0x100000
+# CONFIG_COMPAT_VDSO is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+# CONFIG_SUSPEND is not set
+CONFIG_HIBERNATION_UP_POSSIBLE=y
+# CONFIG_HIBERNATION is not set
+CONFIG_ACPI=y
+# CONFIG_ACPI_PROCFS is not set
+# CONFIG_ACPI_PROCFS_POWER is not set
+# CONFIG_ACPI_PROC_EVENT is not set
+# CONFIG_ACPI_AC is not set
+# CONFIG_ACPI_BATTERY is not set
+# CONFIG_ACPI_BUTTON is not set
+# CONFIG_ACPI_FAN is not set
+# CONFIG_ACPI_DOCK is not set
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_ASUS is not set
+# CONFIG_ACPI_TOSHIBA is not set
+CONFIG_ACPI_BLACKLIST_YEAR=0
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+# CONFIG_ACPI_CONTAINER is not set
+# CONFIG_ACPI_SBS is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCIEPORTBUS is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCI_LEGACY is not set
+# CONFIG_PCI_DEBUG is not set
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+CONFIG_GEODE_MFGPT_TIMER=y
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=m
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=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=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# Bridge: Netfilter Configuration
+#
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+CONFIG_CFG80211=m
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+# CONFIG_MTD is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+CONFIG_PARPORT_AX88796=m
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_EEPROM_93CX6=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 is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=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 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 is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_ACPI=y
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ACPI is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_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_CS5535 is not set
+CONFIG_PATA_CS5536=y
+# 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_NS87415 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_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_NET_SB1000 is not set
+# CONFIG_IP1000 is not set
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+CONFIG_VIA_RHINE=y
+CONFIG_VIA_RHINE_MMIO=y
+CONFIG_VIA_RHINE_NAPI=y
+# CONFIG_SC92031 is not set
+# CONFIG_NET_POCKET is not set
+# 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=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_LIBERTAS is not set
+# CONFIG_AIRO is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_RTL8187 is not set
+# CONFIG_ADM8211 is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_IWLWIFI is not set
+# CONFIG_HOSTAP is not set
+CONFIG_BCM43XX=m
+CONFIG_BCM43XX_DEBUG=y
+CONFIG_BCM43XX_DMA=y
+CONFIG_BCM43XX_PIO=y
+CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
+# CONFIG_BCM43XX_DMA_MODE is not set
+# CONFIG_BCM43XX_PIO_MODE is not set
+CONFIG_B43=m
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+# CONFIG_B43_DEBUG is not set
+CONFIG_B43_DMA=y
+CONFIG_B43_PIO=y
+CONFIG_B43_DMA_AND_PIO_MODE=y
+# CONFIG_B43_DMA_MODE is not set
+# CONFIG_B43_PIO_MODE is not set
+CONFIG_B43LEGACY=m
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_DEBUG=y
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+# CONFIG_B43LEGACY_DMA_MODE is not set
+# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_RT2X00=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2400PCI=m
+# CONFIG_RT2400PCI_RFKILL is not set
+CONFIG_RT2500PCI=m
+# CONFIG_RT2500PCI_RFKILL is not set
+CONFIG_RT61PCI=m
+# CONFIG_RT61PCI_RFKILL is not set
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+# CONFIG_RT2X00_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+CONFIG_USB_USBNET=m
+# CONFIG_USB_NET_AX8817X is not set
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+# CONFIG_USB_NET_GL620A is not set
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET=m
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+# CONFIG_USB_BELKIN is not set
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA 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_PCSPKR=y
+# CONFIG_INPUT_WISTRON_BTNS is not set
+# CONFIG_INPUT_ATLAS_BTNS is not set
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_PRINTER is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_INTEL is not set
+# CONFIG_HW_RANDOM_AMD is not set
+CONFIG_HW_RANDOM_GEODE=y
+# CONFIG_HW_RANDOM_VIA is not set
+# CONFIG_NVRAM is not set
+CONFIG_RTC=y
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+# CONFIG_MWAVE is not set
+# CONFIG_PC8736x_GPIO is not set
+CONFIG_NSC_GPIO=m
+CONFIG_CS5535_GPIO=m
+# CONFIG_RAW_DRIVER is not set
+CONFIG_HPET=y
+# CONFIG_HPET_RTC_IRQ is not set
+CONFIG_HPET_MMAP=y
+CONFIG_HANGCHECK_TIMER=m
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+CONFIG_SCx200_ACB=m
+# 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 is not set
+# 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 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
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY 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 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_K8TEMP is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_FSCHMD is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_CORETEMP 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 is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+CONFIG_SENSORS_W83627HF=m
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_SENSORS_APPLESMC is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+# CONFIG_ALIM1535_WDT is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_SC520_WDT is not set
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_IB700_WDT is not set
+# CONFIG_IBMASR is not set
+# CONFIG_WAFER_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+# CONFIG_ITCO_WDT is not set
+# CONFIG_SC1200_WDT is not set
+# CONFIG_PC87413_WDT is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_CPU5_WDT is not set
+# CONFIG_SMSC37B787_WDT is not set
+# CONFIG_W83627HF_WDT is not set
+# CONFIG_W83697HF_WDT is not set
+# CONFIG_W83877F_WDT is not set
+# CONFIG_W83977F_WDT is not set
+# CONFIG_MACHZ_WDT is not set
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+CONFIG_SSB=m
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=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
+# 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_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_VESA is not set
+# CONFIG_FB_EFI is not set
+# CONFIG_FB_HECUBA is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I810 is not set
+# CONFIG_FB_LE80578 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_CYBLA is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=y
+# CONFIG_FB_GEODE_GX is not set
+# CONFIG_FB_GEODE_GX1 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
+CONFIG_VIDEO_SELECT=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+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=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_RTCTIMER=m
+# CONFIG_SND_DYNAMIC_MINORS is not set
+# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CS5530 is not set
+CONFIG_SND_CS5535AUDIO=m
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 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
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=1
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# 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_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+CONFIG_HIDRAW=y
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_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=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_PERSIST is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# 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=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC 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 is not set
+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_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
+# 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
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=y
+# 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
+#
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_VIRTUALIZATION is not set
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+# CONFIG_DELL_RBU is not set
+# CONFIG_DCDBAS is not set
+# CONFIG_DMIID is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=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 is not set
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BIND34=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+CONFIG_CIFS_EXPERIMENTAL=y
+# CONFIG_NCP_FS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf-8"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+CONFIG_NLS_CODEPAGE_852=m
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+CONFIG_NLS_CODEPAGE_1250=m
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+# 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
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_PRINTK_TIME=y
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# 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=y
+# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
+# 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_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_FRAME_POINTER is not set
+CONFIG_FORCED_INLINING=y
+# 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_EARLY_PRINTK=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_RODATA is not set
+CONFIG_4KSTACKS=y
+CONFIG_DOUBLEFAULT=y
+
+#
+# Security options
+#
+# 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_ABLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_XTS is not set
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_586=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_AES_586=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_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_PADLOCK is not set
+CONFIG_CRYPTO_DEV_GEODE=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_AUDIT_GENERIC=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+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-2.6.23+2.6.24-rc5/cm-x270/defconfig b/packages/linux/linux-2.6.23+2.6.24-rc5/cm-x270/defconfig
index c036ac7215..57a98014b3 100644
--- a/packages/linux/linux-2.6.23+2.6.24-rc5/cm-x270/defconfig
+++ b/packages/linux/linux-2.6.23+2.6.24-rc5/cm-x270/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24-rc5
-# Sat Dec 15 16:31:42 2007
+# Tue Dec 18 12:02:51 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -315,6 +315,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
+CONFIG_NET_SCH_FIFO=y
#
# Network testing
@@ -328,10 +329,18 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
#
# Wireless
#
-# CONFIG_CFG80211 is not set
-# CONFIG_WIRELESS_EXT is not set
-# CONFIG_MAC80211 is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_CFG80211=m
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# 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
# CONFIG_NET_9P is not set
@@ -525,7 +534,18 @@ CONFIG_DM9000=y
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+# CONFIG_LIBERTAS_USB is not set
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_RT2X00 is not set
#
# USB Network Adapters
@@ -984,7 +1004,7 @@ CONFIG_USB_MON=y
#
# CONFIG_USB_GADGET is not set
CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
+# CONFIG_MMC_DEBUG=y
# CONFIG_MMC_UNSAFE_RESUME is not set
#
@@ -1178,7 +1198,47 @@ CONFIG_FRAME_POINTER=y
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+# CONFIG_CRYPTO_CBC is not set
+# 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 is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
#
# Library routines
diff --git a/packages/uboot/u-boot-1.1.6/.mtn2git_empty b/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-1.1.6/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/0001-gesbc-nand.patch b/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/0001-gesbc-nand.patch
new file mode 100644
index 0000000000..0f5e909148
--- /dev/null
+++ b/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/0001-gesbc-nand.patch
@@ -0,0 +1,306 @@
+From 9819226a16a12ba0545e90b475fa70d408544971 Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.(none)>
+Date: Mon, 17 Dec 2007 16:45:47 -0500
+Subject: [PATCH] gesbc-nand
+
+---
+ drivers/mtd/nand/Kconfig | 7 ++
+ drivers/mtd/nand/Makefile | 1 +
+ drivers/mtd/nand/gesbc.c | 255 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 263 insertions(+), 0 deletions(-)
+ create mode 100644 drivers/mtd/nand/gesbc.c
+
+diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
+index 246d451..cde3146 100644
+--- a/drivers/mtd/nand/Kconfig
++++ b/drivers/mtd/nand/Kconfig
+@@ -51,6 +51,13 @@ config MTD_NAND_EDB7312
+ This enables the driver for the Cirrus Logic EBD7312 evaluation
+ board to access the onboard NAND Flash.
+
++config MTD_NAND_GESBC
++ tristate "Support for Glomation GESBC-93xx board"
++ depends on MTD_NAND && MACH_EDB9302
++ help
++ This enables the driver for the Glomation GESBC-93xx
++ board to access the onboard NAND Flash.
++
+ config MTD_NAND_H1900
+ tristate "iPAQ H1900 flash"
+ depends on ARCH_PXA && MTD_PARTITIONS
+diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
+index 3ad6c01..58c1961 100644
+--- a/drivers/mtd/nand/Makefile
++++ b/drivers/mtd/nand/Makefile
+@@ -12,6 +12,7 @@ obj-$(CONFIG_MTD_NAND_AMS_DELTA) += ams-delta.o
+ obj-$(CONFIG_MTD_NAND_TOTO) += toto.o
+ obj-$(CONFIG_MTD_NAND_AUTCPU12) += autcpu12.o
+ obj-$(CONFIG_MTD_NAND_EDB7312) += edb7312.o
++obj-$(CONFIG_MTD_NAND_GESBC) += gesbc.o
+ obj-$(CONFIG_MTD_NAND_AU1550) += au1550nd.o
+ obj-$(CONFIG_MTD_NAND_BF5XX) += bf5xx_nand.o
+ obj-$(CONFIG_MTD_NAND_PPCHAMELEONEVB) += ppchameleonevb.o
+diff --git a/drivers/mtd/nand/gesbc.c b/drivers/mtd/nand/gesbc.c
+new file mode 100644
+index 0000000..a5844b1
+--- /dev/null
++++ b/drivers/mtd/nand/gesbc.c
+@@ -0,0 +1,255 @@
++/*
++ * drivers/mtd/nand/gesbc-9302.c
++ *
++ * Copyright (C) 2004 Glomation (support@glomationinc.com)
++ *
++ * Derived from drivers/mtd/nand/edb7312.c
++ * Copyright (C) 2004 Marius Grer (mag@sysgo.de)
++ *
++ * Derived from drivers/mtd/nand/autcpu12.c
++ * Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de)
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * Overview:
++ * This is a device driver for the NAND flash device found on the
++ * GESBC-93xx board with Samsung 128/256/512 Mbyte part.
++ */
++
++#include <linux/slab.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/partitions.h>
++#include <asm/io.h>
++#include <asm/arch/hardware.h>
++#include <asm/sizes.h>
++
++#define GESBC_NAND_FLASH_DATA 0x10000000
++
++#define GPIO_PADR EP93XX_GPIO_REG(0x0)
++#define GPIO_PADDR EP93XX_GPIO_REG(0x10)
++#define SMCBCR1 (EP93XX_AHB_VIRT_BASE + 0x00082000 + 0x04)
++
++/*
++ * MTD structure for GESBC-93xx board
++ */
++static struct mtd_info *gesbc_mtd = NULL;
++
++
++/*
++ * Module stuff
++ */
++static unsigned long gesbc_fio_pbase = GESBC_NAND_FLASH_DATA;
++
++#ifdef CONFIG_MTD_PARTITIONS
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info32[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 128*1024*1024 },
++};
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info128[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 128*1024*1024 },
++};
++
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info256[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 256*1024*1024 },
++};
++
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info512[] = {
++ { .name= "GESBC NAND FLASH",
++ .offset= 0,
++ .size= 512*1024*1024 },
++};
++
++#define NUM_PARTITIONS 1
++#endif
++
++
++/*
++ * hardware specific access to control-lines
++ * NAND_NCE: bit 0 -> bit 3
++ * NAND_CLE: bit 1 -> bit 4
++ * NAND_ALE: bit 2 -> bit 6
++ */
++static void gesbc_hwcontrol(struct mtd_info *mtd, int cmd, int ctrl)
++{
++ unsigned long flags;
++ struct nand_chip *chip = mtd->priv;
++
++ /* Disbale interrupt to avoid race condition */
++ local_irq_save(flags);
++
++ if (ctrl & NAND_CTRL_CHANGE) {
++ unsigned char bits;
++
++ bits = (ctrl & NAND_CLE) << 3;
++ bits |= (ctrl & NAND_ALE) << 4;
++ if (ctrl & NAND_NCE)
++ bits &= ~0x08;
++ else
++ bits |= 0x08;
++
++ __raw_writel( (__raw_readl(GPIO_PADR) & ~0x58 )| bits, GPIO_PADR);
++ }
++ if (cmd != NAND_CMD_NONE)
++ writeb(cmd, chip->IO_ADDR_W);
++ /* Restore interrupt state */
++ local_irq_restore(flags);
++}
++
++/*
++ * read device ready pin
++ */
++static int gesbc_device_ready(struct mtd_info *mtd)
++{
++ return (__raw_readl(GPIO_PADR) & 0x80) >> 7;
++}
++
++#define MTDID "s3c2440-nand"
++
++static const char *probes[] = { "cmdlinepart", NULL };
++
++
++
++/*
++ * Main initialization routine
++ */
++static int __init gesbc_nand_init (void)
++{
++ struct nand_chip *this;
++ const char *part_type = 0;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++ unsigned long flags;
++ void * gesbc_fio_base;
++
++ /* Allocate memory for MTD device structure and private data */
++ gesbc_mtd = kmalloc(sizeof(struct mtd_info) +
++ sizeof(struct nand_chip),
++ GFP_KERNEL);
++ if (!gesbc_mtd) {
++ printk("Unable to allocate GESBC NAND MTD device structure.\n");
++ return -ENOMEM;
++ }
++
++ /* map physical adress */
++ gesbc_fio_base = ioremap(gesbc_fio_pbase, SZ_1K);
++ if(!gesbc_fio_base) {
++ printk("ioremap GESBC-93xx NAND flash failed\n");
++ kfree(gesbc_mtd);
++ return -EIO;
++ }
++
++
++ /* Get pointer to private data */
++ this = (struct nand_chip *) (&gesbc_mtd[1]);
++
++ /* Initialize structures */
++ memset((char *) gesbc_mtd, 0, sizeof(struct mtd_info));
++ memset((char *) this, 0, sizeof(struct nand_chip));
++
++ /* Link the private data with the MTD structure */
++ gesbc_mtd->priv = this;
++
++ /* Disbale interrupt to avoid race condition */
++ local_irq_save(flags);
++
++ /*
++ * Set GPIO Port A control register so that the pins are configured
++ * to be outputs for controlling the NAND flash.
++ */
++ __raw_writel((__raw_readl(GPIO_PADDR) | 0x58) & ~0x80, GPIO_PADDR);
++ /* Clear NCE, clear CLE, clear ALE */
++ __raw_writel( (__raw_readl(GPIO_PADR) | 0x08 ) & ~0x50, GPIO_PADR);
++ /* Set SRAM controller to 32 bit (8 bit just doesn't work, don't know why) bus width and 7 CLK wait state */
++ __raw_writel(0x10003ce0, SMCBCR1);
++ local_irq_restore(flags);
++
++
++ /* insert callbacks */
++ this->IO_ADDR_R = (void *) gesbc_fio_base;
++ this->IO_ADDR_W = (void *) gesbc_fio_base;
++ this->cmd_ctrl = (void *) gesbc_hwcontrol;
++ this->dev_ready = gesbc_device_ready;
++ this->chip_delay = 25;
++ this->ecc.mode = NAND_ECC_SOFT;
++
++ __raw_writel(0xffffffff, gesbc_fio_base);
++ printk("Searching for NAND flash...\n");
++ /* Scan to find existence of the device */
++ if (nand_scan (gesbc_mtd, 1)) {
++ iounmap((void *)gesbc_fio_base);
++ kfree (gesbc_mtd);
++ return -ENXIO;
++ }
++
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ gesbc_mtd->name="GESBC-NAND";
++ mtd_parts_nb = parse_mtd_partitions(gesbc_mtd, probes, &mtd_parts, 0);
++ if (mtd_parts_nb > 0)
++ part_type = "command line";
++ else
++ mtd_parts_nb = 0;
++#endif
++
++ if (mtd_parts_nb == 0)
++ {
++ mtd_parts_nb = NUM_PARTITIONS;
++ mtd_parts = partition_info32;
++ if (gesbc_mtd->size >= (128 * 0x100000))
++ mtd_parts = partition_info128;
++ if (gesbc_mtd->size >= (256 * 0x100000))
++ mtd_parts = partition_info256;
++ if (gesbc_mtd->size >= (512 * 0x100000))
++ mtd_parts = partition_info512;
++ part_type = "static";
++ }
++
++ /* Register the partitions */
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(gesbc_mtd, mtd_parts, mtd_parts_nb);
++
++ /* Return happy */
++ return 0;
++}
++module_init(gesbc_nand_init);
++
++/*
++ * Clean up routine
++ */
++static void __exit gesbc_nand_cleanup (void)
++{
++/* struct nand_chip *this = (struct nand_chip *) &gesbc_mtd[1]; */
++
++ /* Unregister the device */
++ del_mtd_device (gesbc_mtd);
++
++ /* Free the MTD device structure */
++ kfree (gesbc_mtd);
++}
++module_exit(gesbc_nand_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("zql@glomationinc.com");
++MODULE_DESCRIPTION("MTD map driver for Glomation GESBC-93xx board");
++
+--
+1.5.2.5
+
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-qemuarm b/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/defconfig
index e34fe5c090..e45c86e160 100644
--- a/packages/linux/linux-rp-2.6.17/defconfig-qemuarm
+++ b/packages/linux/linux-2.6.23+2.6.24-rc5/gesbc-9302/defconfig
@@ -1,40 +1,61 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sat Aug 26 22:45:02 2006
+# Linux kernel version: 2.6.24-rc5
+# Mon Dec 17 17:01:48 2007
#
CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+# 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
CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
-# Code maturity level options
+# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=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=y
CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+# CONFIG_FAIR_GROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -44,115 +65,146 @@ CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_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
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
+# CONFIG_IOSCHED_AS is not set
CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
+# 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="anticipatory"
+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_EP93XX=y
# 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_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_VERSATILE=y
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
#
-# Versatile platform type
+# Cirrus EP93xx Implementation Options
+#
+CONFIG_CRUNCH=y
+
+#
+# EP93xx Platforms
+#
+# CONFIG_MACH_ADSSPHERE is not set
+CONFIG_MACH_EDB9302=y
+# CONFIG_MACH_EDB9302A is not set
+# CONFIG_MACH_EDB9307 is not set
+# CONFIG_MACH_EDB9312 is not set
+# CONFIG_MACH_EDB9315 is not set
+# CONFIG_MACH_EDB9315A is not set
+# CONFIG_MACH_GESBC9312 is not set
+# CONFIG_MACH_MICRO9 is not set
+# CONFIG_MACH_MICRO9H is not set
+# CONFIG_MACH_MICRO9M is not set
+# CONFIG_MACH_MICRO9L is not set
+# CONFIG_MACH_TS72XX is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
#
-CONFIG_ARCH_VERSATILE_PB=y
-# CONFIG_MACH_VERSATILE_AB is not set
#
# Processor Type
#
CONFIG_CPU_32=y
-CONFIG_CPU_ARM926T=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
-CONFIG_ARM_THUMB=y
+# CONFIG_ARM_THUMB is not set
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-# CONFIG_KEXEC is not set
+# CONFIG_OUTER_CACHE is not set
CONFIG_ARM_VIC=y
-CONFIG_ICST307=y
#
# Bus support
#
CONFIG_ARM_AMBA=y
-CONFIG_PCI=y
-# CONFIG_PCI_DEBUG is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set
#
# Kernel Features
#
+# CONFIG_TICK_ONESHOT is not set
# CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100
@@ -165,10 +217,12 @@ 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_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
CONFIG_ALIGNMENT_TRAP=y
#
@@ -176,8 +230,9 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+CONFIG_CMDLINE="console=ttyAM0 root=/dev/ram"
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# Floating point emulation
@@ -187,9 +242,8 @@ CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2
# At least one emulation must be selected
#
CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
+CONFIG_FPE_NWFPE_XP=y
# CONFIG_FPE_FASTFPE is not set
-CONFIG_VFP=y
#
# Userspace binary formats
@@ -202,10 +256,8 @@ CONFIG_BINFMT_ELF=y
#
# Power management options
#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM is not set
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
#
# Networking
@@ -215,13 +267,17 @@ CONFIG_NET=y
#
# Networking options
#
-# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
+# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
@@ -230,36 +286,30 @@ 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_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO 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_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
@@ -270,13 +320,8 @@ CONFIG_TCP_CONG_BIC=y
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
# CONFIG_NET_SCHED is not set
#
@@ -286,7 +331,17 @@ CONFIG_TCP_CONG_BIC=y
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
#
# Device Drivers
@@ -295,36 +350,37 @@ CONFIG_TCP_CONG_BIC=y
#
# Generic Driver Options
#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
# 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_CONCAT=y
CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
#
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
+CONFIG_MTD_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
+# CONFIG_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
@@ -349,26 +405,27 @@ CONFIG_MTD_CFI_I2=y
# 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_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
+CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
#
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
#
-# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
@@ -380,52 +437,46 @@ CONFIG_MTD_CFI_UTIL=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_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_GESBC=y
+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_ALAUDA is not set
# CONFIG_MTD_ONENAND is not set
#
-# Parallel port support
+# UBI - Unsorted block images
#
+# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
+CONFIG_BLK_DEV_RAM_SIZE=12288
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
-CONFIG_SCSI_PROC_FS=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
#
# SCSI support type (disk, tape, CD-ROM)
@@ -443,221 +494,83 @@ CONFIG_BLK_DEV_SD=y
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
#
-# SCSI Transport Attributes
+# SCSI Transports
#
-CONFIG_SCSI_SPI_ATTRS=y
+# 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_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_SMC91X=y
+CONFIG_EP93XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
# CONFIG_DM9000 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
#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_PCI is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-
-#
-# Ethernet (10000 Mbit)
+# Wireless LAN
#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
+# 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_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
# CONFIG_ISDN is not set
#
# Input device support
#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_UINPUT is not set
+# CONFIG_INPUT is not set
#
# Hardware I/O ports
#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
+# CONFIG_VT is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
@@ -668,188 +581,185 @@ CONFIG_HW_CONSOLE=y
#
# Non-8250 serial port support
#
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_AMBA_PL010=y
+CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
+# CONFIG_SERIAL_AMBA_PL011 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
#
-# Ftape, the floppy tape device driver
+# I2C Algorithms
#
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
#
-# TPM devices
+# I2C Hardware Bus support
#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK 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
#
-# I2C support
+# Miscellaneous I2C Chip support
#
-# CONFIG_I2C is not set
+CONFIG_SENSORS_DS1337=y
+# 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=y
+CONFIG_I2C_DEBUG_ALGO=y
+CONFIG_I2C_DEBUG_BUS=y
+CONFIG_I2C_DEBUG_CHIP=y
#
# 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_POWER_SUPPLY is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
#
-# Misc devices
+# Watchdog Device Drivers
#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_EP93XX_WATCHDOG=y
#
-# Multi-Function Devices
+# USB-based Watchdog Cards
#
+# CONFIG_USBPCWATCHDOG is not set
#
-# LED devices
+# Sonics Silicon Backplane
#
-CONFIG_NEW_LEDS=y
-# CONFIG_LEDS_CLASS is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
#
-# LED drivers
+# Multifunction device drivers
#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
+# CONFIG_MFD_SM501 is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
+# CONFIG_DVB_CORE is not set
+# CONFIG_DAB is not set
#
# Graphics support
#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_ARMCLCD=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
-# Sound
+# Display device support
#
-# CONFIG_SOUND is not set
+# CONFIG_DISPLAY_SUPPORT is not set
#
-# USB support
+# Sound
#
+# CONFIG_SOUND is not set
+CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
+CONFIG_USB_DEBUG=y
#
# Miscellaneous USB options
#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_DYNAMIC_MINORS=y
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
-# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
#
# USB Device Class drivers
@@ -864,47 +774,26 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
#
# may also be needed; see USB_STORAGE Help for more information
#
-# CONFIG_USB_STORAGE is not set
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set
#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-CONFIG_USB_WACOM=y
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
+# CONFIG_USB_MON is not set
#
# USB port drivers
@@ -920,16 +809,23 @@ CONFIG_USB_MON=y
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_PHIDGET is not set
# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
#
# USB DSL modem support
@@ -939,19 +835,13 @@ CONFIG_USB_MON=y
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
+# CONFIG_NEW_LEDS 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
@@ -959,12 +849,43 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
#
-# RTC drivers
+# 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
+# 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
+# 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_TEST is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_EP93XX=y
+# CONFIG_RTC_DRV_PL031 is not set
#
# File systems
@@ -972,15 +893,20 @@ CONFIG_RTC_INTF_DEV=y
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_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
@@ -996,18 +922,22 @@ CONFIG_DNOTIFY=y
#
# DOS/FAT/NT Filesystems
#
+CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set
#
# 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
#
@@ -1020,42 +950,36 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_SQUASHFS 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_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
+# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=y
@@ -1064,7 +988,6 @@ CONFIG_SMB_FS=y
# 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
@@ -1086,13 +1009,10 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
+# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
+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
@@ -1116,7 +1036,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
+CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
@@ -1130,61 +1050,76 @@ CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=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=y
-CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_TIMER_STATS is not set
+CONFIG_DEBUG_SLAB=y
+# CONFIG_DEBUG_SLAB_LEAK is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_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_UNWIND_INFO is not set
CONFIG_FORCED_INLINING=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
+CONFIG_DEBUG_USER=y
CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
+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_SECURITY_FILE_CAPABILITIES is not set
# CONFIG_CRYPTO is not set
#
-# Hardware crypto devices
-#
-
-#
# Library routines
#
+CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=y
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/uboot/u-boot-1.2.0/.mtn2git_empty b/packages/linux/linux-2.6.23+2.6.24-rc6/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-1.2.0/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23+2.6.24-rc6/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-1.2.0/fic-gta01/.mtn2git_empty
+++ b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0001-2.6.23-at91.patch b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0001-2.6.23-at91.patch
new file mode 100644
index 0000000000..3ea8176a10
--- /dev/null
+++ b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0001-2.6.23-at91.patch
@@ -0,0 +1,16686 @@
+From 2407b971cc3fa6f316e1b5f61e003d7aec6b8917 Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.(none)>
+Date: Fri, 21 Dec 2007 17:36:05 -0500
+Subject: [PATCH] 2.6.23-at91
+
+---
+ arch/arm/Kconfig | 1 +
+ arch/arm/boot/compressed/head-at91rm9200.S | 24 +
+ arch/arm/configs/at91rm9200dk_defconfig | 4 +-
+ arch/arm/configs/at91rm9200ek_defconfig | 4 +-
+ arch/arm/configs/at91sam9260ek_defconfig | 139 ++-
+ arch/arm/configs/at91sam9261ek_defconfig | 114 ++-
+ arch/arm/configs/at91sam9263ek_defconfig | 60 +-
+ arch/arm/configs/ateb9200_defconfig | 2 +-
+ arch/arm/configs/cam60_defconfig | 954 +++++++++++++++++
+ arch/arm/configs/csb337_defconfig | 4 +-
+ arch/arm/configs/csb637_defconfig | 4 +-
+ arch/arm/configs/ecbat91_defconfig | 1315 ++++++++++++++++++++++++
+ arch/arm/configs/homematic_defconfig | 1263 +++++++++++++++++++++++
+ arch/arm/configs/kafa_defconfig | 4 +-
+ arch/arm/configs/kb9202_defconfig | 799 ++++++++++++---
+ arch/arm/configs/picotux200_defconfig | 4 +-
+ arch/arm/configs/sam9_l9260_defconfig | 1098 ++++++++++++++++++++
+ arch/arm/mach-at91/Kconfig | 86 ++-
+ arch/arm/mach-at91/Makefile | 12 +-
+ arch/arm/mach-at91/at91rm9200.c | 60 +-
+ arch/arm/mach-at91/at91rm9200_devices.c | 58 +-
+ arch/arm/mach-at91/at91sam9260.c | 58 +-
+ arch/arm/mach-at91/at91sam9260_devices.c | 74 ++
+ arch/arm/mach-at91/at91sam9261.c | 53 +-
+ arch/arm/mach-at91/at91sam9261_devices.c | 86 ++
+ arch/arm/mach-at91/at91sam9263.c | 55 +-
+ arch/arm/mach-at91/at91sam9263_devices.c | 124 +++
+ arch/arm/mach-at91/at91sam9rl.c | 25 +
+ arch/arm/mach-at91/at91sam9rl_devices.c | 74 ++
+ arch/arm/mach-at91/board-cam60.c | 148 +++
+ arch/arm/mach-at91/board-chub.c | 132 +++
+ arch/arm/mach-at91/board-csb337.c | 58 +
+ arch/arm/mach-at91/board-dk.c | 193 ++++-
+ arch/arm/mach-at91/board-ecbat91.c | 183 ++++
+ arch/arm/mach-at91/board-ek.c | 210 ++++-
+ arch/arm/mach-at91/board-homematic.c | 163 +++
+ arch/arm/mach-at91/board-kb9202.c | 46 +
+ arch/arm/mach-at91/board-sam9-l9260.c | 200 ++++
+ arch/arm/mach-at91/board-sam9261ek.c | 77 ++-
+ arch/arm/mach-at91/board-sam9263ek.c | 52 +
+ arch/arm/mach-at91/board-tms.c | 198 ++++
+ arch/arm/mach-at91/clock.c | 18 +
+ arch/arm/mach-at91/generic.h | 1 +
+ arch/arm/mach-at91/gpio.c | 62 ++
+ arch/arm/mach-at91/ics1523.c | 207 ++++
+ arch/arm/mach-at91/pm.c | 42 +-
+ arch/arm/mach-at91/pm_slowclock.S | 172 +++
+ arch/arm/mach-at91/tclib.c | 17 +
+ arch/arm/mach-at91/tclib.h | 11 +
+ arch/arm/mach-ks8695/Makefile | 6 +-
+ arch/arm/mach-ks8695/board-micrel.c | 2 +-
+ arch/arm/mach-ks8695/devices.c | 21 +
+ arch/arm/mach-ks8695/gpio.c | 83 ++
+ arch/arm/mach-ks8695/leds.c | 94 ++
+ arch/arm/mach-ks8695/pci.c | 324 ++++++
+ arch/arm/tools/mach-types | 200 ++++-
+ drivers/char/Kconfig | 16 +
+ drivers/char/Makefile | 2 +
+ drivers/char/at91_spi.c | 336 ++++++
+ drivers/char/at91_spidev.c | 233 +++++
+ drivers/char/watchdog/at91sam9_wdt.c | 258 +++++
+ drivers/i2c/busses/Kconfig | 16 +
+ drivers/i2c/busses/Makefile | 1 +
+ drivers/i2c/busses/i2c-at91.c | 18 +-
+ drivers/i2c/busses/i2c-pca.c | 213 ++++
+ drivers/mtd/devices/Kconfig | 14 +-
+ drivers/mtd/devices/Makefile | 1 +
+ drivers/mtd/devices/at91_dataflash.c | 673 ++++++++++++
+ drivers/mtd/devices/mtd_dataflash.c | 2 +-
+ drivers/net/arm/at91_ether.c | 21 +-
+ drivers/rtc/Kconfig | 6 +
+ drivers/rtc/Makefile | 1 +
+ drivers/rtc/rtc-at91sam9.c | 437 ++++++++
+ drivers/serial/atmel_serial.c | 294 ++++++-
+ drivers/spi/Kconfig | 9 +
+ drivers/spi/Makefile | 1 +
+ drivers/spi/spi_at91_bitbang.c | 207 ++++
+ drivers/usb/gadget/at91_udc.c | 2 +-
+ drivers/usb/host/ohci-at91.c | 2 +-
+ drivers/video/Kconfig | 13 +-
+ drivers/video/Makefile | 3 +-
+ drivers/video/backlight/Kconfig | 8 +
+ drivers/video/backlight/Makefile | 1 +
+ drivers/video/backlight/kb920x_bl.c | 164 +++
+ drivers/video/s1d15605fb.c | 658 ++++++++++++
+ drivers/watchdog/Kconfig | 8 +
+ drivers/watchdog/Makefile | 1 +
+ include/asm-arm/arch-at91/at91_lcdc.h | 148 ---
+ include/asm-arm/arch-at91/at91_pmc.h | 4 +-
+ include/asm-arm/arch-at91/at91_twi.h | 11 +
+ include/asm-arm/arch-at91/at91sam9260_matrix.h | 2 +-
+ include/asm-arm/arch-at91/board.h | 5 +
+ include/asm-arm/arch-at91/entry-macro.S | 2 +-
+ include/asm-arm/arch-at91/ics1523.h | 154 +++
+ include/asm-arm/arch-at91/spi.h | 54 +
+ include/asm-arm/arch-ks8695/devices.h | 5 +
+ include/asm-arm/arch-ks8695/regs-gpio.h | 2 +
+ include/linux/clk.h | 20 +
+ include/linux/i2c-id.h | 1 +
+ sound/soc/at91/eti_b1_wm8731.c | 30 +-
+ 100 files changed, 13000 insertions(+), 535 deletions(-)
+ create mode 100644 arch/arm/configs/cam60_defconfig
+ create mode 100644 arch/arm/configs/ecbat91_defconfig
+ create mode 100644 arch/arm/configs/homematic_defconfig
+ create mode 100644 arch/arm/configs/sam9_l9260_defconfig
+ create mode 100644 arch/arm/mach-at91/board-cam60.c
+ create mode 100644 arch/arm/mach-at91/board-chub.c
+ create mode 100644 arch/arm/mach-at91/board-ecbat91.c
+ create mode 100644 arch/arm/mach-at91/board-homematic.c
+ create mode 100644 arch/arm/mach-at91/board-sam9-l9260.c
+ create mode 100644 arch/arm/mach-at91/board-tms.c
+ create mode 100644 arch/arm/mach-at91/ics1523.c
+ create mode 100644 arch/arm/mach-at91/pm_slowclock.S
+ create mode 100644 arch/arm/mach-at91/tclib.c
+ create mode 100644 arch/arm/mach-at91/tclib.h
+ create mode 100644 arch/arm/mach-ks8695/leds.c
+ create mode 100644 arch/arm/mach-ks8695/pci.c
+ create mode 100644 drivers/char/at91_spi.c
+ create mode 100644 drivers/char/at91_spidev.c
+ create mode 100644 drivers/char/watchdog/at91sam9_wdt.c
+ create mode 100644 drivers/i2c/busses/i2c-pca.c
+ create mode 100644 drivers/mtd/devices/at91_dataflash.c
+ create mode 100644 drivers/rtc/rtc-at91sam9.c
+ create mode 100644 drivers/spi/spi_at91_bitbang.c
+ create mode 100644 drivers/video/backlight/kb920x_bl.c
+ create mode 100644 drivers/video/s1d15605fb.c
+ delete mode 100644 include/asm-arm/arch-at91/at91_lcdc.h
+ create mode 100644 include/asm-arm/arch-at91/ics1523.h
+ create mode 100644 include/asm-arm/arch-at91/spi.h
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index c4de2d4..c2051fb 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -657,6 +657,7 @@ config HZ
+ default 128 if ARCH_L7200
+ default 200 if ARCH_EBSA110 || ARCH_S3C2410
+ default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
++ default AT91_TIMER_HZ if ARCH_AT91
+ default 100
+
+ config AEABI
+diff --git a/arch/arm/boot/compressed/head-at91rm9200.S b/arch/arm/boot/compressed/head-at91rm9200.S
+index 11782cc..7748ce2 100644
+--- a/arch/arm/boot/compressed/head-at91rm9200.S
++++ b/arch/arm/boot/compressed/head-at91rm9200.S
+@@ -67,12 +67,36 @@
+ cmp r7, r3
+ beq 99f
+
++ @ emQbit ECB_AT91 : 1072
++ mov r3, #(MACH_TYPE_ECBAT91 & 0xff)
++ orr r3, r3, #(MACH_TYPE_ECBAT91 & 0xff00)
++ cmp r7, r3
++ beq 99f
++
+ @ Ajeco 1ARM : 1075
+ mov r3, #(MACH_TYPE_ONEARM & 0xff)
+ orr r3, r3, #(MACH_TYPE_ONEARM & 0xff00)
+ cmp r7, r3
+ beq 99f
+
++ @ Promwad Chub : 1181
++ mov r3, #(MACH_TYPE_CHUB & 0xff)
++ orr r3, r3, #(MACH_TYPE_CHUB & 0xff00)
++ cmp r7, r3
++ beq 99f
++
++ @ Sweda TMS-100: 1277
++ mov r3, #(MACH_TYPE_SWEDATMS & 0xff)
++ orr r3, r3, #(MACH_TYPE_SWEDATMS & 0xff00)
++ cmp r7, r3
++ beq 99f
++
++ @ eQ-3 HomeMatic: 1392
++ mov r3, #(MACH_TYPE_HOMEMATIC & 0xff)
++ orr r3, r3, #(MACH_TYPE_HOMEMATIC & 0xff00)
++ cmp r7, r3
++ beq 99f
++
+ @ Unknown board, use the AT91RM9200DK board
+ @ mov r7, #MACH_TYPE_AT91RM9200
+ mov r7, #(MACH_TYPE_AT91RM9200DK & 0xff)
+diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig
+index e10d003..2dbbbc3 100644
+--- a/arch/arm/configs/at91rm9200dk_defconfig
++++ b/arch/arm/configs/at91rm9200dk_defconfig
+@@ -620,14 +620,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+ # CONFIG_I2C_PCA_ISA is not set
+diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig
+index 834dddb..6e994f7 100644
+--- a/arch/arm/configs/at91rm9200ek_defconfig
++++ b/arch/arm/configs/at91rm9200ek_defconfig
+@@ -594,14 +594,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+ # CONFIG_I2C_PCA_ISA is not set
+diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig
+index 46b0c73..9a8890a 100644
+--- a/arch/arm/configs/at91sam9260ek_defconfig
++++ b/arch/arm/configs/at91sam9260ek_defconfig
+@@ -1,18 +1,24 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.19-rc6
+-# Fri Nov 17 18:42:21 2006
++# Linux kernel version: 2.6.21
++# Mon May 7 11:42:02 2007
+ #
+ CONFIG_ARM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++CONFIG_GENERIC_GPIO=y
+ # CONFIG_GENERIC_TIME is not set
+ CONFIG_MMU=y
++# CONFIG_NO_IOPORT is not set
+ CONFIG_GENERIC_HARDIRQS=y
+ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+ CONFIG_HARDIRQS_SW_RESEND=y
+ CONFIG_GENERIC_IRQ_PROBE=y
+ CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+ CONFIG_GENERIC_HWEIGHT=y
+ CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ZONE_DMA=y
+ CONFIG_VECTORS_BASE=0xffff0000
+ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+@@ -31,13 +37,16 @@ CONFIG_LOCALVERSION=""
+ # CONFIG_SWAP is not set
+ CONFIG_SYSVIPC=y
+ # CONFIG_IPC_NS is not set
++CONFIG_SYSVIPC_SYSCTL=y
+ # CONFIG_POSIX_MQUEUE is not set
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ # CONFIG_TASKSTATS is not set
+ # CONFIG_UTS_NS is not set
+ # CONFIG_AUDIT is not set
+ # CONFIG_IKCONFIG is not set
++CONFIG_SYSFS_DEPRECATED=y
+ # CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
+ CONFIG_INITRAMFS_SOURCE=""
+ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+ CONFIG_SYSCTL=y
+@@ -76,7 +85,9 @@ 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
+@@ -110,10 +121,12 @@ CONFIG_ARCH_AT91=y
+ # CONFIG_ARCH_IMX is not set
+ # CONFIG_ARCH_IOP32X is not set
+ # CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IOP13XX is not set
+ # CONFIG_ARCH_IXP4XX is not set
+ # CONFIG_ARCH_IXP2000 is not set
+ # CONFIG_ARCH_IXP23XX is not set
+ # CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_NS9XXX is not set
+ # CONFIG_ARCH_PNX4008 is not set
+ # CONFIG_ARCH_PXA is not set
+ # CONFIG_ARCH_RPC is not set
+@@ -129,21 +142,29 @@ CONFIG_ARCH_AT91=y
+ # CONFIG_ARCH_AT91RM9200 is not set
+ CONFIG_ARCH_AT91SAM9260=y
+ # CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++
++#
++# AT91SAM9260 Variants
++#
++# CONFIG_ARCH_AT91SAM9260_SAM9XE is not set
+
+ #
+-# AT91SAM9260 Board Type
++# AT91SAM9260 / AT91SAM9XE Board Type
+ #
+ CONFIG_MACH_AT91SAM9260EK=y
+
+ #
+ # AT91 Board Options
+ #
++# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
+ # CONFIG_MTD_NAND_AT91_BUSWIDTH_16 is not set
+
+ #
+ # AT91 Feature Selections
+ #
+ # CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++# CONFIG_ATMEL_TCLIB is not set
+
+ #
+ # Processor Type
+@@ -166,6 +187,7 @@ CONFIG_CPU_CP15_MMU=y
+ # CONFIG_CPU_DCACHE_DISABLE is not set
+ # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+ # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
++# CONFIG_OUTER_CACHE is not set
+
+ #
+ # Bus support
+@@ -193,6 +215,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
+ # CONFIG_SPARSEMEM_STATIC is not set
+ CONFIG_SPLIT_PTLOCK_CPUS=4096
+ # CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
+ # CONFIG_LEDS is not set
+ CONFIG_ALIGNMENT_TRAP=y
+
+@@ -203,6 +226,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
+ CONFIG_ZBOOT_ROM_BSS=0x0
+ CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
+ # CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
+
+ #
+ # Floating point emulation
+@@ -228,7 +252,6 @@ CONFIG_BINFMT_ELF=y
+ # Power management options
+ #
+ # CONFIG_PM is not set
+-# CONFIG_APM is not set
+
+ #
+ # Networking
+@@ -242,9 +265,6 @@ CONFIG_NET=y
+ CONFIG_PACKET=y
+ # CONFIG_PACKET_MMAP is not set
+ CONFIG_UNIX=y
+-CONFIG_XFRM=y
+-# CONFIG_XFRM_USER is not set
+-# CONFIG_XFRM_SUB_POLICY is not set
+ # CONFIG_NET_KEY is not set
+ CONFIG_INET=y
+ # CONFIG_IP_MULTICAST is not set
+@@ -263,14 +283,15 @@ CONFIG_IP_PNP_BOOTP=y
+ # CONFIG_INET_IPCOMP is not set
+ # CONFIG_INET_XFRM_TUNNEL is not set
+ # CONFIG_INET_TUNNEL is not set
+-CONFIG_INET_XFRM_MODE_TRANSPORT=y
+-CONFIG_INET_XFRM_MODE_TUNNEL=y
+-CONFIG_INET_XFRM_MODE_BEET=y
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
+ CONFIG_INET_DIAG=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
+@@ -328,6 +349,7 @@ CONFIG_STANDALONE=y
+ CONFIG_PREVENT_FIRMWARE_BUILD=y
+ # CONFIG_FW_LOADER is not set
+ # CONFIG_DEBUG_DRIVER is not set
++# CONFIG_DEBUG_DEVRES is not set
+ # CONFIG_SYS_HYPERVISOR is not set
+
+ #
+@@ -348,6 +370,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
+ #
+ # Plug and Play support
+ #
++# CONFIG_PNPACPI is not set
+
+ #
+ # Block devices
+@@ -360,7 +383,6 @@ CONFIG_BLK_DEV_RAM=y
+ CONFIG_BLK_DEV_RAM_COUNT=16
+ CONFIG_BLK_DEV_RAM_SIZE=8192
+ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+-CONFIG_BLK_DEV_INITRD=y
+ # CONFIG_CDROM_PKTCDVD is not set
+ # CONFIG_ATA_OVER_ETH is not set
+
+@@ -369,6 +391,7 @@ CONFIG_BLK_DEV_INITRD=y
+ #
+ # 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
+
+@@ -388,6 +411,7 @@ CONFIG_BLK_DEV_SD=y
+ CONFIG_SCSI_MULTI_LUN=y
+ # CONFIG_SCSI_CONSTANTS is not set
+ # CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
+
+ #
+ # SCSI Transports
+@@ -405,6 +429,11 @@ CONFIG_SCSI_MULTI_LUN=y
+ # CONFIG_SCSI_DEBUG is not set
+
+ #
++# Serial ATA (prod) and Parallel ATA (experimental) drivers
++#
++# CONFIG_ATA is not set
++
++#
+ # Multi-device support (RAID and LVM)
+ #
+ # CONFIG_MD is not set
+@@ -425,7 +454,51 @@ CONFIG_SCSI_MULTI_LUN=y
+ #
+ # Network device support
+ #
+-# CONFIG_NETDEVICES is not set
++CONFIG_NETDEVICES=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_MACB=y
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++
++#
++# Token Ring devices
++#
++
++#
++# Wireless LAN (non-hamradio)
++#
++# CONFIG_NET_RADIO is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
++# CONFIG_PPP 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
+
+@@ -517,10 +590,6 @@ CONFIG_HW_RANDOM=y
+ # CONFIG_NVRAM is not set
+ # CONFIG_DTLK is not set
+ # CONFIG_R3964 is not set
+-
+-#
+-# Ftape, the floppy tape device driver
+-#
+ # CONFIG_RAW_DRIVER is not set
+
+ #
+@@ -553,7 +622,11 @@ CONFIG_HW_RANDOM=y
+ #
+ # Misc devices
+ #
+-# CONFIG_TIFM_CORE is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
+
+ #
+ # LED devices
+@@ -582,7 +655,7 @@ CONFIG_HW_RANDOM=y
+ #
+ # Graphics support
+ #
+-# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+ # CONFIG_FB is not set
+
+ #
+@@ -590,7 +663,6 @@ CONFIG_HW_RANDOM=y
+ #
+ # CONFIG_VGA_CONSOLE is not set
+ CONFIG_DUMMY_CONSOLE=y
+-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+ #
+ # Sound
+@@ -598,6 +670,12 @@ CONFIG_DUMMY_CONSOLE=y
+ # CONFIG_SOUND is not set
+
+ #
++# HID Devices
++#
++CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
++
++#
+ # USB support
+ #
+ CONFIG_USB_ARCH_HAS_HCD=y
+@@ -610,7 +688,6 @@ CONFIG_USB=y
+ # Miscellaneous USB options
+ #
+ CONFIG_USB_DEVICEFS=y
+-# CONFIG_USB_BANDWIDTH is not set
+ # CONFIG_USB_DYNAMIC_MINORS is not set
+ # CONFIG_USB_OTG is not set
+
+@@ -619,7 +696,8 @@ CONFIG_USB_DEVICEFS=y
+ #
+ # CONFIG_USB_ISP116X_HCD is not set
+ CONFIG_USB_OHCI_HCD=y
+-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+ # CONFIG_USB_SL811_HCD is not set
+
+@@ -671,6 +749,7 @@ CONFIG_USB_STORAGE_DEBUG=y
+ # CONFIG_USB_ATI_REMOTE2 is not set
+ # CONFIG_USB_KEYSPAN_REMOTE is not set
+ # CONFIG_USB_APPLETOUCH is not set
++# CONFIG_USB_GTCO is not set
+
+ #
+ # USB Imaging devices
+@@ -708,6 +787,7 @@ CONFIG_USB_MON=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
+@@ -717,6 +797,7 @@ CONFIG_USB_MON=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
+
+ #
+@@ -889,6 +970,11 @@ CONFIG_NLS_ISO8859_1=y
+ # CONFIG_NLS_UTF8 is not set
+
+ #
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
+ # Profiling support
+ #
+ # CONFIG_PROFILING is not set
+@@ -900,28 +986,30 @@ CONFIG_NLS_ISO8859_1=y
+ CONFIG_ENABLE_MUST_CHECK=y
+ # CONFIG_MAGIC_SYSRQ is not set
+ # CONFIG_UNUSED_SYMBOLS is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_HEADERS_CHECK is not set
+ CONFIG_DEBUG_KERNEL=y
++# CONFIG_DEBUG_SHIRQ is not set
+ CONFIG_LOG_BUF_SHIFT=14
+ CONFIG_DETECT_SOFTLOCKUP=y
+ # CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
+ # CONFIG_DEBUG_SLAB is not set
+ # CONFIG_DEBUG_RT_MUTEXES is not set
+ # CONFIG_RT_MUTEX_TESTER is not set
+ # CONFIG_DEBUG_SPINLOCK is not set
+ # CONFIG_DEBUG_MUTEXES is not set
+-# CONFIG_DEBUG_RWSEMS is not set
+ # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+ # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+ # CONFIG_DEBUG_KOBJECT is not set
+ CONFIG_DEBUG_BUGVERBOSE=y
+ # CONFIG_DEBUG_INFO is not set
+-# CONFIG_DEBUG_FS is not set
+ # CONFIG_DEBUG_VM is not set
+ # CONFIG_DEBUG_LIST is not set
+ CONFIG_FRAME_POINTER=y
+ CONFIG_FORCED_INLINING=y
+-# CONFIG_HEADERS_CHECK is not set
+ # CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_FAULT_INJECTION is not set
+ CONFIG_DEBUG_USER=y
+ # CONFIG_DEBUG_ERRORS is not set
+ CONFIG_DEBUG_LL=y
+@@ -941,9 +1029,12 @@ CONFIG_DEBUG_LL=y
+ #
+ # Library routines
+ #
++CONFIG_BITREVERSE=y
+ # CONFIG_CRC_CCITT is not set
+ # CONFIG_CRC16 is not set
+ CONFIG_CRC32=y
+ # CONFIG_LIBCRC32C is not set
+ CONFIG_ZLIB_INFLATE=y
+ CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
+diff --git a/arch/arm/configs/at91sam9261ek_defconfig b/arch/arm/configs/at91sam9261ek_defconfig
+index fcd8fa0..c76d70e 100644
+--- a/arch/arm/configs/at91sam9261ek_defconfig
++++ b/arch/arm/configs/at91sam9261ek_defconfig
+@@ -1,18 +1,24 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.19-rc6
+-# Fri Nov 17 18:00:38 2006
++# Linux kernel version: 2.6.21
++# Mon May 7 11:42:30 2007
+ #
+ CONFIG_ARM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++CONFIG_GENERIC_GPIO=y
+ # CONFIG_GENERIC_TIME is not set
+ CONFIG_MMU=y
++# CONFIG_NO_IOPORT is not set
+ CONFIG_GENERIC_HARDIRQS=y
+ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+ CONFIG_HARDIRQS_SW_RESEND=y
+ CONFIG_GENERIC_IRQ_PROBE=y
+ CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+ CONFIG_GENERIC_HWEIGHT=y
+ CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ZONE_DMA=y
+ CONFIG_VECTORS_BASE=0xffff0000
+ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+@@ -31,13 +37,16 @@ CONFIG_LOCALVERSION=""
+ # CONFIG_SWAP is not set
+ CONFIG_SYSVIPC=y
+ # CONFIG_IPC_NS is not set
++CONFIG_SYSVIPC_SYSCTL=y
+ # CONFIG_POSIX_MQUEUE is not set
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ # CONFIG_TASKSTATS is not set
+ # CONFIG_UTS_NS is not set
+ # CONFIG_AUDIT is not set
+ # CONFIG_IKCONFIG is not set
++CONFIG_SYSFS_DEPRECATED=y
+ # CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
+ CONFIG_INITRAMFS_SOURCE=""
+ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+ CONFIG_SYSCTL=y
+@@ -76,7 +85,9 @@ 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
+@@ -110,10 +121,12 @@ CONFIG_ARCH_AT91=y
+ # CONFIG_ARCH_IMX is not set
+ # CONFIG_ARCH_IOP32X is not set
+ # CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IOP13XX is not set
+ # CONFIG_ARCH_IXP4XX is not set
+ # CONFIG_ARCH_IXP2000 is not set
+ # CONFIG_ARCH_IXP23XX is not set
+ # CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_NS9XXX is not set
+ # CONFIG_ARCH_PNX4008 is not set
+ # CONFIG_ARCH_PXA is not set
+ # CONFIG_ARCH_RPC is not set
+@@ -129,6 +142,7 @@ CONFIG_ARCH_AT91=y
+ # CONFIG_ARCH_AT91RM9200 is not set
+ # CONFIG_ARCH_AT91SAM9260 is not set
+ CONFIG_ARCH_AT91SAM9261=y
++# CONFIG_ARCH_AT91SAM9263 is not set
+
+ #
+ # AT91SAM9261 Board Type
+@@ -138,12 +152,14 @@ CONFIG_MACH_AT91SAM9261EK=y
+ #
+ # AT91 Board Options
+ #
++# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
+ # CONFIG_MTD_NAND_AT91_BUSWIDTH_16 is not set
+
+ #
+ # AT91 Feature Selections
+ #
+ # CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++# CONFIG_ATMEL_TCLIB is not set
+
+ #
+ # Processor Type
+@@ -166,6 +182,7 @@ CONFIG_CPU_CP15_MMU=y
+ # CONFIG_CPU_DCACHE_DISABLE is not set
+ # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+ # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
++# CONFIG_OUTER_CACHE is not set
+
+ #
+ # Bus support
+@@ -193,6 +210,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
+ # CONFIG_SPARSEMEM_STATIC is not set
+ CONFIG_SPLIT_PTLOCK_CPUS=4096
+ # CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
+ # CONFIG_LEDS is not set
+ CONFIG_ALIGNMENT_TRAP=y
+
+@@ -203,6 +221,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
+ CONFIG_ZBOOT_ROM_BSS=0x0
+ CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
+ # CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
+
+ #
+ # Floating point emulation
+@@ -228,7 +247,6 @@ CONFIG_BINFMT_ELF=y
+ # Power management options
+ #
+ # CONFIG_PM is not set
+-# CONFIG_APM is not set
+
+ #
+ # Networking
+@@ -245,6 +263,7 @@ 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
+@@ -271,6 +290,7 @@ 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
+@@ -328,6 +348,7 @@ CONFIG_STANDALONE=y
+ CONFIG_PREVENT_FIRMWARE_BUILD=y
+ # CONFIG_FW_LOADER is not set
+ # CONFIG_DEBUG_DRIVER is not set
++# CONFIG_DEBUG_DEVRES is not set
+ # CONFIG_SYS_HYPERVISOR is not set
+
+ #
+@@ -350,6 +371,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
+ # User Modules And Translation Layers
+ #
+ # CONFIG_MTD_CHAR is not set
++CONFIG_MTD_BLKDEVS=y
+ CONFIG_MTD_BLOCK=y
+ # CONFIG_FTL is not set
+ # CONFIG_NFTL is not set
+@@ -386,6 +408,8 @@ CONFIG_MTD_CFI_I2=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
+@@ -422,6 +446,7 @@ CONFIG_MTD_NAND_AT91=y
+ #
+ # Plug and Play support
+ #
++# CONFIG_PNPACPI is not set
+
+ #
+ # Block devices
+@@ -434,7 +459,6 @@ CONFIG_BLK_DEV_RAM=y
+ CONFIG_BLK_DEV_RAM_COUNT=16
+ CONFIG_BLK_DEV_RAM_SIZE=8192
+ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+-CONFIG_BLK_DEV_INITRD=y
+ # CONFIG_CDROM_PKTCDVD is not set
+ # CONFIG_ATA_OVER_ETH is not set
+
+@@ -443,6 +467,7 @@ CONFIG_BLK_DEV_INITRD=y
+ #
+ # 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
+
+@@ -462,6 +487,7 @@ CONFIG_BLK_DEV_SD=y
+ CONFIG_SCSI_MULTI_LUN=y
+ # CONFIG_SCSI_CONSTANTS is not set
+ # CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
+
+ #
+ # SCSI Transports
+@@ -479,6 +505,11 @@ CONFIG_SCSI_MULTI_LUN=y
+ # CONFIG_SCSI_DEBUG is not set
+
+ #
++# Serial ATA (prod) and Parallel ATA (experimental) drivers
++#
++# CONFIG_ATA is not set
++
++#
+ # Multi-device support (RAID and LVM)
+ #
+ # CONFIG_MD is not set
+@@ -575,7 +606,16 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+ # CONFIG_INPUT_KEYBOARD is not set
+ # CONFIG_INPUT_MOUSE is not set
+ # CONFIG_INPUT_JOYSTICK is not set
+-# CONFIG_INPUT_TOUCHSCREEN is not set
++CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_ADS7846=y
++# CONFIG_TOUCHSCREEN_GUNZE is not set
++# CONFIG_TOUCHSCREEN_ELO is not set
++# CONFIG_TOUCHSCREEN_MTOUCH is not set
++# CONFIG_TOUCHSCREEN_MK712 is not set
++# CONFIG_TOUCHSCREEN_PENMOUNT is not set
++# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
++# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
++# CONFIG_TOUCHSCREEN_UCB1400 is not set
+ # CONFIG_INPUT_MISC is not set
+
+ #
+@@ -634,10 +674,6 @@ CONFIG_HW_RANDOM=y
+ # CONFIG_NVRAM is not set
+ # CONFIG_DTLK is not set
+ # CONFIG_R3964 is not set
+-
+-#
+-# Ftape, the floppy tape device driver
+-#
+ # CONFIG_RAW_DRIVER is not set
+
+ #
+@@ -654,14 +690,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_OCORES is not set
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+@@ -686,8 +722,20 @@ CONFIG_I2C_AT91=y
+ #
+ # SPI support
+ #
+-# CONFIG_SPI is not set
+-# CONFIG_SPI_MASTER is not set
++CONFIG_SPI=y
++# CONFIG_SPI_DEBUG is not set
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_ATMEL=y
++# CONFIG_SPI_BITBANG is not set
++
++#
++# SPI Protocol Masters
++#
++# CONFIG_SPI_AT25 is not set
+
+ #
+ # Dallas's 1-wire bus
+@@ -703,7 +751,11 @@ CONFIG_I2C_AT91=y
+ #
+ # Misc devices
+ #
+-# CONFIG_TIFM_CORE is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
+
+ #
+ # LED devices
+@@ -732,7 +784,7 @@ CONFIG_I2C_AT91=y
+ #
+ # Graphics support
+ #
+-# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+ # CONFIG_FB is not set
+
+ #
+@@ -740,7 +792,6 @@ CONFIG_I2C_AT91=y
+ #
+ # CONFIG_VGA_CONSOLE is not set
+ CONFIG_DUMMY_CONSOLE=y
+-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+ #
+ # Sound
+@@ -748,6 +799,12 @@ CONFIG_DUMMY_CONSOLE=y
+ # CONFIG_SOUND is not set
+
+ #
++# HID Devices
++#
++CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
++
++#
+ # USB support
+ #
+ CONFIG_USB_ARCH_HAS_HCD=y
+@@ -760,7 +817,6 @@ CONFIG_USB=y
+ # Miscellaneous USB options
+ #
+ CONFIG_USB_DEVICEFS=y
+-# CONFIG_USB_BANDWIDTH is not set
+ # CONFIG_USB_DYNAMIC_MINORS is not set
+ # CONFIG_USB_OTG is not set
+
+@@ -769,7 +825,8 @@ CONFIG_USB_DEVICEFS=y
+ #
+ # CONFIG_USB_ISP116X_HCD is not set
+ CONFIG_USB_OHCI_HCD=y
+-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+ # CONFIG_USB_SL811_HCD is not set
+
+@@ -821,6 +878,7 @@ CONFIG_USB_STORAGE_DEBUG=y
+ # CONFIG_USB_ATI_REMOTE2 is not set
+ # CONFIG_USB_KEYSPAN_REMOTE is not set
+ # CONFIG_USB_APPLETOUCH is not set
++# CONFIG_USB_GTCO is not set
+
+ #
+ # USB Imaging devices
+@@ -858,6 +916,7 @@ CONFIG_USB_MON=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
+@@ -867,6 +926,7 @@ CONFIG_USB_MON=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
+
+ #
+@@ -903,7 +963,6 @@ CONFIG_MMC=y
+ # CONFIG_MMC_DEBUG is not set
+ CONFIG_MMC_BLOCK=y
+ CONFIG_MMC_AT91=m
+-# CONFIG_MMC_TIFM_SD is not set
+
+ #
+ # Real Time Clock
+@@ -973,7 +1032,6 @@ CONFIG_RAMFS=y
+ # CONFIG_BEFS_FS is not set
+ # CONFIG_BFS_FS is not set
+ # CONFIG_EFS_FS is not set
+-# CONFIG_JFFS_FS is not set
+ # CONFIG_JFFS2_FS is not set
+ CONFIG_CRAMFS=y
+ # CONFIG_VXFS_FS is not set
+@@ -1045,6 +1103,11 @@ CONFIG_NLS_ISO8859_1=y
+ # CONFIG_NLS_UTF8 is not set
+
+ #
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
+ # Profiling support
+ #
+ # CONFIG_PROFILING is not set
+@@ -1056,28 +1119,30 @@ CONFIG_NLS_ISO8859_1=y
+ CONFIG_ENABLE_MUST_CHECK=y
+ # CONFIG_MAGIC_SYSRQ is not set
+ # CONFIG_UNUSED_SYMBOLS is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_HEADERS_CHECK is not set
+ CONFIG_DEBUG_KERNEL=y
++# CONFIG_DEBUG_SHIRQ is not set
+ CONFIG_LOG_BUF_SHIFT=14
+ CONFIG_DETECT_SOFTLOCKUP=y
+ # CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
+ # CONFIG_DEBUG_SLAB is not set
+ # CONFIG_DEBUG_RT_MUTEXES is not set
+ # CONFIG_RT_MUTEX_TESTER is not set
+ # CONFIG_DEBUG_SPINLOCK is not set
+ # CONFIG_DEBUG_MUTEXES is not set
+-# CONFIG_DEBUG_RWSEMS is not set
+ # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+ # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+ # CONFIG_DEBUG_KOBJECT is not set
+ CONFIG_DEBUG_BUGVERBOSE=y
+ # CONFIG_DEBUG_INFO is not set
+-# CONFIG_DEBUG_FS is not set
+ # CONFIG_DEBUG_VM is not set
+ # CONFIG_DEBUG_LIST is not set
+ CONFIG_FRAME_POINTER=y
+ CONFIG_FORCED_INLINING=y
+-# CONFIG_HEADERS_CHECK is not set
+ # CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_FAULT_INJECTION is not set
+ CONFIG_DEBUG_USER=y
+ # CONFIG_DEBUG_ERRORS is not set
+ CONFIG_DEBUG_LL=y
+@@ -1097,9 +1162,12 @@ CONFIG_DEBUG_LL=y
+ #
+ # Library routines
+ #
++CONFIG_BITREVERSE=y
+ # CONFIG_CRC_CCITT is not set
+ # CONFIG_CRC16 is not set
+ CONFIG_CRC32=y
+ # CONFIG_LIBCRC32C is not set
+ CONFIG_ZLIB_INFLATE=y
+ CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
+diff --git a/arch/arm/configs/at91sam9263ek_defconfig b/arch/arm/configs/at91sam9263ek_defconfig
+index c72ab82..0f5566d 100644
+--- a/arch/arm/configs/at91sam9263ek_defconfig
++++ b/arch/arm/configs/at91sam9263ek_defconfig
+@@ -1,11 +1,14 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.20-rc1
+-# Mon Jan 8 16:06:54 2007
++# Linux kernel version: 2.6.21
++# Mon May 7 11:42:49 2007
+ #
+ CONFIG_ARM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++CONFIG_GENERIC_GPIO=y
+ # CONFIG_GENERIC_TIME is not set
+ CONFIG_MMU=y
++# CONFIG_NO_IOPORT is not set
+ CONFIG_GENERIC_HARDIRQS=y
+ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+ CONFIG_HARDIRQS_SW_RESEND=y
+@@ -15,6 +18,7 @@ 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_VECTORS_BASE=0xffff0000
+ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+@@ -33,6 +37,7 @@ CONFIG_LOCALVERSION=""
+ # CONFIG_SWAP is not set
+ CONFIG_SYSVIPC=y
+ # CONFIG_IPC_NS is not set
++CONFIG_SYSVIPC_SYSCTL=y
+ # CONFIG_POSIX_MQUEUE is not set
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ # CONFIG_TASKSTATS is not set
+@@ -41,6 +46,7 @@ CONFIG_SYSVIPC=y
+ # CONFIG_IKCONFIG is not set
+ CONFIG_SYSFS_DEPRECATED=y
+ # CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
+ CONFIG_INITRAMFS_SOURCE=""
+ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+ CONFIG_SYSCTL=y
+@@ -120,6 +126,7 @@ CONFIG_ARCH_AT91=y
+ # CONFIG_ARCH_IXP2000 is not set
+ # CONFIG_ARCH_IXP23XX is not set
+ # CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_NS9XXX is not set
+ # CONFIG_ARCH_PNX4008 is not set
+ # CONFIG_ARCH_PXA is not set
+ # CONFIG_ARCH_RPC is not set
+@@ -152,6 +159,7 @@ CONFIG_MTD_AT91_DATAFLASH_CARD=y
+ # AT91 Feature Selections
+ #
+ # CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++# CONFIG_ATMEL_TCLIB is not set
+
+ #
+ # Processor Type
+@@ -174,6 +182,7 @@ CONFIG_CPU_CP15_MMU=y
+ # CONFIG_CPU_DCACHE_DISABLE is not set
+ # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+ # CONFIG_CPU_CACHE_ROUND_ROBIN is not set
++# CONFIG_OUTER_CACHE is not set
+
+ #
+ # Bus support
+@@ -201,6 +210,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
+ # CONFIG_SPARSEMEM_STATIC is not set
+ CONFIG_SPLIT_PTLOCK_CPUS=4096
+ # CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
+ # CONFIG_LEDS is not set
+ CONFIG_ALIGNMENT_TRAP=y
+
+@@ -211,6 +221,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
+ CONFIG_ZBOOT_ROM_BSS=0x0
+ CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
+ # CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
+
+ #
+ # Floating point emulation
+@@ -236,7 +247,6 @@ CONFIG_BINFMT_ELF=y
+ # Power management options
+ #
+ # CONFIG_PM is not set
+-# CONFIG_APM is not set
+
+ #
+ # Networking
+@@ -333,6 +343,7 @@ CONFIG_STANDALONE=y
+ CONFIG_PREVENT_FIRMWARE_BUILD=y
+ # CONFIG_FW_LOADER is not set
+ # CONFIG_DEBUG_DRIVER is not set
++# CONFIG_DEBUG_DEVRES is not set
+ # CONFIG_SYS_HYPERVISOR is not set
+
+ #
+@@ -430,6 +441,7 @@ CONFIG_MTD_NAND_AT91=y
+ #
+ # Plug and Play support
+ #
++# CONFIG_PNPACPI is not set
+
+ #
+ # Block devices
+@@ -443,7 +455,6 @@ CONFIG_BLK_DEV_RAM=y
+ CONFIG_BLK_DEV_RAM_COUNT=16
+ CONFIG_BLK_DEV_RAM_SIZE=8192
+ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+-CONFIG_BLK_DEV_INITRD=y
+ # CONFIG_CDROM_PKTCDVD is not set
+ # CONFIG_ATA_OVER_ETH is not set
+
+@@ -531,6 +542,7 @@ CONFIG_NETDEVICES=y
+ #
+ CONFIG_NET_ETHERNET=y
+ CONFIG_MII=y
++CONFIG_MACB=y
+ # CONFIG_SMC91X is not set
+ # CONFIG_DM9000 is not set
+
+@@ -677,14 +689,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_OCORES is not set
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+@@ -722,6 +734,7 @@ CONFIG_SPI_ATMEL=y
+ #
+ # SPI Protocol Masters
+ #
++# CONFIG_SPI_AT25 is not set
+
+ #
+ # Dallas's 1-wire bus
+@@ -737,7 +750,11 @@ CONFIG_SPI_ATMEL=y
+ #
+ # Misc devices
+ #
+-# CONFIG_TIFM_CORE is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
+
+ #
+ # LED devices
+@@ -766,15 +783,23 @@ CONFIG_SPI_ATMEL=y
+ #
+ # Graphics support
+ #
+-# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+ CONFIG_FB=y
++# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_FB_DDC is not set
+ # CONFIG_FB_CFB_FILLRECT is not set
+ # CONFIG_FB_CFB_COPYAREA is not set
+ # CONFIG_FB_CFB_IMAGEBLIT is not set
++# CONFIG_FB_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_S1D15605 is not set
+ # CONFIG_FB_S1D13XXX is not set
+ # CONFIG_FB_VIRTUAL is not set
+
+@@ -789,7 +814,6 @@ CONFIG_DUMMY_CONSOLE=y
+ # Logo configuration
+ #
+ # CONFIG_LOGO is not set
+-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+ #
+ # Sound
+@@ -800,6 +824,7 @@ CONFIG_DUMMY_CONSOLE=y
+ # HID Devices
+ #
+ CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
+
+ #
+ # USB support
+@@ -814,9 +839,7 @@ CONFIG_USB=y
+ # Miscellaneous USB options
+ #
+ CONFIG_USB_DEVICEFS=y
+-# CONFIG_USB_BANDWIDTH is not set
+ # CONFIG_USB_DYNAMIC_MINORS is not set
+-# CONFIG_USB_MULTITHREAD_PROBE is not set
+ # CONFIG_USB_OTG is not set
+
+ #
+@@ -824,7 +847,8 @@ CONFIG_USB_DEVICEFS=y
+ #
+ # CONFIG_USB_ISP116X_HCD is not set
+ CONFIG_USB_OHCI_HCD=y
+-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+ # CONFIG_USB_SL811_HCD is not set
+
+@@ -877,6 +901,7 @@ CONFIG_USB_STORAGE=y
+ # CONFIG_USB_ATI_REMOTE2 is not set
+ # CONFIG_USB_KEYSPAN_REMOTE is not set
+ # CONFIG_USB_APPLETOUCH is not set
++# CONFIG_USB_GTCO is not set
+
+ #
+ # USB Imaging devices
+@@ -914,6 +939,7 @@ CONFIG_USB_MON=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
+@@ -923,6 +949,7 @@ CONFIG_USB_MON=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
+
+ #
+@@ -959,7 +986,6 @@ CONFIG_MMC=y
+ # CONFIG_MMC_DEBUG is not set
+ CONFIG_MMC_BLOCK=y
+ CONFIG_MMC_AT91=m
+-# CONFIG_MMC_TIFM_SD is not set
+
+ #
+ # Real Time Clock
+@@ -1136,15 +1162,16 @@ CONFIG_ENABLE_MUST_CHECK=y
+ # CONFIG_DEBUG_FS is not set
+ # CONFIG_HEADERS_CHECK is not set
+ CONFIG_DEBUG_KERNEL=y
++# CONFIG_DEBUG_SHIRQ is not set
+ CONFIG_LOG_BUF_SHIFT=14
+ CONFIG_DETECT_SOFTLOCKUP=y
+ # CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
+ # CONFIG_DEBUG_SLAB is not set
+ # CONFIG_DEBUG_RT_MUTEXES is not set
+ # CONFIG_RT_MUTEX_TESTER is not set
+ # CONFIG_DEBUG_SPINLOCK is not set
+ # CONFIG_DEBUG_MUTEXES is not set
+-# CONFIG_DEBUG_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
+@@ -1155,6 +1182,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
+ CONFIG_FRAME_POINTER=y
+ CONFIG_FORCED_INLINING=y
+ # CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_FAULT_INJECTION is not set
+ CONFIG_DEBUG_USER=y
+ # CONFIG_DEBUG_ERRORS is not set
+ CONFIG_DEBUG_LL=y
+@@ -1180,5 +1208,7 @@ CONFIG_BITREVERSE=y
+ CONFIG_CRC32=y
+ # CONFIG_LIBCRC32C is not set
+ CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
+ CONFIG_PLIST=y
+-CONFIG_IOMAP_COPY=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
+diff --git a/arch/arm/configs/ateb9200_defconfig b/arch/arm/configs/ateb9200_defconfig
+index baa9769..d846a49 100644
+--- a/arch/arm/configs/ateb9200_defconfig
++++ b/arch/arm/configs/ateb9200_defconfig
+@@ -714,7 +714,7 @@ CONFIG_I2C_ALGOPCA=m
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=m
++CONFIG_I2C_GPIO=m
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+ # CONFIG_I2C_PCA_ISA is not set
+diff --git a/arch/arm/configs/cam60_defconfig b/arch/arm/configs/cam60_defconfig
+new file mode 100644
+index 0000000..5d71160
+--- /dev/null
++++ b/arch/arm/configs/cam60_defconfig
+@@ -0,0 +1,954 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.20
++# Tue May 1 21:06:33 2007
++#
++CONFIG_ARM=y
++# CONFIG_GENERIC_TIME is not set
++CONFIG_MMU=y
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_VECTORS_BASE=0xffff0000
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION=""
++# CONFIG_LOCALVERSION_AUTO is not set
++# CONFIG_SWAP is not set
++CONFIG_SYSVIPC=y
++# CONFIG_IPC_NS is not set
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++# CONFIG_TASKSTATS is not set
++# CONFIG_UTS_NS is not set
++# CONFIG_AUDIT is not set
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_SYSFS_DEPRECATED=y
++# CONFIG_RELAY is not set
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_SYSCTL=y
++# CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++CONFIG_BASE_FULL=y
++CONFIG_FUTEX=y
++CONFIG_EPOLL=y
++CONFIG_SHMEM=y
++CONFIG_SLAB=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_RT_MUTEXES=y
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=0
++# CONFIG_SLOB is not set
++
++#
++# Loadable module support
++#
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++CONFIG_MODULE_FORCE_UNLOAD=y
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++# CONFIG_KMOD is not set
++
++#
++# Block layer
++#
++CONFIG_BLOCK=y
++# CONFIG_LBD is not set
++# CONFIG_BLK_DEV_IO_TRACE is not set
++# CONFIG_LSF is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++CONFIG_IOSCHED_AS=y
++# CONFIG_IOSCHED_DEADLINE is not set
++# CONFIG_IOSCHED_CFQ is not set
++CONFIG_DEFAULT_AS=y
++# CONFIG_DEFAULT_DEADLINE is not set
++# CONFIG_DEFAULT_CFQ is not set
++# CONFIG_DEFAULT_NOOP is not set
++CONFIG_DEFAULT_IOSCHED="anticipatory"
++
++#
++# System Type
++#
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_VERSATILE is not set
++CONFIG_ARCH_AT91=y
++# CONFIG_ARCH_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IOP13XX is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_RPC is not set
++# CONFIG_ARCH_SA1100 is not set
++# CONFIG_ARCH_S3C2410 is not set
++# CONFIG_ARCH_SHARK is not set
++# CONFIG_ARCH_LH7A40X is not set
++# CONFIG_ARCH_OMAP is not set
++
++#
++# Atmel AT91 System-on-Chip
++#
++# CONFIG_ARCH_AT91RM9200 is not set
++CONFIG_ARCH_AT91SAM9260=y
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++
++#
++# AT91SAM9260 Board Type
++#
++# CONFIG_MACH_AT91SAM9260EK is not set
++CONFIG_MACH_CAM60=y
++
++#
++# AT91 Board Options
++#
++
++#
++# AT91 Feature Selections
++#
++# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM926T=y
++CONFIG_CPU_32v5=y
++CONFIG_CPU_ABRT_EV5TJ=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
++
++#
++# Processor Features
++#
++# CONFIG_ARM_THUMB is not set
++# CONFIG_CPU_ICACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
++
++#
++# Bus support
++#
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++# CONFIG_PREEMPT is not set
++# CONFIG_NO_IDLE_HZ is not set
++CONFIG_HZ=100
++# CONFIG_AEABI is not set
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++CONFIG_SELECT_MEMORY_MODEL=y
++CONFIG_FLATMEM_MANUAL=y
++# CONFIG_DISCONTIGMEM_MANUAL is not set
++# CONFIG_SPARSEMEM_MANUAL is not set
++CONFIG_FLATMEM=y
++CONFIG_FLAT_NODE_MEM_MAP=y
++# CONFIG_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_RESOURCES_64BIT is not set
++# CONFIG_LEDS is not set
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x22000000
++CONFIG_ZBOOT_ROM_BSS=0x20004000
++# CONFIG_ZBOOT_ROM is not set
++CONFIG_CMDLINE="console=ttyS0,115200 noinitrd root=/dev/mtdblock3 rootfstype=jffs2 mem=64M"
++# 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_XFRM=y
++# CONFIG_XFRM_USER is not set
++# CONFIG_XFRM_SUB_POLICY is not set
++# CONFIG_NET_KEY is not set
++CONFIG_INET=y
++# CONFIG_IP_MULTICAST is not set
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++CONFIG_IP_PNP=y
++# CONFIG_IP_PNP_DHCP is not set
++CONFIG_IP_PNP_BOOTP=y
++# CONFIG_IP_PNP_RARP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_ARPD is not set
++# CONFIG_SYN_COOKIES is not set
++# CONFIG_INET_AH is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_XFRM_TUNNEL is not set
++# CONFIG_INET_TUNNEL is not set
++CONFIG_INET_XFRM_MODE_TRANSPORT=y
++CONFIG_INET_XFRM_MODE_TUNNEL=y
++CONFIG_INET_XFRM_MODE_BEET=y
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_CUBIC=y
++CONFIG_DEFAULT_TCP_CONG="cubic"
++# CONFIG_TCP_MD5SIG is not set
++# CONFIG_IPV6 is not set
++# CONFIG_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL is not set
++# CONFIG_NETWORK_SECMARK is not set
++# CONFIG_NETFILTER is not set
++
++#
++# DCCP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_DCCP is not set
++
++#
++# SCTP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_SCTP is not set
++
++#
++# TIPC Configuration (EXPERIMENTAL)
++#
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++# CONFIG_BRIDGE is not set
++# CONFIG_VLAN_8021Q is not set
++# CONFIG_DECNET is not set
++# CONFIG_LLC2 is not set
++# CONFIG_IPX is not set
++# CONFIG_ATALK is not set
++# CONFIG_X25 is not set
++# CONFIG_LAPB is not set
++# CONFIG_ECONET is not set
++# CONFIG_WAN_ROUTER is not set
++
++#
++# QoS and/or fair queueing
++#
++# CONFIG_NET_SCHED is not set
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_IEEE80211 is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++# CONFIG_FW_LOADER is not set
++# CONFIG_DEBUG_DRIVER is not set
++# CONFIG_SYS_HYPERVISOR is not set
++
++#
++# Connector - unified userspace <-> kernelspace linker
++#
++# CONFIG_CONNECTOR is not set
++
++#
++# Memory Technology Devices (MTD)
++#
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++CONFIG_MTD_CONCAT=y
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# CONFIG_MTD_AFS_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLKDEVS=y
++CONFIG_MTD_BLOCK=y
++# CONFIG_FTL is not set
++# CONFIG_NFTL is not set
++# CONFIG_INFTL is not set
++# CONFIG_RFD_FTL is not set
++# CONFIG_SSFDC is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++CONFIG_MTD_CFI=y
++# CONFIG_MTD_JEDECPROBE 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 is not set
++# CONFIG_MTD_CFI_STAA is not set
++# CONFIG_MTD_RAM is not set
++# CONFIG_MTD_ROM is not set
++# CONFIG_MTD_ABSENT is not set
++# CONFIG_MTD_OBSOLETE_CHIPS is not set
++
++#
++# Mapping drivers for chip access
++#
++CONFIG_MTD_COMPLEX_MAPPINGS=y
++# CONFIG_MTD_PHYSMAP is not set
++# CONFIG_MTD_ARM_INTEGRATOR is not set
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++CONFIG_MTD_DATAFLASH=y
++# CONFIG_MTD_M25P80 is not set
++# CONFIG_MTD_SLRAM is not set
++# CONFIG_MTD_PHRAM is not set
++# CONFIG_MTD_MTDRAM is not set
++# CONFIG_MTD_BLOCK2MTD is not set
++
++#
++# Disk-On-Chip Device Drivers
++#
++# CONFIG_MTD_DOC2000 is not set
++# CONFIG_MTD_DOC2001 is not set
++# CONFIG_MTD_DOC2001PLUS is not set
++
++#
++# NAND Flash Device Drivers
++#
++# CONFIG_MTD_NAND is not set
++
++#
++# OneNAND Flash Device Drivers
++#
++# CONFIG_MTD_ONENAND is not set
++
++#
++# Parallel port support
++#
++# CONFIG_PARPORT is not set
++
++#
++# Plug and Play support
++#
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++# CONFIG_BLK_DEV_LOOP is not set
++# CONFIG_BLK_DEV_NBD is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=8192
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
++CONFIG_BLK_DEV_INITRD=y
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++# CONFIG_SCSI is not set
++# CONFIG_SCSI_NETLINK is not set
++
++#
++# Serial ATA (prod) and Parallel ATA (experimental) drivers
++#
++# CONFIG_ATA is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++CONFIG_NETDEVICES=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_MACB=y
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++
++#
++# Token Ring devices
++#
++
++#
++# Wireless LAN (non-hamradio)
++#
++# CONFIG_NET_RADIO is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++
++#
++# ISDN subsystem
++#
++# CONFIG_ISDN is not set
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++# CONFIG_INPUT_FF_MEMLESS is not set
++
++#
++# Userland interfaces
++#
++CONFIG_INPUT_MOUSEDEV=y
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
++# CONFIG_INPUT_JOYDEV is not set
++# CONFIG_INPUT_TSDEV is not set
++# CONFIG_INPUT_EVDEV is not set
++# CONFIG_INPUT_EVBUG is not set
++
++#
++# Input Device Drivers
++#
++# CONFIG_INPUT_KEYBOARD is not set
++# CONFIG_INPUT_MOUSE is not set
++# CONFIG_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TOUCHSCREEN is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++# CONFIG_SERIO is not set
++# CONFIG_GAMEPORT is not set
++
++#
++# Character devices
++#
++CONFIG_VT=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
++# CONFIG_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=256
++
++#
++# IPMI
++#
++# CONFIG_IPMI_HANDLER is not set
++
++#
++# Watchdog Cards
++#
++# CONFIG_WATCHDOG is not set
++# CONFIG_HW_RANDOM is not set
++# CONFIG_NVRAM is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++# CONFIG_RAW_DRIVER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++
++#
++# I2C support
++#
++# CONFIG_I2C is not set
++
++#
++# SPI support
++#
++CONFIG_SPI=y
++# CONFIG_SPI_DEBUG is not set
++CONFIG_SPI_MASTER=y
++
++#
++# SPI Master Controller Drivers
++#
++CONFIG_SPI_ATMEL=y
++# CONFIG_SPI_BITBANG is not set
++
++#
++# SPI Protocol Masters
++#
++
++#
++# Dallas's 1-wire bus
++#
++# CONFIG_W1 is not set
++
++#
++# Hardware Monitoring support
++#
++# CONFIG_HWMON is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++# CONFIG_TIFM_CORE is not set
++
++#
++# LED devices
++#
++# CONFIG_NEW_LEDS is not set
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++
++#
++# Digital Video Broadcasting Devices
++#
++# CONFIG_DVB is not set
++
++#
++# Graphics support
++#
++# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_FB is not set
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++
++#
++# HID Devices
++#
++# CONFIG_HID is not set
++
++#
++# USB support
++#
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++# CONFIG_USB is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# USB Gadget Support
++#
++# CONFIG_USB_GADGET is not set
++
++#
++# MMC/SD Card support
++#
++# CONFIG_MMC is not set
++
++#
++# Real Time Clock
++#
++CONFIG_RTC_LIB=y
++# CONFIG_RTC_CLASS is not set
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=y
++# CONFIG_EXT2_FS_XATTR is not set
++# CONFIG_EXT2_FS_XIP is not set
++CONFIG_EXT3_FS=y
++CONFIG_EXT3_FS_XATTR=y
++# CONFIG_EXT3_FS_POSIX_ACL is not set
++# CONFIG_EXT3_FS_SECURITY is not set
++# CONFIG_EXT4DEV_FS is not set
++CONFIG_JBD=y
++# CONFIG_JBD_DEBUG is not set
++CONFIG_FS_MBCACHE=y
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_GFS2_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
++CONFIG_INOTIFY_USER=y
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++CONFIG_AUTOFS4_FS=y
++# CONFIG_FUSE_FS is not set
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++CONFIG_FAT_FS=y
++# CONFIG_MSDOS_FS is not set
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_SYSCTL=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++# CONFIG_TMPFS_POSIX_ACL is not set
++# CONFIG_HUGETLB_PAGE is not set
++CONFIG_RAMFS=y
++# CONFIG_CONFIGFS_FS is not set
++
++#
++# Miscellaneous filesystems
++#
++# CONFIG_ADFS_FS is not set
++# CONFIG_AFFS_FS is not set
++# CONFIG_HFS_FS is not set
++# CONFIG_HFSPLUS_FS is not set
++# CONFIG_BEFS_FS is not set
++# CONFIG_BFS_FS is not set
++# CONFIG_EFS_FS is not set
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_SUMMARY is not set
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++CONFIG_CRAMFS=y
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++# CONFIG_NFS_V3_ACL is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
++# CONFIG_NFSD is not set
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++# CONFIG_CIFS is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="iso8859-1"
++CONFIG_NLS_CODEPAGE_437=y
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++CONFIG_NLS_CODEPAGE_850=y
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++CONFIG_NLS_ISO8859_1=y
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++# CONFIG_NLS_UTF8 is not set
++
++#
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_MUST_CHECK=y
++# CONFIG_MAGIC_SYSRQ is not set
++# CONFIG_UNUSED_SYMBOLS is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_HEADERS_CHECK is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_LOG_BUF_SHIFT=14
++CONFIG_DETECT_SOFTLOCKUP=y
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_DEBUG_SLAB is not set
++# CONFIG_DEBUG_RT_MUTEXES is not set
++# CONFIG_RT_MUTEX_TESTER is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_RWSEMS is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
++# CONFIG_DEBUG_KOBJECT is not set
++CONFIG_DEBUG_BUGVERBOSE=y
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_LIST is not set
++CONFIG_FRAME_POINTER=y
++CONFIG_FORCED_INLINING=y
++# CONFIG_RCU_TORTURE_TEST is not set
++CONFIG_DEBUG_USER=y
++# CONFIG_DEBUG_ERRORS is not set
++CONFIG_DEBUG_LL=y
++# CONFIG_DEBUG_ICEDCC is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++# CONFIG_CRYPTO is not set
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=y
++# CONFIG_LIBCRC32C is not set
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_PLIST=y
++CONFIG_IOMAP_COPY=y
+diff --git a/arch/arm/configs/csb337_defconfig b/arch/arm/configs/csb337_defconfig
+index 88e5d28..fcc0b69 100644
+--- a/arch/arm/configs/csb337_defconfig
++++ b/arch/arm/configs/csb337_defconfig
+@@ -657,14 +657,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+ # CONFIG_I2C_PCA_ISA is not set
+diff --git a/arch/arm/configs/csb637_defconfig b/arch/arm/configs/csb637_defconfig
+index 669f035..bffe63b 100644
+--- a/arch/arm/configs/csb637_defconfig
++++ b/arch/arm/configs/csb637_defconfig
+@@ -658,14 +658,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+ # CONFIG_I2C_PCA_ISA is not set
+diff --git a/arch/arm/configs/ecbat91_defconfig b/arch/arm/configs/ecbat91_defconfig
+new file mode 100644
+index 0000000..90ed214
+--- /dev/null
++++ b/arch/arm/configs/ecbat91_defconfig
+@@ -0,0 +1,1315 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.22-rc4
++# Sat Jun 9 01:30:18 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
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ZONE_DMA=y
++CONFIG_VECTORS_BASE=0xffff0000
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_LOCK_KERNEL=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION=""
++CONFIG_LOCALVERSION_AUTO=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 is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++CONFIG_BASE_FULL=y
++CONFIG_FUTEX=y
++CONFIG_ANON_INODES=y
++CONFIG_EPOLL=y
++CONFIG_SIGNALFD=y
++CONFIG_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 is not set
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++CONFIG_KMOD=y
++
++#
++# Block layer
++#
++CONFIG_BLOCK=y
++# CONFIG_LBD is not set
++# CONFIG_BLK_DEV_IO_TRACE is not set
++# CONFIG_LSF is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++CONFIG_IOSCHED_AS=y
++# CONFIG_IOSCHED_DEADLINE is not set
++# CONFIG_IOSCHED_CFQ is not set
++CONFIG_DEFAULT_AS=y
++# CONFIG_DEFAULT_DEADLINE is not set
++# CONFIG_DEFAULT_CFQ is not set
++# CONFIG_DEFAULT_NOOP is not set
++CONFIG_DEFAULT_IOSCHED="anticipatory"
++
++#
++# System Type
++#
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_VERSATILE is not set
++CONFIG_ARCH_AT91=y
++# CONFIG_ARCH_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP13XX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_KS8695 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_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
++
++#
++# Atmel AT91 System-on-Chip
++#
++CONFIG_ARCH_AT91RM9200=y
++# CONFIG_ARCH_AT91SAM9260 is not set
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++# CONFIG_ARCH_AT91SAM9RL is not set
++
++#
++# AT91RM9200 Board Type
++#
++# CONFIG_MACH_ONEARM is not set
++# CONFIG_ARCH_AT91RM9200DK is not set
++# CONFIG_MACH_AT91RM9200EK is not set
++# CONFIG_MACH_CSB337 is not set
++# CONFIG_MACH_CSB637 is not set
++# CONFIG_MACH_CARMEVA is not set
++# CONFIG_MACH_ATEB9200 is not set
++# CONFIG_MACH_KB9200 is not set
++# CONFIG_MACH_PICOTUX2XX is not set
++# CONFIG_MACH_KAFA is not set
++# CONFIG_MACH_CHUB is not set
++CONFIG_MACH_ECBAT91=y
++
++#
++# AT91 Board Options
++#
++# CONFIG_MTD_AT91_DATAFLASH_CARD is not set
++
++#
++# AT91 Feature Selections
++#
++CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
++# CONFIG_ATMEL_TCLIB is not set
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM920T=y
++CONFIG_CPU_32v4T=y
++CONFIG_CPU_ABRT_EV4T=y
++CONFIG_CPU_CACHE_V4WT=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
++
++#
++# Processor Features
++#
++CONFIG_ARM_THUMB=y
++# CONFIG_CPU_ICACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_OUTER_CACHE is not set
++
++#
++# Bus support
++#
++# CONFIG_ARCH_SUPPORTS_MSI is not set
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++CONFIG_PCCARD=y
++# CONFIG_PCMCIA_DEBUG is not set
++CONFIG_PCMCIA=y
++CONFIG_PCMCIA_LOAD_CIS=y
++CONFIG_PCMCIA_IOCTL=y
++
++#
++# PC-card bridges
++#
++CONFIG_AT91_CF=y
++
++#
++# Kernel Features
++#
++# CONFIG_TICK_ONESHOT is not set
++CONFIG_PREEMPT=y
++# CONFIG_NO_IDLE_HZ is not set
++CONFIG_HZ=100
++# CONFIG_AEABI is not set
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++CONFIG_SELECT_MEMORY_MODEL=y
++CONFIG_FLATMEM_MANUAL=y
++# CONFIG_DISCONTIGMEM_MANUAL is not set
++# CONFIG_SPARSEMEM_MANUAL is not set
++CONFIG_FLATMEM=y
++CONFIG_FLAT_NODE_MEM_MAP=y
++# CONFIG_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
++CONFIG_LEDS=y
++CONFIG_LEDS_TIMER=y
++CONFIG_LEDS_CPU=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CMDLINE="rootfstype=reiserfs root=/dev/mmcblk0p1 console=ttyS0,115200n8 rootdelay=1"
++# CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
++
++#
++# Floating point emulation
++#
++
++#
++# At least one emulation must be selected
++#
++CONFIG_FPE_NWFPE=y
++# CONFIG_FPE_NWFPE_XP is not set
++# CONFIG_FPE_FASTFPE is not set
++
++#
++# Userspace binary formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
++# CONFIG_ARTHUR is not set
++
++#
++# Power management options
++#
++# CONFIG_PM is not set
++
++#
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++CONFIG_PACKET=y
++# CONFIG_PACKET_MMAP is not set
++CONFIG_UNIX=y
++CONFIG_XFRM=y
++# CONFIG_XFRM_USER is not set
++# CONFIG_XFRM_SUB_POLICY is not set
++# CONFIG_XFRM_MIGRATE is not set
++# CONFIG_NET_KEY is not set
++CONFIG_INET=y
++# CONFIG_IP_MULTICAST is not set
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++# CONFIG_IP_PNP_BOOTP is not set
++# CONFIG_IP_PNP_RARP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_ARPD is not set
++# CONFIG_SYN_COOKIES is not set
++# CONFIG_INET_AH is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_XFRM_TUNNEL is not set
++# CONFIG_INET_TUNNEL 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
++CONFIG_NET_SCH_FIFO=y
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_AF_RXRPC is not set
++
++#
++# Wireless
++#
++CONFIG_CFG80211=y
++CONFIG_WIRELESS_EXT=y
++CONFIG_MAC80211=y
++# CONFIG_MAC80211_DEBUG is not set
++CONFIG_IEEE80211=y
++# CONFIG_IEEE80211_DEBUG is not set
++CONFIG_IEEE80211_CRYPT_WEP=y
++# CONFIG_IEEE80211_CRYPT_CCMP is not set
++# CONFIG_IEEE80211_CRYPT_TKIP is not set
++CONFIG_IEEE80211_SOFTMAC=y
++CONFIG_IEEE80211_SOFTMAC_DEBUG=y
++# CONFIG_RFKILL is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++# CONFIG_STANDALONE is not set
++# CONFIG_PREVENT_FIRMWARE_BUILD is not set
++CONFIG_FW_LOADER=y
++# CONFIG_SYS_HYPERVISOR is not set
++
++#
++# Connector - unified userspace <-> kernelspace linker
++#
++# CONFIG_CONNECTOR is not set
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++# CONFIG_MTD_CONCAT is not set
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++CONFIG_MTD_AFS_PARTS=y
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLKDEVS=y
++CONFIG_MTD_BLOCK=y
++# CONFIG_FTL is not set
++# CONFIG_NFTL is not set
++# CONFIG_INFTL is not set
++# CONFIG_RFD_FTL is not set
++# CONFIG_SSFDC is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++# CONFIG_MTD_CFI is not set
++# CONFIG_MTD_JEDECPROBE is not set
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
++CONFIG_MTD_MAP_BANK_WIDTH_2=y
++CONFIG_MTD_MAP_BANK_WIDTH_4=y
++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
++CONFIG_MTD_CFI_I1=y
++CONFIG_MTD_CFI_I2=y
++# CONFIG_MTD_CFI_I4 is not set
++# CONFIG_MTD_CFI_I8 is not set
++# CONFIG_MTD_RAM is not set
++# CONFIG_MTD_ROM is not set
++# CONFIG_MTD_ABSENT is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++CONFIG_MTD_DATAFLASH=y
++# 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 is not set
++# CONFIG_MTD_ONENAND is not set
++
++#
++# UBI - Unsorted block images
++#
++# CONFIG_MTD_UBI is not set
++
++#
++# Parallel port support
++#
++# CONFIG_PARPORT is not set
++
++#
++# Plug and Play support
++#
++# CONFIG_PNPACPI is not set
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++CONFIG_BLK_DEV_LOOP=y
++# CONFIG_BLK_DEV_CRYPTOLOOP is not set
++# CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_UB is not set
++# CONFIG_BLK_DEV_RAM is not set
++# CONFIG_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=y
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++# CONFIG_SCSI_MULTI_LUN is not set
++# CONFIG_SCSI_CONSTANTS is not set
++# CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
++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_DEBUG is not set
++
++#
++# PCMCIA SCSI adapter support
++#
++# CONFIG_PCMCIA_AHA152X is not set
++# CONFIG_PCMCIA_FDOMAIN is not set
++# CONFIG_PCMCIA_NINJA_SCSI is not set
++# CONFIG_PCMCIA_QLOGIC is not set
++# CONFIG_PCMCIA_SYM53C500 is not set
++# 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_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_ARM_AT91_ETHER=y
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++# CONFIG_NETDEV_1000 is not set
++# CONFIG_NETDEV_10000 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 is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET_MII is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_NET_PCMCIA is not set
++# CONFIG_WAN is not set
++CONFIG_PPP=y
++CONFIG_PPP_MULTILINK=y
++CONFIG_PPP_FILTER=y
++CONFIG_PPP_ASYNC=y
++# CONFIG_PPP_SYNC_TTY is not set
++# CONFIG_PPP_DEFLATE is not set
++# CONFIG_PPP_BSDCOMP is not set
++# CONFIG_PPP_MPPE is not set
++# CONFIG_PPPOE is not set
++# CONFIG_SLIP is not set
++CONFIG_SLHC=y
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++
++#
++# ISDN subsystem
++#
++# CONFIG_ISDN is not set
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++# CONFIG_INPUT_FF_MEMLESS is not set
++
++#
++# Userland interfaces
++#
++CONFIG_INPUT_MOUSEDEV=y
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
++# CONFIG_INPUT_JOYDEV is not set
++# CONFIG_INPUT_TSDEV is not set
++# CONFIG_INPUT_EVDEV is not set
++# CONFIG_INPUT_EVBUG is not set
++
++#
++# Input Device Drivers
++#
++# CONFIG_INPUT_KEYBOARD is not set
++# CONFIG_INPUT_MOUSE is not set
++# CONFIG_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TABLET is not set
++# CONFIG_INPUT_TOUCHSCREEN is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++# CONFIG_SERIO is not set
++# CONFIG_GAMEPORT is not set
++
++#
++# Character devices
++#
++CONFIG_VT=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
++# CONFIG_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=256
++
++#
++# IPMI
++#
++# CONFIG_IPMI_HANDLER is not set
++CONFIG_WATCHDOG=y
++CONFIG_WATCHDOG_NOWAYOUT=y
++
++#
++# Watchdog Device Drivers
++#
++# CONFIG_SOFT_WATCHDOG is not set
++# CONFIG_AT91RM9200_WATCHDOG is not set
++
++#
++# USB-based Watchdog Cards
++#
++# CONFIG_USBPCWATCHDOG is not set
++CONFIG_HW_RANDOM=y
++# CONFIG_NVRAM is not set
++# CONFIG_R3964 is not set
++
++#
++# PCMCIA character devices
++#
++# CONFIG_SYNCLINK_CS is not set
++# CONFIG_CARDMAN_4000 is not set
++# CONFIG_CARDMAN_4040 is not set
++# CONFIG_RAW_DRIVER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++# CONFIG_AT91_SPI is not set
++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_GPIO=y
++# 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_STUB is not set
++# CONFIG_I2C_TINY_USB is not set
++# CONFIG_I2C_PCA 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_ATMEL is not set
++CONFIG_SPI_BITBANG=y
++CONFIG_SPI_AT91=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=y
++# CONFIG_HWMON_VID is not set
++# CONFIG_SENSORS_ABITUGURU is not set
++# CONFIG_SENSORS_AD7418 is not set
++# CONFIG_SENSORS_ADM1021 is not set
++# CONFIG_SENSORS_ADM1025 is not set
++# CONFIG_SENSORS_ADM1026 is not set
++# CONFIG_SENSORS_ADM1029 is not set
++# CONFIG_SENSORS_ADM1031 is not set
++# CONFIG_SENSORS_ADM9240 is not set
++# CONFIG_SENSORS_ASB100 is not set
++# CONFIG_SENSORS_ATXP1 is not set
++# CONFIG_SENSORS_DS1621 is not set
++# CONFIG_SENSORS_F71805F is not set
++# CONFIG_SENSORS_FSCHER is not set
++# CONFIG_SENSORS_FSCPOS is not set
++# CONFIG_SENSORS_GL518SM is not set
++# CONFIG_SENSORS_GL520SM is not set
++# CONFIG_SENSORS_IT87 is not set
++# CONFIG_SENSORS_LM63 is not set
++# CONFIG_SENSORS_LM70 is not set
++# CONFIG_SENSORS_LM75 is not set
++# CONFIG_SENSORS_LM77 is not set
++# CONFIG_SENSORS_LM78 is not set
++# CONFIG_SENSORS_LM80 is not set
++# CONFIG_SENSORS_LM83 is not set
++# CONFIG_SENSORS_LM85 is not set
++# CONFIG_SENSORS_LM87 is not set
++# CONFIG_SENSORS_LM90 is not set
++# CONFIG_SENSORS_LM92 is not set
++# CONFIG_SENSORS_MAX1619 is not set
++# CONFIG_SENSORS_MAX6650 is not set
++# CONFIG_SENSORS_PC87360 is not set
++# CONFIG_SENSORS_PC87427 is not set
++# CONFIG_SENSORS_SMSC47M1 is not set
++# CONFIG_SENSORS_SMSC47M192 is not set
++# CONFIG_SENSORS_SMSC47B397 is not set
++# CONFIG_SENSORS_VT1211 is not set
++# CONFIG_SENSORS_W83781D is not set
++# CONFIG_SENSORS_W83791D is not set
++# CONFIG_SENSORS_W83792D is not set
++# CONFIG_SENSORS_W83793 is not set
++# CONFIG_SENSORS_W83L785TS is not set
++# CONFIG_SENSORS_W83627HF is not set
++# CONFIG_SENSORS_W83627EHF is not set
++# CONFIG_HWMON_DEBUG_CHIP is not set
++
++#
++# Misc devices
++#
++# CONFIG_BLINK is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
++
++#
++# LED devices
++#
++CONFIG_NEW_LEDS=y
++CONFIG_LEDS_CLASS=y
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++# CONFIG_LEDS_TRIGGERS is not set
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV 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 is not set
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++
++#
++# HID Devices
++#
++CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
++
++#
++# USB Input Devices
++#
++# CONFIG_USB_HID is not set
++
++#
++# USB HID Boot Protocol drivers
++#
++# CONFIG_USB_KBD is not set
++# CONFIG_USB_MOUSE is not set
++
++#
++# USB support
++#
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++CONFIG_USB=y
++# CONFIG_USB_DEBUG is not set
++
++#
++# Miscellaneous USB options
++#
++CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DEVICE_CLASS is not set
++# CONFIG_USB_DYNAMIC_MINORS is not set
++# CONFIG_USB_OTG is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++
++#
++# USB Device Class drivers
++#
++# CONFIG_USB_ACM is not set
++CONFIG_USB_PRINTER=y
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# may also be needed; see USB_STORAGE Help for more information
++#
++CONFIG_USB_STORAGE=y
++# CONFIG_USB_STORAGE_DEBUG is not set
++# CONFIG_USB_STORAGE_DATAFAB is not set
++# CONFIG_USB_STORAGE_FREECOM is not set
++# CONFIG_USB_STORAGE_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_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=y
++# 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_AT91=y
++CONFIG_USB_AT91=y
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++# CONFIG_USB_GADGET_DUALSPEED is not set
++# CONFIG_USB_ZERO is not set
++# CONFIG_USB_ETH is not set
++# CONFIG_USB_GADGETFS is not set
++# CONFIG_USB_FILE_STORAGE is not set
++# CONFIG_USB_G_SERIAL is not set
++# CONFIG_USB_MIDI_GADGET is not set
++CONFIG_MMC=y
++CONFIG_MMC_DEBUG=y
++# CONFIG_MMC_UNSAFE_RESUME is not set
++
++#
++# MMC/SD Card Drivers
++#
++CONFIG_MMC_BLOCK=y
++
++#
++# MMC/SD Host Controller Drivers
++#
++CONFIG_MMC_AT91=y
++
++#
++# Real Time Clock
++#
++CONFIG_RTC_LIB=y
++CONFIG_RTC_CLASS=y
++# CONFIG_RTC_HCTOSYS is not set
++# 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_DRV_AT91RM9200=y
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=y
++# CONFIG_EXT2_FS_XATTR is not set
++# CONFIG_EXT2_FS_XIP is not set
++CONFIG_EXT3_FS=y
++CONFIG_EXT3_FS_XATTR=y
++# CONFIG_EXT3_FS_POSIX_ACL is not set
++# CONFIG_EXT3_FS_SECURITY is not set
++# CONFIG_EXT4DEV_FS is not set
++CONFIG_JBD=y
++# CONFIG_JBD_DEBUG is not set
++CONFIG_FS_MBCACHE=y
++CONFIG_REISERFS_FS=y
++# CONFIG_REISERFS_CHECK is not set
++# CONFIG_REISERFS_PROC_INFO is not set
++# CONFIG_REISERFS_FS_XATTR is not set
++# CONFIG_JFS_FS is not set
++CONFIG_FS_POSIX_ACL=y
++# CONFIG_XFS_FS is not set
++# CONFIG_GFS2_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
++CONFIG_INOTIFY_USER=y
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# CONFIG_FUSE_FS is not set
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++# CONFIG_MSDOS_FS is not set
++# CONFIG_VFAT_FS is not set
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_SYSCTL=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++# CONFIG_TMPFS_POSIX_ACL is not set
++# CONFIG_HUGETLB_PAGE is not set
++CONFIG_RAMFS=y
++CONFIG_CONFIGFS_FS=y
++
++#
++# Miscellaneous filesystems
++#
++# CONFIG_ADFS_FS is not set
++# CONFIG_AFFS_FS is not set
++# CONFIG_HFS_FS is not set
++# CONFIG_HFSPLUS_FS is not set
++# CONFIG_BEFS_FS is not set
++# CONFIG_BFS_FS is not set
++# CONFIG_EFS_FS is not set
++# CONFIG_JFFS2_FS is not set
++CONFIG_CRAMFS=y
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++CONFIG_NFS_V3_ACL=y
++CONFIG_NFS_V4=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_ACL_SUPPORT=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++CONFIG_SUNRPC_GSS=y
++# CONFIG_SUNRPC_BIND34 is not set
++CONFIG_RPCSEC_GSS_KRB5=y
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++# CONFIG_CIFS is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++CONFIG_PARTITION_ADVANCED=y
++# CONFIG_ACORN_PARTITION is not set
++# CONFIG_OSF_PARTITION is not set
++# CONFIG_AMIGA_PARTITION is not set
++# CONFIG_ATARI_PARTITION is not set
++# CONFIG_MAC_PARTITION is not set
++CONFIG_MSDOS_PARTITION=y
++# CONFIG_BSD_DISKLABEL is not set
++# CONFIG_MINIX_SUBPARTITION is not set
++# CONFIG_SOLARIS_X86_PARTITION is not set
++# CONFIG_UNIXWARE_DISKLABEL is not set
++# CONFIG_LDM_PARTITION is not set
++# CONFIG_SGI_PARTITION is not set
++# CONFIG_ULTRIX_PARTITION is not set
++# CONFIG_SUN_PARTITION is not set
++# CONFIG_KARMA_PARTITION is not set
++# CONFIG_EFI_PARTITION is not set
++# CONFIG_SYSV68_PARTITION is not set
++
++#
++# Native Language Support
++#
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="iso8859-1"
++# CONFIG_NLS_CODEPAGE_437 is not set
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++# CONFIG_NLS_CODEPAGE_850 is not set
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++# CONFIG_NLS_ISO8859_1 is not set
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++# CONFIG_NLS_UTF8 is not set
++
++#
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_MUST_CHECK=y
++# CONFIG_MAGIC_SYSRQ 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=y
++CONFIG_FRAME_POINTER=y
++CONFIG_DEBUG_USER=y
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++CONFIG_CRYPTO=y
++CONFIG_CRYPTO_ALGAPI=y
++CONFIG_CRYPTO_BLKCIPHER=y
++CONFIG_CRYPTO_MANAGER=y
++# CONFIG_CRYPTO_HMAC is not set
++# CONFIG_CRYPTO_XCBC is not set
++# CONFIG_CRYPTO_NULL is not set
++# CONFIG_CRYPTO_MD4 is not set
++CONFIG_CRYPTO_MD5=y
++CONFIG_CRYPTO_SHA1=y
++# CONFIG_CRYPTO_SHA256 is not set
++# CONFIG_CRYPTO_SHA512 is not set
++# CONFIG_CRYPTO_WP512 is not set
++# CONFIG_CRYPTO_TGR192 is not set
++# CONFIG_CRYPTO_GF128MUL is not set
++CONFIG_CRYPTO_ECB=y
++CONFIG_CRYPTO_CBC=y
++CONFIG_CRYPTO_PCBC=y
++# CONFIG_CRYPTO_LRW is not set
++# CONFIG_CRYPTO_CRYPTD is not set
++CONFIG_CRYPTO_DES=y
++# CONFIG_CRYPTO_FCRYPT is not set
++# CONFIG_CRYPTO_BLOWFISH is not set
++# CONFIG_CRYPTO_TWOFISH is not set
++# CONFIG_CRYPTO_SERPENT is not set
++CONFIG_CRYPTO_AES=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_CAMELLIA is not set
++# CONFIG_CRYPTO_TEST is not set
++
++#
++# Hardware crypto devices
++#
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++CONFIG_CRC_CCITT=y
++# CONFIG_CRC16 is not set
++# CONFIG_CRC_ITU_T is not set
++CONFIG_CRC32=y
++# CONFIG_LIBCRC32C is not set
++CONFIG_ZLIB_INFLATE=y
++CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
++CONFIG_HAS_DMA=y
+diff --git a/arch/arm/configs/homematic_defconfig b/arch/arm/configs/homematic_defconfig
+new file mode 100644
+index 0000000..ed1c2eb
+--- /dev/null
++++ b/arch/arm/configs/homematic_defconfig
+@@ -0,0 +1,1263 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.21.3
++# Mon Jun 18 12:28:42 2007
++#
++CONFIG_ARM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++CONFIG_GENERIC_GPIO=y
++# CONFIG_GENERIC_TIME is not set
++CONFIG_MMU=y
++# CONFIG_NO_IOPORT is not set
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
++CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++CONFIG_GENERIC_HWEIGHT=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ZONE_DMA=y
++CONFIG_VECTORS_BASE=0xffff0000
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
++
++#
++# Code maturity level options
++#
++CONFIG_EXPERIMENTAL=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION=""
++CONFIG_LOCALVERSION_AUTO=y
++# CONFIG_SWAP is not set
++CONFIG_SYSVIPC=y
++# CONFIG_IPC_NS is not set
++CONFIG_SYSVIPC_SYSCTL=y
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++# CONFIG_TASKSTATS is not set
++# CONFIG_UTS_NS is not set
++# CONFIG_AUDIT is not set
++# CONFIG_IKCONFIG is not set
++# CONFIG_SYSFS_DEPRECATED is not set
++# CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
++CONFIG_SYSCTL=y
++# CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++CONFIG_BASE_FULL=y
++CONFIG_FUTEX=y
++CONFIG_EPOLL=y
++CONFIG_SHMEM=y
++CONFIG_SLAB=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_RT_MUTEXES=y
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=0
++# CONFIG_SLOB is not set
++
++#
++# Loadable module support
++#
++CONFIG_MODULES=y
++CONFIG_MODULE_UNLOAD=y
++# CONFIG_MODULE_FORCE_UNLOAD is not set
++# CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
++CONFIG_KMOD=y
++
++#
++# Block layer
++#
++CONFIG_BLOCK=y
++# CONFIG_LBD is not set
++# CONFIG_BLK_DEV_IO_TRACE is not set
++# CONFIG_LSF is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++# CONFIG_IOSCHED_AS 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=y
++# CONFIG_ARCH_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IOP13XX is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_RPC is not set
++# CONFIG_ARCH_SA1100 is not set
++# CONFIG_ARCH_S3C2410 is not set
++# CONFIG_ARCH_SHARK is not set
++# CONFIG_ARCH_LH7A40X is not set
++# CONFIG_ARCH_OMAP is not set
++
++#
++# Atmel AT91 System-on-Chip
++#
++CONFIG_ARCH_AT91RM9200=y
++# CONFIG_ARCH_AT91SAM9260 is not set
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++# CONFIG_ARCH_AT91SAM9RL is not set
++
++#
++# AT91RM9200 Board Type
++#
++# CONFIG_MACH_ONEARM is not set
++# CONFIG_ARCH_AT91RM9200DK is not set
++# CONFIG_MACH_AT91RM9200EK is not set
++# CONFIG_MACH_CSB337 is not set
++# CONFIG_MACH_CSB637 is not set
++# CONFIG_MACH_CARMEVA is not set
++# CONFIG_MACH_ATEB9200 is not set
++# CONFIG_MACH_KB9200 is not set
++# CONFIG_MACH_KAFA is not set
++# CONFIG_MACH_CHUB is not set
++CONFIG_MACH_HOMEMATIC=y
++
++#
++# AT91 Board Options
++#
++
++#
++# AT91 Feature Selections
++#
++# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++# CONFIG_ATMEL_TCLIB is not set
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM920T=y
++CONFIG_CPU_32v4T=y
++CONFIG_CPU_ABRT_EV4T=y
++CONFIG_CPU_CACHE_V4WT=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
++
++#
++# Processor Features
++#
++CONFIG_ARM_THUMB=y
++# CONFIG_CPU_ICACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_OUTER_CACHE is not set
++
++#
++# Bus support
++#
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++# CONFIG_PREEMPT is not set
++# CONFIG_NO_IDLE_HZ is not set
++CONFIG_HZ=100
++# CONFIG_AEABI is not set
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++CONFIG_SELECT_MEMORY_MODEL=y
++CONFIG_FLATMEM_MANUAL=y
++# CONFIG_DISCONTIGMEM_MANUAL is not set
++# CONFIG_SPARSEMEM_MANUAL is not set
++CONFIG_FLATMEM=y
++CONFIG_FLAT_NODE_MEM_MAP=y
++# CONFIG_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_RESOURCES_64BIT is not set
++CONFIG_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=""
++# CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
++
++#
++# Floating point emulation
++#
++
++#
++# At least one emulation must be selected
++#
++CONFIG_FPE_NWFPE=y
++# CONFIG_FPE_NWFPE_XP is not set
++# CONFIG_FPE_FASTFPE is not set
++
++#
++# Userspace binary formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
++# CONFIG_ARTHUR is not set
++
++#
++# Power management options
++#
++# CONFIG_PM is not set
++
++#
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++# CONFIG_NETDEBUG is not set
++CONFIG_PACKET=y
++# CONFIG_PACKET_MMAP 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_XFRM_TUNNEL is not set
++# CONFIG_INET_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_CUBIC=y
++CONFIG_DEFAULT_TCP_CONG="cubic"
++# CONFIG_TCP_MD5SIG is not set
++# CONFIG_IPV6 is not set
++# CONFIG_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL is not set
++# CONFIG_NETWORK_SECMARK is not set
++# CONFIG_NETFILTER is not set
++
++#
++# DCCP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_DCCP is not set
++
++#
++# SCTP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_SCTP is not set
++
++#
++# TIPC Configuration (EXPERIMENTAL)
++#
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++# CONFIG_BRIDGE is not set
++# CONFIG_VLAN_8021Q is not set
++# CONFIG_DECNET is not set
++# CONFIG_LLC2 is not set
++# CONFIG_IPX is not set
++# CONFIG_ATALK is not set
++# CONFIG_X25 is not set
++# CONFIG_LAPB is not set
++# CONFIG_ECONET is not set
++# CONFIG_WAN_ROUTER is not set
++
++#
++# QoS and/or fair queueing
++#
++# CONFIG_NET_SCHED is not set
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++CONFIG_IEEE80211=m
++# CONFIG_IEEE80211_DEBUG is not set
++CONFIG_IEEE80211_CRYPT_WEP=m
++CONFIG_IEEE80211_CRYPT_CCMP=m
++CONFIG_IEEE80211_CRYPT_TKIP=m
++CONFIG_IEEE80211_SOFTMAC=m
++# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
++CONFIG_WIRELESS_EXT=y
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++CONFIG_FW_LOADER=y
++# CONFIG_SYS_HYPERVISOR is not set
++
++#
++# Connector - unified userspace <-> kernelspace linker
++#
++# CONFIG_CONNECTOR is not set
++
++#
++# Memory Technology Devices (MTD)
++#
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++# CONFIG_MTD_CONCAT is not set
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# CONFIG_MTD_AFS_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLKDEVS=y
++CONFIG_MTD_BLOCK=y
++# CONFIG_FTL is not set
++# CONFIG_NFTL is not set
++# CONFIG_INFTL is not set
++# CONFIG_RFD_FTL is not set
++# CONFIG_SSFDC is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++# CONFIG_MTD_CFI is not set
++# CONFIG_MTD_JEDECPROBE is not set
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
++CONFIG_MTD_MAP_BANK_WIDTH_2=y
++CONFIG_MTD_MAP_BANK_WIDTH_4=y
++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
++CONFIG_MTD_CFI_I1=y
++CONFIG_MTD_CFI_I2=y
++# CONFIG_MTD_CFI_I4 is not set
++# CONFIG_MTD_CFI_I8 is not set
++# CONFIG_MTD_RAM is not set
++# CONFIG_MTD_ROM is not set
++# CONFIG_MTD_ABSENT is not set
++# CONFIG_MTD_OBSOLETE_CHIPS is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++# CONFIG_MTD_SLRAM is not set
++# CONFIG_MTD_PHRAM is not set
++# CONFIG_MTD_MTDRAM is not set
++# CONFIG_MTD_BLOCK2MTD is not set
++
++#
++# Disk-On-Chip Device Drivers
++#
++# CONFIG_MTD_DOC2000 is not set
++# CONFIG_MTD_DOC2001 is not set
++# CONFIG_MTD_DOC2001PLUS is not set
++CONFIG_MTD_AT91_DATAFLASH=y
++
++#
++# NAND Flash Device Drivers
++#
++CONFIG_MTD_NAND=y
++# CONFIG_MTD_NAND_VERIFY_WRITE is not set
++# CONFIG_MTD_NAND_ECC_SMC is not set
++CONFIG_MTD_NAND_IDS=y
++# CONFIG_MTD_NAND_DISKONCHIP is not set
++CONFIG_MTD_NAND_AT91=y
++# CONFIG_MTD_NAND_NANDSIM is not set
++
++#
++# OneNAND Flash Device Drivers
++#
++# CONFIG_MTD_ONENAND is not set
++
++#
++# Parallel port support
++#
++# CONFIG_PARPORT is not set
++
++#
++# Plug and Play support
++#
++# CONFIG_PNPACPI is not set
++
++#
++# Block devices
++#
++# CONFIG_BLK_DEV_COW_COMMON is not set
++# CONFIG_BLK_DEV_LOOP is not set
++# CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_UB is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=4096
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
++# 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_TGT is not set
++# CONFIG_SCSI_NETLINK is not set
++# CONFIG_SCSI_PROC_FS is not set
++
++#
++# SCSI support type (disk, tape, CD-ROM)
++#
++CONFIG_BLK_DEV_SD=y
++# CONFIG_CHR_DEV_ST is not set
++# CONFIG_CHR_DEV_OSST is not set
++# CONFIG_BLK_DEV_SR is not set
++# CONFIG_CHR_DEV_SG is not set
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++# CONFIG_SCSI_MULTI_LUN is not set
++# CONFIG_SCSI_CONSTANTS is not set
++# CONFIG_SCSI_LOGGING is not set
++# CONFIG_SCSI_SCAN_ASYNC is not set
++
++#
++# SCSI Transports
++#
++# CONFIG_SCSI_SPI_ATTRS is not set
++# CONFIG_SCSI_FC_ATTRS is not set
++# CONFIG_SCSI_ISCSI_ATTRS is not set
++# CONFIG_SCSI_SAS_ATTRS is not set
++# CONFIG_SCSI_SAS_LIBSAS is not set
++
++#
++# SCSI low-level drivers
++#
++# CONFIG_ISCSI_TCP is not set
++# CONFIG_SCSI_DEBUG is not set
++
++#
++# Serial ATA (prod) and Parallel ATA (experimental) drivers
++#
++# CONFIG_ATA is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++CONFIG_NETDEVICES=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_ARM_AT91_ETHER=y
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++
++#
++# Token Ring devices
++#
++
++#
++# Wireless LAN (non-hamradio)
++#
++CONFIG_NET_RADIO=y
++# CONFIG_NET_WIRELESS_RTNETLINK is not set
++
++#
++# Obsolete Wireless cards support (pre-802.11)
++#
++# CONFIG_STRIP is not set
++# CONFIG_USB_ZD1201 is not set
++# CONFIG_HOSTAP is not set
++CONFIG_ZD1211RW=m
++# CONFIG_ZD1211RW_DEBUG is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++
++#
++# ISDN subsystem
++#
++# CONFIG_ISDN is not set
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++# CONFIG_INPUT_FF_MEMLESS is not set
++
++#
++# Userland interfaces
++#
++CONFIG_INPUT_MOUSEDEV=y
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
++# CONFIG_INPUT_JOYDEV is not set
++# CONFIG_INPUT_TSDEV is not set
++# CONFIG_INPUT_EVDEV is not set
++# CONFIG_INPUT_EVBUG is not set
++
++#
++# Input Device Drivers
++#
++CONFIG_INPUT_KEYBOARD=y
++CONFIG_KEYBOARD_ATKBD=y
++# CONFIG_KEYBOARD_SUNKBD is not set
++# CONFIG_KEYBOARD_LKKBD is not set
++# CONFIG_KEYBOARD_XTKBD is not set
++# CONFIG_KEYBOARD_NEWTON is not set
++# CONFIG_KEYBOARD_STOWAWAY is not set
++# CONFIG_KEYBOARD_GPIO is not set
++# CONFIG_INPUT_MOUSE is not set
++# CONFIG_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TOUCHSCREEN is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++CONFIG_SERIO=y
++CONFIG_SERIO_SERPORT=y
++CONFIG_SERIO_LIBPS2=y
++# CONFIG_SERIO_RAW is not set
++# CONFIG_GAMEPORT is not set
++
++#
++# Character devices
++#
++CONFIG_VT=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
++# CONFIG_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=256
++
++#
++# IPMI
++#
++# CONFIG_IPMI_HANDLER is not set
++
++#
++# Watchdog Cards
++#
++CONFIG_WATCHDOG=y
++CONFIG_WATCHDOG_NOWAYOUT=y
++
++#
++# Watchdog Device Drivers
++#
++# CONFIG_SOFT_WATCHDOG is not set
++CONFIG_AT91RM9200_WATCHDOG=y
++
++#
++# USB-based Watchdog Cards
++#
++# CONFIG_USBPCWATCHDOG is not set
++# CONFIG_HW_RANDOM is not set
++# CONFIG_NVRAM is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++# CONFIG_RAW_DRIVER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++CONFIG_AT91_SPI=y
++# CONFIG_AT91_SPIDEV is not set
++
++#
++# I2C support
++#
++CONFIG_I2C=y
++CONFIG_I2C_CHARDEV=m
++
++#
++# I2C Algorithms
++#
++# CONFIG_I2C_ALGOBIT is not set
++# CONFIG_I2C_ALGOPCF is not set
++# CONFIG_I2C_ALGOPCA is not set
++
++#
++# I2C Hardware Bus support
++#
++# CONFIG_I2C_AT91 is not set
++# CONFIG_I2C_OCORES is not set
++# CONFIG_I2C_PARPORT_LIGHT is not set
++# CONFIG_I2C_STUB is not set
++# CONFIG_I2C_PCA is not set
++# CONFIG_I2C_PCA_ISA is not set
++
++#
++# Miscellaneous I2C Chip support
++#
++# CONFIG_SENSORS_DS1337 is not set
++# CONFIG_SENSORS_DS1374 is not set
++# CONFIG_SENSORS_EEPROM is not set
++# CONFIG_SENSORS_PCF8574 is not set
++# CONFIG_SENSORS_PCA9539 is not set
++# CONFIG_SENSORS_PCF8591 is not set
++# CONFIG_SENSORS_MAX6875 is not set
++# CONFIG_I2C_DEBUG_CORE is not set
++# CONFIG_I2C_DEBUG_ALGO is not set
++# CONFIG_I2C_DEBUG_BUS is not set
++# CONFIG_I2C_DEBUG_CHIP is not set
++
++#
++# SPI support
++#
++# CONFIG_SPI is not set
++# CONFIG_SPI_MASTER is not set
++
++#
++# Dallas's 1-wire bus
++#
++# CONFIG_W1 is not set
++
++#
++# Hardware Monitoring support
++#
++# CONFIG_HWMON is not set
++# CONFIG_HWMON_VID is not set
++
++#
++# Misc devices
++#
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
++
++#
++# LED devices
++#
++# CONFIG_NEW_LEDS is not set
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++
++#
++# Digital Video Broadcasting Devices
++#
++# CONFIG_DVB is not set
++# CONFIG_USB_DABUSB is not set
++
++#
++# Graphics support
++#
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++# CONFIG_FB is not set
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++
++#
++# HID Devices
++#
++# CONFIG_HID is not set
++
++#
++# USB support
++#
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++CONFIG_USB=y
++# CONFIG_USB_DEBUG is not set
++
++#
++# Miscellaneous USB options
++#
++CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DYNAMIC_MINORS is not set
++# CONFIG_USB_OTG is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++
++#
++# USB Device Class drivers
++#
++# CONFIG_USB_ACM is not set
++# CONFIG_USB_PRINTER is not set
++
++#
++# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
++#
++
++#
++# may also be needed; see USB_STORAGE Help for more information
++#
++CONFIG_USB_STORAGE=y
++# CONFIG_USB_STORAGE_DEBUG is not set
++# CONFIG_USB_STORAGE_DATAFAB is not set
++# CONFIG_USB_STORAGE_FREECOM is not set
++# CONFIG_USB_STORAGE_DPCM is not set
++# CONFIG_USB_STORAGE_USBAT is not set
++# CONFIG_USB_STORAGE_SDDR09 is not set
++# CONFIG_USB_STORAGE_SDDR55 is not set
++# CONFIG_USB_STORAGE_JUMPSHOT is not set
++# CONFIG_USB_STORAGE_ALAUDA is not set
++# CONFIG_USB_STORAGE_KARMA is not set
++# CONFIG_USB_LIBUSUAL is not set
++
++#
++# USB Input Devices
++#
++# CONFIG_USB_HID is not set
++
++#
++# USB HID Boot Protocol drivers
++#
++# CONFIG_USB_KBD is not set
++# CONFIG_USB_MOUSE is not set
++# CONFIG_USB_AIPTEK is not set
++# CONFIG_USB_WACOM is not set
++# CONFIG_USB_ACECAD is not set
++# CONFIG_USB_KBTAB is not set
++# CONFIG_USB_POWERMATE is not set
++# CONFIG_USB_TOUCHSCREEN is not set
++# CONFIG_USB_YEALINK is not set
++# CONFIG_USB_XPAD is not set
++# CONFIG_USB_ATI_REMOTE is not set
++# CONFIG_USB_ATI_REMOTE2 is not set
++# CONFIG_USB_KEYSPAN_REMOTE is not set
++# CONFIG_USB_APPLETOUCH is not set
++# CONFIG_USB_GTCO is not set
++
++#
++# USB Imaging devices
++#
++# CONFIG_USB_MDC800 is not set
++# CONFIG_USB_MICROTEK is not set
++
++#
++# USB Network Adapters
++#
++# CONFIG_USB_CATC is not set
++# CONFIG_USB_KAWETH is not set
++# CONFIG_USB_PEGASUS is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET_MII is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_USB_MON is not set
++
++#
++# USB port drivers
++#
++
++#
++# USB Serial Converter support
++#
++CONFIG_USB_SERIAL=m
++# CONFIG_USB_SERIAL_GENERIC is not set
++# CONFIG_USB_SERIAL_AIRCABLE is not set
++# CONFIG_USB_SERIAL_AIRPRIME is not set
++# CONFIG_USB_SERIAL_ARK3116 is not set
++# CONFIG_USB_SERIAL_BELKIN is not set
++# CONFIG_USB_SERIAL_WHITEHEAT is not set
++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
++# CONFIG_USB_SERIAL_CP2101 is not set
++# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
++# CONFIG_USB_SERIAL_EMPEG is not set
++CONFIG_USB_SERIAL_FTDI_SIO=m
++# CONFIG_USB_SERIAL_FUNSOFT is not set
++# CONFIG_USB_SERIAL_VISOR is not set
++# CONFIG_USB_SERIAL_IPAQ is not set
++# CONFIG_USB_SERIAL_IR is not set
++# CONFIG_USB_SERIAL_EDGEPORT is not set
++# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
++# CONFIG_USB_SERIAL_GARMIN is not set
++# CONFIG_USB_SERIAL_IPW is not set
++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
++# CONFIG_USB_SERIAL_KEYSPAN is not set
++# CONFIG_USB_SERIAL_KLSI is not set
++# CONFIG_USB_SERIAL_KOBIL_SCT is not set
++# CONFIG_USB_SERIAL_MCT_U232 is not set
++# CONFIG_USB_SERIAL_MOS7720 is not set
++# CONFIG_USB_SERIAL_MOS7840 is not set
++# CONFIG_USB_SERIAL_NAVMAN is not set
++# CONFIG_USB_SERIAL_PL2303 is not set
++# CONFIG_USB_SERIAL_HP4X is not set
++# CONFIG_USB_SERIAL_SAFE is not set
++# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
++# CONFIG_USB_SERIAL_TI is not set
++# CONFIG_USB_SERIAL_CYBERJACK is not set
++# CONFIG_USB_SERIAL_XIRCOM is not set
++# CONFIG_USB_SERIAL_OPTION is not set
++# CONFIG_USB_SERIAL_OMNINET is not set
++# CONFIG_USB_SERIAL_DEBUG is not set
++
++#
++# USB Miscellaneous drivers
++#
++# CONFIG_USB_EMI62 is not set
++# CONFIG_USB_EMI26 is not set
++# CONFIG_USB_ADUTUX is not set
++# CONFIG_USB_AUERSWALD is not set
++# CONFIG_USB_RIO500 is not set
++# CONFIG_USB_LEGOTOWER is not set
++# CONFIG_USB_LCD is not set
++# CONFIG_USB_BERRY_CHARGE is not set
++# CONFIG_USB_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
++# CONFIG_USB_CYTHERM is not set
++# CONFIG_USB_PHIDGET is not set
++# CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_TRANCEVIBRATOR is not set
++# CONFIG_USB_IOWARRIOR is not set
++# CONFIG_USB_TEST is not set
++
++#
++# USB DSL modem support
++#
++
++#
++# USB Gadget Support
++#
++CONFIG_USB_GADGET=m
++# CONFIG_USB_GADGET_DEBUG_FILES is not set
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_PXA2XX is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++# CONFIG_USB_GADGET_OMAP is not set
++CONFIG_USB_GADGET_AT91=y
++CONFIG_USB_AT91=m
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++# CONFIG_USB_GADGET_DUALSPEED is not set
++CONFIG_USB_ZERO=m
++CONFIG_USB_ETH=m
++CONFIG_USB_ETH_RNDIS=y
++CONFIG_USB_GADGETFS=m
++CONFIG_USB_FILE_STORAGE=m
++CONFIG_USB_FILE_STORAGE_TEST=y
++CONFIG_USB_G_SERIAL=m
++# CONFIG_USB_MIDI_GADGET is not set
++
++#
++# MMC/SD Card support
++#
++# CONFIG_MMC is not set
++
++#
++# Real Time Clock
++#
++CONFIG_RTC_LIB=y
++# CONFIG_RTC_CLASS is not set
++
++#
++# File systems
++#
++# CONFIG_EXT2_FS is not set
++# CONFIG_EXT3_FS is not set
++# CONFIG_EXT4DEV_FS is not set
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_GFS2_FS is not set
++# CONFIG_OCFS2_FS is not set
++CONFIG_MINIX_FS=y
++# CONFIG_ROMFS_FS is not set
++# CONFIG_INOTIFY is not set
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# CONFIG_FUSE_FS is not set
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++CONFIG_FAT_FS=m
++CONFIG_MSDOS_FS=m
++CONFIG_VFAT_FS=m
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_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=y
++CONFIG_YAFFS_YAFFS1=y
++# CONFIG_YAFFS_DOES_ECC is not set
++CONFIG_YAFFS_YAFFS2=y
++CONFIG_YAFFS_AUTO_YAFFS2=y
++# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
++CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
++# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
++# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
++CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_SUMMARY is not set
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++CONFIG_CRAMFS=y
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++# CONFIG_NFS_V3_ACL is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
++# CONFIG_NFSD is not set
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++# CONFIG_CIFS is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++CONFIG_NLS=m
++CONFIG_NLS_DEFAULT="iso8859-1"
++CONFIG_NLS_CODEPAGE_437=m
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++CONFIG_NLS_CODEPAGE_850=m
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++CONFIG_NLS_ISO8859_1=m
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++# CONFIG_NLS_UTF8 is not set
++
++#
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_MUST_CHECK=y
++# CONFIG_MAGIC_SYSRQ is not set
++# CONFIG_UNUSED_SYMBOLS is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_HEADERS_CHECK is not set
++# CONFIG_DEBUG_KERNEL is not set
++CONFIG_LOG_BUF_SHIFT=14
++CONFIG_DEBUG_BUGVERBOSE=y
++CONFIG_FRAME_POINTER=y
++# CONFIG_DEBUG_USER is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++CONFIG_CRYPTO=y
++CONFIG_CRYPTO_ALGAPI=m
++CONFIG_CRYPTO_BLKCIPHER=m
++CONFIG_CRYPTO_MANAGER=m
++# CONFIG_CRYPTO_HMAC is not set
++# CONFIG_CRYPTO_XCBC is not set
++# CONFIG_CRYPTO_NULL is not set
++# CONFIG_CRYPTO_MD4 is not set
++# CONFIG_CRYPTO_MD5 is not set
++# CONFIG_CRYPTO_SHA1 is not set
++# CONFIG_CRYPTO_SHA256 is not set
++# CONFIG_CRYPTO_SHA512 is not set
++# CONFIG_CRYPTO_WP512 is not set
++# CONFIG_CRYPTO_TGR192 is not set
++# CONFIG_CRYPTO_GF128MUL is not set
++CONFIG_CRYPTO_ECB=m
++CONFIG_CRYPTO_CBC=m
++CONFIG_CRYPTO_PCBC=m
++# CONFIG_CRYPTO_LRW is not set
++# CONFIG_CRYPTO_DES is not set
++# CONFIG_CRYPTO_FCRYPT is not set
++# CONFIG_CRYPTO_BLOWFISH is not set
++# CONFIG_CRYPTO_TWOFISH is not set
++# CONFIG_CRYPTO_SERPENT is not set
++CONFIG_CRYPTO_AES=m
++# CONFIG_CRYPTO_CAST5 is not set
++# CONFIG_CRYPTO_CAST6 is not set
++# CONFIG_CRYPTO_TEA is not set
++CONFIG_CRYPTO_ARC4=m
++# CONFIG_CRYPTO_KHAZAD is not set
++# CONFIG_CRYPTO_ANUBIS is not set
++# CONFIG_CRYPTO_DEFLATE is not set
++CONFIG_CRYPTO_MICHAEL_MIC=m
++# CONFIG_CRYPTO_CRC32C is not set
++# CONFIG_CRYPTO_CAMELLIA is not set
++# CONFIG_CRYPTO_TEST is not set
++
++#
++# Hardware crypto devices
++#
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=y
++# CONFIG_LIBCRC32C is not set
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
+diff --git a/arch/arm/configs/kafa_defconfig b/arch/arm/configs/kafa_defconfig
+index a0f48d5..ae51a40 100644
+--- a/arch/arm/configs/kafa_defconfig
++++ b/arch/arm/configs/kafa_defconfig
+@@ -587,14 +587,14 @@ CONFIG_I2C_CHARDEV=y
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=y
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=y
++CONFIG_I2C_GPIO=y
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+ # CONFIG_I2C_PCA_ISA is not set
+diff --git a/arch/arm/configs/kb9202_defconfig b/arch/arm/configs/kb9202_defconfig
+index c16537d..dad203e 100644
+--- a/arch/arm/configs/kb9202_defconfig
++++ b/arch/arm/configs/kb9202_defconfig
+@@ -1,19 +1,31 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.13-rc2
+-# Sun Aug 14 19:26:59 2005
++# Linux kernel version: 2.6.21
++# Mon May 7 11:43:14 2007
+ #
+ CONFIG_ARM=y
++CONFIG_SYS_SUPPORTS_APM_EMULATION=y
++CONFIG_GENERIC_GPIO=y
++# CONFIG_GENERIC_TIME is not set
+ CONFIG_MMU=y
+-CONFIG_UID16=y
++# CONFIG_NO_IOPORT is not set
++CONFIG_GENERIC_HARDIRQS=y
++CONFIG_TRACE_IRQFLAGS_SUPPORT=y
++CONFIG_HARDIRQS_SW_RESEND=y
++CONFIG_GENERIC_IRQ_PROBE=y
+ CONFIG_RWSEM_GENERIC_SPINLOCK=y
++# CONFIG_ARCH_HAS_ILOG2_U32 is not set
++# CONFIG_ARCH_HAS_ILOG2_U64 is not set
++CONFIG_GENERIC_HWEIGHT=y
+ CONFIG_GENERIC_CALIBRATE_DELAY=y
++CONFIG_ZONE_DMA=y
++CONFIG_VECTORS_BASE=0xffff0000
++CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+ #
+ # Code maturity level options
+ #
+-# CONFIG_EXPERIMENTAL is not set
+-CONFIG_CLEAN_COMPILE=y
++CONFIG_EXPERIMENTAL=y
+ CONFIG_BROKEN_ON_SMP=y
+ CONFIG_INIT_ENV_ARG_LIMIT=32
+
+@@ -21,54 +33,103 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
+ # General setup
+ #
+ CONFIG_LOCALVERSION=""
+-# CONFIG_SWAP is not set
+-# CONFIG_SYSVIPC is not set
+-# CONFIG_BSD_PROCESS_ACCT is not set
++CONFIG_LOCALVERSION_AUTO=y
++CONFIG_SWAP=y
++CONFIG_SYSVIPC=y
++# CONFIG_IPC_NS is not set
++CONFIG_SYSVIPC_SYSCTL=y
++CONFIG_POSIX_MQUEUE=y
++CONFIG_BSD_PROCESS_ACCT=y
++# CONFIG_BSD_PROCESS_ACCT_V3 is not set
++# CONFIG_TASKSTATS is not set
++# CONFIG_UTS_NS is not set
++CONFIG_AUDIT=y
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_SYSFS_DEPRECATED=y
++# CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+ CONFIG_SYSCTL=y
+-# CONFIG_AUDIT is not set
+-CONFIG_HOTPLUG=y
+-# CONFIG_KOBJECT_UEVENT is not set
+-# CONFIG_IKCONFIG is not set
+ # CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
+ CONFIG_KALLSYMS=y
+ # CONFIG_KALLSYMS_ALL is not set
+-# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_KALLSYMS_EXTRA_PASS=y
++CONFIG_HOTPLUG=y
+ CONFIG_PRINTK=y
+ CONFIG_BUG=y
++CONFIG_ELF_CORE=y
+ CONFIG_BASE_FULL=y
+ CONFIG_FUTEX=y
+ CONFIG_EPOLL=y
+-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+ CONFIG_SHMEM=y
+-CONFIG_CC_ALIGN_FUNCTIONS=0
+-CONFIG_CC_ALIGN_LABELS=0
+-CONFIG_CC_ALIGN_LOOPS=0
+-CONFIG_CC_ALIGN_JUMPS=0
++CONFIG_SLAB=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_RT_MUTEXES=y
+ # CONFIG_TINY_SHMEM is not set
+ CONFIG_BASE_SMALL=0
++# CONFIG_SLOB is not set
+
+ #
+ # Loadable module support
+ #
+ CONFIG_MODULES=y
+ CONFIG_MODULE_UNLOAD=y
+-CONFIG_OBSOLETE_MODPARM=y
+-# CONFIG_MODULE_SRCVERSION_ALL is not set
++# CONFIG_MODULE_FORCE_UNLOAD is not set
++CONFIG_MODVERSIONS=y
++CONFIG_MODULE_SRCVERSION_ALL=y
+ CONFIG_KMOD=y
+
+ #
++# Block layer
++#
++CONFIG_BLOCK=y
++CONFIG_LBD=y
++# CONFIG_BLK_DEV_IO_TRACE is not set
++# CONFIG_LSF is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++CONFIG_IOSCHED_AS=y
++CONFIG_IOSCHED_DEADLINE=y
++CONFIG_IOSCHED_CFQ=y
++# CONFIG_DEFAULT_AS is not set
++# CONFIG_DEFAULT_DEADLINE 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=y
+ # CONFIG_ARCH_CLPS7500 is not set
+ # CONFIG_ARCH_CLPS711X is not set
+ # CONFIG_ARCH_CO285 is not set
+ # CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
+ # CONFIG_ARCH_FOOTBRIDGE is not set
+-# CONFIG_ARCH_INTEGRATOR is not set
+-# CONFIG_ARCH_IOP3XX is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IOP13XX is not set
+ # CONFIG_ARCH_IXP4XX is not set
+ # CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP23XX is not set
+ # CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_PNX4008 is not set
+ # CONFIG_ARCH_PXA is not set
+ # CONFIG_ARCH_RPC is not set
+ # CONFIG_ARCH_SA1100 is not set
+@@ -76,34 +137,52 @@ CONFIG_KMOD=y
+ # CONFIG_ARCH_SHARK is not set
+ # CONFIG_ARCH_LH7A40X is not set
+ # CONFIG_ARCH_OMAP is not set
+-# CONFIG_ARCH_VERSATILE is not set
+-# CONFIG_ARCH_IMX is not set
+-# CONFIG_ARCH_H720X is not set
+-# CONFIG_ARCH_AAEC2000 is not set
+-CONFIG_ARCH_AT91=y
++
++#
++# Atmel AT91 System-on-Chip
++#
+ CONFIG_ARCH_AT91RM9200=y
++# CONFIG_ARCH_AT91SAM9260 is not set
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
+
+ #
+-# AT91RM9200 Implementations
++# AT91RM9200 Board Type
+ #
++# CONFIG_MACH_ONEARM is not set
+ # CONFIG_ARCH_AT91RM9200DK is not set
+ # CONFIG_MACH_AT91RM9200EK is not set
+ # CONFIG_MACH_CSB337 is not set
+ # CONFIG_MACH_CSB637 is not set
+ # CONFIG_MACH_CARMEVA is not set
++# CONFIG_MACH_ATEB9200 is not set
+ CONFIG_MACH_KB9200=y
++# CONFIG_MACH_KAFA is not set
++# CONFIG_MACH_CHUB is not set
++
++#
++# AT91 Board Options
++#
++
++#
++# AT91 Feature Selections
++#
++# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++# CONFIG_ATMEL_TCLIB is not set
+
+ #
+ # Processor Type
+ #
+ CONFIG_CPU_32=y
+ CONFIG_CPU_ARM920T=y
+-CONFIG_CPU_32v4=y
++CONFIG_CPU_32v4T=y
+ CONFIG_CPU_ABRT_EV4T=y
+ CONFIG_CPU_CACHE_V4WT=y
+ CONFIG_CPU_CACHE_VIVT=y
+ CONFIG_CPU_COPY_V4WB=y
+ CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
+
+ #
+ # Processor Features
+@@ -112,24 +191,44 @@ CONFIG_ARM_THUMB=y
+ # CONFIG_CPU_ICACHE_DISABLE is not set
+ # CONFIG_CPU_DCACHE_DISABLE is not set
+ # CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_OUTER_CACHE is not set
+
+ #
+ # Bus support
+ #
+-CONFIG_ISA_DMA_API=y
+
+ #
+ # PCCARD (PCMCIA/CardBus) support
+ #
+-# CONFIG_PCCARD is not set
++CONFIG_PCCARD=m
++# CONFIG_PCMCIA_DEBUG is not set
++CONFIG_PCMCIA=m
++CONFIG_PCMCIA_LOAD_CIS=y
++CONFIG_PCMCIA_IOCTL=y
++
++#
++# PC-card bridges
++#
++# CONFIG_AT91_CF is not set
+
+ #
+ # Kernel Features
+ #
++# CONFIG_PREEMPT is not set
+ # CONFIG_NO_IDLE_HZ is not set
++CONFIG_HZ=100
++# CONFIG_AEABI is not set
+ # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++CONFIG_SELECT_MEMORY_MODEL=y
++CONFIG_FLATMEM_MANUAL=y
++# CONFIG_DISCONTIGMEM_MANUAL is not set
++# CONFIG_SPARSEMEM_MANUAL is not set
+ CONFIG_FLATMEM=y
+ CONFIG_FLAT_NODE_MEM_MAP=y
++# CONFIG_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
+ # CONFIG_LEDS is not set
+ CONFIG_ALIGNMENT_TRAP=y
+
+@@ -138,8 +237,10 @@ CONFIG_ALIGNMENT_TRAP=y
+ #
+ CONFIG_ZBOOT_ROM_TEXT=0x10000000
+ CONFIG_ZBOOT_ROM_BSS=0x20040000
+-CONFIG_ZBOOT_ROM=y
+-CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933"
++# CONFIG_ZBOOT_ROM is not set
++CONFIG_CMDLINE="noinitrd root=/dev/mtdblock0 rootfstype=jffs2 mem=64M"
++# CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
+
+ #
+ # Floating point emulation
+@@ -150,6 +251,7 @@ CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/ram rw initrd=0x20210000,654933"
+ #
+ CONFIG_FPE_NWFPE=y
+ # CONFIG_FPE_NWFPE_XP is not set
++# CONFIG_FPE_FASTFPE is not set
+
+ #
+ # Userspace binary formats
+@@ -165,6 +267,96 @@ CONFIG_BINFMT_MISC=y
+ # CONFIG_PM is not set
+
+ #
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++# CONFIG_NETDEBUG is not set
++CONFIG_PACKET=y
++# CONFIG_PACKET_MMAP is not set
++CONFIG_UNIX=y
++# CONFIG_NET_KEY is not set
++CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++CONFIG_IP_PNP=y
++# CONFIG_IP_PNP_DHCP is not set
++# CONFIG_IP_PNP_BOOTP is not set
++# CONFIG_IP_PNP_RARP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_IP_MROUTE is not set
++# CONFIG_ARPD is not set
++# CONFIG_SYN_COOKIES is not set
++# CONFIG_INET_AH is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_XFRM_TUNNEL is not set
++# CONFIG_INET_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
++# CONFIG_INET_DIAG is not set
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_CUBIC=y
++CONFIG_DEFAULT_TCP_CONG="cubic"
++# CONFIG_TCP_MD5SIG is not set
++# CONFIG_IPV6 is not set
++# CONFIG_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL is not set
++# CONFIG_NETWORK_SECMARK is not set
++# CONFIG_NETFILTER is not set
++
++#
++# DCCP Configuration (EXPERIMENTAL)
++#
++# CONFIG_IP_DCCP is not set
++
++#
++# SCTP Configuration (EXPERIMENTAL)
++#
++CONFIG_IP_SCTP=m
++# CONFIG_SCTP_DBG_MSG is not set
++# CONFIG_SCTP_DBG_OBJCNT is not set
++# CONFIG_SCTP_HMAC_NONE is not set
++# CONFIG_SCTP_HMAC_SHA1 is not set
++CONFIG_SCTP_HMAC_MD5=y
++
++#
++# TIPC Configuration (EXPERIMENTAL)
++#
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++# CONFIG_BRIDGE is not set
++# CONFIG_VLAN_8021Q is not set
++# CONFIG_DECNET is not set
++# CONFIG_LLC2 is not set
++# CONFIG_IPX is not set
++# CONFIG_ATALK is not set
++# CONFIG_X25 is not set
++# CONFIG_LAPB is not set
++# CONFIG_ECONET is not set
++# CONFIG_WAN_ROUTER is not set
++
++#
++# QoS and/or fair queueing
++#
++# CONFIG_NET_SCHED is not set
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_IEEE80211 is not set
++
++#
+ # Device Drivers
+ #
+
+@@ -173,13 +365,95 @@ CONFIG_BINFMT_MISC=y
+ #
+ CONFIG_STANDALONE=y
+ CONFIG_PREVENT_FIRMWARE_BUILD=y
+-# CONFIG_FW_LOADER is not set
+-CONFIG_DEBUG_DRIVER=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 is not set
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++CONFIG_MTD_CONCAT=y
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++CONFIG_MTD_CMDLINE_PARTS=y
++# CONFIG_MTD_AFS_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLKDEVS=y
++CONFIG_MTD_BLOCK=y
++# CONFIG_FTL is not set
++# CONFIG_NFTL is not set
++# CONFIG_INFTL is not set
++# CONFIG_RFD_FTL is not set
++# CONFIG_SSFDC is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++# CONFIG_MTD_CFI 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=y
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++# CONFIG_MTD_SLRAM is not set
++# CONFIG_MTD_PHRAM is not set
++# CONFIG_MTD_MTDRAM is not set
++# CONFIG_MTD_BLOCK2MTD is not set
++
++#
++# Disk-On-Chip Device Drivers
++#
++# CONFIG_MTD_DOC2000 is not set
++# CONFIG_MTD_DOC2001 is not set
++# CONFIG_MTD_DOC2001PLUS is not set
++
++#
++# NAND Flash Device Drivers
++#
++CONFIG_MTD_NAND=y
++# CONFIG_MTD_NAND_VERIFY_WRITE is not set
++# CONFIG_MTD_NAND_ECC_SMC is not set
++CONFIG_MTD_NAND_IDS=y
++# CONFIG_MTD_NAND_DISKONCHIP is not set
++CONFIG_MTD_NAND_AT91=y
++# CONFIG_MTD_NAND_NANDSIM is not set
++
++#
++# OneNAND Flash Device Drivers
++#
++# CONFIG_MTD_ONENAND is not set
+
+ #
+ # Parallel port support
+@@ -189,6 +463,7 @@ CONFIG_DEBUG_DRIVER=y
+ #
+ # Plug and Play support
+ #
++# CONFIG_PNPACPI is not set
+
+ #
+ # Block devices
+@@ -196,28 +471,27 @@ CONFIG_DEBUG_DRIVER=y
+ # CONFIG_BLK_DEV_COW_COMMON is not set
+ CONFIG_BLK_DEV_LOOP=y
+ # CONFIG_BLK_DEV_CRYPTOLOOP is not set
+-CONFIG_BLK_DEV_NBD=y
++# CONFIG_BLK_DEV_NBD is not set
+ # CONFIG_BLK_DEV_UB is not set
+ CONFIG_BLK_DEV_RAM=y
+ CONFIG_BLK_DEV_RAM_COUNT=16
+-CONFIG_BLK_DEV_RAM_SIZE=4096
+-CONFIG_BLK_DEV_INITRD=y
+-CONFIG_INITRAMFS_SOURCE=""
++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
+
+ #
+-# IO Schedulers
++# ATA/ATAPI/MFM/RLL support
+ #
+-CONFIG_IOSCHED_NOOP=y
+-CONFIG_IOSCHED_AS=y
+-CONFIG_IOSCHED_DEADLINE=y
+-CONFIG_IOSCHED_CFQ=y
+-# 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
+
+ #
+@@ -233,97 +507,61 @@ CONFIG_CHR_DEV_SG=y
+ #
+ # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+ #
+-# CONFIG_SCSI_MULTI_LUN is not set
+-# CONFIG_SCSI_CONSTANTS is not set
+-# CONFIG_SCSI_LOGGING is not set
++CONFIG_SCSI_MULTI_LUN=y
++CONFIG_SCSI_CONSTANTS=y
++CONFIG_SCSI_LOGGING=y
++# CONFIG_SCSI_SCAN_ASYNC is not set
+
+ #
+-# SCSI Transport Attributes
++# SCSI Transports
+ #
+-# CONFIG_SCSI_SPI_ATTRS is not set
++CONFIG_SCSI_SPI_ATTRS=m
+ # CONFIG_SCSI_FC_ATTRS is not set
+ # CONFIG_SCSI_ISCSI_ATTRS is not set
++# CONFIG_SCSI_SAS_ATTRS is not set
++# CONFIG_SCSI_SAS_LIBSAS is not set
+
+ #
+ # SCSI low-level drivers
+ #
+-# CONFIG_SCSI_SATA is not set
++# CONFIG_ISCSI_TCP is not set
+ # CONFIG_SCSI_DEBUG is not set
+
+ #
+-# Multi-device support (RAID and LVM)
++# PCMCIA SCSI adapter support
+ #
+-# CONFIG_MD is not set
++# 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
+
+ #
+-# Fusion MPT device support
++# Serial ATA (prod) and Parallel ATA (experimental) drivers
+ #
+-# CONFIG_FUSION is not set
++# CONFIG_ATA is not set
+
+ #
+-# IEEE 1394 (FireWire) support
++# Multi-device support (RAID and LVM)
+ #
++# CONFIG_MD is not set
+
+ #
+-# I2O device support
++# Fusion MPT device support
+ #
++# CONFIG_FUSION is not set
+
+ #
+-# Networking support
++# IEEE 1394 (FireWire) support
+ #
+-CONFIG_NET=y
+
+ #
+-# Networking options
+-#
+-CONFIG_PACKET=y
+-# CONFIG_PACKET_MMAP is not set
+-CONFIG_UNIX=y
+-# CONFIG_NET_KEY is not set
+-CONFIG_INET=y
+-CONFIG_IP_MULTICAST=y
+-# CONFIG_IP_ADVANCED_ROUTER is not set
+-CONFIG_IP_FIB_HASH=y
+-CONFIG_IP_PNP=y
+-CONFIG_IP_PNP_DHCP=y
+-# CONFIG_IP_PNP_BOOTP 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_SYN_COOKIES is not set
+-# CONFIG_INET_AH is not set
+-# CONFIG_INET_ESP is not set
+-# CONFIG_INET_IPCOMP is not set
+-# CONFIG_INET_TUNNEL is not set
+-# CONFIG_IP_TCPDIAG is not set
+-# CONFIG_IP_TCPDIAG_IPV6 is not set
+-# CONFIG_TCP_CONG_ADVANCED is not set
+-CONFIG_TCP_CONG_BIC=y
+-# CONFIG_IPV6 is not set
+-# CONFIG_NETFILTER is not set
+-# 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
+-
+-#
+-# QoS and/or fair queueing
++# I2O device support
+ #
+-# CONFIG_NET_SCHED is not set
+-# CONFIG_NET_CLS_ROUTE is not set
+
+ #
+-# Network testing
++# Network device support
+ #
+-# CONFIG_NET_PKTGEN is not set
+-# CONFIG_NETPOLL is not set
+-# CONFIG_NET_POLL_CONTROLLER is not set
+-# CONFIG_HAMRADIO is not set
+-# CONFIG_IRDA is not set
+-# CONFIG_BT is not set
+ CONFIG_NETDEVICES=y
+ # CONFIG_DUMMY is not set
+ # CONFIG_BONDING is not set
+@@ -331,6 +569,11 @@ CONFIG_NETDEVICES=y
+ # CONFIG_TUN is not set
+
+ #
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
+ # Ethernet (10 or 100Mbit)
+ #
+ CONFIG_NET_ETHERNET=y
+@@ -357,11 +600,20 @@ CONFIG_ARM_AT91_ETHER=y
+ # CONFIG_NET_RADIO is not set
+
+ #
++# PCMCIA network device support
++#
++# CONFIG_NET_PCMCIA is not set
++
++#
+ # Wan interfaces
+ #
+ # CONFIG_WAN is not set
+ # CONFIG_PPP is not set
+ # CONFIG_SLIP is not set
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
+
+ #
+ # ISDN subsystem
+@@ -372,6 +624,7 @@ CONFIG_ARM_AT91_ETHER=y
+ # Input device support
+ #
+ CONFIG_INPUT=y
++# CONFIG_INPUT_FF_MEMLESS is not set
+
+ #
+ # Userland interfaces
+@@ -397,9 +650,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+ #
+ # Hardware I/O ports
+ #
+-CONFIG_SERIO=y
+-# CONFIG_SERIO_SERPORT is not set
+-# CONFIG_SERIO_RAW is not set
++# CONFIG_SERIO is not set
+ # CONFIG_GAMEPORT is not set
+
+ #
+@@ -408,6 +659,7 @@ CONFIG_SERIO=y
+ CONFIG_VT=y
+ CONFIG_VT_CONSOLE=y
+ CONFIG_HW_CONSOLE=y
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
+ # CONFIG_SERIAL_NONSTANDARD is not set
+
+ #
+@@ -420,11 +672,11 @@ CONFIG_HW_CONSOLE=y
+ #
+ CONFIG_SERIAL_ATMEL=y
+ CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
+ CONFIG_SERIAL_CORE=y
+ CONFIG_SERIAL_CORE_CONSOLE=y
+ CONFIG_UNIX98_PTYS=y
+-CONFIG_LEGACY_PTYS=y
+-CONFIG_LEGACY_PTY_COUNT=256
++# CONFIG_LEGACY_PTYS is not set
+
+ #
+ # IPMI
+@@ -435,21 +687,23 @@ CONFIG_LEGACY_PTY_COUNT=256
+ # Watchdog Cards
+ #
+ # CONFIG_WATCHDOG is not set
++# CONFIG_HW_RANDOM is not set
+ # CONFIG_NVRAM is not set
+-# CONFIG_RTC is not set
+-# CONFIG_AT91RM9200_RTC is not set
+ # CONFIG_DTLK is not set
+ # CONFIG_R3964 is not set
+
+ #
+-# Ftape, the floppy tape device driver
++# PCMCIA character devices
+ #
++# CONFIG_SYNCLINK_CS is not set
++# CONFIG_CARDMAN_4000 is not set
++# CONFIG_CARDMAN_4040 is not set
+ # CONFIG_RAW_DRIVER is not set
+
+ #
+ # TPM devices
+ #
+-# CONFIG_AT91_SPI is not set
++# CONFIG_TCG_TPM is not set
+
+ #
+ # I2C support
+@@ -457,10 +711,50 @@ CONFIG_LEGACY_PTY_COUNT=256
+ # CONFIG_I2C is not set
+
+ #
++# SPI support
++#
++# CONFIG_SPI is not set
++# CONFIG_SPI_MASTER is not set
++
++#
++# Dallas's 1-wire bus
++#
++# CONFIG_W1 is not set
++
++#
++# Hardware Monitoring support
++#
++CONFIG_HWMON=y
++# CONFIG_HWMON_VID is not set
++# CONFIG_SENSORS_ABITUGURU is not set
++# CONFIG_SENSORS_F71805F is not set
++# CONFIG_SENSORS_PC87427 is not set
++# CONFIG_SENSORS_VT1211 is not set
++CONFIG_HWMON_DEBUG_CHIP=y
++
++#
+ # Misc devices
+ #
+
+ #
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
++
++#
++# LED devices
++#
++# CONFIG_NEW_LEDS is not set
++
++#
++# LED drivers
++#
++
++#
++# LED Triggers
++#
++
++#
+ # Multimedia devices
+ #
+ # CONFIG_VIDEO_DEV is not set
+@@ -469,17 +763,57 @@ CONFIG_LEGACY_PTY_COUNT=256
+ # Digital Video Broadcasting Devices
+ #
+ # CONFIG_DVB is not set
++# CONFIG_USB_DABUSB is not set
+
+ #
+ # Graphics support
+ #
+-# CONFIG_FB is not set
++CONFIG_BACKLIGHT_LCD_SUPPORT=y
++CONFIG_BACKLIGHT_CLASS_DEVICE=y
++# CONFIG_LCD_CLASS_DEVICE is not set
++CONFIG_BACKLIGHT_KB920x=y
++CONFIG_FB=y
++# CONFIG_FIRMWARE_EDID is not set
++# CONFIG_FB_DDC is not set
++CONFIG_FB_CFB_FILLRECT=y
++CONFIG_FB_CFB_COPYAREA=y
++CONFIG_FB_CFB_IMAGEBLIT=y
++# CONFIG_FB_SVGALIB is not set
++# CONFIG_FB_MACMODES is not set
++# CONFIG_FB_BACKLIGHT is not set
++CONFIG_FB_MODE_HELPERS=y
++CONFIG_FB_TILEBLITTING=y
++
++#
++# Frame buffer hardware drivers
++#
++CONFIG_FB_S1D15605=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=y
++# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
++CONFIG_FONTS=y
++# CONFIG_FONT_8x8 is not set
++# CONFIG_FONT_8x16 is not set
++# CONFIG_FONT_6x11 is not set
++# CONFIG_FONT_7x14 is not set
++# CONFIG_FONT_PEARL_8x8 is not set
++# CONFIG_FONT_ACORN_8x8 is not set
++CONFIG_FONT_MINI_4x6=y
++# CONFIG_FONT_SUN8x16 is not set
++# CONFIG_FONT_SUN12x22 is not set
++# CONFIG_FONT_10x18 is not set
++
++#
++# Logo configuration
++#
++# CONFIG_LOGO is not set
+
+ #
+ # Sound
+@@ -487,82 +821,98 @@ CONFIG_DUMMY_CONSOLE=y
+ # CONFIG_SOUND is not set
+
+ #
++# HID Devices
++#
++CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
++
++#
+ # USB support
+ #
+ CONFIG_USB_ARCH_HAS_HCD=y
+ CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
+ CONFIG_USB=y
+-CONFIG_USB_DEBUG=y
++# CONFIG_USB_DEBUG is not set
+
+ #
+ # Miscellaneous USB options
+ #
+ CONFIG_USB_DEVICEFS=y
++# CONFIG_USB_DYNAMIC_MINORS is not set
++# CONFIG_USB_OTG is not set
+
+ #
+ # USB Host Controller Drivers
+ #
+ # CONFIG_USB_ISP116X_HCD is not set
+ CONFIG_USB_OHCI_HCD=y
+-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+ # CONFIG_USB_SL811_HCD is not set
+
+ #
+ # USB Device Class drivers
+ #
+-# CONFIG_USB_BLUETOOTH_TTY is not set
+ # CONFIG_USB_ACM is not set
+ # CONFIG_USB_PRINTER is not set
+
+ #
+-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
++# 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=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=y
+
+ #
+ # USB Input Devices
+ #
+-# CONFIG_USB_HID is not set
+-
+-#
+-# USB HID Boot Protocol drivers
+-#
+-# CONFIG_USB_KBD is not set
+-# CONFIG_USB_MOUSE is not set
++CONFIG_USB_HID=y
++# CONFIG_USB_HIDINPUT_POWERBOOK is not set
++# CONFIG_HID_FF is not set
++# CONFIG_USB_HIDDEV is not set
+ # CONFIG_USB_AIPTEK is not set
+ # CONFIG_USB_WACOM is not set
+ # CONFIG_USB_ACECAD is not set
+ # CONFIG_USB_KBTAB is not set
+ # CONFIG_USB_POWERMATE is not set
+-# CONFIG_USB_MTOUCH is not set
+-# CONFIG_USB_ITMTOUCH is not set
+-# CONFIG_USB_EGALAX is not set
++# CONFIG_USB_TOUCHSCREEN is not set
++# CONFIG_USB_YEALINK is not set
+ # CONFIG_USB_XPAD is not set
+ # CONFIG_USB_ATI_REMOTE is not set
++# CONFIG_USB_ATI_REMOTE2 is not set
++# CONFIG_USB_KEYSPAN_REMOTE is not set
++# CONFIG_USB_APPLETOUCH is not set
++# CONFIG_USB_GTCO is not set
+
+ #
+ # USB Imaging devices
+ #
++# CONFIG_USB_MDC800 is not set
+ # CONFIG_USB_MICROTEK is not set
+
+ #
+-# USB 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_MII is not set
+ # CONFIG_USB_USBNET is not set
+ # CONFIG_USB_MON is not set
+
+@@ -580,12 +930,23 @@ CONFIG_USB_STORAGE_DEBUG=y
+ #
+ # CONFIG_USB_EMI62 is not set
+ # CONFIG_USB_EMI26 is not set
++# CONFIG_USB_ADUTUX is not set
++# CONFIG_USB_AUERSWALD is not set
++# CONFIG_USB_RIO500 is not set
++# CONFIG_USB_LEGOTOWER is not set
+ # CONFIG_USB_LCD is not set
++# CONFIG_USB_BERRY_CHARGE is not set
+ # CONFIG_USB_LED is not set
++# CONFIG_USB_CYPRESS_CY7C63 is not set
+ # CONFIG_USB_CYTHERM is not set
+-# CONFIG_USB_PHIDGETKIT is not set
+-# CONFIG_USB_PHIDGETSERVO is not set
++# CONFIG_USB_PHIDGET is not set
+ # CONFIG_USB_IDMOUSE is not set
++# CONFIG_USB_FTDI_ELAN is not set
++# CONFIG_USB_APPLEDISPLAY is not set
++# CONFIG_USB_LD is not set
++# CONFIG_USB_TRANCEVIBRATOR is not set
++# CONFIG_USB_IOWARRIOR is not set
++# CONFIG_USB_TEST is not set
+
+ #
+ # USB DSL modem support
+@@ -599,36 +960,51 @@ CONFIG_USB_STORAGE_DEBUG=y
+ #
+ # MMC/SD Card support
+ #
+-# CONFIG_MMC is not set
++CONFIG_MMC=y
++# CONFIG_MMC_DEBUG is not set
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_AT91=y
++
++#
++# Real Time Clock
++#
++CONFIG_RTC_LIB=y
++# CONFIG_RTC_CLASS is not set
+
+ #
+ # File systems
+ #
+ CONFIG_EXT2_FS=y
+ CONFIG_EXT2_FS_XATTR=y
+-# CONFIG_EXT2_FS_POSIX_ACL is not set
+-# CONFIG_EXT2_FS_SECURITY is not set
++CONFIG_EXT2_FS_POSIX_ACL=y
++CONFIG_EXT2_FS_SECURITY=y
+ # CONFIG_EXT2_FS_XIP is not set
+ CONFIG_EXT3_FS=y
+ CONFIG_EXT3_FS_XATTR=y
+-# CONFIG_EXT3_FS_POSIX_ACL is not set
+-# CONFIG_EXT3_FS_SECURITY is not set
++CONFIG_EXT3_FS_POSIX_ACL=y
++CONFIG_EXT3_FS_SECURITY=y
++# CONFIG_EXT4DEV_FS is not set
+ CONFIG_JBD=y
+ # CONFIG_JBD_DEBUG is not set
+ CONFIG_FS_MBCACHE=y
+ # CONFIG_REISERFS_FS is not set
+ # CONFIG_JFS_FS is not set
+-
+-#
+-# XFS support
+-#
++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_QUOTA is not set
++CONFIG_INOTIFY=y
++CONFIG_INOTIFY_USER=y
++CONFIG_QUOTA=y
++# CONFIG_QFMT_V1 is not set
++CONFIG_QFMT_V2=y
++CONFIG_QUOTACTL=y
+ CONFIG_DNOTIFY=y
+-CONFIG_AUTOFS_FS=y
++# CONFIG_AUTOFS_FS is not set
+ CONFIG_AUTOFS4_FS=y
++# CONFIG_FUSE_FS is not set
+
+ #
+ # CD-ROM/DVD Filesystems
+@@ -643,25 +1019,40 @@ CONFIG_FAT_FS=y
+ CONFIG_MSDOS_FS=y
+ CONFIG_VFAT_FS=y
+ CONFIG_FAT_DEFAULT_CODEPAGE=437
+-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+ # CONFIG_NTFS_FS is not set
+
+ #
+ # Pseudo filesystems
+ #
+ CONFIG_PROC_FS=y
++CONFIG_PROC_SYSCTL=y
+ CONFIG_SYSFS=y
+-CONFIG_DEVPTS_FS_XATTR=y
+-# CONFIG_DEVPTS_FS_SECURITY is not set
+ CONFIG_TMPFS=y
+-# CONFIG_TMPFS_XATTR is not set
++# CONFIG_TMPFS_POSIX_ACL is not set
+ # CONFIG_HUGETLB_PAGE is not set
+ CONFIG_RAMFS=y
++CONFIG_CONFIGFS_FS=y
+
+ #
+ # Miscellaneous filesystems
+ #
++# CONFIG_ADFS_FS is not set
++# CONFIG_AFFS_FS is not set
++# CONFIG_HFS_FS is not set
+ # CONFIG_HFSPLUS_FS is not set
++# CONFIG_BEFS_FS is not set
++# CONFIG_BFS_FS is not set
++# CONFIG_EFS_FS is not set
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_SUMMARY 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
+@@ -675,16 +1066,23 @@ CONFIG_RAMFS=y
+ 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
+@@ -734,26 +1132,51 @@ CONFIG_NLS_ASCII=y
+ # CONFIG_NLS_ISO8859_15 is not set
+ # CONFIG_NLS_KOI8_R is not set
+ # CONFIG_NLS_KOI8_U is not set
+-# CONFIG_NLS_UTF8 is not set
++CONFIG_NLS_UTF8=y
++
++#
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
+
+ #
+ # Kernel hacking
+ #
+ # CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_MUST_CHECK=y
++CONFIG_MAGIC_SYSRQ=y
++# CONFIG_UNUSED_SYMBOLS is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_HEADERS_CHECK is not set
+ CONFIG_DEBUG_KERNEL=y
+-# CONFIG_MAGIC_SYSRQ is not set
+-CONFIG_LOG_BUF_SHIFT=14
++# CONFIG_DEBUG_SHIRQ is not set
++CONFIG_LOG_BUF_SHIFT=17
++CONFIG_DETECT_SOFTLOCKUP=y
+ # CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
+ # CONFIG_DEBUG_SLAB is not set
+-# CONFIG_DEBUG_SPINLOCK is not set
+-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_RT_MUTEXES is not set
++# CONFIG_RT_MUTEX_TESTER is not set
++CONFIG_DEBUG_SPINLOCK=y
++# CONFIG_DEBUG_MUTEXES is not set
++CONFIG_DEBUG_SPINLOCK_SLEEP=y
++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+ # CONFIG_DEBUG_KOBJECT is not set
+ CONFIG_DEBUG_BUGVERBOSE=y
+ # CONFIG_DEBUG_INFO is not set
+-# CONFIG_DEBUG_FS is not set
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_LIST is not set
+ CONFIG_FRAME_POINTER=y
+-CONFIG_DEBUG_USER=y
+-CONFIG_DEBUG_ERRORS=y
++CONFIG_FORCED_INLINING=y
++# CONFIG_RCU_TORTURE_TEST is not set
++# CONFIG_FAULT_INJECTION is not set
++# CONFIG_DEBUG_USER is not set
++# CONFIG_DEBUG_ERRORS is not set
+ CONFIG_DEBUG_LL=y
+ # CONFIG_DEBUG_ICEDCC is not set
+
+@@ -766,7 +1189,43 @@ CONFIG_DEBUG_LL=y
+ #
+ # Cryptographic options
+ #
+-# CONFIG_CRYPTO is not set
++CONFIG_CRYPTO=y
++CONFIG_CRYPTO_ALGAPI=y
++CONFIG_CRYPTO_BLKCIPHER=y
++CONFIG_CRYPTO_HASH=m
++CONFIG_CRYPTO_MANAGER=y
++CONFIG_CRYPTO_HMAC=m
++# CONFIG_CRYPTO_XCBC is not set
++# CONFIG_CRYPTO_NULL is not set
++# CONFIG_CRYPTO_MD4 is not set
++CONFIG_CRYPTO_MD5=y
++# CONFIG_CRYPTO_SHA1 is not set
++# CONFIG_CRYPTO_SHA256 is not set
++# CONFIG_CRYPTO_SHA512 is not set
++# CONFIG_CRYPTO_WP512 is not set
++# CONFIG_CRYPTO_TGR192 is not set
++# CONFIG_CRYPTO_GF128MUL is not set
++# CONFIG_CRYPTO_ECB is not set
++CONFIG_CRYPTO_CBC=y
++CONFIG_CRYPTO_PCBC=m
++# CONFIG_CRYPTO_LRW is not set
++CONFIG_CRYPTO_DES=y
++# CONFIG_CRYPTO_FCRYPT is not set
++# CONFIG_CRYPTO_BLOWFISH is not set
++# CONFIG_CRYPTO_TWOFISH is not set
++# CONFIG_CRYPTO_SERPENT is not set
++# CONFIG_CRYPTO_AES is not set
++# CONFIG_CRYPTO_CAST5 is not set
++# CONFIG_CRYPTO_CAST6 is not set
++# CONFIG_CRYPTO_TEA is not set
++# CONFIG_CRYPTO_ARC4 is not set
++# CONFIG_CRYPTO_KHAZAD is not set
++# CONFIG_CRYPTO_ANUBIS is not set
++# CONFIG_CRYPTO_DEFLATE is not set
++# CONFIG_CRYPTO_MICHAEL_MIC is not set
++# CONFIG_CRYPTO_CRC32C is not set
++# CONFIG_CRYPTO_CAMELLIA is not set
++# CONFIG_CRYPTO_TEST is not set
+
+ #
+ # Hardware crypto devices
+@@ -775,6 +1234,14 @@ CONFIG_DEBUG_LL=y
+ #
+ # Library routines
+ #
++CONFIG_BITREVERSE=y
+ # CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
+ CONFIG_CRC32=y
+ # CONFIG_LIBCRC32C is not set
++CONFIG_AUDIT_GENERIC=y
++CONFIG_ZLIB_INFLATE=y
++CONFIG_ZLIB_DEFLATE=y
++CONFIG_PLIST=y
++CONFIG_HAS_IOMEM=y
++CONFIG_HAS_IOPORT=y
+diff --git a/arch/arm/configs/picotux200_defconfig b/arch/arm/configs/picotux200_defconfig
+index 3c0c4f1..95a22f5 100644
+--- a/arch/arm/configs/picotux200_defconfig
++++ b/arch/arm/configs/picotux200_defconfig
+@@ -727,14 +727,14 @@ CONFIG_I2C_CHARDEV=m
+ #
+ # I2C Algorithms
+ #
+-# CONFIG_I2C_ALGOBIT is not set
++CONFIG_I2C_ALGOBIT=m
+ # CONFIG_I2C_ALGOPCF is not set
+ # CONFIG_I2C_ALGOPCA is not set
+
+ #
+ # I2C Hardware Bus support
+ #
+-CONFIG_I2C_AT91=m
++CONFIG_I2C_GPIO=m
+ # CONFIG_I2C_OCORES is not set
+ # CONFIG_I2C_PARPORT_LIGHT is not set
+ # CONFIG_I2C_STUB is not set
+diff --git a/arch/arm/configs/sam9_l9260_defconfig b/arch/arm/configs/sam9_l9260_defconfig
+new file mode 100644
+index 0000000..484dc97
+--- /dev/null
++++ b/arch/arm/configs/sam9_l9260_defconfig
+@@ -0,0 +1,1098 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.23
++# Sun Oct 14 02:01:07 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
++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=y
++CONFIG_BSD_PROCESS_ACCT=y
++CONFIG_BSD_PROCESS_ACCT_V3=y
++# CONFIG_TASKSTATS is not set
++# CONFIG_USER_NS is not set
++CONFIG_AUDIT=y
++# CONFIG_IKCONFIG is not set
++CONFIG_LOG_BUF_SHIFT=15
++CONFIG_SYSFS_DEPRECATED=y
++# CONFIG_RELAY is not set
++CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_SYSCTL=y
++# CONFIG_EMBEDDED is not set
++CONFIG_UID16=y
++CONFIG_SYSCTL_SYSCALL=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_HOTPLUG=y
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_ELF_CORE=y
++CONFIG_BASE_FULL=y
++CONFIG_FUTEX=y
++CONFIG_ANON_INODES=y
++CONFIG_EPOLL=y
++CONFIG_SIGNALFD=y
++CONFIG_EVENTFD=y
++CONFIG_SHMEM=y
++CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_SLAB=y
++# CONFIG_SLUB is not set
++# CONFIG_SLOB is not set
++CONFIG_RT_MUTEXES=y
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=0
++# CONFIG_MODULES is not set
++CONFIG_BLOCK=y
++CONFIG_LBD=y
++# CONFIG_BLK_DEV_IO_TRACE is not set
++CONFIG_LSF=y
++# CONFIG_BLK_DEV_BSG is not set
++
++#
++# IO Schedulers
++#
++CONFIG_IOSCHED_NOOP=y
++CONFIG_IOSCHED_AS=y
++CONFIG_IOSCHED_DEADLINE=y
++CONFIG_IOSCHED_CFQ=y
++# CONFIG_DEFAULT_AS is not set
++# CONFIG_DEFAULT_DEADLINE is not set
++CONFIG_DEFAULT_CFQ=y
++# CONFIG_DEFAULT_NOOP is not set
++CONFIG_DEFAULT_IOSCHED="cfq"
++
++#
++# System Type
++#
++# CONFIG_ARCH_AAEC2000 is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_REALVIEW is not set
++# CONFIG_ARCH_VERSATILE is not set
++CONFIG_ARCH_AT91=y
++# CONFIG_ARCH_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++# CONFIG_ARCH_EP93XX is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_NETX is not set
++# CONFIG_ARCH_H720X is not set
++# CONFIG_ARCH_IMX is not set
++# CONFIG_ARCH_IOP13XX is not set
++# CONFIG_ARCH_IOP32X is not set
++# CONFIG_ARCH_IOP33X is not set
++# CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_KS8695 is not set
++# CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_MXC is not set
++# CONFIG_ARCH_PNX4008 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_RPC is not set
++# CONFIG_ARCH_SA1100 is not set
++# CONFIG_ARCH_S3C2410 is not set
++# CONFIG_ARCH_SHARK is not set
++# CONFIG_ARCH_LH7A40X is not set
++# CONFIG_ARCH_DAVINCI is not set
++# CONFIG_ARCH_OMAP is not set
++
++#
++# Boot options
++#
++
++#
++# Power management
++#
++
++#
++# Atmel AT91 System-on-Chip
++#
++# CONFIG_ARCH_AT91RM9200 is not set
++CONFIG_ARCH_AT91SAM9260=y
++# CONFIG_ARCH_AT91SAM9261 is not set
++# CONFIG_ARCH_AT91SAM9263 is not set
++# CONFIG_ARCH_AT91SAM9RL is not set
++
++#
++# AT91SAM9260 Variants
++#
++# CONFIG_ARCH_AT91SAM9260_SAM9XE is not set
++
++#
++# AT91SAM9260 / AT91SAM9XE Board Type
++#
++# CONFIG_MACH_AT91SAM9260EK is not set
++# CONFIG_MACH_CAM60 is not set
++CONFIG_MACH_SAM9_L9260=y
++
++#
++# AT91 Board Options
++#
++CONFIG_MTD_AT91_DATAFLASH_CARD=y
++
++#
++# AT91 Feature Selections
++#
++# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
++# CONFIG_ATMEL_TCLIB is not set
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM926T=y
++CONFIG_CPU_32v5=y
++CONFIG_CPU_ABRT_EV5TJ=y
++CONFIG_CPU_CACHE_VIVT=y
++CONFIG_CPU_COPY_V4WB=y
++CONFIG_CPU_TLB_V4WBI=y
++CONFIG_CPU_CP15=y
++CONFIG_CPU_CP15_MMU=y
++
++#
++# Processor Features
++#
++CONFIG_ARM_THUMB=y
++# CONFIG_CPU_ICACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_DISABLE is not set
++# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
++# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
++# CONFIG_OUTER_CACHE is not set
++
++#
++# Bus support
++#
++# CONFIG_PCI_SYSCALL is not set
++# CONFIG_ARCH_SUPPORTS_MSI is not set
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
++
++#
++# Kernel Features
++#
++# CONFIG_TICK_ONESHOT is not set
++CONFIG_PREEMPT=y
++# CONFIG_NO_IDLE_HZ is not set
++CONFIG_HZ=100
++# CONFIG_AEABI is not set
++# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
++CONFIG_SELECT_MEMORY_MODEL=y
++CONFIG_FLATMEM_MANUAL=y
++# CONFIG_DISCONTIGMEM_MANUAL is not set
++# CONFIG_SPARSEMEM_MANUAL is not set
++CONFIG_FLATMEM=y
++CONFIG_FLAT_NODE_MEM_MAP=y
++# CONFIG_SPARSEMEM_STATIC is not set
++CONFIG_SPLIT_PTLOCK_CPUS=4096
++# CONFIG_RESOURCES_64BIT is not set
++CONFIG_ZONE_DMA_FLAG=1
++CONFIG_BOUNCE=y
++CONFIG_VIRT_TO_BUS=y
++CONFIG_LEDS=y
++CONFIG_LEDS_TIMER=y
++CONFIG_LEDS_CPU=y
++CONFIG_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CMDLINE="console=ttyS0,115200 mem=64M initrd=0x21100000,4194304 root=/dev/ram0 rw"
++# CONFIG_XIP_KERNEL is not set
++# CONFIG_KEXEC is not set
++
++#
++# Floating point emulation
++#
++
++#
++# At least one emulation must be selected
++#
++CONFIG_FPE_NWFPE=y
++# CONFIG_FPE_NWFPE_XP is not set
++# CONFIG_FPE_FASTFPE is not set
++# CONFIG_VFP is not set
++
++#
++# Userspace binary formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
++# CONFIG_ARTHUR 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=y
++# CONFIG_XFRM_SUB_POLICY is not set
++# CONFIG_XFRM_MIGRATE is not set
++CONFIG_NET_KEY=y
++# CONFIG_NET_KEY_MIGRATE is not set
++CONFIG_INET=y
++# CONFIG_IP_MULTICAST is not set
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++# CONFIG_IP_PNP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_ARPD is not set
++# CONFIG_SYN_COOKIES is not set
++# CONFIG_INET_AH is not set
++# CONFIG_INET_ESP is not set
++# CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_XFRM_TUNNEL is not set
++# CONFIG_INET_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
++# CONFIG_INET_XFRM_MODE_TUNNEL is not set
++# CONFIG_INET_XFRM_MODE_BEET is not set
++CONFIG_INET_DIAG=y
++CONFIG_INET_TCP_DIAG=y
++# CONFIG_TCP_CONG_ADVANCED is not set
++CONFIG_TCP_CONG_CUBIC=y
++CONFIG_DEFAULT_TCP_CONG="cubic"
++# CONFIG_TCP_MD5SIG is not set
++# CONFIG_IPV6 is not set
++# CONFIG_INET6_XFRM_TUNNEL is not set
++# CONFIG_INET6_TUNNEL is not set
++# CONFIG_NETWORK_SECMARK is not set
++# CONFIG_NETFILTER is not set
++# CONFIG_IP_DCCP is not set
++# CONFIG_IP_SCTP is not set
++# CONFIG_TIPC is not set
++# CONFIG_ATM is not set
++# CONFIG_BRIDGE is not set
++# CONFIG_VLAN_8021Q is not set
++# CONFIG_DECNET is not set
++# CONFIG_LLC2 is not set
++# CONFIG_IPX is not set
++# CONFIG_ATALK is not set
++# CONFIG_X25 is not set
++# CONFIG_LAPB is not set
++# CONFIG_ECONET is not set
++# CONFIG_WAN_ROUTER is not set
++
++#
++# QoS and/or fair queueing
++#
++# CONFIG_NET_SCHED is not set
++
++#
++# Network testing
++#
++# CONFIG_NET_PKTGEN is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
++# CONFIG_AF_RXRPC is not set
++
++#
++# Wireless
++#
++# CONFIG_CFG80211 is not set
++# CONFIG_WIRELESS_EXT is not set
++# CONFIG_MAC80211 is not set
++# CONFIG_IEEE80211 is not set
++# CONFIG_RFKILL is not set
++# CONFIG_NET_9P is not set
++
++#
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++CONFIG_FW_LOADER=y
++# CONFIG_DEBUG_DRIVER is not set
++# CONFIG_DEBUG_DEVRES is not set
++# CONFIG_SYS_HYPERVISOR is not set
++# CONFIG_CONNECTOR is not set
++CONFIG_MTD=y
++# CONFIG_MTD_DEBUG is not set
++# CONFIG_MTD_CONCAT is not set
++CONFIG_MTD_PARTITIONS=y
++# CONFIG_MTD_REDBOOT_PARTS is not set
++# CONFIG_MTD_CMDLINE_PARTS 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 is not set
++# CONFIG_INFTL is not set
++# CONFIG_RFD_FTL is not set
++# CONFIG_SSFDC is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++# CONFIG_MTD_CFI is not set
++# CONFIG_MTD_JEDECPROBE is not set
++CONFIG_MTD_MAP_BANK_WIDTH_1=y
++CONFIG_MTD_MAP_BANK_WIDTH_2=y
++CONFIG_MTD_MAP_BANK_WIDTH_4=y
++# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
++# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
++CONFIG_MTD_CFI_I1=y
++CONFIG_MTD_CFI_I2=y
++# CONFIG_MTD_CFI_I4 is not set
++# CONFIG_MTD_CFI_I8 is not set
++# CONFIG_MTD_RAM is not set
++# CONFIG_MTD_ROM is not set
++# CONFIG_MTD_ABSENT is not set
++
++#
++# Mapping drivers for chip access
++#
++# CONFIG_MTD_COMPLEX_MAPPINGS is not set
++# CONFIG_MTD_PLATRAM is not set
++
++#
++# Self-contained MTD device drivers
++#
++# CONFIG_MTD_SLRAM is not set
++# CONFIG_MTD_PHRAM is not set
++# CONFIG_MTD_MTDRAM is not set
++CONFIG_MTD_BLOCK2MTD=y
++
++#
++# 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_AT91=y
++# CONFIG_MTD_NAND_NANDSIM is not set
++CONFIG_MTD_NAND_PLATFORM=y
++# CONFIG_MTD_ONENAND is not set
++
++#
++# UBI - Unsorted block images
++#
++CONFIG_MTD_UBI=y
++CONFIG_MTD_UBI_WL_THRESHOLD=4096
++CONFIG_MTD_UBI_BEB_RESERVE=3
++CONFIG_MTD_UBI_GLUEBI=y
++
++#
++# UBI debugging options
++#
++# CONFIG_MTD_UBI_DEBUG is not set
++# CONFIG_PARPORT is not set
++CONFIG_BLK_DEV=y
++# CONFIG_BLK_DEV_COW_COMMON is not set
++CONFIG_BLK_DEV_LOOP=y
++# CONFIG_BLK_DEV_CRYPTOLOOP is not set
++# CONFIG_BLK_DEV_NBD is not set
++# CONFIG_BLK_DEV_UB is not set
++CONFIG_BLK_DEV_RAM=y
++CONFIG_BLK_DEV_RAM_COUNT=16
++CONFIG_BLK_DEV_RAM_SIZE=8192
++CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
++# CONFIG_CDROM_PKTCDVD is not set
++# CONFIG_ATA_OVER_ETH is not set
++
++#
++# SCSI device support
++#
++CONFIG_RAID_ATTRS=y
++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 is not set
++# CONFIG_CHR_DEV_OSST is not set
++# CONFIG_BLK_DEV_SR is not set
++CONFIG_CHR_DEV_SG=y
++# CONFIG_CHR_DEV_SCH is not set
++
++#
++# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
++#
++CONFIG_SCSI_MULTI_LUN=y
++CONFIG_SCSI_CONSTANTS=y
++CONFIG_SCSI_LOGGING=y
++# CONFIG_SCSI_SCAN_ASYNC is not set
++
++#
++# SCSI Transports
++#
++# CONFIG_SCSI_SPI_ATTRS is not set
++# CONFIG_SCSI_FC_ATTRS is not set
++# CONFIG_SCSI_ISCSI_ATTRS is not set
++# CONFIG_SCSI_SAS_LIBSAS is not set
++# CONFIG_SCSI_LOWLEVEL is not set
++# CONFIG_ATA is not set
++# CONFIG_MD is not set
++CONFIG_NETDEVICES=y
++# CONFIG_NETDEVICES_MULTIQUEUE is not set
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_MACVLAN is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++CONFIG_PHYLIB=y
++
++#
++# MII PHY device drivers
++#
++# CONFIG_MARVELL_PHY is not set
++# CONFIG_DAVICOM_PHY is not set
++# CONFIG_QSEMI_PHY is not set
++# CONFIG_LXT_PHY is not set
++# CONFIG_CICADA_PHY is not set
++# CONFIG_VITESSE_PHY is not set
++# CONFIG_SMSC_PHY is not set
++# CONFIG_BROADCOM_PHY is not set
++# CONFIG_ICPLUS_PHY is not set
++# CONFIG_FIXED_PHY is not set
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_MACB=y
++# CONFIG_AX88796 is not set
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++# CONFIG_NETDEV_1000 is not set
++# CONFIG_NETDEV_10000 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 is not set
++# CONFIG_USB_RTL8150 is not set
++# CONFIG_USB_USBNET_MII is not set
++# CONFIG_USB_USBNET is not set
++# CONFIG_WAN is not set
++# CONFIG_PPP 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
++# CONFIG_ISDN is not set
++
++#
++# Input device support
++#
++CONFIG_INPUT=y
++# CONFIG_INPUT_FF_MEMLESS is not set
++# CONFIG_INPUT_POLLDEV is not set
++
++#
++# Userland interfaces
++#
++CONFIG_INPUT_MOUSEDEV=y
++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
++CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
++# CONFIG_INPUT_JOYDEV is not set
++# CONFIG_INPUT_TSDEV is not set
++# CONFIG_INPUT_EVDEV is not set
++# CONFIG_INPUT_EVBUG is not set
++
++#
++# Input Device Drivers
++#
++# CONFIG_INPUT_KEYBOARD is not set
++# CONFIG_INPUT_MOUSE is not set
++# CONFIG_INPUT_JOYSTICK is not set
++# CONFIG_INPUT_TABLET is not set
++# CONFIG_INPUT_TOUCHSCREEN is not set
++# CONFIG_INPUT_MISC is not set
++
++#
++# Hardware I/O ports
++#
++# CONFIG_SERIO is not set
++# CONFIG_GAMEPORT is not set
++
++#
++# Character devices
++#
++CONFIG_VT=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
++# CONFIG_VT_HW_CONSOLE_BINDING is not set
++# CONFIG_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_ATMEL=y
++CONFIG_SERIAL_ATMEL_CONSOLE=y
++# CONFIG_SERIAL_ATMEL_TTYAT is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=16
++# CONFIG_IPMI_HANDLER is not set
++# CONFIG_WATCHDOG is not set
++# CONFIG_HW_RANDOM is not set
++# CONFIG_NVRAM is not set
++# CONFIG_R3964 is not set
++# CONFIG_RAW_DRIVER is not set
++# CONFIG_TCG_TPM is not set
++# CONFIG_I2C is not set
++
++#
++# SPI support
++#
++# CONFIG_SPI is not set
++# CONFIG_SPI_MASTER is not set
++# CONFIG_W1 is not set
++# CONFIG_HWMON is not set
++# CONFIG_MISC_DEVICES is not set
++
++#
++# Multifunction device drivers
++#
++# CONFIG_MFD_SM501 is not set
++CONFIG_NEW_LEDS=y
++CONFIG_LEDS_CLASS=y
++
++#
++# LED drivers
++#
++CONFIG_LEDS_GPIO=y
++
++#
++# LED Triggers
++#
++CONFIG_LEDS_TRIGGERS=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++# CONFIG_DVB_CORE is not set
++# 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 is not set
++# CONFIG_FB is not set
++
++#
++# Console display driver support
++#
++# CONFIG_VGA_CONSOLE is not set
++CONFIG_DUMMY_CONSOLE=y
++
++#
++# Sound
++#
++# CONFIG_SOUND is not set
++# CONFIG_HID_SUPPORT is not set
++CONFIG_USB_SUPPORT=y
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB_ARCH_HAS_EHCI is not set
++CONFIG_USB=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_OTG is not set
++
++#
++# USB Host Controller Drivers
++#
++# CONFIG_USB_ISP116X_HCD is not set
++CONFIG_USB_OHCI_HCD=y
++# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
++# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
++CONFIG_USB_OHCI_LITTLE_ENDIAN=y
++# CONFIG_USB_SL811_HCD is not set
++# CONFIG_USB_R8A66597_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=y
++
++#
++# 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_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=y
++# CONFIG_USB_GADGET_DEBUG is not set
++# CONFIG_USB_GADGET_DEBUG_FILES is not set
++CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_AMD5536UDC is not set
++# CONFIG_USB_GADGET_FSL_USB2 is not set
++# CONFIG_USB_GADGET_NET2280 is not set
++# CONFIG_USB_GADGET_PXA2XX is not set
++# CONFIG_USB_GADGET_M66592 is not set
++# CONFIG_USB_GADGET_GOKU is not set
++# CONFIG_USB_GADGET_LH7A40X is not set
++# CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_S3C2410 is not set
++CONFIG_USB_GADGET_AT91=y
++CONFIG_USB_AT91=y
++# CONFIG_USB_GADGET_DUMMY_HCD is not set
++# CONFIG_USB_GADGET_DUALSPEED is not set
++# CONFIG_USB_ZERO is not set
++CONFIG_USB_ETH=y
++CONFIG_USB_ETH_RNDIS=y
++# CONFIG_USB_GADGETFS is not set
++# CONFIG_USB_FILE_STORAGE is not set
++# CONFIG_USB_G_SERIAL is not set
++# CONFIG_USB_MIDI_GADGET is not set
++CONFIG_MMC=y
++CONFIG_MMC_DEBUG=y
++# CONFIG_MMC_UNSAFE_RESUME is not set
++
++#
++# MMC/SD Card Drivers
++#
++CONFIG_MMC_BLOCK=y
++CONFIG_MMC_BLOCK_BOUNCE=y
++
++#
++# MMC/SD Host Controller Drivers
++#
++CONFIG_MMC_AT91=y
++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
++
++#
++# SPI RTC drivers
++#
++
++#
++# Platform RTC drivers
++#
++# CONFIG_RTC_DRV_CMOS is not set
++CONFIG_RTC_DRV_DS1553=y
++# CONFIG_RTC_DRV_STK17TA8 is not set
++CONFIG_RTC_DRV_DS1742=y
++CONFIG_RTC_DRV_M48T86=y
++# CONFIG_RTC_DRV_M48T59 is not set
++CONFIG_RTC_DRV_V3020=y
++
++#
++# on-CPU RTC drivers
++#
++
++#
++# DMA Engine support
++#
++# CONFIG_DMA_ENGINE is not set
++
++#
++# DMA Clients
++#
++
++#
++# DMA Devices
++#
++
++#
++# File systems
++#
++CONFIG_EXT2_FS=y
++CONFIG_EXT2_FS_XATTR=y
++CONFIG_EXT2_FS_POSIX_ACL=y
++CONFIG_EXT2_FS_SECURITY=y
++# CONFIG_EXT2_FS_XIP is not set
++CONFIG_EXT3_FS=y
++CONFIG_EXT3_FS_XATTR=y
++CONFIG_EXT3_FS_POSIX_ACL=y
++CONFIG_EXT3_FS_SECURITY=y
++# CONFIG_EXT4DEV_FS is not set
++CONFIG_JBD=y
++# CONFIG_JBD_DEBUG is not set
++CONFIG_FS_MBCACHE=y
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++CONFIG_FS_POSIX_ACL=y
++# CONFIG_XFS_FS is not set
++# CONFIG_GFS2_FS is not set
++# CONFIG_OCFS2_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
++CONFIG_INOTIFY_USER=y
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# CONFIG_FUSE_FS is not set
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++CONFIG_FAT_FS=y
++CONFIG_MSDOS_FS=y
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_PROC_SYSCTL=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=y
++# CONFIG_TMPFS_POSIX_ACL is not set
++# CONFIG_HUGETLB_PAGE is not set
++CONFIG_RAMFS=y
++# CONFIG_CONFIGFS_FS is not set
++
++#
++# Miscellaneous filesystems
++#
++# CONFIG_ADFS_FS is not set
++# CONFIG_AFFS_FS is not set
++# CONFIG_HFS_FS is not set
++# CONFIG_HFSPLUS_FS is not set
++# CONFIG_BEFS_FS is not set
++# CONFIG_BFS_FS is not set
++# CONFIG_EFS_FS is not set
++CONFIG_JFFS2_FS=y
++CONFIG_JFFS2_FS_DEBUG=0
++CONFIG_JFFS2_FS_WRITEBUFFER=y
++# CONFIG_JFFS2_SUMMARY is not set
++# CONFIG_JFFS2_FS_XATTR is not set
++# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
++CONFIG_JFFS2_ZLIB=y
++CONFIG_JFFS2_RTIME=y
++# CONFIG_JFFS2_RUBIN is not set
++# CONFIG_CRAMFS is not set
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++# CONFIG_NFS_V3_ACL is not set
++# CONFIG_NFS_V4 is not set
++CONFIG_NFS_DIRECTIO=y
++# CONFIG_NFSD is not set
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_SUNRPC_BIND34 is not set
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++# CONFIG_CIFS is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++
++#
++# Partition Types
++#
++# CONFIG_PARTITION_ADVANCED is not set
++CONFIG_MSDOS_PARTITION=y
++
++#
++# Native Language Support
++#
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="iso8859-1"
++CONFIG_NLS_CODEPAGE_437=y
++CONFIG_NLS_CODEPAGE_737=y
++CONFIG_NLS_CODEPAGE_775=y
++CONFIG_NLS_CODEPAGE_850=y
++CONFIG_NLS_CODEPAGE_852=y
++CONFIG_NLS_CODEPAGE_855=y
++CONFIG_NLS_CODEPAGE_857=y
++CONFIG_NLS_CODEPAGE_860=y
++CONFIG_NLS_CODEPAGE_861=y
++CONFIG_NLS_CODEPAGE_862=y
++CONFIG_NLS_CODEPAGE_863=y
++CONFIG_NLS_CODEPAGE_864=y
++CONFIG_NLS_CODEPAGE_865=y
++CONFIG_NLS_CODEPAGE_866=y
++CONFIG_NLS_CODEPAGE_869=y
++CONFIG_NLS_CODEPAGE_936=y
++CONFIG_NLS_CODEPAGE_950=y
++CONFIG_NLS_CODEPAGE_932=y
++CONFIG_NLS_CODEPAGE_949=y
++CONFIG_NLS_CODEPAGE_874=y
++CONFIG_NLS_ISO8859_8=y
++CONFIG_NLS_CODEPAGE_1250=y
++CONFIG_NLS_CODEPAGE_1251=y
++CONFIG_NLS_ASCII=y
++CONFIG_NLS_ISO8859_1=y
++CONFIG_NLS_ISO8859_2=y
++CONFIG_NLS_ISO8859_3=y
++CONFIG_NLS_ISO8859_4=y
++CONFIG_NLS_ISO8859_5=y
++CONFIG_NLS_ISO8859_6=y
++CONFIG_NLS_ISO8859_7=y
++CONFIG_NLS_ISO8859_9=y
++CONFIG_NLS_ISO8859_13=y
++CONFIG_NLS_ISO8859_14=y
++CONFIG_NLS_ISO8859_15=y
++CONFIG_NLS_KOI8_R=y
++CONFIG_NLS_KOI8_U=y
++CONFIG_NLS_UTF8=y
++
++#
++# Distributed Lock Manager
++#
++# CONFIG_DLM is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_MUST_CHECK=y
++CONFIG_MAGIC_SYSRQ=y
++CONFIG_UNUSED_SYMBOLS=y
++CONFIG_DEBUG_FS=y
++# CONFIG_HEADERS_CHECK is not set
++CONFIG_DEBUG_KERNEL=y
++# CONFIG_DEBUG_SHIRQ is not set
++CONFIG_DETECT_SOFTLOCKUP=y
++CONFIG_SCHED_DEBUG=y
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_TIMER_STATS is not set
++# CONFIG_DEBUG_SLAB is not set
++CONFIG_DEBUG_PREEMPT=y
++# CONFIG_DEBUG_RT_MUTEXES is not set
++# CONFIG_RT_MUTEX_TESTER is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_MUTEXES is not set
++# CONFIG_DEBUG_LOCK_ALLOC is not set
++# CONFIG_PROVE_LOCKING is not set
++# CONFIG_LOCK_STAT is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
++# CONFIG_DEBUG_KOBJECT is not set
++CONFIG_DEBUG_BUGVERBOSE=y
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_VM is not set
++# CONFIG_DEBUG_LIST is not set
++CONFIG_FRAME_POINTER=y
++CONFIG_FORCED_INLINING=y
++# CONFIG_FAULT_INJECTION is not set
++# CONFIG_DEBUG_USER is not set
++# CONFIG_DEBUG_ERRORS is not set
++CONFIG_DEBUG_LL=y
++# CONFIG_DEBUG_ICEDCC is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++# CONFIG_CRYPTO is not set
++
++#
++# Library routines
++#
++CONFIG_BITREVERSE=y
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++# CONFIG_CRC_ITU_T is not set
++CONFIG_CRC32=y
++# CONFIG_CRC7 is not set
++# CONFIG_LIBCRC32C is not set
++CONFIG_AUDIT_GENERIC=y
++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/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
+index 05a9f8a..a4110e5 100644
+--- a/arch/arm/mach-at91/Kconfig
++++ b/arch/arm/mach-at91/Kconfig
+@@ -106,6 +106,32 @@ config MACH_KAFA
+ help
+ Select this if you are using Sperry-Sun's KAFA board.
+
++config MACH_CHUB
++ bool "Promwad Chub board"
++ depends on ARCH_AT91RM9200
++ help
++ Select this if you are using Promwad's Chub board.
++
++config MACH_HOMEMATIC
++ bool "eQ-3 HomeMatic"
++ depends on ARCH_AT91RM9200
++ help
++ Select this if you are using eQ-3's HomeMatic device.
++ <http://www.eq-3.com>
++
++config MACH_ECBAT91
++ bool "emQbit ECB_AT91 SBC"
++ depends on ARCH_AT91RM9200
++ help
++ Select this if you are using emQbit's ECB_AT91 board.
++ <http://wiki.emqbit.com/free-ecb-at91>
++
++config MACH_SWEDATMS
++ bool "Sweda TMS Board"
++ depends on ARCH_AT91RM9200
++ help
++ Select this if you are using Sweda TMS-100 board.
++
+ endif
+
+ # ----------------------------------------------------------
+@@ -130,6 +156,20 @@ config MACH_AT91SAM9260EK
+ Select this if you are using Atmel's AT91SAM9260-EK or AT91SAM9XE Evaluation Kit
+ <http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933>
+
++config MACH_CAM60
++ bool "KwikByte CAM60 board"
++ depends on ARCH_AT91SAM9260
++ help
++ Select this if you are using KwikByte's CAM60 board based on the Atmel AT91SAM9260.
++ <http://www.kwikbyte.com>
++
++config MACH_SAM9_L9260
++ bool "Olimex SAM9-L9260 board"
++ depends on ARCH_AT91SAM9260
++ help
++ Select this if you are using Olimex's SAM9-L9260 board based on the Atmel AT91SAM9260.
++ http://www.olimex.com/dev/sam9-L9260.html
++
+ endif
+
+ # ----------------------------------------------------------
+@@ -198,7 +238,7 @@ comment "AT91 Board Options"
+
+ config MTD_AT91_DATAFLASH_CARD
+ bool "Enable DataFlash Card support"
+- depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9263EK)
++ depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK || MACH_AT91SAM9263EK || MACH_ECBAT91 || MACH_SAM9_L9260)
+ help
+ Enable support for the DataFlash card.
+
+@@ -209,6 +249,20 @@ config MTD_NAND_AT91_BUSWIDTH_16
+ On AT91SAM926x boards both types of NAND flash can be present
+ (8 and 16 bit data bus width).
+
++config CSB300_WAKE_SW0
++ bool "CSB300 SW0 irq0 wakeup"
++ depends on MACH_CSB337 && PM
++ help
++ If you have a CSB300 connected to your CSB337, this lets
++ SW0 serve as a wakeup button. It uses IRQ0.
++
++config CSB300_WAKE_SW1
++ bool "CSB300 SW1 gpio wakeup"
++ depends on MACH_CSB337 && PM
++ help
++ If you have a CSB300 connected to your CSB337, this lets
++ SW1 serve as a wakeup button. It uses GPIO.
++
+ # ----------------------------------------------------------
+
+ comment "AT91 Feature Selections"
+@@ -219,6 +273,36 @@ config AT91_PROGRAMMABLE_CLOCKS
+ Select this if you need to program one or more of the PCK0..PCK3
+ programmable clock outputs.
+
++config ATMEL_TCLIB
++ bool "Timer/Counter Library"
++ help
++ Select this if you want a library to allocate the Timer/Counter
++ blocks found on many Atmel processors. This facilitates using
++ these modules despite processor differences.
++
++config AT91_SLOW_CLOCK
++ bool "Suspend-to-RAM uses slow clock mode (EXPERIMENTAL)"
++ depends on PM && EXPERIMENTAL
++ help
++ Select this if you wish to put the CPU into slow clock mode
++ while in the "Suspend to RAM" state, to save more power.
++
++config AT91_TIMER_HZ
++ int "Kernel HZ (jiffies per second)"
++ range 32 1024
++ depends on ARCH_AT91
++ default "128" if ARCH_AT91RM9200
++ default "100"
++ help
++ On AT91rm9200 chips where you're using a system clock derived
++ from the 32768 Hz hardware clock, this tick rate should divide
++ it exactly: use a power-of-two value, such as 128 or 256, to
++ reduce timing errors caused by rounding.
++
++ On AT91sam926x chips, or otherwise using a higher precision
++ system clock (of at least several MHz), rounding is less of a
++ problem so it can be safer to use a decimal values like 100.
++
+ endmenu
+
+ endif
+diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
+index a21f08c..9684dc6 100644
+--- a/arch/arm/mach-at91/Makefile
++++ b/arch/arm/mach-at91/Makefile
+@@ -9,6 +9,8 @@ obj- :=
+
+ obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
+ obj-$(CONFIG_PM) += pm.o
++obj-$(CONFIG_AT91_SLOW_CLOCK) += pm_slowclock.o
++obj-$(CONFIG_ATMEL_TCLIB) += tclib.o
+
+ # CPU-specific support
+ obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
+@@ -28,11 +30,17 @@ obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o
+ obj-$(CONFIG_MACH_KB9200) += board-kb9202.o
+ obj-$(CONFIG_MACH_ATEB9200) += board-eb9200.o
+ obj-$(CONFIG_MACH_KAFA) += board-kafa.o
++obj-$(CONFIG_MACH_CHUB) += board-chub.o
+ obj-$(CONFIG_MACH_PICOTUX2XX) += board-picotux200.o
+ obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o
++obj-$(CONFIG_MACH_HOMEMATIC) += board-homematic.o
++obj-$(CONFIG_MACH_ECBAT91) += board-ecbat91.o
++obj-$(CONFIG_MACH_SWEDATMS) += board-tms.o
+
+ # AT91SAM9260 board-specific support
+ obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
++obj-$(CONFIG_MACH_CAM60) += board-cam60.o
++obj-$(CONFIG_MACH_SAM9_L9260) += board-sam9-l9260.o
+
+ # AT91SAM9261 board-specific support
+ obj-$(CONFIG_MACH_AT91SAM9261EK) += board-sam9261ek.o
+@@ -51,10 +59,12 @@ led-$(CONFIG_MACH_CSB337) += leds.o
+ led-$(CONFIG_MACH_CSB637) += leds.o
+ led-$(CONFIG_MACH_KB9200) += leds.o
+ led-$(CONFIG_MACH_KAFA) += leds.o
++led-$(CONFIG_MACH_ECBAT91) += leds.o
++led-$(CONFIG_MACH_SAM9_L9260) += leds.o
+ obj-$(CONFIG_LEDS) += $(led-y)
+
+ # VGA support
+-#obj-$(CONFIG_FB_S1D13XXX) += ics1523.o
++obj-$(CONFIG_FB_S1D13XXX) += ics1523.o
+
+
+ ifeq ($(CONFIG_PM_DEBUG),y)
+diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c
+index 2cad2bf..84cad3b 100644
+--- a/arch/arm/mach-at91/at91rm9200.c
++++ b/arch/arm/mach-at91/at91rm9200.c
+@@ -267,6 +267,33 @@ static void at91rm9200_reset(void)
+
+
+ /* --------------------------------------------------------------------
++ * Timer/Counter library initialization
++ * -------------------------------------------------------------------- */
++#ifdef CONFIG_ATMEL_TCLIB
++
++#include "tclib.h"
++
++static struct atmel_tcblock at91rm9200_tcblocks[] = {
++ [0] = {
++ .physaddr = AT91RM9200_BASE_TCB0,
++ .irq = { AT91RM9200_ID_TC0, AT91RM9200_ID_TC1, AT91RM9200_ID_TC2 },
++ .clk = { &tc0_clk, &tc1_clk, &tc2_clk },
++ },
++ [1] = {
++ .physaddr = AT91RM9200_BASE_TCB1,
++ .irq = { AT91RM9200_ID_TC3, AT91RM9200_ID_TC4, AT91RM9200_ID_TC5 },
++ .clk = { &tc3_clk, &tc4_clk, &tc5_clk },
++ },
++};
++
++#define at91rm9200_tc_init() atmel_tc_init(at91rm9200_tcblocks, ARRAY_SIZE(at91rm9200_tcblocks))
++
++#else
++#define at91rm9200_tc_init() do {} while(0)
++#endif
++
++
++/* --------------------------------------------------------------------
+ * AT91RM9200 processor initialization
+ * -------------------------------------------------------------------- */
+ void __init at91rm9200_initialize(unsigned long main_clock, unsigned short banks)
+@@ -288,6 +315,9 @@ void __init at91rm9200_initialize(unsigned long main_clock, unsigned short banks
+
+ /* Initialize GPIO subsystem */
+ at91_gpio_init(at91rm9200_gpio, banks);
++
++ /* Initialize the Timer/Counter blocks */
++ at91rm9200_tc_init();
+ }
+
+
+@@ -301,28 +331,28 @@ void __init at91rm9200_initialize(unsigned long main_clock, unsigned short banks
+ static unsigned int at91rm9200_default_irq_priority[NR_AIC_IRQS] __initdata = {
+ 7, /* Advanced Interrupt Controller (FIQ) */
+ 7, /* System Peripherals */
+- 0, /* Parallel IO Controller A */
+- 0, /* Parallel IO Controller B */
+- 0, /* Parallel IO Controller C */
+- 0, /* Parallel IO Controller D */
+- 6, /* USART 0 */
+- 6, /* USART 1 */
+- 6, /* USART 2 */
+- 6, /* USART 3 */
++ 1, /* Parallel IO Controller A */
++ 1, /* Parallel IO Controller B */
++ 1, /* Parallel IO Controller C */
++ 1, /* Parallel IO Controller D */
++ 5, /* USART 0 */
++ 5, /* USART 1 */
++ 5, /* USART 2 */
++ 5, /* USART 3 */
+ 0, /* Multimedia Card Interface */
+- 4, /* USB Device Port */
+- 0, /* Two-Wire Interface */
+- 6, /* Serial Peripheral Interface */
+- 5, /* Serial Synchronous Controller 0 */
+- 5, /* Serial Synchronous Controller 1 */
+- 5, /* Serial Synchronous Controller 2 */
++ 2, /* USB Device Port */
++ 6, /* Two-Wire Interface */
++ 5, /* Serial Peripheral Interface */
++ 4, /* Serial Synchronous Controller 0 */
++ 4, /* Serial Synchronous Controller 1 */
++ 4, /* Serial Synchronous Controller 2 */
+ 0, /* Timer Counter 0 */
+ 0, /* Timer Counter 1 */
+ 0, /* Timer Counter 2 */
+ 0, /* Timer Counter 3 */
+ 0, /* Timer Counter 4 */
+ 0, /* Timer Counter 5 */
+- 3, /* USB Host port */
++ 2, /* USB Host port */
+ 3, /* Ethernet MAC */
+ 0, /* Advanced Interrupt Controller (IRQ0) */
+ 0, /* Advanced Interrupt Controller (IRQ1) */
+diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
+index 9296833..3c8e8c1 100644
+--- a/arch/arm/mach-at91/at91rm9200_devices.c
++++ b/arch/arm/mach-at91/at91rm9200_devices.c
+@@ -512,7 +512,18 @@ void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
+ * SPI
+ * -------------------------------------------------------------------- */
+
+-#if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE)
++#if defined(CONFIG_AT91_SPI) || defined(CONFIG_AT91_SPI_MODULE) /* legacy SPI driver */
++#define SPI_DEVNAME "at91_spi"
++
++#elif defined(CONFIG_SPI_AT91) || defined(CONFIG_SPI_AT91_MODULE) /* SPI bitbanging driver */
++#define SPI_DEVNAME "at91_spi"
++
++#elif defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE) /* new SPI driver */
++#define SPI_DEVNAME "atmel_spi"
++
++#endif
++
++#ifdef SPI_DEVNAME
+ static u64 spi_dmamask = 0xffffffffUL;
+
+ static struct resource spi_resources[] = {
+@@ -529,7 +540,7 @@ static struct resource spi_resources[] = {
+ };
+
+ static struct platform_device at91rm9200_spi_device = {
+- .name = "atmel_spi",
++ .name = SPI_DEVNAME,
+ .id = 0,
+ .dev = {
+ .dma_mask = &spi_dmamask,
+@@ -557,8 +568,17 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
+ else
+ cs_pin = spi_standard_cs[devices[i].chip_select];
+
+- /* enable chip-select pin */
+- at91_set_gpio_output(cs_pin, 1);
++ if (devices[i].chip_select == 0) /* for CS0 errata */
++ at91_set_A_periph(cs_pin, 0);
++ else
++ at91_set_gpio_output(cs_pin, 1);
++
++#if defined(CONFIG_AT91_SPI) || defined(CONFIG_AT91_SPI_MODULE)
++ /*
++ * Force peripheral mode when using the legacy SPI driver.
++ */
++ at91_set_A_periph(cs_pin, 0);
++#endif
+
+ /* pass chip-select pin to driver */
+ devices[i].controller_data = (void *) cs_pin;
+@@ -634,6 +654,36 @@ void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
+ #endif
+
+
++#if defined(CONFIG_NEW_LEDS)
++static struct gpio_led_platform_data led_data;
++
++static struct platform_device at91_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &led_data,
++ }
++};
++
++void __init at91_gpio_leds(struct gpio_led *leds, int nr)
++{
++ int i;
++
++ if (!nr)
++ return;
++
++ for (i = 0; i < nr; i++)
++ at91_set_gpio_output(leds[i].gpio, leds[i].active_low);
++
++ led_data.leds = leds;
++ led_data.num_leds = nr;
++ platform_device_register(&at91_leds);
++}
++#else
++void __init at91_gpio_leds(struct gpio_led *leds, int nr) {}
++#endif
++
++
+ /* --------------------------------------------------------------------
+ * UART
+ * -------------------------------------------------------------------- */
+diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c
+index e47381e..10eb802 100644
+--- a/arch/arm/mach-at91/at91sam9260.c
++++ b/arch/arm/mach-at91/at91sam9260.c
+@@ -269,6 +269,33 @@ static void at91sam9260_reset(void)
+
+
+ /* --------------------------------------------------------------------
++ * Timer/Counter library initialization
++ * -------------------------------------------------------------------- */
++#ifdef CONFIG_ATMEL_TCLIB
++
++#include "tclib.h"
++
++static struct atmel_tcblock at91sam9260_tcblocks[] = {
++ [0] = {
++ .physaddr = AT91SAM9260_BASE_TCB0,
++ .irq = { AT91SAM9260_ID_TC0, AT91SAM9260_ID_TC1, AT91SAM9260_ID_TC2 },
++ .clk = { &tc0_clk, &tc1_clk, &tc2_clk },
++ },
++ [1] = {
++ .physaddr = AT91SAM9260_BASE_TCB1,
++ .irq = { AT91SAM9260_ID_TC3, AT91SAM9260_ID_TC4, AT91SAM9260_ID_TC5 },
++ .clk = { &tc3_clk, &tc4_clk, &tc5_clk },
++ },
++};
++
++#define at91sam9260_tc_init() atmel_tc_init(at91sam9260_tcblocks, ARRAY_SIZE(at91sam9260_tcblocks))
++
++#else
++#define at91sam9260_tc_init() do {} while(0)
++#endif
++
++
++/* --------------------------------------------------------------------
+ * AT91SAM9260 processor initialization
+ * -------------------------------------------------------------------- */
+
+@@ -315,6 +342,9 @@ void __init at91sam9260_initialize(unsigned long main_clock)
+
+ /* Register GPIO subsystem */
+ at91_gpio_init(at91sam9260_gpio, 3);
++
++ /* Initialize the Timer/Counter blocks */
++ at91sam9260_tc_init();
+ }
+
+ /* --------------------------------------------------------------------
+@@ -327,30 +357,30 @@ void __init at91sam9260_initialize(unsigned long main_clock)
+ static unsigned int at91sam9260_default_irq_priority[NR_AIC_IRQS] __initdata = {
+ 7, /* Advanced Interrupt Controller */
+ 7, /* System Peripherals */
+- 0, /* Parallel IO Controller A */
+- 0, /* Parallel IO Controller B */
+- 0, /* Parallel IO Controller C */
++ 1, /* Parallel IO Controller A */
++ 1, /* Parallel IO Controller B */
++ 1, /* Parallel IO Controller C */
+ 0, /* Analog-to-Digital Converter */
+- 6, /* USART 0 */
+- 6, /* USART 1 */
+- 6, /* USART 2 */
++ 5, /* USART 0 */
++ 5, /* USART 1 */
++ 5, /* USART 2 */
+ 0, /* Multimedia Card Interface */
+- 4, /* USB Device Port */
+- 0, /* Two-Wire Interface */
+- 6, /* Serial Peripheral Interface 0 */
+- 6, /* Serial Peripheral Interface 1 */
++ 2, /* USB Device Port */
++ 6, /* Two-Wire Interface */
++ 5, /* Serial Peripheral Interface 0 */
++ 5, /* Serial Peripheral Interface 1 */
+ 5, /* Serial Synchronous Controller */
+ 0,
+ 0,
+ 0, /* Timer Counter 0 */
+ 0, /* Timer Counter 1 */
+ 0, /* Timer Counter 2 */
+- 3, /* USB Host port */
++ 2, /* USB Host port */
+ 3, /* Ethernet */
+ 0, /* Image Sensor Interface */
+- 6, /* USART 3 */
+- 6, /* USART 4 */
+- 6, /* USART 5 */
++ 5, /* USART 3 */
++ 5, /* USART 4 */
++ 5, /* USART 5 */
+ 0, /* Timer Counter 3 */
+ 0, /* Timer Counter 4 */
+ 0, /* Timer Counter 5 */
+diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
+index 3091bf4..883b5e7 100644
+--- a/arch/arm/mach-at91/at91sam9260_devices.c
++++ b/arch/arm/mach-at91/at91sam9260_devices.c
+@@ -539,6 +539,46 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
+
+
+ /* --------------------------------------------------------------------
++ * RTC (RTT)
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_RTC_DRV_AT91SAM9) || defined(CONFIG_RTC_DRV_AT91SAM9_MODULE)
++static struct platform_device at91sam9260_rtc_device = {
++ .name = "at91_rtc",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_rtc(void)
++{
++ platform_device_register(&at91sam9260_rtc_device);
++}
++#else
++static void __init at91_add_device_rtc(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
++ * Watchdog
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
++static struct platform_device at91sam9260_wdt_device = {
++ .name = "at91_wdt",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_watchdog(void)
++{
++ platform_device_register(&at91sam9260_wdt_device);
++}
++#else
++static void __init at91_add_device_watchdog(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
+ * LEDs
+ * -------------------------------------------------------------------- */
+
+@@ -560,6 +600,38 @@ void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
+ #endif
+
+
++#if defined(CONFIG_NEW_LEDS)
++static struct gpio_led_platform_data led_data;
++
++static struct platform_device at91_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &led_data,
++ }
++};
++
++void __init at91_gpio_leds(struct gpio_led *leds, int nr)
++{
++ int i;
++
++ if (!nr)
++ return;
++
++ at91_leds.dev.platform_data = leds;
++
++ for (i = 0; i < nr; i++)
++ at91_set_gpio_output(leds[i].gpio, leds[i].active_low);
++
++ led_data.leds = leds;
++ led_data.num_leds = nr;
++ platform_device_register(&at91_leds);
++}
++#else
++void __init at91_gpio_leds(struct gpio_led *leds, int nr) {}
++#endif
++
++
+ /* --------------------------------------------------------------------
+ * UART
+ * -------------------------------------------------------------------- */
+@@ -898,6 +970,8 @@ void __init at91_add_device_serial(void) {}
+ */
+ static int __init at91_add_standard_devices(void)
+ {
++ at91_add_device_rtc();
++ at91_add_device_watchdog();
+ return 0;
+ }
+
+diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
+index dfe8c39..396bf2d 100644
+--- a/arch/arm/mach-at91/at91sam9261.c
++++ b/arch/arm/mach-at91/at91sam9261.c
+@@ -247,6 +247,28 @@ static void at91sam9261_reset(void)
+
+
+ /* --------------------------------------------------------------------
++ * Timer/Counter library initialization
++ * -------------------------------------------------------------------- */
++#ifdef CONFIG_ATMEL_TCLIB
++
++#include "tclib.h"
++
++static struct atmel_tcblock at91sam9261_tcblocks[] = {
++ [0] = {
++ .physaddr = AT91SAM9261_BASE_TCB0,
++ .irq = { AT91SAM9261_ID_TC0, AT91SAM9261_ID_TC1, AT91SAM9261_ID_TC2 },
++ .clk = { &tc0_clk, &tc1_clk, &tc2_clk },
++ }
++};
++
++#define at91sam9261_tc_init() atmel_tc_init(at91sam9261_tcblocks, ARRAY_SIZE(at91sam9261_tcblocks))
++
++#else
++#define at91sam9261_tc_init() do {} while(0)
++#endif
++
++
++/* --------------------------------------------------------------------
+ * AT91SAM9261 processor initialization
+ * -------------------------------------------------------------------- */
+
+@@ -267,6 +289,9 @@ void __init at91sam9261_initialize(unsigned long main_clock)
+
+ /* Register GPIO subsystem */
+ at91_gpio_init(at91sam9261_gpio, 3);
++
++ /* Initialize the Timer/Counter blocks */
++ at91sam9261_tc_init();
+ }
+
+ /* --------------------------------------------------------------------
+@@ -279,25 +304,25 @@ void __init at91sam9261_initialize(unsigned long main_clock)
+ static unsigned int at91sam9261_default_irq_priority[NR_AIC_IRQS] __initdata = {
+ 7, /* Advanced Interrupt Controller */
+ 7, /* System Peripherals */
+- 0, /* Parallel IO Controller A */
+- 0, /* Parallel IO Controller B */
+- 0, /* Parallel IO Controller C */
++ 1, /* Parallel IO Controller A */
++ 1, /* Parallel IO Controller B */
++ 1, /* Parallel IO Controller C */
+ 0,
+- 6, /* USART 0 */
+- 6, /* USART 1 */
+- 6, /* USART 2 */
++ 5, /* USART 0 */
++ 5, /* USART 1 */
++ 5, /* USART 2 */
+ 0, /* Multimedia Card Interface */
+- 4, /* USB Device Port */
+- 0, /* Two-Wire Interface */
+- 6, /* Serial Peripheral Interface 0 */
+- 6, /* Serial Peripheral Interface 1 */
+- 5, /* Serial Synchronous Controller 0 */
+- 5, /* Serial Synchronous Controller 1 */
+- 5, /* Serial Synchronous Controller 2 */
++ 2, /* USB Device Port */
++ 6, /* Two-Wire Interface */
++ 5, /* Serial Peripheral Interface 0 */
++ 5, /* Serial Peripheral Interface 1 */
++ 4, /* Serial Synchronous Controller 0 */
++ 4, /* Serial Synchronous Controller 1 */
++ 4, /* Serial Synchronous Controller 2 */
+ 0, /* Timer Counter 0 */
+ 0, /* Timer Counter 1 */
+ 0, /* Timer Counter 2 */
+- 3, /* USB Host port */
++ 2, /* USB Host port */
+ 3, /* LCD Controller */
+ 0,
+ 0,
+diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c
+index 64979a9..a47b95d 100644
+--- a/arch/arm/mach-at91/at91sam9261_devices.c
++++ b/arch/arm/mach-at91/at91sam9261_devices.c
+@@ -507,6 +507,17 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
+ return;
+ }
+
++#if defined(CONFIG_FB_ATMEL_STN)
++ at91_set_A_periph(AT91_PIN_PB0, 0); /* LCDVSYNC */
++ at91_set_A_periph(AT91_PIN_PB1, 0); /* LCDHSYNC */
++ at91_set_A_periph(AT91_PIN_PB2, 0); /* LCDDOTCK */
++ at91_set_A_periph(AT91_PIN_PB3, 0); /* LCDDEN */
++ at91_set_A_periph(AT91_PIN_PB4, 0); /* LCDCC */
++ at91_set_A_periph(AT91_PIN_PB5, 0); /* LCDD0 */
++ at91_set_A_periph(AT91_PIN_PB6, 0); /* LCDD1 */
++ at91_set_A_periph(AT91_PIN_PB7, 0); /* LCDD2 */
++ at91_set_A_periph(AT91_PIN_PB8, 0); /* LCDD3 */
++#else
+ at91_set_A_periph(AT91_PIN_PB1, 0); /* LCDHSYNC */
+ at91_set_A_periph(AT91_PIN_PB2, 0); /* LCDDOTCK */
+ at91_set_A_periph(AT91_PIN_PB3, 0); /* LCDDEN */
+@@ -529,6 +540,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
+ at91_set_B_periph(AT91_PIN_PB26, 0); /* LCDD21 */
+ at91_set_B_periph(AT91_PIN_PB27, 0); /* LCDD22 */
+ at91_set_B_periph(AT91_PIN_PB28, 0); /* LCDD23 */
++#endif
+
+ lcdc_data = *data;
+ platform_device_register(&at91_lcdc_device);
+@@ -539,6 +551,46 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
+
+
+ /* --------------------------------------------------------------------
++ * RTC (RTT)
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_RTC_DRV_AT91SAM9) || defined(CONFIG_RTC_DRV_AT91SAM9_MODULE)
++static struct platform_device at91sam9261_rtc_device = {
++ .name = "at91_rtc",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_rtc(void)
++{
++ platform_device_register(&at91sam9261_rtc_device);
++}
++#else
++static void __init at91_add_device_rtc(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
++ * Watchdog
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
++static struct platform_device at91sam9261_wdt_device = {
++ .name = "at91_wdt",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_watchdog(void)
++{
++ platform_device_register(&at91sam9261_wdt_device);
++}
++#else
++static void __init at91_add_device_watchdog(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
+ * LEDs
+ * -------------------------------------------------------------------- */
+
+@@ -560,6 +612,38 @@ void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
+ #endif
+
+
++#if defined(CONFIG_NEW_LEDS)
++static struct gpio_led_platform_data led_data;
++
++static struct platform_device at91_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &led_data,
++ }
++};
++
++void __init at91_gpio_leds(struct gpio_led *leds, int nr)
++{
++ int i;
++
++ if (!nr)
++ return;
++
++ at91_leds.dev.platform_data = leds;
++
++ for (i = 0; i < nr; i++)
++ at91_set_gpio_output(leds[i].gpio, leds[i].active_low);
++
++ led_data.leds = leds;
++ led_data.num_leds = nr;
++ platform_device_register(&at91_leds);
++}
++#else
++void __init at91_gpio_leds(struct gpio_led *leds, int nr) {}
++#endif
++
++
+ /* --------------------------------------------------------------------
+ * UART
+ * -------------------------------------------------------------------- */
+@@ -774,6 +858,8 @@ void __init at91_add_device_serial(void) {}
+ */
+ static int __init at91_add_standard_devices(void)
+ {
++ at91_add_device_rtc();
++ at91_add_device_watchdog();
+ return 0;
+ }
+
+diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c
+index 00e27b1..c836bf7 100644
+--- a/arch/arm/mach-at91/at91sam9263.c
++++ b/arch/arm/mach-at91/at91sam9263.c
+@@ -273,6 +273,28 @@ static void at91sam9263_reset(void)
+
+
+ /* --------------------------------------------------------------------
++ * Timer/Counter library initialization
++ * -------------------------------------------------------------------- */
++#ifdef CONFIG_ATMEL_TCLIB
++
++#include "tclib.h"
++
++static struct atmel_tcblock at91sam9263_tcblocks[] = {
++ [0] = {
++ .physaddr = AT91SAM9263_BASE_TCB0,
++ .irq = { AT91SAM9263_ID_TCB, AT91SAM9263_ID_TCB, AT91SAM9263_ID_TCB },
++ .clk = { &tcb_clk, &tcb_clk, &tcb_clk },
++ }
++};
++
++#define at91sam9263_tc_init() atmel_tc_init(at91sam9263_tcblocks, ARRAY_SIZE(at91sam9263_tcblocks))
++
++#else
++#define at91sam9263_tc_init() do {} while(0)
++#endif
++
++
++/* --------------------------------------------------------------------
+ * AT91SAM9263 processor initialization
+ * -------------------------------------------------------------------- */
+
+@@ -292,6 +314,9 @@ void __init at91sam9263_initialize(unsigned long main_clock)
+
+ /* Register GPIO subsystem */
+ at91_gpio_init(at91sam9263_gpio, 5);
++
++ /* Initialize the Timer/Counter blocks */
++ at91sam9263_tc_init();
+ }
+
+ /* --------------------------------------------------------------------
+@@ -304,34 +329,34 @@ void __init at91sam9263_initialize(unsigned long main_clock)
+ static unsigned int at91sam9263_default_irq_priority[NR_AIC_IRQS] __initdata = {
+ 7, /* Advanced Interrupt Controller (FIQ) */
+ 7, /* System Peripherals */
+- 0, /* Parallel IO Controller A */
+- 0, /* Parallel IO Controller B */
+- 0, /* Parallel IO Controller C, D and E */
++ 1, /* Parallel IO Controller A */
++ 1, /* Parallel IO Controller B */
++ 1, /* Parallel IO Controller C, D and E */
+ 0,
+ 0,
+- 6, /* USART 0 */
+- 6, /* USART 1 */
+- 6, /* USART 2 */
++ 5, /* USART 0 */
++ 5, /* USART 1 */
++ 5, /* USART 2 */
+ 0, /* Multimedia Card Interface 0 */
+ 0, /* Multimedia Card Interface 1 */
+- 4, /* CAN */
+- 0, /* Two-Wire Interface */
+- 6, /* Serial Peripheral Interface 0 */
+- 6, /* Serial Peripheral Interface 1 */
+- 5, /* Serial Synchronous Controller 0 */
+- 5, /* Serial Synchronous Controller 1 */
+- 6, /* AC97 Controller */
++ 3, /* CAN */
++ 6, /* Two-Wire Interface */
++ 5, /* Serial Peripheral Interface 0 */
++ 5, /* Serial Peripheral Interface 1 */
++ 4, /* Serial Synchronous Controller 0 */
++ 4, /* Serial Synchronous Controller 1 */
++ 5, /* AC97 Controller */
+ 0, /* Timer Counter 0, 1 and 2 */
+ 0, /* Pulse Width Modulation Controller */
+ 3, /* Ethernet */
+ 0,
+ 0, /* 2D Graphic Engine */
+- 3, /* USB Device Port */
++ 2, /* USB Device Port */
+ 0, /* Image Sensor Interface */
+ 3, /* LDC Controller */
+ 0, /* DMA Controller */
+ 0,
+- 3, /* USB Host port */
++ 2, /* USB Host port */
+ 0, /* Advanced Interrupt Controller (IRQ0) */
+ 0, /* Advanced Interrupt Controller (IRQ1) */
+ };
+diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
+index ac329a9..bb2ff26 100644
+--- a/arch/arm/mach-at91/at91sam9263_devices.c
++++ b/arch/arm/mach-at91/at91sam9263_devices.c
+@@ -663,6 +663,56 @@ void __init at91_add_device_ac97(struct atmel_ac97_data *data) {}
+
+
+ /* --------------------------------------------------------------------
++ * Image Sensor Interface
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_VIDEO_AT91_ISI) || defined(CONFIG_VIDEO_AT91_ISI_MODULE)
++
++struct resource isi_resources[] = {
++ [0] = {
++ .start = AT91SAM9263_BASE_ISI,
++ .end = AT91SAM9263_BASE_ISI + SZ_16K - 1,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = AT91SAM9263_ID_ISI,
++ .end = AT91SAM9263_ID_ISI,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct platform_device at91sam9263_isi_device = {
++ .name = "at91_isi",
++ .id = -1,
++ .resource = isi_resources,
++ .num_resources = ARRAY_SIZE(isi_resources),
++};
++
++void __init at91_add_device_isi(void)
++{
++ at91_set_A_periph(AT91_PIN_PE0, 0); /* ISI_D0 */
++ at91_set_A_periph(AT91_PIN_PE1, 0); /* ISI_D1 */
++ at91_set_A_periph(AT91_PIN_PE2, 0); /* ISI_D2 */
++ at91_set_A_periph(AT91_PIN_PE3, 0); /* ISI_D3 */
++ at91_set_A_periph(AT91_PIN_PE4, 0); /* ISI_D4 */
++ at91_set_A_periph(AT91_PIN_PE5, 0); /* ISI_D5 */
++ at91_set_A_periph(AT91_PIN_PE6, 0); /* ISI_D6 */
++ at91_set_A_periph(AT91_PIN_PE7, 0); /* ISI_D7 */
++ at91_set_A_periph(AT91_PIN_PE8, 0); /* ISI_PCK */
++ at91_set_A_periph(AT91_PIN_PE9, 0); /* ISI_HSYNC */
++ at91_set_A_periph(AT91_PIN_PE10, 0); /* ISI_VSYNC */
++ at91_set_B_periph(AT91_PIN_PE11, 0); /* ISI_MCK (PCK3) */
++ at91_set_B_periph(AT91_PIN_PE12, 0); /* ISI_PD8 */
++ at91_set_B_periph(AT91_PIN_PE13, 0); /* ISI_PD9 */
++ at91_set_B_periph(AT91_PIN_PE14, 0); /* ISI_PD10 */
++ at91_set_B_periph(AT91_PIN_PE15, 0); /* ISI_PD11 */
++}
++#else
++void __init at91_add_device_isi(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
+ * LCD Controller
+ * -------------------------------------------------------------------- */
+
+@@ -732,6 +782,46 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
+
+
+ /* --------------------------------------------------------------------
++ * RTC (RTT)
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_RTC_DRV_AT91SAM9) || defined(CONFIG_RTC_DRV_AT91SAM9_MODULE)
++static struct platform_device at91sam9263_rtc_device = {
++ .name = "at91_rtc",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_rtc(void)
++{
++ platform_device_register(&at91sam9263_rtc_device);
++}
++#else
++static void __init at91_add_device_rtc(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
++ * Watchdog
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
++static struct platform_device at91sam9263_wdt_device = {
++ .name = "at91_wdt",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_watchdog(void)
++{
++ platform_device_register(&at91sam9263_wdt_device);
++}
++#else
++static void __init at91_add_device_watchdog(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
+ * LEDs
+ * -------------------------------------------------------------------- */
+
+@@ -753,6 +843,38 @@ void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
+ #endif
+
+
++#if defined(CONFIG_NEW_LEDS)
++static struct gpio_led_platform_data led_data;
++
++static struct platform_device at91_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &led_data,
++ }
++};
++
++void __init at91_gpio_leds(struct gpio_led *leds, int nr)
++{
++ int i;
++
++ if (!nr)
++ return;
++
++ at91_leds.dev.platform_data = leds;
++
++ for (i = 0; i < nr; i++)
++ at91_set_gpio_output(leds[i].gpio, leds[i].active_low);
++
++ led_data.leds = leds;
++ led_data.num_leds = nr;
++ platform_device_register(&at91_leds);
++}
++#else
++void __init at91_gpio_leds(struct gpio_led *leds, int nr) {}
++#endif
++
++
+ /* --------------------------------------------------------------------
+ * UART
+ * -------------------------------------------------------------------- */
+@@ -971,6 +1093,8 @@ void __init at91_add_device_serial(void) {}
+ */
+ static int __init at91_add_standard_devices(void)
+ {
++ at91_add_device_rtc();
++ at91_add_device_watchdog();
+ return 0;
+ }
+
+diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c
+index 4813a35..dfe7a5f 100644
+--- a/arch/arm/mach-at91/at91sam9rl.c
++++ b/arch/arm/mach-at91/at91sam9rl.c
+@@ -246,6 +246,28 @@ static void at91sam9rl_reset(void)
+
+
+ /* --------------------------------------------------------------------
++ * Timer/Counter library initialization
++ * -------------------------------------------------------------------- */
++#ifdef CONFIG_ATMEL_TCLIB
++
++#include "tclib.h"
++
++static struct atmel_tcblock at91sam9rl_tcblocks[] = {
++ [0] = {
++ .physaddr = AT91SAM9RL_BASE_TCB0,
++ .irq = { AT91SAM9RL_ID_TC0, AT91SAM9RL_ID_TC1, AT91SAM9RL_ID_TC2 },
++ .clk = { &tc0_clk, &tc1_clk, &tc2_clk },
++ }
++};
++
++#define at91sam9rl_tc_init() atmel_tc_init(at91sam9rl_tcblocks, ARRAY_SIZE(at91sam9rl_tcblocks))
++
++#else
++#define at91sam9rl_tc_init() do {} while(0)
++#endif
++
++
++/* --------------------------------------------------------------------
+ * AT91SAM9RL processor initialization
+ * -------------------------------------------------------------------- */
+
+@@ -284,6 +306,9 @@ void __init at91sam9rl_initialize(unsigned long main_clock)
+
+ /* Register GPIO subsystem */
+ at91_gpio_init(at91sam9rl_gpio, 4);
++
++ /* Initialize the Timer/Counter blocks */
++ at91sam9rl_tc_init();
+ }
+
+ /* --------------------------------------------------------------------
+diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c
+index 2bd60a3..ad59471 100644
+--- a/arch/arm/mach-at91/at91sam9rl_devices.c
++++ b/arch/arm/mach-at91/at91sam9rl_devices.c
+@@ -384,6 +384,46 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
+
+
+ /* --------------------------------------------------------------------
++ * RTC (RTT)
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_RTC_DRV_AT91SAM9) || defined(CONFIG_RTC_DRV_AT91SAM9_MODULE)
++static struct platform_device at91sam9rl_rtc_device = {
++ .name = "at91_rtc",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_rtc(void)
++{
++ platform_device_register(&at91sam9rl_rtc_device);
++}
++#else
++static void __init at91_add_device_rtc(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
++ * Watchdog
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
++static struct platform_device at91sam9rl_wdt_device = {
++ .name = "at91_wdt",
++ .id = -1,
++ .num_resources = 0,
++};
++
++static void __init at91_add_device_watchdog(void)
++{
++ platform_device_register(&at91sam9rl_wdt_device);
++}
++#else
++static void __init at91_add_device_watchdog(void) {}
++#endif
++
++
++/* --------------------------------------------------------------------
+ * LEDs
+ * -------------------------------------------------------------------- */
+
+@@ -405,6 +445,38 @@ void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
+ #endif
+
+
++#if defined(CONFIG_NEW_LEDS)
++static struct gpio_led_platform_data led_data;
++
++static struct platform_device at91_leds = {
++ .name = "leds-gpio",
++ .id = -1,
++ .dev = {
++ .platform_data = &led_data,
++ }
++};
++
++void __init at91_gpio_leds(struct gpio_led *leds, int nr)
++{
++ int i;
++
++ if (!nr)
++ return;
++
++ at91_leds.dev.platform_data = leds;
++
++ for (i = 0; i < nr; i++)
++ at91_set_gpio_output(leds[i].gpio, leds[i].active_low);
++
++ led_data.leds = leds;
++ led_data.num_leds = nr;
++ platform_device_register(&at91_leds);
++}
++#else
++void __init at91_gpio_leds(struct gpio_led *leds, int nr) {}
++#endif
++
++
+ /* --------------------------------------------------------------------
+ * UART
+ * -------------------------------------------------------------------- */
+@@ -659,6 +731,8 @@ void __init at91_add_device_serial(void) {}
+ */
+ static int __init at91_add_standard_devices(void)
+ {
++ at91_add_device_rtc();
++ at91_add_device_watchdog();
+ return 0;
+ }
+
+diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
+new file mode 100644
+index 0000000..9a5ab71
+--- /dev/null
++++ b/arch/arm/mach-at91/board-cam60.c
+@@ -0,0 +1,148 @@
++/*
++ * KwikByte CAM60
++ *
++ * based on board-sam9260ek.c
++ * Copyright (C) 2005 SAN People
++ * Copyright (C) 2006 Atmel
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/flash.h>
++
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/at91sam926x_mc.h>
++
++#include "generic.h"
++
++
++/*
++ * Serial port configuration.
++ * 0 .. 5 = USART0 .. USART5
++ * 6 = DBGU
++ */
++static struct at91_uart_config __initdata cam60_uart_config = {
++ .console_tty = 0, /* ttyS0 */
++ .nr_tty = 1,
++ .tty_map = { 6, -1, -1, -1, -1, -1, -1 } /* ttyS0, ..., ttyS6 */
++};
++
++static void __init cam60_map_io(void)
++{
++ /* Initialize processor: 10 MHz crystal */
++ at91sam9260_initialize(10000000);
++
++ /* Setup the serial ports and console */
++ at91_init_serial(&cam60_uart_config);
++}
++
++static void __init cam60_init_irq(void)
++{
++ at91sam9260_init_interrupts(NULL);
++}
++
++
++/*
++ * SPI devices.
++ */
++#if defined(CONFIG_MTD_DATAFLASH)
++static struct mtd_partition __initdata cam60_spi_partitions[] = {
++ {
++ .name = "BOOT1",
++ .offset = 0,
++ .size = 4 * 1056,
++ },
++ {
++ .name = "BOOT2",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 256 * 1056,
++ },
++ {
++ .name = "kernel",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 2222 * 1056,
++ },
++ {
++ .name = "file system",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct flash_platform_data __initdata cam60_spi_flash_platform_data = {
++ .name = "spi_flash",
++ .parts = cam60_spi_partitions,
++ .nr_parts = ARRAY_SIZE(cam60_spi_partitions)
++};
++#endif
++
++static struct spi_board_info cam60_spi_devices[] = {
++#if defined(CONFIG_MTD_DATAFLASH)
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 15 * 1000 * 1000,
++ .bus_num = 0,
++ .platform_data = &cam60_spi_flash_platform_data
++ },
++#endif
++};
++
++
++/*
++ * MACB Ethernet device
++ */
++static struct __initdata at91_eth_data cam60_macb_data = {
++ .phy_irq_pin = AT91_PIN_PB5,
++ .is_rmii = 0,
++};
++
++
++static void __init cam60_board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++ /* SPI */
++ at91_add_device_spi(cam60_spi_devices, ARRAY_SIZE(cam60_spi_devices));
++ /* Ethernet */
++ at91_add_device_eth(&cam60_macb_data);
++}
++
++MACHINE_START(CAM60, "KwikByte CAM60")
++ /* Maintainer: KwikByte */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91sam926x_timer,
++ .map_io = cam60_map_io,
++ .init_irq = cam60_init_irq,
++ .init_machine = cam60_board_init,
++MACHINE_END
+diff --git a/arch/arm/mach-at91/board-chub.c b/arch/arm/mach-at91/board-chub.c
+new file mode 100644
+index 0000000..01d8ec5
+--- /dev/null
++++ b/arch/arm/mach-at91/board-chub.c
+@@ -0,0 +1,132 @@
++/*
++ * linux/arch/arm/mach-at91/board-chub.c
++ *
++ * Copyright (C) 2005 SAN People, adapted for Promwad Chub board
++ * by Kuten Ivan
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++
++#include "generic.h"
++
++/*
++ * Serial port configuration.
++ * 0 .. 3 = USART0 .. USART3
++ * 4 = DBGU
++ */
++static struct at91_uart_config __initdata chub_uart_config = {
++ .console_tty = 0, /* ttyS0 */
++ .nr_tty = 5,
++ .tty_map = { 4, 0, 1, 2, 3 } /* ttyS0, ..., ttyS4 */
++};
++
++static void __init chub_init_irq(void)
++{
++ at91rm9200_init_interrupts(NULL);
++}
++
++static void __init chub_map_io(void)
++{
++ /* Initialize clocks: 18.432 MHz crystal */
++ at91rm9200_initialize(18432000, AT91RM9200_PQFP);
++
++ /* Setup the serial ports and console */
++ at91_init_serial(&chub_uart_config);
++}
++
++static struct at91_eth_data __initdata chub_eth_data = {
++ .phy_irq_pin = AT91_PIN_PB29,
++ .is_rmii = 0,
++};
++
++static struct mtd_partition __initdata chub_nand_partition[] = {
++ {
++ .name = "NAND Partition 1",
++ .offset = 0,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
++{
++ *num_partitions = ARRAY_SIZE(chub_nand_partition);
++ return chub_nand_partition;
++}
++
++static struct at91_nand_data __initdata chub_nand_data = {
++ .ale = 22,
++ .cle = 21,
++ .enable_pin = AT91_PIN_PA27,
++ .partition_info = nand_partitions,
++};
++
++static struct spi_board_info chub_spi_devices[] = {
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 15 * 1000 * 1000,
++ },
++};
++
++static void __init chub_board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++ /* I2C */
++ at91_add_device_i2c(NULL, 0);
++ /* Ethernet */
++ at91_add_device_eth(&chub_eth_data);
++ /* SPI */
++ at91_add_device_spi(chub_spi_devices, ARRAY_SIZE(chub_spi_devices));
++ /* NAND Flash */
++ at91_add_device_nand(&chub_nand_data);
++ /* Disable write protect for NAND */
++ at91_set_gpio_output(AT91_PIN_PB7, 1);
++ /* Power enable for 3x RS-232 and 1x RS-485 */
++ at91_set_gpio_output(AT91_PIN_PB9, 1);
++ /* Disable write protect for FRAM */
++ at91_set_gpio_output(AT91_PIN_PA21, 1);
++ /* Disable write protect for Dataflash */
++ at91_set_gpio_output(AT91_PIN_PA19, 1);
++}
++
++MACHINE_START(CHUB, "Promwad Chub")
++ /* Maintainer: Ivan Kuten AT Promwad DOT com */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91rm9200_timer,
++ .map_io = chub_map_io,
++ .init_irq = chub_init_irq,
++ .init_machine = chub_board_init,
++MACHINE_END
+diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c
+index d0aa20c..9f1f4ea 100644
+--- a/arch/arm/mach-at91/board-csb337.c
++++ b/arch/arm/mach-at91/board-csb337.c
+@@ -24,6 +24,7 @@
+ #include <linux/module.h>
+ #include <linux/platform_device.h>
+ #include <linux/spi/spi.h>
++#include <linux/interrupt.h>
+ #include <linux/mtd/physmap.h>
+
+ #include <asm/hardware.h>
+@@ -59,6 +60,7 @@ static void __init csb337_map_io(void)
+
+ /* Setup the LEDs */
+ at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
++ at91_set_gpio_output(AT91_PIN_PB2, 1); /* third (unused) LED */
+
+ /* Setup the serial ports and console */
+ at91_init_serial(&csb337_uart_config);
+@@ -156,6 +158,58 @@ static struct platform_device csb_flash = {
+ .num_resources = ARRAY_SIZE(csb_flash_resources),
+ };
+
++static struct gpio_led csb337_leds[] = {
++ {
++ .name = "led0",
++ .gpio = AT91_PIN_PB0,
++ .active_low = 1,
++ .default_trigger = "heartbeat",
++ },
++ {
++ .name = "led1",
++ .gpio = AT91_PIN_PB1,
++ .active_low = 1,
++ .default_trigger = "timer",
++ },
++ {
++ .name = "led2",
++ .active_low = 1,
++ .gpio = AT91_PIN_PB2,
++ }
++};
++
++#if defined(CONFIG_CSB300_WAKE_SW0) || defined(CONFIG_CSB300_WAKE_SW1)
++static irqreturn_t switch_irq_handler(int irq, void *context)
++{
++ return IRQ_HANDLED;
++}
++
++static inline void __init switch_irq_setup(int irq, char *name, unsigned long mode)
++{
++ int res;
++
++ res = request_irq(irq, switch_irq_handler, IRQF_SAMPLE_RANDOM | mode, name, NULL);
++ if (res == 0)
++ enable_irq_wake(irq);
++}
++
++static void __init csb300_switches(void)
++{
++#ifdef CONFIG_CSB300_WAKE_SW0
++ at91_set_A_periph(AT91_PIN_PB29, 1); /* IRQ0 */
++ switch_irq_setup(AT91RM9200_ID_IRQ0, "csb300_sw0", IRQF_TRIGGER_FALLING);
++#endif
++#ifdef CONFIG_CSB300_WAKE_SW1
++ at91_set_gpio_input(AT91_PIN_PB28, 1);
++ at91_set_deglitch(AT91_PIN_PB28, 1);
++ switch_irq_setup(AT91_PIN_PB28, "csb300_sw1", IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING);
++#endif
++ /* there's also SW2 at PA21, GPIO or TIOA2 */
++}
++#else
++static void __init csb300_switches(void) {}
++#endif
++
+ static void __init csb337_board_init(void)
+ {
+ /* Serial */
+@@ -175,8 +229,12 @@ static void __init csb337_board_init(void)
+ at91_add_device_spi(csb337_spi_devices, ARRAY_SIZE(csb337_spi_devices));
+ /* MMC */
+ at91_add_device_mmc(0, &csb337_mmc_data);
++ /* LEDS */
++ at91_gpio_leds(csb337_leds, ARRAY_SIZE(csb337_leds));
+ /* NOR flash */
+ platform_device_register(&csb_flash);
++ /* Switches on CSB300 */
++ csb300_switches();
+ }
+
+ MACHINE_START(CSB337, "Cogent CSB337")
+diff --git a/arch/arm/mach-at91/board-dk.c b/arch/arm/mach-at91/board-dk.c
+index 40c9e43..4d9c153 100644
+--- a/arch/arm/mach-at91/board-dk.c
++++ b/arch/arm/mach-at91/board-dk.c
+@@ -73,6 +73,185 @@ static void __init dk_init_irq(void)
+ at91rm9200_init_interrupts(NULL);
+ }
+
++#if defined(CONFIG_FB_S1D13XXX) || defined(CONFIG_FB_S1D13XXX_MODULE)
++#include <video/s1d13xxxfb.h>
++#include <asm/arch/ics1523.h>
++
++/* EPSON S1D13806 FB */
++#define AT91_FB_REG_BASE 0x30000000L
++#define AT91_FB_REG_SIZE 0x200
++#define AT91_FB_VMEM_BASE 0x30200000L
++#define AT91_FB_VMEM_SIZE 0x140000L
++
++static void __init dk_init_video(void)
++{
++ /* NWAIT Signal */
++ at91_set_A_periph(AT91_PIN_PC6, 0);
++
++ /* Initialization of the Static Memory Controller for Chip Select 2 */
++ at91_sys_write(AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */
++ | AT91_SMC_WSEN | AT91_SMC_NWS_(4) /* wait states */
++ | AT91_SMC_TDF_(1) /* float time */
++ );
++
++ at91_ics1523_init();
++}
++
++/* CRT: (active) 640x480 60Hz (PCLK=CLKI=25.175MHz)
++ Memory: Embedded SDRAM (MCLK=CLKI3=50.000MHz) (BUSCLK=60.000MHz) */
++static const struct s1d13xxxfb_regval dk_s1dfb_initregs[] = {
++ {S1DREG_MISC, 0x00}, /* Enable Memory/Register select bit */
++ {S1DREG_COM_DISP_MODE, 0x00}, /* disable display output */
++ {S1DREG_GPIO_CNF0, 0x00},
++ {S1DREG_GPIO_CNF1, 0x00},
++ {S1DREG_GPIO_CTL0, 0x08},
++ {S1DREG_GPIO_CTL1, 0x00},
++ {S1DREG_CLK_CNF, 0x01}, /* no divide, MCLK source is CLKI3 0x02*/
++ {S1DREG_LCD_CLK_CNF, 0x00},
++ {S1DREG_CRT_CLK_CNF, 0x00},
++ {S1DREG_MPLUG_CLK_CNF, 0x00},
++ {S1DREG_CPU2MEM_WST_SEL, 0x01}, /* 2*period(MCLK) - 4ns > period(BCLK) */
++ {S1DREG_SDRAM_REF_RATE, 0x03}, /* 32768 <= MCLK <= 50000 (MHz) */
++ {S1DREG_SDRAM_TC0, 0x00}, /* MCLK source freq (MHz): */
++ {S1DREG_SDRAM_TC1, 0x01}, /* 42 <= MCLK <= 50 */
++ {S1DREG_MEM_CNF, 0x80}, /* SDRAM Initialization - needed before mem access */
++ {S1DREG_PANEL_TYPE, 0x25}, /* std TFT 16bit, 8bit SCP format 2, single passive LCD */
++ {S1DREG_MOD_RATE, 0x00}, /* toggle every FPFRAME */
++ {S1DREG_LCD_DISP_HWIDTH, 0x4F}, /* 680 pix */
++ {S1DREG_LCD_NDISP_HPER, 0x12}, /* 152 pix */
++ {S1DREG_TFT_FPLINE_START, 0x01}, /* 13 pix */
++ {S1DREG_TFT_FPLINE_PWIDTH, 0x0B}, /* 96 pix */
++ {S1DREG_LCD_DISP_VHEIGHT0, 0xDF},
++ {S1DREG_LCD_DISP_VHEIGHT1, 0x01}, /* 480 lines */
++ {S1DREG_LCD_NDISP_VPER, 0x2C}, /* 44 lines */
++ {S1DREG_TFT_FPFRAME_START, 0x0A}, /* 10 lines */
++ {S1DREG_TFT_FPFRAME_PWIDTH, 0x01}, /* 2 lines */
++ {S1DREG_LCD_DISP_MODE, 0x05}, /* 16 bpp */
++ {S1DREG_LCD_MISC, 0x00}, /* dithering enabled, dual panel buffer enabled */
++ {S1DREG_LCD_DISP_START0, 0x00},
++ {S1DREG_LCD_DISP_START1, 0xC8},
++ {S1DREG_LCD_DISP_START2, 0x00},
++ {S1DREG_LCD_MEM_OFF0, 0x80},
++ {S1DREG_LCD_MEM_OFF1, 0x02},
++ {S1DREG_LCD_PIX_PAN, 0x00},
++ {S1DREG_LCD_DISP_FIFO_HTC, 0x3B},
++ {S1DREG_LCD_DISP_FIFO_LTC, 0x3C},
++ {S1DREG_CRT_DISP_HWIDTH, 0x4F}, /* 680 pix */
++ {S1DREG_CRT_NDISP_HPER, 0x13}, /* 160 pix */
++ {S1DREG_CRT_HRTC_START, 0x01}, /* 13 pix */
++ {S1DREG_CRT_HRTC_PWIDTH, 0x0B}, /* 96 pix */
++ {S1DREG_CRT_DISP_VHEIGHT0, 0xDF},
++ {S1DREG_CRT_DISP_VHEIGHT1, 0x01}, /* 480 lines */
++ {S1DREG_CRT_NDISP_VPER, 0x2B}, /* 44 lines */
++ {S1DREG_CRT_VRTC_START, 0x09}, /* 10 lines */
++ {S1DREG_CRT_VRTC_PWIDTH, 0x01}, /* 2 lines */
++ {S1DREG_TV_OUT_CTL, 0x10},
++ {S1DREG_CRT_DISP_MODE, 0x05}, /* 16 bpp */
++ {S1DREG_CRT_DISP_START0, 0x00},
++ {S1DREG_CRT_DISP_START1, 0x00},
++ {S1DREG_CRT_DISP_START2, 0x00},
++ {S1DREG_CRT_MEM_OFF0, 0x80},
++ {S1DREG_CRT_MEM_OFF1, 0x02},
++ {S1DREG_CRT_PIX_PAN, 0x00},
++ {S1DREG_CRT_DISP_FIFO_HTC, 0x3B},
++ {S1DREG_CRT_DISP_FIFO_LTC, 0x3C},
++ {S1DREG_LCD_CUR_CTL, 0x00}, /* inactive */
++ {S1DREG_LCD_CUR_START, 0x01},
++ {S1DREG_LCD_CUR_XPOS0, 0x00},
++ {S1DREG_LCD_CUR_XPOS1, 0x00},
++ {S1DREG_LCD_CUR_YPOS0, 0x00},
++ {S1DREG_LCD_CUR_YPOS1, 0x00},
++ {S1DREG_LCD_CUR_BCTL0, 0x00},
++ {S1DREG_LCD_CUR_GCTL0, 0x00},
++ {S1DREG_LCD_CUR_RCTL0, 0x00},
++ {S1DREG_LCD_CUR_BCTL1, 0x1F},
++ {S1DREG_LCD_CUR_GCTL1, 0x3F},
++ {S1DREG_LCD_CUR_RCTL1, 0x1F},
++ {S1DREG_LCD_CUR_FIFO_HTC, 0x00},
++ {S1DREG_CRT_CUR_CTL, 0x00}, /* inactive */
++ {S1DREG_CRT_CUR_START, 0x01},
++ {S1DREG_CRT_CUR_XPOS0, 0x00},
++ {S1DREG_CRT_CUR_XPOS1, 0x00},
++ {S1DREG_CRT_CUR_YPOS0, 0x00},
++ {S1DREG_CRT_CUR_YPOS1, 0x00},
++ {S1DREG_CRT_CUR_BCTL0, 0x00},
++ {S1DREG_CRT_CUR_GCTL0, 0x00},
++ {S1DREG_CRT_CUR_RCTL0, 0x00},
++ {S1DREG_CRT_CUR_BCTL1, 0x1F},
++ {S1DREG_CRT_CUR_GCTL1, 0x3F},
++ {S1DREG_CRT_CUR_RCTL1, 0x1F},
++ {S1DREG_CRT_CUR_FIFO_HTC, 0x00},
++ {S1DREG_BBLT_CTL0, 0x00},
++ {S1DREG_BBLT_CTL0, 0x00},
++ {S1DREG_BBLT_CC_EXP, 0x00},
++ {S1DREG_BBLT_OP, 0x00},
++ {S1DREG_BBLT_SRC_START0, 0x00},
++ {S1DREG_BBLT_SRC_START1, 0x00},
++ {S1DREG_BBLT_SRC_START2, 0x00},
++ {S1DREG_BBLT_DST_START0, 0x00},
++ {S1DREG_BBLT_DST_START1, 0x00},
++ {S1DREG_BBLT_DST_START2, 0x00},
++ {S1DREG_BBLT_MEM_OFF0, 0x00},
++ {S1DREG_BBLT_MEM_OFF1, 0x00},
++ {S1DREG_BBLT_WIDTH0, 0x00},
++ {S1DREG_BBLT_WIDTH1, 0x00},
++ {S1DREG_BBLT_HEIGHT0, 0x00},
++ {S1DREG_BBLT_HEIGHT1, 0x00},
++ {S1DREG_BBLT_BGC0, 0x00},
++ {S1DREG_BBLT_BGC1, 0x00},
++ {S1DREG_BBLT_FGC0, 0x00},
++ {S1DREG_BBLT_FGC1, 0x00},
++ {S1DREG_LKUP_MODE, 0x00}, /* LCD LUT r | LCD and CRT/TV LUT w */
++ {S1DREG_LKUP_ADDR, 0x00},
++ {S1DREG_PS_CNF, 0x00}, /* Power Save disable */
++ {S1DREG_PS_STATUS, 0x02}, /* LCD Panel down, mem up */
++ {S1DREG_CPU2MEM_WDOGT, 0x00},
++ {S1DREG_COM_DISP_MODE, 0x02}, /* enable CRT display output */
++};
++
++static struct s1d13xxxfb_pdata dk_s1dfb_pdata = {
++ .initregs = dk_s1dfb_initregs,
++ .initregssize = ARRAY_SIZE(dk_s1dfb_initregs),
++ .platform_init_video = dk_init_video,
++};
++
++static u64 s1dfb_dmamask = 0xffffffffUL;
++
++static struct resource dk_s1dfb_resource[] = {
++ [0] = { /* video mem */
++ .name = "s1d13806 memory",
++ .start = AT91_FB_VMEM_BASE,
++ .end = AT91_FB_VMEM_BASE + AT91_FB_VMEM_SIZE -1,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = { /* video registers */
++ .name = "s1d13806 registers",
++ .start = AT91_FB_REG_BASE,
++ .end = AT91_FB_REG_BASE + AT91_FB_REG_SIZE -1,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device dk_s1dfb_device = {
++ .name = "s1d13806fb",
++ .id = -1,
++ .dev = {
++ .dma_mask = &s1dfb_dmamask,
++ .coherent_dma_mask = 0xffffffff,
++ .platform_data = &dk_s1dfb_pdata,
++ },
++ .resource = dk_s1dfb_resource,
++ .num_resources = ARRAY_SIZE(dk_s1dfb_resource),
++};
++
++static void __init dk_add_device_video(void)
++{
++ platform_device_register(&dk_s1dfb_device);
++}
++#else
++static void __init dk_add_device_video(void) {}
++#endif
++
+ static struct at91_eth_data __initdata dk_eth_data = {
+ .phy_irq_pin = AT91_PIN_PC4,
+ .is_rmii = 1,
+@@ -164,7 +343,7 @@ static struct at91_nand_data __initdata dk_nand_data = {
+ #define DK_FLASH_SIZE 0x200000
+
+ static struct physmap_flash_data dk_flash_data = {
+- .width = 2,
++ .width = 2,
+ };
+
+ static struct resource dk_flash_resource = {
+@@ -183,6 +362,14 @@ static struct platform_device dk_flash = {
+ .num_resources = 1,
+ };
+
++static struct gpio_led dk_leds[] = {
++ {
++ .name = "led0",
++ .gpio = AT91_PIN_PB2,
++ .active_low = 1,
++ .default_trigger = "timer",
++ }
++};
+
+ static void __init dk_board_init(void)
+ {
+@@ -213,8 +400,10 @@ static void __init dk_board_init(void)
+ at91_add_device_nand(&dk_nand_data);
+ /* NOR Flash */
+ platform_device_register(&dk_flash);
++ /* LEDs */
++ at91_gpio_leds(dk_leds, ARRAY_SIZE(dk_leds));
+ /* VGA */
+-// dk_add_device_video();
++ dk_add_device_video();
+ }
+
+ MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
+diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c
+new file mode 100644
+index 0000000..46210c6
+--- /dev/null
++++ b/arch/arm/mach-at91/board-ecbat91.c
+@@ -0,0 +1,183 @@
++/*
++ * linux/arch/arm/mach-at91rm9200/board-ecbat91.c
++ * Copyright (C) 2007 emQbit.com.
++ *
++ * We started from board-dk.c, which is Copyright (C) 2005 SAN People.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++#include <linux/spi/flash.h>
++
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++
++#include "generic.h"
++
++
++/*
++ * Serial port configuration.
++ * 0 .. 3 = USART0 .. USART3
++ * 4 = DBGU
++ */
++static struct at91_uart_config __initdata ecb_at91uart_config = {
++ .console_tty = 0, /* ttyS0 */
++ .nr_tty = 2,
++ .tty_map = { 4, 0, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
++};
++
++static void __init ecb_at91map_io(void)
++{
++ /* Initialize processor: 18.432 MHz crystal */
++ at91rm9200_initialize(18432000, AT91RM9200_PQFP);
++
++ /* Setup the LEDs */
++ at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7);
++
++ /* Setup the serial ports and console */
++ at91_init_serial(&ecb_at91uart_config);
++}
++
++static void __init ecb_at91init_irq(void)
++{
++ at91rm9200_init_interrupts(NULL);
++}
++
++static struct at91_eth_data __initdata ecb_at91eth_data = {
++ .phy_irq_pin = AT91_PIN_PC4,
++ .is_rmii = 0,
++};
++
++static struct at91_usbh_data __initdata ecb_at91usbh_data = {
++ .ports = 1,
++};
++
++static struct at91_mmc_data __initdata ecb_at91mmc_data = {
++ .slot_b = 0,
++ .wire4 = 1,
++};
++
++
++#if defined(CONFIG_MTD_DATAFLASH)
++static struct mtd_partition __initdata my_flash0_partitions[] =
++{
++ { /* 0x8400 */
++ .name = "Darrell-loader",
++ .offset = 0,
++ .size = 12* 1056,
++ },
++ {
++ .name = "U-boot",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 110 * 1056,
++ },
++ { /* 1336 (167 blocks) pages * 1056 bytes = 0x158700 bytes */
++ .name = "Uoot-env",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 8 * 1056,
++ },
++ { /* 1336 (167 blocks) pages * 1056 bytes = 0x158700 bytes */
++ .name = "Kernel",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 1534 * 1056,
++ },
++ { /* 190200 - jffs2 root filesystem */
++ .name = "Filesystem",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL, /* 26 sectors */
++ }
++};
++
++static struct flash_platform_data __initdata my_flash0_platform = {
++ .name = "Removable flash card",
++ .parts = my_flash0_partitions,
++ .nr_parts = ARRAY_SIZE(my_flash0_partitions)
++};
++
++#endif
++
++static struct spi_board_info __initdata ecb_at91spi_devices[] = {
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 10 * 1000 * 1000,
++ .bus_num = 0,
++#if defined(CONFIG_MTD_DATAFLASH)
++ .platform_data = &my_flash0_platform,
++#endif
++ },
++ { /* User accessable spi - cs1 (250KHz) */
++ .modalias = "spi-cs1",
++ .chip_select = 1,
++ .max_speed_hz = 250 * 1000,
++ },
++ { /* User accessable spi - cs2 (1MHz) */
++ .modalias = "spi-cs2",
++ .chip_select = 2,
++ .max_speed_hz = 1 * 1000 * 1000,
++ },
++ { /* User accessable spi - cs3 (10MHz) */
++ .modalias = "spi-cs3",
++ .chip_select = 3,
++ .max_speed_hz = 10 * 1000 * 1000,
++ },
++};
++
++static void __init ecb_at91board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++
++ /* Ethernet */
++ at91_add_device_eth(&ecb_at91eth_data);
++
++ /* USB Host */
++ at91_add_device_usbh(&ecb_at91usbh_data);
++
++ /* I2C */
++ at91_add_device_i2c(NULL, 0);
++
++ /* MMC */
++ at91_add_device_mmc(0, &ecb_at91mmc_data);
++
++ /* SPI */
++ at91_add_device_spi(ecb_at91spi_devices, ARRAY_SIZE(ecb_at91spi_devices));
++}
++
++MACHINE_START(ECBAT91, "emQbit's ECB_AT91")
++ /* Maintainer: emQbit.com */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91rm9200_timer,
++ .map_io = ecb_at91map_io,
++ .init_irq = ecb_at91init_irq,
++ .init_machine = ecb_at91board_init,
++MACHINE_END
+diff --git a/arch/arm/mach-at91/board-ek.c b/arch/arm/mach-at91/board-ek.c
+index d05b1b2..6a5d310 100644
+--- a/arch/arm/mach-at91/board-ek.c
++++ b/arch/arm/mach-at91/board-ek.c
+@@ -73,6 +73,187 @@ static void __init ek_init_irq(void)
+ at91rm9200_init_interrupts(NULL);
+ }
+
++#if defined(CONFIG_FB_S1D13XXX) || defined(CONFIG_FB_S1D13XXX_MODULE)
++#include <video/s1d13xxxfb.h>
++#include <asm/arch/ics1523.h>
++
++/* EPSON S1D13806 FB */
++#define AT91_FB_REG_BASE 0x40000000L
++#define AT91_FB_REG_SIZE 0x200
++#define AT91_FB_VMEM_BASE 0x40200000L
++#define AT91_FB_VMEM_SIZE 0x140000L
++
++static void __init ek_init_video(void)
++{
++ /* NWAIT Signal */
++ at91_set_A_periph(AT91_PIN_PC6, 0);
++
++ /* Initialization of the Static Memory Controller for Chip Select 3 */
++ at91_sys_write(AT91_SMC_CSR(3), AT91_SMC_DBW_16 /* 16 bit */
++ | AT91_SMC_WSEN | AT91_SMC_NWS_(5) /* wait states */
++ | AT91_SMC_TDF_(1) /* float time */
++ );
++
++ at91_ics1523_init();
++}
++
++/* CRT: (active) 640x480 60Hz (PCLK=CLKI=25.175MHz)
++ Memory: Embedded SDRAM (MCLK=CLKI3=50.000MHz) (BUSCLK=60.000MHz) */
++static const struct s1d13xxxfb_regval ek_s1dfb_initregs[] = {
++ {S1DREG_MISC, 0x00}, /* Enable Memory/Register select bit */
++ {S1DREG_COM_DISP_MODE, 0x00}, /* disable display output */
++ {S1DREG_GPIO_CNF0, 0xFF}, // 0x00
++ {S1DREG_GPIO_CNF1, 0x1F}, // 0x08
++ {S1DREG_GPIO_CTL0, 0x00},
++ {S1DREG_GPIO_CTL1, 0x00},
++ {S1DREG_CLK_CNF, 0x01}, /* no divide, MCLK source is CLKI3 0x02*/
++ {S1DREG_LCD_CLK_CNF, 0x00},
++ {S1DREG_CRT_CLK_CNF, 0x00},
++ {S1DREG_MPLUG_CLK_CNF, 0x00},
++ {S1DREG_CPU2MEM_WST_SEL, 0x01}, /* 2*period(MCLK) - 4ns > period(BCLK) */
++ {S1DREG_SDRAM_REF_RATE, 0x03}, /* 32768 <= MCLK <= 50000 (MHz) */
++ {S1DREG_SDRAM_TC0, 0x00}, /* MCLK source freq (MHz): */
++ {S1DREG_SDRAM_TC1, 0x01}, /* 42 <= MCLK <= 50 */
++ {S1DREG_MEM_CNF, 0x80}, /* SDRAM Initialization - needed before mem access */
++ {S1DREG_PANEL_TYPE, 0x25}, /* std TFT 16bit, 8bit SCP format 2, single passive LCD */
++ {S1DREG_MOD_RATE, 0x00}, /* toggle every FPFRAME */
++ {S1DREG_LCD_DISP_HWIDTH, 0x4F}, /* 680 pix */
++ {S1DREG_LCD_NDISP_HPER, 0x12}, /* 152 pix */
++ {S1DREG_TFT_FPLINE_START, 0x01}, /* 13 pix */
++ {S1DREG_TFT_FPLINE_PWIDTH, 0x0B}, /* 96 pix */
++ {S1DREG_LCD_DISP_VHEIGHT0, 0xDF},
++ {S1DREG_LCD_DISP_VHEIGHT1, 0x01}, /* 480 lines */
++ {S1DREG_LCD_NDISP_VPER, 0x2C}, /* 44 lines */
++ {S1DREG_TFT_FPFRAME_START, 0x0A}, /* 10 lines */
++ {S1DREG_TFT_FPFRAME_PWIDTH, 0x01}, /* 2 lines */
++ {S1DREG_LCD_DISP_MODE, 0x05}, /* 16 bpp */
++ {S1DREG_LCD_MISC, 0x00}, /* dithering enabled, dual panel buffer enabled */
++ {S1DREG_LCD_DISP_START0, 0x00},
++ {S1DREG_LCD_DISP_START1, 0xC8},
++ {S1DREG_LCD_DISP_START2, 0x00},
++ {S1DREG_LCD_MEM_OFF0, 0x80},
++ {S1DREG_LCD_MEM_OFF1, 0x02},
++ {S1DREG_LCD_PIX_PAN, 0x00},
++ {S1DREG_LCD_DISP_FIFO_HTC, 0x3B},
++ {S1DREG_LCD_DISP_FIFO_LTC, 0x3C},
++ {S1DREG_CRT_DISP_HWIDTH, 0x4F}, /* 680 pix */
++ {S1DREG_CRT_NDISP_HPER, 0x13}, /* 160 pix */
++ {S1DREG_CRT_HRTC_START, 0x01}, /* 13 pix */
++ {S1DREG_CRT_HRTC_PWIDTH, 0x0B}, /* 96 pix */
++ {S1DREG_CRT_DISP_VHEIGHT0, 0xDF},
++ {S1DREG_CRT_DISP_VHEIGHT1, 0x01}, /* 480 lines */
++ {S1DREG_CRT_NDISP_VPER, 0x2B}, /* 44 lines */
++ {S1DREG_CRT_VRTC_START, 0x09}, /* 10 lines */
++ {S1DREG_CRT_VRTC_PWIDTH, 0x01}, /* 2 lines */
++ {S1DREG_TV_OUT_CTL, 0x10},
++ {0x005E, 0x9F},
++ {0x005F, 0x00},
++ {S1DREG_CRT_DISP_MODE, 0x05}, /* 16 bpp */
++ {S1DREG_CRT_DISP_START0, 0x00},
++ {S1DREG_CRT_DISP_START1, 0x00},
++ {S1DREG_CRT_DISP_START2, 0x00},
++ {S1DREG_CRT_MEM_OFF0, 0x80},
++ {S1DREG_CRT_MEM_OFF1, 0x02},
++ {S1DREG_CRT_PIX_PAN, 0x00},
++ {S1DREG_CRT_DISP_FIFO_HTC, 0x3B},
++ {S1DREG_CRT_DISP_FIFO_LTC, 0x3C},
++ {S1DREG_LCD_CUR_CTL, 0x00}, /* inactive */
++ {S1DREG_LCD_CUR_START, 0x01},
++ {S1DREG_LCD_CUR_XPOS0, 0x00},
++ {S1DREG_LCD_CUR_XPOS1, 0x00},
++ {S1DREG_LCD_CUR_YPOS0, 0x00},
++ {S1DREG_LCD_CUR_YPOS1, 0x00},
++ {S1DREG_LCD_CUR_BCTL0, 0x00},
++ {S1DREG_LCD_CUR_GCTL0, 0x00},
++ {S1DREG_LCD_CUR_RCTL0, 0x00},
++ {S1DREG_LCD_CUR_BCTL1, 0x1F},
++ {S1DREG_LCD_CUR_GCTL1, 0x3F},
++ {S1DREG_LCD_CUR_RCTL1, 0x1F},
++ {S1DREG_LCD_CUR_FIFO_HTC, 0x00},
++ {S1DREG_CRT_CUR_CTL, 0x00}, /* inactive */
++ {S1DREG_CRT_CUR_START, 0x01},
++ {S1DREG_CRT_CUR_XPOS0, 0x00},
++ {S1DREG_CRT_CUR_XPOS1, 0x00},
++ {S1DREG_CRT_CUR_YPOS0, 0x00},
++ {S1DREG_CRT_CUR_YPOS1, 0x00},
++ {S1DREG_CRT_CUR_BCTL0, 0x00},
++ {S1DREG_CRT_CUR_GCTL0, 0x00},
++ {S1DREG_CRT_CUR_RCTL0, 0x00},
++ {S1DREG_CRT_CUR_BCTL1, 0x1F},
++ {S1DREG_CRT_CUR_GCTL1, 0x3F},
++ {S1DREG_CRT_CUR_RCTL1, 0x1F},
++ {S1DREG_CRT_CUR_FIFO_HTC, 0x00},
++ {S1DREG_BBLT_CTL0, 0x00},
++ {S1DREG_BBLT_CTL0, 0x00},
++ {S1DREG_BBLT_CC_EXP, 0x00},
++ {S1DREG_BBLT_OP, 0x00},
++ {S1DREG_BBLT_SRC_START0, 0x00},
++ {S1DREG_BBLT_SRC_START1, 0x00},
++ {S1DREG_BBLT_SRC_START2, 0x00},
++ {S1DREG_BBLT_DST_START0, 0x00},
++ {S1DREG_BBLT_DST_START1, 0x00},
++ {S1DREG_BBLT_DST_START2, 0x00},
++ {S1DREG_BBLT_MEM_OFF0, 0x00},
++ {S1DREG_BBLT_MEM_OFF1, 0x00},
++ {S1DREG_BBLT_WIDTH0, 0x00},
++ {S1DREG_BBLT_WIDTH1, 0x00},
++ {S1DREG_BBLT_HEIGHT0, 0x00},
++ {S1DREG_BBLT_HEIGHT1, 0x00},
++ {S1DREG_BBLT_BGC0, 0x00},
++ {S1DREG_BBLT_BGC1, 0x00},
++ {S1DREG_BBLT_FGC0, 0x00},
++ {S1DREG_BBLT_FGC1, 0x00},
++ {S1DREG_LKUP_MODE, 0x00}, /* LCD LUT r | LCD and CRT/TV LUT w */
++ {S1DREG_LKUP_ADDR, 0x00},
++ {S1DREG_PS_CNF, 0x10}, /* Power Save disable */
++ {S1DREG_PS_STATUS, 0x02}, /* LCD Panel down, mem up */
++ {S1DREG_CPU2MEM_WDOGT, 0x00},
++ {S1DREG_COM_DISP_MODE, 0x02}, /* enable CRT display output */
++};
++
++static struct s1d13xxxfb_pdata ek_s1dfb_pdata = {
++ .initregs = ek_s1dfb_initregs,
++ .initregssize = ARRAY_SIZE(ek_s1dfb_initregs),
++ .platform_init_video = ek_init_video,
++};
++
++static u64 s1dfb_dmamask = 0xffffffffUL;
++
++static struct resource ek_s1dfb_resource[] = {
++ [0] = { /* video mem */
++ .name = "s1d13806 memory",
++ .start = AT91_FB_VMEM_BASE,
++ .end = AT91_FB_VMEM_BASE + AT91_FB_VMEM_SIZE -1,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = { /* video registers */
++ .name = "s1d13806 registers",
++ .start = AT91_FB_REG_BASE,
++ .end = AT91_FB_REG_BASE + AT91_FB_REG_SIZE -1,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device ek_s1dfb_device = {
++ .name = "s1d13806fb",
++ .id = -1,
++ .dev = {
++ .dma_mask = &s1dfb_dmamask,
++ .coherent_dma_mask = 0xffffffff,
++ .platform_data = &ek_s1dfb_pdata,
++ },
++ .resource = ek_s1dfb_resource,
++ .num_resources = ARRAY_SIZE(ek_s1dfb_resource),
++};
++
++static void __init ek_add_device_video(void)
++{
++ platform_device_register(&ek_s1dfb_device);
++}
++#else
++static void __init ek_add_device_video(void) {}
++#endif
++
+ static struct at91_eth_data __initdata ek_eth_data = {
+ .phy_irq_pin = AT91_PIN_PC4,
+ .is_rmii = 1,
+@@ -109,11 +290,20 @@ static struct spi_board_info ek_spi_devices[] = {
+ #endif
+ };
+
++static struct i2c_board_info __initdata ek_i2c_devices[] = {
++ {
++ I2C_BOARD_INFO("ics1523", 0x26),
++ },
++ {
++ I2C_BOARD_INFO("dac3550", 0x4d),
++ }
++};
++
+ #define EK_FLASH_BASE AT91_CHIPSELECT_0
+ #define EK_FLASH_SIZE 0x200000
+
+ static struct physmap_flash_data ek_flash_data = {
+- .width = 2,
++ .width = 2,
+ };
+
+ static struct resource ek_flash_resource = {
+@@ -132,6 +322,20 @@ static struct platform_device ek_flash = {
+ .num_resources = 1,
+ };
+
++static struct gpio_led ek_leds[] = {
++ {
++ .name = "led0",
++ .gpio = AT91_PIN_PB1,
++ .active_low = 1,
++ .default_trigger = "heartbeat",
++ },
++ {
++ .name = "led1",
++ .gpio = AT91_PIN_PB2,
++ .active_low = 1,
++ .default_trigger = "timer",
++ }
++};
+
+ static void __init ek_board_init(void)
+ {
+@@ -158,8 +362,10 @@ static void __init ek_board_init(void)
+ #endif
+ /* NOR Flash */
+ platform_device_register(&ek_flash);
++ /* LEDs */
++ at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds));
+ /* VGA */
+-// ek_add_device_video();
++ ek_add_device_video();
+ }
+
+ MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK")
+diff --git a/arch/arm/mach-at91/board-homematic.c b/arch/arm/mach-at91/board-homematic.c
+new file mode 100644
+index 0000000..57d16c4
+--- /dev/null
++++ b/arch/arm/mach-at91/board-homematic.c
+@@ -0,0 +1,163 @@
++/*
++ * linux/arch/arm/mach-at91/board-homematic.c
++ *
++ * Copyright (C) 2007 eQ-3 Entwicklung GmbH
++ *
++ * based on work
++ * Copyright (C) 2005 SAN People
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++#include <linux/mtd/physmap.h>
++
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/at91rm9200_mc.h>
++
++#include "generic.h"
++
++
++/*
++ * Serial port configuration.
++ * 0 .. 3 = USART0 .. USART3
++ * 4 = DBGU
++ */
++static struct at91_uart_config __initdata homematic_uart_config = {
++ .console_tty = 0, /* ttyS0 */
++ .nr_tty = 2,
++ .tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
++};
++
++static void __init homematic_map_io(void)
++{
++ /* Initialize processor: 18.432 MHz crystal */
++ at91rm9200_initialize(18432000, AT91RM9200_BGA);
++
++ /* Setup the serial ports and console */
++ at91_init_serial(&homematic_uart_config);
++}
++
++static void __init homematic_init_irq(void)
++{
++ at91rm9200_init_interrupts(NULL);
++}
++
++static struct at91_eth_data __initdata homematic_eth_data = {
++ .phy_irq_pin = AT91_PIN_PC4,
++ .is_rmii = 0,
++};
++
++static struct at91_usbh_data __initdata homematic_usbh_data = {
++ .ports = 2,
++};
++
++static struct at91_udc_data __initdata homematic_udc_data = {
++ .vbus_pin = AT91_PIN_PD4,
++ .pullup_pin = AT91_PIN_PD5,
++};
++
++static struct at91_mmc_data __initdata homematic_mmc_data = {
++ .slot_b = 0,
++ .wire4 = 1,
++};
++
++static struct spi_board_info homematic_spi_devices[] = {
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 15 * 1000 * 1000,
++ },
++};
++
++static struct mtd_partition __initdata homematic_nand_partition[] = {
++ {
++ .name = "root",
++ .offset = 0,
++ .size = 0x02000000,
++ }, {
++ .name = "storage",
++ .offset = 0x02000000,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
++{
++ *num_partitions = ARRAY_SIZE(homematic_nand_partition);
++ return homematic_nand_partition;
++}
++
++static struct at91_nand_data __initdata homematic_nand_data = {
++ .ale = 22,
++ .cle = 21,
++// .det_pin = AT91_PIN_PB1,
++ .rdy_pin = AT91_PIN_PC2,
++ .enable_pin = AT91_PIN_PC0,
++ .partition_info = nand_partitions,
++};
++
++static void __init homematic_board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++ /* Ethernet */
++ at91_add_device_eth(&homematic_eth_data);
++ /* USB Host */
++ at91_add_device_usbh(&homematic_usbh_data);
++ /* USB Device */
++ at91_add_device_udc(&homematic_udc_data);
++ at91_set_multi_drive(homematic_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
++ /* I2C */
++ at91_add_device_i2c(NULL, 0);
++ /* SPI */
++ at91_add_device_spi(homematic_spi_devices, ARRAY_SIZE(homematic_spi_devices));
++#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
++ /* DataFlash card */
++ at91_set_gpio_output(AT91_PIN_PB7, 0);
++#else
++ /* MMC */
++ at91_set_gpio_output(AT91_PIN_PB7, 1); /* this MMC card slot can optionally use SPI signaling (CS3). */
++ at91_add_device_mmc(0, &homematic_mmc_data);
++#endif
++ /* NAND */
++ at91_add_device_nand(&homematic_nand_data);
++}
++
++MACHINE_START(HOMEMATIC, "HomeMatic")
++ /* Maintainer: eQ-3 */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91rm9200_timer,
++ .map_io = homematic_map_io,
++ .init_irq = homematic_init_irq,
++ .init_machine = homematic_board_init,
++MACHINE_END
+diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
+index 4b39b9c..cc5a65a 100644
+--- a/arch/arm/mach-at91/board-kb9202.c
++++ b/arch/arm/mach-at91/board-kb9202.c
+@@ -37,6 +37,8 @@
+ #include <asm/arch/board.h>
+ #include <asm/arch/gpio.h>
+
++#include <asm/arch/at91rm9200_mc.h>
++
+ #include "generic.h"
+
+
+@@ -111,6 +113,48 @@ static struct at91_nand_data __initdata kb9202_nand_data = {
+ .partition_info = nand_partitions,
+ };
+
++
++#if defined(CONFIG_FB_S1D15605)
++#warning "Rather pass reset pin via platform_data"
++static struct resource kb9202_lcd_resources[] = {
++ [0] = {
++ .start = AT91_CHIPSELECT_2,
++ .end = AT91_CHIPSELECT_2 + 0x200FF,
++ .flags = IORESOURCE_MEM
++ },
++ [1] = { /* reset pin */
++ .start = AT91_PIN_PC22,
++ .end = AT91_PIN_PC22,
++ .flags = IORESOURCE_MEM
++ },
++};
++
++static struct platform_device kb9202_lcd_device = {
++ .name = "s1d15605fb",
++ .id = 0,
++ .num_resources = ARRAY_SIZE(kb9202_lcd_resources),
++ .resource = kb9202_lcd_resources,
++};
++
++static void __init kb9202_add_device_lcd(void)
++{
++ /* In case the boot loader did not set the chip select mode and timing */
++ at91_sys_write(AT91_SMC_CSR(2),
++ AT91_SMC_WSEN | AT91_SMC_NWS_(18) | AT91_SMC_TDF_(1) | AT91_SMC_DBW_8 |
++ AT91_SMC_RWSETUP_(1) | AT91_SMC_RWHOLD_(1));
++
++ /* Backlight pin = output, off */
++ at91_set_gpio_output(AT91_PIN_PC23, 0);
++
++ /* Reset pin = output, in reset */
++ at91_set_gpio_output(AT91_PIN_PC22, 0);
++
++ platform_device_register(&kb9202_lcd_device);
++}
++#else
++static void __init kb9202_add_device_lcd(void) {}
++#endif
++
+ static void __init kb9202_board_init(void)
+ {
+ /* Serial */
+@@ -129,6 +173,8 @@ static void __init kb9202_board_init(void)
+ at91_add_device_spi(NULL, 0);
+ /* NAND */
+ at91_add_device_nand(&kb9202_nand_data);
++ /* LCD */
++ kb9202_add_device_lcd();
+ }
+
+ MACHINE_START(KB9200, "KB920x")
+diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
+new file mode 100644
+index 0000000..6bf6f0c
+--- /dev/null
++++ b/arch/arm/mach-at91/board-sam9-l9260.c
+@@ -0,0 +1,200 @@
++/*
++ * linux/arch/arm/mach-at91/board-sam9-l9260.c
++ *
++ * Copyright (C) 2005 SAN People
++ * Copyright (C) 2006 Atmel
++ * Copyright (C) 2007 Olimex Ltd
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/at91sam926x_mc.h>
++
++#include "generic.h"
++
++
++/*
++ * Serial port configuration.
++ * 0 .. 5 = USART0 .. USART5
++ * 6 = DBGU
++ */
++static struct at91_uart_config __initdata ek_uart_config = {
++ .console_tty = 0, /* ttyS0 */
++ .nr_tty = 3,
++ .tty_map = { 6, 0, 1, -1, -1, -1, -1 } /* ttyS0, ..., ttyS6 */
++};
++
++static void __init ek_map_io(void)
++{
++ /* Initialize processor: 18.432 MHz crystal */
++ at91sam9260_initialize(18432000);
++
++ /* Setup the LEDs */
++ at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6);
++
++ /* Setup the serial ports and console */
++ at91_init_serial(&ek_uart_config);
++}
++
++static void __init ek_init_irq(void)
++{
++ at91sam9260_init_interrupts(NULL);
++}
++
++
++/*
++ * USB Host port
++ */
++static struct at91_usbh_data __initdata ek_usbh_data = {
++ .ports = 2,
++};
++
++/*
++ * USB Device port
++ */
++static struct at91_udc_data __initdata ek_udc_data = {
++ .vbus_pin = AT91_PIN_PC5,
++ .pullup_pin = 0, /* pull-up driven by UDC */
++};
++
++
++/*
++ * SPI devices.
++ */
++static struct spi_board_info ek_spi_devices[] = {
++#if !defined(CONFIG_MMC_AT91)
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 1,
++ .max_speed_hz = 15 * 1000 * 1000,
++ .bus_num = 0,
++ },
++#if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
++ { /* DataFlash card */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 15 * 1000 * 1000,
++ .bus_num = 0,
++ },
++#endif
++#endif
++};
++
++
++/*
++ * MACB Ethernet device
++ */
++static struct at91_eth_data __initdata ek_macb_data = {
++ .phy_irq_pin = AT91_PIN_PA7,
++ .is_rmii = 0,
++};
++
++
++/*
++ * NAND flash
++ */
++static struct mtd_partition __initdata ek_nand_partition[] = {
++ {
++ .name = "Bootloader Area",
++ .offset = 0,
++ .size = 10 * 1024 * 1024,
++ },
++ {
++ .name = "User Area",
++ .offset = 10 * 1024 * 1024,
++ .size = MTDPART_SIZ_FULL,
++ },
++};
++
++static struct mtd_partition * __init nand_partitions(int size, int *num_partitions)
++{
++ *num_partitions = ARRAY_SIZE(ek_nand_partition);
++ return ek_nand_partition;
++}
++
++static struct at91_nand_data __initdata ek_nand_data = {
++ .ale = 21,
++ .cle = 22,
++// .det_pin = ... not connected
++ .rdy_pin = AT91_PIN_PC13,
++ .enable_pin = AT91_PIN_PC14,
++ .partition_info = nand_partitions,
++#if defined(CONFIG_MTD_NAND_AT91_BUSWIDTH_16)
++ .bus_width_16 = 1,
++#else
++ .bus_width_16 = 0,
++#endif
++};
++
++
++/*
++ * MCI (SD/MMC)
++ */
++static struct at91_mmc_data __initdata ek_mmc_data = {
++ .slot_b = 1,
++ .wire4 = 1,
++ .det_pin = AT91_PIN_PC8,
++ .wp_pin = AT91_PIN_PC4,
++// .vcc_pin = ... not connected
++};
++
++static void __init ek_board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++ /* USB Host */
++ at91_add_device_usbh(&ek_usbh_data);
++ /* USB Device */
++ at91_add_device_udc(&ek_udc_data);
++ /* SPI */
++ at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
++ /* NAND */
++ at91_add_device_nand(&ek_nand_data);
++ /* Ethernet */
++ at91_add_device_eth(&ek_macb_data);
++ /* MMC */
++ at91_add_device_mmc(0, &ek_mmc_data);
++ /* I2C */
++ at91_add_device_i2c(NULL, 0);
++}
++
++MACHINE_START(SAM9_L9260, "Olimex SAM9-L9260")
++ /* Maintainer: Olimex */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91sam926x_timer,
++ .map_io = ek_map_io,
++ .init_irq = ek_init_irq,
++ .init_machine = ek_board_init,
++MACHINE_END
+diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
+index 550ae59..5023ca9 100644
+--- a/arch/arm/mach-at91/board-sam9261ek.c
++++ b/arch/arm/mach-at91/board-sam9261ek.c
+@@ -256,6 +256,7 @@ static struct spi_board_info ek_spi_devices[] = {
+ .bus_num = 0,
+ .platform_data = &ads_info,
+ .irq = AT91SAM9261_ID_IRQ0,
++ .controller_data = AT91_PIN_PA28, /* CS pin */
+ },
+ #endif
+ #if defined(CONFIG_MTD_AT91_DATAFLASH_CARD)
+@@ -280,6 +281,68 @@ static struct spi_board_info ek_spi_devices[] = {
+ * LCD Controller
+ */
+ #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
++
++#if defined(CONFIG_FB_ATMEL_STN)
++
++/* STN */
++static struct fb_videomode at91_stn_modes[] = {
++ {
++ .name = "SP06Q002 @ 75",
++ .refresh = 75,
++ .xres = 320, .yres = 240,
++ .pixclock = KHZ2PICOS(1440),
++
++ .left_margin = 1, .right_margin = 1,
++ .upper_margin = 0, .lower_margin = 0,
++ .hsync_len = 1, .vsync_len = 1,
++
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++ .vmode = FB_VMODE_NONINTERLACED,
++ },
++};
++
++static struct fb_monspecs at91fb_default_stn_monspecs = {
++ .manufacturer = "HIT",
++ .monitor = "SP06Q002",
++
++ .modedb = at91_stn_modes,
++ .modedb_len = ARRAY_SIZE(at91_stn_modes),
++ .hfmin = 15000,
++ .hfmax = 64000,
++ .vfmin = 50,
++ .vfmax = 150,
++};
++
++#define AT91SAM9261_DEFAULT_STN_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
++ | ATMEL_LCDC_DISTYPE_STNMONO \
++ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE \
++ | ATMEL_LCDC_IFWIDTH_4 \
++ | ATMEL_LCDC_SCANMOD_SINGLE)
++
++static void at91_lcdc_stn_power_control(int on)
++{
++ /* backlight */
++ if (on) { /* power up */
++ at91_set_gpio_value(AT91_PIN_PC14, 0);
++ at91_set_gpio_value(AT91_PIN_PC15, 0);
++ } else { /* power down */
++ at91_set_gpio_value(AT91_PIN_PC14, 1);
++ at91_set_gpio_value(AT91_PIN_PC15, 1);
++ }
++}
++
++static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
++ .default_bpp = 1,
++ .default_dmacon = ATMEL_LCDC_DMAEN,
++ .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2,
++ .default_monspecs = &at91fb_default_stn_monspecs,
++ .atmel_lcdfb_power_control = at91_lcdc_stn_power_control,
++ .guard_time = 1,
++};
++
++#else
++
++/* TFT */
+ static struct fb_videomode at91_tft_vga_modes[] = {
+ {
+ .name = "TX09D50VM1CCA @ 60",
+@@ -296,7 +359,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
+ },
+ };
+
+-static struct fb_monspecs at91fb_default_monspecs = {
++static struct fb_monspecs at91fb_default_tft_monspecs = {
+ .manufacturer = "HIT",
+ .monitor = "TX09D50VM1CCA",
+
+@@ -308,11 +371,11 @@ static struct fb_monspecs at91fb_default_monspecs = {
+ .vfmax = 150,
+ };
+
+-#define AT91SAM9261_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
++#define AT91SAM9261_DEFAULT_TFT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
+ | ATMEL_LCDC_DISTYPE_TFT \
+ | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
+
+-static void at91_lcdc_power_control(int on)
++static void at91_lcdc_tft_power_control(int on)
+ {
+ if (on)
+ at91_set_gpio_value(AT91_PIN_PA12, 0); /* power up */
+@@ -320,15 +383,15 @@ static void at91_lcdc_power_control(int on)
+ at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */
+ }
+
+-/* Driver datas */
+ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
+ .default_bpp = 16,
+ .default_dmacon = ATMEL_LCDC_DMAEN,
+- .default_lcdcon2 = AT91SAM9261_DEFAULT_LCDCON2,
+- .default_monspecs = &at91fb_default_monspecs,
+- .atmel_lcdfb_power_control = at91_lcdc_power_control,
++ .default_lcdcon2 = AT91SAM9261_DEFAULT_TFT_LCDCON2,
++ .default_monspecs = &at91fb_default_tft_monspecs,
++ .atmel_lcdfb_power_control = at91_lcdc_tft_power_control,
+ .guard_time = 1,
+ };
++#endif
+
+ #else
+ static struct atmel_lcdfb_info __initdata ek_lcdc_data;
+diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
+index ab9dcc0..dc862fe 100644
+--- a/arch/arm/mach-at91/board-sam9263ek.c
++++ b/arch/arm/mach-at91/board-sam9263ek.c
+@@ -27,6 +27,8 @@
+ #include <linux/spi/spi.h>
+ #include <linux/spi/ads7846.h>
+ #include <linux/fb.h>
++#include <linux/gpio_keys.h>
++#include <linux/input.h>
+
+ #include <video/atmel_lcdc.h>
+
+@@ -163,6 +165,7 @@ static struct at91_mmc_data __initdata ek_mmc_data = {
+ * MACB Ethernet device
+ */
+ static struct at91_eth_data __initdata ek_macb_data = {
++ .phy_irq_pin = AT91_PIN_PE31,
+ .is_rmii = 1,
+ };
+
+@@ -263,6 +266,53 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data;
+ #endif
+
+
++ /*
++ * GPIO Buttons
++ */
++#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
++static struct gpio_keys_button ek_buttons[] = {
++ {
++ .gpio = AT91_PIN_PC4,
++ .keycode = BTN_RIGHT,
++ .desc = "Right Button",
++ .active_low = 1,
++ },
++ {
++ .gpio = AT91_PIN_PC5,
++ .keycode = BTN_LEFT,
++ .desc = "Left Button",
++ .active_low = 1,
++ }
++};
++
++static struct gpio_keys_platform_data ek_button_data = {
++ .buttons = ek_buttons,
++ .nbuttons = ARRAY_SIZE(ek_buttons),
++};
++
++static struct platform_device ek_button_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .num_resources = 0,
++ .dev = {
++ .platform_data = &ek_button_data,
++ }
++};
++
++static void __init ek_add_device_buttons(void)
++{
++ at91_set_gpio_input(AT91_PIN_PC5, 0); /* left button */
++ at91_set_deglitch(AT91_PIN_PC5, 1);
++ at91_set_gpio_input(AT91_PIN_PC4, 0); /* right button */
++ at91_set_deglitch(AT91_PIN_PC4, 1);
++
++ platform_device_register(&ek_button_device);
++}
++#else
++static void __init ek_add_device_buttons(void) {}
++#endif
++
++
+ /*
+ * AC97
+ */
+@@ -294,6 +344,8 @@ static void __init ek_board_init(void)
+ at91_add_device_i2c(NULL, 0);
+ /* LCD Controller */
+ at91_add_device_lcdc(&ek_lcdc_data);
++ /* Push Buttons */
++ ek_add_device_buttons();
+ /* AC97 */
+ at91_add_device_ac97(&ek_ac97_data);
+ }
+diff --git a/arch/arm/mach-at91/board-tms.c b/arch/arm/mach-at91/board-tms.c
+new file mode 100644
+index 0000000..7c3d08d
+--- /dev/null
++++ b/arch/arm/mach-at91/board-tms.c
+@@ -0,0 +1,198 @@
++/*
++* linux/arch/arm/mach-at91/board-tms.c
++*
++* Copyright (C) 2005 SAN People
++*
++* Adapted from board-dk to sweda TMS-100 by Luiz de Barros <lboneto@gmail.com>
++*
++* This program is free software; you can redistribute it and/or modify
++* it under the terms of the GNU General Public License as published by
++* the Free Software Foundation; either version 2 of the License, or
++* (at your option) any later version.
++*
++* This program is distributed in the hope that it will be useful,
++* but WITHOUT ANY WARRANTY; without even the implied warranty of
++* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++* GNU General Public License for more details.
++*
++* You should have received a copy of the GNU General Public License
++* along with this program; if not, write to the Free Software
++* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++*/
++
++#include <linux/types.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/spi/spi.h>
++#include <linux/mtd/physmap.h>
++
++#include <asm/hardware.h>
++#include <asm/setup.h>
++#include <asm/mach-types.h>
++#include <asm/irq.h>
++
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++#include <asm/mach/irq.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/at91rm9200_mc.h>
++
++#include "generic.h"
++#include <linux/serial_8250.h>
++
++
++#define SERIAL_FLAGS (UPF_BOOT_AUTOCONF | UPF_IOREMAP| UPF_SHARE_IRQ)
++#define SERIAL_CLK (1843200)
++
++
++/*---------------------------------------------------------------------
++ * External UART
++ */
++
++#define PORT(_base, _irq) \
++ { \
++ .mapbase = _base, \
++ .irq = _irq, \
++ .uartclk = SERIAL_CLK, \
++ .iotype = UPIO_MEM, \
++ .regshift = 0, \
++ .flags = SERIAL_FLAGS, \
++ }
++
++static struct plat_serial8250_port tms_data[] = {
++ PORT(0x70000000, AT91_PIN_PC3),
++ PORT(0x80000000, AT91_PIN_PC5),
++ { },
++};
++
++static struct platform_device tms_device = {
++ .name = "serial8250",
++ .id = PLAT8250_DEV_PLATFORM,
++ .dev =
++ {
++ .platform_data = &tms_data,
++ },
++};
++
++static void setup_external_uart(void)
++{
++ at91_sys_write(AT91_SMC_CSR(2),
++ AT91_SMC_ACSS_STD
++ | AT91_SMC_DBW_8
++ | AT91_SMC_BAT
++ | AT91_SMC_WSEN
++ | AT91_SMC_NWS_(32) /* wait states */
++ | AT91_SMC_RWSETUP_(6) /* setup time */
++ | AT91_SMC_RWHOLD_(4) /* hold time */
++
++ );
++ at91_sys_write(AT91_SMC_CSR(6),
++ AT91_SMC_ACSS_STD
++ | AT91_SMC_DBW_8
++ | AT91_SMC_BAT
++ | AT91_SMC_WSEN
++ | AT91_SMC_NWS_(32) /* wait states */
++ | AT91_SMC_RWSETUP_(6) /* setup time */
++ | AT91_SMC_RWHOLD_(4) /* hold time */
++
++ );
++ at91_sys_write(AT91_SMC_CSR(7),
++ AT91_SMC_ACSS_STD
++ | AT91_SMC_DBW_8
++ | AT91_SMC_BAT
++ | AT91_SMC_WSEN
++ | AT91_SMC_NWS_(32) /* wait states */
++ | AT91_SMC_RWSETUP_(6) /* setup time */
++ | AT91_SMC_RWHOLD_(4) /* hold time */
++ );
++
++ platform_device_register(&tms_device);
++}
++
++
++/*
++ * Serial port configuration.
++ * 0 .. 3 = USART0 .. USART3
++ * 4 = DBGU
++ */
++static struct at91_uart_config __initdata tms_uart_config = {
++ .console_tty = 0, /* ttyS0 */
++ .nr_tty = 5,
++ .tty_map = { 4, 0, 1, 2, 3 } /* ttyS0, ..., ttyS4 */
++};
++
++static void __init tms_map_io(void)
++{
++ /* Initialize processor: 18.432 MHz crystal */
++ at91rm9200_initialize(18432000, AT91RM9200_BGA);
++
++ /* Setup the LEDs */
++ at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
++
++ /* Setup the serial ports and console */
++ at91_init_serial(&tms_uart_config);
++}
++
++static void __init tms_init_irq(void)
++{
++ at91rm9200_init_interrupts(NULL);
++}
++
++
++static struct at91_eth_data __initdata tms_eth_data = {
++ .phy_irq_pin = AT91_PIN_PC4,
++ .is_rmii = 1,
++};
++
++static struct at91_usbh_data __initdata tms_usbh_data = {
++ .ports = 2,
++};
++
++static struct spi_board_info tms_spi_devices[] = {
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 0,
++ .max_speed_hz = 15 * 1000 * 1000,
++ },
++ { /* DataFlash chip */
++ .modalias = "mtd_dataflash",
++ .chip_select = 1,
++ .max_speed_hz = 15 * 1000 * 1000,
++ }
++};
++
++static struct i2c_board_info __initdata tms_i2c_devices[] = {
++ {
++ I2C_BOARD_INFO("isl1208", 0x6f),
++ }
++};
++
++static void __init tms_board_init(void)
++{
++ /* Serial */
++ at91_add_device_serial();
++ /* Ethernet */
++ at91_add_device_eth(&tms_eth_data);
++ at91_add_device_usbh(&tms_usbh_data);
++ /* I2C */
++ at91_add_device_i2c(tms_i2c_devices, ARRAY_SIZE(tms_i2c_devices));
++ /* SPI */
++ at91_add_device_spi(tms_spi_devices, ARRAY_SIZE(tms_spi_devices));
++ /* Two port external UART */
++ setup_external_uart();
++}
++
++MACHINE_START(SWEDATMS, "Sweda TMS-100 Board")
++ /* Maintainer: Luiz de Barros */
++ .phys_io = AT91_BASE_SYS,
++ .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
++ .boot_params = AT91_SDRAM_BASE + 0x100,
++ .timer = &at91rm9200_timer,
++ .map_io = tms_map_io,
++ .init_irq = tms_init_irq,
++ .init_machine = tms_board_init,
++MACHINE_END
+diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c
+index 57c3b64..48de6a2 100644
+--- a/arch/arm/mach-at91/clock.c
++++ b/arch/arm/mach-at91/clock.c
+@@ -32,6 +32,7 @@
+ #include <asm/arch/cpu.h>
+
+ #include "clock.h"
++#include "generic.h"
+
+
+ /*
+@@ -254,6 +255,23 @@ EXPORT_SYMBOL(clk_get_rate);
+
+ /*------------------------------------------------------------------------*/
+
++#ifdef CONFIG_PM
++
++int clk_must_disable(struct clk *clk)
++{
++ if (!at91_suspend_entering_slow_clock())
++ return 0;
++
++ while (clk->parent)
++ clk = clk->parent;
++ return clk != &clk32k;
++}
++EXPORT_SYMBOL(clk_must_disable);
++
++#endif
++
++/*------------------------------------------------------------------------*/
++
+ #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS
+
+ /*
+diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
+index 77d4c0a..27529d5 100644
+--- a/arch/arm/mach-at91/generic.h
++++ b/arch/arm/mach-at91/generic.h
+@@ -39,6 +39,7 @@ extern void __init at91_clock_associate(const char *id, struct device *dev, cons
+ /* Power Management */
+ extern void at91_irq_suspend(void);
+ extern void at91_irq_resume(void);
++extern int at91_suspend_entering_slow_clock(void);
+
+ /* GPIO */
+ #define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */
+diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c
+index aa2d365..6aeddd6 100644
+--- a/arch/arm/mach-at91/gpio.c
++++ b/arch/arm/mach-at91/gpio.c
+@@ -13,6 +13,8 @@
+ #include <linux/errno.h>
+ #include <linux/interrupt.h>
+ #include <linux/irq.h>
++#include <linux/debugfs.h>
++#include <linux/seq_file.h>
+ #include <linux/kernel.h>
+ #include <linux/list.h>
+ #include <linux/module.h>
+@@ -414,6 +416,66 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+
+ /*--------------------------------------------------------------------------*/
+
++#ifdef CONFIG_DEBUG_FS
++
++static int at91_gpio_show(struct seq_file *s, void *unused)
++{
++ int bank, j;
++
++ /* print heading */
++ seq_printf(s, "Pin\t");
++ for (bank = 0; bank < gpio_banks; bank++) {
++ seq_printf(s, "PIO%c\t", 'A' + bank);
++ };
++ seq_printf(s, "\n\n");
++
++ /* print pin status */
++ for (j = 0; j < 32; j++) {
++ seq_printf(s, "%i:\t", j);
++
++ for (bank = 0; bank < gpio_banks; bank++) {
++ unsigned pin = PIN_BASE + (32 * bank) + j;
++ void __iomem *pio = pin_to_controller(pin);
++ unsigned mask = pin_to_mask(pin);
++
++ if (__raw_readl(pio + PIO_PSR) & mask)
++ seq_printf(s, "GPIO:%s", __raw_readl(pio + PIO_PDSR) & mask ? "1" : "0");
++ else
++ seq_printf(s, "%s", __raw_readl(pio + PIO_ABSR) & mask ? "B" : "A");
++
++ seq_printf(s, "\t");
++ }
++
++ seq_printf(s, "\n");
++ }
++
++ return 0;
++}
++
++static int at91_gpio_open(struct inode *inode, struct file *file)
++{
++ return single_open(file, at91_gpio_show, NULL);
++}
++
++static const struct file_operations at91_gpio_operations = {
++ .open = at91_gpio_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = single_release,
++};
++
++static int __init at91_gpio_debugfs_init(void)
++{
++ /* /sys/kernel/debug/at91_gpio */
++ (void) debugfs_create_file("at91_gpio", S_IFREG | S_IRUGO, NULL, NULL, &at91_gpio_operations);
++ return 0;
++}
++postcore_initcall(at91_gpio_debugfs_init);
++
++#endif
++
++/*--------------------------------------------------------------------------*/
++
+ /*
+ * Called from the processor-specific init to enable GPIO interrupt support.
+ */
+diff --git a/arch/arm/mach-at91/ics1523.c b/arch/arm/mach-at91/ics1523.c
+new file mode 100644
+index 0000000..646fbac
+--- /dev/null
++++ b/arch/arm/mach-at91/ics1523.c
+@@ -0,0 +1,207 @@
++/*
++ * arch/arm/mach-at91rm9200/ics1523.c
++ *
++ * Copyright (C) 2003 ATMEL Rousset
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <asm/hardware.h>
++#include <asm/io.h>
++
++#include <linux/clk.h>
++#include <linux/delay.h>
++#include <linux/err.h>
++#include <linux/init.h>
++
++#include <asm/arch/ics1523.h>
++#include <asm/arch/at91_twi.h>
++#include <asm/arch/gpio.h>
++
++/* TWI Errors */
++#define AT91_TWI_ERROR (AT91_TWI_NACK | AT91_TWI_UNRE | AT91_TWI_OVRE)
++
++
++static void __iomem *twi_base;
++
++#define at91_twi_read(reg) __raw_readl(twi_base + (reg))
++#define at91_twi_write(reg, val) __raw_writel((val), twi_base + (reg))
++
++
++/* -----------------------------------------------------------------------------
++ * Initialization of TWI CLOCK
++ * ----------------------------------------------------------------------------- */
++
++static void at91_ics1523_SetTwiClock(unsigned int mck_khz)
++{
++ int sclock;
++
++ /* Here, CKDIV = 1 and CHDIV = CLDIV ==> CLDIV = CHDIV = 1/4*((Fmclk/FTWI) -6) */
++ sclock = (10*mck_khz / ICS_TRANSFER_RATE);
++ if (sclock % 10 >= 5)
++ sclock = (sclock /10) - 5;
++ else
++ sclock = (sclock /10)- 6;
++ sclock = (sclock + (4 - sclock %4)) >> 2; /* div 4 */
++
++ at91_twi_write(AT91_TWI_CWGR, 0x00010000 | sclock | (sclock << 8));
++}
++
++/* -----------------------------------------------------------------------------
++ * Read a byte with TWI Interface from the Clock Generator ICS1523
++ * ----------------------------------------------------------------------------- */
++
++static int at91_ics1523_ReadByte(unsigned char reg_address, unsigned char *data_in)
++{
++ int Status, nb_trial;
++
++ at91_twi_write(AT91_TWI_MMR, AT91_TWI_MREAD | AT91_TWI_IADRSZ_1 | ((ICS_ADDR << 16) & AT91_TWI_DADR));
++ at91_twi_write(AT91_TWI_IADR, reg_address);
++ at91_twi_write(AT91_TWI_CR, AT91_TWI_START | AT91_TWI_STOP);
++
++ /* Program temporizing period (300us) */
++ udelay(300);
++
++ /* Wait TXcomplete ... */
++ nb_trial = 0;
++ Status = at91_twi_read(AT91_TWI_SR);
++ while (!(Status & AT91_TWI_TXCOMP) && (nb_trial < 10)) {
++ nb_trial++;
++ Status = at91_twi_read(AT91_TWI_SR);
++ }
++
++ if (Status & AT91_TWI_TXCOMP) {
++ *data_in = (unsigned char) at91_twi_read(AT91_TWI_RHR);
++ return ICS1523_ACCESS_OK;
++ }
++ else
++ return ICS1523_ACCESS_ERROR;
++}
++
++/* -----------------------------------------------------------------------------
++ * Write a byte with TWI Interface to the Clock Generator ICS1523
++ * ----------------------------------------------------------------------------- */
++
++static int at91_ics1523_WriteByte(unsigned char reg_address, unsigned char data_out)
++{
++ int Status, nb_trial;
++
++ at91_twi_write(AT91_TWI_MMR, AT91_TWI_IADRSZ_1 | ((ICS_ADDR << 16) & AT91_TWI_DADR));
++ at91_twi_write(AT91_TWI_IADR, reg_address);
++ at91_twi_write(AT91_TWI_THR, data_out);
++ at91_twi_write(AT91_TWI_CR, AT91_TWI_START | AT91_TWI_STOP);
++
++ /* Program temporizing period (300us) */
++ udelay(300);
++
++ nb_trial = 0;
++ Status = at91_twi_read(AT91_TWI_SR);
++ while (!(Status & AT91_TWI_TXCOMP) && (nb_trial < 10)) {
++ nb_trial++;
++ if (Status & AT91_TWI_ERROR) {
++ /* If Underrun OR NACK - Start again */
++ at91_twi_write(AT91_TWI_CR, AT91_TWI_START | AT91_TWI_STOP);
++
++ /* Program temporizing period (300us) */
++ udelay(300);
++ }
++ Status = at91_twi_read(AT91_TWI_SR);
++ };
++
++ if (Status & AT91_TWI_TXCOMP)
++ return ICS1523_ACCESS_OK;
++ else
++ return ICS1523_ACCESS_ERROR;
++}
++
++/* -----------------------------------------------------------------------------
++ * Initialization of the Clock Generator ICS1523
++ * ----------------------------------------------------------------------------- */
++
++int at91_ics1523_init(void)
++{
++ int nb_trial;
++ int ack = ICS1523_ACCESS_OK;
++ unsigned int status = 0xffffffff;
++ struct clk *twi_clk;
++
++ /* Map in TWI peripheral */
++ twi_base = ioremap(AT91RM9200_BASE_TWI, SZ_16K);
++ if (!twi_base)
++ return -ENOMEM;
++
++ /* pins used for TWI interface */
++ at91_set_A_periph(AT91_PIN_PA25, 0); /* TWD */
++ at91_set_multi_drive(AT91_PIN_PA25, 1);
++ at91_set_A_periph(AT91_PIN_PA26, 0); /* TWCK */
++ at91_set_multi_drive(AT91_PIN_PA26, 1);
++
++ /* Enable the TWI clock */
++ twi_clk = clk_get(NULL, "twi_clk");
++ if (IS_ERR(twi_clk))
++ return ICS1523_ACCESS_ERROR;
++ clk_enable(twi_clk);
++
++ /* Disable interrupts */
++ at91_twi_write(AT91_TWI_IDR, -1);
++
++ /* Reset peripheral */
++ at91_twi_write(AT91_TWI_CR, AT91_TWI_SWRST);
++
++ /* Set Master mode */
++ at91_twi_write(AT91_TWI_CR, AT91_TWI_MSEN);
++
++ /* Set TWI Clock Waveform Generator Register */
++ at91_ics1523_SetTwiClock(60000); /* MCK in KHz = 60000 KHz */
++
++ /* ICS1523 Initialisation */
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_ICR, (unsigned char) 0);
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_OE, (unsigned char) (ICS_OEF | ICS_OET2 | ICS_OETCK));
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_OD, (unsigned char) (ICS_INSEL | 0x7F));
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_DPAO, (unsigned char) 0);
++
++ nb_trial = 0;
++ do {
++ nb_trial++;
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_ICR, (unsigned char) (ICS_ENDLS | ICS_ENPLS | ICS_PDEN /*| ICS_FUNCSEL*/));
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_LCR, (unsigned char) (ICS_PSD | ICS_PFD));
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_FD0, (unsigned char) 0x39) ; /* 0x7A */
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_FD1, (unsigned char) 0x00);
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_SWRST, (unsigned char) (ICS_PLLR));
++
++ /* Program 1ms temporizing period */
++ mdelay(1);
++
++ at91_ics1523_ReadByte ((unsigned char) ICS_SR, (char *)&status);
++ } while (!((unsigned int) status & (unsigned int) ICS_PLLLOCK) && (nb_trial < 10));
++
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_DPAC, (unsigned char) 0x03) ; /* 0x01 */
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_SWRST, (unsigned char) (ICS_DPAR));
++
++ /* Program 1ms temporizing period */
++ mdelay(1);
++
++ ack |= at91_ics1523_WriteByte ((unsigned char) ICS_DPAO, (unsigned char) 0x00);
++
++ /* Program 1ms temporizing period */
++ mdelay(1);
++
++ /* All done - cleanup */
++ iounmap(twi_base);
++ clk_disable(twi_clk);
++ clk_put(twi_clk);
++
++ return ack;
++}
+diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
+index 98cb614..04e3475 100644
+--- a/arch/arm/mach-at91/pm.c
++++ b/arch/arm/mach-at91/pm.c
+@@ -26,12 +26,24 @@
+ #include <asm/mach-types.h>
+
+ #include <asm/arch/at91_pmc.h>
+-#include <asm/arch/at91rm9200_mc.h>
+ #include <asm/arch/gpio.h>
+ #include <asm/arch/cpu.h>
+
+ #include "generic.h"
+
++#ifdef CONFIG_ARCH_AT91RM9200
++#include <asm/arch/at91rm9200_mc.h>
++
++#define sdram_selfrefresh_enable() at91_sys_write(AT91_SDRAMC_SRR, 1)
++#define sdram_selfrefresh_disable()
++
++#else
++#include <asm/arch/at91sam926x_mc.h>
++
++#define sdram_selfrefresh_enable() at91_sys_write(AT91_SDRAMC_LPR, AT91_SDRAMC_LPCB_SELF_REFRESH)
++#define sdram_selfrefresh_disable() at91_sys_write(AT91_SDRAMC_LPR, AT91_SDRAMC_LPCB_DISABLE)
++
++#endif
+
+ static int at91_pm_valid_state(suspend_state_t state)
+ {
+@@ -62,6 +74,7 @@ static int at91_pm_set_target(suspend_state_t state)
+ * Verify that all the clocks are correct before entering
+ * slow-clock mode.
+ */
++#warning "This should probably be moved to clocks.c"
+ static int at91_pm_verify_clocks(void)
+ {
+ unsigned long scsr;
+@@ -102,20 +115,15 @@ static int at91_pm_verify_clocks(void)
+ }
+
+ /*
+- * Call this from platform driver suspend() to see how deeply to suspend.
++ * This is called from clk_must_disable(), to see how deeply to suspend.
+ * For example, some controllers (like OHCI) need one of the PLL clocks
+ * in order to act as a wakeup source, and those are not available when
+ * going into slow clock mode.
+- *
+- * REVISIT: generalize as clk_will_be_available(clk)? Other platforms have
+- * the very same problem (but not using at91 main_clk), and it'd be better
+- * to add one generic API rather than lots of platform-specific ones.
+ */
+ int at91_suspend_entering_slow_clock(void)
+ {
+ return (target_state == PM_SUSPEND_MEM);
+ }
+-EXPORT_SYMBOL(at91_suspend_entering_slow_clock);
+
+
+ static void (*slow_clock)(void);
+@@ -175,7 +183,7 @@ static int at91_pm_enter(suspend_state_t state)
+ */
+ asm("b 1f; .align 5; 1:");
+ asm("mcr p15, 0, r0, c7, c10, 4"); /* drain write buffer */
+- at91_sys_write(AT91_SDRAMC_SRR, 1); /* self-refresh mode */
++ sdram_selfrefresh_enable(); /* self-refresh mode */
+ /* fall though to next state */
+
+ case PM_SUSPEND_ON:
+@@ -191,6 +199,7 @@ static int at91_pm_enter(suspend_state_t state)
+ at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));
+
+ error:
++ sdram_selfrefresh_disable();
+ target_state = PM_SUSPEND_ON;
+ at91_irq_resume();
+ at91_gpio_resume();
+@@ -204,16 +213,23 @@ static struct platform_suspend_ops at91_pm_ops ={
+ .enter = at91_pm_enter,
+ };
+
++#ifdef CONFIG_AT91_SLOW_CLOCK
++extern void at91rm9200_slow_clock(void);
++extern u32 at91rm9200_slow_clock_sz;
++#endif
++
+ static int __init at91_pm_init(void)
+ {
+- printk("AT91: Power Management\n");
+-
+-#ifdef CONFIG_AT91_PM_SLOW_CLOCK
+- /* REVISIT allocations of SRAM should be dynamically managed.
++#ifdef CONFIG_AT91_SLOW_CLOCK
++ /*
++ * REVISIT allocations of SRAM should be dynamically managed.
+ * FIQ handlers and other components will want SRAM/TCM too...
+ */
+- slow_clock = (void *) (AT91_VA_BASE_SRAM + (3 * SZ_4K));
++ slow_clock = (void *) (AT91_IO_VIRT_BASE - AT91RM9200_SRAM_SIZE + (3 * SZ_4K));
+ memcpy(slow_clock, at91rm9200_slow_clock, at91rm9200_slow_clock_sz);
++ printk("AT91: Power Management (with slow clock mode)\n");
++#else
++ printk("AT91: Power Management\n");
+ #endif
+
+ /* Disable SDRAM low-power mode. Cannot be used with self-refresh. */
+diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S
+new file mode 100644
+index 0000000..3f5ba62
+--- /dev/null
++++ b/arch/arm/mach-at91/pm_slowclock.S
+@@ -0,0 +1,172 @@
++/*
++ * arch/arm/mach-at91/pm_slow_clock.S
++ *
++ * Copyright (C) 2006 Savin Zlobec
++ *
++ * 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/linkage.h>
++#include <asm/hardware.h>
++#include <asm/arch/at91_pmc.h>
++#include <asm/arch/at91rm9200_mc.h>
++
++#define MCKRDY_TIMEOUT 1000
++#define MOSCRDY_TIMEOUT 1000
++#define PLLALOCK_TIMEOUT 1000
++
++ .macro wait_mckrdy
++ mov r2, #MCKRDY_TIMEOUT
++1: sub r2, r2, #1
++ cmp r2, #0
++ beq 2f
++ ldr r3, [r1, #AT91_PMC_SR]
++ tst r3, #AT91_PMC_MCKRDY
++ beq 1b
++2:
++ .endm
++
++ .macro wait_moscrdy
++ mov r2, #MOSCRDY_TIMEOUT
++1: sub r2, r2, #1
++ cmp r2, #0
++ beq 2f
++ ldr r3, [r1, #AT91_PMC_SR]
++ tst r3, #AT91_PMC_MOSCS
++ beq 1b
++2:
++ .endm
++
++ .macro wait_pllalock
++ mov r2, #PLLALOCK_TIMEOUT
++1: sub r2, r2, #1
++ cmp r2, #0
++ beq 2f
++ ldr r3, [r1, #AT91_PMC_SR]
++ tst r3, #AT91_PMC_LOCKA
++ beq 1b
++2:
++ .endm
++
++ .macro wait_plladis
++ mov r2, #PLLALOCK_TIMEOUT
++1: sub r2, r2, #1
++ cmp r2, #0
++ beq 2f
++ ldr r3, [r1, #AT91_PMC_SR]
++ tst r3, #AT91_PMC_LOCKA
++ bne 1b
++2:
++ .endm
++
++ .text
++
++ENTRY(at91rm9200_slow_clock)
++
++ ldr r1, .at91_va_base_sys
++
++ /* Put SDRAM in self refresh mode */
++
++ b 1f
++ .align 5
++1: mcr p15, 0, r0, c7, c10, 4
++ mov r2, #1
++ str r2, [r1, #AT91_SDRAMC_SRR]
++
++ /* Save Master clock setting */
++
++ ldr r2, [r1, #AT91_PMC_MCKR]
++ str r2, .saved_mckr
++
++ /*
++ * Set the Master clock source to slow clock
++ *
++ * First set the CSS field, wait for MCKRDY
++ * and than set the PRES and MDIV fields.
++ *
++ * See eratta #2[78] for details.
++ */
++
++ bic r2, r2, #3
++ str r2, [r1, #AT91_PMC_MCKR]
++
++ wait_mckrdy
++
++ mov r2, #0
++ str r2, [r1, #AT91_PMC_MCKR]
++
++ /* Save PLLA setting and disable it */
++
++ ldr r2, [r1, #AT91_CKGR_PLLAR]
++ str r2, .saved_pllar
++
++ mov r2, #0
++ str r2, [r1, #AT91_CKGR_PLLAR]
++
++ wait_plladis
++
++ /* Turn off the main oscillator */
++
++ ldr r2, [r1, #AT91_CKGR_MOR]
++ bic r2, r2, #AT91_PMC_MOSCEN
++ str r2, [r1, #AT91_CKGR_MOR]
++
++ /* Wait for interrupt */
++
++ mcr p15, 0, r0, c7, c0, 4
++
++ /* Turn on the main oscillator */
++
++ ldr r2, [r1, #AT91_CKGR_MOR]
++ orr r2, r2, #AT91_PMC_MOSCEN
++ str r2, [r1, #AT91_CKGR_MOR]
++
++ wait_moscrdy
++
++ /* Restore PLLA setting */
++
++ ldr r2, .saved_pllar
++ str r2, [r1, #AT91_CKGR_PLLAR]
++
++ wait_pllalock
++
++ /*
++ * Restore master clock setting
++ *
++ * First set PRES if it was not 0,
++ * than set CSS and MDIV fields.
++ * After every change wait for
++ * MCKRDY.
++ *
++ * See eratta #2[78] for details.
++ */
++
++ ldr r2, .saved_mckr
++ tst r2, #0x1C
++ beq 2f
++ and r2, r2, #0x1C
++ str r2, [r1, #AT91_PMC_MCKR]
++
++ wait_mckrdy
++
++2: ldr r2, .saved_mckr
++ str r2, [r1, #AT91_PMC_MCKR]
++
++ wait_mckrdy
++
++ mov pc, lr
++
++.saved_mckr:
++ .word 0
++
++.saved_pllar:
++ .word 0
++
++.at91_va_base_sys:
++ .word AT91_VA_BASE_SYS
++
++ENTRY(at91rm9200_slow_clock_sz)
++ .word .-at91rm9200_slow_clock
+diff --git a/arch/arm/mach-at91/tclib.c b/arch/arm/mach-at91/tclib.c
+new file mode 100644
+index 0000000..b6389ac
+--- /dev/null
++++ b/arch/arm/mach-at91/tclib.c
+@@ -0,0 +1,17 @@
++#include <linux/clk.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++
++#include "tclib.h"
++
++static struct atmel_tcblock *blocks;
++static int nblocks;
++
++/*
++ * Called from the processor-specific init to register the TC Blocks.
++ */
++void __init atmel_tc_init(struct atmel_tcblock *tcblocks, int n)
++{
++ blocks = tcblocks;
++ nblocks = n;
++}
+diff --git a/arch/arm/mach-at91/tclib.h b/arch/arm/mach-at91/tclib.h
+new file mode 100644
+index 0000000..dc5dfb6
+--- /dev/null
++++ b/arch/arm/mach-at91/tclib.h
+@@ -0,0 +1,11 @@
++
++#define TC_PER_TCB 3
++
++struct atmel_tcblock {
++ u32 physaddr;
++ void __iomem *ioaddr;
++ struct clk *clk[TC_PER_TCB];
++ int irq[TC_PER_TCB];
++};
++
++extern void __init atmel_tc_init(struct atmel_tcblock *tcblocks, int n);
+diff --git a/arch/arm/mach-ks8695/Makefile b/arch/arm/mach-ks8695/Makefile
+index 2a07a28..a2ccbc2 100644
+--- a/arch/arm/mach-ks8695/Makefile
++++ b/arch/arm/mach-ks8695/Makefile
+@@ -9,7 +9,11 @@ obj-n :=
+ obj- :=
+
+ # PCI support is optional
+-#obj-$(CONFIG_PCI) += pci.o
++obj-$(CONFIG_PCI) += pci.o
++
++# LEDs
++obj-$(CONFIG_LEDS) += leds.o
+
+ # Board-specific support
+ obj-$(CONFIG_MACH_KS8695) += board-micrel.o
++
+diff --git a/arch/arm/mach-ks8695/board-micrel.c b/arch/arm/mach-ks8695/board-micrel.c
+index 2feeef8..05ac2bd 100644
+--- a/arch/arm/mach-ks8695/board-micrel.c
++++ b/arch/arm/mach-ks8695/board-micrel.c
+@@ -40,7 +40,7 @@ static void __init micrel_init(void)
+ printk(KERN_INFO "Micrel KS8695 Development Board initializing\n");
+
+ #ifdef CONFIG_PCI
+-// ks8695_init_pci(&micrel_pci);
++ ks8695_init_pci(&micrel_pci);
+ #endif
+
+ /* Add devices */
+diff --git a/arch/arm/mach-ks8695/devices.c b/arch/arm/mach-ks8695/devices.c
+index 386593f..3db2ec6 100644
+--- a/arch/arm/mach-ks8695/devices.c
++++ b/arch/arm/mach-ks8695/devices.c
+@@ -176,6 +176,27 @@ static void __init ks8695_add_device_watchdog(void) {}
+ #endif
+
+
++/* --------------------------------------------------------------------
++ * LEDs
++ * -------------------------------------------------------------------- */
++
++#if defined(CONFIG_LEDS)
++short ks8695_leds_cpu = -1;
++short ks8695_leds_timer = -1;
++
++void __init ks8695_init_leds(u8 cpu_led, u8 timer_led)
++{
++ /* Enable GPIO to access the LEDs */
++ gpio_direction_output(cpu_led, 1);
++ gpio_direction_output(timer_led, 1);
++
++ ks8695_leds_cpu = cpu_led;
++ ks8695_leds_timer = timer_led;
++}
++#else
++void __init ks8695_init_leds(u8 cpu_led, u8 timer_led) {}
++#endif
++
+ /* -------------------------------------------------------------------- */
+
+ /*
+diff --git a/arch/arm/mach-ks8695/gpio.c b/arch/arm/mach-ks8695/gpio.c
+index b1aa3cb..5e46191 100644
+--- a/arch/arm/mach-ks8695/gpio.c
++++ b/arch/arm/mach-ks8695/gpio.c
+@@ -20,6 +20,8 @@
+ #include <linux/kernel.h>
+ #include <linux/mm.h>
+ #include <linux/init.h>
++#include <linux/debugfs.h>
++#include <linux/seq_file.h>
+ #include <linux/module.h>
+
+ #include <asm/io.h>
+@@ -216,3 +218,84 @@ int irq_to_gpio(unsigned int irq)
+ return (irq - KS8695_IRQ_EXTERN0);
+ }
+ EXPORT_SYMBOL(irq_to_gpio);
++
++
++/* .... Debug interface ..................................................... */
++
++#ifdef CONFIG_DEBUG_FS
++
++static int ks8695_gpio_show(struct seq_file *s, void *unused)
++{
++ unsigned int enable[] = { IOPC_IOEINT0EN, IOPC_IOEINT1EN, IOPC_IOEINT2EN, IOPC_IOEINT3EN, IOPC_IOTIM0EN, IOPC_IOTIM1EN };
++ unsigned int intmask[] = { IOPC_IOEINT0TM, IOPC_IOEINT1TM, IOPC_IOEINT2TM, IOPC_IOEINT3TM };
++ unsigned long mode, ctrl, data;
++ int i;
++
++ mode = __raw_readl(KS8695_GPIO_VA + KS8695_IOPM);
++ ctrl = __raw_readl(KS8695_GPIO_VA + KS8695_IOPC);
++ data = __raw_readl(KS8695_GPIO_VA + KS8695_IOPD);
++
++ seq_printf(s, "Pin\tI/O\tFunction\tState\n\n");
++
++ for (i = KS8695_GPIO_0; i <= KS8695_GPIO_15 ; i++) {
++ seq_printf(s, "%i:\t", i);
++
++ seq_printf(s, "%s\t", (mode & IOPM_(i)) ? "Output" : "Input");
++
++ if (i <= KS8695_GPIO_3) {
++ if (ctrl & enable[i]) {
++ seq_printf(s, "EXT%i ", i);
++
++ switch ((ctrl & intmask[i]) >> (4 * i)) {
++ case IOPC_TM_LOW:
++ seq_printf(s, "(Low)"); break;
++ case IOPC_TM_HIGH:
++ seq_printf(s, "(High)"); break;
++ case IOPC_TM_RISING:
++ seq_printf(s, "(Rising)"); break;
++ case IOPC_TM_FALLING:
++ seq_printf(s, "(Falling)"); break;
++ case IOPC_TM_EDGE:
++ seq_printf(s, "(Edges)"); break;
++ }
++ }
++ else
++ seq_printf(s, "GPIO\t");
++ }
++ else if (i <= KS8695_GPIO_5) {
++ if (ctrl & enable[i])
++ seq_printf(s, "TOUT%i\t", i - KS8695_GPIO_4);
++ else
++ seq_printf(s, "GPIO\t");
++ }
++ else
++ seq_printf(s, "GPIO\t");
++
++ seq_printf(s, "\t");
++
++ seq_printf(s, "%i\n", (data & IOPD_(i)) ? 1 : 0);
++ }
++ return 0;
++}
++
++static int ks8695_gpio_open(struct inode *inode, struct file *file)
++{
++ return single_open(file, ks8695_gpio_show, NULL);
++}
++
++static const struct file_operations ks8695_gpio_operations = {
++ .open = ks8695_gpio_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = single_release,
++};
++
++static int __init ks8695_gpio_debugfs_init(void)
++{
++ /* /sys/kernel/debug/ks8695_gpio */
++ (void) debugfs_create_file("ks8695_gpio", S_IFREG | S_IRUGO, NULL, NULL, &ks8695_gpio_operations);
++ return 0;
++}
++postcore_initcall(ks8695_gpio_debugfs_init);
++
++#endif
+diff --git a/arch/arm/mach-ks8695/leds.c b/arch/arm/mach-ks8695/leds.c
+new file mode 100644
+index 0000000..d61762a
+--- /dev/null
++++ b/arch/arm/mach-ks8695/leds.c
+@@ -0,0 +1,94 @@
++/*
++ * LED driver for KS8695-based boards.
++ *
++ * Copyright (C) Andrew Victor
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++
++#include <asm/mach-types.h>
++#include <asm/leds.h>
++#include <asm/arch/devices.h>
++#include <asm/arch/gpio.h>
++
++
++static inline void ks8695_led_on(unsigned int led)
++{
++ gpio_set_value(led, 0);
++}
++
++static inline void ks8695_led_off(unsigned int led)
++{
++ gpio_set_value(led, 1);
++}
++
++static inline void ks8695_led_toggle(unsigned int led)
++{
++ unsigned long is_off = gpio_get_value(led);
++ if (is_off)
++ ks8695_led_on(led);
++ else
++ ks8695_led_off(led);
++}
++
++
++/*
++ * Handle LED events.
++ */
++static void ks8695_leds_event(led_event_t evt)
++{
++ unsigned long flags;
++
++ local_irq_save(flags);
++
++ switch(evt) {
++ case led_start: /* System startup */
++ ks8695_led_on(ks8695_leds_cpu);
++ break;
++
++ case led_stop: /* System stop / suspend */
++ ks8695_led_off(ks8695_leds_cpu);
++ break;
++
++#ifdef CONFIG_LEDS_TIMER
++ case led_timer: /* Every 50 timer ticks */
++ ks8695_led_toggle(ks8695_leds_timer);
++ break;
++#endif
++
++#ifdef CONFIG_LEDS_CPU
++ case led_idle_start: /* Entering idle state */
++ ks8695_led_off(ks8695_leds_cpu);
++ break;
++
++ case led_idle_end: /* Exit idle state */
++ ks8695_led_on(ks8695_leds_cpu);
++ break;
++#endif
++
++ default:
++ break;
++ }
++
++ local_irq_restore(flags);
++}
++
++
++static int __init leds_init(void)
++{
++ if ((ks8695_leds_timer == -1) || (ks8695_leds_cpu == -1))
++ return -ENODEV;
++
++ leds_event = ks8695_leds_event;
++
++ leds_event(led_start);
++ return 0;
++}
++
++__initcall(leds_init);
+diff --git a/arch/arm/mach-ks8695/pci.c b/arch/arm/mach-ks8695/pci.c
+new file mode 100644
+index 0000000..4d2a5bf
+--- /dev/null
++++ b/arch/arm/mach-ks8695/pci.c
+@@ -0,0 +1,324 @@
++/*
++ * arch/arm/mach-ks8695/pci.c
++ *
++ * Copyright (C) 2003, Micrel Semiconductors
++ * Copyright (C) 2006, Greg Ungerer <gerg@snapgear.com>
++ * Copyright (C) 2006, Ben Dooks
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <linux/kernel.h>
++#include <linux/pci.h>
++#include <linux/mm.h>
++#include <linux/init.h>
++#include <linux/irq.h>
++#include <linux/delay.h>
++
++#include <asm/io.h>
++#include <asm/mach/pci.h>
++#include <asm/hardware.h>
++
++#include <asm/arch/devices.h>
++#include <asm/arch/regs-pci.h>
++
++
++static int pci_dbg;
++static int pci_cfg_dbg;
++
++
++static void ks8695_pci_setupconfig(unsigned int bus_nr, unsigned int devfn, unsigned int where)
++{
++ unsigned long pbca;
++
++ pbca = PBCA_ENABLE | (where & ~3);
++ pbca |= PCI_SLOT(devfn) << 11 ;
++ pbca |= PCI_FUNC(devfn) << 8;
++ pbca |= bus_nr << 16;
++
++ if (bus_nr == 0) {
++ /* use Type-0 transaction */
++ __raw_writel(pbca, KS8695_PCI_VA + KS8695_PBCA);
++ } else {
++ /* use Type-1 transaction */
++ __raw_writel(pbca | PBCA_TYPE1, KS8695_PCI_VA + KS8695_PBCA);
++ }
++}
++
++
++/*
++ * The KS8695 datasheet prohibits anything other than 32bit accesses
++ * to the IO registers, so all our configuration must be done with
++ * 32bit operations, and the correct bit masking and shifting.
++ */
++
++static int ks8695_pci_readconfig(struct pci_bus *bus,
++ unsigned int devfn, int where, int size, u32 *value)
++{
++ ks8695_pci_setupconfig(bus->number, devfn, where);
++
++ *value = __raw_readl(KS8695_PCI_VA + KS8695_PBCD);
++
++ switch (size) {
++ case 4:
++ break;
++ case 2:
++ *value = *value >> ((where & 2) * 8);
++ *value &= 0xffff;
++ break;
++ case 1:
++ *value = *value >> ((where & 3) * 8);
++ *value &= 0xff;
++ break;
++ }
++
++ if (pci_cfg_dbg) {
++ printk("read: %d,%08x,%02x,%d: %08x (%08x)\n",
++ bus->number, devfn, where, size, *value,
++ __raw_readl(KS8695_PCI_VA + KS8695_PBCD));
++ }
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static int ks8695_pci_writeconfig(struct pci_bus *bus,
++ unsigned int devfn, int where, int size, u32 value)
++{
++ unsigned long tmp;
++
++ if (pci_cfg_dbg) {
++ printk("write: %d,%08x,%02x,%d: %08x\n",
++ bus->number, devfn, where, size, value);
++ }
++
++ ks8695_pci_setupconfig(bus->number, devfn, where);
++
++ switch (size) {
++ case 4:
++ __raw_writel(value, KS8695_PCI_VA + KS8695_PBCD);
++ break;
++ case 2:
++ tmp = __raw_readl(KS8695_PCI_VA + KS8695_PBCD);
++ tmp &= ~(0xffff << ((where & 2) * 8));
++ tmp |= value << ((where & 2) * 8);
++
++ __raw_writel(tmp, KS8695_PCI_VA + KS8695_PBCD);
++ break;
++ case 1:
++ tmp = __raw_readl(KS8695_PCI_VA + KS8695_PBCD);
++ tmp &= ~(0xff << ((where & 3) * 8));
++ tmp |= value << ((where & 3) * 8);
++
++ __raw_writel(tmp, KS8695_PCI_VA + KS8695_PBCD);
++ break;
++ }
++
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static void ks8695_local_writeconfig(int where, u32 value)
++{
++ ks8695_pci_setupconfig(0, 0, where);
++ __raw_writel(value, KS8695_PCI_VA + KS8695_PBCD);
++}
++
++static struct pci_ops ks8695_pci_ops = {
++ .read = ks8695_pci_readconfig,
++ .write = ks8695_pci_writeconfig,
++};
++
++static struct pci_bus *ks8695_pci_scan_bus(int nr, struct pci_sys_data *sys)
++{
++ return pci_scan_bus(sys->busnr, &ks8695_pci_ops, sys);
++}
++
++static struct resource pci_mem = {
++ .name = "PCI Memory space",
++ .start = KS8695_PCIMEM_PA,
++ .end = KS8695_PCIMEM_PA + (KS8695_PCIMEM_SIZE - 1),
++ .flags = IORESOURCE_MEM,
++};
++
++static struct resource pci_io = {
++ .name = "PCI IO space",
++ .start = KS8695_PCIIO_PA,
++ .end = KS8695_PCIIO_PA + (KS8695_PCIIO_SIZE - 1),
++ .flags = IORESOURCE_IO,
++};
++
++static int __init ks8695_pci_setup(int nr, struct pci_sys_data *sys)
++{
++ if (nr > 0)
++ return 0;
++
++ request_resource(&iomem_resource, &pci_mem);
++ request_resource(&ioport_resource, &pci_io);
++
++ sys->resource[0] = &pci_io;
++ sys->resource[1] = &pci_mem;
++ sys->resource[2] = NULL;
++
++ /* Assign and enable processor bridge */
++ ks8695_local_writeconfig(PCI_BASE_ADDRESS_0, KS8695_PCIMEM_PA);
++
++ /* Enable bus-master & Memory Space access */
++ ks8695_local_writeconfig(PCI_COMMAND, PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
++
++ /* Set cache-line size & latency. */
++ ks8695_local_writeconfig(PCI_CACHE_LINE_SIZE, (32 << 8) | (L1_CACHE_BYTES / sizeof(u32)));
++
++ /* Reserve PCI memory space for PCI-AHB resources */
++ if (!request_mem_region(KS8695_PCIMEM_PA, SZ_64M, "PCI-AHB Bridge")) {
++ printk(KERN_ERR "Cannot allocate PCI-AHB Bridge memory.\n");
++ return -EBUSY;
++ }
++
++ return 1;
++}
++
++static inline unsigned int size_mask(unsigned long size)
++{
++ return (~size) + 1;
++}
++
++static int ks8695_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
++{
++ unsigned long pc = instruction_pointer(regs);
++ unsigned long instr = *(unsigned long *)pc;
++ unsigned long cmdstat;
++
++ cmdstat = __raw_readl(KS8695_PCI_VA + KS8695_CRCFCS);
++
++ printk(KERN_ERR "PCI abort: address = 0x%08lx fsr = 0x%03x PC = 0x%08lx LR = 0x%08lx [%s%s%s%s%s]\n",
++ addr, fsr, regs->ARM_pc, regs->ARM_lr,
++ cmdstat & (PCI_STATUS_SIG_TARGET_ABORT << 16) ? "GenTarget" : " ",
++ cmdstat & (PCI_STATUS_REC_TARGET_ABORT << 16) ? "RecvTarget" : " ",
++ cmdstat & (PCI_STATUS_REC_MASTER_ABORT << 16) ? "MasterAbort" : " ",
++ cmdstat & (PCI_STATUS_SIG_SYSTEM_ERROR << 16) ? "SysError" : " ",
++ cmdstat & (PCI_STATUS_DETECTED_PARITY << 16) ? "Parity" : " "
++ );
++
++ __raw_writel(cmdstat, KS8695_PCI_VA + KS8695_CRCFCS);
++
++ /*
++ * If the instruction being executed was a read,
++ * make it look like it read all-ones.
++ */
++ if ((instr & 0x0c100000) == 0x04100000) {
++ int reg = (instr >> 12) & 15;
++ unsigned long val;
++
++ if (instr & 0x00400000)
++ val = 255;
++ else
++ val = -1;
++
++ regs->uregs[reg] = val;
++ regs->ARM_pc += 4;
++ return 0;
++ }
++
++ if ((instr & 0x0e100090) == 0x00100090) {
++ int reg = (instr >> 12) & 15;
++
++ regs->uregs[reg] = -1;
++ regs->ARM_pc += 4;
++ return 0;
++ }
++
++ return 1;
++}
++
++static void __init ks8695_pci_preinit(void)
++{
++ /* stage 1 initialization, subid, subdevice = 0x0001 */
++ __raw_writel(0x00010001, KS8695_PCI_VA + KS8695_CRCSID);
++
++ /* stage 2 initialization */
++ /* prefetch limits with 16 words, retry enable */
++ __raw_writel(0x40000000, KS8695_PCI_VA + KS8695_PBCS);
++
++ /* configure memory mapping */
++ __raw_writel(KS8695_PCIMEM_PA, KS8695_PCI_VA + KS8695_PMBA);
++ __raw_writel(size_mask(KS8695_PCIMEM_SIZE), KS8695_PCI_VA + KS8695_PMBAM);
++ __raw_writel(KS8695_PCIMEM_PA, KS8695_PCI_VA + KS8695_PMBAT);
++ __raw_writel(0, KS8695_PCI_VA + KS8695_PMBAC);
++
++ /* configure IO mapping */
++ __raw_writel(KS8695_PCIIO_PA, KS8695_PCI_VA + KS8695_PIOBA);
++ __raw_writel(size_mask(KS8695_PCIIO_SIZE), KS8695_PCI_VA + KS8695_PIOBAM);
++ __raw_writel(KS8695_PCIIO_PA, KS8695_PCI_VA + KS8695_PIOBAT);
++ __raw_writel(0, KS8695_PCI_VA + KS8695_PIOBAC);
++
++ /* hook in fault handlers */
++ hook_fault_code(8, ks8695_pci_fault, SIGBUS, "external abort on non-linefetch");
++ hook_fault_code(10, ks8695_pci_fault, SIGBUS, "external abort on non-linefetch");
++}
++
++static void ks8695_show_pciregs(void)
++{
++ if (!pci_dbg)
++ return;
++
++ printk(KERN_INFO "PCI: CRCFID = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCFID));
++ printk(KERN_INFO "PCI: CRCFCS = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCFCS));
++ printk(KERN_INFO "PCI: CRCFRV = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCFRV));
++ printk(KERN_INFO "PCI: CRCFLT = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCFLT));
++ printk(KERN_INFO "PCI: CRCBMA = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCBMA));
++ printk(KERN_INFO "PCI: CRCSID = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCSID));
++ printk(KERN_INFO "PCI: CRCFIT = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_CRCFIT));
++
++ printk(KERN_INFO "PCI: PBM = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PBM));
++ printk(KERN_INFO "PCI: PBCS = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PBCS));
++
++ printk(KERN_INFO "PCI: PMBA = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PMBA));
++ printk(KERN_INFO "PCI: PMBAC = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PMBAC));
++ printk(KERN_INFO "PCI: PMBAM = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PMBAM));
++ printk(KERN_INFO "PCI: PMBAT = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PMBAT));
++
++ printk(KERN_INFO "PCI: PIOBA = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PIOBA));
++ printk(KERN_INFO "PCI: PIOBAC = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PIOBAC));
++ printk(KERN_INFO "PCI: PIOBAM = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PIOBAM));
++ printk(KERN_INFO "PCI: PIOBAT = %08x\n", __raw_readl(KS8695_PCI_VA + KS8695_PIOBAT));
++}
++
++
++static struct hw_pci ks8695_pci __initdata = {
++ .nr_controllers = 1,
++ .preinit = ks8695_pci_preinit,
++ .setup = ks8695_pci_setup,
++ .scan = ks8695_pci_scan_bus,
++ .postinit = NULL,
++ .swizzle = pci_std_swizzle,
++ .map_irq = NULL,
++};
++
++void __init ks8695_init_pci(struct ks8695_pci_cfg *cfg)
++{
++ if (__raw_readl(KS8695_PCI_VA + KS8695_CRCFRV) & CFRV_GUEST) {
++ printk("PCI: KS8695 in guest mode, not initialising\n");
++ return;
++ }
++
++ printk(KERN_INFO "PCI: Initialising\n");
++ ks8695_show_pciregs();
++
++ /* set Mode */
++ __raw_writel(cfg->mode << 29, KS8695_PCI_VA + KS8695_PBM);
++
++ ks8695_pci.map_irq = cfg->map_irq; /* board-specific map_irq method */
++
++ pci_common_init(&ks8695_pci);
++}
+diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types
+index 0a9a5e7..1f10f00 100644
+--- a/arch/arm/tools/mach-types
++++ b/arch/arm/tools/mach-types
+@@ -12,7 +12,7 @@
+ #
+ # http://www.arm.linux.org.uk/developer/machines/?action=new
+ #
+-# Last update: Fri May 11 19:53:41 2007
++# Last update: Mon Nov 12 14:39:37 2007
+ #
+ # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
+ #
+@@ -266,7 +266,7 @@ stork_egg ARCH_STORK_EGG STORK_EGG 248
+ wismo SA1100_WISMO WISMO 249
+ ezlinx ARCH_EZLINX EZLINX 250
+ at91rm9200 ARCH_AT91RM9200 AT91RM9200 251
+-orion ARCH_ORION ORION 252
++adtech_orion ARCH_ADTECH_ORION ADTECH_ORION 252
+ neptune ARCH_NEPTUNE NEPTUNE 253
+ hackkit SA1100_HACKKIT HACKKIT 254
+ pxa_wins30 ARCH_PXA_WINS30 PXA_WINS30 255
+@@ -661,7 +661,7 @@ a9200ec MACH_A9200EC A9200EC 645
+ pnx0105 MACH_PNX0105 PNX0105 646
+ adcpoecpu MACH_ADCPOECPU ADCPOECPU 647
+ csb637 MACH_CSB637 CSB637 648
+-ml69q6203 MACH_ML69Q6203 ML69Q6203 649
++ml675050 MACH_ML69Q6203 ML69Q6203 649
+ mb9200 MACH_MB9200 MB9200 650
+ kulun MACH_KULUN KULUN 651
+ snapper MACH_SNAPPER SNAPPER 652
+@@ -953,7 +953,7 @@ fred_jack MACH_FRED_JACK FRED_JACK 939
+ ttg_color1 MACH_TTG_COLOR1 TTG_COLOR1 940
+ nxeb500hmi MACH_NXEB500HMI NXEB500HMI 941
+ netdcu8 MACH_NETDCU8 NETDCU8 942
+-ml675050_cpu_boa MACH_ML675050_CPU_BOA ML675050_CPU_BOA 943
++ml675050_dev_sys MACH_ML675050_CPU_BOA ML675050_CPU_BOA 943
+ ng_fvx538 MACH_NG_FVX538 NG_FVX538 944
+ ng_fvs338 MACH_NG_FVS338 NG_FVS338 945
+ pnx4103 MACH_PNX4103 PNX4103 946
+@@ -1148,7 +1148,7 @@ aidx270 MACH_AIDX270 AIDX270 1134
+ rema MACH_REMA REMA 1135
+ bps1000 MACH_BPS1000 BPS1000 1136
+ hw90350 MACH_HW90350 HW90350 1137
+-omap_sdp3430 MACH_OMAP_SDP3430 OMAP_SDP3430 1138
++omap_3430sdp MACH_OMAP_3430SDP OMAP_3430SDP 1138
+ bluetouch MACH_BLUETOUCH BLUETOUCH 1139
+ vstms MACH_VSTMS VSTMS 1140
+ xsbase270 MACH_XSBASE270 XSBASE270 1141
+@@ -1214,7 +1214,7 @@ osstbox MACH_OSSTBOX OSSTBOX 1203
+ kbat9261 MACH_KBAT9261 KBAT9261 1204
+ ct1100 MACH_CT1100 CT1100 1205
+ akcppxa MACH_AKCPPXA AKCPPXA 1206
+-zevio_1020 MACH_ZEVIO_1020 ZEVIO_1020 1207
++ochaya1020 MACH_OCHAYA1020 OCHAYA1020 1207
+ hitrack MACH_HITRACK HITRACK 1208
+ syme1 MACH_SYME1 SYME1 1209
+ syhl1 MACH_SYHL1 SYHL1 1210
+@@ -1299,7 +1299,7 @@ xp179 MACH_XP179 XP179 1290
+ h4300 MACH_H4300 H4300 1291
+ goramo_mlr MACH_GORAMO_MLR GORAMO_MLR 1292
+ mxc30020evb MACH_MXC30020EVB MXC30020EVB 1293
+-adsbitsymx MACH_ADSBITSIMX ADSBITSIMX 1294
++adsbitsyg5 MACH_ADSBITSIMX ADSBITSIMX 1294
+ adsportalplus MACH_ADSPORTALPLUS ADSPORTALPLUS 1295
+ mmsp2plus MACH_MMSP2PLUS MMSP2PLUS 1296
+ em_x270 MACH_EM_X270 EM_X270 1297
+@@ -1367,3 +1367,189 @@ db88f5281 MACH_DB88F5281 DB88F5281 1358
+ csb726 MACH_CSB726 CSB726 1359
+ tik27 MACH_TIK27 TIK27 1360
+ mx_uc7420 MACH_MX_UC7420 MX_UC7420 1361
++rirm3 MACH_RIRM3 RIRM3 1362
++pelco_odyssey MACH_PELCO_ODYSSEY PELCO_ODYSSEY 1363
++arm920t MACH_ARM920T ARM920T 1364
++add_abox MACH_ADD_ABOX ADD_ABOX 1365
++add_tpid MACH_ADD_TPID ADD_TPID 1366
++minicheck MACH_MINICHECK MINICHECK 1367
++idam MACH_IDAM IDAM 1368
++mario_mx MACH_MARIO_MX MARIO_MX 1369
++vi1888 MACH_VI1888 VI1888 1370
++zr4230 MACH_ZR4230 ZR4230 1371
++t1_ix_blue MACH_T1_IX_BLUE T1_IX_BLUE 1372
++syhq2 MACH_SYHQ2 SYHQ2 1373
++computime_r3 MACH_COMPUTIME_R3 COMPUTIME_R3 1374
++oratis MACH_ORATIS ORATIS 1375
++mikko MACH_MIKKO MIKKO 1376
++holon MACH_HOLON HOLON 1377
++olip8 MACH_OLIP8 OLIP8 1378
++ghi270hg MACH_GHI270HG GHI270HG 1379
++davinci_dm6467_evm MACH_DAVINCI_DM6467_EVM DAVINCI_DM6467_EVM 1380
++davinci_dm355_evm MACH_DAVINCI_DM350_EVM DAVINCI_DM350_EVM 1381
++ocearm MACH_OCEARMTEST OCEARMTEST 1382
++blackriver MACH_BLACKRIVER BLACKRIVER 1383
++sandgate_wp MACH_SANDGATEWP SANDGATEWP 1384
++cdotbwsg MACH_CDOTBWSG CDOTBWSG 1385
++quark963 MACH_QUARK963 QUARK963 1386
++csb735 MACH_CSB735 CSB735 1387
++littleton MACH_LITTLETON LITTLETON 1388
++mio_p550 MACH_MIO_P550 MIO_P550 1389
++motion2440 MACH_MOTION2440 MOTION2440 1390
++imm500 MACH_IMM500 IMM500 1391
++homematic MACH_HOMEMATIC HOMEMATIC 1392
++ermine MACH_ERMINE ERMINE 1393
++kb9202b MACH_KB9202B KB9202B 1394
++hs1xx MACH_HS1XX HS1XX 1395
++studentmate2440 MACH_STUDENTMATE2440 STUDENTMATE2440 1396
++arvoo_l1_z1 MACH_ARVOO_L1_Z1 ARVOO_L1_Z1 1397
++dep2410k MACH_DEP2410K DEP2410K 1398
++xxsvideo MACH_XXSVIDEO XXSVIDEO 1399
++im4004 MACH_IM4004 IM4004 1400
++ochaya1050 MACH_OCHAYA1050 OCHAYA1050 1401
++lep9261 MACH_LEP9261 LEP9261 1402
++svenmeb MACH_SVENMEB SVENMEB 1403
++fortunet2ne MACH_FORTUNET2NE FORTUNET2NE 1404
++omap2 MACH_OMAP2 OMAP2 1405
++nxhx MACH_NXHX NXHX 1406
++realview_pb11mp MACH_REALVIEW_PB11MP REALVIEW_PB11MP 1407
++ids500 MACH_IDS500 IDS500 1408
++ors_n725 MACH_ORS_N725 ORS_N725 1409
++hsdarm MACH_HSDARM HSDARM 1410
++sha_pon003 MACH_SHA_PON003 SHA_PON003 1411
++sha_pon004 MACH_SHA_PON004 SHA_PON004 1412
++sha_pon007 MACH_SHA_PON007 SHA_PON007 1413
++sha_pon011 MACH_SHA_PON011 SHA_PON011 1414
++h6042 MACH_H6042 H6042 1415
++h6043 MACH_H6043 H6043 1416
++looxc550 MACH_LOOXC550 LOOXC550 1417
++cnty_titan MACH_CNTY_TITAN CNTY_TITAN 1418
++app3xx MACH_APP3XX APP3XX 1419
++sideoatsgrama MACH_SIDEOATSGRAMA SIDEOATSGRAMA 1420
++xscale_palmt700p MACH_XSCALE_PALMT700P XSCALE_PALMT700P 1421
++xscale_palmt700w MACH_XSCALE_PALMT700W XSCALE_PALMT700W 1422
++xscale_palmt750 MACH_XSCALE_PALMT750 XSCALE_PALMT750 1423
++xscale_palmt755p MACH_XSCALE_PALMT755P XSCALE_PALMT755P 1424
++ezreganut9200 MACH_EZREGANUT9200 EZREGANUT9200 1425
++sarge MACH_SARGE SARGE 1426
++a696 MACH_A696 A696 1427
++turtle1916 MACH_TURTLE TURTLE 1428
++pxa1916 MACH_MY5910TURTLE MY5910TURTLE 1429
++mx27_3ds MACH_MX27_3DS MX27_3DS 1430
++bishop MACH_BISHOP BISHOP 1431
++pxx MACH_PXX PXX 1432
++redwood MACH_REDWOOD REDWOOD 1433
++dummy MACH_OMAP2430DLP OMAP2430DLP 1434
++dummy_board MACH_OMAP2430OSK OMAP2430OSK 1435
++omap_2430dlp MACH_OMAP_2430DLP OMAP_2430DLP 1436
++omap_2430osk MACH_OMAP_2430OSK OMAP_2430OSK 1437
++sardine MACH_SARDINE SARDINE 1438
++halibut MACH_HALIBUT HALIBUT 1439
++trout MACH_TROUT TROUT 1440
++goldfish MACH_GOLDFISH GOLDFISH 1441
++gesbc2440 MACH_GESBC2440 GESBC2440 1442
++nomad MACH_NOMAD NOMAD 1443
++rosalind MACH_ROSALIND ROSALIND 1444
++cc9p9215 MACH_CC9P9215 CC9P9215 1445
++cc9p9210 MACH_CC9P9210 CC9P9210 1446
++cc9p9215js MACH_CC9P9215JS CC9P9215JS 1447
++cc9p9210js MACH_CC9P9210JS CC9P9210JS 1448
++nasffe MACH_NASFFE NASFFE 1449
++tn2x0bd MACH_TN2X0BD TN2X0BD 1450
++gwmpxa MACH_GWMPXA GWMPXA 1451
++exyplus MACH_EXYPLUS EXYPLUS 1452
++jadoo21 MACH_JADOO21 JADOO21 1453
++looxn560 MACH_LOOXN560 LOOXN560 1454
++bonsai MACH_BONSAI BONSAI 1455
++adsmilgato MACH_ADSMILGATO ADSMILGATO 1456
++gba MACH_GBA GBA 1457
++h6044 MACH_H6044 H6044 1458
++app MACH_APP APP 1459
++tct_hammer MACH_TCT_HAMMER TCT_HAMMER 1460
++herald MACH_HERMES HERMES 1461
++artemis MACH_ARTEMIS ARTEMIS 1462
++htctitan MACH_HTCTITAN HTCTITAN 1463
++qranium MACH_QRANIUM QRANIUM 1464
++add_wsc2 MACH_ADD_WSC2 ADD_WSC2 1465
++add_medinet MACH_ADD_MEDINET ADD_MEDINET 1466
++bboard MACH_BBOARD BBOARD 1467
++cambria MACH_CAMBRIA CAMBRIA 1468
++mt7xxx MACH_MT7XXX MT7XXX 1469
++matrix512 MACH_MATRIX512 MATRIX512 1470
++matrix522 MACH_MATRIX522 MATRIX522 1471
++ipac5010 MACH_IPAC5010 IPAC5010 1472
++sakura MACH_SAKURA SAKURA 1473
++grocx MACH_GROCX GROCX 1474
++pm9263 MACH_PM9263 PM9263 1475
++sim_one MACH_SIM_ONE SIM_ONE 1476
++acq132 MACH_ACQ132 ACQ132 1477
++datr MACH_DATR DATR 1478
++actux1 MACH_ACTUX1 ACTUX1 1479
++actux2 MACH_ACTUX2 ACTUX2 1480
++actux3 MACH_ACTUX3 ACTUX3 1481
++flexit MACH_FLEXIT FLEXIT 1482
++bh2x0bd MACH_BH2X0BD BH2X0BD 1483
++atb2002 MACH_ATB2002 ATB2002 1484
++xenon MACH_XENON XENON 1485
++fm607 MACH_FM607 FM607 1486
++matrix514 MACH_MATRIX514 MATRIX514 1487
++matrix524 MACH_MATRIX524 MATRIX524 1488
++inpod MACH_INPOD INPOD 1489
++jive MACH_JIVE JIVE 1490
++tll_mx21 MACH_TLL_MX21 TLL_MX21 1491
++sbc2800 MACH_SBC2800 SBC2800 1492
++cc7ucamry MACH_CC7UCAMRY CC7UCAMRY 1493
++ubisys_p9_sc15 MACH_UBISYS_P9_SC15 UBISYS_P9_SC15 1494
++ubisys_p9_ssc2d10 MACH_UBISYS_P9_SSC2D10 UBISYS_P9_SSC2D10 1495
++ubisys_p9_rcu3 MACH_UBISYS_P9_RCU3 UBISYS_P9_RCU3 1496
++aml_m8000 MACH_AML_M8000 AML_M8000 1497
++snapper_270 MACH_SNAPPER_270 SNAPPER_270 1498
++omap_bbx MACH_OMAP_BBX OMAP_BBX 1499
++ucn2410 MACH_UCN2410 UCN2410 1500
++sam9_l9260 MACH_SAM9_L9260 SAM9_L9260 1501
++eti_c2 MACH_ETI_C2 ETI_C2 1502
++avalanche MACH_AVALANCHE AVALANCHE 1503
++realview_pb1176 MACH_REALVIEW_PB1176 REALVIEW_PB1176 1504
++dp1500 MACH_DP1500 DP1500 1505
++apple_iphone MACH_APPLE_IPHONE APPLE_IPHONE 1506
++yl9200 MACH_YL9200 YL9200 1507
++rd88f5182 MACH_RD88F5182 RD88F5182 1508
++kurobox_pro MACH_KUROBOX_PRO KUROBOX_PRO 1509
++se_poet MACH_SE_POET SE_POET 1510
++mx31_3ds MACH_MX31_3DS MX31_3DS 1511
++r270 MACH_R270 R270 1512
++armour21 MACH_ARMOUR21 ARMOUR21 1513
++dt2 MACH_DT2 DT2 1514
++vt4 MACH_VT4 VT4 1515
++tyco320 MACH_TYCO320 TYCO320 1516
++adma MACH_ADMA ADMA 1517
++wp188 MACH_WP188 WP188 1518
++corsica MACH_CORSICA CORSICA 1519
++bigeye MACH_BIGEYE BIGEYE 1520
++machine_is_arm2410 MACH_MACHINE_IS_ARM2410 MACHINE_IS_ARM2410 1521
++tll5000 MACH_TLL5000 TLL5000 1522
++hni270 MACH_HNI_X270 HNI_X270 1523
++qong MACH_QONG QONG 1524
++tcompact MACH_TCOMPACT TCOMPACT 1525
++puma5 MACH_PUMA5 PUMA5 1526
++elara MACH_ELARA ELARA 1527
++ellington MACH_ELLINGTON ELLINGTON 1528
++xda_atom MACH_XDA_ATOM XDA_ATOM 1529
++energizer2 MACH_ENERGIZER2 ENERGIZER2 1530
++odin MACH_ODIN ODIN 1531
++actux4 MACH_ACTUX4 ACTUX4 1532
++esl_omap MACH_ESL_OMAP ESL_OMAP 1533
++omap2evm MACH_OMAP2EVM OMAP2EVM 1534
++omap3evm MACH_OMAP3EVM OMAP3EVM 1535
++add_pcu57 MACH_ADD_PCU57 ADD_PCU57 1536
++monaco MACH_MONACO MONACO 1537
++levante MACH_LEVANTE LEVANTE 1538
++tmxipx425 MACH_TMXIPX425 TMXIPX425 1539
++leep MACH_LEEP LEEP 1540
++raad MACH_RAAD RAAD 1541
++dns323 MACH_DNS323 DNS323 1542
++ap1000 MACH_AP1000 AP1000 1543
++a9sam6432 MACH_A9SAM6432 A9SAM6432 1544
++shiny MACH_SHINY SHINY 1545
++omap3_beagle MACH_OMAP3_BEAGLE OMAP3_BEAGLE 1546
++csr_bdb2 MACH_CSR_BDB2 CSR_BDB2 1547
+diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
+index ef1ed5d..99be2d0 100644
+--- a/drivers/char/Kconfig
++++ b/drivers/char/Kconfig
+@@ -1040,5 +1040,21 @@ config DEVPORT
+
+ source "drivers/s390/char/Kconfig"
+
++config AT91_SPI
++ bool "SPI driver (legacy) for AT91RM9200 processors"
++ depends on ARCH_AT91RM9200
++ default y
++ help
++ The SPI driver gives access to this serial bus on the AT91RM9200
++ processor.
++
++config AT91_SPIDEV
++ bool "SPI device interface (legacy) for AT91RM9200 processors"
++ depends on ARCH_AT91RM9200 && AT91_SPI
++ default n
++ help
++ The SPI driver gives user mode access to this serial
++ bus on the AT91RM9200 processor.
++
+ endmenu
+
+diff --git a/drivers/char/Makefile b/drivers/char/Makefile
+index 07304d5..359384c 100644
+--- a/drivers/char/Makefile
++++ b/drivers/char/Makefile
+@@ -96,6 +96,8 @@ obj-$(CONFIG_CS5535_GPIO) += cs5535_gpio.o
+ obj-$(CONFIG_GPIO_VR41XX) += vr41xx_giu.o
+ obj-$(CONFIG_GPIO_TB0219) += tb0219.o
+ obj-$(CONFIG_TELCLOCK) += tlclk.o
++obj-$(CONFIG_AT91_SPI) += at91_spi.o
++obj-$(CONFIG_AT91_SPIDEV) += at91_spidev.o
+
+ obj-$(CONFIG_MWAVE) += mwave/
+ obj-$(CONFIG_AGP) += agp/
+diff --git a/drivers/char/at91_spi.c b/drivers/char/at91_spi.c
+new file mode 100644
+index 0000000..08dec81
+--- /dev/null
++++ b/drivers/char/at91_spi.c
+@@ -0,0 +1,336 @@
++/*
++ * Serial Peripheral Interface (SPI) driver for the Atmel AT91RM9200 (Thunder)
++ *
++ * Copyright (C) SAN People (Pty) Ltd
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#include <linux/init.h>
++#include <linux/dma-mapping.h>
++#include <linux/module.h>
++#include <linux/sched.h>
++#include <linux/completion.h>
++#include <linux/interrupt.h>
++#include <linux/clk.h>
++#include <linux/platform_device.h>
++#include <linux/atmel_pdc.h>
++#include <asm/io.h>
++#include <asm/semaphore.h>
++
++#include <asm/arch/at91_spi.h>
++#include <asm/arch/board.h>
++#include <asm/arch/spi.h>
++
++#undef DEBUG_SPI
++
++static struct spi_local spi_dev[NR_SPI_DEVICES]; /* state of the SPI devices */
++static int spi_enabled = 0;
++static struct semaphore spi_lock; /* protect access to SPI bus */
++static int current_device = -1; /* currently selected SPI device */
++static struct clk *spi_clk; /* SPI clock */
++static void __iomem *spi_base; /* SPI peripheral base-address */
++
++DECLARE_COMPLETION(transfer_complete);
++
++
++#define at91_spi_read(reg) __raw_readl(spi_base + (reg))
++#define at91_spi_write(reg, val) __raw_writel((val), spi_base + (reg))
++
++
++/* ......................................................................... */
++
++/*
++ * Access and enable the SPI bus.
++ * This MUST be called before any transfers are performed.
++ */
++void spi_access_bus(short device)
++{
++ /* Ensure that requested device is valid */
++ if ((device < 0) || (device >= NR_SPI_DEVICES))
++ panic("at91_spi: spi_access_bus called with invalid device");
++
++ if (spi_enabled == 0) {
++ clk_enable(spi_clk); /* Enable Peripheral clock */
++ at91_spi_write(AT91_SPI_CR, AT91_SPI_SPIEN); /* Enable SPI */
++#ifdef DEBUG_SPI
++ printk("SPI on\n");
++#endif
++ }
++ spi_enabled++;
++
++ /* Lock the SPI bus */
++ down(&spi_lock);
++ current_device = device;
++
++ /* Configure SPI bus for device */
++ at91_spi_write(AT91_SPI_MR, AT91_SPI_MSTR | AT91_SPI_MODFDIS | (spi_dev[device].pcs << 16));
++}
++
++/*
++ * Relinquish control of the SPI bus.
++ */
++void spi_release_bus(short device)
++{
++ if (device != current_device)
++ panic("at91_spi: spi_release called with invalid device");
++
++ /* Release the SPI bus */
++ current_device = -1;
++ up(&spi_lock);
++
++ spi_enabled--;
++ if (spi_enabled == 0) {
++ at91_spi_write(AT91_SPI_CR, AT91_SPI_SPIDIS); /* Disable SPI */
++ clk_disable(spi_clk); /* Disable Peripheral clock */
++#ifdef DEBUG_SPI
++ printk("SPI off\n");
++#endif
++ }
++}
++
++/*
++ * Perform a data transfer over the SPI bus
++ */
++int spi_transfer(struct spi_transfer_list* list)
++{
++ struct spi_local *device = (struct spi_local *) &spi_dev[current_device];
++ int tx_size;
++
++ if (!list)
++ panic("at91_spi: spi_transfer called with NULL transfer list");
++ if (current_device == -1)
++ panic("at91_spi: spi_transfer called without acquiring bus");
++
++#ifdef DEBUG_SPI
++ printk("SPI transfer start [%i]\n", list->nr_transfers);
++#endif
++
++ /* If we are in 16-bit mode, we need to modify what we pass to the PDC */
++ tx_size = (at91_spi_read(AT91_SPI_CSR(current_device)) & AT91_SPI_BITS_16) ? 2 : 1;
++
++ /* Store transfer list */
++ device->xfers = list;
++ list->curr = 0;
++
++ /* Assume there must be at least one transfer */
++ device->tx = dma_map_single(NULL, list->tx[0], list->txlen[0], DMA_TO_DEVICE);
++ device->rx = dma_map_single(NULL, list->rx[0], list->rxlen[0], DMA_FROM_DEVICE);
++
++ /* Program PDC registers */
++ at91_spi_write(ATMEL_PDC_TPR, device->tx);
++ at91_spi_write(ATMEL_PDC_RPR, device->rx);
++ at91_spi_write(ATMEL_PDC_TCR, list->txlen[0] / tx_size);
++ at91_spi_write(ATMEL_PDC_RCR, list->rxlen[0] / tx_size);
++
++ /* Is there a second transfer? */
++ if (list->nr_transfers > 1) {
++ device->txnext = dma_map_single(NULL, list->tx[1], list->txlen[1], DMA_TO_DEVICE);
++ device->rxnext = dma_map_single(NULL, list->rx[1], list->rxlen[1], DMA_FROM_DEVICE);
++
++ /* Program Next PDC registers */
++ at91_spi_write(ATMEL_PDC_TNPR, device->txnext);
++ at91_spi_write(ATMEL_PDC_RNPR, device->rxnext);
++ at91_spi_write(ATMEL_PDC_TNCR, list->txlen[1] / tx_size);
++ at91_spi_write(ATMEL_PDC_RNCR, list->rxlen[1] / tx_size);
++ }
++ else {
++ device->txnext = 0;
++ device->rxnext = 0;
++ at91_spi_write(ATMEL_PDC_TNCR, 0);
++ at91_spi_write(ATMEL_PDC_RNCR, 0);
++ }
++
++ // TODO: If we are doing consecutive transfers (at high speed, or
++ // small buffers), then it might be worth modifying the 'Delay between
++ // Consecutive Transfers' in the CSR registers.
++ // This is an issue if we cannot chain the next buffer fast enough
++ // in the interrupt handler.
++
++ /* Enable transmitter and receiver */
++ at91_spi_write(ATMEL_PDC_PTCR, ATMEL_PDC_RXTEN | ATMEL_PDC_TXTEN);
++
++ at91_spi_write(AT91_SPI_IER, AT91_SPI_ENDRX); /* enable buffer complete interrupt */
++ wait_for_completion(&transfer_complete);
++
++#ifdef DEBUG_SPI
++ printk("SPI transfer end\n");
++#endif
++
++ return 0;
++}
++
++/* ......................................................................... */
++
++/*
++ * Handle interrupts from the SPI controller.
++ */
++static irqreturn_t at91spi_interrupt(int irq, void *dev_id)
++{
++ unsigned int status;
++ struct spi_local *device = (struct spi_local *) &spi_dev[current_device];
++ struct spi_transfer_list *list = device->xfers;
++
++#ifdef DEBUG_SPI
++ printk("SPI interrupt %i\n", current_device);
++#endif
++
++ if (!list)
++ panic("at91_spi: spi_interrupt with a NULL transfer list");
++
++ status = at91_spi_read(AT91_SPI_SR) & at91_spi_read(AT91_SPI_IMR); /* read status */
++
++ dma_unmap_single(NULL, device->tx, list->txlen[list->curr], DMA_TO_DEVICE);
++ dma_unmap_single(NULL, device->rx, list->rxlen[list->curr], DMA_FROM_DEVICE);
++
++ device->tx = device->txnext; /* move next transfer to current transfer */
++ device->rx = device->rxnext;
++
++ list->curr = list->curr + 1;
++ if (list->curr == list->nr_transfers) { /* all transfers complete */
++ at91_spi_write(AT91_SPI_IDR, AT91_SPI_ENDRX); /* disable interrupt */
++
++ /* Disable transmitter and receiver */
++ at91_spi_write(ATMEL_PDC_PTCR, ATMEL_PDC_RXTDIS | ATMEL_PDC_TXTDIS);
++
++ device->xfers = NULL;
++ complete(&transfer_complete);
++ }
++ else if (list->curr+1 == list->nr_transfers) { /* no more next transfers */
++ device->txnext = 0;
++ device->rxnext = 0;
++ at91_spi_write(ATMEL_PDC_TNCR, 0);
++ at91_spi_write(ATMEL_PDC_RNCR, 0);
++ }
++ else {
++ int i = (list->curr)+1;
++
++ /* If we are in 16-bit mode, we need to modify what we pass to the PDC */
++ int tx_size = (at91_spi_read(AT91_SPI_CSR(current_device)) & AT91_SPI_BITS_16) ? 2 : 1;
++
++ device->txnext = dma_map_single(NULL, list->tx[i], list->txlen[i], DMA_TO_DEVICE);
++ device->rxnext = dma_map_single(NULL, list->rx[i], list->rxlen[i], DMA_FROM_DEVICE);
++ at91_spi_write(ATMEL_PDC_TNPR, device->txnext);
++ at91_spi_write(ATMEL_PDC_RNPR, device->rxnext);
++ at91_spi_write(ATMEL_PDC_TNCR, list->txlen[i] / tx_size);
++ at91_spi_write(ATMEL_PDC_RNCR, list->rxlen[i] / tx_size);
++ }
++ return IRQ_HANDLED;
++}
++
++/* ......................................................................... */
++
++/*
++ * Initialize the SPI controller
++ */
++static int __init at91spi_probe(struct platform_device *pdev)
++{
++ int i;
++ unsigned long scbr;
++ struct resource *res;
++
++ init_MUTEX(&spi_lock);
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!res)
++ return -ENXIO;
++
++ if (!request_mem_region(res->start, res->end - res->start + 1, "at91_spi"))
++ return -EBUSY;
++
++ spi_base = ioremap(res->start, res->end - res->start + 1);
++ if (!spi_base) {
++ release_mem_region(res->start, res->end - res->start + 1);
++ return -ENOMEM;
++ }
++
++ spi_clk = clk_get(NULL, "spi_clk");
++ if (IS_ERR(spi_clk)) {
++ printk(KERN_ERR "at91_spi: no clock defined\n");
++ iounmap(spi_base);
++ release_mem_region(res->start, res->end - res->start + 1);
++ return -ENODEV;
++ }
++
++ at91_spi_write(AT91_SPI_CR, AT91_SPI_SWRST); /* software reset of SPI controller */
++
++ /*
++ * Calculate the correct SPI baud-rate divisor.
++ */
++ scbr = clk_get_rate(spi_clk) / (2 * DEFAULT_SPI_CLK);
++ scbr = scbr + 1; /* round up */
++
++ printk(KERN_INFO "at91_spi: Baud rate set to %ld\n", clk_get_rate(spi_clk) / (2 * scbr));
++
++ /* Set Chip Select registers to good defaults */
++ for (i = 0; i < 4; i++) {
++ at91_spi_write(AT91_SPI_CSR(i), AT91_SPI_CPOL | AT91_SPI_BITS_8 | (16 << 16) | (scbr << 8));
++ }
++
++ at91_spi_write(ATMEL_PDC_PTCR, ATMEL_PDC_RXTDIS | ATMEL_PDC_TXTDIS);
++
++ memset(&spi_dev, 0, sizeof(spi_dev));
++ spi_dev[0].pcs = 0xE;
++ spi_dev[1].pcs = 0xD;
++ spi_dev[2].pcs = 0xB;
++ spi_dev[3].pcs = 0x7;
++
++ if (request_irq(AT91RM9200_ID_SPI, at91spi_interrupt, 0, "spi", NULL)) {
++ clk_put(spi_clk);
++ iounmap(spi_base);
++ release_mem_region(res->start, res->end - res->start + 1);
++ return -EBUSY;
++ }
++
++ at91_spi_write(AT91_SPI_CR, AT91_SPI_SPIEN); /* Enable SPI */
++
++ return 0;
++}
++
++static int __devexit at91spi_remove(struct platform_device *pdev)
++{
++ struct resource *res;
++
++ at91_spi_write(AT91_SPI_CR, AT91_SPI_SPIDIS); /* Disable SPI */
++ clk_put(spi_clk);
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ iounmap(spi_base);
++ release_mem_region(res->start, res->end - res->start + 1);
++
++ free_irq(AT91RM9200_ID_SPI, 0);
++ return 0;
++}
++
++static struct platform_driver at91spi_driver = {
++ .probe = at91spi_probe,
++ .remove = __devexit_p(at91spi_remove),
++ .driver = {
++ .name = "at91_spi",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init at91spi_init(void)
++{
++ return platform_driver_register(&at91spi_driver);
++}
++
++static void __exit at91spi_exit(void)
++{
++ platform_driver_unregister(&at91spi_driver);
++}
++
++EXPORT_SYMBOL(spi_access_bus);
++EXPORT_SYMBOL(spi_release_bus);
++EXPORT_SYMBOL(spi_transfer);
++
++module_init(at91spi_init);
++module_exit(at91spi_exit);
++
++MODULE_LICENSE("GPL")
++MODULE_AUTHOR("Andrew Victor")
++MODULE_DESCRIPTION("SPI driver for Atmel AT91RM9200")
+diff --git a/drivers/char/at91_spidev.c b/drivers/char/at91_spidev.c
+new file mode 100644
+index 0000000..4819b74
+--- /dev/null
++++ b/drivers/char/at91_spidev.c
+@@ -0,0 +1,233 @@
++/*
++ * User-space interface to the SPI bus on Atmel AT91RM9200
++ *
++ * Copyright (C) 2003 SAN People (Pty) Ltd
++ *
++ * Based on SPI driver by Rick Bronson
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/slab.h>
++#include <linux/highmem.h>
++#include <linux/pagemap.h>
++#include <asm/arch/spi.h>
++
++#ifdef CONFIG_DEVFS_FS
++#include <linux/devfs_fs_kernel.h>
++#endif
++
++
++#undef DEBUG_SPIDEV
++
++/* ......................................................................... */
++
++/*
++ * Read or Write to SPI bus.
++ */
++static ssize_t spidev_rd_wr(struct file *file, char *buf, size_t count, loff_t *offset)
++{
++ unsigned int spi_device = (unsigned int) file->private_data;
++
++ struct mm_struct * mm;
++ struct page ** maplist;
++ struct spi_transfer_list* list;
++ int pgcount;
++
++ unsigned int ofs, pagelen;
++ int res, i, err;
++
++ if (!count) {
++ return 0;
++ }
++
++ list = kmalloc(sizeof(struct spi_transfer_list), GFP_KERNEL);
++ if (!list) {
++ return -ENOMEM;
++ }
++
++ mm = current->mm;
++
++ pgcount = ((unsigned long)buf+count+PAGE_SIZE-1)/PAGE_SIZE - (unsigned long)buf/PAGE_SIZE;
++
++ if (pgcount >= MAX_SPI_TRANSFERS) {
++ kfree(list);
++ return -EFBIG;
++ }
++
++ maplist = kmalloc (pgcount * sizeof (struct page *), GFP_KERNEL);
++
++ if (!maplist) {
++ kfree(list);
++ return -ENOMEM;
++ }
++ flush_cache_all();
++ down_read(&mm->mmap_sem);
++ err= get_user_pages(current, mm, (unsigned long)buf, pgcount, 1, 0, maplist, NULL);
++ up_read(&mm->mmap_sem);
++
++ if (err < 0) {
++ kfree(list);
++ kfree(maplist);
++ return err;
++ }
++ pgcount = err;
++
++#ifdef DEBUG_SPIDEV
++ printk("spidev_rd_rw: %i %i\n", count, pgcount);
++#endif
++
++ /* Set default return value = transfer length */
++ res = count;
++
++ /*
++ * At this point, the virtual area buf[0] .. buf[count-1] will have
++ * corresponding pages mapped in the physical memory and locked until
++ * we unmap the kiobuf. The pages cannot be swapped out or moved
++ * around.
++ */
++ ofs = (unsigned long) buf & (PAGE_SIZE -1);
++ pagelen = PAGE_SIZE - ofs;
++ if (count < pagelen)
++ pagelen = count;
++
++ for (i = 0; i < pgcount; i++) {
++ flush_dcache_page(maplist[i]);
++
++ list->tx[i] = list->rx[i] = page_address(maplist[i]) + ofs;
++ list->txlen[i] = list->rxlen[i] = pagelen;
++
++#ifdef DEBUG_SPIDEV
++ printk(" %i: %x (%i)\n", i, list->tx[i], list->txlen[i]);
++#endif
++
++ ofs = 0; /* all subsequent transfers start at beginning of a page */
++ count = count - pagelen;
++ pagelen = (count < PAGE_SIZE) ? count : PAGE_SIZE;
++ }
++ list->nr_transfers = pgcount;
++
++ /* Perform transfer on SPI bus */
++ spi_access_bus(spi_device);
++ spi_transfer(list);
++ spi_release_bus(spi_device);
++
++ while (pgcount--) {
++ page_cache_release (maplist[pgcount]);
++ }
++ flush_cache_all();
++
++ kfree(maplist);
++ kfree(list);
++
++ return res;
++}
++
++static int spidev_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
++{
++ int spi_device = MINOR(inode->i_rdev);
++
++ if (spi_device >= NR_SPI_DEVICES)
++ return -ENODEV;
++
++ // TODO: This interface can be used to configure the SPI bus.
++ // Configurable options could include: Speed, Clock Polarity, Clock Phase
++
++ switch(cmd) {
++ default:
++ return -ENOIOCTLCMD;
++ }
++}
++
++/*
++ * Open the SPI device
++ */
++static int spidev_open(struct inode *inode, struct file *file)
++{
++ unsigned int spi_device = MINOR(inode->i_rdev);
++
++ if (spi_device >= NR_SPI_DEVICES)
++ return -ENODEV;
++
++ /*
++ * 'private_data' is actually a pointer, but we overload it with the
++ * value we want to store.
++ */
++ file->private_data = (void *)spi_device;
++
++ return 0;
++}
++
++/*
++ * Close the SPI device
++ */
++static int spidev_close(struct inode *inode, struct file *file)
++{
++ return 0;
++}
++
++/* ......................................................................... */
++
++static struct file_operations spidev_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .read = spidev_rd_wr,
++ .write = (int (*) (struct file *file, const char *buf, size_t count, loff_t *offset))spidev_rd_wr,
++ .ioctl = spidev_ioctl,
++ .open = spidev_open,
++ .release = spidev_close,
++};
++
++/*
++ * Install the SPI /dev interface driver
++ */
++static int __init at91_spidev_init(void)
++{
++#ifdef CONFIG_DEVFS_FS
++ int i;
++#endif
++
++ if (register_chrdev(SPI_MAJOR, "spi", &spidev_fops)) {
++ printk(KERN_ERR "at91_spidev: Unable to get major %d for SPI bus\n", SPI_MAJOR);
++ return -EIO;
++ }
++
++#ifdef CONFIG_DEVFS_FS
++ devfs_mk_dir("spi");
++ for (i = 0; i < NR_SPI_DEVICES; i++) {
++ devfs_mk_cdev(MKDEV(SPI_MAJOR, i), S_IFCHR | S_IRUSR | S_IWUSR, "spi/%d",i);
++ }
++#endif
++ printk(KERN_INFO "AT91 SPI driver loaded\n");
++
++ return 0;
++}
++
++/*
++ * Remove the SPI /dev interface driver
++ */
++static void __exit at91_spidev_exit(void)
++{
++#ifdef CONFIG_DEVFS_FS
++ int i;
++ for (i = 0; i < NR_SPI_DEVICES; i++) {
++ devfs_remove("spi/%d", i);
++ }
++
++ devfs_remove("spi");
++#endif
++
++ unregister_chrdev(SPI_MAJOR, "spi");
++}
++
++module_init(at91_spidev_init);
++module_exit(at91_spidev_exit);
++
++MODULE_LICENSE("GPL")
++MODULE_AUTHOR("Andrew Victor")
++MODULE_DESCRIPTION("SPI /dev interface for Atmel AT91RM9200")
+diff --git a/drivers/char/watchdog/at91sam9_wdt.c b/drivers/char/watchdog/at91sam9_wdt.c
+new file mode 100644
+index 0000000..43491fe
+--- /dev/null
++++ b/drivers/char/watchdog/at91sam9_wdt.c
+@@ -0,0 +1,258 @@
++/*
++ * Watchdog driver for Atmel AT91SAM9x processors.
++ *
++ * Copyright (C) 2007 Renaud CERRATO r.cerrato@til-technologies.fr
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++/*
++ * The Watchdog Timer Mode Register can be only written to once. If the
++ * timeout need to be set from Linux, be sure that the bootstrap or the
++ * bootloader doesn't write to this register.
++ */
++
++#include <linux/errno.h>
++#include <linux/fs.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/miscdevice.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/platform_device.h>
++#include <linux/types.h>
++#include <linux/watchdog.h>
++#include <linux/bitops.h>
++#include <linux/uaccess.h>
++
++#include <asm/arch/at91_wdt.h>
++
++
++#define WDT_MAX_TIME 16 /* seconds */
++
++static int wdt_timeout = -1; /* invalid */
++
++module_param(wdt_timeout, int, 0);
++MODULE_PARM_DESC(wdt_timeout, "Watchdog time in seconds. (default = disabled)");
++
++
++static unsigned long at91wdt_busy;
++
++/* ......................................................................... */
++
++/*
++ * Reload the watchdog timer. (ie, pat the watchdog)
++ */
++static void inline at91_wdt_reload(void)
++{
++ at91_sys_write(AT91_WDT_CR, AT91_WDT_KEY | AT91_WDT_WDRSTT);
++}
++
++/* ......................................................................... */
++
++/*
++ * Watchdog device is opened, and watchdog starts running.
++ */
++static int at91_wdt_open(struct inode *inode, struct file *file)
++{
++ if (test_and_set_bit(0, &at91wdt_busy))
++ return -EBUSY;
++
++ return nonseekable_open(inode, file);
++}
++
++/*
++ * Close the watchdog device.
++ */
++static int at91_wdt_close(struct inode *inode, struct file *file)
++{
++ clear_bit(0, &at91wdt_busy);
++ return 0;
++}
++
++/*
++ * Change the watchdog time interval.
++ */
++static int at91_wdt_settimeout(int new_time)
++{
++ unsigned int reg, mr;
++ /*
++ * All counting occurs at SLOW_CLOCK / 128 = 256 Hz
++ *
++ * Since WDV is a 12-bit counter, the maximum period is
++ * 4096 / 256 = 16 seconds.
++ */
++ if ((new_time <= 0) || (new_time > WDT_MAX_TIME))
++ return -EINVAL;
++
++ wdt_timeout = new_time;
++
++ /* Program the Watchdog */
++ reg = AT91_WDT_WDRSTEN /* causes watchdog reset */
++ | AT91_WDT_WDRPROC /* causes processor reset */
++ | AT91_WDT_WDDBGHLT /* disabled in debug mode */
++ | AT91_WDT_WDD /* restart at any time */
++ | (((wdt_timeout * 256) - 1) & AT91_WDT_WDV); /* timer value */
++ at91_sys_write(AT91_WDT_MR, reg);
++
++ /* Check if watchdog could be programmed */
++ mr = at91_sys_read(AT91_WDT_MR);
++ if (mr != reg) {
++ printk(KERN_ERR "at91sam9_wdt: Watchdog register already programmed.\n");
++ return -EIO;
++ }
++
++ at91_wdt_reload();
++
++ printk(KERN_INFO "AT91SAM9 Watchdog enabled (%d seconds, nowayout)\n", wdt_timeout);
++ return 0;
++}
++
++static struct watchdog_info at91_wdt_info = {
++ .identity = "at91sam9 watchdog",
++ .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
++};
++
++/*
++ * Handle commands from user-space.
++ */
++static int at91_wdt_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ void __user *argp = (void __user *)arg;
++ int __user *p = argp;
++ int new_value, err;
++
++ switch (cmd) {
++ case WDIOC_KEEPALIVE:
++ at91_wdt_reload(); /* pat the watchdog */
++ return 0;
++
++ case WDIOC_GETSUPPORT:
++ return copy_to_user(argp, &at91_wdt_info, sizeof(at91_wdt_info)) ? -EFAULT : 0;
++
++ case WDIOC_SETTIMEOUT:
++ if (get_user(new_value, p))
++ return -EFAULT;
++
++ err = at91_wdt_settimeout(new_value);
++ if (err)
++ return err;
++
++ return put_user(wdt_timeout, p); /* return current value */
++
++ case WDIOC_GETTIMEOUT:
++ return put_user(wdt_timeout, p);
++
++ case WDIOC_GETSTATUS:
++ case WDIOC_GETBOOTSTATUS:
++ return put_user(0, p);
++ }
++ return -ENOTTY;
++}
++
++/*
++ * Pat the watchdog whenever device is written to.
++ */
++static ssize_t at91_wdt_write(struct file *file, const char *data, size_t len, loff_t *ppos)
++{
++ at91_wdt_reload(); /* pat the watchdog */
++ return len;
++}
++
++/* ......................................................................... */
++
++static const struct file_operations at91wdt_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .ioctl = at91_wdt_ioctl,
++ .open = at91_wdt_open,
++ .release = at91_wdt_close,
++ .write = at91_wdt_write,
++};
++
++static struct miscdevice at91wdt_miscdev = {
++ .minor = WATCHDOG_MINOR,
++ .name = "watchdog",
++ .fops = &at91wdt_fops,
++};
++
++static int __init at91wdt_probe(struct platform_device *pdev)
++{
++ int res;
++
++ if (at91wdt_miscdev.parent)
++ return -EBUSY;
++ at91wdt_miscdev.parent = &pdev->dev;
++
++ res = misc_register(&at91wdt_miscdev);
++ if (res)
++ return res;
++
++ /* Set watchdog */
++ if (at91_wdt_settimeout(wdt_timeout) == -EINVAL) {
++ pr_info("at91sam9_wdt: invalid timeout (must be between 1 and %d)\n", WDT_MAX_TIME);
++ return 0;
++ }
++
++ return 0;
++}
++
++static int __exit at91wdt_remove(struct platform_device *pdev)
++{
++ int res;
++
++ res = misc_deregister(&at91wdt_miscdev);
++ if (!res)
++ at91wdt_miscdev.parent = NULL;
++
++ return res;
++}
++
++#ifdef CONFIG_PM
++
++static int at91wdt_suspend(struct platform_device *pdev, pm_message_t message)
++{
++ return 0;
++}
++
++static int at91wdt_resume(struct platform_device *pdev)
++{
++ return 0;
++}
++
++#else
++#define at91wdt_suspend NULL
++#define at91wdt_resume NULL
++#endif
++
++static struct platform_driver at91wdt_driver = {
++ .remove = __exit_p(at91wdt_remove),
++ .suspend = at91wdt_suspend,
++ .resume = at91wdt_resume,
++ .driver = {
++ .name = "at91_wdt",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init at91sam_wdt_init(void)
++{
++ return platform_driver_probe(&at91wdt_driver, at91wdt_probe);
++}
++
++static void __exit at91sam_wdt_exit(void)
++{
++ platform_driver_unregister(&at91wdt_driver);
++}
++
++module_init(at91sam_wdt_init);
++module_exit(at91sam_wdt_exit);
++
++MODULE_AUTHOR("Renaud CERRATO");
++MODULE_DESCRIPTION("Watchdog driver for Atmel AT91SAM9x processors");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
+index c466c6c..bebd065 100644
+--- a/drivers/i2c/busses/Kconfig
++++ b/drivers/i2c/busses/Kconfig
+@@ -88,6 +88,14 @@ config I2C_AT91
+ to support combined I2C messages. Use the i2c-gpio driver
+ unless your system can cope with those limitations.
+
++config I2C_AT91_CLOCKRATE
++ prompt "Atmel AT91 I2C/TWI clock-rate"
++ depends on I2C_AT91
++ int
++ default 100000
++ help
++ Set the AT91 I2C/TWI clock-rate.
++
+ config I2C_AU1550
+ tristate "Au1550/Au1200 SMBus interface"
+ depends on SOC_AU1550 || SOC_AU1200
+@@ -629,6 +637,14 @@ config I2C_VOODOO3
+ This driver can also be built as a module. If so, the module
+ will be called i2c-voodoo3.
+
++config I2C_PCA
++ tristate "PCA9564"
++ depends on I2C
++ select I2C_ALGOPCA
++ help
++ This driver support the Philips PCA 9564 Parallel bus to I2C
++ bus controller.
++
+ config I2C_PCA_ISA
+ tristate "PCA9564 on an ISA bus"
+ depends on ISA
+diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
+index 81d43c2..7498339 100644
+--- a/drivers/i2c/busses/Makefile
++++ b/drivers/i2c/busses/Makefile
+@@ -30,6 +30,7 @@ obj-$(CONFIG_I2C_OMAP) += i2c-omap.o
+ obj-$(CONFIG_I2C_PARPORT) += i2c-parport.o
+ obj-$(CONFIG_I2C_PARPORT_LIGHT) += i2c-parport-light.o
+ obj-$(CONFIG_I2C_PASEMI) += i2c-pasemi.o
++obj-$(CONFIG_I2C_PCA) += i2c-pca.o
+ obj-$(CONFIG_I2C_PCA_ISA) += i2c-pca-isa.o
+ obj-$(CONFIG_I2C_PIIX4) += i2c-piix4.o
+ obj-$(CONFIG_I2C_PMCMSP) += i2c-pmcmsp.o
+diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c
+index 9c8b6d5..34e1f6e 100644
+--- a/drivers/i2c/busses/i2c-at91.c
++++ b/drivers/i2c/busses/i2c-at91.c
+@@ -31,8 +31,11 @@
+ #include <asm/arch/board.h>
+ #include <asm/arch/cpu.h>
+
+-#define TWI_CLOCK 100000 /* Hz. max 400 Kbits/sec */
+
++/* Clockrate is configurable - max 400 Kbits/sec */
++static unsigned int clockrate = CONFIG_I2C_AT91_CLOCKRATE;
++module_param(clockrate, uint, 0);
++MODULE_PARM_DESC(clockrate, "The TWI clockrate");
+
+ static struct clk *twi_clk;
+ static void __iomem *twi_base;
+@@ -53,7 +56,7 @@ static void __devinit at91_twi_hwinit(void)
+ at91_twi_write(AT91_TWI_CR, AT91_TWI_MSEN); /* Set Master mode */
+
+ /* Calcuate clock dividers */
+- cdiv = (clk_get_rate(twi_clk) / (2 * TWI_CLOCK)) - 3;
++ cdiv = (clk_get_rate(twi_clk) / (2 * clockrate)) - 3;
+ cdiv = cdiv + 1; /* round up */
+ ckdiv = 0;
+ while (cdiv > 255) {
+@@ -61,11 +64,12 @@ static void __devinit at91_twi_hwinit(void)
+ cdiv = cdiv >> 1;
+ }
+
+- if (cpu_is_at91rm9200()) { /* AT91RM9200 Errata #22 */
+- if (ckdiv > 5) {
+- printk(KERN_ERR "AT91 I2C: Invalid TWI_CLOCK value!\n");
+- ckdiv = 5;
+- }
++ if (cpu_is_at91rm9200() && (ckdiv > 5)) { /* AT91RM9200 Errata #22 */
++ printk(KERN_ERR "AT91 I2C: Invalid TWI clockrate!\n");
++ ckdiv = 5;
++ } else if (ckdiv > 7) {
++ printk(KERN_ERR "AT91 I2C: Invalid TWI clockrate!\n");
++ ckdiv = 7;
+ }
+
+ at91_twi_write(AT91_TWI_CWGR, (ckdiv << 16) | (cdiv << 8) | cdiv);
+diff --git a/drivers/i2c/busses/i2c-pca.c b/drivers/i2c/busses/i2c-pca.c
+new file mode 100644
+index 0000000..7379567
+--- /dev/null
++++ b/drivers/i2c/busses/i2c-pca.c
+@@ -0,0 +1,213 @@
++/*
++ * Platform driver for PCA9564 I2C bus controller.
++ *
++ * (C) 2006 Andrew Victor
++ *
++ * Based on i2c-pca-isa.c driver for PCA9564 on ISA boards
++ * Copyright (C) 2004 Arcom Control Systems
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/delay.h>
++#include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/wait.h>
++#include <linux/platform_device.h>
++
++#include <linux/i2c.h>
++#include <linux/i2c-algo-pca.h>
++
++#include <asm/io.h>
++
++#include "../algos/i2c-algo-pca.h"
++
++#define PCA_OWN_ADDRESS 0x55 /* our address for slave mode */
++#define PCA_CLOCK I2C_PCA_CON_59kHz
++
++//#define REG_SHIFT 2
++#define REG_SHIFT 0
++
++//#define DEBUG_IO
++
++#define PCA_IO_SIZE 4
++
++static void __iomem *base_addr;
++static int irq;
++static wait_queue_head_t pca_wait;
++
++static int pca_getown(struct i2c_algo_pca_data *adap)
++{
++ return PCA_OWN_ADDRESS;
++}
++
++static int pca_getclock(struct i2c_algo_pca_data *adap)
++{
++ return PCA_CLOCK;
++}
++
++static void pca_writebyte(struct i2c_algo_pca_data *adap, int reg, int val)
++{
++#ifdef DEBUG_IO
++ static char *names[] = { "T/O", "DAT", "ADR", "CON" };
++ printk("*** write %s at %#lx <= %#04x\n", names[reg], (unsigned long) base_addr+reg, val);
++#endif
++ udelay(1);
++ outb(val, base_addr + (reg << REG_SHIFT));
++}
++
++static int pca_readbyte(struct i2c_algo_pca_data *adap, int reg)
++{
++ int res;
++
++ udelay(1);
++ res = inb(base_addr + (reg << REG_SHIFT));
++#ifdef DEBUG_IO
++ {
++ static char *names[] = { "STA", "DAT", "ADR", "CON" };
++ printk("*** read %s => %#04x\n", names[reg], res);
++ }
++#endif
++ return res;
++}
++
++static int pca_waitforinterrupt(struct i2c_algo_pca_data *adap)
++{
++ int ret = 0;
++
++ if (irq > -1) {
++ ret = wait_event_interruptible(pca_wait,
++ pca_readbyte(adap, I2C_PCA_CON) & I2C_PCA_CON_SI);
++ } else {
++ while ((pca_readbyte(adap, I2C_PCA_CON) & I2C_PCA_CON_SI) == 0)
++ udelay(100);
++ }
++ return ret;
++}
++
++static irqreturn_t pca_handler(int this_irq, void *dev_id)
++{
++ wake_up_interruptible(&pca_wait);
++ return IRQ_HANDLED;
++}
++
++static struct i2c_algo_pca_data pca_i2c_data = {
++ .get_own = pca_getown,
++ .get_clock = pca_getclock,
++ .write_byte = pca_writebyte,
++ .read_byte = pca_readbyte,
++ .wait_for_interrupt = pca_waitforinterrupt,
++};
++
++static struct i2c_adapter pca_i2c_ops = {
++ .owner = THIS_MODULE,
++ .id = I2C_HW_A_PLAT,
++ .algo_data = &pca_i2c_data,
++ .name = "PCA9564",
++ .class = I2C_CLASS_HWMON,
++};
++
++static int __devinit pca_i2c_probe(struct platform_device *pdev)
++{
++ struct resource *res;
++
++ init_waitqueue_head(&pca_wait);
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!res)
++ return -ENODEV;
++
++ if (!request_mem_region(res->start, PCA_IO_SIZE, "PCA9564"))
++ return -ENXIO;
++
++ base_addr = ioremap(res->start, PCA_IO_SIZE);
++ if (base_addr == NULL)
++ goto out_region;
++
++ irq = platform_get_irq(pdev, 0);
++ if (irq > -1) {
++ if (request_irq(irq, pca_handler, 0, "pca9564", NULL) < 0) {
++ printk(KERN_ERR "i2c-pca: Request irq%d failed\n", irq);
++ goto out_remap;
++ }
++ }
++
++ /* set up the driverfs linkage to our parent device */
++ pca_i2c_ops.dev.parent = &pdev->dev;
++
++ if (i2c_pca_add_bus(&pca_i2c_ops) < 0) {
++ printk(KERN_ERR "i2c-pca: Failed to add i2c bus\n");
++ goto out_irq;
++ }
++
++ return 0;
++
++ out_irq:
++ if (irq > -1)
++ free_irq(irq, &pca_i2c_ops);
++
++ out_remap:
++ iounmap(base_addr);
++
++ out_region:
++ release_mem_region(res->start, PCA_IO_SIZE);
++ return -ENODEV;
++}
++
++static int __devexit pca_i2c_remove(struct platform_device *pdev)
++{
++ struct resource *res;
++
++ i2c_del_adapter(&pca_i2c_ops);
++
++ if (irq > 0)
++ free_irq(irq, NULL);
++
++ iounmap(base_addr);
++
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ release_mem_region(res->start, PCA_IO_SIZE);
++
++ return 0;
++}
++
++static struct platform_driver pca_i2c_driver = {
++ .probe = pca_i2c_probe,
++ .remove = __devexit_p(pca_i2c_remove),
++ .driver = {
++ .name = "pca9564",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init pca_i2c_init(void)
++{
++ return platform_driver_register(&pca_i2c_driver);
++}
++
++static void __exit pca_i2c_exit(void)
++{
++ platform_driver_unregister(&pca_i2c_driver);
++}
++
++module_init(pca_i2c_init);
++module_exit(pca_i2c_exit);
++
++MODULE_AUTHOR("Andrew Victor");
++MODULE_DESCRIPTION("PCA9564 platform driver");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/mtd/devices/Kconfig b/drivers/mtd/devices/Kconfig
+index 811d56f..098a540 100644
+--- a/drivers/mtd/devices/Kconfig
++++ b/drivers/mtd/devices/Kconfig
+@@ -270,5 +270,17 @@ config MTD_DOCPROBE_55AA
+ LinuxBIOS or if you need to recover a DiskOnChip Millennium on which
+ you have managed to wipe the first block.
+
+-endmenu
++config MTD_AT91_DATAFLASH
++ tristate "AT91RM9200 DataFlash AT45DBxxx (legacy driver)"
++ depends on MTD && ARCH_AT91RM9200 && AT91_SPI
++ help
++ This enables access to the DataFlash (AT45DBxxx) on the AT91RM9200.
++ If you have such a board, say 'Y'.
+
++config DATAFLASH_ALWAYS_ADD_DEVICE
++ bool "Register whole DataFlash device"
++ depends on MTD_AT91_DATAFLASH
++ help
++ Always add the whole DataFlash device when using MTD partitions.
++
++endmenu
+diff --git a/drivers/mtd/devices/Makefile b/drivers/mtd/devices/Makefile
+index 0f788d5..9e56ad7 100644
+--- a/drivers/mtd/devices/Makefile
++++ b/drivers/mtd/devices/Makefile
+@@ -17,3 +17,4 @@ obj-$(CONFIG_MTD_LART) += lart.o
+ obj-$(CONFIG_MTD_BLOCK2MTD) += block2mtd.o
+ obj-$(CONFIG_MTD_DATAFLASH) += mtd_dataflash.o
+ obj-$(CONFIG_MTD_M25P80) += m25p80.o
++obj-$(CONFIG_MTD_AT91_DATAFLASH)+= at91_dataflash.o
+diff --git a/drivers/mtd/devices/at91_dataflash.c b/drivers/mtd/devices/at91_dataflash.c
+new file mode 100644
+index 0000000..a724938
+--- /dev/null
++++ b/drivers/mtd/devices/at91_dataflash.c
+@@ -0,0 +1,673 @@
++/*
++ * Atmel DataFlash driver for Atmel AT91RM9200 (Thunder)
++ *
++ * Copyright (C) SAN People (Pty) Ltd
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++*/
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/slab.h>
++#include <linux/pci.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/mach-types.h>
++
++#include <asm/arch/spi.h>
++
++
++#undef DEBUG_DATAFLASH
++
++#define DATAFLASH_MAX_DEVICES 4 /* max number of dataflash devices */
++
++#define OP_READ_CONTINUOUS 0xE8
++#define OP_READ_PAGE 0xD2
++#define OP_READ_BUFFER1 0xD4
++#define OP_READ_BUFFER2 0xD6
++#define OP_READ_STATUS 0xD7
++
++#define OP_ERASE_PAGE 0x81
++#define OP_ERASE_BLOCK 0x50
++
++#define OP_TRANSFER_BUF1 0x53
++#define OP_TRANSFER_BUF2 0x55
++#define OP_COMPARE_BUF1 0x60
++#define OP_COMPARE_BUF2 0x61
++
++#define OP_PROGRAM_VIA_BUF1 0x82
++#define OP_PROGRAM_VIA_BUF2 0x85
++
++struct dataflash_local
++{
++ int spi; /* SPI chip-select number */
++
++ unsigned int page_size; /* number of bytes per page */
++ unsigned short page_offset; /* page offset in flash address */
++};
++
++
++/* Detected DataFlash devices */
++static struct mtd_info* mtd_devices[DATAFLASH_MAX_DEVICES];
++static int nr_devices = 0;
++
++/* ......................................................................... */
++
++#ifdef CONFIG_MTD_PARTITIONS
++
++static struct mtd_partition static_partitions_2M[] =
++{
++ {
++ .name = "bootloader",
++ .offset = 0,
++ .size = 1 * 32 * 8 * 528, /* 1st sector = 32 blocks * 8 pages * 528 bytes */
++ .mask_flags = MTD_WRITEABLE, /* read-only */
++ },
++ {
++ .name = "kernel",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 6 * 32 * 8 * 528, /* 6 sectors */
++ },
++ {
++ .name = "filesystem",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL, /* rest = 9 sectors */
++ }
++};
++
++static struct mtd_partition static_partitions_4M[] =
++{
++ {
++ .name = "bootloader",
++ .offset = 0,
++ .size = 1 * 64 * 8 * 528, /* 1st sector = 64 blocks * 8 pages * 528 bytes */
++ .mask_flags = MTD_WRITEABLE, /* read-only */
++ },
++ {
++ .name = "kernel",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 4 * 64 * 8 * 528, /* 4 sectors */
++ },
++ {
++ .name = "filesystem",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL, /* rest = 11 sectors */
++ }
++};
++
++#if defined(CONFIG_MACH_KAFA)
++static struct mtd_partition static_partitions_8M[] =
++{
++ {
++ name: "romboot",
++ offset: 0,
++ size: 16 * 1056, /* 160 Kb */
++ mask_flags: MTD_WRITEABLE, /* read-only */
++ },
++ {
++ name: "uboot",
++ offset: MTDPART_OFS_APPEND, /* Sperry, NXTBLK is broken */
++ size: 128 * 1056, /* 1 MB */
++ },
++ {
++ name: "kernel",
++ offset: MTDPART_OFS_APPEND, /* Sperry, NXTBLK is broken */
++ size: 1024 * 1056, /* 1 MB */
++ },
++ {
++ name: "filesystem",
++ offset: MTDPART_OFS_APPEND, /* Sperry, NXTBLK is broken */
++ size: MTDPART_SIZ_FULL,
++ }
++};
++
++#elif defined(CONFIG_MACH_MULTMDP)
++
++static struct mtd_partition static_partitions_8M[] =
++{
++ {
++ .name = "bootloader",
++ .offset = 0,
++ .size = 12 * 1056, /* 1st sector = 32 blocks * 8 pages * 1056 bytes */
++ .mask_flags = MTD_WRITEABLE, /* read-only */
++ },
++ {
++ .name = "configuration",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 20 * 1056,
++ },
++ {
++ .name = "kernel",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 1520 * 1056,
++ },
++ {
++ .name = "filesystem",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL,
++ }
++};
++
++#else
++
++static struct mtd_partition static_partitions_8M[] =
++{
++ {
++ .name = "bootloader",
++ .offset = 0,
++ .size = 1 * 32 * 8 * 1056, /* 1st sector = 32 blocks * 8 pages * 1056 bytes */
++ .mask_flags = MTD_WRITEABLE, /* read-only */
++ },
++ {
++ .name = "kernel",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = 5 * 32 * 8 * 1056, /* 5 sectors */
++ },
++ {
++ .name = "filesystem",
++ .offset = MTDPART_OFS_NXTBLK,
++ .size = MTDPART_SIZ_FULL, /* rest = 26 sectors */
++ }
++};
++#endif
++
++static const char *part_probes[] = { "cmdlinepart", NULL, };
++
++#endif
++
++/* ......................................................................... */
++
++/* Allocate a single SPI transfer descriptor. We're assuming that if multiple
++ SPI transfers occur at the same time, spi_access_bus() will serialize them.
++ If this is not valid, then either (i) each dataflash 'priv' structure
++ needs it's own transfer descriptor, (ii) we lock this one, or (iii) use
++ another mechanism. */
++static struct spi_transfer_list* spi_transfer_desc;
++
++/*
++ * Perform a SPI transfer to access the DataFlash device.
++ */
++static int do_spi_transfer(int nr, char* tx, int tx_len, char* rx, int rx_len,
++ char* txnext, int txnext_len, char* rxnext, int rxnext_len)
++{
++ struct spi_transfer_list* list = spi_transfer_desc;
++
++ list->tx[0] = tx; list->txlen[0] = tx_len;
++ list->rx[0] = rx; list->rxlen[0] = rx_len;
++
++ list->tx[1] = txnext; list->txlen[1] = txnext_len;
++ list->rx[1] = rxnext; list->rxlen[1] = rxnext_len;
++
++ list->nr_transfers = nr;
++
++ return spi_transfer(list);
++}
++
++/* ......................................................................... */
++
++/*
++ * Poll the DataFlash device until it is READY.
++ */
++static void at91_dataflash_waitready(void)
++{
++ char* command = kmalloc(2, GFP_KERNEL);
++
++ if (!command)
++ return;
++
++ do {
++ command[0] = OP_READ_STATUS;
++ command[1] = 0;
++
++ do_spi_transfer(1, command, 2, command, 2, NULL, 0, NULL, 0);
++ } while ((command[1] & 0x80) == 0);
++
++ kfree(command);
++}
++
++/*
++ * Return the status of the DataFlash device.
++ */
++static unsigned short at91_dataflash_status(void)
++{
++ unsigned short status;
++ char* command = kmalloc(2, GFP_KERNEL);
++
++ if (!command)
++ return 0;
++
++ command[0] = OP_READ_STATUS;
++ command[1] = 0;
++
++ do_spi_transfer(1, command, 2, command, 2, NULL, 0, NULL, 0);
++ status = command[1];
++
++ kfree(command);
++ return status;
++}
++
++/* ......................................................................... */
++
++/*
++ * Erase blocks of flash.
++ */
++static int at91_dataflash_erase(struct mtd_info *mtd, struct erase_info *instr)
++{
++ struct dataflash_local *priv = (struct dataflash_local *) mtd->priv;
++ unsigned int pageaddr;
++ char* command;
++
++#ifdef DEBUG_DATAFLASH
++ printk("dataflash_erase: addr=%i len=%i\n", instr->addr, instr->len);
++#endif
++
++ /* Sanity checks */
++ if (instr->addr + instr->len > mtd->size)
++ return -EINVAL;
++ if ((instr->len % mtd->erasesize != 0) || (instr->len % priv->page_size != 0))
++ return -EINVAL;
++ if ((instr->addr % priv->page_size) != 0)
++ return -EINVAL;
++
++ command = kmalloc(4, GFP_KERNEL);
++ if (!command)
++ return -ENOMEM;
++
++ while (instr->len > 0) {
++ /* Calculate flash page address */
++ pageaddr = (instr->addr / priv->page_size) << priv->page_offset;
++
++ command[0] = OP_ERASE_PAGE;
++ command[1] = (pageaddr & 0x00FF0000) >> 16;
++ command[2] = (pageaddr & 0x0000FF00) >> 8;
++ command[3] = 0;
++#ifdef DEBUG_DATAFLASH
++ printk("ERASE: (%x) %x %x %x [%i]\n", command[0], command[1], command[2], command[3], pageaddr);
++#endif
++
++ /* Send command to SPI device */
++ spi_access_bus(priv->spi);
++ do_spi_transfer(1, command, 4, command, 4, NULL, 0, NULL, 0);
++
++ at91_dataflash_waitready(); /* poll status until ready */
++ spi_release_bus(priv->spi);
++
++ instr->addr += priv->page_size; /* next page */
++ instr->len -= priv->page_size;
++ }
++
++ kfree(command);
++
++ /* Inform MTD subsystem that erase is complete */
++ instr->state = MTD_ERASE_DONE;
++ if (instr->callback)
++ instr->callback(instr);
++
++ return 0;
++}
++
++/*
++ * Read from the DataFlash device.
++ * from : Start offset in flash device
++ * len : Amount to read
++ * retlen : About of data actually read
++ * buf : Buffer containing the data
++ */
++static int at91_dataflash_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf)
++{
++ struct dataflash_local *priv = (struct dataflash_local *) mtd->priv;
++ unsigned int addr;
++ char* command;
++
++#ifdef DEBUG_DATAFLASH
++ printk("dataflash_read: %lli .. %lli\n", from, from+len);
++#endif
++
++ *retlen = 0;
++
++ /* Sanity checks */
++ if (!len)
++ return 0;
++ if (from + len > mtd->size)
++ return -EINVAL;
++
++ /* Calculate flash page/byte address */
++ addr = (((unsigned)from / priv->page_size) << priv->page_offset) + ((unsigned)from % priv->page_size);
++
++ command = kmalloc(8, GFP_KERNEL);
++ if (!command)
++ return -ENOMEM;
++
++ command[0] = OP_READ_CONTINUOUS;
++ command[1] = (addr & 0x00FF0000) >> 16;
++ command[2] = (addr & 0x0000FF00) >> 8;
++ command[3] = (addr & 0x000000FF);
++#ifdef DEBUG_DATAFLASH
++ printk("READ: (%x) %x %x %x\n", command[0], command[1], command[2], command[3]);
++#endif
++
++ /* Send command to SPI device */
++ spi_access_bus(priv->spi);
++ do_spi_transfer(2, command, 8, command, 8, buf, len, buf, len);
++ spi_release_bus(priv->spi);
++
++ *retlen = len;
++ kfree(command);
++ return 0;
++}
++
++/*
++ * Write to the DataFlash device.
++ * to : Start offset in flash device
++ * len : Amount to write
++ * retlen : Amount of data actually written
++ * buf : Buffer containing the data
++ */
++static int at91_dataflash_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf)
++{
++ struct dataflash_local *priv = (struct dataflash_local *) mtd->priv;
++ unsigned int pageaddr, addr, offset, writelen;
++ size_t remaining;
++ u_char *writebuf;
++ unsigned short status;
++ int res = 0;
++ char* command;
++ char* tmpbuf = NULL;
++
++#ifdef DEBUG_DATAFLASH
++ printk("dataflash_write: %lli .. %lli\n", to, to+len);
++#endif
++
++ *retlen = 0;
++
++ /* Sanity checks */
++ if (!len)
++ return 0;
++ if (to + len > mtd->size)
++ return -EINVAL;
++
++ command = kmalloc(4, GFP_KERNEL);
++ if (!command)
++ return -ENOMEM;
++
++ pageaddr = ((unsigned)to / priv->page_size);
++ offset = ((unsigned)to % priv->page_size);
++ if (offset + len > priv->page_size)
++ writelen = priv->page_size - offset;
++ else
++ writelen = len;
++ writebuf = (u_char *)buf;
++ remaining = len;
++
++ /* Allocate temporary buffer */
++ tmpbuf = kmalloc(priv->page_size, GFP_KERNEL);
++ if (!tmpbuf) {
++ kfree(command);
++ return -ENOMEM;
++ }
++
++ /* Gain access to the SPI bus */
++ spi_access_bus(priv->spi);
++
++ while (remaining > 0) {
++#ifdef DEBUG_DATAFLASH
++ printk("write @ %i:%i len=%i\n", pageaddr, offset, writelen);
++#endif
++
++ /* (1) Transfer to Buffer1 */
++ if (writelen != priv->page_size) {
++ addr = pageaddr << priv->page_offset;
++ command[0] = OP_TRANSFER_BUF1;
++ command[1] = (addr & 0x00FF0000) >> 16;
++ command[2] = (addr & 0x0000FF00) >> 8;
++ command[3] = 0;
++#ifdef DEBUG_DATAFLASH
++ printk("TRANSFER: (%x) %x %x %x\n", command[0], command[1], command[2], command[3]);
++#endif
++ do_spi_transfer(1, command, 4, command, 4, NULL, 0, NULL, 0);
++ at91_dataflash_waitready();
++ }
++
++ /* (2) Program via Buffer1 */
++ addr = (pageaddr << priv->page_offset) + offset;
++ command[0] = OP_PROGRAM_VIA_BUF1;
++ command[1] = (addr & 0x00FF0000) >> 16;
++ command[2] = (addr & 0x0000FF00) >> 8;
++ command[3] = (addr & 0x000000FF);
++#ifdef DEBUG_DATAFLASH
++ printk("PROGRAM: (%x) %x %x %x\n", command[0], command[1], command[2], command[3]);
++#endif
++ do_spi_transfer(2, command, 4, command, 4, writebuf, writelen, tmpbuf, writelen);
++ at91_dataflash_waitready();
++
++ /* (3) Compare to Buffer1 */
++ addr = pageaddr << priv->page_offset;
++ command[0] = OP_COMPARE_BUF1;
++ command[1] = (addr & 0x00FF0000) >> 16;
++ command[2] = (addr & 0x0000FF00) >> 8;
++ command[3] = 0;
++#ifdef DEBUG_DATAFLASH
++ printk("COMPARE: (%x) %x %x %x\n", command[0], command[1], command[2], command[3]);
++#endif
++ do_spi_transfer(1, command, 4, command, 4, NULL, 0, NULL, 0);
++ at91_dataflash_waitready();
++
++ /* Get result of the compare operation */
++ status = at91_dataflash_status();
++ if (status & 0x40) {
++ printk("at91_dataflash: Write error on page %i\n", pageaddr);
++ remaining = 0;
++ writelen = 0;
++ res = -EIO;
++ }
++
++ remaining = remaining - writelen;
++ pageaddr++;
++ offset = 0;
++ writebuf += writelen;
++ *retlen += writelen;
++
++ if (remaining > priv->page_size)
++ writelen = priv->page_size;
++ else
++ writelen = remaining;
++ }
++
++ /* Release SPI bus */
++ spi_release_bus(priv->spi);
++
++ kfree(tmpbuf);
++ kfree(command);
++ return res;
++}
++
++/* ......................................................................... */
++
++/*
++ * Initialize and register DataFlash device with MTD subsystem.
++ */
++static int __init add_dataflash(int channel, char *name, int IDsize,
++ int nr_pages, int pagesize, int pageoffset)
++{
++ struct mtd_info *device;
++ struct dataflash_local *priv;
++#ifdef CONFIG_MTD_PARTITIONS
++ struct mtd_partition *mtd_parts = 0;
++ int mtd_parts_nr = 0;
++#endif
++
++ if (nr_devices >= DATAFLASH_MAX_DEVICES) {
++ printk(KERN_ERR "at91_dataflash: Too many devices detected\n");
++ return 0;
++ }
++
++ device = kmalloc(sizeof(struct mtd_info) + strlen(name) + 8, GFP_KERNEL);
++ if (!device)
++ return -ENOMEM;
++ memset(device, 0, sizeof(struct mtd_info));
++
++ device->name = (char *)&device[1];
++ sprintf(device->name, "%s.spi%d", name, channel);
++ device->size = nr_pages * pagesize;
++ device->erasesize = pagesize;
++ device->writesize = pagesize;
++ device->owner = THIS_MODULE;
++ device->type = MTD_DATAFLASH;
++ device->flags = MTD_WRITEABLE;
++ device->erase = at91_dataflash_erase;
++ device->read = at91_dataflash_read;
++ device->write = at91_dataflash_write;
++
++ priv = (struct dataflash_local *) kmalloc(sizeof(struct dataflash_local), GFP_KERNEL);
++ if (!priv) {
++ kfree(device);
++ return -ENOMEM;
++ }
++ memset(priv, 0, sizeof(struct dataflash_local));
++
++ priv->spi = channel;
++ priv->page_size = pagesize;
++ priv->page_offset = pageoffset;
++ device->priv = priv;
++
++ mtd_devices[nr_devices] = device;
++ nr_devices++;
++ printk("at91_dataflash: %s detected [spi%i] (%i bytes)\n", name, channel, device->size);
++
++#ifdef CONFIG_MTD_PARTITIONS
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ mtd_parts_nr = parse_mtd_partitions(device, part_probes, &mtd_parts, 0);
++#endif
++ if (mtd_parts_nr <= 0) {
++ switch (IDsize) {
++ case SZ_2M:
++ mtd_parts = static_partitions_2M;
++ mtd_parts_nr = ARRAY_SIZE(static_partitions_2M);
++ break;
++ case SZ_4M:
++ mtd_parts = static_partitions_4M;
++ mtd_parts_nr = ARRAY_SIZE(static_partitions_4M);
++ break;
++ case SZ_8M:
++ mtd_parts = static_partitions_8M;
++ mtd_parts_nr = ARRAY_SIZE(static_partitions_8M);
++ break;
++ }
++ }
++
++ if (mtd_parts_nr > 0) {
++#ifdef CONFIG_DATAFLASH_ALWAYS_ADD_DEVICE
++ add_mtd_device(device);
++#endif
++ return add_mtd_partitions(device, mtd_parts, mtd_parts_nr);
++ }
++#endif
++ return add_mtd_device(device); /* add whole device */
++}
++
++/*
++ * Detect and initialize DataFlash device connected to specified SPI channel.
++ *
++ * Device Density ID code Nr Pages Page Size Page offset
++ * AT45DB011B 1Mbit (128K) xx0011xx (0x0c) 512 264 9
++ * AT45DB021B 2Mbit (256K) xx0101xx (0x14) 1025 264 9
++ * AT45DB041B 4Mbit (512K) xx0111xx (0x1c) 2048 264 9
++ * AT45DB081B 8Mbit (1M) xx1001xx (0x24) 4096 264 9
++ * AT45DB0161B 16Mbit (2M) xx1011xx (0x2c) 4096 528 10
++ * AT45DB0321B 32Mbit (4M) xx1101xx (0x34) 8192 528 10
++ * AT45DB0642 64Mbit (8M) xx1111xx (0x3c) 8192 1056 11
++ * AT45DB1282 128Mbit (16M) xx0100xx (0x10) 16384 1056 11
++ */
++static int __init at91_dataflash_detect(int channel)
++{
++ int res = 0;
++ unsigned short status;
++
++ spi_access_bus(channel);
++ status = at91_dataflash_status();
++ spi_release_bus(channel);
++ if (status != 0xff) { /* no dataflash device there */
++ switch (status & 0x3c) {
++ case 0x0c: /* 0 0 1 1 */
++ res = add_dataflash(channel, "AT45DB011B", SZ_128K, 512, 264, 9);
++ break;
++ case 0x14: /* 0 1 0 1 */
++ res = add_dataflash(channel, "AT45DB021B", SZ_256K, 1025, 264, 9);
++ break;
++ case 0x1c: /* 0 1 1 1 */
++ res = add_dataflash(channel, "AT45DB041B", SZ_512K, 2048, 264, 9);
++ break;
++ case 0x24: /* 1 0 0 1 */
++ res = add_dataflash(channel, "AT45DB081B", SZ_1M, 4096, 264, 9);
++ break;
++ case 0x2c: /* 1 0 1 1 */
++ res = add_dataflash(channel, "AT45DB161B", SZ_2M, 4096, 528, 10);
++ break;
++ case 0x34: /* 1 1 0 1 */
++ res = add_dataflash(channel, "AT45DB321B", SZ_4M, 8192, 528, 10);
++ break;
++ case 0x3c: /* 1 1 1 1 */
++ res = add_dataflash(channel, "AT45DB642", SZ_8M, 8192, 1056, 11);
++ break;
++// Currently unsupported since Atmel removed the "Main Memory Program via Buffer" commands.
++// case 0x10: /* 0 1 0 0 */
++// res = add_dataflash(channel, "AT45DB1282", SZ_16M, 16384, 1056, 11);
++// break;
++ default:
++ printk(KERN_ERR "at91_dataflash: Unknown device (%x)\n", status & 0x3c);
++ }
++ }
++
++ return res;
++}
++
++static int __init at91_dataflash_init(void)
++{
++ spi_transfer_desc = kmalloc(sizeof(struct spi_transfer_list), GFP_KERNEL);
++ if (!spi_transfer_desc)
++ return -ENOMEM;
++
++ /* DataFlash (SPI chip select 0) */
++ at91_dataflash_detect(0);
++
++ if (machine_is_sweda_tms())
++ at91_dataflash_detect(1); /* DataFlash device (SPI chip select 1) */
++
++#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
++ /* DataFlash card (SPI chip select 3) */
++ at91_dataflash_detect(3);
++#endif
++
++ return 0;
++}
++
++static void __exit at91_dataflash_exit(void)
++{
++ int i;
++
++ for (i = 0; i < DATAFLASH_MAX_DEVICES; i++) {
++ if (mtd_devices[i]) {
++#ifdef CONFIG_MTD_PARTITIONS
++ del_mtd_partitions(mtd_devices[i]);
++#else
++ del_mtd_device(mtd_devices[i]);
++#endif
++ kfree(mtd_devices[i]->priv);
++ kfree(mtd_devices[i]);
++ }
++ }
++ nr_devices = 0;
++ kfree(spi_transfer_desc);
++}
++
++
++module_init(at91_dataflash_init);
++module_exit(at91_dataflash_exit);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Andrew Victor");
++MODULE_DESCRIPTION("DataFlash driver for Atmel AT91RM9200");
+diff --git a/drivers/mtd/devices/mtd_dataflash.c b/drivers/mtd/devices/mtd_dataflash.c
+index a5ed6d2..b35e481 100644
+--- a/drivers/mtd/devices/mtd_dataflash.c
++++ b/drivers/mtd/devices/mtd_dataflash.c
+@@ -420,7 +420,7 @@ static int dataflash_write(struct mtd_info *mtd, loff_t to, size_t len,
+ status = dataflash_waitready(priv->spi);
+
+ /* Check result of the compare operation */
+- if ((status & (1 << 6)) == 1) {
++ if (status & (1 << 6)) {
+ printk(KERN_ERR "%s: compare page %u, err %d\n",
+ spi->dev.bus_id, pageaddr, status);
+ remaining = 0;
+diff --git a/drivers/net/arm/at91_ether.c b/drivers/net/arm/at91_ether.c
+index 25b114a..68771b3 100644
+--- a/drivers/net/arm/at91_ether.c
++++ b/drivers/net/arm/at91_ether.c
+@@ -894,6 +894,7 @@ static void at91ether_rx(struct net_device *dev)
+ skb_reserve(skb, 2);
+ memcpy(skb_put(skb, pktlen), p_recv, pktlen);
+
++ skb->dev = dev;
+ skb->protocol = eth_type_trans(skb, dev);
+ dev->last_rx = jiffies;
+ lp->stats.rx_bytes += pktlen;
+@@ -980,14 +981,24 @@ static int __init at91ether_setup(unsigned long phy_type, unsigned short phy_add
+ unsigned int val;
+ int res;
+ DECLARE_MAC_BUF(mac);
++ struct resource *res;
++ int ret;
+
+ dev = alloc_etherdev(sizeof(struct at91_private));
+ if (!dev)
+ return -ENOMEM;
+
++ /* Get I/O base address and IRQ */
++ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++ if (!res) {
++ free_netdev(dev);
++ return -ENODEV;
++ }
+ dev->base_addr = AT91_VA_BASE_EMAC;
+ dev->irq = AT91RM9200_ID_EMAC;
+
++ SET_MODULE_OWNER(dev);
++
+ /* Install the interrupt handler */
+ if (request_irq(dev->irq, at91ether_interrupt, 0, dev->name, dev)) {
+ free_netdev(dev);
+@@ -1043,7 +1054,9 @@ static int __init at91ether_setup(unsigned long phy_type, unsigned short phy_add
+ } else if (machine_is_csb337()) {
+ /* mix link activity status into LED2 link state */
+ write_phy(phy_address, MII_LEDCTRL_REG, 0x0d22);
+- }
++ } else if (machine_is_ecbat91())
++ write_phy(phy_address, MII_LEDCTRL_REG, 0x156A);
++
+ disable_mdi();
+ spin_unlock_irq(&lp->lock);
+
+@@ -1058,12 +1071,12 @@ static int __init at91ether_setup(unsigned long phy_type, unsigned short phy_add
+ lp->phy_address = phy_address; /* MDI address of PHY */
+
+ /* Register the network interface */
+- res = register_netdev(dev);
+- if (res) {
++ ret = register_netdev(dev);
++ if (ret) {
+ free_irq(dev->irq, dev);
+ free_netdev(dev);
+ dma_free_coherent(NULL, sizeof(struct recv_desc_bufs), lp->dlist, (dma_addr_t)lp->dlist_phys);
+- return res;
++ return ret;
+ }
+
+ /* Determine current link speed */
+diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
+index 1e6715e..641ea18 100644
+--- a/drivers/rtc/Kconfig
++++ b/drivers/rtc/Kconfig
+@@ -445,6 +445,12 @@ config RTC_DRV_AT91RM9200
+ help
+ Driver for the Atmel AT91RM9200's internal RTC (Realtime Clock).
+
++config RTC_DRV_AT91SAM9
++ tristate "AT91SAM926X"
++ depends on ARCH_AT91 && !ARCH_AT91RM9200
++ help
++ Driver for the Atmel AT91SAM9x's internal RTC (Realtime Clock).
++
+ config RTC_DRV_BFIN
+ tristate "Blackfin On-Chip RTC"
+ depends on BLACKFIN
+diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
+index 465db4d..e075c5a 100644
+--- a/drivers/rtc/Makefile
++++ b/drivers/rtc/Makefile
+@@ -19,6 +19,7 @@ rtc-core-$(CONFIG_RTC_INTF_SYSFS) += rtc-sysfs.o
+
+ obj-$(CONFIG_RTC_DRV_AT32AP700X)+= rtc-at32ap700x.o
+ obj-$(CONFIG_RTC_DRV_AT91RM9200)+= rtc-at91rm9200.o
++obj-$(CONFIG_RTC_DRV_AT91SAM9) += rtc-at91sam9.o
+ obj-$(CONFIG_RTC_DRV_BFIN) += rtc-bfin.o
+ obj-$(CONFIG_RTC_DRV_CMOS) += rtc-cmos.o
+ obj-$(CONFIG_RTC_DRV_DS1216) += rtc-ds1216.o
+diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c
+new file mode 100644
+index 0000000..020e579
+--- /dev/null
++++ b/drivers/rtc/rtc-at91sam9.c
+@@ -0,0 +1,437 @@
++/*
++ * Real Time Clock driver for Atmel AT91SAM926x family of SoC
++ *
++ * Uses the RTT peripheral of the AT91SAM926x and a 32 bit word
++ * of the General Purpose Backup Registers (GPBR).
++ *
++ * (C) 2007 Michel Benoit
++ *
++ * Based on rtc-at91rm9200.c by Rick Bronson
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/time.h>
++#include <linux/rtc.h>
++#include <linux/interrupt.h>
++#include <linux/ioctl.h>
++
++#include <asm/mach/time.h>
++#include <asm/arch/board.h>
++#include <asm/arch/at91_rtt.h>
++
++#define AT91_RTC_FREQ 1
++#define ALARM_DISABLED 0xFFFFFFFF
++
++#define RTC_GPBR_REG 0
++
++/*
++ * Read current time and date in RTC
++ */
++static int at91_rtc_readtime(struct device *dev, struct rtc_time *tm)
++{
++ unsigned long secs, secs2;
++ unsigned long base;
++
++ /* retrieve time base from battery backup register */
++ base = at91_sys_read(AT91_GPBR + RTC_GPBR_REG);
++
++ /* read the second counter twice as it can be about to change */
++ secs = at91_sys_read(AT91_RTT_VR);
++ secs2 = at91_sys_read(AT91_RTT_VR);
++ if (secs != secs2)
++ secs = at91_sys_read(AT91_RTT_VR);
++
++ rtc_time_to_tm(base + secs, tm);
++
++ pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
++ 1900 + tm->tm_year, tm->tm_mon, tm->tm_mday,
++ tm->tm_hour, tm->tm_min, tm->tm_sec);
++
++ return 0;
++}
++
++/*
++ * Set current time and date in RTC
++ */
++static int at91_rtc_settime(struct device *dev, struct rtc_time *tm)
++{
++ int err;
++ unsigned long base, alarm, mr;
++ unsigned long secs;
++
++ pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
++ 1900 + tm->tm_year, tm->tm_mon, tm->tm_mday,
++ tm->tm_hour, tm->tm_min, tm->tm_sec);
++
++ err = rtc_tm_to_time(tm, &secs);
++ if (err != 0)
++ return err;
++
++ mr = at91_sys_read(AT91_RTT_MR);
++
++ /* disable interrupts */
++ at91_sys_write(AT91_RTT_MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN));
++
++ /* read current time base */
++ base = at91_sys_read(AT91_GPBR + RTC_GPBR_REG);
++
++ /* store the new base time in a battery backup register */
++ secs += 1;
++ at91_sys_write(AT91_GPBR + RTC_GPBR_REG, secs);
++
++ /* adjust the alarm time for the new base */
++ alarm = at91_sys_read(AT91_RTT_AR);
++ if (alarm != ALARM_DISABLED) {
++ if (base > secs) {
++ /* time jumped backwards, increase time until alarm */
++ alarm += (base - secs);
++ } else if ((alarm + base) > secs) {
++ /* time jumped forwards, decrease time until alarm */
++ alarm -= (secs - base);
++ } else {
++ /* time jumped past the alarm, disable alarm */
++ alarm = ALARM_DISABLED;
++ }
++ at91_sys_write(AT91_RTT_AR, alarm);
++ }
++
++ /* reset the timer, and re-enable interrupts */
++ at91_sys_write(AT91_RTT_MR, mr | AT91_RTT_RTTRST);
++
++ return 0;
++}
++
++/*
++ * Read alarm time and date in RTC
++ */
++static int at91_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm)
++{
++ struct rtc_time *tm = &alrm->time;
++ unsigned long base;
++ unsigned long alarm;
++
++ alarm = at91_sys_read(AT91_RTT_AR);
++
++ if (alarm == ALARM_DISABLED)
++ memset(tm, 0, sizeof(tm));
++ else {
++ base = at91_sys_read(AT91_GPBR + RTC_GPBR_REG);
++
++ rtc_time_to_tm(base + alarm, tm);
++
++ pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
++ 1900 + tm->tm_year, tm->tm_mon, tm->tm_mday,
++ tm->tm_hour, tm->tm_min, tm->tm_sec);
++ }
++
++ return 0;
++}
++
++/*
++ * Set alarm time and date in RTC
++ */
++static int at91_rtc_setalarm(struct device *dev, struct rtc_wkalrm *alrm)
++{
++ struct rtc_time *tm = &alrm->time;
++ unsigned long secs;
++ unsigned long base;
++ int err;
++
++ err = rtc_tm_to_time(tm, &secs);
++ if (err != 0)
++ return err;
++
++ base = at91_sys_read(AT91_GPBR + RTC_GPBR_REG);
++ if (base == 0) {
++ /* time is not set */
++ return -1;
++ }
++
++ if (secs <= base) {
++ /* alarm is before base time, disable alarm */
++ at91_sys_write(AT91_RTT_AR, ALARM_DISABLED);
++ return -1;
++ }
++
++ at91_sys_write(AT91_RTT_AR, secs - base);
++
++ pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
++ tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour,
++ tm->tm_min, tm->tm_sec);
++
++ return 0;
++}
++
++/*
++ * Handle commands from user-space
++ */
++static int at91_rtc_ioctl(struct device *dev, unsigned int cmd,
++ unsigned long arg)
++{
++ int ret = 0;
++ unsigned long mr = at91_sys_read(AT91_RTT_MR);
++
++ pr_debug("%s(): cmd=%08x, arg=%08lx.\n", __FUNCTION__, cmd, arg);
++
++ switch (cmd) {
++ case RTC_AIE_OFF: /* alarm off */
++ at91_sys_write(AT91_RTT_MR, mr & ~AT91_RTT_ALMIEN);
++ break;
++ case RTC_AIE_ON: /* alarm on */
++ at91_sys_write(AT91_RTT_MR, mr | AT91_RTT_ALMIEN);
++ break;
++ case RTC_UIE_OFF: /* update off */
++ case RTC_PIE_OFF: /* periodic off */
++ at91_sys_write(AT91_RTT_MR, mr & ~AT91_RTT_RTTINCIEN);
++ break;
++ case RTC_UIE_ON: /* update on */
++ case RTC_PIE_ON: /* periodic on */
++ at91_sys_write(AT91_RTT_MR, mr | AT91_RTT_RTTINCIEN);
++ break;
++ case RTC_IRQP_READ: /* read periodic alarm frequency */
++ ret = put_user(AT91_RTC_FREQ, (unsigned long *) arg);
++ break;
++ case RTC_IRQP_SET: /* set periodic alarm frequency */
++ if (arg != AT91_RTC_FREQ)
++ ret = -EINVAL;
++ break;
++ default:
++ ret = -ENOIOCTLCMD;
++ break;
++ }
++
++ return ret;
++}
++
++/*
++ * Provide additional RTC information in /proc/driver/rtc
++ */
++static int at91_rtc_proc(struct device *dev, struct seq_file *seq)
++{
++ unsigned long mr = at91_sys_read(AT91_RTT_MR);
++
++ seq_printf(seq, "alarm_IRQ\t: %s\n",
++ (mr & AT91_RTT_ALMIEN) ? "yes" : "no");
++ seq_printf(seq, "periodic_IRQ\t: %s\n",
++ (mr & AT91_RTT_RTTINCIEN) ? "yes" : "no");
++ seq_printf(seq, "periodic_freq\t: %ld\n",
++ (unsigned long) AT91_RTC_FREQ);
++ return 0;
++}
++
++/*
++ * IRQ handler for the RTC
++ */
++static irqreturn_t at91_rtc_interrupt(int irq, void *dev_id)
++{
++ struct platform_device *pdev = dev_id;
++ struct rtc_device *rtc = platform_get_drvdata(pdev);
++ unsigned long sr, mr;
++ unsigned long events = 0;
++
++ mr = at91_sys_read(AT91_RTT_MR);
++ sr = at91_sys_read(AT91_RTT_SR);
++
++ if ((sr & AT91_RTT_ALMS) && (mr & AT91_RTT_ALMIEN)) /* alarm status */
++ events |= (RTC_AF | RTC_IRQF);
++
++ if ((sr & AT91_RTT_RTTINC) && (mr & AT91_RTT_RTTINCIEN)) /* timer increment */
++ events |= (RTC_UF | RTC_IRQF);
++
++ /* this interrupt is shared */
++ if (events) {
++ rtc_update_irq(rtc, 1, events);
++
++ pr_debug("%s(): num=%ld, events=0x%02lx\n", __FUNCTION__,
++ events >> 8, events & 0x000000FF);
++
++ return IRQ_HANDLED;
++ }
++ return IRQ_NONE; /* not handled */
++}
++
++static const struct rtc_class_ops at91_rtc_ops = {
++ .ioctl = at91_rtc_ioctl,
++ .read_time = at91_rtc_readtime,
++ .set_time = at91_rtc_settime,
++ .read_alarm = at91_rtc_readalarm,
++ .set_alarm = at91_rtc_setalarm,
++ .proc = at91_rtc_proc,
++};
++
++/*
++ * Initialize and install RTC driver
++ */
++static int __init at91_rtc_probe(struct platform_device *pdev)
++{
++ struct rtc_device *rtc;
++ int ret;
++ unsigned int mr;
++
++ mr = at91_sys_read(AT91_RTT_MR);
++
++ /* set prescalar value to 1 Hz */
++ mr &= ~AT91_RTT_RTPRES;
++ mr |= (AT91_SLOW_CLOCK & AT91_RTT_RTPRES);
++
++ /* disable all interrupts */
++ at91_sys_write(AT91_RTT_MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN));
++
++ /* Install RTC interrupt handler */
++ ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
++ IRQF_DISABLED | IRQF_SHARED,
++ "at91_rtt", pdev);
++ if (ret) {
++ printk(KERN_ERR "rtc-at91sam9: IRQ %d already in use.\n", AT91_ID_SYS);
++ return ret;
++ }
++
++ /* cpu init code should really have flagged this device as
++ * being wake-capable; if it didn't, do that here.
++ */
++ if (!device_can_wakeup(&pdev->dev))
++ device_init_wakeup(&pdev->dev, 1);
++
++ rtc = rtc_device_register(pdev->name, &pdev->dev,
++ &at91_rtc_ops, THIS_MODULE);
++ if (IS_ERR(rtc)) {
++ free_irq(AT91_ID_SYS, pdev);
++ return PTR_ERR(rtc);
++ }
++ platform_set_drvdata(pdev, rtc);
++
++ /* TODO re-enable interrupts that were set? */
++ at91_sys_write(AT91_RTT_MR, mr);
++
++ printk(KERN_INFO "AT91SAM9 Real Time Clock driver.\n");
++ return 0;
++}
++
++/*
++ * Disable and remove the RTC driver
++ */
++static int __exit at91_rtc_remove(struct platform_device *pdev)
++{
++ struct rtc_device *rtc = platform_get_drvdata(pdev);
++ unsigned long mr;
++
++ device_init_wakeup(&pdev->dev, 0);
++
++ /* disable all interrupts */
++ mr = at91_sys_read(AT91_RTT_MR);
++ at91_sys_write(AT91_RTT_MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN));
++
++ free_irq(AT91_ID_SYS, pdev);
++
++ rtc_device_unregister(rtc);
++ platform_set_drvdata(pdev, NULL);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++
++/* AT91SAM9260 RTC Power management control */
++
++static struct timespec at91_rtc_delta;
++static u32 at91_rtc_imr;
++
++static int at91_rtc_suspend(struct platform_device *pdev,
++ pm_message_t state)
++{
++ struct rtc_time tm;
++ struct timespec time;
++ unsigned long mr;
++
++ time.tv_nsec = 0;
++
++ /* calculate time delta for suspend */
++ at91_rtc_readtime(&pdev->dev, &tm);
++ rtc_tm_to_time(&tm, &time.tv_sec);
++ save_time_delta(&at91_rtc_delta, &time);
++
++ /*
++ * this IRQ is shared with DBGU and other hardware which isn't
++ * necessarily doing PM like we are...
++ */
++ mr = at91_sys_read(AT91_RTT_MR);
++ at91_rtc_imr = mr & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); /* save enabled interrupts */
++ if (at91_rtc_imr) {
++ if (device_may_wakeup(&pdev->dev))
++ enable_irq_wake(AT91_ID_SYS);
++ else
++ at91_sys_write(AT91_RTT_MR, mr & ~at91_rtc_imr);
++ }
++
++ pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
++ 1900 + tm.tm_year, tm.tm_mon, tm.tm_mday,
++ tm.tm_hour, tm.tm_min, tm.tm_sec);
++
++ return 0;
++}
++
++static int at91_rtc_resume(struct platform_device *pdev)
++{
++ struct rtc_time tm;
++ struct timespec time;
++ unsigned int mr;
++
++ time.tv_nsec = 0;
++
++ at91_rtc_readtime(&pdev->dev, &tm);
++ rtc_tm_to_time(&tm, &time.tv_sec);
++ restore_time_delta(&at91_rtc_delta, &time);
++
++ if (at91_rtc_imr) {
++ if (device_may_wakeup(&pdev->dev))
++ disable_irq_wake(AT91_ID_SYS);
++ else {
++ mr = at91_sys_read(AT91_RTT_MR);
++ at91_sys_write(AT91_RTT_MR, mr | at91_rtc_imr);
++ }
++ }
++
++ pr_debug("%s(): %4d-%02d-%02d %02d:%02d:%02d\n", __FUNCTION__,
++ 1900 + tm.tm_year, tm.tm_mon, tm.tm_mday,
++ tm.tm_hour, tm.tm_min, tm.tm_sec);
++
++ return 0;
++}
++#else
++#define at91_rtc_suspend NULL
++#define at91_rtc_resume NULL
++#endif
++
++static struct platform_driver at91_rtc_driver = {
++ .remove = __exit_p(at91_rtc_remove),
++ .suspend = at91_rtc_suspend,
++ .resume = at91_rtc_resume,
++ .driver = {
++ .name = "at91_rtc",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init at91_rtc_init(void)
++{
++ return platform_driver_probe(&at91_rtc_driver, at91_rtc_probe);
++}
++
++static void __exit at91_rtc_exit(void)
++{
++ platform_driver_unregister(&at91_rtc_driver);
++}
++
++module_init(at91_rtc_init);
++module_exit(at91_rtc_exit);
++
++MODULE_AUTHOR("Michel Benoit");
++MODULE_DESCRIPTION("RTC driver for Atmel AT91SAM926x");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c
+index 111da57..0f8c25a 100644
+--- a/drivers/serial/atmel_serial.c
++++ b/drivers/serial/atmel_serial.c
+@@ -7,6 +7,8 @@
+ * Based on drivers/char/serial_sa1100.c, by Deep Blue Solutions Ltd.
+ * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o.
+ *
++ * DMA support added by Chip Coldwell.
++ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+@@ -33,6 +35,7 @@
+ #include <linux/sysrq.h>
+ #include <linux/tty_flip.h>
+ #include <linux/platform_device.h>
++#include <linux/dma-mapping.h>
+ #include <linux/atmel_pdc.h>
+
+ #include <asm/io.h>
+@@ -47,6 +50,11 @@
+
+ #include "atmel_serial.h"
+
++#define SUPPORT_PDC
++#define PDC_BUFFER_SIZE (L1_CACHE_BYTES << 3)
++#warning "Revisit"
++#define PDC_RX_TIMEOUT (3 * 10) /* 3 bytes */
++
+ #if defined(CONFIG_SERIAL_ATMEL_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+ #define SUPPORT_SYSRQ
+ #endif
+@@ -107,6 +115,13 @@
+ static int (*atmel_open_hook)(struct uart_port *);
+ static void (*atmel_close_hook)(struct uart_port *);
+
++struct atmel_dma_buffer {
++ unsigned char *buf;
++ dma_addr_t dma_addr;
++ size_t dma_size;
++ unsigned int ofs;
++};
++
+ /*
+ * We wrap our port structure around the generic uart_port.
+ */
+@@ -115,10 +130,20 @@ struct atmel_uart_port {
+ struct clk *clk; /* uart clock */
+ unsigned short suspended; /* is port suspended? */
+ int break_active; /* break being received */
++
++ short use_dma_rx; /* enable PDC receiver */
++ short pdc_rx_idx; /* current PDC RX buffer */
++ struct atmel_dma_buffer pdc_rx[2]; /* PDC receier */
++
++ short use_dma_tx; /* enable PDC transmitter */
++ struct atmel_dma_buffer pdc_tx; /* PDC transmitter */
+ };
+
+ static struct atmel_uart_port atmel_ports[ATMEL_MAX_UART];
+
++#define PDC_RX_BUF(port) &(port)->pdc_rx[(port)->pdc_rx_idx]
++#define PDC_RX_SWITCH(port) (port)->pdc_rx_idx = !(port)->pdc_rx_idx
++
+ #ifdef SUPPORT_SYSRQ
+ static struct console atmel_console;
+ #endif
+@@ -204,7 +229,14 @@ static u_int atmel_get_mctrl(struct uart_port *port)
+ */
+ static void atmel_stop_tx(struct uart_port *port)
+ {
+- UART_PUT_IDR(port, ATMEL_US_TXRDY);
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++
++ if (atmel_port->use_dma_tx) {
++ UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); /* disable PDC transmit */
++ UART_PUT_IDR(port, ATMEL_US_ENDTX | ATMEL_US_TXBUFE);
++ }
++ else
++ UART_PUT_IDR(port, ATMEL_US_TXRDY);
+ }
+
+ /*
+@@ -212,7 +244,19 @@ static void atmel_stop_tx(struct uart_port *port)
+ */
+ static void atmel_start_tx(struct uart_port *port)
+ {
+- UART_PUT_IER(port, ATMEL_US_TXRDY);
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++
++ if (atmel_port->use_dma_tx) {
++ if (UART_GET_PTSR(port) & ATMEL_PDC_TXTEN)
++ /* The transmitter is already running. Yes, we
++ really need this.*/
++ return;
++
++ UART_PUT_IER(port, ATMEL_US_ENDTX | ATMEL_US_TXBUFE);
++ UART_PUT_PTCR(port, ATMEL_PDC_TXTEN); /* re-enable PDC transmit */
++ }
++ else
++ UART_PUT_IER(port, ATMEL_US_TXRDY);
+ }
+
+ /*
+@@ -220,7 +264,14 @@ static void atmel_start_tx(struct uart_port *port)
+ */
+ static void atmel_stop_rx(struct uart_port *port)
+ {
+- UART_PUT_IDR(port, ATMEL_US_RXRDY);
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++
++ if (atmel_port->use_dma_rx) {
++ UART_PUT_PTCR(port, ATMEL_PDC_RXTDIS); /* disable PDC receive */
++ UART_PUT_IDR(port, ATMEL_US_ENDRX | ATMEL_US_TIMEOUT);
++ }
++ else
++ UART_PUT_IDR(port, ATMEL_US_RXRDY);
+ }
+
+ /*
+@@ -243,6 +294,134 @@ static void atmel_break_ctl(struct uart_port *port, int break_state)
+ }
+
+ /*
++ * Receive data via the PDC. A buffer has been fulled.
++ */
++static void atmel_pdc_endrx(struct uart_port *port)
++{
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++ struct tty_struct *tty = port->info->tty;
++ struct atmel_dma_buffer *pdc = PDC_RX_BUF(atmel_port);
++ unsigned int count;
++
++ count = pdc->dma_size - pdc->ofs;
++ if (likely(count > 0)) {
++ dma_sync_single_for_cpu(port->dev, pdc->dma_addr, pdc->dma_size, DMA_FROM_DEVICE);
++ tty_insert_flip_string(tty, pdc->buf + pdc->ofs, count);
++ tty_flip_buffer_push(tty);
++
++ port->icount.rx += count;
++ }
++
++ /* Set this buffer as the next receive buffer */
++ pdc->ofs = 0;
++ UART_PUT_RNPR(port, pdc->dma_addr);
++ UART_PUT_RNCR(port, pdc->dma_size);
++
++ /* Switch to next buffer */
++ PDC_RX_SWITCH(atmel_port); /* next PDC buffer */
++}
++
++/*
++ * Receive data via the PDC. At least one byte was received, but the
++ * buffer was not full when the inter-character timeout expired.
++ */
++static void atmel_pdc_timeout(struct uart_port *port)
++{
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++ struct tty_struct *tty = port->info->tty;
++ struct atmel_dma_buffer *pdc = PDC_RX_BUF(atmel_port);
++ /* unsigned */ int ofs, count;
++
++ ofs = UART_GET_RPR(port) - pdc->dma_addr; /* current DMA adress */
++ count = ofs - pdc->ofs;
++
++ if (likely(count > 0)) {
++ dma_sync_single_for_cpu(port->dev, pdc->dma_addr, pdc->dma_size, DMA_FROM_DEVICE);
++ tty_insert_flip_string(tty, pdc->buf + pdc->ofs, count);
++ tty_flip_buffer_push(tty);
++
++ pdc->ofs = ofs;
++ port->icount.rx += count;
++ }
++
++ /* reset the UART timeout */
++ UART_PUT_CR(port, ATMEL_US_STTTO);
++}
++
++/*
++ * Deal with parity, framing and overrun errors.
++ */
++static void atmel_pdc_rxerr(struct uart_port *port, unsigned int status)
++{
++ /* clear error */
++ UART_PUT_CR(port, ATMEL_US_RSTSTA);
++
++ if (status & ATMEL_US_RXBRK) {
++ status &= ~(ATMEL_US_PARE | ATMEL_US_FRAME); /* ignore side-effect */
++ port->icount.brk++;
++ }
++ if (status & ATMEL_US_PARE)
++ port->icount.parity++;
++ if (status & ATMEL_US_FRAME)
++ port->icount.frame++;
++ if (status & ATMEL_US_OVRE)
++ port->icount.overrun++;
++}
++
++/*
++ * A transmission via the PDC is complete.
++ */
++static void atmel_pdc_endtx(struct uart_port *port)
++{
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++ struct circ_buf *xmit = &port->info->xmit;
++ struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
++
++ xmit->tail += pdc->ofs;
++ if (xmit->tail >= SERIAL_XMIT_SIZE)
++ xmit->tail -= SERIAL_XMIT_SIZE;
++
++ port->icount.tx += pdc->ofs;
++ pdc->ofs = 0;
++
++ if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
++ uart_write_wakeup(port);
++}
++
++/*
++ * The PDC transmitter is idle, so either start the next transfer or
++ * disable the transmitter.
++ */
++static void atmel_pdc_txbufe(struct uart_port *port)
++{
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++ struct circ_buf *xmit = &port->info->xmit;
++ struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
++ int count;
++
++ if (!uart_circ_empty(xmit)) {
++ /* more to transmit - setup next transfer */
++ UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); /* disable PDC transmit */
++ dma_sync_single_for_device(port->dev, pdc->dma_addr, pdc->dma_size, DMA_TO_DEVICE);
++
++ if (xmit->tail < xmit->head)
++ count = xmit->head - xmit->tail;
++ else
++ count = SERIAL_XMIT_SIZE - xmit->tail;
++ pdc->ofs = count;
++
++ UART_PUT_TPR(port, pdc->dma_addr + xmit->tail);
++ UART_PUT_TCR(port, count);
++ UART_PUT_PTCR(port, ATMEL_PDC_TXTEN); /* re-enable PDC transmit */
++ }
++ else {
++ /* nothing left to transmit - disable the transmitter */
++ UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); /* disable PDC transmit */
++ UART_PUT_IDR(port, ATMEL_US_ENDTX | ATMEL_US_TXBUFE);
++ }
++}
++
++/*
+ * Characters received (called from interrupt handler)
+ */
+ static void atmel_rx_chars(struct uart_port *port)
+@@ -361,6 +540,14 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id)
+ status = UART_GET_CSR(port);
+ pending = status & UART_GET_IMR(port);
+ while (pending) {
++ /* PDC receive */
++ if (pending & ATMEL_US_ENDRX)
++ atmel_pdc_endrx(port);
++ if (pending & ATMEL_US_TIMEOUT)
++ atmel_pdc_timeout(port);
++ if (atmel_port->use_dma_rx && pending & (ATMEL_US_RXBRK | ATMEL_US_OVRE | ATMEL_US_FRAME | ATMEL_US_PARE))
++ atmel_pdc_rxerr(port, pending);
++
+ /* Interrupt receive */
+ if (pending & ATMEL_US_RXRDY)
+ atmel_rx_chars(port);
+@@ -385,6 +572,12 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id)
+ if (pending & (ATMEL_US_RIIC | ATMEL_US_DSRIC | ATMEL_US_DCDIC | ATMEL_US_CTSIC))
+ wake_up_interruptible(&port->info->delta_msr_wait);
+
++ /* PDC transmit */
++ if (pending & ATMEL_US_ENDTX)
++ atmel_pdc_endtx(port);
++ if (pending & ATMEL_US_TXBUFE)
++ atmel_pdc_txbufe(port);
++
+ /* Interrupt transmit */
+ if (pending & ATMEL_US_TXRDY)
+ atmel_tx_chars(port);
+@@ -404,6 +597,7 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id)
+ static int atmel_startup(struct uart_port *port)
+ {
+ int retval;
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
+
+ /*
+ * Ensure that no interrupts are enabled otherwise when
+@@ -422,6 +616,47 @@ static int atmel_startup(struct uart_port *port)
+ }
+
+ /*
++ * Initialize DMA (if necessary)
++ */
++ if (atmel_port->use_dma_rx) {
++ int i;
++
++ for (i = 0; i < 2; i++) {
++ struct atmel_dma_buffer *pdc = &atmel_port->pdc_rx[i];
++
++ pdc->buf = kmalloc(PDC_BUFFER_SIZE, GFP_KERNEL);
++ if (pdc->buf == NULL) {
++ if (i != 0) {
++ dma_unmap_single(port->dev, atmel_port->pdc_rx[0].dma_addr, PDC_BUFFER_SIZE, DMA_FROM_DEVICE);
++ kfree(atmel_port->pdc_rx[0].buf);
++ }
++ free_irq(port->irq, port);
++ return -ENOMEM;
++ }
++ pdc->dma_addr = dma_map_single(port->dev, pdc->buf, PDC_BUFFER_SIZE, DMA_FROM_DEVICE);
++ pdc->dma_size = PDC_BUFFER_SIZE;
++ pdc->ofs = 0;
++ }
++
++ atmel_port->pdc_rx_idx = 0;
++
++ UART_PUT_RPR(port, atmel_port->pdc_rx[0].dma_addr);
++ UART_PUT_RCR(port, PDC_BUFFER_SIZE);
++
++ UART_PUT_RNPR(port, atmel_port->pdc_rx[1].dma_addr);
++ UART_PUT_RNCR(port, PDC_BUFFER_SIZE);
++ }
++ if (atmel_port->use_dma_tx) {
++ struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
++ struct circ_buf *xmit = &port->info->xmit;
++
++ pdc->buf = xmit->buf;
++ pdc->dma_addr = dma_map_single(port->dev, pdc->buf, SERIAL_XMIT_SIZE, DMA_TO_DEVICE);
++ pdc->dma_size = SERIAL_XMIT_SIZE;
++ pdc->ofs = 0;
++ }
++
++ /*
+ * If there is a specific "open" function (to register
+ * control line interrupts)
+ */
+@@ -439,7 +674,15 @@ static int atmel_startup(struct uart_port *port)
+ UART_PUT_CR(port, ATMEL_US_RSTSTA | ATMEL_US_RSTRX);
+ UART_PUT_CR(port, ATMEL_US_TXEN | ATMEL_US_RXEN); /* enable xmit & rcvr */
+
+- UART_PUT_IER(port, ATMEL_US_RXRDY); /* enable receive only */
++ if (atmel_port->use_dma_rx) {
++ UART_PUT_RTOR(port, PDC_RX_TIMEOUT); /* set UART timeout */
++ UART_PUT_CR(port, ATMEL_US_STTTO);
++
++ UART_PUT_IER(port, ATMEL_US_ENDRX | ATMEL_US_TIMEOUT);
++ UART_PUT_PTCR(port, ATMEL_PDC_RXTEN); /* enable PDC controller */
++ }
++ else
++ UART_PUT_IER(port, ATMEL_US_RXRDY); /* enable receive only */
+
+ return 0;
+ }
+@@ -449,6 +692,33 @@ static int atmel_startup(struct uart_port *port)
+ */
+ static void atmel_shutdown(struct uart_port *port)
+ {
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
++
++ /*
++ * Ensure everything is stopped.
++ */
++ atmel_stop_rx(port);
++ atmel_stop_tx(port);
++
++ /*
++ * Shut-down the DMA.
++ */
++ if (atmel_port->use_dma_rx) {
++ int i;
++
++ for (i = 0; i < 2; i++) {
++ struct atmel_dma_buffer *pdc = &atmel_port->pdc_rx[i];
++
++ dma_unmap_single(port->dev, pdc->dma_addr, pdc->dma_size, DMA_FROM_DEVICE);
++ kfree(pdc->buf);
++ }
++ }
++ if (atmel_port->use_dma_tx) {
++ struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
++
++ dma_unmap_single(port->dev, pdc->dma_addr, pdc->dma_size, DMA_TO_DEVICE);
++ }
++
+ /*
+ * Disable all interrupts, port and break condition.
+ */
+@@ -500,6 +770,7 @@ static void atmel_serial_pm(struct uart_port *port, unsigned int state, unsigned
+ */
+ static void atmel_set_termios(struct uart_port *port, struct ktermios * termios, struct ktermios * old)
+ {
++ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
+ unsigned long flags;
+ unsigned int mode, imr, quot, baud;
+
+@@ -509,7 +780,7 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios * termios,
+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
+ quot = uart_get_divisor(port, baud);
+
+- if (quot > 65535) { /* BRGR is 16-bit, so switch to slower clock */
++ if (quot > 65535) { /* BRGR is 16-bit, so switch to slower clock */
+ quot /= 8;
+ mode |= ATMEL_US_USCLKS_MCK_DIV8;
+ }
+@@ -558,6 +829,9 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios * termios,
+ if (termios->c_iflag & (BRKINT | PARMRK))
+ port->read_status_mask |= ATMEL_US_RXBRK;
+
++ if (atmel_port->use_dma_rx) /* need to enable error interrupts */
++ UART_PUT_IER(port, port->read_status_mask);
++
+ /*
+ * Characters to ignore
+ */
+@@ -736,6 +1010,13 @@ static void __devinit atmel_init_port(struct atmel_uart_port *atmel_port, struct
+ clk_enable(atmel_port->clk);
+ port->uartclk = clk_get_rate(atmel_port->clk);
+ }
++
++#ifdef SUPPORT_PDC
++ atmel_port->use_dma_rx = data->use_dma_rx;
++ atmel_port->use_dma_tx = data->use_dma_tx;
++ if (atmel_port->use_dma_tx)
++ port->fifosize = PDC_BUFFER_SIZE;
++#endif
+ }
+
+ /*
+@@ -912,7 +1193,8 @@ static int atmel_serial_suspend(struct platform_device *pdev, pm_message_t state
+ struct uart_port *port = platform_get_drvdata(pdev);
+ struct atmel_uart_port *atmel_port = (struct atmel_uart_port *) port;
+
+- if (device_may_wakeup(&pdev->dev) && !at91_suspend_entering_slow_clock())
++ if (device_may_wakeup(&pdev->dev)
++ && !clk_must_disable(atmel_port->clk))
+ enable_irq_wake(port->irq);
+ else {
+ uart_suspend_port(&atmel_uart, port);
+diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
+index abf0504..b655bbc 100644
+--- a/drivers/spi/Kconfig
++++ b/drivers/spi/Kconfig
+@@ -100,6 +100,15 @@ config SPI_BUTTERFLY
+ inexpensive battery powered microcontroller evaluation board.
+ This same cable can be used to flash new firmware.
+
++config SPI_AT91
++ tristate "AT91RM9200 Bitbang SPI Master"
++ depends on SPI_MASTER && ARCH_AT91RM9200 && !SPI_ATMEL && EXPERIMENTAL
++ select SPI_BITBANG
++ help
++ This is dumb PIO bitbanging driver for the Atmel AT91RM9200.
++ The SPI_ATMEL driver will be its replacement, using the native
++ SPI hardware and its DMA controller.
++
+ config SPI_IMX
+ tristate "Freescale iMX SPI controller"
+ depends on SPI_MASTER && ARCH_IMX && EXPERIMENTAL
+diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
+index 41fbac4..124aeec 100644
+--- a/drivers/spi/Makefile
++++ b/drivers/spi/Makefile
+@@ -27,6 +27,7 @@ obj-$(CONFIG_SPI_S3C24XX_GPIO) += spi_s3c24xx_gpio.o
+ obj-$(CONFIG_SPI_S3C24XX) += spi_s3c24xx.o
+ obj-$(CONFIG_SPI_TXX9) += spi_txx9.o
+ obj-$(CONFIG_SPI_XILINX) += xilinx_spi.o
++obj-$(CONFIG_SPI_AT91) += spi_at91_bitbang.o
+ # ... add above this line ...
+
+ # SPI protocol drivers (device/link on bus)
+diff --git a/drivers/spi/spi_at91_bitbang.c b/drivers/spi/spi_at91_bitbang.c
+new file mode 100644
+index 0000000..b8d82c2
+--- /dev/null
++++ b/drivers/spi/spi_at91_bitbang.c
+@@ -0,0 +1,207 @@
++/*
++ * at91_spi.c - at91 SPI driver (BOOTSTRAP/BITBANG VERSION)
++ *
++ * Copyright (C) 2006 David Brownell
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++
++#include <linux/spi/spi.h>
++#include <linux/spi/spi_bitbang.h>
++
++#include <asm/arch/gpio.h>
++
++
++/*
++ * FIXME this bitbanging version is just to help bootstrap systems until
++ * there's a native SPI+IRQ+DMA controller driver ... such a driver should
++ * be a drop-in replacement for this one, and much faster.
++ *
++ * remember:
++ *
++ * - other at91 parts (like at91sam9) have multiple controllers
++ * and different pin muxing; this version is at91rm9200 specfic.
++ *
++ * - at91sam9261 SPI0 pins are directly muxed with MMC/SD pins.
++ *
++ * - rm9200 spi chipselects drop wrongly, so the native driver
++ * will need to use gpios much like this does.
++ *
++ * - real hardware only allows 8..16 bits per word, while this
++ * bitbanger allows 1..32 (incompatible superset).
++ *
++ * - this disregards clock parameters. with inlined gpio calls,
++ * gcc 3.4.4 produces about 1.5 mbit/sec, more than 2x faster
++ * than using the subroutined veresion from txrx_word().
++ *
++ * - suspend/resume and <linux/clk.h> support is missing ...
++ */
++
++#define spi_miso_bit AT91_PIN_PA0
++#define spi_mosi_bit AT91_PIN_PA1
++#define spi_sck_bit AT91_PIN_PA2
++
++struct at91_spi {
++ struct spi_bitbang bitbang;
++ struct platform_device *pdev;
++};
++
++/*----------------------------------------------------------------------*/
++
++static inline void setsck(struct spi_device *spi, int is_on)
++{
++ at91_set_gpio_value(spi_sck_bit, is_on);
++}
++
++static inline void setmosi(struct spi_device *spi, int is_on)
++{
++ at91_set_gpio_value(spi_mosi_bit, is_on);
++}
++
++static inline int getmiso(struct spi_device *spi)
++{
++ return at91_get_gpio_value(spi_miso_bit);
++}
++
++static void at91_spi_chipselect(struct spi_device *spi, int is_active)
++{
++ unsigned long cs = (unsigned long) spi->controller_data;
++
++ /* set default clock polarity */
++ if (is_active)
++ setsck(spi, spi->mode & SPI_CPOL);
++
++ /* only support active-low (default) */
++ at91_set_gpio_value(cs, !is_active);
++}
++
++/*
++ * NOTE: this is "as fast as we can"; it should be a function of
++ * the device clock ...
++ */
++#define spidelay(X) do{} while(0)
++
++#define EXPAND_BITBANG_TXRX
++#include <linux/spi/spi_bitbang.h>
++
++static u32 at91_spi_txrx_word_mode0(struct spi_device *spi,
++ unsigned nsecs, u32 word, u8 bits)
++{
++ return bitbang_txrx_be_cpha0(spi, nsecs, 0, word, 8);
++}
++
++static u32 at91_spi_txrx_word_mode1(struct spi_device *spi,
++ unsigned nsecs, u32 word, u8 bits)
++{
++ return bitbang_txrx_be_cpha1(spi, nsecs, 0, word, 8);
++}
++
++static u32 at91_spi_txrx_word_mode2(struct spi_device *spi,
++ unsigned nsecs, u32 word, u8 bits)
++{
++ return bitbang_txrx_be_cpha0(spi, nsecs, 1, word, 8);
++}
++
++static u32 at91_spi_txrx_word_mode3(struct spi_device *spi,
++ unsigned nsecs, u32 word, u8 bits)
++{
++ return bitbang_txrx_be_cpha1(spi, nsecs, 1, word, 8);
++}
++
++/*----------------------------------------------------------------------*/
++
++static int __init at91_spi_probe(struct platform_device *pdev)
++{
++ int status;
++ struct spi_master *master;
++ struct at91_spi *at91_spi;
++
++ if (pdev->id != 0) /* SPI0 bus */
++ return -EINVAL;
++
++ master = spi_alloc_master(&pdev->dev, sizeof *at91_spi);
++ if (!master)
++ return -ENOMEM;
++
++ at91_spi = spi_master_get_devdata(master);
++ at91_spi->pdev = pdev;
++ platform_set_drvdata(pdev, at91_spi);
++
++ /* SPI and bitbang hookup */
++ master->bus_num = 0;
++ master->num_chipselect = 4;
++
++ at91_spi->bitbang.master = spi_master_get(master);
++ at91_spi->bitbang.chipselect = at91_spi_chipselect;
++ at91_spi->bitbang.txrx_word[SPI_MODE_0] = at91_spi_txrx_word_mode0;
++ at91_spi->bitbang.txrx_word[SPI_MODE_1] = at91_spi_txrx_word_mode1;
++ at91_spi->bitbang.txrx_word[SPI_MODE_2] = at91_spi_txrx_word_mode2;
++ at91_spi->bitbang.txrx_word[SPI_MODE_3] = at91_spi_txrx_word_mode3;
++
++ status = spi_bitbang_start(&at91_spi->bitbang);
++ if (status < 0)
++ (void) spi_master_put(at91_spi->bitbang.master);
++
++ return status;
++}
++
++static int __exit at91_spi_remove(struct platform_device *pdev)
++{
++ struct at91_spi *at91_spi = platform_get_drvdata(pdev);
++ int status;
++
++ /* stop() unregisters child devices too */
++ status = spi_bitbang_stop(&at91_spi->bitbang);
++ (void) spi_master_put(at91_spi->bitbang.master);
++
++ platform_set_drvdata(pdev, NULL);
++ return status;
++}
++
++static struct platform_driver at91_spi_driver = {
++ .probe = at91_spi_probe,
++ .remove = __exit_p(at91_spi_remove),
++ .driver = {
++ .name = "at91_spi",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init at91_spi_init(void)
++{
++ at91_set_gpio_output(spi_sck_bit, 0);
++ at91_set_gpio_output(spi_mosi_bit, 0);
++ at91_set_gpio_input(spi_miso_bit, 1 /* pullup */);
++
++ /* register driver */
++ return platform_driver_register(&at91_spi_driver);
++}
++
++static void __exit at91_spi_exit(void)
++{
++ platform_driver_unregister(&at91_spi_driver);
++}
++
++device_initcall(at91_spi_init);
++module_exit(at91_spi_exit);
++
++MODULE_ALIAS("at91_spi.0");
++
++MODULE_DESCRIPTION("AT91 SPI support (BOOTSTRAP/BITBANG VERSION)");
++MODULE_AUTHOR("David Brownell");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
+index cd62b02..4e08216 100644
+--- a/drivers/usb/gadget/at91_udc.c
++++ b/drivers/usb/gadget/at91_udc.c
+@@ -1784,7 +1784,7 @@ static int at91udc_suspend(struct platform_device *pdev, pm_message_t mesg)
+ */
+ if ((!udc->suspended && udc->addr)
+ || !wake
+- || at91_suspend_entering_slow_clock()) {
++ || clk_must_disable(udc->fclk)) {
+ pullup(udc, 0);
+ wake = 0;
+ } else
+diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
+index d849c80..aeed2ba 100644
+--- a/drivers/usb/host/ohci-at91.c
++++ b/drivers/usb/host/ohci-at91.c
+@@ -299,7 +299,7 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg)
+ *
+ * REVISIT: some boards will be able to turn VBUS off...
+ */
+- if (at91_suspend_entering_slow_clock()) {
++ if (clk_must_disable(fclk)) {
+ ohci_usb_reset (ohci);
+ at91_stop_clock();
+ }
+diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
+index 5b3dbcf..94e8243 100644
+--- a/drivers/video/Kconfig
++++ b/drivers/video/Kconfig
+@@ -876,6 +876,17 @@ config FB_EPSON1355
+ framebuffer. Product specs at
+ <http://www.erd.epson.com/vdc/html/products.htm>.
+
++config FB_S1D15605
++ tristate "Epson S1D15605 framebuffer support"
++ depends on FB
++ default m if MACH_KB9200
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ help
++ Build in support for the S1D15605 Epson Research 128x64
++ LCD controller as a framebuffer.
++
+ config FB_S1D13XXX
+ tristate "Epson S1D13XXX framebuffer support"
+ depends on FB
+@@ -889,7 +900,7 @@ config FB_S1D13XXX
+
+ config FB_ATMEL
+ tristate "AT91/AT32 LCD Controller support"
+- depends on FB && (ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || AVR32)
++ depends on FB && (ARCH_AT91SAM9261 || ARCH_AT91SAM9263 || ARCH_AT91SAM9RL || AVR32)
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
+diff --git a/drivers/video/Makefile b/drivers/video/Makefile
+index 83e02b3..d84b004 100644
+--- a/drivers/video/Makefile
++++ b/drivers/video/Makefile
+@@ -87,7 +87,8 @@ obj-$(CONFIG_FB_G364) += g364fb.o
+ obj-$(CONFIG_FB_SA1100) += sa1100fb.o
+ obj-$(CONFIG_FB_HIT) += hitfb.o
+ obj-$(CONFIG_FB_EPSON1355) += epson1355fb.o
+-obj-$(CONFIG_FB_ATMEL) += atmel_lcdfb.o
++obj-$(CONFIG_FB_S1D15605) += s1d15605fb.o
++obj-$(CONFIG_FB_ATMEL) += atmel_lcdfb.o
+ obj-$(CONFIG_FB_PVR2) += pvr2fb.o
+ obj-$(CONFIG_FB_VOODOO1) += sstfb.o
+ obj-$(CONFIG_FB_ARMCLCD) += amba-clcd.o
+diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
+index 9609a6c..e6dde97 100644
+--- a/drivers/video/backlight/Kconfig
++++ b/drivers/video/backlight/Kconfig
+@@ -90,3 +90,11 @@ config BACKLIGHT_CARILLO_RANCH
+ help
+ If you have a Intel LE80578 (Carillo Ranch) say Y to enable the
+ backlight driver.
++
++config BACKLIGHT_KB920x
++ tristate "KwikByte KB9202 Backlight Driver"
++ depends on BACKLIGHT_CLASS_DEVICE && MACH_KB9200
++ default y
++ help
++ If you have a KwikByte KB9202 board, say Y to enable the
++ backlight driver.
+diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
+index 965a78b..13886a7 100644
+--- a/drivers/video/backlight/Makefile
++++ b/drivers/video/backlight/Makefile
+@@ -9,3 +9,4 @@ obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
+ obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
+ obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
+ obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o
++obj-$(CONFIG_BACKLIGHT_KB920x) += kb920x_bl.o
+diff --git a/drivers/video/backlight/kb920x_bl.c b/drivers/video/backlight/kb920x_bl.c
+new file mode 100644
+index 0000000..bab1e29
+--- /dev/null
++++ b/drivers/video/backlight/kb920x_bl.c
+@@ -0,0 +1,164 @@
++/*
++ * Backlight Driver for KB9202
++ *
++ * Copyright (c) 2006 KwikByte
++ *
++ * Based on Sharp's Corgi Backlight Driver
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file "COPYING" in the main directory of this archive
++ * for more details.
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/spinlock.h>
++#include <linux/fb.h>
++#include <linux/backlight.h>
++
++#include <asm/arch/gpio.h>
++
++/* The backlight is on(1)/off(0) */
++#define KB9202_DEFAULT_INTENSITY 1
++#define KB9202_MAX_INTENSITY 1
++
++static int kb9202bl_suspended;
++static int current_intensity = 0;
++static DEFINE_SPINLOCK(bl_lock);
++
++static int kb9202bl_set_intensity(struct backlight_device *bd)
++{
++ unsigned long flags;
++ int intensity = bd->props.brightness;
++
++ if (bd->props.power != FB_BLANK_UNBLANK)
++ intensity = 0;
++ if (bd->props.fb_blank != FB_BLANK_UNBLANK)
++ intensity = 0;
++ if (kb9202bl_suspended)
++ intensity = 0;
++
++ if ((!current_intensity) && (bd->props.power == FB_BLANK_UNBLANK))
++ intensity = 1;
++
++ spin_lock_irqsave(&bl_lock, flags);
++ if (intensity)
++ gpio_set_value(AT91_PIN_PC23, 1);
++ else
++ gpio_set_value(AT91_PIN_PC23, 0);
++ spin_unlock_irqrestore(&bl_lock, flags);
++
++ current_intensity = intensity;
++
++ return 0;
++}
++
++static int kb9202bl_get_intensity(struct backlight_device *bd)
++{
++ return current_intensity;
++}
++
++static struct backlight_ops kb9202bl_ops = {
++ .get_brightness = kb9202bl_get_intensity,
++ .update_status = kb9202bl_set_intensity,
++};
++
++static int __init kb9202bl_probe(struct platform_device *pdev)
++{
++ struct backlight_device *bd;
++
++ bd = backlight_device_register ("kb9202-bl", &pdev->dev, NULL, &kb9202bl_ops);
++ if (IS_ERR(bd))
++ return PTR_ERR(bd);
++
++ platform_set_drvdata(pdev, bd);
++
++ bd->props.max_brightness = KB9202_MAX_INTENSITY;
++ bd->props.brightness = KB9202_DEFAULT_INTENSITY;
++ (void) kb9202bl_set_intensity(bd);
++
++ return 0;
++}
++
++static int kb9202bl_remove(struct platform_device *pdev)
++{
++ struct backlight_device *bd = platform_get_drvdata(pdev);
++
++ bd->props.brightness = 0;
++ bd->props.power = 0;
++ (void) kb9202bl_set_intensity(bd);
++
++ backlight_device_unregister(bd);
++
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int kb9202bl_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct backlight_device *bd = platform_get_drvdata(pdev);
++
++ kb9202bl_suspended = 1;
++ (void) kb9202bl_set_intensity(bd);
++ return 0;
++}
++
++static int kb9202bl_resume(struct platform_device *pdev)
++{
++ struct backlight_device *bd = platform_get_drvdata(pdev);
++
++ kb9202bl_suspended = 0;
++ (void) kb9202bl_set_intensity(bd);
++ return 0;
++}
++#else
++#define kb9202bl_suspend NULL
++#define kb9202bl_resume NULL
++#endif
++
++static struct platform_driver kb9202bl_driver = {
++ .probe = kb9202bl_probe,
++ .remove = kb9202bl_remove,
++ .suspend = kb9202bl_suspend,
++ .resume = kb9202bl_resume,
++ .driver = {
++ .name = "kb9202-bl",
++ .owner = THIS_MODULE,
++ },
++};
++
++static struct platform_device *kb9202bl_device;
++
++static int __init kb9202bl_init(void)
++{
++ int ret;
++
++ ret = platform_driver_register(&kb9202bl_driver);
++ if (!ret) {
++ kb9202bl_device = platform_device_alloc("kb9202-bl", -1);
++ if (!kb9202bl_device)
++ return -ENOMEM;
++
++ ret = platform_device_add(kb9202bl_device);
++ if (ret) {
++ platform_device_put(kb9202bl_device);
++ platform_driver_unregister(&kb9202bl_driver);
++ }
++ }
++ return ret;
++}
++
++static void __exit kb9202bl_exit(void)
++{
++ platform_device_unregister(kb9202bl_device);
++ platform_driver_unregister(&kb9202bl_driver);
++}
++
++module_init(kb9202bl_init);
++module_exit(kb9202bl_exit);
++
++MODULE_AUTHOR("KwikByte <kb9200_dev@kwikbyte.com>");
++MODULE_DESCRIPTION("KB9202 Backlight Driver");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/video/s1d15605fb.c b/drivers/video/s1d15605fb.c
+new file mode 100644
+index 0000000..00fa4c6
+--- /dev/null
++++ b/drivers/video/s1d15605fb.c
+@@ -0,0 +1,658 @@
++/*
++ * drivers/video/s1d15605.c
++ *
++ * Adapted from several sources including:
++ * 1) Driver for AT91 LCD Controller
++ * Copyright (C) 2006 Atmel
++ *
++ * 2) Copyright (C) 2005 S. Kevin Hester
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file COPYING in the main directory of this archive for
++ * more details.
++ *
++ * This is a basic framebuffer driver for the Optrex F-51320 128x64 mono LCD
++ * display. This display uses a clone of the common Epson SED 1531 display
++ * controller.
++ *
++ * I've heavily borrowed code from the vfb.c driver.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#ifdef DEBUG
++#define MSG(string, args...) printk("s1d15605fb:" string, ##args)
++#else
++#define MSG(string, args...)
++#endif
++
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/dma-mapping.h>
++#include <linux/interrupt.h>
++#include <linux/clk.h>
++#include <linux/fb.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++
++#include <asm/uaccess.h>
++
++#include <asm/arch/board.h>
++#include <asm/arch/gpio.h>
++
++#ifdef CONFIG_PMAC_BACKLIGHT
++#include <asm/backlight.h>
++#endif
++
++#define VIDEOWIDTH 128
++#define VIDEOHEIGHT 64
++#define VIDEODEPTH 1 /* bits/pixel */
++#define VIDEOWIDTH_BYTES ((VIDEOWIDTH * VIDEODEPTH) / 8)
++
++/* The number of bytes that actually go to the device */
++#define ACTUALVIDEOMEMSIZE (VIDEOWIDTH_BYTES * VIDEOHEIGHT)
++#define VIDEOMEMSIZE PAGE_SIZE
++
++static struct fb_var_screeninfo s1d15605_default __initdata = {
++ .xres = VIDEOWIDTH,
++ .yres = VIDEOHEIGHT,
++ .xres_virtual = VIDEOWIDTH,
++ .yres_virtual = VIDEOHEIGHT,
++ .bits_per_pixel = VIDEODEPTH,
++ .red = { 0, 1, 0 },
++ .green = { 0, 1, 0 },
++ .blue = { 0, 1, 0 },
++ .activate = FB_ACTIVATE_NOW,
++ .pixclock = 20000,
++ .vmode = FB_VMODE_NONINTERLACED,
++};
++
++static struct fb_fix_screeninfo s1d15605_fix __initdata = {
++ .id = "s1d15605",
++ .type = FB_TYPE_PACKED_PIXELS,
++ .visual = FB_VISUAL_MONO10,
++ .xpanstep = 0,
++ .ypanstep = 0,
++ .ywrapstep = 0,
++ .accel = FB_ACCEL_NONE,
++};
++
++struct s1d15605fb_info {
++ struct fb_info *info;
++ char *mmio;
++ unsigned long reset_pin;
++ struct platform_device *pdev;
++};
++
++/*
++ * LCD device interface
++ */
++#define RESET_DISPLAY 0xE2
++#define LCD_BIAS_1_9 0xA2
++#define ADC_SELECT_REVERSE 0xA1
++#define COMMON_OUTPUT_NORMAL 0xC0
++#define V5_RESISTOR_RATIO 0x26
++#define ELECTRONIC_VOLUME_SET 0x81
++#define ELECTRONIC_VOLUME_INIT 0x20
++#define POWER_CONTROL_SET 0x28
++#define VOLTAGE_REGULATOR 0x02
++#define VOLTAGE_FOLLOWER 0x01
++#define BOOSTER_CIRCUIT 0x04
++#define DISPLAY_ON 0xAF
++#define START_LINE_SET 0x40
++#define PAGE_ADDRESS_SET 0xB0
++#define COLUMN_ADDRESS_HIGH 0x10
++#define COLUMN_ADDRESS_LOW 0x00
++#define RESISTOR_RATIO_START 0x20
++
++#define NUM_OF_PAGES 8
++#define NUM_OF_COLUMNS 128
++
++#define WRITE_COMMAND(x) __raw_writeb((x), (sinfo)->mmio)
++#define READ_COMMAND __raw_readb((sinfo)->mmio)
++#define WRITE_DATA(x) __raw_writeb((x), (sinfo)->mmio + (0x10000))
++#define READ_DATA __raw_readb((sinfo)->mmio + (0x10000))
++
++
++/*
++ * s1d15605fb_resize_framebuffer
++ *
++ * Free allocated space if different. Allocate on new of changed.
++ * Returns -ENOMEM if the new framebuffer can not be allocated,
++ * zero on success.
++ */
++static int s1d15605fb_resize_framebuffer(struct s1d15605fb_info *sinfo)
++{
++ struct fb_info *info = sinfo->info;
++ struct fb_fix_screeninfo *fix = &info->fix;
++ struct fb_var_screeninfo *var = &info->var;
++ unsigned int new_size;
++ void *new_vaddr;
++
++ new_size = ((var->xres_virtual * var->yres_virtual * var->bits_per_pixel) / 8);
++
++ MSG("%s: x (%d) y (%d) bpp (%d): new size 0x%08x\n", __FUNCTION__,
++ var->xres_virtual, var->yres_virtual, var->bits_per_pixel, new_size);
++
++ if (new_size == fix->smem_len)
++ return 0;
++
++ if (fix->smem_len) {
++ kfree(info->screen_base);
++ }
++
++ new_vaddr = kmalloc(new_size, GFP_KERNEL);
++
++ if (!new_vaddr) {
++ fix->smem_len = 0;
++ return -ENOMEM;
++ }
++
++ info->screen_base = new_vaddr;
++ fix->smem_start = (unsigned)new_vaddr;
++ fix->smem_len = new_size;
++ fix->line_length = (var->xres_virtual * var->bits_per_pixel) / 8;
++
++ dev_info(info->device,
++ "%luKiB frame buffer at %08lx (mapped at %p)\n",
++ (unsigned long)info->fix.smem_len / 1024,
++ (unsigned long)info->fix.smem_start,
++ info->screen_base);
++
++ return 0;
++}
++
++
++/*
++ * The s1d15605 seems to be divided into eight 128 pixel wide pages (from top to
++ * bottom) each page seems to be eight pixels high, where these eight pixels are
++ * one byte
++ */
++static void s1d15605_update(struct fb_info *info)
++{
++ struct s1d15605fb_info *sinfo = info->par;
++ int page, i, row, colmask;
++ u8 retVal, *rowPtr;
++
++ WRITE_COMMAND(START_LINE_SET);
++ for (page = 0; page < NUM_OF_PAGES; ++page) {
++ WRITE_COMMAND(PAGE_ADDRESS_SET + page);
++ WRITE_COMMAND(COLUMN_ADDRESS_HIGH);
++ WRITE_COMMAND(COLUMN_ADDRESS_LOW);
++
++ for (i = 0; i < NUM_OF_COLUMNS; ++i)
++ {
++ /* point of opportunity: optimization */
++ colmask = (1 << (i & 0x7));
++ rowPtr = (u8*)(info->screen_base);
++ rowPtr += (VIDEOWIDTH_BYTES * 8 * page);
++ rowPtr += (i >> 3);
++ retVal = 0;
++ for (row = 0; row < 8; ++row)
++ {
++ retVal = (retVal >> 1) | (((*rowPtr) & colmask) ? 0x80 : 0);
++ rowPtr += VIDEOWIDTH_BYTES;
++ }
++ WRITE_DATA(retVal);
++ }
++ }
++
++ WRITE_COMMAND(DISPLAY_ON);
++}
++
++
++/*
++ * Setting the video mode has been split into two parts.
++ * First part, xxxfb_check_var, must not write anything
++ * to hardware, it should only verify and adjust var.
++ * This means it doesn't alter par but it does use hardware
++ * data from it to check this var.
++ */
++static int s1d15605_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
++{
++ /*
++ * Some very basic checks
++ */
++ if (!var->xres)
++ var->xres = 1;
++ if (!var->yres)
++ var->yres = 1;
++ if (var->xres > var->xres_virtual)
++ var->xres_virtual = var->xres;
++ if (var->yres > var->yres_virtual)
++ var->yres_virtual = var->yres;
++
++ if(var->bits_per_pixel > VIDEODEPTH)
++ return -EINVAL;
++
++ /*
++ * Memory limit
++ */
++ if (((var->yres_virtual * var->bits_per_pixel * var->yres_virtual) >> 3) >
++ ACTUALVIDEOMEMSIZE)
++ return -ENOMEM;
++
++ /*
++ * Now that we checked it we alter var. The reason being is that the video
++ * mode passed in might not work but slight changes to it might make it
++ * work. This way we let the user know what is acceptable.
++ */
++ switch (var->bits_per_pixel) {
++ case 1:
++ var->red.offset = var->green.offset = var->blue.offset = 0;
++ var->red.length = var->green.length = var->blue.length
++ = var->bits_per_pixel;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ var->xoffset = var->yoffset = 0;
++ var->red.msb_right = var->green.msb_right = var->blue.msb_right =
++ var->transp.msb_right = 0;
++
++ return 0;
++}
++
++
++/*
++ * This routine actually sets the video mode. It's in here where we
++ * the hardware state info->par and fix which can be affected by the
++ * change in par. For this driver it doesn't do much.
++ */
++static int s1d15605_set_par(struct fb_info *info)
++{
++ int ret;
++
++ MSG("%s:\n", __func__);
++ MSG(" * resolution: %ux%u (%ux%u virtual)\n",
++ info->var.xres, info->var.yres,
++ info->var.xres_virtual, info->var.yres_virtual);
++
++ ret = s1d15605fb_resize_framebuffer(info->par);
++
++ info->fix.visual = FB_VISUAL_MONO10;
++ return ret;
++}
++
++
++/*
++ * Set a single color register. The values supplied are already
++ * rounded down to the hardware's capabilities (according to the
++ * entries in the var structure). Return != 0 for invalid regno.
++ */
++static int s1d15605_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
++ u_int transp, struct fb_info *info)
++{
++ if (regno > 1) /* no. of hw registers - we only do mono now */
++ return 1;
++
++ return 0;
++}
++
++
++/*
++ * Currently, the routine will simply shut-off the backlight and prevent
++ * updates/refreshes. Modify according to application.
++ *
++ * 0 unblank, 1 blank, 2 no vsync, 3 no hsync, 4 off
++ */
++static int s1d15605_blank(int blank, struct fb_info *info)
++{
++#ifdef CONFIG_PMAC_BACKLIGHT
++ if (blank)
++ pmac_backlight->props.power = FB_BLANK_POWERDOWN;
++ else
++ pmac_backlight->props.power = FB_BLANK_UNBLANK;
++ backlight_update_status(pmac_backlight);
++#endif
++ return 1;
++}
++
++
++/*
++ * Pan or Wrap the Display
++ *
++ * This call looks only at xoffset, yoffset and the FB_VMODE_YWRAP flag
++ */
++/*
++static int s1d15605_pan_display(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ if (var->vmode & FB_VMODE_YWRAP) {
++ if (var->yoffset < 0
++ || var->yoffset >= info->var.yres_virtual
++ || var->xoffset)
++ return -EINVAL;
++ } else {
++ if (var->xoffset + var->xres > info->var.xres_virtual ||
++ var->yoffset + var->yres > info->var.yres_virtual)
++ return -EINVAL;
++ }
++ info->var.xoffset = var->xoffset;
++ info->var.yoffset = var->yoffset;
++ if (var->vmode & FB_VMODE_YWRAP)
++ info->var.vmode |= FB_VMODE_YWRAP;
++ else
++ info->var.vmode &= ~FB_VMODE_YWRAP;
++ return 0;
++}
++*/
++
++
++static void s1d15605_copyarea(struct fb_info *info, const struct fb_copyarea *region)
++{
++ cfb_copyarea(info, region);
++ s1d15605_update(info);
++}
++
++
++static void s1d15605_fillrect (struct fb_info *info, const struct fb_fillrect *rect)
++{
++ cfb_fillrect(info, rect);
++ s1d15605_update(info);
++}
++
++
++static void s1d15605_imageblit(struct fb_info *p, const struct fb_image *image)
++{
++ cfb_imageblit(p, image);
++ s1d15605_update(p);
++}
++
++
++/*
++ * Write the users data to our framebuffer, and then trigger a psuedo DMA
++ */
++static ssize_t s1d15605_write(struct file *file, const char *buf,
++ size_t count, loff_t *ppos)
++{
++ unsigned long p = *ppos;
++ struct inode *inode = file->f_dentry->d_inode;
++ int fbidx = iminor(inode);
++ struct fb_info *info = registered_fb[fbidx];
++ int err;
++
++ if (p > info->fix.smem_len)
++ return -ENOSPC;
++ if (count >= info->fix.smem_len)
++ count = info->fix.smem_len;
++ err = 0;
++ if (count + p > info->fix.smem_len) {
++ count = info->fix.smem_len - p;
++ err = -ENOSPC;
++ }
++ if (count) {
++ char *base_addr;
++
++ base_addr = info->screen_base;
++ count -= copy_from_user(base_addr+p, buf, count);
++ *ppos += count;
++ err = -EFAULT;
++ }
++
++ s1d15605_update(info);
++
++ if (count)
++ return count;
++
++ return err;
++}
++
++#ifdef USE_PRIVATE_VMA_FXS
++static void s1d15605_vma_open(struct vm_area_struct *vma)
++{
++ // FIXME - store stats in the device data via vm_private_data
++}
++
++
++static void s1d15605_vma_close(struct vm_area_struct *vma)
++{
++ // FIXME - store stats in the device data via vm_private_data
++}
++
++
++static struct page *s1d15605_vma_nopage(struct vm_area_struct *vma,
++ unsigned long address, int *type)
++{
++ struct page *page;
++ struct fb_info *info = vma->vm_private_data;
++
++ page = virt_to_page(info->screen_base);
++ get_page(page);
++
++ // FIXME - now someone has a link to our page, start periodically blitting
++ // latest updates to the actual device.
++
++ return page;
++}
++
++
++static struct vm_operations_struct s1d15605_vm_ops = {
++ .open = s1d15605_vma_open,
++ .close = s1d15605_vma_close,
++ .nopage = s1d15605_vma_nopage
++};
++
++
++/* We don't do much here - because we have special vm_ops */
++static int s1d15605_mmap(struct fb_info *info, struct vm_area_struct *vma)
++{
++ vma->vm_ops = &s1d15605_vm_ops;
++ vma->vm_flags |= VM_RESERVED;
++ vma->vm_private_data = info;
++ s1d15605_vma_open(vma);
++
++ return 0;
++}
++#endif /* USE_PRIVATE_VMA_FXS */
++
++
++static struct fb_ops s1d15605fb_ops = {
++ .owner = THIS_MODULE,
++ .fb_check_var = s1d15605_check_var,
++ .fb_set_par = s1d15605_set_par,
++ .fb_setcolreg = s1d15605_setcolreg,
++ .fb_blank = s1d15605_blank,
++// .fb_pan_display = s1d15605_pan_display,
++ .fb_fillrect = s1d15605_fillrect,
++ .fb_copyarea = s1d15605_copyarea,
++ .fb_imageblit = s1d15605_imageblit,
++ .fb_write = s1d15605_write,
++#ifdef USE_PRIVATE_VMA_FXS
++ .fb_mmap = s1d15605_mmap,
++#endif
++};
++
++
++static void s1d15605_device_init(struct s1d15605fb_info *sinfo) {
++
++ char value;
++
++ /* release the reset line by reading the device - proto hardware */
++ value = READ_COMMAND;
++ value = READ_COMMAND;
++
++#ifdef CONFIG_MACH_KB9200
++ /* new boards have dedicated reset line */
++ gpio_set_value(sinfo->reset_pin, 1);
++#endif
++
++ /* initialize the device within 5ms */
++ WRITE_COMMAND(RESET_DISPLAY);
++ WRITE_COMMAND(LCD_BIAS_1_9);
++ WRITE_COMMAND(ADC_SELECT_REVERSE);
++ WRITE_COMMAND(COMMON_OUTPUT_NORMAL);
++ WRITE_COMMAND(V5_RESISTOR_RATIO);
++ WRITE_COMMAND(ELECTRONIC_VOLUME_SET);
++ WRITE_COMMAND(ELECTRONIC_VOLUME_INIT);
++ WRITE_COMMAND(POWER_CONTROL_SET | VOLTAGE_REGULATOR | VOLTAGE_FOLLOWER | BOOSTER_CIRCUIT);
++ WRITE_COMMAND(DISPLAY_ON);
++
++ WRITE_COMMAND(RESISTOR_RATIO_START + 4);
++ WRITE_COMMAND(ELECTRONIC_VOLUME_SET);
++ WRITE_COMMAND(0x33);
++}
++
++
++static int __init s1d15605fb_probe(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct fb_info *info;
++ struct s1d15605fb_info *sinfo;
++ int ret;
++
++ MSG("%s\n", __func__);
++
++ if (!(info = framebuffer_alloc(sizeof(struct s1d15605fb_info), dev))) {
++ dev_err(dev, "Cannot allocate framebuffer struct\n");
++ return -ENOMEM;
++ }
++
++ sinfo = info->par;
++ sinfo->info = info;
++ sinfo->pdev = pdev;
++
++ if (pdev->num_resources < 2) {
++ dev_err(dev, "Resources unusable\n");
++ ret = -ENODEV;
++ goto free_info;
++ }
++
++ info->fbops = &s1d15605fb_ops;
++ strcpy(info->fix.id, pdev->name);
++
++ info->fix.mmio_start = pdev->resource[0].start;
++ info->fix.mmio_len = pdev->resource[0].end - pdev->resource[0].start + 1;
++ sinfo->reset_pin = pdev->resource[1].start;
++
++ ret = s1d15605fb_resize_framebuffer(sinfo);
++ if (ret < 0) {
++ dev_err(dev, "Cannot resize framebuffer: %d\n", ret);
++ goto free_fb;
++ }
++
++ if (!request_mem_region(info->fix.mmio_start,
++ info->fix.mmio_len, pdev->name)) {
++ ret = -EBUSY;
++ goto free_fb;
++ }
++
++ sinfo->mmio = ioremap(info->fix.mmio_start, info->fix.mmio_len);
++ if (!sinfo->mmio) {
++ dev_err(dev, "Cannot map LCD memory region\n");
++ goto release_mem;
++ }
++
++ s1d15605_device_init(sinfo);
++
++ ret = fb_find_mode(&info->var, info, NULL, NULL, 0, NULL, 1);
++
++ if (!ret || (ret == 4))
++ info->var = s1d15605_default;
++
++ info->fix = s1d15605_fix;
++ info->flags = FBINFO_FLAG_DEFAULT |
++/* FBINFO_HWACCEL_YPAN | */
++ FBINFO_HWACCEL_FILLRECT | FBINFO_HWACCEL_COPYAREA;
++
++ ret = register_framebuffer(info);
++ if (ret < 0) {
++ dev_err(dev, "Failed to register framebuffer device: %d\n", ret);
++ goto unmap_mmio;
++ }
++
++ dev_set_drvdata(dev, info);
++
++ memset(info->screen_base, 0, info->fix.smem_len);
++ info->var.activate |= FB_ACTIVATE_NOW;
++ ret = fb_set_var(info, &info->var);
++ if (ret) {
++ dev_warn(dev, "Unable to set display parameters\n");
++ }
++
++ info->var.activate &= ~(FB_ACTIVATE_FORCE | FB_ACTIVATE_NOW);
++
++ dev_dbg(dev, "%s SUCCESS\n", __func__);
++
++ dev_info(dev, "Driver $Revision: 1.1 $\n");
++
++ return 0;
++
++unmap_mmio:
++ iounmap(sinfo->mmio);
++release_mem:
++ release_mem_region(info->fix.mmio_start, info->fix.mmio_len);
++free_fb:
++ kfree(info->screen_base);
++
++free_info:
++ framebuffer_release(info);
++
++ dev_dbg(dev, "%s FAILED\n", __func__);
++ return ret;
++}
++
++
++static int __exit s1d15605fb_remove(struct platform_device *pdev)
++{
++ struct device *dev = &pdev->dev;
++ struct fb_info *info = dev_get_drvdata(dev);
++ struct s1d15605fb_info *sinfo = info->par;
++
++ if (!sinfo)
++ return 0;
++
++ unregister_framebuffer(info);
++
++ iounmap(sinfo->mmio);
++ release_mem_region(info->fix.mmio_start, info->fix.mmio_len);
++
++ kfree(info->screen_base);
++
++ dev_set_drvdata(dev, NULL);
++ framebuffer_release(info);
++ return 0;
++}
++
++
++static struct platform_driver s1d15605fb_driver = {
++ .remove = __exit_p(s1d15605fb_remove),
++ .driver = {
++ .name = "s1d15605fb",
++ .owner = THIS_MODULE,
++ },
++};
++
++
++static int __init s1d15605fb_init(void)
++{
++ return platform_driver_probe(&s1d15605fb_driver, s1d15605fb_probe);
++}
++
++
++static void __exit s1d15605fb_exit(void)
++{
++ platform_driver_unregister(&s1d15605fb_driver);
++}
++
++
++module_init(s1d15605fb_init);
++module_exit(s1d15605fb_exit);
++
++
++MODULE_AUTHOR("KwikByte");
++MODULE_DESCRIPTION("Epson S1D15605 LCD Controller framebuffer driver");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
+index 52dff40..acb4bbf 100644
+--- a/drivers/watchdog/Kconfig
++++ b/drivers/watchdog/Kconfig
+@@ -66,6 +66,14 @@ config AT91RM9200_WATCHDOG
+ Watchdog timer embedded into AT91RM9200 chips. This will reboot your
+ system when the timeout is reached.
+
++config AT91SAM9_WATCHDOG
++ tristate "AT91SAM9 watchdog"
++ depends on ARCH_AT91 && !ARCH_AT91RM9200
++ select WATCHDOG_NOWAYOUT
++ help
++ Watchdog timer embedded into AT91SAM9 chips. This will reboot your
++ system when the timeout is reached.
++
+ config 21285_WATCHDOG
+ tristate "DC21285 watchdog"
+ depends on FOOTBRIDGE
+diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
+index 87483cc..26babbc 100644
+--- a/drivers/watchdog/Makefile
++++ b/drivers/watchdog/Makefile
+@@ -26,6 +26,7 @@ obj-$(CONFIG_USBPCWATCHDOG) += pcwd_usb.o
+
+ # ARM Architecture
+ obj-$(CONFIG_AT91RM9200_WATCHDOG) += at91rm9200_wdt.o
++obj-$(CONFIG_AT91SAM9_WATCHDOG) += at91sam9_wdt.o
+ obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o
+ obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
+ obj-$(CONFIG_977_WATCHDOG) += wdt977.o
+diff --git a/include/asm-arm/arch-at91/at91_lcdc.h b/include/asm-arm/arch-at91/at91_lcdc.h
+deleted file mode 100644
+index ab040a4..0000000
+--- a/include/asm-arm/arch-at91/at91_lcdc.h
++++ /dev/null
+@@ -1,148 +0,0 @@
+-/*
+- * include/asm-arm/arch-at91/at91_lcdc.h
+- *
+- * LCD Controller (LCDC).
+- * Based on AT91SAM9261 datasheet revision E.
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- */
+-
+-#ifndef AT91_LCDC_H
+-#define AT91_LCDC_H
+-
+-#define AT91_LCDC_DMABADDR1 0x00 /* DMA Base Address Register 1 */
+-#define AT91_LCDC_DMABADDR2 0x04 /* DMA Base Address Register 2 */
+-#define AT91_LCDC_DMAFRMPT1 0x08 /* DMA Frame Pointer Register 1 */
+-#define AT91_LCDC_DMAFRMPT2 0x0c /* DMA Frame Pointer Register 2 */
+-#define AT91_LCDC_DMAFRMADD1 0x10 /* DMA Frame Address Register 1 */
+-#define AT91_LCDC_DMAFRMADD2 0x14 /* DMA Frame Address Register 2 */
+-
+-#define AT91_LCDC_DMAFRMCFG 0x18 /* DMA Frame Configuration Register */
+-#define AT91_LCDC_FRSIZE (0x7fffff << 0) /* Frame Size */
+-#define AT91_LCDC_BLENGTH (0x7f << 24) /* Burst Length */
+-
+-#define AT91_LCDC_DMACON 0x1c /* DMA Control Register */
+-#define AT91_LCDC_DMAEN (0x1 << 0) /* DMA Enable */
+-#define AT91_LCDC_DMARST (0x1 << 1) /* DMA Reset */
+-#define AT91_LCDC_DMABUSY (0x1 << 2) /* DMA Busy */
+-
+-#define AT91_LCDC_LCDCON1 0x0800 /* LCD Control Register 1 */
+-#define AT91_LCDC_BYPASS (1 << 0) /* Bypass lcd_dotck divider */
+-#define AT91_LCDC_CLKVAL (0x1ff << 12) /* Clock Divider */
+-#define AT91_LCDC_LINCNT (0x7ff << 21) /* Line Counter */
+-
+-#define AT91_LCDC_LCDCON2 0x0804 /* LCD Control Register 2 */
+-#define AT91_LCDC_DISTYPE (3 << 0) /* Display Type */
+-#define AT91_LCDC_DISTYPE_STNMONO (0 << 0)
+-#define AT91_LCDC_DISTYPE_STNCOLOR (1 << 0)
+-#define AT91_LCDC_DISTYPE_TFT (2 << 0)
+-#define AT91_LCDC_SCANMOD (1 << 2) /* Scan Mode */
+-#define AT91_LCDC_SCANMOD_SINGLE (0 << 2)
+-#define AT91_LCDC_SCANMOD_DUAL (1 << 2)
+-#define AT91_LCDC_IFWIDTH (3 << 3) /*Interface Width */
+-#define AT91_LCDC_IFWIDTH_4 (0 << 3)
+-#define AT91_LCDC_IFWIDTH_8 (1 << 3)
+-#define AT91_LCDC_IFWIDTH_16 (2 << 3)
+-#define AT91_LCDC_PIXELSIZE (7 << 5) /* Bits per pixel */
+-#define AT91_LCDC_PIXELSIZE_1 (0 << 5)
+-#define AT91_LCDC_PIXELSIZE_2 (1 << 5)
+-#define AT91_LCDC_PIXELSIZE_4 (2 << 5)
+-#define AT91_LCDC_PIXELSIZE_8 (3 << 5)
+-#define AT91_LCDC_PIXELSIZE_16 (4 << 5)
+-#define AT91_LCDC_PIXELSIZE_24 (5 << 5)
+-#define AT91_LCDC_INVVD (1 << 8) /* LCD Data polarity */
+-#define AT91_LCDC_INVVD_NORMAL (0 << 8)
+-#define AT91_LCDC_INVVD_INVERTED (1 << 8)
+-#define AT91_LCDC_INVFRAME (1 << 9 ) /* LCD VSync polarity */
+-#define AT91_LCDC_INVFRAME_NORMAL (0 << 9)
+-#define AT91_LCDC_INVFRAME_INVERTED (1 << 9)
+-#define AT91_LCDC_INVLINE (1 << 10) /* LCD HSync polarity */
+-#define AT91_LCDC_INVLINE_NORMAL (0 << 10)
+-#define AT91_LCDC_INVLINE_INVERTED (1 << 10)
+-#define AT91_LCDC_INVCLK (1 << 11) /* LCD dotclk polarity */
+-#define AT91_LCDC_INVCLK_NORMAL (0 << 11)
+-#define AT91_LCDC_INVCLK_INVERTED (1 << 11)
+-#define AT91_LCDC_INVDVAL (1 << 12) /* LCD dval polarity */
+-#define AT91_LCDC_INVDVAL_NORMAL (0 << 12)
+-#define AT91_LCDC_INVDVAL_INVERTED (1 << 12)
+-#define AT91_LCDC_CLKMOD (1 << 15) /* LCD dotclk mode */
+-#define AT91_LCDC_CLKMOD_ACTIVEDISPLAY (0 << 15)
+-#define AT91_LCDC_CLKMOD_ALWAYSACTIVE (1 << 15)
+-#define AT91_LCDC_MEMOR (1 << 31) /* Memory Ordering Format */
+-#define AT91_LCDC_MEMOR_BIG (0 << 31)
+-#define AT91_LCDC_MEMOR_LITTLE (1 << 31)
+-
+-#define AT91_LCDC_TIM1 0x0808 /* LCD Timing Register 1 */
+-#define AT91_LCDC_VFP (0xff << 0) /* Vertical Front Porch */
+-#define AT91_LCDC_VBP (0xff << 8) /* Vertical Back Porch */
+-#define AT91_LCDC_VPW (0x3f << 16) /* Vertical Synchronization Pulse Width */
+-#define AT91_LCDC_VHDLY (0xf << 24) /* Vertical to Horizontal Delay */
+-
+-#define AT91_LCDC_TIM2 0x080c /* LCD Timing Register 2 */
+-#define AT91_LCDC_HBP (0xff << 0) /* Horizontal Back Porch */
+-#define AT91_LCDC_HPW (0x3f << 8) /* Horizontal Synchronization Pulse Width */
+-#define AT91_LCDC_HFP (0x7ff << 21) /* Horizontal Front Porch */
+-
+-#define AT91_LCDC_LCDFRMCFG 0x0810 /* LCD Frame Configuration Register */
+-#define AT91_LCDC_LINEVAL (0x7ff << 0) /* Vertical Size of LCD Module */
+-#define AT91_LCDC_HOZVAL (0x7ff << 21) /* Horizontal Size of LCD Module */
+-
+-#define AT91_LCDC_FIFO 0x0814 /* LCD FIFO Register */
+-#define AT91_LCDC_FIFOTH (0xffff) /* FIFO Threshold */
+-
+-#define AT91_LCDC_DP1_2 0x081c /* Dithering Pattern DP1_2 Register */
+-#define AT91_LCDC_DP4_7 0x0820 /* Dithering Pattern DP4_7 Register */
+-#define AT91_LCDC_DP3_5 0x0824 /* Dithering Pattern DP3_5 Register */
+-#define AT91_LCDC_DP2_3 0x0828 /* Dithering Pattern DP2_3 Register */
+-#define AT91_LCDC_DP5_7 0x082c /* Dithering Pattern DP5_7 Register */
+-#define AT91_LCDC_DP3_4 0x0830 /* Dithering Pattern DP3_4 Register */
+-#define AT91_LCDC_DP4_5 0x0834 /* Dithering Pattern DP4_5 Register */
+-#define AT91_LCDC_DP6_7 0x0838 /* Dithering Pattern DP6_7 Register */
+-#define AT91_LCDC_DP1_2_VAL (0xff)
+-#define AT91_LCDC_DP4_7_VAL (0xfffffff)
+-#define AT91_LCDC_DP3_5_VAL (0xfffff)
+-#define AT91_LCDC_DP2_3_VAL (0xfff)
+-#define AT91_LCDC_DP5_7_VAL (0xfffffff)
+-#define AT91_LCDC_DP3_4_VAL (0xffff)
+-#define AT91_LCDC_DP4_5_VAL (0xfffff)
+-#define AT91_LCDC_DP6_7_VAL (0xfffffff)
+-
+-#define AT91_LCDC_PWRCON 0x083c /* Power Control Register */
+-#define AT91_LCDC_PWR (1 << 0) /* LCD Module Power Control */
+-#define AT91_LCDC_GUARDT (0x7f << 1) /* Delay in Frame Period */
+-#define AT91_LCDC_BUSY (1 << 31) /* LCD Busy */
+-
+-#define AT91_LCDC_CONTRAST_CTR 0x0840 /* Contrast Control Register */
+-#define AT91_LCDC_PS (3 << 0) /* Contrast Counter Prescaler */
+-#define AT91_LCDC_PS_DIV1 (0 << 0)
+-#define AT91_LCDC_PS_DIV2 (1 << 0)
+-#define AT91_LCDC_PS_DIV4 (2 << 0)
+-#define AT91_LCDC_PS_DIV8 (3 << 0)
+-#define AT91_LCDC_POL (1 << 2) /* Polarity of output Pulse */
+-#define AT91_LCDC_POL_NEGATIVE (0 << 2)
+-#define AT91_LCDC_POL_POSITIVE (1 << 2)
+-#define AT91_LCDC_ENA (1 << 3) /* PWM generator Control */
+-#define AT91_LCDC_ENA_PWMDISABLE (0 << 3)
+-#define AT91_LCDC_ENA_PWMENABLE (1 << 3)
+-
+-#define AT91_LCDC_CONTRAST_VAL 0x0844 /* Contrast Value Register */
+-#define AT91_LCDC_CVAL (0xff) /* PWM compare value */
+-
+-#define AT91_LCDC_IER 0x0848 /* Interrupt Enable Register */
+-#define AT91_LCDC_IDR 0x084c /* Interrupt Disable Register */
+-#define AT91_LCDC_IMR 0x0850 /* Interrupt Mask Register */
+-#define AT91_LCDC_ISR 0x0854 /* Interrupt Enable Register */
+-#define AT91_LCDC_ICR 0x0858 /* Interrupt Clear Register */
+-#define AT91_LCDC_LNI (1 << 0) /* Line Interrupt */
+-#define AT91_LCDC_LSTLNI (1 << 1) /* Last Line Interrupt */
+-#define AT91_LCDC_EOFI (1 << 2) /* DMA End Of Frame Interrupt */
+-#define AT91_LCDC_UFLWI (1 << 4) /* FIFO Underflow Interrupt */
+-#define AT91_LCDC_OWRI (1 << 5) /* FIFO Overwrite Interrupt */
+-#define AT91_LCDC_MERI (1 << 6) /* DMA Memory Error Interrupt */
+-
+-#define AT91_LCDC_LUT_(n) (0x0c00 + ((n)*4)) /* Palette Entry 0..255 */
+-
+-#endif
+diff --git a/include/asm-arm/arch-at91/at91_pmc.h b/include/asm-arm/arch-at91/at91_pmc.h
+index 33ff5b6..0469e71 100644
+--- a/include/asm-arm/arch-at91/at91_pmc.h
++++ b/include/asm-arm/arch-at91/at91_pmc.h
+@@ -37,7 +37,9 @@
+ #define AT91_PMC_PCDR (AT91_PMC + 0x14) /* Peripheral Clock Disable Register */
+ #define AT91_PMC_PCSR (AT91_PMC + 0x18) /* Peripheral Clock Status Register */
+
+-#define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register */
++#define AT91_CKGR_UCKR (AT91_PMC + 0x1C) /* UTMI Clock Register [SAM9RL only] */
++
++#define AT91_CKGR_MOR (AT91_PMC + 0x20) /* Main Oscillator Register [not on SAM9RL] */
+ #define AT91_PMC_MOSCEN (1 << 0) /* Main Oscillator Enable */
+ #define AT91_PMC_OSCBYPASS (1 << 1) /* Oscillator Bypass [AT91SAM926x only] */
+ #define AT91_PMC_OSCOUNT (0xff << 8) /* Main Oscillator Start-up Time */
+diff --git a/include/asm-arm/arch-at91/at91_twi.h b/include/asm-arm/arch-at91/at91_twi.h
+index ca9a907..f9f2e3c 100644
+--- a/include/asm-arm/arch-at91/at91_twi.h
++++ b/include/asm-arm/arch-at91/at91_twi.h
+@@ -21,6 +21,8 @@
+ #define AT91_TWI_STOP (1 << 1) /* Send a Stop Condition */
+ #define AT91_TWI_MSEN (1 << 2) /* Master Transfer Enable */
+ #define AT91_TWI_MSDIS (1 << 3) /* Master Transfer Disable */
++#define AT91_TWI_SVEN (1 << 4) /* Slave Transfer Enable [SAM9260 only] */
++#define AT91_TWI_SVDIS (1 << 5) /* Slave Transfer Disable [SAM9260 only] */
+ #define AT91_TWI_SWRST (1 << 7) /* Software Reset */
+
+ #define AT91_TWI_MMR 0x04 /* Master Mode Register */
+@@ -32,6 +34,9 @@
+ #define AT91_TWI_MREAD (1 << 12) /* Master Read Direction */
+ #define AT91_TWI_DADR (0x7f << 16) /* Device Address */
+
++#define AT91_TWI_SMR 0x08 /* Slave Mode Register [SAM9260 only] */
++#define AT91_TWI_SADR (0x7f << 16) /* Slave Address */
++
+ #define AT91_TWI_IADR 0x0c /* Internal Address Register */
+
+ #define AT91_TWI_CWGR 0x10 /* Clock Waveform Generator Register */
+@@ -43,9 +48,15 @@
+ #define AT91_TWI_TXCOMP (1 << 0) /* Transmission Complete */
+ #define AT91_TWI_RXRDY (1 << 1) /* Receive Holding Register Ready */
+ #define AT91_TWI_TXRDY (1 << 2) /* Transmit Holding Register Ready */
++#define AT91_TWI_SVREAD (1 << 3) /* Slave Read [SAM9260 only] */
++#define AT91_TWI_SVACC (1 << 4) /* Slave Access [SAM9260 only] */
++#define AT91_TWI_GACC (1 << 5) /* General Call Access [SAM9260 only] */
+ #define AT91_TWI_OVRE (1 << 6) /* Overrun Error [AT91RM9200 only] */
+ #define AT91_TWI_UNRE (1 << 7) /* Underrun Error [AT91RM9200 only] */
+ #define AT91_TWI_NACK (1 << 8) /* Not Acknowledged */
++#define AT91_TWI_ARBLST (1 << 9) /* Arbitration Lost [SAM9260 only] */
++#define AT91_TWI_SCLWS (1 << 10) /* Clock Wait State [SAM9260 only] */
++#define AT91_TWI_EOSACC (1 << 11) /* End of Slave Address [SAM9260 only] */
+
+ #define AT91_TWI_IER 0x24 /* Interrupt Enable Register */
+ #define AT91_TWI_IDR 0x28 /* Interrupt Disable Register */
+diff --git a/include/asm-arm/arch-at91/at91sam9260_matrix.h b/include/asm-arm/arch-at91/at91sam9260_matrix.h
+index aacb1e9..a8e9fec 100644
+--- a/include/asm-arm/arch-at91/at91sam9260_matrix.h
++++ b/include/asm-arm/arch-at91/at91sam9260_matrix.h
+@@ -67,7 +67,7 @@
+ #define AT91_MATRIX_CS4A (1 << 4) /* Chip Select 4 Assignment */
+ #define AT91_MATRIX_CS4A_SMC (0 << 4)
+ #define AT91_MATRIX_CS4A_SMC_CF1 (1 << 4)
+-#define AT91_MATRIX_CS5A (1 << 5 ) /* Chip Select 5 Assignment */
++#define AT91_MATRIX_CS5A (1 << 5) /* Chip Select 5 Assignment */
+ #define AT91_MATRIX_CS5A_SMC (0 << 5)
+ #define AT91_MATRIX_CS5A_SMC_CF2 (1 << 5)
+ #define AT91_MATRIX_DBPUC (1 << 8) /* Data Bus Pull-up Configuration */
+diff --git a/include/asm-arm/arch-at91/board.h b/include/asm-arm/arch-at91/board.h
+index 7905496..9de42e9 100644
+--- a/include/asm-arm/arch-at91/board.h
++++ b/include/asm-arm/arch-at91/board.h
+@@ -35,6 +35,7 @@
+ #include <linux/device.h>
+ #include <linux/i2c.h>
+ #include <linux/spi/spi.h>
++#include <linux/leds.h>
+
+ /* USB Device */
+ struct at91_udc_data {
+@@ -126,6 +127,9 @@ struct atmel_ac97_data {
+ };
+ extern void __init at91_add_device_ac97(struct atmel_ac97_data *data);
+
++ /* ISI */
++extern void __init at91_add_device_isi(void);
++
+ /* LEDs */
+ extern u8 at91_leds_cpu;
+ extern u8 at91_leds_timer;
+@@ -133,5 +137,6 @@ extern void __init at91_init_leds(u8 cpu_led, u8 timer_led);
+
+ /* FIXME: this needs a better location, but gets stuff building again */
+ extern int at91_suspend_entering_slow_clock(void);
++extern void __init at91_gpio_leds(struct gpio_led *leds, int nr);
+
+ #endif
+diff --git a/include/asm-arm/arch-at91/entry-macro.S b/include/asm-arm/arch-at91/entry-macro.S
+index cc1d850..1005eee 100644
+--- a/include/asm-arm/arch-at91/entry-macro.S
++++ b/include/asm-arm/arch-at91/entry-macro.S
+@@ -17,13 +17,13 @@
+ .endm
+
+ .macro get_irqnr_preamble, base, tmp
++ ldr \base, =(AT91_VA_BASE_SYS + AT91_AIC) @ base virtual address of AIC peripheral
+ .endm
+
+ .macro arch_ret_to_user, tmp1, tmp2
+ .endm
+
+ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
+- ldr \base, =(AT91_VA_BASE_SYS + AT91_AIC) @ base virtual address of AIC peripheral
+ ldr \irqnr, [\base, #(AT91_AIC_IVR - AT91_AIC)] @ read IRQ vector register: de-asserts nIRQ to processor (and clears interrupt)
+ ldr \irqstat, [\base, #(AT91_AIC_ISR - AT91_AIC)] @ read interrupt source number
+ teq \irqstat, #0 @ ISR is 0 when no current interrupt, or spurious interrupt
+diff --git a/include/asm-arm/arch-at91/ics1523.h b/include/asm-arm/arch-at91/ics1523.h
+new file mode 100644
+index 0000000..f281f5d
+--- /dev/null
++++ b/include/asm-arm/arch-at91/ics1523.h
+@@ -0,0 +1,154 @@
++//*----------------------------------------------------------------------------
++//* ATMEL Microcontroller Software Support - ROUSSET -
++//*----------------------------------------------------------------------------
++//* The software is delivered "AS IS" without warranty or condition of any
++//* kind, either express, implied or statutory. This includes without
++//* limitation any warranty or condition with respect to merchantability or
++//* fitness for any particular purpose, or against the infringements of
++//* intellectual property rights of others.
++//*----------------------------------------------------------------------------
++//* File Name : ics1523.h
++//* Object : Clock Generator Prototyping File.
++//*
++//* 1.0 08/28/02 ED : Creation
++//* 1.2 13/01/03 FB : Update on lib V3
++//*----------------------------------------------------------------------------
++
++#ifndef ics1523_h
++#define ics1523_h
++
++/*-------------------------------------------*/
++/* ICS1523 TWI Serial Clock Definition */
++/*-------------------------------------------*/
++
++#define ICS_MIN_CLOCK 100 /* Min Frequency Access Clock KHz */
++#define ICS_MAX_CLOCK 400 /* Max Frequency Access Clock KHz */
++#define ICS_TRANSFER_RATE ICS_MAX_CLOCK /* Transfer speed to apply */
++
++#define ICS_WRITE_CLK_PNB 30 /* TWCK Clock Periods required to write */
++#define ICS_READ_CLK_PNB 40 /* TWCK Clock Periods required to read */
++
++/*-------------------------------------------*/
++/* ICS1523 Write Operation Definition */
++/*-------------------------------------------*/
++
++#define ICS1523_ACCESS_OK 0 /* OK */
++#define ICS1523_ACCESS_ERROR -1 /* NOK */
++
++/*-------------------------------------------*/
++/* ICS1523 Device Addresses Definition */
++/*-------------------------------------------*/
++
++#define ICS_ADDR 0x26 /* Device Address */
++
++/*--------------------------------------------------*/
++/* ICS1523 Registers Internal Addresses Definition */
++/*--------------------------------------------------*/
++
++#define ICS_ICR 0x0 /* Input Control Register */
++#define ICS_LCR 0x1 /* Loop Control Register */
++#define ICS_FD0 0x2 /* PLL FeedBack Divider LSBs */
++#define ICS_FD1 0x3 /* PLL FeedBack Divider MSBs */
++#define ICS_DPAO 0x4 /* Dynamic Phase Aligner Offset */
++#define ICS_DPAC 0x5 /* Dynamic Phase Aligner Resolution */
++#define ICS_OE 0x6 /* Output Enables Register */
++#define ICS_OD 0x7 /* Osc Divider Register */
++#define ICS_SWRST 0x8 /* DPA & PLL Reset Register */
++#define ICS_VID 0x10 /* Chip Version Register */
++#define ICS_RID 0x11 /* Chip Revision Register */
++#define ICS_SR 0x12 /* Status Register */
++
++/*------------------------------------------------------*/
++/* ICS1523 Input Control Register Bits Definition */
++/*------------------------------------------------------*/
++
++#define ICS_PDEN 0x1 /* Phase Detector Enable */
++#define ICS_PDPOL 0x2 /* Phase Detector Enable Polarity */
++#define ICS_REFPOL 0x4 /* External Reference Polarity */
++#define ICS_FBKPOL 0x8 /* External Feedback Polarity */
++#define ICS_FBKSEL 0x10 /* External Feedback Select */
++#define ICS_FUNCSEL 0x20 /* Function Out Select */
++#define ICS_ENPLS 0x40 /* Enable PLL Lock/Ref Status Output */
++#define ICS_ENDLS 0x80 /* Enable DPA Lock/Ref Status Output */
++
++/*-----------------------------------------------------*/
++/* ICS1523 Loop Control Register Bits Definition */
++/*-----------------------------------------------------*/
++
++#define ICS_PFD 0x7 /* Phase Detector Gain */
++#define ICS_PSD 0x30 /* Post-Scaler Divider */
++
++/*----------------------------------------------------*/
++/* ICS1523 PLL FeedBack Divider LSBs Definition */
++/*----------------------------------------------------*/
++
++#define ICS_FBDL 0xFF /* PLL FeedBack Divider LSBs */
++
++/*----------------------------------------------------*/
++/* ICS1523 PLL FeedBack Divider MSBs Definition */
++/*----------------------------------------------------*/
++
++#define ICS_FBDM 0xF /* PLL FeedBack Divider MSBs */
++
++/*------------------------------------------------------------*/
++/* ICS1523 Dynamic Phase Aligner Offset Bits Definition */
++/*------------------------------------------------------------*/
++
++#define ICS_DPAOS 0x2F /* Dynamic Phase Aligner Offset */
++#define ICS_FILSEL 0x80 /* Loop Filter Select */
++
++/*----------------------------------------------------------------*/
++/* ICS1523 Dynamic Phase Aligner Resolution Bits Definition */
++/*----------------------------------------------------------------*/
++
++#define ICS_DPARES 0x3 /* Dynamic Phase Aligner Resolution */
++#define ICS_MMREV 0xFC /* Metal Mask Revision Number */
++
++/*-------------------------------------------------------*/
++/* ICS1523 Output Enables Register Bits Definition */
++/*-------------------------------------------------------*/
++
++#define ICS_OEPCK 0x1 /* Output Enable for PECL PCLK Outputs */
++#define ICS_OETCK 0x2 /* Output Enable for STTL CLK Output */
++#define ICS_OEP2 0x4 /* Output Enable for PECL CLK/2 Outputs */
++#define ICS_OET2 0x8 /* Output Enable for STTL CLK/2 Output */
++#define ICS_OEF 0x10 /* Output Enable for STTL FUNC Output */
++#define ICS_CLK2INV 0x20 /* CLK/2 Invert */
++#define ICS_OSCL 0xC0 /* SSTL Clock Scaler */
++
++/*----------------------------------------------------*/
++/* ICS1523 Osc Divider Register Bits Definition */
++/*----------------------------------------------------*/
++
++#define ICS_OSCDIV 0x7F /* Oscillator Divider Modulus */
++#define ICS_INSEL 0x80 /* Input Select */
++
++/*---------------------------------------------------*/
++/* ICS1523 DPA & PLL Reset Register Definition */
++/*---------------------------------------------------*/
++
++#define ICS_DPAR 0x0A /* DPA Reset Command */
++#define ICS_PLLR 0x50 /* PLL Reset Command */
++
++/*------------------------------------------------*/
++/* ICS1523 Chip Version Register Definition */
++/*------------------------------------------------*/
++
++#define ICS_CHIPV 0xFF /* Chip Version */
++
++/*-------------------------------------------------*/
++/* ICS1523 Chip Revision Register Definition */
++/*-------------------------------------------------*/
++
++#define ICS_CHIPR 0xFF /* Chip Revision */
++
++/*------------------------------------------*/
++/* ICS1523 Status Register Definition */
++/*------------------------------------------*/
++
++#define ICS_DPALOCK 0x1 /* DPA Lock Status */
++#define ICS_PLLLOCK 0x2 /* PLL Lock Status */
++
++int at91_ics1523_init(void);
++
++#endif /* ics1523_h */
+diff --git a/include/asm-arm/arch-at91/spi.h b/include/asm-arm/arch-at91/spi.h
+new file mode 100644
+index 0000000..1385466
+--- /dev/null
++++ b/include/asm-arm/arch-at91/spi.h
+@@ -0,0 +1,54 @@
++/*
++ * Serial Peripheral Interface (SPI) driver for the Atmel AT91RM9200
++ *
++ * (c) SAN People (Pty) Ltd
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ */
++
++#ifndef AT91_LEGACY_SPI_H
++#define AT91_LEGACY_SPI_H
++
++#define SPI_MAJOR 153 /* registered device number */
++
++#define DEFAULT_SPI_CLK 6000000
++
++
++/* Maximum number of buffers in a single SPI transfer.
++ * DataFlash uses maximum of 2
++ * spidev interface supports up to 8.
++ */
++#define MAX_SPI_TRANSFERS 8
++#define NR_SPI_DEVICES 4 /* number of devices on SPI bus */
++
++/*
++ * Describes the buffers for a SPI transfer.
++ * A transmit & receive buffer must be specified for each transfer
++ */
++struct spi_transfer_list {
++ void* tx[MAX_SPI_TRANSFERS]; /* transmit */
++ int txlen[MAX_SPI_TRANSFERS];
++ void* rx[MAX_SPI_TRANSFERS]; /* receive */
++ int rxlen[MAX_SPI_TRANSFERS];
++ int nr_transfers; /* number of transfers */
++ int curr; /* current transfer */
++};
++
++struct spi_local {
++ unsigned int pcs; /* Peripheral Chip Select value */
++
++ struct spi_transfer_list *xfers; /* current transfer list */
++ dma_addr_t tx, rx; /* DMA address for current transfer */
++ dma_addr_t txnext, rxnext; /* DMA address for next transfer */
++};
++
++
++/* Exported functions */
++extern void spi_access_bus(short device);
++extern void spi_release_bus(short device);
++extern int spi_transfer(struct spi_transfer_list* list);
++
++#endif
+diff --git a/include/asm-arm/arch-ks8695/devices.h b/include/asm-arm/arch-ks8695/devices.h
+index b0364dc..7ad2c65 100644
+--- a/include/asm-arm/arch-ks8695/devices.h
++++ b/include/asm-arm/arch-ks8695/devices.h
+@@ -18,6 +18,11 @@ extern void __init ks8695_add_device_wan(void);
+ extern void __init ks8695_add_device_lan(void);
+ extern void __init ks8695_add_device_hpna(void);
+
++ /* LEDs */
++extern short ks8695_leds_cpu;
++extern short ks8695_leds_timer;
++extern void __init ks8695_init_leds(u8 cpu_led, u8 timer_led);
++
+ /* PCI */
+ #define KS8695_MODE_PCI 0
+ #define KS8695_MODE_MINIPCI 1
+diff --git a/include/asm-arm/arch-ks8695/regs-gpio.h b/include/asm-arm/arch-ks8695/regs-gpio.h
+index 57fcf9f..6b95d77 100644
+--- a/include/asm-arm/arch-ks8695/regs-gpio.h
++++ b/include/asm-arm/arch-ks8695/regs-gpio.h
+@@ -49,5 +49,7 @@
+ #define IOPC_TM_FALLING (4) /* Falling Edge Detection */
+ #define IOPC_TM_EDGE (6) /* Both Edge Detection */
+
++/* Port Data Register */
++#define IOPD_(x) (1 << (x)) /* Signal Level of GPIO Pin x */
+
+ #endif
+diff --git a/include/linux/clk.h b/include/linux/clk.h
+index 5ca8c6f..1a31d7a 100644
+--- a/include/linux/clk.h
++++ b/include/linux/clk.h
+@@ -121,4 +121,24 @@ int clk_set_parent(struct clk *clk, struct clk *parent);
+ */
+ struct clk *clk_get_parent(struct clk *clk);
+
++/**
++ * clk_must_disable - report whether a clock's users must disable it
++ * @clk: one node in the clock tree
++ *
++ * This routine returns true only if the upcoming system state requires
++ * disabling the specified clock.
++ *
++ * It's common for platform power states to constrain certain clocks (and
++ * their descendants) to be unavailable, while other states allow that
++ * clock to be active. A platform's power states often include an "all on"
++ * mode; system wide sleep states like "standby" or "suspend-to-RAM"; and
++ * operating states which sacrifice functionality for lower power usage.
++ *
++ * The constraint value is commonly tested in device driver suspend(), to
++ * leave clocks active if they are needed for features like wakeup events.
++ * On platforms that support reduced functionality operating states, the
++ * constraint may also need to be tested during resume() and probe() calls.
++ */
++int clk_must_disable(struct clk *clk);
++
+ #endif
+diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h
+index 88c8140..32985d9 100644
+--- a/include/linux/i2c-id.h
++++ b/include/linux/i2c-id.h
+@@ -207,6 +207,7 @@
+
+ /* --- PCA 9564 based algorithms */
+ #define I2C_HW_A_ISA 0x1a0000 /* generic ISA Bus interface card */
++#define I2C_HW_A_PLAT 0x1a0001 /* generic platform_bus interface */
+
+ /* --- ACPI Embedded controller algorithms */
+ #define I2C_HW_ACPI_EC 0x1f0000
+diff --git a/sound/soc/at91/eti_b1_wm8731.c b/sound/soc/at91/eti_b1_wm8731.c
+index 820a676..8da5884 100644
+--- a/sound/soc/at91/eti_b1_wm8731.c
++++ b/sound/soc/at91/eti_b1_wm8731.c
+@@ -34,8 +34,7 @@
+ #include <sound/soc.h>
+ #include <sound/soc-dapm.h>
+
+-#include <asm/arch/hardware.h>
+-#include <asm/arch/at91_pio.h>
++#include <asm/hardware.h>
+ #include <asm/arch/gpio.h>
+
+ #include "../codecs/wm8731.h"
+@@ -48,13 +47,6 @@
+ #define DBG(x...)
+ #endif
+
+-#define AT91_PIO_TF1 (1 << (AT91_PIN_PB6 - PIN_BASE) % 32)
+-#define AT91_PIO_TK1 (1 << (AT91_PIN_PB7 - PIN_BASE) % 32)
+-#define AT91_PIO_TD1 (1 << (AT91_PIN_PB8 - PIN_BASE) % 32)
+-#define AT91_PIO_RD1 (1 << (AT91_PIN_PB9 - PIN_BASE) % 32)
+-#define AT91_PIO_RK1 (1 << (AT91_PIN_PB10 - PIN_BASE) % 32)
+-#define AT91_PIO_RF1 (1 << (AT91_PIN_PB11 - PIN_BASE) % 32)
+-
+ static struct clk *pck1_clk;
+ static struct clk *pllb_clk;
+
+@@ -277,7 +269,6 @@ static struct platform_device *eti_b1_snd_device;
+ static int __init eti_b1_init(void)
+ {
+ int ret;
+- u32 ssc_pio_lines;
+ struct at91_ssc_periph *ssc = eti_b1_dai.cpu_dai->private_data;
+
+ if (!request_mem_region(AT91RM9200_BASE_SSC1, SZ_16K, "soc-audio")) {
+@@ -311,19 +302,12 @@ static int __init eti_b1_init(void)
+ goto fail_io_unmap;
+ }
+
+- ssc_pio_lines = AT91_PIO_TF1 | AT91_PIO_TK1 | AT91_PIO_TD1
+- | AT91_PIO_RD1 /* | AT91_PIO_RK1 */ | AT91_PIO_RF1;
+-
+- /* Reset all PIO registers and assign lines to peripheral A */
+- at91_sys_write(AT91_PIOB + PIO_PDR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_ODR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_IFDR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_CODR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_IDR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_MDDR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_PUDR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_ASR, ssc_pio_lines);
+- at91_sys_write(AT91_PIOB + PIO_OWDR, ssc_pio_lines);
++ at91_set_A_periph(AT91_PIN_PB6, 0); /* TF1 */
++ at91_set_A_periph(AT91_PIN_PB7, 0); /* TK1 */
++ at91_set_A_periph(AT91_PIN_PB8, 0); /* TD1 */
++ at91_set_A_periph(AT91_PIN_PB9, 0); /* RD1 */
++/* at91_set_A_periph(AT91_PIN_PB10, 0);*/ /* RK1 */
++ at91_set_A_periph(AT91_PIN_PB11, 0); /* RF1 */
+
+ /*
+ * Set PCK1 parent to PLLB and its rate to 12 Mhz.
+--
+1.5.2.5
+
diff --git a/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0002-at91sam9260ek_defconfig.patch b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0002-at91sam9260ek_defconfig.patch
new file mode 100644
index 0000000000..01daa864f3
--- /dev/null
+++ b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/0002-at91sam9260ek_defconfig.patch
@@ -0,0 +1,959 @@
+From c4169c29f29a36a0a1d5d9e5a1d36ea7a3ecd506 Mon Sep 17 00:00:00 2001
+From: Cliff Brake <cbrake@happy.(none)>
+Date: Fri, 21 Dec 2007 17:47:21 -0500
+Subject: [PATCH] at91sam9260ek_defconfig
+
+---
+ arch/arm/configs/at91sam9260ek_defconfig | 487 +++++++++++++++---------------
+ 1 files changed, 240 insertions(+), 247 deletions(-)
+
+diff --git a/arch/arm/configs/at91sam9260ek_defconfig b/arch/arm/configs/at91sam9260ek_defconfig
+index 9a8890a..cd6d400 100644
+--- a/arch/arm/configs/at91sam9260ek_defconfig
++++ b/arch/arm/configs/at91sam9260ek_defconfig
+@@ -1,15 +1,18 @@
+ #
+ # Automatically generated make config: don't edit
+-# Linux kernel version: 2.6.21
+-# Mon May 7 11:42:02 2007
++# Linux kernel version: 2.6.24-rc6
++# Sat Dec 22 08:12:09 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
+@@ -23,27 +26,28 @@ CONFIG_VECTORS_BASE=0xffff0000
+ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+ #
+-# Code maturity level options
++# General setup
+ #
+ CONFIG_EXPERIMENTAL=y
+ CONFIG_BROKEN_ON_SMP=y
+ CONFIG_INIT_ENV_ARG_LIMIT=32
+-
+-#
+-# General setup
+-#
+ CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ # CONFIG_SWAP is not set
+ CONFIG_SYSVIPC=y
+-# CONFIG_IPC_NS is not set
+ CONFIG_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_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=y
+@@ -62,32 +66,29 @@ 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_SLAB=y
+ CONFIG_VM_EVENT_COUNTERS=y
++CONFIG_SLAB=y
++# CONFIG_SLUB is not set
++# CONFIG_SLOB is not set
+ CONFIG_RT_MUTEXES=y
+ # CONFIG_TINY_SHMEM is not set
+ CONFIG_BASE_SMALL=0
+-# CONFIG_SLOB is not set
+-
+-#
+-# Loadable module support
+-#
+ CONFIG_MODULES=y
+ CONFIG_MODULE_UNLOAD=y
+ # CONFIG_MODULE_FORCE_UNLOAD is not set
+ # CONFIG_MODVERSIONS is not set
+ # CONFIG_MODULE_SRCVERSION_ALL is not set
+ CONFIG_KMOD=y
+-
+-#
+-# Block layer
+-#
+ CONFIG_BLOCK=y
+ # CONFIG_LBD is not set
+ # CONFIG_BLK_DEV_IO_TRACE is not set
+ # CONFIG_LSF is not set
++# CONFIG_BLK_DEV_BSG is not set
+
+ #
+ # IO Schedulers
+@@ -119,14 +120,16 @@ CONFIG_ARCH_AT91=y
+ # 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_IOP13XX is not set
+-# CONFIG_ARCH_IXP4XX is not set
+-# CONFIG_ARCH_IXP2000 is not set
+ # CONFIG_ARCH_IXP23XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_IXP4XX is not set
+ # CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_KS8695 is not set
+ # CONFIG_ARCH_NS9XXX is not set
++# CONFIG_ARCH_MXC is not set
+ # CONFIG_ARCH_PNX4008 is not set
+ # CONFIG_ARCH_PXA is not set
+ # CONFIG_ARCH_RPC is not set
+@@ -134,15 +137,27 @@ CONFIG_ARCH_AT91=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
+
+ #
++# Boot options
++#
++
++#
++# Power management
++#
++
++#
+ # Atmel AT91 System-on-Chip
+ #
+ # CONFIG_ARCH_AT91RM9200 is not set
+ CONFIG_ARCH_AT91SAM9260=y
+ # CONFIG_ARCH_AT91SAM9261 is not set
+ # CONFIG_ARCH_AT91SAM9263 is not set
++# CONFIG_ARCH_AT91SAM9RL is not set
++# CONFIG_ARCH_AT91X40 is not set
++CONFIG_AT91_PMC_UNIT=y
+
+ #
+ # AT91SAM9260 Variants
+@@ -153,6 +168,8 @@ CONFIG_ARCH_AT91SAM9260=y
+ # AT91SAM9260 / AT91SAM9XE Board Type
+ #
+ CONFIG_MACH_AT91SAM9260EK=y
++# CONFIG_MACH_CAM60 is not set
++# CONFIG_MACH_SAM9_L9260 is not set
+
+ #
+ # AT91 Board Options
+@@ -165,6 +182,7 @@ CONFIG_MACH_AT91SAM9260EK=y
+ #
+ # CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
+ # CONFIG_ATMEL_TCLIB is not set
++CONFIG_AT91_TIMER_HZ=100
+
+ #
+ # Processor Type
+@@ -192,15 +210,14 @@ CONFIG_CPU_CP15_MMU=y
+ #
+ # Bus support
+ #
+-
+-#
+-# PCCARD (PCMCIA/CardBus) support
+-#
++# CONFIG_PCI_SYSCALL is not set
++# CONFIG_ARCH_SUPPORTS_MSI is not set
+ # CONFIG_PCCARD is not set
+
+ #
+ # Kernel Features
+ #
++# CONFIG_TICK_ONESHOT is not set
+ # CONFIG_PREEMPT is not set
+ # CONFIG_NO_IDLE_HZ is not set
+ CONFIG_HZ=100
+@@ -213,9 +230,12 @@ 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
++CONFIG_BOUNCE=y
++CONFIG_VIRT_TO_BUS=y
+ # CONFIG_LEDS is not set
+ CONFIG_ALIGNMENT_TRAP=y
+
+@@ -252,6 +272,7 @@ CONFIG_BINFMT_ELF=y
+ # Power management options
+ #
+ # CONFIG_PM is not set
++CONFIG_SUSPEND_UP_POSSIBLE=y
+
+ #
+ # Networking
+@@ -261,7 +282,6 @@ CONFIG_NET=y
+ #
+ # Networking options
+ #
+-# CONFIG_NETDEBUG is not set
+ CONFIG_PACKET=y
+ # CONFIG_PACKET_MMAP is not set
+ CONFIG_UNIX=y
+@@ -286,6 +306,7 @@ CONFIG_IP_PNP_BOOTP=y
+ # CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+ # CONFIG_INET_XFRM_MODE_TUNNEL is not set
+ # CONFIG_INET_XFRM_MODE_BEET is not set
++# CONFIG_INET_LRO is not set
+ CONFIG_INET_DIAG=y
+ CONFIG_INET_TCP_DIAG=y
+ # CONFIG_TCP_CONG_ADVANCED is not set
+@@ -297,20 +318,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
+ # CONFIG_INET6_TUNNEL is not set
+ # CONFIG_NETWORK_SECMARK is not set
+ # CONFIG_NETFILTER is not set
+-
+-#
+-# DCCP Configuration (EXPERIMENTAL)
+-#
+ # CONFIG_IP_DCCP is not set
+-
+-#
+-# SCTP Configuration (EXPERIMENTAL)
+-#
+ # CONFIG_IP_SCTP is not set
+-
+-#
+-# TIPC Configuration (EXPERIMENTAL)
+-#
+ # CONFIG_TIPC is not set
+ # CONFIG_ATM is not set
+ # CONFIG_BRIDGE is not set
+@@ -323,11 +332,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
+ # CONFIG_LAPB is not set
+ # CONFIG_ECONET is not set
+ # CONFIG_WAN_ROUTER is not set
+-
+-#
+-# QoS and/or fair queueing
+-#
+ # CONFIG_NET_SCHED is not set
++CONFIG_NET_SCH_FIFO=y
+
+ #
+ # Network testing
+@@ -336,7 +342,26 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
+ # CONFIG_HAMRADIO is not set
+ # CONFIG_IRDA is not set
+ # CONFIG_BT is not set
+-# CONFIG_IEEE80211 is not set
++# CONFIG_AF_RXRPC is not set
++
++#
++# Wireless
++#
++CONFIG_CFG80211=m
++CONFIG_NL80211=y
++CONFIG_WIRELESS_EXT=y
++CONFIG_MAC80211=m
++CONFIG_MAC80211_RCSIMPLE=y
++# CONFIG_MAC80211_DEBUG is not set
++CONFIG_IEEE80211=m
++# CONFIG_IEEE80211_DEBUG is not set
++CONFIG_IEEE80211_CRYPT_WEP=m
++CONFIG_IEEE80211_CRYPT_CCMP=m
++CONFIG_IEEE80211_CRYPT_TKIP=m
++CONFIG_IEEE80211_SOFTMAC=m
++# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
++# CONFIG_RFKILL is not set
++# CONFIG_NET_9P is not set
+
+ #
+ # Device Drivers
+@@ -345,36 +370,17 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
+ #
+ # Generic Driver Options
+ #
++CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+ CONFIG_STANDALONE=y
+ CONFIG_PREVENT_FIRMWARE_BUILD=y
+-# CONFIG_FW_LOADER is not set
++CONFIG_FW_LOADER=m
+ # CONFIG_DEBUG_DRIVER is not set
+ # CONFIG_DEBUG_DEVRES is not set
+ # CONFIG_SYS_HYPERVISOR is not set
+-
+-#
+-# Connector - unified userspace <-> kernelspace linker
+-#
+ # CONFIG_CONNECTOR is not set
+-
+-#
+-# Memory Technology Devices (MTD)
+-#
+ # CONFIG_MTD is not set
+-
+-#
+-# Parallel port support
+-#
+ # CONFIG_PARPORT is not set
+-
+-#
+-# Plug and Play support
+-#
+-# CONFIG_PNPACPI is not set
+-
+-#
+-# Block devices
+-#
++CONFIG_BLK_DEV=y
+ # CONFIG_BLK_DEV_COW_COMMON is not set
+ # CONFIG_BLK_DEV_LOOP is not set
+ # CONFIG_BLK_DEV_NBD is not set
+@@ -385,12 +391,16 @@ CONFIG_BLK_DEV_RAM_SIZE=8192
+ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+ # CONFIG_CDROM_PKTCDVD is not set
+ # CONFIG_ATA_OVER_ETH is not set
++CONFIG_MISC_DEVICES=y
++# CONFIG_EEPROM_93CX6 is not set
++# CONFIG_ATMEL_SSC 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
+@@ -412,6 +422,7 @@ 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
+@@ -419,81 +430,77 @@ CONFIG_SCSI_MULTI_LUN=y
+ # 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_SCSI_SRP_ATTRS is not set
++CONFIG_SCSI_LOWLEVEL=y
+ # CONFIG_ISCSI_TCP is not set
+ # CONFIG_SCSI_DEBUG is not set
+-
+-#
+-# Serial ATA (prod) and Parallel ATA (experimental) drivers
+-#
+ # CONFIG_ATA is not set
+-
+-#
+-# Multi-device support (RAID and LVM)
+-#
+ # CONFIG_MD is not set
+-
+-#
+-# Fusion MPT device support
+-#
+-# CONFIG_FUSION is not set
+-
+-#
+-# IEEE 1394 (FireWire) support
+-#
+-
+-#
+-# I2O device support
+-#
+-
+-#
+-# Network device support
+-#
+ CONFIG_NETDEVICES=y
++# CONFIG_NETDEVICES_MULTIQUEUE is not set
+ # CONFIG_DUMMY is not set
+ # CONFIG_BONDING is not set
++# CONFIG_MACVLAN is not set
+ # CONFIG_EQUALIZER is not set
+ # CONFIG_TUN is not set
+-
+-#
+-# PHY device support
+-#
+-# CONFIG_PHYLIB is not set
+-
+-#
+-# Ethernet (10 or 100Mbit)
+-#
++# CONFIG_VETH is not set
++CONFIG_PHYLIB=y
++
++#
++# MII PHY device drivers
++#
++# CONFIG_MARVELL_PHY is not set
++# CONFIG_DAVICOM_PHY is not set
++# CONFIG_QSEMI_PHY is not set
++# CONFIG_LXT_PHY is not set
++# CONFIG_CICADA_PHY is not set
++# CONFIG_VITESSE_PHY is not set
++# CONFIG_SMSC_PHY is not set
++# CONFIG_BROADCOM_PHY is not set
++# CONFIG_ICPLUS_PHY is not set
++# CONFIG_FIXED_PHY is not set
++# CONFIG_MDIO_BITBANG is not set
+ CONFIG_NET_ETHERNET=y
+ CONFIG_MII=y
+ CONFIG_MACB=y
++# CONFIG_AX88796 is not set
+ # CONFIG_SMC91X is not set
+ # CONFIG_DM9000 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
++
++#
++# Wireless LAN
++#
++# CONFIG_WLAN_PRE80211 is not set
++CONFIG_WLAN_80211=y
++CONFIG_LIBERTAS=m
++CONFIG_LIBERTAS_USB=m
++CONFIG_LIBERTAS_SDIO=m
++# CONFIG_LIBERTAS_DEBUG is not set
++# CONFIG_USB_ZD1201 is not set
++# CONFIG_RTL8187 is not set
++# CONFIG_P54_COMMON is not set
++# CONFIG_HOSTAP is not set
++# CONFIG_B43 is not set
++# CONFIG_B43LEGACY is not set
++# CONFIG_ZD1211RW is not set
++# CONFIG_RT2X00 is not set
+
+ #
+-# Ethernet (1000 Mbit)
+-#
+-
+-#
+-# Ethernet (10000 Mbit)
+-#
+-
+-#
+-# Token Ring devices
+-#
+-
+-#
+-# Wireless LAN (non-hamradio)
+-#
+-# CONFIG_NET_RADIO is not set
+-
+-#
+-# Wan interfaces
++# 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_WAN is not set
+ # CONFIG_PPP is not set
+ # CONFIG_SLIP is not set
+@@ -501,10 +508,6 @@ CONFIG_MACB=y
+ # CONFIG_NETCONSOLE is not set
+ # CONFIG_NETPOLL is not set
+ # CONFIG_NET_POLL_CONTROLLER is not set
+-
+-#
+-# ISDN subsystem
+-#
+ # CONFIG_ISDN is not set
+
+ #
+@@ -512,6 +515,7 @@ CONFIG_MACB=y
+ #
+ CONFIG_INPUT=y
+ # CONFIG_INPUT_FF_MEMLESS is not set
++# CONFIG_INPUT_POLLDEV is not set
+
+ #
+ # Userland interfaces
+@@ -521,7 +525,6 @@ CONFIG_INPUT_MOUSEDEV=y
+ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+ # CONFIG_INPUT_JOYDEV is not set
+-# CONFIG_INPUT_TSDEV is not set
+ # CONFIG_INPUT_EVDEV is not set
+ # CONFIG_INPUT_EVBUG is not set
+
+@@ -531,6 +534,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+ # 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 is not set
+
+@@ -565,41 +569,12 @@ CONFIG_SERIAL_CORE_CONSOLE=y
+ CONFIG_UNIX98_PTYS=y
+ CONFIG_LEGACY_PTYS=y
+ CONFIG_LEGACY_PTY_COUNT=256
+-
+-#
+-# IPMI
+-#
+ # CONFIG_IPMI_HANDLER is not set
+-
+-#
+-# Watchdog Cards
+-#
+-CONFIG_WATCHDOG=y
+-CONFIG_WATCHDOG_NOWAYOUT=y
+-
+-#
+-# Watchdog Device Drivers
+-#
+-# CONFIG_SOFT_WATCHDOG is not set
+-
+-#
+-# USB-based Watchdog Cards
+-#
+-# CONFIG_USBPCWATCHDOG is not set
+ CONFIG_HW_RANDOM=y
+ # CONFIG_NVRAM is not set
+-# CONFIG_DTLK is not set
+ # CONFIG_R3964 is not set
+ # CONFIG_RAW_DRIVER is not set
+-
+-#
+-# TPM devices
+-#
+ # CONFIG_TCG_TPM is not set
+-
+-#
+-# I2C support
+-#
+ # CONFIG_I2C is not set
+
+ #
+@@ -607,56 +582,54 @@ CONFIG_HW_RANDOM=y
+ #
+ # 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_POWER_SUPPLY is not set
+ # CONFIG_HWMON is not set
+-# CONFIG_HWMON_VID is not set
+-
+-#
+-# Misc devices
+-#
++CONFIG_WATCHDOG=y
++CONFIG_WATCHDOG_NOWAYOUT=y
+
+ #
+-# Multifunction device drivers
++# Watchdog Device Drivers
+ #
+-# CONFIG_MFD_SM501 is not set
++# CONFIG_SOFT_WATCHDOG is not set
++# CONFIG_AT91SAM9_WATCHDOG is not set
+
+ #
+-# LED devices
++# USB-based Watchdog Cards
+ #
+-# CONFIG_NEW_LEDS is not set
++# CONFIG_USBPCWATCHDOG is not set
+
+ #
+-# LED drivers
++# Sonics Silicon Backplane
+ #
++CONFIG_SSB_POSSIBLE=y
++# CONFIG_SSB is not set
+
+ #
+-# LED Triggers
++# Multifunction device drivers
+ #
++# CONFIG_MFD_SM501 is not set
+
+ #
+ # Multimedia devices
+ #
+ # CONFIG_VIDEO_DEV is not set
+-
+-#
+-# Digital Video Broadcasting Devices
+-#
+-# CONFIG_DVB is not set
++# CONFIG_DVB_CORE is not set
++CONFIG_DAB=y
+ # CONFIG_USB_DABUSB is not set
+
+ #
+ # Graphics support
+ #
+-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++# CONFIG_VGASTATE is not set
++# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+ # CONFIG_FB is not set
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++
++#
++# Display device support
++#
++# CONFIG_DISPLAY_SUPPORT is not set
+
+ #
+ # Console display driver support
+@@ -668,16 +641,22 @@ CONFIG_DUMMY_CONSOLE=y
+ # Sound
+ #
+ # CONFIG_SOUND is not set
++CONFIG_HID_SUPPORT=y
++CONFIG_HID=y
++# CONFIG_HID_DEBUG is not set
++# CONFIG_HIDRAW is not set
+
+ #
+-# HID Devices
++# USB Input Devices
+ #
+-CONFIG_HID=y
+-# CONFIG_HID_DEBUG is not set
++# CONFIG_USB_HID is not set
+
+ #
+-# USB support
++# USB HID Boot Protocol drivers
+ #
++# CONFIG_USB_KBD is not set
++# CONFIG_USB_MOUSE is not set
++CONFIG_USB_SUPPORT=y
+ CONFIG_USB_ARCH_HAS_HCD=y
+ CONFIG_USB_ARCH_HAS_OHCI=y
+ # CONFIG_USB_ARCH_HAS_EHCI is not set
+@@ -688,6 +667,7 @@ CONFIG_USB=y
+ # Miscellaneous USB options
+ #
+ CONFIG_USB_DEVICEFS=y
++CONFIG_USB_DEVICE_CLASS=y
+ # CONFIG_USB_DYNAMIC_MINORS is not set
+ # CONFIG_USB_OTG is not set
+
+@@ -700,6 +680,7 @@ CONFIG_USB_OHCI_HCD=y
+ # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+ # CONFIG_USB_SL811_HCD is not set
++# CONFIG_USB_R8A66597_HCD is not set
+
+ #
+ # USB Device Class drivers
+@@ -718,6 +699,7 @@ CONFIG_USB_STORAGE=y
+ CONFIG_USB_STORAGE_DEBUG=y
+ # CONFIG_USB_STORAGE_DATAFAB is not set
+ # CONFIG_USB_STORAGE_FREECOM is not set
++# CONFIG_USB_STORAGE_ISD200 is not set
+ # CONFIG_USB_STORAGE_DPCM is not set
+ # CONFIG_USB_STORAGE_USBAT is not set
+ # CONFIG_USB_STORAGE_SDDR09 is not set
+@@ -728,44 +710,10 @@ CONFIG_USB_STORAGE_DEBUG=y
+ # CONFIG_USB_LIBUSUAL is not set
+
+ #
+-# USB Input Devices
+-#
+-# CONFIG_USB_HID is not set
+-
+-#
+-# USB HID Boot Protocol drivers
+-#
+-# CONFIG_USB_KBD is not set
+-# CONFIG_USB_MOUSE is not set
+-# CONFIG_USB_AIPTEK is not set
+-# CONFIG_USB_WACOM is not set
+-# CONFIG_USB_ACECAD is not set
+-# CONFIG_USB_KBTAB is not set
+-# CONFIG_USB_POWERMATE is not set
+-# CONFIG_USB_TOUCHSCREEN is not set
+-# CONFIG_USB_YEALINK is not set
+-# CONFIG_USB_XPAD is not set
+-# CONFIG_USB_ATI_REMOTE is not set
+-# CONFIG_USB_ATI_REMOTE2 is not set
+-# CONFIG_USB_KEYSPAN_REMOTE is not set
+-# CONFIG_USB_APPLETOUCH is not set
+-# CONFIG_USB_GTCO is not set
+-
+-#
+ # USB Imaging devices
+ #
+ # CONFIG_USB_MDC800 is not set
+ # CONFIG_USB_MICROTEK is not set
+-
+-#
+-# USB Network Adapters
+-#
+-# CONFIG_USB_CATC is not set
+-# CONFIG_USB_KAWETH is not set
+-# CONFIG_USB_PEGASUS is not set
+-# CONFIG_USB_RTL8150 is not set
+-# CONFIG_USB_USBNET_MII is not set
+-# CONFIG_USB_USBNET is not set
+ CONFIG_USB_MON=y
+
+ #
+@@ -808,13 +756,19 @@ CONFIG_USB_MON=y
+ # USB Gadget Support
+ #
+ CONFIG_USB_GADGET=y
++# CONFIG_USB_GADGET_DEBUG is not set
+ # CONFIG_USB_GADGET_DEBUG_FILES is not set
+ CONFIG_USB_GADGET_SELECTED=y
++# CONFIG_USB_GADGET_AMD5536UDC is not set
++# 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 is not set
++# CONFIG_USB_GADGET_M66592 is not set
+ # CONFIG_USB_GADGET_GOKU is not set
+ # CONFIG_USB_GADGET_LH7A40X is not set
+ # CONFIG_USB_GADGET_OMAP is not set
++# CONFIG_USB_GADGET_S3C2410 is not set
+ CONFIG_USB_GADGET_AT91=y
+ CONFIG_USB_AT91=y
+ # CONFIG_USB_GADGET_DUMMY_HCD is not set
+@@ -826,15 +780,22 @@ 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=m
++# CONFIG_MMC_DEBUG is not set
++# CONFIG_MMC_UNSAFE_RESUME is not set
+
+ #
+-# MMC/SD Card support
++# MMC/SD Card Drivers
+ #
+-# CONFIG_MMC is not set
++CONFIG_MMC_BLOCK=m
++CONFIG_MMC_BLOCK_BOUNCE=y
++# CONFIG_SDIO_UART is not set
+
+ #
+-# Real Time Clock
++# MMC/SD Host Controller Drivers
+ #
++CONFIG_MMC_AT91=m
++# CONFIG_NEW_LEDS is not set
+ CONFIG_RTC_LIB=y
+ # CONFIG_RTC_CLASS is not set
+
+@@ -887,7 +848,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
+
+ #
+@@ -906,10 +866,7 @@ CONFIG_CRAMFS=y
+ # 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 is not set
+ # CONFIG_NFSD is not set
+ # CONFIG_SMB_FS is not set
+@@ -917,17 +874,12 @@ CONFIG_CRAMFS=y
+ # 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
+@@ -968,21 +920,16 @@ CONFIG_NLS_ISO8859_1=y
+ # CONFIG_NLS_KOI8_R is not set
+ # CONFIG_NLS_KOI8_U is not set
+ # CONFIG_NLS_UTF8 is not set
+-
+-#
+-# Distributed Lock Manager
+-#
+ # CONFIG_DLM is not set
+-
+-#
+-# Profiling support
+-#
++CONFIG_INSTRUMENTATION=y
+ # CONFIG_PROFILING is not set
++# CONFIG_MARKERS is not set
+
+ #
+ # Kernel hacking
+ #
+ # CONFIG_PRINTK_TIME is not set
++CONFIG_ENABLE_WARN_DEPRECATED=y
+ CONFIG_ENABLE_MUST_CHECK=y
+ # CONFIG_MAGIC_SYSRQ is not set
+ # CONFIG_UNUSED_SYMBOLS is not set
+@@ -990,8 +937,8 @@ CONFIG_ENABLE_MUST_CHECK=y
+ # CONFIG_HEADERS_CHECK is not set
+ CONFIG_DEBUG_KERNEL=y
+ # CONFIG_DEBUG_SHIRQ is not set
+-CONFIG_LOG_BUF_SHIFT=14
+ CONFIG_DETECT_SOFTLOCKUP=y
++CONFIG_SCHED_DEBUG=y
+ # CONFIG_SCHEDSTATS is not set
+ # CONFIG_TIMER_STATS is not set
+ # CONFIG_DEBUG_SLAB is not set
+@@ -999,6 +946,9 @@ CONFIG_DETECT_SOFTLOCKUP=y
+ # 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_SPINLOCK_SLEEP is not set
+ # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+ # CONFIG_DEBUG_KOBJECT is not set
+@@ -1006,10 +956,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=y
++# 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=y
+ # CONFIG_DEBUG_ERRORS is not set
+ CONFIG_DEBUG_LL=y
+@@ -1020,11 +973,48 @@ CONFIG_DEBUG_LL=y
+ #
+ # CONFIG_KEYS is not set
+ # CONFIG_SECURITY is not set
+-
+-#
+-# Cryptographic options
+-#
+-# CONFIG_CRYPTO is not set
++# CONFIG_SECURITY_FILE_CAPABILITIES is not set
++CONFIG_CRYPTO=y
++CONFIG_CRYPTO_ALGAPI=m
++CONFIG_CRYPTO_BLKCIPHER=m
++CONFIG_CRYPTO_MANAGER=m
++# CONFIG_CRYPTO_HMAC is not set
++# CONFIG_CRYPTO_XCBC is not set
++# CONFIG_CRYPTO_NULL is not set
++# CONFIG_CRYPTO_MD4 is not set
++# CONFIG_CRYPTO_MD5 is not set
++# CONFIG_CRYPTO_SHA1 is not set
++# CONFIG_CRYPTO_SHA256 is not set
++# CONFIG_CRYPTO_SHA512 is not set
++# CONFIG_CRYPTO_WP512 is not set
++# CONFIG_CRYPTO_TGR192 is not set
++# CONFIG_CRYPTO_GF128MUL is not set
++CONFIG_CRYPTO_ECB=m
++# CONFIG_CRYPTO_CBC is not set
++# 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 is not set
++# CONFIG_CRYPTO_FCRYPT is not set
++# CONFIG_CRYPTO_BLOWFISH is not set
++# CONFIG_CRYPTO_TWOFISH is not set
++# CONFIG_CRYPTO_SERPENT is not set
++CONFIG_CRYPTO_AES=m
++# CONFIG_CRYPTO_CAST5 is not set
++# CONFIG_CRYPTO_CAST6 is not set
++# CONFIG_CRYPTO_TEA is not set
++CONFIG_CRYPTO_ARC4=m
++# CONFIG_CRYPTO_KHAZAD is not set
++# CONFIG_CRYPTO_ANUBIS is not set
++# CONFIG_CRYPTO_SEED is not set
++# CONFIG_CRYPTO_DEFLATE is not set
++CONFIG_CRYPTO_MICHAEL_MIC=m
++# CONFIG_CRYPTO_CRC32C is not set
++# CONFIG_CRYPTO_CAMELLIA is not set
++# CONFIG_CRYPTO_TEST is not set
++# CONFIG_CRYPTO_AUTHENC is not set
++CONFIG_CRYPTO_HW=y
+
+ #
+ # Library routines
+@@ -1032,9 +1022,12 @@ CONFIG_DEBUG_LL=y
+ CONFIG_BITREVERSE=y
+ # CONFIG_CRC_CCITT is not set
+ # CONFIG_CRC16 is not set
++# CONFIG_CRC_ITU_T is not set
+ CONFIG_CRC32=y
++# CONFIG_CRC7 is not set
+ # CONFIG_LIBCRC32C is not set
+ CONFIG_ZLIB_INFLATE=y
+ CONFIG_PLIST=y
+ CONFIG_HAS_IOMEM=y
+ CONFIG_HAS_IOPORT=y
++CONFIG_HAS_DMA=y
+--
+1.5.2.5
+
diff --git a/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/defconfig b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/defconfig
new file mode 100644
index 0000000000..e855ddef65
--- /dev/null
+++ b/packages/linux/linux-2.6.23+2.6.24-rc6/at91sam9260ek/defconfig
@@ -0,0 +1,1129 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc6
+# Mon Dec 31 15:32:18 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
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+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_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=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+CONFIG_ARCH_AT91=y
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Atmel AT91 System-on-Chip
+#
+# CONFIG_ARCH_AT91RM9200 is not set
+CONFIG_ARCH_AT91SAM9260=y
+# CONFIG_ARCH_AT91SAM9261 is not set
+# CONFIG_ARCH_AT91SAM9263 is not set
+# CONFIG_ARCH_AT91SAM9RL is not set
+# CONFIG_ARCH_AT91X40 is not set
+CONFIG_AT91_PMC_UNIT=y
+
+#
+# AT91SAM9260 Variants
+#
+# CONFIG_ARCH_AT91SAM9260_SAM9XE is not set
+
+#
+# AT91SAM9260 / AT91SAM9XE Board Type
+#
+CONFIG_MACH_AT91SAM9260EK=y
+# CONFIG_MACH_CAM60 is not set
+# CONFIG_MACH_SAM9_L9260 is not set
+
+#
+# AT91 Board Options
+#
+CONFIG_MTD_AT91_DATAFLASH_CARD=y
+# CONFIG_MTD_NAND_AT91_BUSWIDTH_16 is not set
+
+#
+# AT91 Feature Selections
+#
+# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
+# CONFIG_ATMEL_TCLIB is not set
+CONFIG_AT91_TIMER_HZ=100
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# 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
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+CONFIG_CFG80211=m
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+CONFIG_MAC80211_RCSIMPLE=y
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_PARTITIONS is not set
+
+#
+# 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
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_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_AT91=y
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ATMEL_SSC 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 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_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
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 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
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_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
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_AT91SAM9_WATCHDOG is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_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=y
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# 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 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+CONFIG_USB_GADGET_AT91=y
+CONFIG_USB_AT91=y
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+# CONFIG_USB_ETH is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_AT91=m
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_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_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+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
+CONFIG_NETWORK_FILESYSTEMS=y
+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_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# 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=y
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# 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=y
+CONFIG_CRYPTO_MANAGER=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+# 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=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-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/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty b/packages/linux/linux-dht-walnut-2.6.20/dht-walnut/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-1.2.0/turbostation/.mtn2git_empty
+++ b/packages/linux/linux-dht-walnut-2.6.20/dht-walnut/.mtn2git_empty
diff --git a/packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig b/packages/linux/linux-dht-walnut-2.6.20/dht-walnut/defconfig
index b6b752f623..b6b752f623 100644
--- a/packages/linux/linux-dht-walnut-2.6.20/dht-walnut_defconfig
+++ b/packages/linux/linux-dht-walnut-2.6.20/dht-walnut/defconfig
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/.mtn2git_empty b/packages/linux/linux-dht-walnut/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/.mtn2git_empty
+++ b/packages/linux/linux-dht-walnut/.mtn2git_empty
diff --git a/packages/uboot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty b/packages/linux/linux-dht-walnut/dht-walnut/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uboot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty
+++ b/packages/linux/linux-dht-walnut/dht-walnut/.mtn2git_empty
diff --git a/packages/linux/linux-dht-walnut/dht-walnut/defconfig b/packages/linux/linux-dht-walnut/dht-walnut/defconfig
new file mode 100644
index 0000000000..ddd6d9fc8f
--- /dev/null
+++ b/packages/linux/linux-dht-walnut/dht-walnut/defconfig
@@ -0,0 +1,2353 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23
+# Wed Dec 26 13:45:00 2007
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# 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=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+# CONFIG_EPOLL is not set
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_LSF=y
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# Processor
+#
+# CONFIG_6xx is not set
+CONFIG_40x=y
+# CONFIG_44x is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+CONFIG_PPC_DCR_NATIVE=y
+CONFIG_PPC_DCR=y
+CONFIG_MATH_EMULATION=y
+# CONFIG_KEXEC is not set
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=m
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=m
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_4xx=y
+# CONFIG_WANT_EARLY_SERIAL is not set
+
+#
+# IBM 4xx options
+#
+# CONFIG_BUBINGA is not set
+# CONFIG_CPCI405 is not set
+# CONFIG_EP405 is not set
+# CONFIG_REDWOOD_5 is not set
+# CONFIG_REDWOOD_6 is not set
+# CONFIG_SYCAMORE is not set
+CONFIG_WALNUT=y
+# CONFIG_XILINX_ML300 is not set
+# CONFIG_XILINX_ML403 is not set
+CONFIG_IBM405_ERR77=y
+CONFIG_IBM405_ERR51=y
+CONFIG_IBM_OCP=y
+CONFIG_BIOS_FIXUP=y
+CONFIG_405GP=y
+CONFIG_PPC4xx_DMA=y
+CONFIG_PPC4xx_EDMA=y
+CONFIG_PPC_GEN550=y
+CONFIG_UART0_TTYS0=y
+# CONFIG_UART0_TTYS1 is not set
+CONFIG_NOT_COHERENT_CACHE=y
+
+#
+# Platform options
+#
+# CONFIG_PC_KEYBOARD is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+CONFIG_HZ_300=y
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=300
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+# CONFIG_PREEMPT_BKL 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_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=m
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE=" debug "
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_HIBERNATION_UP_POSSIBLE=y
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_PD6729=m
+CONFIG_I82092=m
+CONFIG_PCCARD_NONSTATIC=m
+
+#
+# Advanced setup
+#
+CONFIG_ADVANCED_OPTIONS=y
+CONFIG_HIGHMEM_START=0xfe000000
+# CONFIG_LOWMEM_SIZE_BOOL is not set
+CONFIG_LOWMEM_SIZE=0x30000000
+# CONFIG_KERNEL_START_BOOL is not set
+CONFIG_KERNEL_START=0xc0000000
+# CONFIG_TASK_SIZE_BOOL is not set
+CONFIG_TASK_SIZE=0x80000000
+# CONFIG_CONSISTENT_START_BOOL is not set
+CONFIG_CONSISTENT_START=0xff100000
+# CONFIG_CONSISTENT_SIZE_BOOL is not set
+CONFIG_CONSISTENT_SIZE=0x00200000
+# CONFIG_BOOT_LOAD_BOOL is not set
+CONFIG_BOOT_LOAD=0x00400000
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_PIMSM_V1 is not set
+# CONFIG_IP_PIMSM_V2 is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# 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_NETLABEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_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=m
+# CONFIG_IP6_NF_IPTABLES is not set
+
+#
+# DECnet: Netfilter Configuration
+#
+# CONFIG_DECNET_NF_GRABULATOR is not set
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+CONFIG_DECNET=m
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+# CONFIG_DEV_APPLETALK is not set
+CONFIG_X25=m
+CONFIG_LAPB=m
+CONFIG_ECONET=m
+# CONFIG_ECONET_AUNUDP is not set
+# CONFIG_ECONET_NATIVE is not set
+CONFIG_WAN_ROUTER=m
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+# CONFIG_NET_SCH_RR is not set
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+# CONFIG_CLS_U32_PERF is not set
+# CONFIG_CLS_U32_MARK is not set
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+# CONFIG_NET_EMATCH is not set
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=y
+# CONFIG_NET_ACT_GACT is not set
+# CONFIG_NET_ACT_MIRRED is not set
+# CONFIG_NET_ACT_PEDIT is not set
+# CONFIG_NET_ACT_SIMP is not set
+CONFIG_NET_CLS_POLICE=y
+# CONFIG_NET_CLS_IND is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_DEBUG is not set
+# CONFIG_RXKAD is not set
+CONFIG_FIB_RULES=y
+
+#
+# Wireless
+#
+CONFIG_CFG80211=m
+CONFIG_WIRELESS_EXT=y
+CONFIG_MAC80211=m
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+# CONFIG_STANDALONE is not set
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=m
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+# CONFIG_NFTL_RW is not set
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_RAM=m
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+CONFIG_MTD_WALNUT=m
+CONFIG_MTD_PCI=m
+CONFIG_MTD_PLATRAM=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_DATAFLASH=m
+CONFIG_MTD_M25P80=m
+CONFIG_MTD_SLRAM=y
+CONFIG_MTD_PHRAM=y
+# CONFIG_MTD_MTDRAM is not set
+CONFIG_MTD_BLOCK2MTD=y
+
+#
+# Disk-On-Chip Device Drivers
+#
+CONFIG_MTD_DOC2000=m
+CONFIG_MTD_DOC2001=m
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCECC=m
+# CONFIG_MTD_DOCPROBE_ADVANCED is not set
+CONFIG_MTD_DOCPROBE_ADDRESS=0
+CONFIG_MTD_NAND=m
+# 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=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+CONFIG_MTD_NAND_CAFE=m
+CONFIG_MTD_NAND_NANDSIM=m
+# CONFIG_MTD_NAND_PLATFORM is not set
+CONFIG_MTD_ONENAND=m
+# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
+# CONFIG_MTD_ONENAND_OTP is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_PC_PCMCIA is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+# CONFIG_PARPORT_1284 is not set
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=y
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_UB=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_XILINX_SYSACE 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
+CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_DELKIN is not set
+CONFIG_BLK_DEV_IDECD=y
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=m
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+CONFIG_IDE_PROC_FS=y
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_IDEPCI_SHARE_IRQ is not set
+CONFIG_IDEPCI_PCIBUS_ORDER=y
+CONFIG_BLK_DEV_OFFBOARD=y
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_IT8213 is not set
+# CONFIG_BLK_DEV_IT821X is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+CONFIG_PDC202XX_BURST=y
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_TC86C001 is not set
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_BLK_DEV_HD 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=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
+CONFIG_DM_MULTIPATH_RDAC=m
+CONFIG_DM_DELAY=m
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+CONFIG_IEEE1394=m
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+
+#
+# Controllers
+#
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_OHCI1394=m
+
+#
+# Protocols
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=m
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+CONFIG_BONDING=m
+# CONFIG_MACVLAN is not set
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+# CONFIG_ULI526X is not set
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_PCMCIA_XIRTULIP=m
+CONFIG_HP100=m
+CONFIG_IBM_EMAC=y
+CONFIG_IBM_EMAC_RXB=128
+CONFIG_IBM_EMAC_TXB=64
+CONFIG_IBM_EMAC_POLL_WEIGHT=32
+CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
+CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
+# CONFIG_IBM_EMAC_DEBUG is not set
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+# CONFIG_PCNET32_NAPI is not set
+CONFIG_AMD8111_ETH=m
+# CONFIG_AMD8111E_NAPI is not set
+CONFIG_ADAPTEC_STARFIRE=m
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+# CONFIG_FORCEDETH_NAPI is not set
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+CONFIG_E100=m
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_VIA_RHINE_NAPI is not set
+# CONFIG_SC92031 is not set
+# CONFIG_NET_POCKET is not set
+CONFIG_NETDEV_1000=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+# CONFIG_E1000_NAPI is not set
+# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+# CONFIG_R8169_NAPI is not set
+# CONFIG_R8169_VLAN is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+CONFIG_SK98LIN=m
+CONFIG_VIA_VELOCITY=m
+CONFIG_TIGON3=m
+CONFIG_BNX2=m
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+CONFIG_NETDEV_10000=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_MLX4_CORE is not set
+# CONFIG_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=y
+# CONFIG_USB_RTL8150 is not set
+CONFIG_USB_USBNET_MII=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=y
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=y
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_WAN=y
+CONFIG_LANMEDIA=m
+CONFIG_HDLC=m
+# CONFIG_HDLC_RAW is not set
+# CONFIG_HDLC_RAW_ETH is not set
+# CONFIG_HDLC_CISCO is not set
+# CONFIG_HDLC_FR is not set
+# CONFIG_HDLC_PPP is not set
+# CONFIG_HDLC_X25 is not set
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+CONFIG_PC300=m
+
+#
+# Cyclades-PC300 MLPPP support is disabled.
+#
+
+#
+# Refer to the file README.mlppp, provided by PC300 package.
+#
+# CONFIG_PC300TOO is not set
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+# CONFIG_DSCC4_PCISYNC is not set
+# CONFIG_DSCC4_PCI_RST is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+# CONFIG_WAN_ROUTER_DRIVERS is not set
+CONFIG_LAPBETHER=m
+CONFIG_X25_ASY=m
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+# CONFIG_ATM_TCP is not set
+# CONFIG_ATM_LANAI is not set
+# CONFIG_ATM_ENI is not set
+# CONFIG_ATM_FIRESTREAM is not set
+# CONFIG_ATM_ZATM is not set
+# CONFIG_ATM_NICSTAR is not set
+# CONFIG_ATM_IDT77252 is not set
+# CONFIG_ATM_AMBASSADOR is not set
+# CONFIG_ATM_HORIZON is not set
+# CONFIG_ATM_IA is not set
+# CONFIG_ATM_FORE200E_MAYBE is not set
+# CONFIG_ATM_HE is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+# CONFIG_PPPOL2TP is not set
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLHC=m
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+# CONFIG_NET_FC is not set
+CONFIG_SHAPER=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_I8042 is not set
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+# CONFIG_TIPAR is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+# CONFIG_BOOKE_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+# CONFIG_WDT_501_PCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_HW_RANDOM=m
+CONFIG_NVRAM=m
+# CONFIG_GEN_RTC is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+# 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=y
+CONFIG_I2C_ALGOPCA=y
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+CONFIG_I2C_IBM_IIC=y
+# CONFIG_I2C_MPC is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_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 is not set
+# 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=m
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=m
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+CONFIG_SENSORS_PCF8591=m
+CONFIG_SENSORS_M41T00=m
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_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=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=m
+# CONFIG_SPI_BUTTERFLY is not set
+# CONFIG_SPI_LM70_LLP is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+CONFIG_W1_MASTER_MATROX=m
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
+# CONFIG_W1_SLAVE_DS2760 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=m
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_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 is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+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_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_TDA9840=m
+CONFIG_VIDEO_TDA9875=m
+CONFIG_VIDEO_TEA6415C=m
+CONFIG_VIDEO_TEA6420=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_BT819=m
+CONFIG_VIDEO_BT856=m
+CONFIG_VIDEO_SAA7110=m
+CONFIG_VIDEO_SAA7111=m
+CONFIG_VIDEO_SAA7114=m
+CONFIG_VIDEO_VPX3220=m
+CONFIG_VIDEO_SAA7185=m
+CONFIG_VIDEO_ADV7170=m
+CONFIG_VIDEO_ADV7175=m
+# CONFIG_VIDEO_VIVI is not set
+CONFIG_VIDEO_BT848=m
+# CONFIG_VIDEO_BT848_DVB is not set
+# CONFIG_VIDEO_SAA6588 is not set
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+# CONFIG_VIDEO_CPIA2 is not set
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_VIDEO_STRADIS=m
+CONFIG_VIDEO_ZORAN_ZR36060=m
+CONFIG_VIDEO_ZORAN=m
+CONFIG_VIDEO_ZORAN_BUZ=m
+CONFIG_VIDEO_ZORAN_DC10=m
+CONFIG_VIDEO_ZORAN_DC30=m
+CONFIG_VIDEO_ZORAN_LML33=m
+CONFIG_VIDEO_ZORAN_LML33R10=m
+# CONFIG_VIDEO_ZORAN_AVS6EYES is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+# CONFIG_VIDEO_SAA7134_DVB is not set
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+# CONFIG_VIDEO_CX88_ALSA is not set
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CX88_DVB is not set
+# CONFIG_VIDEO_IVTV is not set
+# CONFIG_VIDEO_CAFE_CCIC 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_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_USB_DSBR=m
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_CORE_ATTACH is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+# CONFIG_DVB_AV7110_FIRMWARE is not set
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+# CONFIG_DVB_USB is not set
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+
+#
+# Supported Pluto2 Adapters
+#
+# CONFIG_DVB_PLUTO2 is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_CX24110=m
+# CONFIG_DVB_CX24123 is not set
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_TDA10086=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+# CONFIG_DVB_DIB7000M is not set
+# CONFIG_DVB_DIB7000P is not set
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+
+#
+# Tuners/PLL support
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TDA826X=m
+# CONFIG_DVB_TDA827X is not set
+# CONFIG_DVB_TUNER_QT1010 is not set
+# CONFIG_DVB_TUNER_MT2060 is not set
+
+#
+# Miscellaneous devices
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6421 is not set
+CONFIG_DVB_TUA6100=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_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=y
+CONFIG_USB_DABUSB=m
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_DDC=m
+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=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_CT65550 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+CONFIG_FB_MATROX=y
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G=y
+CONFIG_FB_MATROX_I2C=m
+CONFIG_FB_MATROX_MAVEN=m
+CONFIG_FB_MATROX_MULTIHEAD=y
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+# CONFIG_SND_PORTMAN2X4 is not set
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+
+#
+# PCI devices
+#
+CONFIG_SND_AD1889=m
+CONFIG_SND_ALS300=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+CONFIG_SND_BT87X_OVERCLOCK=y
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_CS4281=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X_BOOL=y
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_KORG1212_FIRMWARE_IN_KERNEL=y
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MAESTRO3_FIRMWARE_IN_KERNEL=y
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_PCXHR=m
+CONFIG_SND_RIPTIDE=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VX222=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y
+CONFIG_SND_AC97_POWER_SAVE=y
+
+#
+# ALSA PowerMac devices
+#
+
+#
+# ALSA PowerPC devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+# CONFIG_SND_USB_CAIAQ_INPUT is not set
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# 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_AC97_BUS=m
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_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=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_U132_HCD is not set
+CONFIG_USB_SL811_HCD=m
+# CONFIG_USB_SL811_CS 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=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+CONFIG_USB_SERIAL_AIRPRIME=m
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_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=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+CONFIG_USB_CYPRESS_CY7C63=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_SISUSBVGA_CON is not set
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
+# CONFIG_USB_IOWARRIOR is not set
+CONFIG_USB_TEST=m
+
+#
+# USB DSL modem support
+#
+CONFIG_USB_ATM=m
+# CONFIG_USB_SPEEDTOUCH is not set
+# CONFIG_USB_CXACRU is not set
+# CONFIG_USB_UEAGLEATM is not set
+# CONFIG_USB_XUSBATM is not set
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_NET2280=m
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_MMC is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=m
+CONFIG_RTC_CLASS=m
+
+#
+# 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
+# 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_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=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA=y
+
+#
+# DMA Devices
+#
+CONFIG_INTEL_IOATDMA=m
+# CONFIG_AUXDISPLAY is not set
+
+#
+# Userspace I/O
+#
+# CONFIG_UIO is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+CONFIG_JFS_FS=m
+# CONFIG_JFS_POSIX_ACL is not set
+# CONFIG_JFS_SECURITY is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_XFS_FS=m
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_MINIX_FS=m
+CONFIG_ROMFS_FS=m
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+# CONFIG_ECRYPT_FS is not set
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+CONFIG_VXFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+# CONFIG_UFS_DEBUG is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+# CONFIG_NFSD_V3 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPCSEC_GSS_SPKM3=m
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+CONFIG_NCP_FS=m
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+CONFIG_AFS_FS=m
+# CONFIG_AFS_DEBUG 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
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# IBM 40x options
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# 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=m
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_SERIAL_TEXT_DEBUG is not set
+CONFIG_PPC_OCP=y
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITY_NETWORK=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+CONFIG_SECURITY_CAPABILITIES=m
+CONFIG_SECURITY_ROOTPLUG=m
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# 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
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_HW=y
diff --git a/packages/linux/linux-dht-walnut/remove-todc.patch b/packages/linux/linux-dht-walnut/remove-todc.patch
new file mode 100644
index 0000000000..afdc904a08
--- /dev/null
+++ b/packages/linux/linux-dht-walnut/remove-todc.patch
@@ -0,0 +1,920 @@
+Index: working-2.6/arch/powerpc/sysdev/todc.c
+===================================================================
+--- working-2.6.orig/arch/powerpc/sysdev/todc.c 2006-08-25 14:27:11.000000000 +1000
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,392 +0,0 @@
+-/*
+- * Time of Day Clock support for the M48T35, M48T37, M48T59, and MC146818
+- * Real Time Clocks/Timekeepers.
+- *
+- * Author: Mark A. Greer <mgreer@mvista.com>
+- *
+- * 2001-2004 (c) MontaVista, Software, Inc. This file is licensed under
+- * the terms of the GNU General Public License version 2. This program
+- * is licensed "as is" without any warranty of any kind, whether express
+- * or implied.
+- */
+-#include <linux/errno.h>
+-#include <linux/init.h>
+-#include <linux/kernel.h>
+-#include <linux/time.h>
+-#include <linux/timex.h>
+-#include <linux/bcd.h>
+-#include <linux/mc146818rtc.h>
+-
+-#include <asm/machdep.h>
+-#include <asm/io.h>
+-#include <asm/time.h>
+-#include <asm/todc.h>
+-
+-/*
+- * Depending on the hardware on your board and your board design, the
+- * RTC/NVRAM may be accessed either directly (like normal memory) or via
+- * address/data registers. If your board uses the direct method, set
+- * 'nvram_data' to the base address of your nvram and leave 'nvram_as0' and
+- * 'nvram_as1' NULL. If your board uses address/data regs to access nvram,
+- * set 'nvram_as0' to the address of the lower byte, set 'nvram_as1' to the
+- * address of the upper byte (leave NULL if using mc146818), and set
+- * 'nvram_data' to the address of the 8-bit data register.
+- *
+- * Note: Even though the documentation for the various RTC chips say that it
+- * take up to a second before it starts updating once the 'R' bit is
+- * cleared, they always seem to update even though we bang on it many
+- * times a second. This is true, except for the Dallas Semi 1746/1747
+- * (possibly others). Those chips seem to have a real problem whenever
+- * we set the 'R' bit before reading them, they basically stop counting.
+- * --MAG
+- */
+-
+-/*
+- * 'todc_info' should be initialized in your *_setup.c file to
+- * point to a fully initialized 'todc_info_t' structure.
+- * This structure holds all the register offsets for your particular
+- * TODC/RTC chip.
+- * TODC_ALLOC()/TODC_INIT() will allocate and initialize this table for you.
+- */
+-
+-#ifdef RTC_FREQ_SELECT
+-#undef RTC_FREQ_SELECT
+-#define RTC_FREQ_SELECT control_b /* Register A */
+-#endif
+-
+-#ifdef RTC_CONTROL
+-#undef RTC_CONTROL
+-#define RTC_CONTROL control_a /* Register B */
+-#endif
+-
+-#ifdef RTC_INTR_FLAGS
+-#undef RTC_INTR_FLAGS
+-#define RTC_INTR_FLAGS watchdog /* Register C */
+-#endif
+-
+-#ifdef RTC_VALID
+-#undef RTC_VALID
+-#define RTC_VALID interrupts /* Register D */
+-#endif
+-
+-/* Access routines when RTC accessed directly (like normal memory) */
+-u_char
+-todc_direct_read_val(int addr)
+-{
+- return readb((void __iomem *)(todc_info->nvram_data + addr));
+-}
+-
+-void
+-todc_direct_write_val(int addr, unsigned char val)
+-{
+- writeb(val, (void __iomem *)(todc_info->nvram_data + addr));
+- return;
+-}
+-
+-/* Access routines for accessing m48txx type chips via addr/data regs */
+-u_char
+-todc_m48txx_read_val(int addr)
+-{
+- outb(addr, todc_info->nvram_as0);
+- outb(addr>>todc_info->as0_bits, todc_info->nvram_as1);
+- return inb(todc_info->nvram_data);
+-}
+-
+-void
+-todc_m48txx_write_val(int addr, unsigned char val)
+-{
+- outb(addr, todc_info->nvram_as0);
+- outb(addr>>todc_info->as0_bits, todc_info->nvram_as1);
+- outb(val, todc_info->nvram_data);
+- return;
+-}
+-
+-/* Access routines for accessing mc146818 type chips via addr/data regs */
+-u_char
+-todc_mc146818_read_val(int addr)
+-{
+- outb_p(addr, todc_info->nvram_as0);
+- return inb_p(todc_info->nvram_data);
+-}
+-
+-void
+-todc_mc146818_write_val(int addr, unsigned char val)
+-{
+- outb_p(addr, todc_info->nvram_as0);
+- outb_p(val, todc_info->nvram_data);
+-}
+-
+-
+-/*
+- * Routines to make RTC chips with NVRAM buried behind an addr/data pair
+- * have the NVRAM and clock regs appear at the same level.
+- * The NVRAM will appear to start at addr 0 and the clock regs will appear
+- * to start immediately after the NVRAM (actually, start at offset
+- * todc_info->nvram_size).
+- */
+-static inline u_char
+-todc_read_val(int addr)
+-{
+- u_char val;
+-
+- if (todc_info->sw_flags & TODC_FLAG_2_LEVEL_NVRAM) {
+- if (addr < todc_info->nvram_size) { /* NVRAM */
+- ppc_md.rtc_write_val(todc_info->nvram_addr_reg, addr);
+- val = ppc_md.rtc_read_val(todc_info->nvram_data_reg);
+- } else { /* Clock Reg */
+- addr -= todc_info->nvram_size;
+- val = ppc_md.rtc_read_val(addr);
+- }
+- } else
+- val = ppc_md.rtc_read_val(addr);
+-
+- return val;
+-}
+-
+-static inline void
+-todc_write_val(int addr, u_char val)
+-{
+- if (todc_info->sw_flags & TODC_FLAG_2_LEVEL_NVRAM) {
+- if (addr < todc_info->nvram_size) { /* NVRAM */
+- ppc_md.rtc_write_val(todc_info->nvram_addr_reg, addr);
+- ppc_md.rtc_write_val(todc_info->nvram_data_reg, val);
+- } else { /* Clock Reg */
+- addr -= todc_info->nvram_size;
+- ppc_md.rtc_write_val(addr, val);
+- }
+- } else
+- ppc_md.rtc_write_val(addr, val);
+-}
+-
+-/*
+- * TODC routines
+- *
+- * There is some ugly stuff in that there are assumptions for the mc146818.
+- *
+- * Assumptions:
+- * - todc_info->control_a has the offset as mc146818 Register B reg
+- * - todc_info->control_b has the offset as mc146818 Register A reg
+- * - m48txx control reg's write enable or 'W' bit is same as
+- * mc146818 Register B 'SET' bit (i.e., 0x80)
+- *
+- * These assumptions were made to make the code simpler.
+- */
+-long __init
+-todc_time_init(void)
+-{
+- u_char cntl_b;
+-
+- if (!ppc_md.rtc_read_val)
+- ppc_md.rtc_read_val = ppc_md.nvram_read_val;
+- if (!ppc_md.rtc_write_val)
+- ppc_md.rtc_write_val = ppc_md.nvram_write_val;
+-
+- cntl_b = todc_read_val(todc_info->control_b);
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818) {
+- if ((cntl_b & 0x70) != 0x20) {
+- printk(KERN_INFO "TODC real-time-clock was stopped."
+- " Now starting...");
+- cntl_b &= ~0x70;
+- cntl_b |= 0x20;
+- }
+-
+- todc_write_val(todc_info->control_b, cntl_b);
+- } else if (todc_info->rtc_type == TODC_TYPE_DS17285) {
+- u_char mode;
+-
+- mode = todc_read_val(TODC_TYPE_DS17285_CNTL_A);
+- /* Make sure countdown clear is not set */
+- mode &= ~0x40;
+- /* Enable oscillator, extended register set */
+- mode |= 0x30;
+- todc_write_val(TODC_TYPE_DS17285_CNTL_A, mode);
+-
+- } else if (todc_info->rtc_type == TODC_TYPE_DS1501) {
+- u_char month;
+-
+- todc_info->enable_read = TODC_DS1501_CNTL_B_TE;
+- todc_info->enable_write = TODC_DS1501_CNTL_B_TE;
+-
+- month = todc_read_val(todc_info->month);
+-
+- if ((month & 0x80) == 0x80) {
+- printk(KERN_INFO "TODC %s %s\n",
+- "real-time-clock was stopped.",
+- "Now starting...");
+- month &= ~0x80;
+- todc_write_val(todc_info->month, month);
+- }
+-
+- cntl_b &= ~TODC_DS1501_CNTL_B_TE;
+- todc_write_val(todc_info->control_b, cntl_b);
+- } else { /* must be a m48txx type */
+- u_char cntl_a;
+-
+- todc_info->enable_read = TODC_MK48TXX_CNTL_A_R;
+- todc_info->enable_write = TODC_MK48TXX_CNTL_A_W;
+-
+- cntl_a = todc_read_val(todc_info->control_a);
+-
+- /* Check & clear STOP bit in control B register */
+- if (cntl_b & TODC_MK48TXX_DAY_CB) {
+- printk(KERN_INFO "TODC %s %s\n",
+- "real-time-clock was stopped.",
+- "Now starting...");
+-
+- cntl_a |= todc_info->enable_write;
+- cntl_b &= ~TODC_MK48TXX_DAY_CB;/* Start Oscil */
+-
+- todc_write_val(todc_info->control_a, cntl_a);
+- todc_write_val(todc_info->control_b, cntl_b);
+- }
+-
+- /* Make sure READ & WRITE bits are cleared. */
+- cntl_a &= ~(todc_info->enable_write | todc_info->enable_read);
+- todc_write_val(todc_info->control_a, cntl_a);
+- }
+-
+- return 0;
+-}
+-
+-/*
+- * There is some ugly stuff in that there are assumptions that for a mc146818,
+- * the todc_info->control_a has the offset of the mc146818 Register B reg and
+- * that the register'ss 'SET' bit is the same as the m48txx's write enable
+- * bit in the control register of the m48txx (i.e., 0x80).
+- *
+- * It was done to make the code look simpler.
+- */
+-void
+-todc_get_rtc_time(struct rtc_time *tm)
+-{
+- uint year = 0, mon = 0, mday = 0, hour = 0, min = 0, sec = 0;
+- uint limit, i;
+- u_char save_control, uip = 0;
+- extern void GregorianDay(struct rtc_time *);
+-
+- spin_lock(&rtc_lock);
+- save_control = todc_read_val(todc_info->control_a);
+-
+- if (todc_info->rtc_type != TODC_TYPE_MC146818) {
+- limit = 1;
+-
+- switch (todc_info->rtc_type) {
+- case TODC_TYPE_DS1553:
+- case TODC_TYPE_DS1557:
+- case TODC_TYPE_DS1743:
+- case TODC_TYPE_DS1746: /* XXXX BAD HACK -> FIX */
+- case TODC_TYPE_DS1747:
+- case TODC_TYPE_DS17285:
+- break;
+- default:
+- todc_write_val(todc_info->control_a,
+- (save_control | todc_info->enable_read));
+- }
+- } else
+- limit = 100000000;
+-
+- for (i=0; i<limit; i++) {
+- if (todc_info->rtc_type == TODC_TYPE_MC146818)
+- uip = todc_read_val(todc_info->RTC_FREQ_SELECT);
+-
+- sec = todc_read_val(todc_info->seconds) & 0x7f;
+- min = todc_read_val(todc_info->minutes) & 0x7f;
+- hour = todc_read_val(todc_info->hours) & 0x3f;
+- mday = todc_read_val(todc_info->day_of_month) & 0x3f;
+- mon = todc_read_val(todc_info->month) & 0x1f;
+- year = todc_read_val(todc_info->year) & 0xff;
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818) {
+- uip |= todc_read_val(todc_info->RTC_FREQ_SELECT);
+- if ((uip & RTC_UIP) == 0)
+- break;
+- }
+- }
+-
+- if (todc_info->rtc_type != TODC_TYPE_MC146818) {
+- switch (todc_info->rtc_type) {
+- case TODC_TYPE_DS1553:
+- case TODC_TYPE_DS1557:
+- case TODC_TYPE_DS1743:
+- case TODC_TYPE_DS1746: /* XXXX BAD HACK -> FIX */
+- case TODC_TYPE_DS1747:
+- case TODC_TYPE_DS17285:
+- break;
+- default:
+- save_control &= ~(todc_info->enable_read);
+- todc_write_val(todc_info->control_a, save_control);
+- }
+- }
+- spin_unlock(&rtc_lock);
+-
+- if ((todc_info->rtc_type != TODC_TYPE_MC146818)
+- || ((save_control & RTC_DM_BINARY) == 0)
+- || RTC_ALWAYS_BCD) {
+- BCD_TO_BIN(sec);
+- BCD_TO_BIN(min);
+- BCD_TO_BIN(hour);
+- BCD_TO_BIN(mday);
+- BCD_TO_BIN(mon);
+- BCD_TO_BIN(year);
+- }
+-
+- if ((year + 1900) < 1970) {
+- year += 100;
+- }
+-
+- tm->tm_sec = sec;
+- tm->tm_min = min;
+- tm->tm_hour = hour;
+- tm->tm_mday = mday;
+- tm->tm_mon = mon;
+- tm->tm_year = year;
+-
+- GregorianDay(tm);
+-}
+-
+-int
+-todc_set_rtc_time(struct rtc_time *tm)
+-{
+- u_char save_control, save_freq_select = 0;
+-
+- spin_lock(&rtc_lock);
+- save_control = todc_read_val(todc_info->control_a);
+-
+- /* Assuming MK48T59_RTC_CA_WRITE & RTC_SET are equal */
+- todc_write_val(todc_info->control_a,
+- (save_control | todc_info->enable_write));
+- save_control &= ~(todc_info->enable_write); /* in case it was set */
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818) {
+- save_freq_select = todc_read_val(todc_info->RTC_FREQ_SELECT);
+- todc_write_val(todc_info->RTC_FREQ_SELECT,
+- save_freq_select | RTC_DIV_RESET2);
+- }
+-
+- if ((todc_info->rtc_type != TODC_TYPE_MC146818)
+- || ((save_control & RTC_DM_BINARY) == 0)
+- || RTC_ALWAYS_BCD) {
+- BIN_TO_BCD(tm->tm_sec);
+- BIN_TO_BCD(tm->tm_min);
+- BIN_TO_BCD(tm->tm_hour);
+- BIN_TO_BCD(tm->tm_mon);
+- BIN_TO_BCD(tm->tm_mday);
+- BIN_TO_BCD(tm->tm_year);
+- }
+-
+- todc_write_val(todc_info->seconds, tm->tm_sec);
+- todc_write_val(todc_info->minutes, tm->tm_min);
+- todc_write_val(todc_info->hours, tm->tm_hour);
+- todc_write_val(todc_info->month, tm->tm_mon);
+- todc_write_val(todc_info->day_of_month, tm->tm_mday);
+- todc_write_val(todc_info->year, tm->tm_year);
+-
+- todc_write_val(todc_info->control_a, save_control);
+-
+- if (todc_info->rtc_type == TODC_TYPE_MC146818)
+- todc_write_val(todc_info->RTC_FREQ_SELECT, save_freq_select);
+-
+- spin_unlock(&rtc_lock);
+- return 0;
+-}
+Index: working-2.6/include/asm-powerpc/todc.h
+===================================================================
+--- working-2.6.orig/include/asm-powerpc/todc.h 2006-08-25 14:27:15.000000000 +1000
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,487 +0,0 @@
+-/*
+- * Definitions for the M48Txx and mc146818 series of Time of day/Real Time
+- * Clock chips.
+- *
+- * Author: Mark A. Greer <mgreer@mvista.com>
+- *
+- * 2001 (c) MontaVista, Software, Inc. This file is licensed under
+- * the terms of the GNU General Public License version 2. This program
+- * is licensed "as is" without any warranty of any kind, whether express
+- * or implied.
+- */
+-
+-/*
+- * Support for the M48T37/M48T59/.../mc146818 Real Time Clock chips.
+- * Purpose is to make one generic file that handles all of these chips instead
+- * of every platform implementing the same code over & over again.
+- */
+-
+-#ifndef __PPC_KERNEL_TODC_H
+-#define __PPC_KERNEL_TODC_H
+-
+-typedef struct {
+- uint rtc_type; /* your particular chip */
+-
+- /*
+- * Following are the addresses of the AS0, AS1, and DATA registers
+- * of these chips. Note that these are board-specific.
+- */
+- unsigned int nvram_as0;
+- unsigned int nvram_as1;
+- unsigned int nvram_data;
+-
+- /*
+- * Define bits to stop external set of regs from changing so
+- * the chip can be read/written reliably.
+- */
+- unsigned char enable_read;
+- unsigned char enable_write;
+-
+- /*
+- * Following is the number of AS0 address bits. This is normally
+- * 8 but some bad hardware routes address lines incorrectly.
+- */
+- int as0_bits;
+-
+- int nvram_size; /* Size of NVRAM on chip */
+- int sw_flags; /* Software control flags */
+-
+- /* Following are the register offsets for the particular chip */
+- int year;
+- int month;
+- int day_of_month;
+- int day_of_week;
+- int hours;
+- int minutes;
+- int seconds;
+- int control_b;
+- int control_a;
+- int watchdog;
+- int interrupts;
+- int alarm_date;
+- int alarm_hour;
+- int alarm_minutes;
+- int alarm_seconds;
+- int century;
+- int flags;
+-
+- /*
+- * Some RTC chips have their NVRAM buried behind a addr/data pair of
+- * regs on the first level/clock registers. The following fields
+- * are the addresses for those addr/data regs.
+- */
+- int nvram_addr_reg;
+- int nvram_data_reg;
+-} todc_info_t;
+-
+-/*
+- * Define the types of TODC/RTC variants that are supported in
+- * arch/ppc/kernel/todc_time.c
+- * Make a new one of these for any chip somehow differs from what's already
+- * defined. That way, if you ever need to put in code to touch those
+- * bits/registers in todc_time.c, you can put it inside an
+- * 'if (todc_info->rtc_type == TODC_TYPE_XXX)' so you won't break
+- * anyone else.
+- */
+-#define TODC_TYPE_MK48T35 1
+-#define TODC_TYPE_MK48T37 2
+-#define TODC_TYPE_MK48T59 3
+-#define TODC_TYPE_DS1693 4 /* Dallas DS1693 RTC */
+-#define TODC_TYPE_DS1743 5 /* Dallas DS1743 RTC */
+-#define TODC_TYPE_DS1746 6 /* Dallas DS1746 RTC */
+-#define TODC_TYPE_DS1747 7 /* Dallas DS1747 RTC */
+-#define TODC_TYPE_DS1501 8 /* Dallas DS1501 RTC */
+-#define TODC_TYPE_DS1643 9 /* Dallas DS1643 RTC */
+-#define TODC_TYPE_PC97307 10 /* PC97307 internal RTC */
+-#define TODC_TYPE_DS1557 11 /* Dallas DS1557 RTC */
+-#define TODC_TYPE_DS17285 12 /* Dallas DS17285 RTC */
+-#define TODC_TYPE_DS1553 13 /* Dallas DS1553 RTC */
+-#define TODC_TYPE_MC146818 100 /* Leave room for m48txx's */
+-
+-/*
+- * Bit to clear/set to enable reads/writes to the chip
+- */
+-#define TODC_MK48TXX_CNTL_A_R 0x40
+-#define TODC_MK48TXX_CNTL_A_W 0x80
+-#define TODC_MK48TXX_DAY_CB 0x80
+-
+-#define TODC_DS1501_CNTL_B_TE 0x80
+-
+-/*
+- * Define flag bits used by todc routines.
+- */
+-#define TODC_FLAG_2_LEVEL_NVRAM 0x00000001
+-
+-/*
+- * Define the values for the various RTC's that should to into the todc_info
+- * table.
+- * Note: The XXX_NVRAM_SIZE, XXX_NVRAM_ADDR_REG, and XXX_NVRAM_DATA_REG only
+- * matter if XXX_SW_FLAGS has TODC_FLAG_2_LEVEL_NVRAM set.
+- */
+-#define TODC_TYPE_MK48T35_NVRAM_SIZE 0x7ff8
+-#define TODC_TYPE_MK48T35_SW_FLAGS 0
+-#define TODC_TYPE_MK48T35_YEAR 0x7fff
+-#define TODC_TYPE_MK48T35_MONTH 0x7ffe
+-#define TODC_TYPE_MK48T35_DOM 0x7ffd /* Day of Month */
+-#define TODC_TYPE_MK48T35_DOW 0x7ffc /* Day of Week */
+-#define TODC_TYPE_MK48T35_HOURS 0x7ffb
+-#define TODC_TYPE_MK48T35_MINUTES 0x7ffa
+-#define TODC_TYPE_MK48T35_SECONDS 0x7ff9
+-#define TODC_TYPE_MK48T35_CNTL_B 0x7ff9
+-#define TODC_TYPE_MK48T35_CNTL_A 0x7ff8
+-#define TODC_TYPE_MK48T35_WATCHDOG 0x0000
+-#define TODC_TYPE_MK48T35_INTERRUPTS 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_DATE 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_HOUR 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_MINUTES 0x0000
+-#define TODC_TYPE_MK48T35_ALARM_SECONDS 0x0000
+-#define TODC_TYPE_MK48T35_CENTURY 0x0000
+-#define TODC_TYPE_MK48T35_FLAGS 0x0000
+-#define TODC_TYPE_MK48T35_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MK48T35_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_MK48T37_NVRAM_SIZE 0x7ff0
+-#define TODC_TYPE_MK48T37_SW_FLAGS 0
+-#define TODC_TYPE_MK48T37_YEAR 0x7fff
+-#define TODC_TYPE_MK48T37_MONTH 0x7ffe
+-#define TODC_TYPE_MK48T37_DOM 0x7ffd /* Day of Month */
+-#define TODC_TYPE_MK48T37_DOW 0x7ffc /* Day of Week */
+-#define TODC_TYPE_MK48T37_HOURS 0x7ffb
+-#define TODC_TYPE_MK48T37_MINUTES 0x7ffa
+-#define TODC_TYPE_MK48T37_SECONDS 0x7ff9
+-#define TODC_TYPE_MK48T37_CNTL_B 0x7ff9
+-#define TODC_TYPE_MK48T37_CNTL_A 0x7ff8
+-#define TODC_TYPE_MK48T37_WATCHDOG 0x7ff7
+-#define TODC_TYPE_MK48T37_INTERRUPTS 0x7ff6
+-#define TODC_TYPE_MK48T37_ALARM_DATE 0x7ff5
+-#define TODC_TYPE_MK48T37_ALARM_HOUR 0x7ff4
+-#define TODC_TYPE_MK48T37_ALARM_MINUTES 0x7ff3
+-#define TODC_TYPE_MK48T37_ALARM_SECONDS 0x7ff2
+-#define TODC_TYPE_MK48T37_CENTURY 0x7ff1
+-#define TODC_TYPE_MK48T37_FLAGS 0x7ff0
+-#define TODC_TYPE_MK48T37_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MK48T37_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_MK48T59_NVRAM_SIZE 0x1ff0
+-#define TODC_TYPE_MK48T59_SW_FLAGS 0
+-#define TODC_TYPE_MK48T59_YEAR 0x1fff
+-#define TODC_TYPE_MK48T59_MONTH 0x1ffe
+-#define TODC_TYPE_MK48T59_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_MK48T59_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_MK48T59_HOURS 0x1ffb
+-#define TODC_TYPE_MK48T59_MINUTES 0x1ffa
+-#define TODC_TYPE_MK48T59_SECONDS 0x1ff9
+-#define TODC_TYPE_MK48T59_CNTL_B 0x1ff9
+-#define TODC_TYPE_MK48T59_CNTL_A 0x1ff8
+-#define TODC_TYPE_MK48T59_WATCHDOG 0x1fff
+-#define TODC_TYPE_MK48T59_INTERRUPTS 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_DATE 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_HOUR 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_MINUTES 0x1fff
+-#define TODC_TYPE_MK48T59_ALARM_SECONDS 0x1fff
+-#define TODC_TYPE_MK48T59_CENTURY 0x1fff
+-#define TODC_TYPE_MK48T59_FLAGS 0x1fff
+-#define TODC_TYPE_MK48T59_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MK48T59_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1501_NVRAM_SIZE 0x100
+-#define TODC_TYPE_DS1501_SW_FLAGS TODC_FLAG_2_LEVEL_NVRAM
+-#define TODC_TYPE_DS1501_YEAR (TODC_TYPE_DS1501_NVRAM_SIZE + 0x06)
+-#define TODC_TYPE_DS1501_MONTH (TODC_TYPE_DS1501_NVRAM_SIZE + 0x05)
+-#define TODC_TYPE_DS1501_DOM (TODC_TYPE_DS1501_NVRAM_SIZE + 0x04)
+-#define TODC_TYPE_DS1501_DOW (TODC_TYPE_DS1501_NVRAM_SIZE + 0x03)
+-#define TODC_TYPE_DS1501_HOURS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x02)
+-#define TODC_TYPE_DS1501_MINUTES (TODC_TYPE_DS1501_NVRAM_SIZE + 0x01)
+-#define TODC_TYPE_DS1501_SECONDS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x00)
+-#define TODC_TYPE_DS1501_CNTL_B (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0f)
+-#define TODC_TYPE_DS1501_CNTL_A (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0f)
+-#define TODC_TYPE_DS1501_WATCHDOG (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)
+-#define TODC_TYPE_DS1501_INTERRUPTS (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)
+-#define TODC_TYPE_DS1501_ALARM_DATE (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0b)
+-#define TODC_TYPE_DS1501_ALARM_HOUR (TODC_TYPE_DS1501_NVRAM_SIZE + 0x0a)
+-#define TODC_TYPE_DS1501_ALARM_MINUTES (TODC_TYPE_DS1501_NVRAM_SIZE + 0x09)
+-#define TODC_TYPE_DS1501_ALARM_SECONDS (TODC_TYPE_DS1501_NVRAM_SIZE + 0x08)
+-#define TODC_TYPE_DS1501_CENTURY (TODC_TYPE_DS1501_NVRAM_SIZE + 0x07)
+-#define TODC_TYPE_DS1501_FLAGS (TODC_TYPE_DS1501_NVRAM_SIZE + 0xff)
+-#define TODC_TYPE_DS1501_NVRAM_ADDR_REG 0x10
+-#define TODC_TYPE_DS1501_NVRAM_DATA_REG 0x13
+-
+-#define TODC_TYPE_DS1553_NVRAM_SIZE 0x1ff0
+-#define TODC_TYPE_DS1553_SW_FLAGS 0
+-#define TODC_TYPE_DS1553_YEAR 0x1fff
+-#define TODC_TYPE_DS1553_MONTH 0x1ffe
+-#define TODC_TYPE_DS1553_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_DS1553_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_DS1553_HOURS 0x1ffb
+-#define TODC_TYPE_DS1553_MINUTES 0x1ffa
+-#define TODC_TYPE_DS1553_SECONDS 0x1ff9
+-#define TODC_TYPE_DS1553_CNTL_B 0x1ff9
+-#define TODC_TYPE_DS1553_CNTL_A 0x1ff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1553_WATCHDOG 0x1ff7
+-#define TODC_TYPE_DS1553_INTERRUPTS 0x1ff6
+-#define TODC_TYPE_DS1553_ALARM_DATE 0x1ff5
+-#define TODC_TYPE_DS1553_ALARM_HOUR 0x1ff4
+-#define TODC_TYPE_DS1553_ALARM_MINUTES 0x1ff3
+-#define TODC_TYPE_DS1553_ALARM_SECONDS 0x1ff2
+-#define TODC_TYPE_DS1553_CENTURY 0x1ff8
+-#define TODC_TYPE_DS1553_FLAGS 0x1ff0
+-#define TODC_TYPE_DS1553_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1553_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1557_NVRAM_SIZE 0x7fff0
+-#define TODC_TYPE_DS1557_SW_FLAGS 0
+-#define TODC_TYPE_DS1557_YEAR 0x7ffff
+-#define TODC_TYPE_DS1557_MONTH 0x7fffe
+-#define TODC_TYPE_DS1557_DOM 0x7fffd /* Day of Month */
+-#define TODC_TYPE_DS1557_DOW 0x7fffc /* Day of Week */
+-#define TODC_TYPE_DS1557_HOURS 0x7fffb
+-#define TODC_TYPE_DS1557_MINUTES 0x7fffa
+-#define TODC_TYPE_DS1557_SECONDS 0x7fff9
+-#define TODC_TYPE_DS1557_CNTL_B 0x7fff9
+-#define TODC_TYPE_DS1557_CNTL_A 0x7fff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1557_WATCHDOG 0x7fff7
+-#define TODC_TYPE_DS1557_INTERRUPTS 0x7fff6
+-#define TODC_TYPE_DS1557_ALARM_DATE 0x7fff5
+-#define TODC_TYPE_DS1557_ALARM_HOUR 0x7fff4
+-#define TODC_TYPE_DS1557_ALARM_MINUTES 0x7fff3
+-#define TODC_TYPE_DS1557_ALARM_SECONDS 0x7fff2
+-#define TODC_TYPE_DS1557_CENTURY 0x7fff8
+-#define TODC_TYPE_DS1557_FLAGS 0x7fff0
+-#define TODC_TYPE_DS1557_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1557_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1643_NVRAM_SIZE 0x1ff8
+-#define TODC_TYPE_DS1643_SW_FLAGS 0
+-#define TODC_TYPE_DS1643_YEAR 0x1fff
+-#define TODC_TYPE_DS1643_MONTH 0x1ffe
+-#define TODC_TYPE_DS1643_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_DS1643_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_DS1643_HOURS 0x1ffb
+-#define TODC_TYPE_DS1643_MINUTES 0x1ffa
+-#define TODC_TYPE_DS1643_SECONDS 0x1ff9
+-#define TODC_TYPE_DS1643_CNTL_B 0x1ff9
+-#define TODC_TYPE_DS1643_CNTL_A 0x1ff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1643_WATCHDOG 0x1fff
+-#define TODC_TYPE_DS1643_INTERRUPTS 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_DATE 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_HOUR 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_MINUTES 0x1fff
+-#define TODC_TYPE_DS1643_ALARM_SECONDS 0x1fff
+-#define TODC_TYPE_DS1643_CENTURY 0x1ff8
+-#define TODC_TYPE_DS1643_FLAGS 0x1fff
+-#define TODC_TYPE_DS1643_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1643_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1693_NVRAM_SIZE 0 /* Not handled yet */
+-#define TODC_TYPE_DS1693_SW_FLAGS 0
+-#define TODC_TYPE_DS1693_YEAR 0x09
+-#define TODC_TYPE_DS1693_MONTH 0x08
+-#define TODC_TYPE_DS1693_DOM 0x07 /* Day of Month */
+-#define TODC_TYPE_DS1693_DOW 0x06 /* Day of Week */
+-#define TODC_TYPE_DS1693_HOURS 0x04
+-#define TODC_TYPE_DS1693_MINUTES 0x02
+-#define TODC_TYPE_DS1693_SECONDS 0x00
+-#define TODC_TYPE_DS1693_CNTL_B 0x0b
+-#define TODC_TYPE_DS1693_CNTL_A 0x0a
+-#define TODC_TYPE_DS1693_WATCHDOG 0xff
+-#define TODC_TYPE_DS1693_INTERRUPTS 0xff
+-#define TODC_TYPE_DS1693_ALARM_DATE 0x49
+-#define TODC_TYPE_DS1693_ALARM_HOUR 0x05
+-#define TODC_TYPE_DS1693_ALARM_MINUTES 0x03
+-#define TODC_TYPE_DS1693_ALARM_SECONDS 0x01
+-#define TODC_TYPE_DS1693_CENTURY 0x48
+-#define TODC_TYPE_DS1693_FLAGS 0xff
+-#define TODC_TYPE_DS1693_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1693_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1743_NVRAM_SIZE 0x1ff8
+-#define TODC_TYPE_DS1743_SW_FLAGS 0
+-#define TODC_TYPE_DS1743_YEAR 0x1fff
+-#define TODC_TYPE_DS1743_MONTH 0x1ffe
+-#define TODC_TYPE_DS1743_DOM 0x1ffd /* Day of Month */
+-#define TODC_TYPE_DS1743_DOW 0x1ffc /* Day of Week */
+-#define TODC_TYPE_DS1743_HOURS 0x1ffb
+-#define TODC_TYPE_DS1743_MINUTES 0x1ffa
+-#define TODC_TYPE_DS1743_SECONDS 0x1ff9
+-#define TODC_TYPE_DS1743_CNTL_B 0x1ff9
+-#define TODC_TYPE_DS1743_CNTL_A 0x1ff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1743_WATCHDOG 0x1fff
+-#define TODC_TYPE_DS1743_INTERRUPTS 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_DATE 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_HOUR 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_MINUTES 0x1fff
+-#define TODC_TYPE_DS1743_ALARM_SECONDS 0x1fff
+-#define TODC_TYPE_DS1743_CENTURY 0x1ff8
+-#define TODC_TYPE_DS1743_FLAGS 0x1fff
+-#define TODC_TYPE_DS1743_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1743_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1746_NVRAM_SIZE 0x1fff8
+-#define TODC_TYPE_DS1746_SW_FLAGS 0
+-#define TODC_TYPE_DS1746_YEAR 0x1ffff
+-#define TODC_TYPE_DS1746_MONTH 0x1fffe
+-#define TODC_TYPE_DS1746_DOM 0x1fffd /* Day of Month */
+-#define TODC_TYPE_DS1746_DOW 0x1fffc /* Day of Week */
+-#define TODC_TYPE_DS1746_HOURS 0x1fffb
+-#define TODC_TYPE_DS1746_MINUTES 0x1fffa
+-#define TODC_TYPE_DS1746_SECONDS 0x1fff9
+-#define TODC_TYPE_DS1746_CNTL_B 0x1fff9
+-#define TODC_TYPE_DS1746_CNTL_A 0x1fff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1746_WATCHDOG 0x00000
+-#define TODC_TYPE_DS1746_INTERRUPTS 0x00000
+-#define TODC_TYPE_DS1746_ALARM_DATE 0x00000
+-#define TODC_TYPE_DS1746_ALARM_HOUR 0x00000
+-#define TODC_TYPE_DS1746_ALARM_MINUTES 0x00000
+-#define TODC_TYPE_DS1746_ALARM_SECONDS 0x00000
+-#define TODC_TYPE_DS1746_CENTURY 0x00000
+-#define TODC_TYPE_DS1746_FLAGS 0x00000
+-#define TODC_TYPE_DS1746_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1746_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS1747_NVRAM_SIZE 0x7fff8
+-#define TODC_TYPE_DS1747_SW_FLAGS 0
+-#define TODC_TYPE_DS1747_YEAR 0x7ffff
+-#define TODC_TYPE_DS1747_MONTH 0x7fffe
+-#define TODC_TYPE_DS1747_DOM 0x7fffd /* Day of Month */
+-#define TODC_TYPE_DS1747_DOW 0x7fffc /* Day of Week */
+-#define TODC_TYPE_DS1747_HOURS 0x7fffb
+-#define TODC_TYPE_DS1747_MINUTES 0x7fffa
+-#define TODC_TYPE_DS1747_SECONDS 0x7fff9
+-#define TODC_TYPE_DS1747_CNTL_B 0x7fff9
+-#define TODC_TYPE_DS1747_CNTL_A 0x7fff8 /* control_a R/W regs */
+-#define TODC_TYPE_DS1747_WATCHDOG 0x00000
+-#define TODC_TYPE_DS1747_INTERRUPTS 0x00000
+-#define TODC_TYPE_DS1747_ALARM_DATE 0x00000
+-#define TODC_TYPE_DS1747_ALARM_HOUR 0x00000
+-#define TODC_TYPE_DS1747_ALARM_MINUTES 0x00000
+-#define TODC_TYPE_DS1747_ALARM_SECONDS 0x00000
+-#define TODC_TYPE_DS1747_CENTURY 0x00000
+-#define TODC_TYPE_DS1747_FLAGS 0x00000
+-#define TODC_TYPE_DS1747_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_DS1747_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_DS17285_NVRAM_SIZE (0x1000-0x80) /* 4Kx8 NVRAM (minus RTC regs) */
+-#define TODC_TYPE_DS17285_SW_FLAGS TODC_FLAG_2_LEVEL_NVRAM
+-#define TODC_TYPE_DS17285_SECONDS (TODC_TYPE_DS17285_NVRAM_SIZE + 0x00)
+-#define TODC_TYPE_DS17285_ALARM_SECONDS (TODC_TYPE_DS17285_NVRAM_SIZE + 0x01)
+-#define TODC_TYPE_DS17285_MINUTES (TODC_TYPE_DS17285_NVRAM_SIZE + 0x02)
+-#define TODC_TYPE_DS17285_ALARM_MINUTES (TODC_TYPE_DS17285_NVRAM_SIZE + 0x03)
+-#define TODC_TYPE_DS17285_HOURS (TODC_TYPE_DS17285_NVRAM_SIZE + 0x04)
+-#define TODC_TYPE_DS17285_ALARM_HOUR (TODC_TYPE_DS17285_NVRAM_SIZE + 0x05)
+-#define TODC_TYPE_DS17285_DOW (TODC_TYPE_DS17285_NVRAM_SIZE + 0x06)
+-#define TODC_TYPE_DS17285_DOM (TODC_TYPE_DS17285_NVRAM_SIZE + 0x07)
+-#define TODC_TYPE_DS17285_MONTH (TODC_TYPE_DS17285_NVRAM_SIZE + 0x08)
+-#define TODC_TYPE_DS17285_YEAR (TODC_TYPE_DS17285_NVRAM_SIZE + 0x09)
+-#define TODC_TYPE_DS17285_CNTL_A (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0A)
+-#define TODC_TYPE_DS17285_CNTL_B (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0B)
+-#define TODC_TYPE_DS17285_CNTL_C (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0C)
+-#define TODC_TYPE_DS17285_CNTL_D (TODC_TYPE_DS17285_NVRAM_SIZE + 0x0D)
+-#define TODC_TYPE_DS17285_WATCHDOG 0
+-#define TODC_TYPE_DS17285_INTERRUPTS 0
+-#define TODC_TYPE_DS17285_ALARM_DATE 0
+-#define TODC_TYPE_DS17285_CENTURY 0
+-#define TODC_TYPE_DS17285_FLAGS 0
+-#define TODC_TYPE_DS17285_NVRAM_ADDR_REG 0x50
+-#define TODC_TYPE_DS17285_NVRAM_DATA_REG 0x53
+-
+-#define TODC_TYPE_MC146818_NVRAM_SIZE 0 /* XXXX */
+-#define TODC_TYPE_MC146818_SW_FLAGS 0
+-#define TODC_TYPE_MC146818_YEAR 0x09
+-#define TODC_TYPE_MC146818_MONTH 0x08
+-#define TODC_TYPE_MC146818_DOM 0x07 /* Day of Month */
+-#define TODC_TYPE_MC146818_DOW 0x06 /* Day of Week */
+-#define TODC_TYPE_MC146818_HOURS 0x04
+-#define TODC_TYPE_MC146818_MINUTES 0x02
+-#define TODC_TYPE_MC146818_SECONDS 0x00
+-#define TODC_TYPE_MC146818_CNTL_B 0x0a
+-#define TODC_TYPE_MC146818_CNTL_A 0x0b /* control_a R/W regs */
+-#define TODC_TYPE_MC146818_WATCHDOG 0
+-#define TODC_TYPE_MC146818_INTERRUPTS 0x0c
+-#define TODC_TYPE_MC146818_ALARM_DATE 0xff
+-#define TODC_TYPE_MC146818_ALARM_HOUR 0x05
+-#define TODC_TYPE_MC146818_ALARM_MINUTES 0x03
+-#define TODC_TYPE_MC146818_ALARM_SECONDS 0x01
+-#define TODC_TYPE_MC146818_CENTURY 0xff
+-#define TODC_TYPE_MC146818_FLAGS 0xff
+-#define TODC_TYPE_MC146818_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_MC146818_NVRAM_DATA_REG 0
+-
+-#define TODC_TYPE_PC97307_NVRAM_SIZE 0 /* No NVRAM? */
+-#define TODC_TYPE_PC97307_SW_FLAGS 0
+-#define TODC_TYPE_PC97307_YEAR 0x09
+-#define TODC_TYPE_PC97307_MONTH 0x08
+-#define TODC_TYPE_PC97307_DOM 0x07 /* Day of Month */
+-#define TODC_TYPE_PC97307_DOW 0x06 /* Day of Week */
+-#define TODC_TYPE_PC97307_HOURS 0x04
+-#define TODC_TYPE_PC97307_MINUTES 0x02
+-#define TODC_TYPE_PC97307_SECONDS 0x00
+-#define TODC_TYPE_PC97307_CNTL_B 0x0a
+-#define TODC_TYPE_PC97307_CNTL_A 0x0b /* control_a R/W regs */
+-#define TODC_TYPE_PC97307_WATCHDOG 0x0c
+-#define TODC_TYPE_PC97307_INTERRUPTS 0x0d
+-#define TODC_TYPE_PC97307_ALARM_DATE 0xff
+-#define TODC_TYPE_PC97307_ALARM_HOUR 0x05
+-#define TODC_TYPE_PC97307_ALARM_MINUTES 0x03
+-#define TODC_TYPE_PC97307_ALARM_SECONDS 0x01
+-#define TODC_TYPE_PC97307_CENTURY 0xff
+-#define TODC_TYPE_PC97307_FLAGS 0xff
+-#define TODC_TYPE_PC97307_NVRAM_ADDR_REG 0
+-#define TODC_TYPE_PC97307_NVRAM_DATA_REG 0
+-
+-/*
+- * Define macros to allocate and init the todc_info_t table that will
+- * be used by the todc_time.c routines.
+- */
+-#define TODC_ALLOC() \
+- static todc_info_t todc_info_alloc; \
+- todc_info_t *todc_info = &todc_info_alloc;
+-
+-#define TODC_INIT(clock_type, as0, as1, data, bits) { \
+- todc_info->rtc_type = clock_type; \
+- \
+- todc_info->nvram_as0 = (unsigned int)(as0); \
+- todc_info->nvram_as1 = (unsigned int)(as1); \
+- todc_info->nvram_data = (unsigned int)(data); \
+- \
+- todc_info->as0_bits = (bits); \
+- \
+- todc_info->nvram_size = clock_type ##_NVRAM_SIZE; \
+- todc_info->sw_flags = clock_type ##_SW_FLAGS; \
+- \
+- todc_info->year = clock_type ##_YEAR; \
+- todc_info->month = clock_type ##_MONTH; \
+- todc_info->day_of_month = clock_type ##_DOM; \
+- todc_info->day_of_week = clock_type ##_DOW; \
+- todc_info->hours = clock_type ##_HOURS; \
+- todc_info->minutes = clock_type ##_MINUTES; \
+- todc_info->seconds = clock_type ##_SECONDS; \
+- todc_info->control_b = clock_type ##_CNTL_B; \
+- todc_info->control_a = clock_type ##_CNTL_A; \
+- todc_info->watchdog = clock_type ##_WATCHDOG; \
+- todc_info->interrupts = clock_type ##_INTERRUPTS; \
+- todc_info->alarm_date = clock_type ##_ALARM_DATE; \
+- todc_info->alarm_hour = clock_type ##_ALARM_HOUR; \
+- todc_info->alarm_minutes = clock_type ##_ALARM_MINUTES; \
+- todc_info->alarm_seconds = clock_type ##_ALARM_SECONDS; \
+- todc_info->century = clock_type ##_CENTURY; \
+- todc_info->flags = clock_type ##_FLAGS; \
+- \
+- todc_info->nvram_addr_reg = clock_type ##_NVRAM_ADDR_REG; \
+- todc_info->nvram_data_reg = clock_type ##_NVRAM_DATA_REG; \
+-}
+-
+-extern todc_info_t *todc_info;
+-
+-unsigned char todc_direct_read_val(int addr);
+-void todc_direct_write_val(int addr, unsigned char val);
+-unsigned char todc_m48txx_read_val(int addr);
+-void todc_m48txx_write_val(int addr, unsigned char val);
+-unsigned char todc_mc146818_read_val(int addr);
+-void todc_mc146818_write_val(int addr, unsigned char val);
+-
+-long todc_time_init(void);
+-void todc_get_rtc_time(struct rtc_time *);
+-int todc_set_rtc_time(struct rtc_time *);
+-void todc_calibrate_decr(void);
+-
+-#endif /* __PPC_KERNEL_TODC_H */
+Index: working-2.6/arch/powerpc/sysdev/Makefile
+===================================================================
+--- working-2.6.orig/arch/powerpc/sysdev/Makefile 2006-10-03 14:57:15.000000000 +1000
++++ working-2.6/arch/powerpc/sysdev/Makefile 2006-10-03 16:31:48.000000000 +1000
+@@ -10,7 +10,6 @@ obj-$(CONFIG_40x) += dcr.o
+ obj-$(CONFIG_U3_DART) += dart_iommu.o
+ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o
+ obj-$(CONFIG_FSL_SOC) += fsl_soc.o
+-obj-$(CONFIG_PPC_TODC) += todc.o
+ obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
+
+ ifeq ($(CONFIG_PPC_MERGE),y)
+Index: working-2.6/arch/powerpc/Kconfig
+===================================================================
+--- working-2.6.orig/arch/powerpc/Kconfig 2006-10-03 16:26:20.000000000 +1000
++++ working-2.6/arch/powerpc/Kconfig 2006-10-03 16:33:10.000000000 +1000
+@@ -584,12 +584,6 @@ config TAU_AVERAGE
+
+ If in doubt, say N here.
+
+-config PPC_TODC
+- depends on EMBEDDED6xx
+- bool "Generic Time-of-day Clock (TODC) support"
+- ---help---
+- This adds support for many TODC/RTC chips.
+-
+ endmenu
+
+ source arch/powerpc/platforms/embedded6xx/Kconfig
+
+
diff --git a/packages/linux/linux-dht-walnut_2.6.20.bb b/packages/linux/linux-dht-walnut_2.6.20.bb
index 89a776e075..61836ac204 100644
--- a/packages/linux/linux-dht-walnut_2.6.20.bb
+++ b/packages/linux/linux-dht-walnut_2.6.20.bb
@@ -1,65 +1,43 @@
# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
# Released under the MIT license (see packages/COPYING)
-SECTION = "kernel"
+require linux.inc
+
DESCRIPTION = "Linux kernel for DHT-Walnut (ppc) machine"
-LICENSE = "GPL"
-PR = "r3"
+
+PR = "r4"
DEPENDS = "u-boot"
COMPATIBLE_MACHINE = "dht-walnut"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://dht-walnut_defconfig"
-
+ file://defconfig"
S = "${WORKDIR}/linux-${PV}"
-inherit kernel
-
-
FILES_kernel-image = "/boot/zImage.elf"
export OS = "Linux"
ARCH = "ppc"
-KERNEL_OUTPUT = "arch/ppc/boot/images/zImage.elf"
-
-
-
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/dht-walnut_defconfig ${S}/.config
-}
-
do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
-
-
-
-
do_install_append () {
install -d ${DEPLOY_DIR_IMAGE}
- install -m 0755 arch/ppc/boot/images/zImage.elf \
+ if [ -e arch/ppc/boot/images/zImage.elf ] ; then
+ cp -a arch/ppc/boot/images/zImage.elf arch/ppc/boot/images/zImage
+ install -m 0755 arch/ppc/boot/images/zImage.elf \
${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ fi
install -m 0755 vmlinux ${DEPLOY_DIR_IMAGE}/
- powerpc${TARGET_VENDOR}-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S \
- ${DEPLOY_DIR_IMAGE}/vmlinux ${DEPLOY_DIR_IMAGE}/linux.bin
- gzip -f -9 ${DEPLOY_DIR_IMAGE}/linux.bin
- mkimage -A ppc -O linux -T kernel -C gzip -a 0 -e 0 -n "ppc405"+${PV} -d ${DEPLOY_DIR_IMAGE}/linux.bin.gz \
- ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
- rm ${DEPLOY_DIR_IMAGE}/vmlinux
- rm ${DEPLOY_DIR_IMAGE}/linux.bin.gz
-
-
}
diff --git a/packages/linux/linux-dht-walnut_2.6.23.bb b/packages/linux/linux-dht-walnut_2.6.23.bb
new file mode 100644
index 0000000000..181488190e
--- /dev/null
+++ b/packages/linux/linux-dht-walnut_2.6.23.bb
@@ -0,0 +1,56 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+require linux.inc
+
+DESCRIPTION = "Linux kernel for DHT-Walnut (ppc) machine"
+
+DEFAULT_PREFERENCE = "-1"
+
+PR = "r0"
+DEPENDS = "u-boot"
+
+COMPATIBLE_MACHINE = "dht-walnut"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-${PV}"
+
+FILES_kernel-image = "/boot/zImage.elf"
+
+export OS = "Linux"
+ARCH = "ppc"
+
+do_stage_append () {
+#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
+
+ install -d ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+}
+
+do_install_append () {
+ install -d ${DEPLOY_DIR_IMAGE}
+ if [ -e arch/ppc/boot/images/zImage.elf ] ; then
+ cp -a arch/ppc/boot/images/zImage.elf arch/ppc/boot/images/zImage
+ install -m 0755 arch/ppc/boot/images/zImage.elf \
+ ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.elf
+ fi
+ install -m 0755 vmlinux ${DEPLOY_DIR_IMAGE}/
+}
+
+
+pkg_postinst_kernel () {
+ true
+}
+
+pkg_postrm_kernel () {
+ true
+}
+
+
+
+
diff --git a/packages/linux/linux-efika_2.6.20.20.bb b/packages/linux/linux-efika_2.6.20.20.bb
index 630e5a6274..8ef0af6c78 100644
--- a/packages/linux/linux-efika_2.6.20.20.bb
+++ b/packages/linux/linux-efika_2.6.20.20.bb
@@ -63,12 +63,12 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
install -d ${STAGING_KERNEL_DIR}/include/asm
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
do_deploy() {
diff --git a/packages/linux/linux-efika_2.6.20.bb b/packages/linux/linux-efika_2.6.20.bb
index ddf3ee3257..87c769a1ae 100644
--- a/packages/linux/linux-efika_2.6.20.bb
+++ b/packages/linux/linux-efika_2.6.20.bb
@@ -60,12 +60,12 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
install -d ${STAGING_KERNEL_DIR}/include/asm
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
diff --git a/packages/linux/linux-efika_2.6.21+git.bb b/packages/linux/linux-efika_2.6.21+git.bb
index 80a4e69a4a..5f8427ef1e 100644
--- a/packages/linux/linux-efika_2.6.21+git.bb
+++ b/packages/linux/linux-efika_2.6.21+git.bb
@@ -47,12 +47,12 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
install -d ${STAGING_KERNEL_DIR}/include/asm
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
do_deploy() {
diff --git a/packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/.mtn2git_empty
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/asus620/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/asus620/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/asus620/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/asus620/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig
index 04946541d5..68e39e7019 100644
--- a/packages/linux/linux-handhelds-2.6/asus620/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/asus620/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:42 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:31 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -378,20 +378,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -975,12 +1028,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1029,8 +1083,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1096,17 +1156,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/asus730/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/asus730/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/asus730/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/asus730/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig
index afd7de8af5..3c1cfbad8f 100644
--- a/packages/linux/linux-handhelds-2.6/asus730/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/asus730/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:43 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:31 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -384,20 +384,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -1079,12 +1132,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1139,8 +1193,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1217,17 +1277,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/aximx50/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig
index 3a610fa2a2..8e845fb396 100644
--- a/packages/linux/linux-handhelds-2.6/aximx50/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/aximx50/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:43 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -378,20 +378,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -960,12 +1013,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1014,8 +1068,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1081,17 +1141,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/eteng500/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig
index 4c1a93ad73..49a907e5fe 100644
--- a/packages/linux/linux-handhelds-2.6/eteng500/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/eteng500/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:44 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -367,20 +367,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -951,12 +1004,13 @@ CONFIG_USB_S3C2410=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
@@ -1004,8 +1058,14 @@ CONFIG_RTC_DRV_S3C=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1071,17 +1131,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/ghi270/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h1910/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h1910/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h1910/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h1910/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig
index 2e57a63702..dd20e0baff 100644
--- a/packages/linux/linux-handhelds-2.6/h1910/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h1910/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:44 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -376,20 +376,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -1023,12 +1076,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1084,8 +1138,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1151,17 +1211,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h2200/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h2200/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
index 667f4f478e..532752a44f 100644
--- a/packages/linux/linux-handhelds-2.6/h2200/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:45 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:33 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -384,20 +384,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -510,8 +563,8 @@ CONFIG_BT_HCIUART_BCSP=y
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_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
CONFIG_IEEE80211_SOFTMAC=m
# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
CONFIG_WIRELESS_EXT=y
@@ -1414,12 +1467,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
CONFIG_USB_PXA2XX_GPIO=y
@@ -1474,8 +1528,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1552,17 +1612,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1710,7 +1769,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h3600/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h3600/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3600/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h3600/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig
index d30992b494..2a29e61877 100644
--- a/packages/linux/linux-handhelds-2.6/h3600/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3600/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:45 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:33 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -163,7 +163,7 @@ CONFIG_SA1100_H3XXX=y
# CONFIG_SA1100_SIMPAD is not set
# CONFIG_SA1100_SSP is not set
# CONFIG_H3600_SLEEVE is not set
-CONFIG_SA1100_USB=y
+CONFIG_SA1100_USB=m
# CONFIG_SA1100_USB_NETLINK is not set
# CONFIG_SA1100_USB_CHAR is not set
CONFIG_IPAQ_H3600_LCD=y
@@ -355,20 +355,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -992,8 +1045,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1070,17 +1129,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h3800/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h3800/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3800/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h3800/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig
index ffcb91eb32..2132550832 100644
--- a/packages/linux/linux-handhelds-2.6/h3800/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3800/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:46 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:34 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -162,7 +162,7 @@ CONFIG_SA1100_H3XXX=y
# CONFIG_SA1100_SHANNON is not set
# CONFIG_SA1100_SIMPAD is not set
# CONFIG_SA1100_SSP is not set
-CONFIG_SA1100_USB=y
+CONFIG_SA1100_USB=m
# CONFIG_SA1100_USB_NETLINK is not set
# CONFIG_SA1100_USB_CHAR is not set
@@ -353,20 +353,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -990,8 +1043,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1068,17 +1127,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h3900/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h3900/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3900/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h3900/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig
index dd88630b2d..53bbe32ec0 100644
--- a/packages/linux/linux-handhelds-2.6/h3900/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h3900/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:46 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:34 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -377,20 +377,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -1046,12 +1099,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1108,8 +1162,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1186,17 +1246,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h4000/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h4000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h4000/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h4000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig
index f04dad63cb..d3b7c58d08 100644
--- a/packages/linux/linux-handhelds-2.6/h4000/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h4000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:47 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:34 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -390,20 +390,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -506,7 +559,12 @@ CONFIG_BT_HCIUART_BCSP=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 is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
#
@@ -1167,12 +1225,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
CONFIG_USB_PXA2XX_GPIO=y
@@ -1228,8 +1287,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1306,17 +1371,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1456,7 +1520,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1464,7 +1528,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h5000/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/h5000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h5000/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/h5000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig
index 004c26cf3b..b72cc16514 100644
--- a/packages/linux/linux-handhelds-2.6/h5000/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h5000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:47 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:35 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -377,20 +377,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -746,9 +799,9 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_GPIODEV_KEYS=y
-# CONFIG_GPIODEV_KEYS2 is not set
-CONFIG_GPIODEV_DIAGONAL=y
+# CONFIG_GPIODEV_KEYS is not set
+CONFIG_GPIODEV_KEYS2=y
+# CONFIG_GPIODEV_DIAGONAL is not set
# CONFIG_KEYBOARD_GPIO is not set
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
@@ -829,7 +882,42 @@ CONFIG_LEGACY_PTY_COUNT=32
#
# I2C support
#
-# CONFIG_I2C is not set
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
@@ -845,6 +933,7 @@ CONFIG_W1=y
#
# 1-wire Bus Masters
#
+# CONFIG_W1_MASTER_DS2482 is not set
CONFIG_W1_MASTER_DS1WM=y
#
@@ -1011,7 +1100,82 @@ CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
-# CONFIG_SND is not set
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_H5XXX_AK4535 is not set
+# CONFIG_SND_PXA2XX_AC97 is not set
+# CONFIG_SND_RECON is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+# CONFIG_SND_PXA2XX_SOC_MAGICIAN is not set
+# CONFIG_SND_PXA2XX_SOC_BLUEANGEL is not set
+CONFIG_SND_PXA2XX_SOC_H5000=m
+
+#
+# SoC Audio for the Freescale i.MX
+#
+
+#
+# SoC Audio for the Samsung S3C24XX
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM8956 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8976 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8980 is not set
+# CONFIG_SND_SOC_WM9705 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+CONFIG_SND_SOC_AK4535=m
#
# Open Sound System
@@ -1055,12 +1219,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1096,8 +1261,14 @@ CONFIG_RTC_INTF_DEV=y
# RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_SA1100=y
# CONFIG_RTC_DRV_TEST is not set
@@ -1109,8 +1280,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1187,17 +1364,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcalpine/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig
index ad409c78b0..457ed57863 100644
--- a/packages/linux/linux-handhelds-2.6/htcalpine/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcalpine/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:49 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:36 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -376,20 +376,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -970,12 +1023,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1024,8 +1078,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1091,17 +1151,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcapache/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig
index 8ffb03322b..24a0ba0bb3 100644
--- a/packages/linux/linux-handhelds-2.6/htcapache/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcapache/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:49 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:37 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -376,20 +376,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -445,7 +498,12 @@ CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+# CONFIG_IEEE80211_CRYPT_WEP is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
#
@@ -1050,12 +1108,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1110,8 +1169,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1177,17 +1242,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1327,7 +1391,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1335,7 +1399,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcbeetles/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig
index db1f76fbfa..bc71c235e3 100644
--- a/packages/linux/linux-handhelds-2.6/htcbeetles/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcbeetles/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:50 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:37 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -380,20 +380,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -976,12 +1029,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1031,8 +1085,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1098,17 +1158,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig
index edf57d037b..41012c93a0 100644
--- a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcblueangel/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:50 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:37 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -397,20 +397,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -470,7 +523,12 @@ CONFIG_BT_HCIUART_BCSP=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 is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
#
@@ -1063,13 +1121,13 @@ CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
@@ -1188,12 +1246,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
CONFIG_USB_PXA2XX_GPIO=y
@@ -1249,12 +1308,12 @@ CONFIG_RTC_DRV_SA1100=y
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=m
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
+CONFIG_JBD=m
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
@@ -1333,17 +1392,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1483,7 +1541,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1491,7 +1549,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htchimalaya/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig
index d67400b02b..51cf1468da 100644
--- a/packages/linux/linux-handhelds-2.6/htchimalaya/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htchimalaya/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:51 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:38 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -378,20 +378,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -972,12 +1025,13 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1027,8 +1081,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1094,17 +1154,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcsable/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig
index d81cb02201..9aea8e2d09 100644
--- a/packages/linux/linux-handhelds-2.6/htcsable/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcsable/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:51 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:38 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -380,20 +380,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -449,7 +502,12 @@ CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+# CONFIG_IEEE80211_CRYPT_WEP is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
#
@@ -1065,12 +1123,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1126,8 +1185,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1204,17 +1269,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1354,7 +1418,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1362,7 +1426,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig
index c8ee782d61..538258dca9 100644
--- a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcuniversal/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:52 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:39 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -387,20 +387,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -456,7 +509,12 @@ CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+# CONFIG_IEEE80211_CRYPT_WEP is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
#
@@ -1082,12 +1140,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1143,11 +1202,14 @@ CONFIG_RTC_DRV_SA1100=y
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
+CONFIG_JBD=m
# 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
@@ -1213,17 +1275,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1363,7 +1424,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1371,7 +1432,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig
index 13038ab67e..c4f636f1ba 100644
--- a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/htcwallaby/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:52 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:39 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -161,7 +161,7 @@ CONFIG_SA1100_XDA=y
# CONFIG_SA1100_SHANNON is not set
# CONFIG_SA1100_SIMPAD is not set
# CONFIG_SA1100_SSP is not set
-CONFIG_SA1100_USB=y
+CONFIG_SA1100_USB=m
# CONFIG_SA1100_USB_NETLINK is not set
# CONFIG_SA1100_USB_CHAR is not set
@@ -352,20 +352,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -991,8 +1044,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1069,17 +1128,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig
index 9a4f7cb072..d8a7c87f24 100644
--- a/packages/linux/linux-handhelds-2.6/hx4700/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/hx4700/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:48 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:35 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -392,20 +392,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -518,8 +571,8 @@ CONFIG_BT_HCIUART_BCSP=y
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_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
CONFIG_IEEE80211_SOFTMAC=m
# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
CONFIG_WIRELESS_EXT=y
@@ -1430,12 +1483,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
CONFIG_USB_PXA2XX_GPIO=y
@@ -1491,8 +1545,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1569,17 +1629,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1727,7 +1786,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/looxc550/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig
index 48eee4b67f..065435406d 100644
--- a/packages/linux/linux-handhelds-2.6/looxc550/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/looxc550/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:53 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:39 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -374,20 +374,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -973,12 +1026,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1027,8 +1081,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1094,17 +1154,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/magician/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/magician/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/magician/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/magician/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig
index 47a436084a..e3712ec2e5 100644
--- a/packages/linux/linux-handhelds-2.6/magician/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/magician/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:48 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:36 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -381,20 +381,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -1053,13 +1106,13 @@ CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
@@ -1285,12 +1338,13 @@ CONFIG_USB_PXA27X=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
# CONFIG_USB_PXA2XX_GPIO is not set
@@ -1345,8 +1399,14 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1423,17 +1483,16 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/rx1950/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig
index 2f5423c28a..5c59ed5282 100644
--- a/packages/linux/linux-handhelds-2.6/rx1950/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/rx1950/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:53 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:40 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -369,20 +369,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -1008,12 +1061,13 @@ CONFIG_USB_S3C2410=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
@@ -1061,8 +1115,14 @@ CONFIG_RTC_DRV_S3C=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1128,17 +1188,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/.mtn2git_empty b/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/.mtn2git_empty
diff --git a/packages/linux/linux-handhelds-2.6/rx3000/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig
index 0100f9b641..76a2c5fc0d 100644
--- a/packages/linux/linux-handhelds-2.6/rx3000/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/rx3000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh19
-# Thu Dec 13 13:04:54 2007
+# Linux kernel version: 2.6.21-hh20
+# Wed Dec 26 16:55:40 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -189,7 +189,7 @@ CONFIG_RX3000_BLUETOOTH=m
CONFIG_RX3000_BUTTONS=y
CONFIG_RX3000_SERIAL=y
CONFIG_RX3000_TS=y
-CONFIG_RX3000_UDC=y
+CONFIG_RX3000_UDC=m
# CONFIG_ARCH_S3C2440 is not set
# CONFIG_MACH_NEXCODER_2440 is not set
# CONFIG_MACH_G500 is not set
@@ -376,20 +376,73 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
# CONFIG_IP_NF_ARPTABLES is not set
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_IP6_NF_IPTABLES=m
+# CONFIG_IP6_NF_MATCH_RT is not set
+# CONFIG_IP6_NF_MATCH_OPTS is not set
+# CONFIG_IP6_NF_MATCH_FRAG is not set
+# CONFIG_IP6_NF_MATCH_HL is not set
+# CONFIG_IP6_NF_MATCH_OWNER is not set
+# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
+# CONFIG_IP6_NF_MATCH_AH is not set
+# CONFIG_IP6_NF_MATCH_MH is not set
+# CONFIG_IP6_NF_MATCH_EUI64 is not set
+# CONFIG_IP6_NF_FILTER is not set
+# CONFIG_IP6_NF_MANGLE is not set
+# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -445,7 +498,12 @@ CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+# CONFIG_IEEE80211_CRYPT_WEP is not set
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+# CONFIG_IEEE80211_SOFTMAC is not set
CONFIG_WIRELESS_EXT=y
#
@@ -1119,12 +1177,13 @@ CONFIG_USB_S3C2410=y
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_CHAR is not set
@@ -1179,8 +1238,14 @@ CONFIG_RTC_DRV_S3C=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -1246,17 +1311,16 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -1398,7 +1462,7 @@ CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
+CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
@@ -1406,7 +1470,7 @@ CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb
deleted file mode 100644
index 275602762d..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r2"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb
index ae3741e872..a9dd604d8f 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh17.bb
@@ -5,6 +5,10 @@ PR = "r3"
DEFAULT_PREFERENCE = "-1"
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21"
+
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
file://defconfig"
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb
index b34d4630a0..cb6e7efc13 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh18.bb
@@ -5,6 +5,10 @@ PR = "r0"
DEFAULT_PREFERENCE = "-1"
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21"
+
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
file://defconfig"
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb
deleted file mode 100644
index ae3741e872..0000000000
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh19.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SECTION = "kernel"
-DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
-LICENSE = "GPL"
-PR = "r3"
-
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
- file://defconfig"
-
-require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb
index b34d4630a0..f15b71c325 100644
--- a/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh20.bb
@@ -1,10 +1,14 @@
SECTION = "kernel"
DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
LICENSE = "GPL"
-PR = "r0"
+PR = "r6"
DEFAULT_PREFERENCE = "-1"
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21"
+
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
file://defconfig"
diff --git a/packages/linux/linux-handhelds-2.6_cvs.bb b/packages/linux/linux-handhelds-2.6_cvs.bb
index 4e008f5b6e..89cb68548f 100644
--- a/packages/linux/linux-handhelds-2.6_cvs.bb
+++ b/packages/linux/linux-handhelds-2.6_cvs.bb
@@ -6,10 +6,14 @@ PR = "r0"
DEFAULT_PREFERENCE = "-1"
+# Override where to look for defconfigs and patches,
+# we have per-kernel-release sets.
+FILESPATH = "${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21/${MACHINE}:${FILE_DIRNAME}/linux-handhelds-2.6-2.6.21"
+
K_MAJOR = "2"
K_MINOR = "6"
K_MICRO = "21"
-HHV = "14"
+HHV = "20"
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26 \
file://defconfig"
diff --git a/packages/linux/linux-ixp4xx.inc b/packages/linux/linux-ixp4xx.inc
index 02f80b06a1..9c4dd375a0 100644
--- a/packages/linux/linux-ixp4xx.inc
+++ b/packages/linux/linux-ixp4xx.inc
@@ -3,7 +3,7 @@
DESCRIPTION = "Linux 2.6.x kernel for IXP4xx devices"
COMPATIBLE_HOST = 'arm.*-linux.*'
-COMPATIBLE_MACHINE = '(ixp4xx|nslu2)'
+COMPATIBLE_MACHINE = '(ixp4xx|nslu2|syhl1)'
# To specify the console set KERNEL_CONSOLE in the .bb file.
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.23.8 b/packages/linux/linux-ixp4xx/defconfig-2.6.23.12
index efbd55195d..efbd55195d 100644
--- a/packages/linux/linux-ixp4xx/defconfig-2.6.23.8
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.23.12
diff --git a/packages/linux/linux-ixp4xx_2.6.23.8.bb b/packages/linux/linux-ixp4xx_2.6.23.12.bb
index ab621f310a..14b79ae7cb 100644
--- a/packages/linux/linux-ixp4xx_2.6.23.8.bb
+++ b/packages/linux/linux-ixp4xx_2.6.23.12.bb
@@ -6,13 +6,13 @@ require linux.inc
require linux-ixp4xx.inc
VANILLA_VERSION = "2.6.23"
-KERNEL_RELEASE = "2.6.23.8"
+KERNEL_RELEASE = "2.6.23.12"
# If you use a rc, you will need to use this:
#PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}+svnr${SRCREV}"
PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
-PR = "r1"
+PR = "r0"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-${KERNEL_RELEASE}.bz2;patch=1 \
@@ -21,11 +21,25 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.ta
S = "${WORKDIR}/linux-${VANILLA_VERSION}"
-do_prepatch() {
+# Apply the patches from the nslu2-linux project (after the patches in SRC_URI)
+do_postpatch() {
+ # Move away OE patches which have been already applied.
+ mv ${S}/patches ${S}/patches.oe
+ mv .pc .pc.oe
+
+ # Move the NSLU2 patches in place for quilt and apply them.
mv ${WORKDIR}/${VANILLA_VERSION} ${S}/patches && cd ${S} && quilt push -av
- mv patches patches.ixp4xx
- mv .pc .pc.old
+
+ # Store the NSLU2 patches
+ mv ${S}/patches ${S}/patches.ixp4xx
+ mv .pc .pc.ixp4xx
+
+ # And move back the OE patches
+ mv ${S}/patches.oe ${S}/patches
+ mv .pc.oe .pc
+
+ # Copy the defconfig into ${WORKDIR}
mv ${WORKDIR}/defconfig-${KERNEL_RELEASE} ${WORKDIR}/defconfig
}
-addtask prepatch after do_unpack before do_patch
+addtask postpatch after do_patch before do_configure
diff --git a/packages/linux/linux-magicbox_2.6.18.6.bb b/packages/linux/linux-magicbox_2.6.18.6.bb
index 9410294020..bd9a1c4060 100644
--- a/packages/linux/linux-magicbox_2.6.18.6.bb
+++ b/packages/linux/linux-magicbox_2.6.18.6.bb
@@ -44,11 +44,11 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
diff --git a/packages/linux/linux-magicbox_2.6.19.2.bb b/packages/linux/linux-magicbox_2.6.19.2.bb
index 82576776f3..2c79a94e10 100644
--- a/packages/linux/linux-magicbox_2.6.19.2.bb
+++ b/packages/linux/linux-magicbox_2.6.19.2.bb
@@ -77,11 +77,11 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers as still split
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
@@ -93,7 +93,7 @@ do_install_append () {
powerpc${TARGET_VENDOR}-${TARGET_OS}-objcopy -O binary -R .note -R .comment -S ${DEPLOY_DIR_IMAGE}/vmlinux \
${DEPLOY_DIR_IMAGE}/linux.bin
gzip -f -9 ${DEPLOY_DIR_IMAGE}/linux.bin
- cp -a ${DEPLOY_DIR_IMAGE}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/linux-${PV}-${MACHINE}-${DATETIME}.bin.gz
+ cp -pPR ${DEPLOY_DIR_IMAGE}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/linux-${PV}-${MACHINE}-${DATETIME}.bin.gz
mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 -n "magicbox"-${PV} \
-d ${DEPLOY_DIR_IMAGE}/linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
rm ${DEPLOY_DIR_IMAGE}/vmlinux
diff --git a/packages/linux/linux-ml403-mvista-2.6.x_git.bb b/packages/linux/linux-ml403-mvista-2.6.x_git.bb
index 76fa75f65d..77b0bbc326 100644
--- a/packages/linux/linux-ml403-mvista-2.6.x_git.bb
+++ b/packages/linux/linux-ml403-mvista-2.6.x_git.bb
@@ -33,12 +33,12 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers a$
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
install -d ${STAGING_KERNEL_DIR}/include/asm
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
diff --git a/packages/linux/linux-ml403-slab-2.6.x_git.bb b/packages/linux/linux-ml403-slab-2.6.x_git.bb
index 75233492eb..f0408f365c 100644
--- a/packages/linux/linux-ml403-slab-2.6.x_git.bb
+++ b/packages/linux/linux-ml403-slab-2.6.x_git.bb
@@ -56,12 +56,12 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers a$
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
install -d ${STAGING_KERNEL_DIR}/include/asm
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
diff --git a/packages/linux/linux-omap2-git/omap2430sdp/.mtn2git_empty b/packages/linux/linux-omap2-git/omap2430sdp/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-omap2-git/omap2430sdp/.mtn2git_empty
diff --git a/packages/linux/linux-omap2-git/defconfig b/packages/linux/linux-omap2-git/omap2430sdp/defconfig
index f3897e48a3..f3897e48a3 100644
--- a/packages/linux/linux-omap2-git/defconfig
+++ b/packages/linux/linux-omap2-git/omap2430sdp/defconfig
diff --git a/packages/linux/linux-omap2-git/defconfig.eabi b/packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi
index f3897e48a3..f3897e48a3 100644
--- a/packages/linux/linux-omap2-git/defconfig.eabi
+++ b/packages/linux/linux-omap2-git/omap2430sdp/defconfig.eabi
diff --git a/packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc6 b/packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc6
new file mode 100644
index 0000000000..9dac6e8e8e
--- /dev/null
+++ b/packages/linux/linux-openmoko-devel/defconfig-2.6.24-rc6
@@ -0,0 +1,1814 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.24-rc6
+# Sat Dec 29 04:40:52 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=y
+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="-moko11"
+# 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_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 is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=m
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=m
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+CONFIG_ARCH_S3C2410=y
+# 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_PLAT_S3C24XX=y
+CONFIG_CPU_S3C244X=y
+CONFIG_S3C2410_DMA=y
+# CONFIG_S3C2410_DMA_DEBUG is not set
+CONFIG_MACH_SMDK=y
+CONFIG_MACH_NEO1973=y
+CONFIG_PLAT_S3C=y
+CONFIG_CPU_LLSERIAL_S3C2410=y
+CONFIG_CPU_LLSERIAL_S3C2440=y
+
+#
+# Boot options
+#
+# CONFIG_S3C_BOOT_WATCHDOG is not set
+# CONFIG_S3C_BOOT_ERROR_RESET is not set
+
+#
+# Power management
+#
+CONFIG_S3C2410_PM_DEBUG=y
+# CONFIG_S3C2410_PM_CHECK is not set
+CONFIG_S3C_LOWLEVEL_UART_PORT=0
+
+#
+# S3C2400 Machines
+#
+CONFIG_CPU_S3C2410=y
+CONFIG_CPU_S3C2410_DMA=y
+CONFIG_S3C2410_PM=y
+CONFIG_S3C2410_GPIO=y
+CONFIG_S3C2410_CLOCK=y
+CONFIG_S3C2410_PWM=y
+
+#
+# S3C2410 Machines
+#
+# CONFIG_ARCH_SMDK2410 is not set
+# CONFIG_ARCH_H1940 is not set
+# CONFIG_MACH_N30 is not set
+# CONFIG_ARCH_BAST is not set
+# CONFIG_MACH_OTOM is not set
+# CONFIG_MACH_AML_M5900 is not set
+# CONFIG_MACH_VR1000 is not set
+CONFIG_MACH_QT2410=y
+CONFIG_MACH_NEO1973_GTA01=y
+
+#
+# S3C2412 Machines
+#
+# CONFIG_MACH_SMDK2413 is not set
+# CONFIG_MACH_SMDK2412 is not set
+# CONFIG_MACH_VSTMS is not set
+CONFIG_CPU_S3C2440=y
+CONFIG_S3C2440_DMA=y
+
+#
+# S3C2440 Machines
+#
+# CONFIG_MACH_ANUBIS is not set
+# CONFIG_MACH_OSIRIS is not set
+# CONFIG_MACH_RX3715 is not set
+CONFIG_ARCH_S3C2440=y
+# CONFIG_MACH_NEXCODER_2440 is not set
+CONFIG_SMDK2440_CPU2440=y
+CONFIG_MACH_HXD8=y
+CONFIG_MACH_NEO1973_GTA02=y
+# CONFIG_NEO1973_GTA02_2440 is not set
+CONFIG_CPU_S3C2442=y
+
+#
+# S3C2442 Machines
+#
+# CONFIG_SMDK2440_CPU2442 is not set
+
+#
+# S3C2443 Machines
+#
+# CONFIG_MACH_SMDK2443 is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM920T=y
+CONFIG_CPU_32v4T=y
+CONFIG_CPU_ABRT_EV4T=y
+CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=200
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE 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="unused -- bootloader passes ATAG list debug "
+# 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=y
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_VERBOSE is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_MIGRATE=y
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+# CONFIG_IP_ROUTE_MULTIPATH is not set
+# CONFIG_IP_ROUTE_VERBOSE is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
+# 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 is not set
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=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_TIME is not set
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+# CONFIG_IP_NF_MATCH_RECENT is not set
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+# CONFIG_NF_NAT_AMANDA is not set
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+# CONFIG_IP6_NF_RAW is not set
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=y
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RR=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+# CONFIG_NET_EMATCH is not set
+# CONFIG_NET_CLS_ACT is not set
+# CONFIG_NET_CLS_POLICE is not set
+# CONFIG_NET_CLS_IND is not set
+CONFIG_NET_SCH_FIFO=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIBTSDIO is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_MAC80211 is not set
+# CONFIG_IEEE80211 is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_CONNECTOR=m
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_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=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_S3C2410=y
+# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
+CONFIG_MTD_NAND_S3C2410_HWECC=y
+CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# 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
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_UB=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# 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
+# CONFIG_BONDING is not set
+# 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
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+CONFIG_NET_PCI=y
+# CONFIG_B44 is not set
+CONFIG_CS89x0=m
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+# CONFIG_PPPOE is not set
+# CONFIG_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
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_STOWAWAY=m
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_NEO1973=y
+CONFIG_KEYBOARD_QT2410=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO 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_FUJITSU is not set
+CONFIG_TOUCHSCREEN_S3C2410=y
+# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_NR_TTY_DEVICES=4
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_S3C2410=y
+CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+CONFIG_I2C_S3C2410=y
+# 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
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_EEPROM is not set
+CONFIG_SENSORS_PCF50606=y
+CONFIG_SENSORS_PCF50633=y
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_SENSORS_TSL256X=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_S3C24XX=y
+CONFIG_SPI_S3C24XX_GPIO=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_S3C2410_WATCHDOG=m
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_MFD_GLAMO=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=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
+# 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_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_S3C2410=y
+# CONFIG_FB_S3C2410_DEBUG is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_LTV350QV is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_GTA01=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+CONFIG_DISPLAY_JBT6K74=y
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+CONFIG_FONT_6x11=y
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_OPENMOKO_CLUT224 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=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
+#
+
+#
+# SPI devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+CONFIG_SND_SOC=y
+CONFIG_SND_S3C24XX_SOC=y
+CONFIG_SND_S3C24XX_SOC_I2S=y
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
+# CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753 is not set
+
+#
+# SoC Audio support for SuperH
+#
+CONFIG_SND_SOC_WM8753=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# 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
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+# 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=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_ISD200 is not set
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_KARMA=y
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_AIRPRIME=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
+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=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+CONFIG_USB_BERRY_CHARGE=m
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+CONFIG_USB_TRANCEVIBRATOR=m
+CONFIG_USB_IOWARRIOR=m
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# 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 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_S3C2410=y
+CONFIG_USB_S3C2410=y
+# CONFIG_USB_S3C2410_DEBUG is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# 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_SPI is not set
+CONFIG_MMC_S3C=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_S3C24XX=y
+# CONFIG_LEDS_GPIO is not set
+# CONFIG_LEDS_NEO1973_VIBRATOR is not set
+# CONFIG_LEDS_NEO1973_GTA02 is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_DEBUG=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# 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
+# 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
+# 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_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_S3C=m
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_YAFFS_FS=y
+CONFIG_YAFFS_YAFFS1=y
+# CONFIG_YAFFS_9BYTE_TAGS is not set
+# CONFIG_YAFFS_DOES_ECC is not set
+CONFIG_YAFFS_YAFFS2=y
+CONFIG_YAFFS_AUTO_YAFFS2=y
+# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
+CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
+# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
+# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
+CONFIG_YAFFS_SHORT_NAMES_IN_RAM=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_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+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
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+CONFIG_INSTRUMENTATION=y
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=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=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# 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=y
+# CONFIG_DEBUG_ICEDCC is not set
+CONFIG_DEBUG_S3C_PORT=y
+CONFIG_DEBUG_S3C_UART=2
+
+#
+# Security options
+#
+# 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=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# 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_DMA=y
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-devel_svn+2.6.24-rc6.bb b/packages/linux/linux-openmoko-devel_svn+2.6.24-rc6.bb
new file mode 100644
index 0000000000..733cd3fb3b
--- /dev/null
+++ b/packages/linux/linux-openmoko-devel_svn+2.6.24-rc6.bb
@@ -0,0 +1,68 @@
+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-rc6"
+
+KERNEL_VERSION = "${KERNEL_RELEASE}"
+
+# If you use a rc, you will need to use this:
+PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}+svnr${SRCREV}"
+#PV = "${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r2"
+
+KERNEL_IMAGETYPE = "uImage"
+UBOOT_ENTRYPOINT = "30008000"
+
+##############################################################
+# source and patches
+#
+SRCREV_FORMAT = "patches"
+SRCREV = "3741"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/patch-${KERNEL_VERSION}.bz2 \
+ svn://svn.openmoko.org/branches/src/target/kernel/2.6.24.x;module=patches;proto=http;name=patches \
+# file://squashfs-2.6.23.patch;patch=1 \
+# file://fix-EVIOCGRAB-semantics-2.6.22.5.patch;patch=1 \
+# file://printascii-2.6.23.patch;patch=1 \
+# file://hack-gta02-cpu.patch;patch=1 \
+# file://fix-gta01-flowcontrol2-2.6.23.patch;patch=1 \
+ file://defconfig-${KERNEL_VERSION} \
+ file://logo_linux_clut224.ppm"
+S = "${WORKDIR}/linux-${VANILLA_VERSION}"
+
+##############################################################
+# 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() {
+ cd ${S} && patch -p1 < ${WORKDIR}/patch-${KERNEL_VERSION}
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.openmoko
+ mv .pc .pc.old
+ mv ${WORKDIR}/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 7cf8e0ac9f..fc702c8719 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"
diff --git a/packages/linux/linux-rp-2.6.16/00-hostap.patch b/packages/linux/linux-rp-2.6.16/00-hostap.patch
deleted file mode 100644
index 20432b404a..0000000000
--- a/packages/linux/linux-rp-2.6.16/00-hostap.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Platform: Sharp Zaurus C760 running 2.6.16 and pcmciautils 013.
-
-root@c7x0:~# pccardctl ident
-Socket 0:
- product info: "Pretec", "CompactWLAN Card 802.11b", "2.5"
- manfid: 0x0156, 0x0002
- function: 6 (network)
-
-==========================================================================
-From: Jochen Friedrich
-
-Yet another card known to work OK with hostap_cs:
-
-# pccardctl ident
-Socket 0:
- no product info available
-Socket 1:
- product info: "U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02", ""
- manfid: 0x0156, 0x0002
- function: 6 (network)
-
-==========================================================================
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/net/wireless/hostap/hostap_cs.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-Index: linux/drivers/net/wireless/hostap/hostap_cs.c
-===================================================================
---- linux.orig/drivers/net/wireless/hostap/hostap_cs.c 2006-05-17 10:23:00.000000000 +0200
-+++ linux/drivers/net/wireless/hostap/hostap_cs.c 2006-05-17 10:25:45.000000000 +0200
-@@ -923,6 +923,12 @@
- PCMCIA_DEVICE_PROD_ID12(
- "ZoomAir 11Mbps High", "Rate wireless Networking",
- 0x273fe3db, 0x32a1eaee),
-+ PCMCIA_DEVICE_PROD_ID123(
-+ "Pretec", "CompactWLAN Card 802.11b", "2.5",
-+ 0x1cadd3e5, 0xe697636c, 0x7a5bfcf1),
-+ PCMCIA_DEVICE_PROD_ID123(
-+ "U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02",
-+ 0xc7b8df9d, 0x1700d087, 0x4b74baa0),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, hostap_cs_ids);
diff --git a/packages/linux/linux-rp-2.6.16/10-pcnet.patch b/packages/linux/linux-rp-2.6.16/10-pcnet.patch
deleted file mode 100644
index 2e1966e837..0000000000
--- a/packages/linux/linux-rp-2.6.16/10-pcnet.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-
-From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Add TRENDnet TE-CF100 ethernet adapter to pcnet_cs list.
-
-product info: "Fast Ethernet", "CF Size PC Card", "1.0", ""
- manfid: 0x0149, 0xc1ab
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/net/pcmcia/pcnet_cs.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-Index: netdev-2.6/drivers/net/pcmcia/pcnet_cs.c
-===================================================================
---- netdev-2.6.orig/drivers/net/pcmcia/pcnet_cs.c 2006-05-18 11:06:43.294022480 +0200
-+++ netdev-2.6/drivers/net/pcmcia/pcnet_cs.c 2006-05-18 11:10:31.548322552 +0200
-@@ -1768,6 +1768,8 @@
- PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "NE2K.cis"),
- PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "PE-200.cis"),
- PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
-+ PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
-+ 0xb4be14e3, 0x43ac239b, 0x0877b627),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
-
diff --git a/packages/linux/linux-rp-2.6.16/add-oz-release-string.patch b/packages/linux/linux-rp-2.6.16/add-oz-release-string.patch
deleted file mode 100644
index 22a6fd3943..0000000000
--- a/packages/linux/linux-rp-2.6.16/add-oz-release-string.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux-2.6.11-rc1/init/version.c~add-oz-release-string
-+++ linux-2.6.11-rc1/init/version.c
-@@ -29,5 +29,5 @@
- EXPORT_SYMBOL(system_utsname);
-
- const char linux_banner[] =
-- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
-+ "Linux version " UTS_RELEASE OPENZAURUS_RELEASE " (" LINUX_COMPILE_BY "@"
- LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
---- linux-2.6.11-rc1/Makefile~add-oz-release-string
-+++ linux-2.6.11-rc1/Makefile
-@@ -827,6 +827,7 @@
- exit 1; \
- fi; \
- (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
-+ echo \#define OPENZAURUS_RELEASE \"$(OPENZAURUS_RELEASE)\"; \
- echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
- echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
- )
diff --git a/packages/linux/linux-rp-2.6.16/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.16/connectplus-remove-ide-HACK.patch
deleted file mode 100644
index 4414b21191..0000000000
--- a/packages/linux/linux-rp-2.6.16/connectplus-remove-ide-HACK.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: linux-2.6.13/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.13.orig/drivers/ide/legacy/ide-cs.c 2005-09-01 22:43:46.000000000 +0100
-+++ linux-2.6.13/drivers/ide/legacy/ide-cs.c 2005-09-01 22:45:46.000000000 +0100
-@@ -488,7 +488,6 @@
- PCMCIA_DEVICE_PROD_ID123("KODAK Picture Card ", "KODAK ", "V100K", 0x94a0d8f3, 0xe4fc3ea0, 0xe5e7eed4),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-- PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
- PCMCIA_DEVICE_NULL,
- };
- MODULE_DEVICE_TABLE(pcmcia, ide_ids);
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-akita b/packages/linux/linux-rp-2.6.16/defconfig-akita
deleted file mode 100644
index 249466ac87..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-akita
+++ /dev/null
@@ -1,1572 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-c7x0 b/packages/linux/linux-rp-2.6.16/defconfig-c7x0
deleted file mode 100644
index 1d702f60c0..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-c7x0
+++ /dev/null
@@ -1,1608 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Mon May 22 09:00:01 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-CONFIG_MACH_CORGI=y
-CONFIG_MACH_SHEPHERD=y
-CONFIG_MACH_HUSKY=y
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SHARP_C7xx=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_CORGI=y
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-CONFIG_FB_W100=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-CONFIG_SND_PXA2xx_SOC_CORGI=m
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-collie b/packages/linux/linux-rp-2.6.16/defconfig-collie
deleted file mode 100644
index 67bda811c4..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-collie
+++ /dev/null
@@ -1,1154 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17-rc1
-# Wed Apr 19 21:01:15 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_DOUBLEFAULT=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-
-#
-# Processor Features
-#
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_NODES_SHIFT=2
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
-CONFIG_MTD_SHARP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=1024
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-CONFIG_ATA_OVER_ETH=m
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_ARLAN is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=y
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_EVBUG=y
-# CONFIG_INPUT_POWER 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_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_LIBPS2 is not set
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=m
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP_SA11X0 is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_NFS_FS is not set
-# CONFIG_NFSD is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE 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=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-hx2000 b/packages/linux/linux-rp-2.6.16/defconfig-hx2000
deleted file mode 100644
index c1344660f3..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-hx2000
+++ /dev/null
@@ -1,1028 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc1-git7
-# Sat Nov 19 23:13:51 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-# CONFIG_SWAP is not set
-# CONFIG_SYSVIPC is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-CONFIG_MACH_HX2750=y
-CONFIG_PXA27x=y
-CONFIG_PXA_KEYS=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-# CONFIG_IEEE80211_CRYPT_CCMP is not set
-# CONFIG_IEEE80211_CRYPT_TKIP is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SHARP_SL is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_TSC2101=y
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_SA1100_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-CONFIG_MFD_TSC2101=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_HX2750=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_NFS_FS is not set
-# CONFIG_NFSD is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-poodle b/packages/linux/linux-rp-2.6.16/defconfig-poodle
deleted file mode 100644
index 8450fc9b68..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-poodle
+++ /dev/null
@@ -1,1556 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17-rc1
-# Wed Apr 19 21:04:42 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_DOUBLEFAULT=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-CONFIG_MACH_POODLE=y
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_USB_DSBR=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-qemuarm b/packages/linux/linux-rp-2.6.16/defconfig-qemuarm
deleted file mode 100644
index 33f9693d9b..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-qemuarm
+++ /dev/null
@@ -1,941 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15
-# Thu Feb 23 16:29:38 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_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
-#
-
-#
-# 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_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-CONFIG_ARCH_INTEGRATOR=y
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-
-#
-# Integrator Options
-#
-# CONFIG_ARCH_INTEGRATOR_AP is not set
-CONFIG_ARCH_INTEGRATOR_CP=y
-CONFIG_ARCH_CINTEGRATOR=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-# CONFIG_CPU_ARM720T is not set
-# CONFIG_CPU_ARM920T is not set
-# CONFIG_CPU_ARM922T is not set
-CONFIG_CPU_ARM926T=y
-# CONFIG_CPU_ARM1020 is not set
-# CONFIG_CPU_ARM1022 is not set
-CONFIG_CPU_ARM1026=y
-# CONFIG_CPU_V6 is not set
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-CONFIG_ICST525=y
-
-#
-# Bus support
-#
-CONFIG_ARM_AMBA=y
-CONFIG_ISA_DMA_API=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyAMA0 console=tty1 user_debug=31"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
-CONFIG_CPU_FREQ_INTEGRATOR=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
-CONFIG_VFP=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_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
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_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
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_AMBA_PL010 is not set
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_ARMCLCD=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=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_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=y
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-spitz b/packages/linux/linux-rp-2.6.16/defconfig-spitz
deleted file mode 100644
index d2b4c470aa..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-spitz
+++ /dev/null
@@ -1,1572 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.16/defconfig-tosa b/packages/linux/linux-rp-2.6.16/defconfig-tosa
deleted file mode 100644
index 543aa10bb3..0000000000
--- a/packages/linux/linux-rp-2.6.16/defconfig-tosa
+++ /dev/null
@@ -1,1608 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5-git5
-# Tue Mar 14 09:05:26 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-CONFIG_MACH_TOSA=y
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-CONFIG_TOSHIBA_TC6393XB=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_TMIO=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-CONFIG_KEYBOARD_TOSA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_CORGI is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_WM97XX=y
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-CONFIG_TOUCHSCREEN_WM9712=y
-# CONFIG_TOUCHSCREEN_WM9713 is not set
-# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TOSA=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_W100 is not set
-CONFIG_FB_TMIO=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_BUS=y
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=y
-CONFIG_SND_PXA2xx_SOC_AC97=y
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_TOSA=y
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-CONFIG_SND_SOC_WM9712=y
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
diff --git a/packages/linux/linux-rp-2.6.16/hrw-pcmcia-ids-r5.patch b/packages/linux/linux-rp-2.6.16/hrw-pcmcia-ids-r5.patch
deleted file mode 100644
index b09acacadd..0000000000
--- a/packages/linux/linux-rp-2.6.16/hrw-pcmcia-ids-r5.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Few cards informations submitted by OpenZaurus users.
-
-Seagate 8GB microdrive:
- product info: "SEAGATE", "ST1"
- manfid 0x0111, 0x0000
-
-One CF card:
- product info: "SAMSUNG", "04/05/06", "", ""
- manfid : 0x0000, 0x0000
-
-Ridata 8GB Pro 150X Compact Flash Card:
- product info: "SMI VENDOR", "SMI PRODUCT", ""
- manfid: 0x000a, 0x0000
-
- product info: "M-Systems", "CF500", ""
- manfid: 0x000a, 0x0000
-
- product info: "TRANSCEND", "TS4GCF120", ""
- manfid: 0x000a, 0x0000
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/ide/legacy/ide-cs.c | 5 +++++
- drivers/net/pcmcia/pcnet_cs.c | 2 ++
- 2 files changed, 7 insertions(+)
-
-Index: linux-2.6.18/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:51.000000000 +0000
-+++ linux-2.6.18/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:55.000000000 +0000
-@@ -398,12 +398,17 @@ static struct pcmcia_device_id ide_ids[]
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
- PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
-+ PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
- PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
- PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
-+ PCMCIA_DEVICE_PROD_ID12("SEAGATE", "ST1", 0x87c1b330, 0xe1f30883),
-+ PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "04/05/06", 0x43d74cb4, 0x6a22777d),
-+ PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
- PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
- PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
-+ PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
- PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-Index: linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/net/pcmcia/pcnet_cs.c 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c 2006-12-06 00:57:27.000000000 +0000
-@@ -1770,6 +1770,8 @@ static struct pcmcia_device_id pcnet_ids
- PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
- PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
- 0xb4be14e3, 0x43ac239b, 0x0877b627),
-+ PCMCIA_DEVICE_PROD_ID123("Ethernet", "CF Size PC Card", "1.0",
-+ 0x00b2e941, 0x43ac239b, 0x0877b627),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
diff --git a/packages/linux/linux-rp-2.6.16/locomo-kbd-hotkeys.patch b/packages/linux/linux-rp-2.6.16/locomo-kbd-hotkeys.patch
deleted file mode 100644
index 8b296780d4..0000000000
--- a/packages/linux/linux-rp-2.6.16/locomo-kbd-hotkeys.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- linux-2.6.16/drivers/input/keyboard/locomokbd.c 2006-05-11 18:15:17.392063008 +0200
-+++ linux-2.6.16/drivers/input/keyboard/locomokbd.c.ok 2006-05-11 18:14:55.870334808 +0200
-@@ -44,24 +44,29 @@
-
- #define LOCOMOKBD_NUMKEYS 128
-
--#define KEY_ACTIVITY KEY_F16
--#define KEY_CONTACT KEY_F18
--#define KEY_CENTER KEY_F15
-+
-+#define LOCOMO_KEY_CALENDER KEY_F1
-+#define LOCOMO_KEY_ADDRESS KEY_F2
-+#define LOCOMO_KEY_CANCEL KEY_F4
-+#define LOCOMO_KEY_CENTER KEY_F5
-+#define LOCOMO_KEY_MAIL KEY_F10
-+#define LOCOMO_KEY_OK KEY_F11
-+#define LOCOMO_KEY_MENU KEY_F12
-
- static unsigned char locomokbd_keycode[LOCOMOKBD_NUMKEYS] = {
-- 0, KEY_ESC, KEY_ACTIVITY, 0, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
-- 0, 0, 0, 0, 0, 0, 0, KEY_MENU, KEY_HOME, KEY_CONTACT, /* 10 - 19 */
-- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 - 29 */
-- 0, 0, 0, KEY_CENTER, 0, KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */
-- 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */
-- KEY_UP, KEY_LEFT, 0, 0, KEY_P, 0, KEY_O, KEY_I, KEY_Y, KEY_T, /* 50 - 59 */
-- KEY_E, KEY_W, 0, 0, 0, 0, KEY_DOWN, KEY_ENTER, 0, 0, /* 60 - 69 */
-- KEY_BACKSPACE, 0, KEY_L, KEY_U, KEY_H, KEY_R, KEY_D, KEY_Q, 0, 0, /* 70 - 79 */
-- 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */
-- KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */
-- 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */
-- KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */
-- KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */
-+ 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
-+ KEY_HOME, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, KEY_HOME, LOCOMO_KEY_ADDRESS, /* 10 - 19 */
-+ 0, 0, 0, 0, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 20 - 29 */
-+ 0, 0, 0, LOCOMO_KEY_CENTER, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */
-+ 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */
-+ KEY_UP, KEY_LEFT, 0, 0, KEY_P, 0, KEY_O, KEY_I, KEY_Y, KEY_T, /* 50 - 59 */
-+ KEY_E, KEY_W, 0, 0, 0, 0, KEY_DOWN, LOCOMO_KEY_OK, 0, 0, /* 60 - 69 */
-+ KEY_BACKSPACE, 0, KEY_L, KEY_U, KEY_H, KEY_R, KEY_D, KEY_Q, 0, 0, /* 70 - 79 */
-+ 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */
-+ KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */
-+ 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */
-+ KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */
-+ KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */
- };
-
- #define KB_ROWS 16
diff --git a/packages/linux/linux-rp-2.6.16/locomo-lcd-def-bightness.patch b/packages/linux/linux-rp-2.6.16/locomo-lcd-def-bightness.patch
deleted file mode 100644
index 6408ef9551..0000000000
--- a/packages/linux/linux-rp-2.6.16/locomo-lcd-def-bightness.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- linux-2.6.16/drivers/video/backlight/locomolcd.c.orig 2006-05-14 13:24:01.354435088 +0200
-+++ linux-2.6.16/drivers/video/backlight/locomolcd.c 2006-05-14 13:24:11.920828752 +0200
-@@ -201,7 +201,7 @@
- return PTR_ERR (locomolcd_bl_device);
-
- /* Set up frontlight so that screen is readable */
-- locomobl_data.brightness = 2;
-+ locomobl_data.brightness = 3;
- locomolcd_set_intensity(locomolcd_bl_device);
-
- return 0;
diff --git a/packages/linux/linux-rp-2.6.16/locomo-sysrq+keyrepeat.patch b/packages/linux/linux-rp-2.6.16/locomo-sysrq+keyrepeat.patch
deleted file mode 100644
index 7e233277da..0000000000
--- a/packages/linux/linux-rp-2.6.16/locomo-sysrq+keyrepeat.patch
+++ /dev/null
@@ -1,49 +0,0 @@
---- linux-2.6.16/drivers/input/keyboard/locomokbd.c.orig 2006-05-13 22:53:33.810228656 +0200
-+++ linux-2.6.16/drivers/input/keyboard/locomokbd.c 2006-05-13 22:56:56.544408376 +0200
-@@ -45,17 +45,20 @@
- #define LOCOMOKBD_NUMKEYS 128
-
-
--#define LOCOMO_KEY_CALENDER KEY_F1
--#define LOCOMO_KEY_ADDRESS KEY_F2
--#define LOCOMO_KEY_CANCEL KEY_F4
--#define LOCOMO_KEY_CENTER KEY_F5
--#define LOCOMO_KEY_MAIL KEY_F10
--#define LOCOMO_KEY_OK KEY_F11
-+#define LOCOMO_KEY_CALENDER KEY_LEFTCTRL
-+#define LOCOMO_KEY_ADDRESS KEY_LEFTALT /* Needed for SysRQ */
-+#define LOCOMO_KEY_HOME KEY_SYSRQ /* Needed for SysRQ */
- #define LOCOMO_KEY_MENU KEY_F12
-+#define LOCOMO_KEY_MAIL KEY_F10
-+#define LOCOMO_KEY_OK KEY_F11 /* Don't hardwire to KEY_RETURN */
-+#define LOCOMO_KEY_CANCEL KEY_POWER
-+#define LOCOMO_KEY_CENTER KEY_F5 /* Don't hardwire to KEY_RETURN */
-+
-+#define LOCOMO_KEY_FN KEY_F9
-
- static unsigned char locomokbd_keycode[LOCOMOKBD_NUMKEYS] = {
-- 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
-- KEY_HOME, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, KEY_HOME, LOCOMO_KEY_ADDRESS, /* 10 - 19 */
-+ 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, LOCOMO_KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
-+ 0, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, 0, LOCOMO_KEY_ADDRESS, /* 10 - 19 */
- 0, 0, 0, 0, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 20 - 29 */
- 0, 0, 0, LOCOMO_KEY_CENTER, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */
-@@ -65,7 +68,7 @@
- 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */
- KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */
- 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */
-- KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */
-+ KEY_LEFTSHIFT, KEY_TAB, LOCOMO_KEY_FN, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */
- KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */
- };
-
-@@ -76,7 +79,7 @@
- #define NR_SCANCODES 128
-
- #define KB_DELAY 8
--#define SCAN_INTERVAL (HZ/10)
-+#define SCAN_INTERVAL (HZ/20)
- #define LOCOMOKBD_PRESSED 1
-
- struct locomokbd {
diff --git a/packages/linux/linux-rp-2.6.16/maxpower-message.patch b/packages/linux/linux-rp-2.6.16/maxpower-message.patch
deleted file mode 100644
index 6e76be4d1c..0000000000
--- a/packages/linux/linux-rp-2.6.16/maxpower-message.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Daniel Drake <dsd@gentoo.org>
-Date: Fri, 26 May 2006 20:36:28 +0000 (+0100)
-Subject: [PATCH] USB: print message when device is rejected due to insufficient power
-X-Git-Tag: v2.6.18-rc1
-X-Git-Url: http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=1fbe75e12f0dd567c86533e13ba2605f3ecad2e1
-
-[PATCH] USB: print message when device is rejected due to insufficient power
-
-2.6.16 introduces USB power budgeting in the Linux kernel, and since then, a
-fair number of users have observed that some of their devices no longer work in
-unpowered hubs (this is not a bug, the devices claim that they need more than
-100mA).
-
-The very least we can do is print an informational message to the kernel log
-when this happens, otherwise it is not at all clear why the device was not
-accepted.
-
-Signed-off-by: Daniel Drake <dsd@gentoo.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
-
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -1176,6 +1176,7 @@ static int choose_configuration(struct u
- {
- int i;
- int num_configs;
-+ int insufficient_power = 0;
- struct usb_host_config *c, *best;
-
- best = NULL;
-@@ -1228,8 +1229,10 @@ static int choose_configuration(struct u
- */
-
- /* Rule out configs that draw too much bus current */
-- if (c->desc.bMaxPower * 2 > udev->bus_mA)
-+ if (c->desc.bMaxPower * 2 > udev->bus_mA) {
-+ insufficient_power++;
- continue;
-+ }
-
- /* If the first config's first interface is COMM/2/0xff
- * (MSFT RNDIS), rule it out unless Linux has host-side
-@@ -1263,6 +1266,11 @@ static int choose_configuration(struct u
- best = c;
- }
-
-+ if (insufficient_power > 0)
-+ dev_info(&udev->dev, "rejected %d configuration%s "
-+ "due to insufficient available bus power\n",
-+ insufficient_power, plural(insufficient_power));
-+
- if (best) {
- i = best->desc.bConfigurationValue;
- dev_info(&udev->dev,
diff --git a/packages/linux/linux-rp-2.6.16/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.16/pxa-serial-hack.patch
deleted file mode 100644
index b3a7f786ea..0000000000
--- a/packages/linux/linux-rp-2.6.16/pxa-serial-hack.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Index: linux-2.6.14/drivers/serial/8250.c
-===================================================================
---- linux-2.6.14.orig/drivers/serial/8250.c 2005-11-07 18:10:50.000000000 +0000
-+++ linux-2.6.14/drivers/serial/8250.c 2005-11-07 19:01:21.000000000 +0000
-@@ -2333,7 +2333,12 @@
- .devfs_name = "tts/",
- .dev_name = "ttyS",
- .major = TTY_MAJOR,
-+#ifdef CONFIG_SERIAL_PXA
-+ .minor = 64 + 3,
-+ .name_base = 3,
-+#else
- .minor = 64,
-+#endif
- .nr = UART_NR,
- .cons = SERIAL8250_CONSOLE,
- };
-Index: linux-2.6.14/drivers/serial/serial_core.c
-===================================================================
---- linux-2.6.14.orig/drivers/serial/serial_core.c 2005-11-07 18:10:50.000000000 +0000
-+++ linux-2.6.14/drivers/serial/serial_core.c 2005-11-07 19:01:21.000000000 +0000
-@@ -2126,6 +2126,7 @@
- normal->driver_name = drv->driver_name;
- normal->devfs_name = drv->devfs_name;
- normal->name = drv->dev_name;
-+ normal->name_base = drv->name_base;
- normal->major = drv->major;
- normal->minor_start = drv->minor;
- normal->type = TTY_DRIVER_TYPE_SERIAL;
-Index: linux-2.6.14/include/linux/serial_core.h
-===================================================================
---- linux-2.6.14.orig/include/linux/serial_core.h 2005-11-07 18:10:56.000000000 +0000
-+++ linux-2.6.14/include/linux/serial_core.h 2005-11-07 19:01:21.000000000 +0000
-@@ -322,6 +322,7 @@
- const char *driver_name;
- const char *dev_name;
- const char *devfs_name;
-+ int name_base;
- int major;
- int minor;
- int nr;
-Index: linux-2.6.14/drivers/serial/serial_cs.c
-===================================================================
---- linux-2.6.14.orig/drivers/serial/serial_cs.c 2005-10-28 01:02:08.000000000 +0100
-+++ linux-2.6.14/drivers/serial/serial_cs.c 2005-11-07 19:01:21.000000000 +0000
-@@ -294,7 +294,7 @@
- kio_addr_t iobase, int irq)
- {
- struct uart_port port;
-- int line;
-+ int line, linestart;
-
- memset(&port, 0, sizeof (struct uart_port));
- port.iobase = iobase;
-@@ -311,10 +311,16 @@
- return -EINVAL;
- }
-
-+#if CONFIG_SERIAL_PXA
-+ linestart = 3;
-+#else
-+ linestart = 0;
-+#endif
-+
- info->line[info->ndev] = line;
-- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
-+ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
- info->node[info->ndev].major = TTY_MAJOR;
-- info->node[info->ndev].minor = 0x40 + line;
-+ info->node[info->ndev].minor = 0x40 + line + linestart;
- if (info->ndev > 0)
- info->node[info->ndev - 1].next = &info->node[info->ndev];
- info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch b/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch
deleted file mode 100644
index 054b48d28d..0000000000
--- a/packages/linux/linux-rp-2.6.16/rmk-mmc1.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-
-The CSD contains a "read2write factor" which determines the multiplier to
-be applied to the read timeout to obtain the write timeout. We were
-ignoring this parameter, resulting in the possibility for writes being
-timed out too early.
-
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-
-diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
---- a/drivers/mmc/mmc.c
-+++ b/drivers/mmc/mmc.c
-@@ -549,6 +549,7 @@ static void mmc_decode_csd(struct mmc_ca
- csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
- csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
- csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
-+ csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
- csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
- csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
- } else {
-@@ -583,6 +584,7 @@ static void mmc_decode_csd(struct mmc_ca
- csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
- csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
- csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
-+ csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
- csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
- csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
- }
-diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
---- a/drivers/mmc/mmc_block.c
-+++ b/drivers/mmc/mmc_block.c
-@@ -187,6 +187,12 @@ static int mmc_blk_issue_rq(struct mmc_q
- brq.cmd.opcode = MMC_WRITE_BLOCK;
- brq.data.flags |= MMC_DATA_WRITE;
- brq.data.blocks = 1;
-+
-+ /*
-+ * Scale up the timeout by the r2w factor
-+ */
-+ brq.data.timeout_ns <<= card->csd.r2w_factor;
-+ brq.data.timeout_clks <<= card->csd.r2w_factor;
- }
-
- if (brq.data.blocks > 1) {
-diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
---- a/include/linux/mmc/card.h
-+++ b/include/linux/mmc/card.h
-@@ -28,6 +28,7 @@ struct mmc_csd {
- unsigned short cmdclass;
- unsigned short tacc_clks;
- unsigned int tacc_ns;
-+ unsigned int r2w_factor;
- unsigned int max_dtr;
- unsigned int read_blkbits;
- unsigned int write_blkbits;
-
-
--------------------------------------------------------------------
-List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
-FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
-Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
-
diff --git a/packages/linux/linux-rp-2.6.16/rmk-mmc2.patch b/packages/linux/linux-rp-2.6.16/rmk-mmc2.patch
deleted file mode 100644
index cef02436d6..0000000000
--- a/packages/linux/linux-rp-2.6.16/rmk-mmc2.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Always send a stop command at the end of a data transfer. If we avoid
-sending the stop command, some cards remain in data transfer mode, and
-refuse to accept further read/write commands.
-
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-
-diff --git a/drivers/mmc/pxamci.c b/drivers/mmc/pxamci.c
---- a/drivers/mmc/pxamci.c
-+++ b/drivers/mmc/pxamci.c
-@@ -291,7 +291,7 @@ static int pxamci_data_done(struct pxamc
- pxamci_disable_irq(host, DATA_TRAN_DONE);
-
- host->data = NULL;
-- if (host->mrq->stop && data->error == MMC_ERR_NONE) {
-+ if (host->mrq->stop) {
- pxamci_stop_clock(host);
- pxamci_start_cmd(host, host->mrq->stop, 0);
- } else {
-
-
--------------------------------------------------------------------
-List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
-FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
-Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
-
diff --git a/packages/linux/linux-rp-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
deleted file mode 100644
index 18bf4268fc..0000000000
--- a/packages/linux/linux-rp-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-
-From: Petr Vandrovec <vandrove@vc.cvut.cz>
-
-Patch below adds support for using different prescaler than 16 for 16c950
-chips. This is needed for using Fujitsu-Siemens Connect2Air compact-flash
-card, which comes (apparently) with 806kHz clocks, and so you have to
-program prescaler for division by 7, and DLAB to 1, to get 115200Bd.
-
-To get card properly running you also have to add lines below to
-/etc/pcmcia/serial.opts so kernel knows that base speed is not 115200 but
-50400 (50400 * 16 = 806400; 806400 / 7 = 115200). As I've found no code
-specifying baud_rate in serial_cs, I assume that specifying it in
-serial.opts is right way to do this type of things.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER maximum possible
-baud rate passed to uart code was uartclk / 16 while correct value for
-these devices (and for 16c950) is uartclk / 4.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER devices with
-baud_rate 19200 or 9600 spd_cust did not work correctly. Not that such
-devices exist, but we should not ignore spd_cust, user probably knows why
-he asked for spd_cust.
-
-serial.opts:
-
-case "$MANFID-$FUNCID-$PRODID_1-$PRODID_2-$PRODID_3-$PRODID_4" in
-'0279,950b-2-GPRS Modem---')
- SERIAL_OPTS="baud_base 50400"
- ;;
-esac
-
-Cc: David Woodhouse <dwmw2@infradead.org>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
----
-
- drivers/serial/8250.c | 82 +++++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 64 insertions(+), 18 deletions(-)
-
-diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
---- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
-+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
-@@ -1653,24 +1653,58 @@ static void serial8250_shutdown(struct u
- serial_unlink_irq_chain(up);
- }
-
--static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
-+static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud,
-+ unsigned int *prescaler)
- {
-- unsigned int quot;
--
-- /*
-- * Handle magic divisors for baud rates above baud_base on
-- * SMSC SuperIO chips.
-+ /*
-+ * Use special handling only if user did not supply its own divider.
-+ * spd_cust is defined in terms of baud_base, so always use default
-+ * prescaler when spd_cust is requested.
- */
-- if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/4))
-- quot = 0x8001;
-- else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/8))
-- quot = 0x8002;
-- else
-- quot = uart_get_divisor(port, baud);
-
-- return quot;
-+ *prescaler = 16;
-+ if (baud != 38400 || (port->flags & UPF_SPD_MASK) != UPF_SPD_CUST) {
-+ unsigned int quot = port->uartclk / baud;
-+
-+ /*
-+ * Handle magic divisors for baud rates above baud_base on
-+ * SMSC SuperIO chips.
-+ */
-+ if (port->flags & UPF_MAGIC_MULTIPLIER) {
-+ if (quot == 4) {
-+ return 0x8001;
-+ } else if (quot == 8) {
-+ return 0x8002;
-+ }
-+ }
-+ if (port->type == PORT_16C950) {
-+ /*
-+ * This computes TCR value (4 to 16), not CPR value (which can
-+ * be between 1.000 and 31.875) - chip I have uses XTAL of
-+ * 806400Hz, and so a division by 7 is required to get 115200Bd.
-+ * I'm leaving CPR disabled for now, until someone will
-+ * hit even more exotic XTAL (it is needed to get 500kbps
-+ * or 1000kbps from 18.432MHz XTAL, but I have no device
-+ * which would benefit from doing that).
-+ *
-+ * If we can use divide by 16, use it. Otherwise look for
-+ * better prescaler, from 15 to 4. If quotient cannot
-+ * be divided by any integer value between 4 and 15, use 4.
-+ */
-+ if (quot & 0x0F) {
-+ unsigned int div;
-+
-+ for (div = 15; div > 4; div--) {
-+ if (quot % div == 0) {
-+ break;
-+ }
-+ }
-+ *prescaler = div;
-+ return quot / div;
-+ }
-+ }
-+ }
-+ return uart_get_divisor(port, baud);
- }
-
- static void
-@@ -1680,7 +1714,7 @@ serial8250_set_termios(struct uart_port
- struct uart_8250_port *up = (struct uart_8250_port *)port;
- unsigned char cval, fcr = 0;
- unsigned long flags;
-- unsigned int baud, quot;
-+ unsigned int baud, quot, prescaler;
-
- switch (termios->c_cflag & CSIZE) {
- case CS5:
-@@ -1712,8 +1746,13 @@ serial8250_set_termios(struct uart_port
- /*
- * Ask the core to calculate the divisor for us.
- */
-- baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-- quot = serial8250_get_divisor(port, baud);
-+
-+ if (port->type == PORT_16C950 || (port->flags & UPF_MAGIC_MULTIPLIER)) {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4);
-+ } else {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-+ }
-+ quot = serial8250_get_divisor(port, baud, &prescaler);
-
- /*
- * Oxford Semi 952 rev B workaround
-@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
- serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
-
- /*
-+ * Program prescaler for 16C950 chips.
-+ */
-+ if (up->port.type == PORT_16C950) {
-+ serial_icr_write(up, UART_TCR, prescaler == 16 ? 0 : prescaler);
-+ }
-+
-+ /*
- * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
- * is written without DLAB set, this mode will be disabled.
- */
-_
diff --git a/packages/linux/linux-rp-2.6.16/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.16/squashfs3.0-2.6.15.patch
deleted file mode 100644
index 6fec9eba03..0000000000
--- a/packages/linux/linux-rp-2.6.16/squashfs3.0-2.6.15.patch
+++ /dev/null
@@ -1,4174 +0,0 @@
-diff --new-file -urp linux-2.6.15/fs/Kconfig linux-2.6.15-squashfs3.0/fs/Kconfig
---- linux-2.6.15/fs/Kconfig 2006-03-01 22:37:27.000000000 +0000
-+++ linux-2.6.15-squashfs3.0/fs/Kconfig 2006-03-07 21:12:37.000000000 +0000
-@@ -1151,6 +1151,71 @@ config CRAMFS
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.0 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- help
-diff --new-file -urp linux-2.6.15/fs/Makefile linux-2.6.15-squashfs3.0/fs/Makefile
---- linux-2.6.15/fs/Makefile 2006-03-01 22:37:27.000000000 +0000
-+++ linux-2.6.15-squashfs3.0/fs/Makefile 2006-03-07 21:12:37.000000000 +0000
-@@ -55,6 +55,7 @@ obj-$(CONFIG_EXT3_FS) += ext3/ # Before
- obj-$(CONFIG_JBD) += jbd/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-diff --new-file -urp linux-2.6.15/fs/squashfs/inode.c linux-2.6.15-squashfs3.0/fs/squashfs/inode.c
---- linux-2.6.15/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/inode.c 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,2127 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_statfs(struct super_block *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static struct super_block *squashfs_get_sb(struct file_system_type *, int,
-+ const char *, void *);
-+
-+
-+static z_stream stream;
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k;
-+ char *c_buffer;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed)
-+ down(&msblk->read_data_mutex);
-+
-+ for (bytes = 0, k = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto block_release;
-+ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ /*
-+ * uncompress block
-+ */
-+ if (compressed) {
-+ int zlib_err;
-+
-+ stream.next_in = c_buffer;
-+ stream.avail_in = c_byte;
-+ stream.next_out = buffer;
-+ stream.avail_out = msblk->read_size;
-+
-+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
-+ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
-+ != Z_STREAM_END) || ((zlib_err =
-+ zlib_inflateEnd(&stream)) != Z_OK)) {
-+ ERROR("zlib_fs returned unexpected result 0x%x\n",
-+ zlib_err);
-+ bytes = 0;
-+ } else
-+ bytes = stream.total_out;
-+
-+ up(&msblk->read_data_mutex);
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+block_release:
-+ while (--b >= 0)
-+ brelse(bh[b]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ down(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ up(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ up(&msblk->block_cache_mutex);
-+
-+ if (!(msblk->block_cache[i].length =
-+ squashfs_read_data(s,
-+ msblk->block_cache[i].data,
-+ block, 0, &next_index))) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ goto out;
-+ }
-+
-+ down(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ up(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ up(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ up(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ down(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ up(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n, nf;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+
-+ while ( 1 ) {
-+ down(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ nf = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = nf;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ up(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ up(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ up(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ init_MUTEX(&msblk->read_data_mutex);
-+ init_MUTEX(&msblk->read_page_mutex);
-+ init_MUTEX(&msblk->block_cache_mutex);
-+ init_MUTEX(&msblk->fragment_mutex);
-+ init_MUTEX(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_data block */
-+ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
-+ SQUASHFS_METADATA_SIZE :
-+ sblk->block_size;
-+
-+ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_data block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+allocate_root:
-+ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
-+ goto failed_mount;
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->read_data);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct super_block *s, struct kstatfs *buf)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ up(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ up(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ down(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ up(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, available_bytes);
-+
-+ if (i == page->index) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+ } else if ((push_page =
-+ grab_cache_page_nowait(page->mapping, i))) {
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+ unlock_page(push_page);
-+ page_cache_release(push_page);
-+ }
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ up(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+
-+ down(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (bytes)
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ up(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ dirs_read++;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_data);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static struct super_block *squashfs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
-+ "Phillip Lougher\n");
-+
-+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ destroy_inodecache();
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+
-+ if ((err = register_filesystem(&squashfs_fs_type))) {
-+ vfree(stream.workspace);
-+ destroy_inodecache();
-+ }
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ vfree(stream.workspace);
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static kmem_cache_t * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, SLAB_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-+ SLAB_CTOR_CONSTRUCTOR)
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once, NULL);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ if (kmem_cache_destroy(squashfs_inode_cachep))
-+ printk(KERN_INFO "squashfs_inode_cache: not all structures "
-+ "were freed\n");
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-+MODULE_LICENSE("GPL");
-diff --new-file -urp linux-2.6.15/fs/squashfs/Makefile linux-2.6.15-squashfs3.0/fs/squashfs/Makefile
---- linux-2.6.15/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/Makefile 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-diff --new-file -urp linux-2.6.15/fs/squashfs/squashfs2_0.c linux-2.6.15-squashfs3.0/fs/squashfs/squashfs2_0.c
---- linux-2.6.15/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/squashfs2_0.c 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,758 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
-+ - sblk->inode_table_start, offset);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-diff --new-file -urp linux-2.6.15/fs/squashfs/squashfs.h linux-2.6.15-squashfs3.0/fs/squashfs/squashfs.h
---- linux-2.6.15/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/squashfs.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,86 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct address_space_operations squashfs_symlink_aops;
-+extern struct address_space_operations squashfs_aops;
-+extern struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs.h
---- linux-2.6.15/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,911 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long unused;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int unused;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs_i.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_i.h
---- linux-2.6.15/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_i.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs_sb.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_sb.h
---- linux-2.6.15/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_sb.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ unsigned int read_size;
-+ char *read_data;
-+ char *read_page;
-+ struct semaphore read_data_mutex;
-+ struct semaphore read_page_mutex;
-+ struct semaphore block_cache_mutex;
-+ struct semaphore fragment_mutex;
-+ struct semaphore meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-diff --new-file -urp linux-2.6.15/init/do_mounts_rd.c linux-2.6.15-squashfs3.0/init/do_mounts_rd.c
---- linux-2.6.15/init/do_mounts_rd.c 2006-03-01 22:37:27.000000000 +0000
-+++ linux-2.6.15-squashfs3.0/init/do_mounts_rd.c 2006-03-07 21:12:37.000000000 +0000
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-rp-2.6.17/00-hostap.patch b/packages/linux/linux-rp-2.6.17/00-hostap.patch
deleted file mode 100644
index 20432b404a..0000000000
--- a/packages/linux/linux-rp-2.6.17/00-hostap.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Platform: Sharp Zaurus C760 running 2.6.16 and pcmciautils 013.
-
-root@c7x0:~# pccardctl ident
-Socket 0:
- product info: "Pretec", "CompactWLAN Card 802.11b", "2.5"
- manfid: 0x0156, 0x0002
- function: 6 (network)
-
-==========================================================================
-From: Jochen Friedrich
-
-Yet another card known to work OK with hostap_cs:
-
-# pccardctl ident
-Socket 0:
- no product info available
-Socket 1:
- product info: "U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02", ""
- manfid: 0x0156, 0x0002
- function: 6 (network)
-
-==========================================================================
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/net/wireless/hostap/hostap_cs.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-Index: linux/drivers/net/wireless/hostap/hostap_cs.c
-===================================================================
---- linux.orig/drivers/net/wireless/hostap/hostap_cs.c 2006-05-17 10:23:00.000000000 +0200
-+++ linux/drivers/net/wireless/hostap/hostap_cs.c 2006-05-17 10:25:45.000000000 +0200
-@@ -923,6 +923,12 @@
- PCMCIA_DEVICE_PROD_ID12(
- "ZoomAir 11Mbps High", "Rate wireless Networking",
- 0x273fe3db, 0x32a1eaee),
-+ PCMCIA_DEVICE_PROD_ID123(
-+ "Pretec", "CompactWLAN Card 802.11b", "2.5",
-+ 0x1cadd3e5, 0xe697636c, 0x7a5bfcf1),
-+ PCMCIA_DEVICE_PROD_ID123(
-+ "U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02",
-+ 0xc7b8df9d, 0x1700d087, 0x4b74baa0),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, hostap_cs_ids);
diff --git a/packages/linux/linux-rp-2.6.17/10-pcnet.patch b/packages/linux/linux-rp-2.6.17/10-pcnet.patch
deleted file mode 100644
index 2e1966e837..0000000000
--- a/packages/linux/linux-rp-2.6.17/10-pcnet.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-
-From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Add TRENDnet TE-CF100 ethernet adapter to pcnet_cs list.
-
-product info: "Fast Ethernet", "CF Size PC Card", "1.0", ""
- manfid: 0x0149, 0xc1ab
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/net/pcmcia/pcnet_cs.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-Index: netdev-2.6/drivers/net/pcmcia/pcnet_cs.c
-===================================================================
---- netdev-2.6.orig/drivers/net/pcmcia/pcnet_cs.c 2006-05-18 11:06:43.294022480 +0200
-+++ netdev-2.6/drivers/net/pcmcia/pcnet_cs.c 2006-05-18 11:10:31.548322552 +0200
-@@ -1768,6 +1768,8 @@
- PCMCIA_DEVICE_CIS_PROD_ID12("NDC", "Ethernet", 0x01c43ae1, 0x00b2e941, "NE2K.cis"),
- PCMCIA_DEVICE_CIS_PROD_ID12("PMX ", "PE-200", 0x34f3f1c8, 0x10b59f8c, "PE-200.cis"),
- PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
-+ PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
-+ 0xb4be14e3, 0x43ac239b, 0x0877b627),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
-
diff --git a/packages/linux/linux-rp-2.6.17/add-oz-release-string.patch b/packages/linux/linux-rp-2.6.17/add-oz-release-string.patch
deleted file mode 100644
index 22a6fd3943..0000000000
--- a/packages/linux/linux-rp-2.6.17/add-oz-release-string.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- linux-2.6.11-rc1/init/version.c~add-oz-release-string
-+++ linux-2.6.11-rc1/init/version.c
-@@ -29,5 +29,5 @@
- EXPORT_SYMBOL(system_utsname);
-
- const char linux_banner[] =
-- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
-+ "Linux version " UTS_RELEASE OPENZAURUS_RELEASE " (" LINUX_COMPILE_BY "@"
- LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
---- linux-2.6.11-rc1/Makefile~add-oz-release-string
-+++ linux-2.6.11-rc1/Makefile
-@@ -827,6 +827,7 @@
- exit 1; \
- fi; \
- (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
-+ echo \#define OPENZAURUS_RELEASE \"$(OPENZAURUS_RELEASE)\"; \
- echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
- echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
- )
diff --git a/packages/linux/linux-rp-2.6.17/asoc-v0.12.4_2.6.17.patch b/packages/linux/linux-rp-2.6.17/asoc-v0.12.4_2.6.17.patch
deleted file mode 100644
index 4f9672299b..0000000000
--- a/packages/linux/linux-rp-2.6.17/asoc-v0.12.4_2.6.17.patch
+++ /dev/null
@@ -1,31713 +0,0 @@
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/DAI.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/DAI.txt
-@@ -0,0 +1,546 @@
-+ASoC currently supports the three main Digital Audio Interfaces (DAI) found on
-+SoC controllers and portable audio CODECS today, namely AC97, I2S and PCM.
-+
-+
-+AC97
-+====
-+
-+ AC97 is a five wire interface commonly found on many PC sound cards. It is
-+now also popular in many portable devices. This DAI has a reset line and time
-+multiplexes its data on its SDATA_OUT (playback) and SDATA_IN (capture) lines.
-+The bit clock (BCLK) is always driven by the CODEC (usually 12.288MHz) and the
-+frame (FRAME) (usually 48kHz) is always driven by the controller. Each AC97
-+frame is 21uS long and is divided into 13 time slots.
-+
-+The AC97 specification can be found at :-
-+http://www.intel.com/design/chipsets/audio/ac97_r23.pdf
-+
-+
-+I2S
-+===
-+
-+ I2S is a common 4 wire DAI used in HiFi, STB and portable devices. The Tx and
-+Rx lines are used for audio transmision, whilst the bit clock (BCLK) and
-+left/right clock (LRC) synchronise the link. I2S is flexible in that either the
-+controller or CODEC can drive (master) the BCLK and LRC clock lines. Bit clock
-+usually varies depending on the sample rate and the master system clock
-+(SYSCLK). LRCLK is the same as the sample rate. A few devices support separate
-+ADC and DAC LRCLK's, this allows for similtanious capture and playback at
-+different sample rates.
-+
-+I2S has several different operating modes:-
-+
-+ o I2S - MSB is transmitted on the falling edge of the first BCLK after LRC
-+ transition.
-+
-+ o Left Justified - MSB is transmitted on transition of LRC.
-+
-+ o Right Justified - MSB is transmitted sample size BCLK's before LRC
-+ transition.
-+
-+PCM
-+===
-+
-+PCM is another 4 wire interface, very similar to I2S, that can support a more
-+flexible protocol. It has bit clock (BCLK) and sync (SYNC) lines that are used
-+to synchronise the link whilst the Tx and Rx lines are used to transmit and
-+receive the audio data. Bit clock usually varies depending on sample rate
-+whilst sync runs at the sample rate. PCM also supports Time Division
-+Multiplexing (TDM) in that several devices can use the bus similtaniuosly (This
-+is sometimes referred to as network mode).
-+
-+Common PCM operating modes:-
-+
-+ o Mode A - MSB is transmitted on falling edge of first BCLK after FRAME/SYNC.
-+
-+ o Mode B - MSB is transmitted on rising edge of FRAME/SYNC.
-+
-+
-+ASoC DAI Configuration
-+======================
-+
-+Every CODEC DAI and SoC DAI must have their capabilities defined in order to
-+be configured together at runtime when the audio and clocking parameters are
-+known. This is achieved by creating an array of struct snd_soc_hw_mode in the
-+the CODEC and SoC interface drivers. Each element in the array describes a DAI
-+mode and each mode is usually based upon the DAI system clock to sample rate
-+ratio (FS).
-+
-+i.e. 48k sample rate @ 256 FS = sytem clock of 12.288 MHz
-+ 48000 * 256 = 12288000
-+
-+The CPU and Codec DAI modes are then ANDed together at runtime to determine the
-+rutime DAI configuration for both the Codec and CPU.
-+
-+When creating a new codec or SoC DAI it's probably best to start of with a few
-+sample rates first and then test your interface.
-+
-+struct snd_soc_dai_mode is defined (in soc.h) as:-
-+
-+/* SoC DAI mode */
-+struct snd_soc_dai_mode {
-+ u16 fmt; /* SND_SOC_DAIFMT_* */
-+ u16 tdm; /* SND_SOC_HWTDM_* */
-+ u64 pcmfmt; /* SNDRV_PCM_FMTBIT_* */
-+ u16 pcmrate; /* SND_SOC_HWRATE_* */
-+ u16 pcmdir:2; /* SND_SOC_HWDIR_* */
-+ u16 flags:8; /* hw flags */
-+ u16 fs; /* mclk to rate divider */
-+ u64 bfs; /* mclk to bclk dividers */
-+ unsigned long priv; /* private mode data */
-+};
-+
-+fmt:
-+----
-+This field defines the DAI mode hardware format (e.g. I2S settings) and
-+supports the following settings:-
-+
-+ 1) hardware DAI formats
-+
-+#define SND_SOC_DAIFMT_I2S (1 << 0) /* I2S mode */
-+#define SND_SOC_DAIFMT_RIGHT_J (1 << 1) /* Right justified mode */
-+#define SND_SOC_DAIFMT_LEFT_J (1 << 2) /* Left Justified mode */
-+#define SND_SOC_DAIFMT_DSP_A (1 << 3) /* L data msb after FRM */
-+#define SND_SOC_DAIFMT_DSP_B (1 << 4) /* L data msb during FRM */
-+#define SND_SOC_DAIFMT_AC97 (1 << 5) /* AC97 */
-+
-+ 2) hw DAI signal inversions
-+
-+#define SND_SOC_DAIFMT_NB_NF (1 << 8) /* normal bit clock + frame */
-+#define SND_SOC_DAIFMT_NB_IF (1 << 9) /* normal bclk + inv frm */
-+#define SND_SOC_DAIFMT_IB_NF (1 << 10) /* invert bclk + nor frm */
-+#define SND_SOC_DAIFMT_IB_IF (1 << 11) /* invert bclk + frm */
-+
-+ 3) hw clock masters
-+ This is wrt the codec, the inverse is true for the interface
-+ i.e. if the codec is clk and frm master then the interface is
-+ clk and frame slave.
-+
-+#define SND_SOC_DAIFMT_CBM_CFM (1 << 12) /* codec clk & frm master */
-+#define SND_SOC_DAIFMT_CBS_CFM (1 << 13) /* codec clk slave & frm master */
-+#define SND_SOC_DAIFMT_CBM_CFS (1 << 14) /* codec clk master & frame slave */
-+#define SND_SOC_DAIFMT_CBS_CFS (1 << 15) /* codec clk & frm slave */
-+
-+At least one option from each section must be selected. Multiple selections are
-+also supported e.g.
-+
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF
-+
-+
-+tdm:
-+------
-+This field defines the Time Division Multiplexing left and right word
-+positions for the DAI mode if applicable. Set to SND_SOC_DAITDM_LRDW(0,0) for
-+no TDM.
-+
-+
-+pcmfmt:
-+---------
-+The hardware PCM format. This describes the PCM formats supported by the DAI
-+mode e.g.
-+
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
-+ SNDRV_PCM_FORMAT_S24_3LE
-+
-+pcmrate:
-+----------
-+The PCM sample rates supported by the DAI mode. e.g.
-+
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000
-+
-+
-+pcmdir:
-+---------
-+The stream directions supported by this mode. e.g. playback and capture
-+
-+
-+flags:
-+--------
-+The DAI hardware flags supported by the mode.
-+
-+/* use bfs mclk divider mode (BCLK = MCLK / x) */
-+#define SND_SOC_DAI_BFS_DIV 0x1
-+/* use bfs rate mulitplier (BCLK = RATE * x)*/
-+#define SND_SOC_DAI_BFS_RATE 0x2
-+/* use bfs rcw multiplier (BCLK = RATE * CHN * WORD SIZE) */
-+#define SND_SOC_DAI_BFS_RCW 0x4
-+/* capture and playback can use different clocks */
-+#define SND_SOC_DAI_ASYNC 0x8
-+
-+NOTE: Bitclock division and mulitiplication modes can be safely matched by the
-+core logic.
-+
-+
-+fs:
-+-----
-+The FS supported by this DAI mode FS is the ratio between the system clock and
-+the sample rate. See above
-+
-+bfs:
-+------
-+BFS is the ratio of BCLK to MCLK or the ratio of BCLK to sample rate (this
-+depends on the codec or CPU DAI).
-+
-+The BFS supported by the DAI mode. This can either be the ratio between the
-+bitclock (BCLK) and the sample rate OR the ratio between the system clock and
-+the sample rate. Depends on the flags above.
-+
-+priv:
-+-----
-+private codec mode data.
-+
-+
-+
-+Examples
-+========
-+
-+Note that Codec DAI and CPU DAI examples are interchangeable in these examples
-+as long as the bus master is reversed. i.e.
-+
-+ SND_SOC_DAIFMT_CBM_CFM would become SND_SOC_DAIFMT_CBS_CFS
-+ and vice versa.
-+
-+This applies to all SND_SOC_DAIFMT_CB*_CF*.
-+
-+Example 1
-+---------
-+
-+Simple codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
-+BCLK of either MCLK/2 or MCLK/4.
-+
-+ /* codec master */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(2) | SND_SOC_FSBD(4),
-+ }
-+
-+
-+Example 2
-+---------
-+Simple codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
-+BCLK of either Rate * 32 or Rate * 64.
-+
-+ /* codec master */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 32,
-+ },
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+
-+
-+Example 3
-+---------
-+Codec that runs at 8k & 48k @ 256FS in master mode, can generate a BCLK that
-+is a multiple of Rate * channels * word size. (RCW) i.e.
-+
-+ BCLK = 8000 * 2 * 16 (8k, stereo, 16bit)
-+ = 256kHz
-+
-+This codecs supports a RCW multiple of 1,2
-+
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1) | SND_SOC_FSBW(2),
-+ }
-+
-+
-+Example 4
-+---------
-+Codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
-+BCLK of either Rate * 32 or Rate * 64. Codec can also run in slave mode as long
-+as BCLK is rate * 32 or rate * 64.
-+
-+ /* codec master */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 32,
-+ },
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+
-+ /* codec slave */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmdir = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = 32,
-+ },
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmdir = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = 64,
-+ },
-+
-+
-+Example 5
-+---------
-+Codec that only runs at 8k, 16k, 32k, 48k, 96k @ 128FS, 192FS & 256FS in master
-+mode and can generate a BCLK of MCLK / (1,2,4,8,16). Codec can also run in slave
-+mode as and does not care about FS or BCLK (as long as there is enough bandwidth).
-+
-+ #define CODEC_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+ #define CODEC_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 |\
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000)
-+
-+ /* codec master @ 128, 192 & 256 FS */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = CODEC_RATES,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 128,
-+ .bfs = CODEC_FSB,
-+ },
-+
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = CODEC_RATES,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 192,
-+ .bfs = CODEC_FSB
-+ },
-+
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = CODEC_RATES,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = CODEC_FSB,
-+ },
-+
-+ /* codec slave */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = CODEC_RATES,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+
-+
-+Example 6
-+---------
-+Codec that only runs at 8k, 44.1k, 48k @ different FS in master mode (for use
-+with a fixed MCLK) and can generate a BCLK of MCLK / (1,2,4,8,16).
-+Codec can also run in slave mode as and does not care about FS or BCLK (as long
-+as there is enough bandwidth). Codec can support 16, 24 and 32 bit PCM sample
-+sizes.
-+
-+ #define CODEC_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+ #define CODEC_PCM_FORMATS \
-+ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
-+ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | SNDRV_PCM_FORMAT_S32_LE)
-+
-+ /* codec master */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = CODEC_FSB,
-+ },
-+
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 272,
-+ .bfs = CODEC_FSB,
-+ },
-+
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = CODEC_FSB,
-+ },
-+
-+ /* codec slave */
-+ {
-+ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
-+ .pcmrate = CODEC_RATES,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+
-+
-+Example 7
-+---------
-+AC97 Codec that does not support VRA (i.e only runs at 48k).
-+
-+ #define AC97_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+ #define AC97_PCM_FORMATS \
-+ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S18_3LE | \
-+ SNDRV_PCM_FORMAT_S20_3LE)
-+
-+ /* AC97 with no VRA */
-+ {
-+ .pcmfmt = AC97_PCM_FORMATS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ }
-+
-+
-+Example 8
-+---------
-+
-+CPU DAI that supports 8k - 48k @ 256FS and BCLK = MCLK / 4 in master mode.
-+Slave mode (CPU DAI is FRAME master) supports 8k - 96k at any FS as long as
-+BCLK = 64 * rate. (Intel XScale I2S controller).
-+
-+ #define PXA_I2S_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
-+
-+ #define PXA_I2S_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+ #define PXA_I2S_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+ /* priv is divider */
-+ static struct snd_soc_dai_mode pxa2xx_i2s_modes[] = {
-+ /* pxa2xx I2S frame and clock master modes */
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x48,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x34,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x24,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x1a,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0xd,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0xc,
-+ },
-+
-+ /* pxa2xx I2S frame master and clock slave mode */
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = PXA_I2S_RATES,
-+ .pcmdir = PXA_I2S_DIR,
-+ .fs = SND_SOC_FS_ALL,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .bfs = 64,
-+ .priv = 0x48,
-+ },
-+};
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/clocking.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/clocking.txt
-@@ -0,0 +1,314 @@
-+Audio Clocking
-+==============
-+
-+This text describes the audio clocking terms in ASoC and digital audio in
-+general. Note: Audio clocking can be complex !
-+
-+
-+Master Clock
-+------------
-+
-+Every audio subsystem is driven by a master clock (sometimes refered to as MCLK
-+or SYSCLK). This audio master clock can be derived from a number of sources
-+(e.g. crystal, PLL, CPU clock) and is responsible for producing the correct
-+audio playback and capture sample rates.
-+
-+Some master clocks (e.g. PLL's and CPU based clocks) are configuarble in that
-+their speed can be altered by software (depending on the system use and to save
-+power). Other master clocks are fixed at at set frequency (i.e. crystals).
-+
-+
-+DAI Clocks
-+----------
-+The Digital Audio Interface is usually driven by a Bit Clock (often referred to
-+as BCLK). This clock is used to drive the digital audio data across the link
-+between the codec and CPU.
-+
-+The DAI also has a frame clock to signal the start of each audio frame. This
-+clock is sometimes referred to as LRC (left right clock) or FRAME. This clock
-+runs at exactly the sample rate (LRC = Rate).
-+
-+Bit Clock can be generated as follows:-
-+
-+BCLK = MCLK / x
-+
-+ or
-+
-+BCLK = LRC * x
-+
-+ or
-+
-+BCLK = LRC * Channels * Word Size
-+
-+This relationship depends on the codec or SoC CPU in particular. ASoC can quite
-+easily match BCLK generated by division (SND_SOC_DAI_BFS_DIV) with BCLK by
-+multiplication (SND_SOC_DAI_BFS_RATE) or BCLK generated by
-+Rate * Channels * Word size (RCW or SND_SOC_DAI_BFS_RCW).
-+
-+
-+ASoC Clocking
-+-------------
-+
-+The ASoC core determines the clocking for each particular configuration at
-+runtime. This is to allow for dynamic audio clocking wereby the audio clock is
-+variable and depends on the system state or device usage scenario. i.e. a voice
-+call requires slower clocks (and hence less power) than MP3 playback.
-+
-+ASoC will call the config_sysclock() function for the target machine during the
-+audio parameters configuration. The function is responsible for then clocking
-+the machine audio subsytem and returning the audio clock speed to the core.
-+This function should also call the codec and cpu DAI clock_config() functions
-+to configure their respective internal clocking if required.
-+
-+
-+ASoC Clocking Control Flow
-+--------------------------
-+
-+The ASoC core will call the machine drivers config_sysclock() when most of the
-+DAI capabilities are known. The machine driver is then responsible for calling
-+the codec and/or CPU DAI drivers with the selected capabilities and the current
-+MCLK. Note that the machine driver is also resonsible for setting the MCLK (and
-+enabling it).
-+
-+ (1) Match Codec and CPU DAI capabilities. At this point we have
-+ matched the majority of the DAI fields and now need to make sure this
-+ mode is currently clockable.
-+
-+ (2) machine->config_sysclk() is now called with the matched DAI FS, sample
-+ rate and BCLK master. This function then gets/sets the current audio
-+ clock (depening on usage) and calls the codec and CPUI DAI drivers with
-+ the FS, rate, BCLK master and MCLK.
-+
-+ (3) Codec/CPU DAI config_sysclock(). This function checks that the FS, rate,
-+ BCLK master and MCLK are acceptable for the codec or CPU DAI. It also
-+ sets the DAI internal state to work with said clocks.
-+
-+The config_sysclk() functions for CPU, codec and machine should return the MCLK
-+on success and 0 on failure.
-+
-+
-+Examples (b = BCLK, l = LRC)
-+============================
-+
-+Example 1
-+---------
-+
-+Simple codec that only runs at 48k @ 256FS in master mode.
-+
-+CPU only runs as slave DAI, however it generates a variable MCLK.
-+
-+ -------- ---------
-+ | | <----mclk--- | |
-+ | Codec |b -----------> | CPU |
-+ | |l -----------> | |
-+ | | | |
-+ -------- ---------
-+
-+The codec driver has the following config_sysclock()
-+
-+ static unsigned int config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+ {
-+ /* make sure clock is 256 * rate */
-+ if(info->rate << 8 == clk) {
-+ dai->mclk = clk;
-+ return clk;
-+ }
-+
-+ return 0;
-+ }
-+
-+The CPU I2S DAI driver has the following config_sysclk()
-+
-+ static unsigned int config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+ {
-+ /* can we support this clk */
-+ if(set_audio_clk(clk) < 0)
-+ return -EINVAL;
-+
-+ dai->mclk = clk;
-+ return dai->clk;
-+ }
-+
-+The machine driver config_sysclk() in this example is as follows:-
-+
-+ unsigned int machine_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+ {
-+ int clk = info->rate * info->fs;
-+
-+ /* check that CPU can deliver clock */
-+ if(rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info, clk) < 0)
-+ return -EINVAL;
-+
-+ /* can codec work with this clock */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, clk);
-+ }
-+
-+
-+Example 2
-+---------
-+
-+Codec that can master at 8k and 48k at various FS (and hence supports a fixed
-+set of input MCLK's) and can also be slave at various FS .
-+
-+The CPU can master at 8k and 48k @256 FS and can be slave at any FS.
-+
-+MCLK is a 12.288MHz crystal on this machine.
-+
-+ -------- ---------
-+ | | <---xtal---> | |
-+ | Codec |b <----------> | CPU |
-+ | |l <----------> | |
-+ | | | |
-+ -------- ---------
-+
-+
-+The codec driver has the following config_sysclock()
-+
-+ /* supported input clocks */
-+ const static int hifi_clks[] = {11289600, 12000000, 12288000,
-+ 16934400, 18432000};
-+
-+ static unsigned int config_hsysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+ {
-+ int i;
-+
-+ /* is clk supported */
-+ for(i = 0; i < ARRAY_SIZE(hifi_clks); i++) {
-+ if(clk == hifi_clks[i]) {
-+ dai->mclk = clk;
-+ return clk;
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+ }
-+
-+The CPU I2S DAI driver has the following config_sysclk()
-+
-+ static unsigned int config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+ {
-+ /* are we master or slave */
-+ if (info->bclk_master &
-+ (SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS)) {
-+
-+ /* we can only master @ 256FS */
-+ if(info->rate << 8 == clk) {
-+ dai->mclk = clk;
-+ return dai->mclk;
-+ }
-+ } else {
-+ /* slave we can run at any FS */
-+ dai->mclk = clk;
-+ return dai->mclk;
-+ }
-+
-+ /* not supported */
-+ return dai->clk;
-+ }
-+
-+The machine driver config_sysclk() in this example is as follows:-
-+
-+ unsigned int machine_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+ {
-+ int clk = 12288000; /* 12.288MHz */
-+
-+ /* who's driving the link */
-+ if (info->bclk_master &
-+ (SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS)) {
-+ /* codec master */
-+
-+ /* check that CPU can work with clock */
-+ if(rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info, clk) < 0)
-+ return -EINVAL;
-+
-+ /* can codec work with this clock */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, clk);
-+ } else {
-+ /* cpu master */
-+
-+ /* check that codec can work with clock */
-+ if(rtd->codec_dai->config_sysclk(rtd->codec_dai, info, clk) < 0)
-+ return -EINVAL;
-+
-+ /* can CPU work with this clock */
-+ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info, clk);
-+ }
-+ }
-+
-+
-+
-+Example 3
-+---------
-+
-+Codec that masters at 8k ... 48k @256 FS. Codec can also be slave and
-+doesn't care about FS. The codec has an internal PLL and dividers to generate
-+the necessary internal clocks (for 256FS).
-+
-+CPU can only be slave and doesn't care about FS.
-+
-+MCLK is a non controllable 13MHz clock from the CPU.
-+
-+
-+ -------- ---------
-+ | | <----mclk--- | |
-+ | Codec |b <----------> | CPU |
-+ | |l <----------> | |
-+ | | | |
-+ -------- ---------
-+
-+The codec driver has the following config_sysclock()
-+
-+ /* valid PCM clock dividers * 2 */
-+ static int pcm_divs[] = {2, 6, 11, 4, 8, 12, 16};
-+
-+ static unsigned int config_vsysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+ {
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 0; i < ARRAY_SIZE(pcm_divs); i++) {
-+ if ((best_clk >> 1) * pcm_divs[i] == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = pcm_divs[i];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll_div); i++) {
-+ if (pll_div[i].pll_in == clk) {
-+ for (j = 0; j < ARRAY_SIZE(pcm_divs); j++) {
-+ if (pll_div[i].pll_out == pcm_divs[j] * (best_clk >> 1)) {
-+ dai->pll_in = clk;
-+ dai->pll_out = pll_div[i].pll_out;
-+ dai->clk_div = pcm_divs[j];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+ }
-+
-+
-+The CPU I2S DAI driver has the does not need a config_sysclk() as it can slave
-+at any FS.
-+
-+ unsigned int config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+ {
-+ /* codec has pll that generates mclk from 13MHz xtal */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
-+ }
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/codec.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/codec.txt
-@@ -0,0 +1,232 @@
-+ASoC Codec Driver
-+=================
-+
-+The codec driver is generic and hardware independent code that configures the
-+codec to provide audio capture and playback. It should contain no code that is
-+specific to the target platform or machine. All platform and machine specific
-+code should be added to the platform and machine drivers respectively.
-+
-+Each codec driver must provide the following features:-
-+
-+ 1) Digital audio interface (DAI) description
-+ 2) Digital audio interface configuration
-+ 3) PCM's description
-+ 4) Codec control IO - using I2C, 3 Wire(SPI) or both API's
-+ 5) Mixers and audio controls
-+ 6) Sysclk configuration
-+ 7) Codec audio operations
-+
-+Optionally, codec drivers can also provide:-
-+
-+ 8) DAPM description.
-+ 9) DAPM event handler.
-+10) DAC Digital mute control.
-+
-+It's probably best to use this guide in conjuction with the existing codec
-+driver code in sound/soc/codecs/
-+
-+ASoC Codec driver breakdown
-+===========================
-+
-+1 - Digital Audio Interface (DAI) description
-+---------------------------------------------
-+The DAI is a digital audio data transfer link between the codec and host SoC
-+CPU. It typically has data transfer capabilities in both directions
-+(playback and capture) and can run at a variety of different speeds.
-+Supported interfaces currently include AC97, I2S and generic PCM style links.
-+Please read DAI.txt for implementation information.
-+
-+
-+2 - Digital Audio Interface (DAI) configuration
-+-----------------------------------------------
-+DAI configuration is handled by the codec_pcm_prepare function and is
-+responsible for configuring and starting the DAI on the codec. This can be
-+called multiple times and is atomic. It can access the runtime parameters.
-+
-+This usually consists of a large function with numerous switch statements to
-+set up each configuration option. These options are set by the core at runtime.
-+
-+
-+3 - Codec PCM's
-+---------------
-+Each codec must have it's PCM's defined. This defines the number of channels,
-+stream names, callbacks and codec name. It is also used to register the DAI
-+with the ASoC core. The PCM structure also associates the DAI capabilities with
-+the ALSA PCM.
-+
-+e.g.
-+
-+static struct snd_soc_pcm_codec wm8731_pcm_client = {
-+ .name = "WM8731",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8731_config_sysclk,
-+ .ops = {
-+ .prepare = wm8731_pcm_prepare,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8731_hwfmt),
-+ .modes = &wm8731_hwfmt[0],
-+ },
-+};
-+
-+
-+4 - Codec control IO
-+--------------------
-+The codec can ususally be controlled via an I2C or SPI style interface (AC97
-+combines control with data in the DAI). The codec drivers will have to provide
-+functions to read and write the codec registers along with supplying a register
-+cache:-
-+
-+ /* IO control data and register cache */
-+ void *control_data; /* codec control (i2c/3wire) data */
-+ void *reg_cache;
-+
-+Codec read/write should do any data formatting and call the hardware read write
-+below to perform the IO. These functions are called by the core and alsa when
-+performing DAPM or changing the mixer:-
-+
-+ unsigned int (*read)(struct snd_soc_codec *, unsigned int);
-+ int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
-+
-+Codec hardware IO functions - usually points to either the I2C, SPI or AC97
-+read/write:-
-+
-+ hw_write_t hw_write;
-+ hw_read_t hw_read;
-+
-+
-+5 - Mixers and audio controls
-+-----------------------------
-+All the codec mixers and audio controls can be defined using the convenience
-+macros defined in soc.h.
-+
-+ #define SOC_SINGLE(xname, reg, shift, mask, invert)
-+
-+Defines a single control as follows:-
-+
-+ xname = Control name e.g. "Playback Volume"
-+ reg = codec register
-+ shift = control bit(s) offset in register
-+ mask = control bit size(s) e.g. mask of 7 = 3 bits
-+ invert = the control is inverted
-+
-+Other macros include:-
-+
-+ #define SOC_DOUBLE(xname, reg, shift_left, shift_right, mask, invert)
-+
-+A stereo control
-+
-+ #define SOC_DOUBLE_R(xname, reg_left, reg_right, shift, mask, invert)
-+
-+A stereo control spanning 2 registers
-+
-+ #define SOC_ENUM_SINGLE(xreg, xshift, xmask, xtexts)
-+
-+Defines an single enumerated control as follows:-
-+
-+ xreg = register
-+ xshift = control bit(s) offset in register
-+ xmask = control bit(s) size
-+ xtexts = pointer to array of strings that describe each setting
-+
-+ #define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xtexts)
-+
-+Defines a stereo enumerated control
-+
-+
-+6 - System clock configuration.
-+-------------------------------
-+The system clock that drives the audio subsystem can change depending on sample
-+rate and the system power state. i.e.
-+
-+o Higher sample rates sometimes need a higher system clock.
-+o Low system power states can sometimes limit the available clocks.
-+
-+This function is a callback that the machine driver can call to set and
-+determine if the clock and sample rate combination is supported by the codec at
-+the present time (and system state).
-+
-+NOTE: If the codec has a PLL then it has a lot more flexability wrt clock and
-+sample rate combinations.
-+
-+Your config_sysclock function should return the MCLK if it's a valid
-+combination for your codec else 0;
-+
-+Please read clocking.txt now.
-+
-+
-+7 - Codec Audio Operations
-+--------------------------
-+The codec driver also supports the following alsa operations:-
-+
-+/* SoC audio ops */
-+struct snd_soc_ops {
-+ int (*startup)(snd_pcm_substream_t *);
-+ void (*shutdown)(snd_pcm_substream_t *);
-+ int (*hw_params)(snd_pcm_substream_t *, snd_pcm_hw_params_t *);
-+ int (*hw_free)(snd_pcm_substream_t *);
-+ int (*prepare)(snd_pcm_substream_t *);
-+};
-+
-+Please refer to the alsa driver PCM documentation for details.
-+http://www.alsa-project.org/~iwai/writing-an-alsa-driver/c436.htm
-+
-+
-+8 - DAPM description.
-+---------------------
-+The Dynamic Audio Power Management description describes the codec's power
-+components, their relationships and registers to the ASoC core. Please read
-+dapm.txt for details of building the description.
-+
-+Please also see the examples in other codec drivers.
-+
-+
-+9 - DAPM event handler
-+----------------------
-+This function is a callback that handles codec domain PM calls and system
-+domain PM calls (e.g. suspend and resume). It's used to put the codec to sleep
-+when not in use.
-+
-+Power states:-
-+
-+ SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, active */
-+
-+ SNDRV_CTL_POWER_D1: /* partial On */
-+ SNDRV_CTL_POWER_D2: /* partial On */
-+
-+ SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, inactive */
-+
-+ SNDRV_CTL_POWER_D3cold: /* Everything Off, without power */
-+
-+
-+10 - Codec DAC digital mute control.
-+------------------------------------
-+Most codecs have a digital mute before the DAC's that can be used to minimise
-+any system noise. The mute stops any digital data from entering the DAC.
-+
-+A callback can be created that is called by the core for each codec DAI when the
-+mute is applied or freed.
-+
-+i.e.
-+
-+static int wm8974_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8974_read_reg_cache(codec, WM8974_DAC) & 0xffbf;
-+ if(mute)
-+ wm8974_write(codec, WM8974_DAC, mute_reg | 0x40);
-+ else
-+ wm8974_write(codec, WM8974_DAC, mute_reg);
-+ return 0;
-+}
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/dapm.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/dapm.txt
-@@ -0,0 +1,297 @@
-+Dynamic Audio Power Management for Portable Devices
-+===================================================
-+
-+1. Description
-+==============
-+
-+Dynamic Audio Power Management (DAPM) is designed to allow portable Linux devices
-+to use the minimum amount of power within the audio subsystem at all times. It
-+is independent of other kernel PM and as such, can easily co-exist with the
-+other PM systems.
-+
-+DAPM is also completely transparent to all user space applications as all power
-+switching is done within the ASoC core. No code changes or recompiling are
-+required for user space applications. DAPM makes power switching descisions based
-+upon any audio stream (capture/playback) activity and audio mixer settings
-+within the device.
-+
-+DAPM spans the whole machine. It covers power control within the entire audio
-+subsystem, this includes internal codec power blocks and machine level power
-+systems.
-+
-+There are 4 power domains within DAPM
-+
-+ 1. Codec domain - VREF, VMID (core codec and audio power)
-+ Usually controlled at codec probe/remove and suspend/resume, although
-+ can be set at stream time if power is not needed for sidetone, etc.
-+
-+ 2. Platform/Machine domain - physically connected inputs and outputs
-+ Is platform/machine and user action specific, is configured by the
-+ machine driver and responds to asynchronous events e.g when HP
-+ are inserted
-+
-+ 3. Path domain - audio susbsystem signal paths
-+ Automatically set when mixer and mux settings are changed by the user.
-+ e.g. alsamixer, amixer.
-+
-+ 4. Stream domain - DAC's and ADC's.
-+ Enabled and disabled when stream playback/capture is started and
-+ stopped respectively. e.g. aplay, arecord.
-+
-+All DAPM power switching descisons are made automatically by consulting an audio
-+routing map of the whole machine. This map is specific to each machine and
-+consists of the interconnections between every audio component (including
-+internal codec components). All audio components that effect power are called
-+widgets hereafter.
-+
-+
-+2. DAPM Widgets
-+===============
-+
-+Audio DAPM widgets fall into a number of types:-
-+
-+ o Mixer - Mixes several analog signals into a single analog signal.
-+ o Mux - An analog switch that outputs only 1 of it's inputs.
-+ o PGA - A programmable gain amplifier or attenuation widget.
-+ o ADC - Analog to Digital Converter
-+ o DAC - Digital to Analog Converter
-+ o Switch - An analog switch
-+ o Input - A codec input pin
-+ o Output - A codec output pin
-+ o Headphone - Headphone (and optional Jack)
-+ o Mic - Mic (and optional Jack)
-+ o Line - Line Input/Output (and optional Jack)
-+ o Speaker - Speaker
-+ o Pre - Special PRE widget (exec before all others)
-+ o Post - Special POST widget (exec after all others)
-+
-+(Widgets are defined in include/sound/soc-dapm.h)
-+
-+Widgets are usually added in the codec driver and the machine driver. There are
-+convience macros defined in soc-dapm.h that can be used to quickly build a
-+list of widgets of the codecs and machines DAPM widgets.
-+
-+Most widgets have a name, register, shift and invert. Some widgets have extra
-+parameters for stream name and kcontrols.
-+
-+
-+2.1 Stream Domain Widgets
-+-------------------------
-+
-+Stream Widgets relate to the stream power domain and only consist of ADC's
-+(analog to digital converters) and DAC's (digital to analog converters).
-+
-+Stream widgets have the following format:-
-+
-+SND_SOC_DAPM_DAC(name, stream name, reg, shift, invert),
-+
-+NOTE: the stream name must match the corresponding stream name in your codecs
-+snd_soc_codec_dai.
-+
-+e.g. stream widgets for HiFi playback and capture
-+
-+SND_SOC_DAPM_DAC("HiFi DAC", "HiFi Playback", REG, 3, 1),
-+SND_SOC_DAPM_ADC("HiFi ADC", "HiFi Capture", REG, 2, 1),
-+
-+
-+2.2 Path Domain Widgets
-+-----------------------
-+
-+Path domain widgets have a ability to control or effect the audio signal or
-+audio paths within the audio subsystem. They have the following form:-
-+
-+SND_SOC_DAPM_PGA(name, reg, shift, invert, controls, num_controls)
-+
-+Any widget kcontrols can be set using the controls and num_controls members.
-+
-+e.g. Mixer widget (the kcontrols are declared first)
-+
-+/* Output Mixer */
-+static const snd_kcontrol_new_t wm8731_output_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8731_APANA, 3, 1, 0),
-+SOC_DAPM_SINGLE("Mic Sidetone Switch", WM8731_APANA, 5, 1, 0),
-+SOC_DAPM_SINGLE("HiFi Playback Switch", WM8731_APANA, 4, 1, 0),
-+};
-+
-+SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1, wm8731_output_mixer_controls,
-+ ARRAY_SIZE(wm8731_output_mixer_controls)),
-+
-+
-+2.3 Platform/Machine domain Widgets
-+-----------------------------------
-+
-+Machine widgets are different from codec widgets in that they don't have a
-+codec register bit associated with them. A machine widget is assigned to each
-+machine audio component (non codec) that can be independently powered. e.g.
-+
-+ o Speaker Amp
-+ o Microphone Bias
-+ o Jack connectors
-+
-+A machine widget can have an optional call back.
-+
-+e.g. Jack connector widget for an external Mic that enables Mic Bias
-+when the Mic is inserted:-
-+
-+static int spitz_mic_bias(struct snd_soc_dapm_widget* w, int event)
-+{
-+ if(SND_SOC_DAPM_EVENT_ON(event))
-+ set_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_MIC_BIAS);
-+ else
-+ reset_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_MIC_BIAS);
-+
-+ return 0;
-+}
-+
-+SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias),
-+
-+
-+2.4 Codec Domain
-+----------------
-+
-+The Codec power domain has no widgets and is handled by the codecs DAPM event
-+handler. This handler is called when the codec powerstate is changed wrt to any
-+stream event or by kernel PM events.
-+
-+
-+2.5 Virtual Widgets
-+-------------------
-+
-+Sometimes widgets exist in the codec or machine audio map that don't have any
-+corresponding register bit for power control. In this case it's necessary to
-+create a virtual widget - a widget with no control bits e.g.
-+
-+SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_DAPM_NOPM, 0, 0, NULL, 0),
-+
-+This can be used to merge to signal paths together in software.
-+
-+After all the widgets have been defined, they can then be added to the DAPM
-+subsystem individually with a call to snd_soc_dapm_new_control().
-+
-+
-+3. Codec Widget Interconnections
-+================================
-+
-+Widgets are connected to each other within the codec and machine by audio
-+paths (called interconnections). Each interconnection must be defined in order
-+to create a map of all audio paths between widgets.
-+This is easiest with a diagram of the codec (and schematic of the machine audio
-+system), as it requires joining widgets together via their audio signal paths.
-+
-+i.e. from the WM8731 codec's output mixer (wm8731.c)
-+
-+The WM8731 output mixer has 3 inputs (sources)
-+
-+ 1. Line Bypass Input
-+ 2. DAC (HiFi playback)
-+ 3. Mic Sidetone Input
-+
-+Each input in this example has a kcontrol associated with it (defined in example
-+above) and is connected to the output mixer via it's kcontrol name. We can now
-+connect the destination widget (wrt audio signal) with it's source widgets.
-+
-+ /* output mixer */
-+ {"Output Mixer", "Line Bypass Switch", "Line Input"},
-+ {"Output Mixer", "HiFi Playback Switch", "DAC"},
-+ {"Output Mixer", "Mic Sidetone Switch", "Mic Bias"},
-+
-+So we have :-
-+
-+ Destination Widget <=== Path Name <=== Source Widget
-+
-+Or:-
-+
-+ Sink, Path, Source
-+
-+Or :-
-+
-+ "Output Mixer" is connected to the "DAC" via the "HiFi Playback Switch".
-+
-+When there is no path name connecting widgets (e.g. a direct connection) we
-+pass NULL for the path name.
-+
-+Interconnections are created with a call to:-
-+
-+snd_soc_dapm_connect_input(codec, sink, path, source);
-+
-+Finally, snd_soc_dapm_new_widgets(codec) must be called after all widgets and
-+interconnections have been registered with the core. This causes the core to
-+scan the codec and machine so that the internal DAPM state matches the
-+physical state of the machine.
-+
-+
-+3.1 Machine Widget Interconnections
-+-----------------------------------
-+Machine widget interconnections are created in the same way as codec ones and
-+directly connect the codec pins to machine level widgets.
-+
-+e.g. connects the speaker out codec pins to the internal speaker.
-+
-+ /* ext speaker connected to codec pins LOUT2, ROUT2 */
-+ {"Ext Spk", NULL , "ROUT2"},
-+ {"Ext Spk", NULL , "LOUT2"},
-+
-+This allows the DAPM to power on and off pins that are connected (and in use)
-+and pins that are NC respectively.
-+
-+
-+4 Endpoint Widgets
-+===================
-+An endpoint is a start or end point (widget) of an audio signal within the
-+machine and includes the codec. e.g.
-+
-+ o Headphone Jack
-+ o Internal Speaker
-+ o Internal Mic
-+ o Mic Jack
-+ o Codec Pins
-+
-+When a codec pin is NC it can be marked as not used with a call to
-+
-+snd_soc_dapm_set_endpoint(codec, "Widget Name", 0);
-+
-+The last argument is 0 for inactive and 1 for active. This way the pin and its
-+input widget will never be powered up and consume power.
-+
-+This also applies to machine widgets. e.g. if a headphone is connected to a
-+jack then the jack can be marked active. If the headphone is removed, then
-+the headphone jack can be marked inactive.
-+
-+
-+5 DAPM Widget Events
-+====================
-+
-+Some widgets can register their interest with the DAPM core in PM events.
-+e.g. A Speaker with an amplifier registers a widget so the amplifier can be
-+powered only when the spk is in use.
-+
-+/* turn speaker amplifier on/off depending on use */
-+static int corgi_amp_event(struct snd_soc_dapm_widget *w, int event)
-+{
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
-+ else
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
-+
-+ return 0;
-+}
-+
-+/* corgi machine dapm widgets */
-+static const struct snd_soc_dapm_widget wm8731_dapm_widgets =
-+ SND_SOC_DAPM_SPK("Ext Spk", corgi_amp_event);
-+
-+Please see soc-dapm.h for all other widgets that support events.
-+
-+
-+5.1 Event types
-+---------------
-+
-+The following event types are supported by event widgets.
-+
-+/* dapm event types */
-+#define SND_SOC_DAPM_PRE_PMU 0x1 /* before widget power up */
-+#define SND_SOC_DAPM_POST_PMU 0x2 /* after widget power up */
-+#define SND_SOC_DAPM_PRE_PMD 0x4 /* before widget power down */
-+#define SND_SOC_DAPM_POST_PMD 0x8 /* after widget power down */
-+#define SND_SOC_DAPM_PRE_REG 0x10 /* before audio path setup */
-+#define SND_SOC_DAPM_POST_REG 0x20 /* after audio path setup */
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/machine.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/machine.txt
-@@ -0,0 +1,114 @@
-+ASoC Machine Driver
-+===================
-+
-+The ASoC machine (or board) driver is the code that glues together the platform
-+and codec drivers.
-+
-+The machine driver can contain codec and platform specific code. It registers
-+the audio subsystem with the kernel as a platform device and is represented by
-+the following struct:-
-+
-+/* SoC machine */
-+struct snd_soc_machine {
-+ char *name;
-+
-+ int (*probe)(struct platform_device *pdev);
-+ int (*remove)(struct platform_device *pdev);
-+
-+ /* the pre and post PM functions are used to do any PM work before and
-+ * after the codec and DAI's do any PM work. */
-+ int (*suspend_pre)(struct platform_device *pdev, pm_message_t state);
-+ int (*suspend_post)(struct platform_device *pdev, pm_message_t state);
-+ int (*resume_pre)(struct platform_device *pdev);
-+ int (*resume_post)(struct platform_device *pdev);
-+
-+ /* machine stream operations */
-+ struct snd_soc_ops *ops;
-+
-+ /* CPU <--> Codec DAI links */
-+ struct snd_soc_dai_link *dai_link;
-+ int num_links;
-+};
-+
-+probe()/remove()
-+----------------
-+probe/remove are optional. Do any machine specific probe here.
-+
-+
-+suspend()/resume()
-+------------------
-+The machine driver has pre and post versions of suspend and resume to take care
-+of any machine audio tasks that have to be done before or after the codec, DAI's
-+and DMA is suspended and resumed. Optional.
-+
-+
-+Machine operations
-+------------------
-+The machine specific audio operations can be set here. Again this is optional.
-+
-+
-+Machine DAI Configuration
-+-------------------------
-+The machine DAI configuration glues all the codec and CPU DAI's together. It can
-+also be used to set up the DAI system clock and for any machine related DAI
-+initialisation e.g. the machine audio map can be connected to the codec audio
-+map, unconnnected codec pins can be set as such. Please see corgi.c, spitz.c
-+for examples.
-+
-+struct snd_soc_dai_link is used to set up each DAI in your machine. e.g.
-+
-+/* corgi digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link corgi_dai = {
-+ .name = "WM8731",
-+ .stream_name = "WM8731",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8731_dai,
-+ .init = corgi_wm8731_init,
-+ .config_sysclk = corgi_config_sysclk,
-+};
-+
-+struct snd_soc_machine then sets up the machine with it's DAI's. e.g.
-+
-+/* corgi audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_corgi = {
-+ .name = "Corgi",
-+ .dai_link = &corgi_dai,
-+ .num_links = 1,
-+ .ops = &corgi_ops,
-+};
-+
-+
-+Machine Audio Subsystem
-+-----------------------
-+
-+The machine soc device glues the platform, machine and codec driver together.
-+Private data can also be set here. e.g.
-+
-+/* corgi audio private data */
-+static struct wm8731_setup_data corgi_wm8731_setup = {
-+ .i2c_address = 0x1b,
-+};
-+
-+/* corgi audio subsystem */
-+static struct snd_soc_device corgi_snd_devdata = {
-+ .machine = &snd_soc_machine_corgi,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8731,
-+ .codec_data = &corgi_wm8731_setup,
-+};
-+
-+
-+Machine Power Map
-+-----------------
-+
-+The machine driver can optionally extend the codec power map and to become an
-+audio power map of the audio subsystem. This allows for automatic power up/down
-+of speaker/HP amplifiers, etc. Codec pins can be connected to the machines jack
-+sockets in the machine init function. See soc/pxa/spitz.c and dapm.txt for
-+details.
-+
-+
-+Machine Controls
-+----------------
-+
-+Machine specific audio mixer controls can be added in the dai init function.
-\ No newline at end of file
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/overview.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/overview.txt
-@@ -0,0 +1,83 @@
-+ALSA SoC Layer
-+==============
-+
-+The overall project goal of the ALSA System on Chip (ASoC) layer is to provide
-+better ALSA support for embedded system on chip procesors (e.g. pxa2xx, au1x00,
-+iMX, etc) and portable audio codecs. Currently there is some support in the
-+kernel for SoC audio, however it has some limitations:-
-+
-+ * Currently, codec drivers are often tightly coupled to the underlying SoC
-+ cpu. This is not ideal and leads to code duplication i.e. Linux now has 4
-+ different wm8731 drivers for 4 different SoC platforms.
-+
-+ * There is no standard method to signal user initiated audio events.
-+ e.g. Headphone/Mic insertion, Headphone/Mic detection after an insertion
-+ event. These are quite common events on portable devices and ofter require
-+ machine specific code to re route audio, enable amps etc after such an event.
-+
-+ * Current drivers tend to power up the entire codec when playing
-+ (or recording) audio. This is fine for a PC, but tends to waste a lot of
-+ power on portable devices. There is also no support for saving power via
-+ changing codec oversampling rates, bias currents, etc.
-+
-+
-+ASoC Design
-+===========
-+
-+The ASoC layer is designed to address these issues and provide the following
-+features :-
-+
-+ * Codec independence. Allows reuse of codec drivers on other platforms
-+ and machines.
-+
-+ * Easy I2S/PCM audio interface setup between codec and SoC. Each SoC interface
-+ and codec registers it's audio interface capabilities with the core and are
-+ subsequently matched and configured when the application hw params are known.
-+
-+ * Dynamic Audio Power Management (DAPM). DAPM automatically sets the codec to
-+ it's minimum power state at all times. This includes powering up/down
-+ internal power blocks depending on the internal codec audio routing and any
-+ active streams.
-+
-+ * Pop and click reduction. Pops and clicks can be reduced by powering the
-+ codec up/down in the correct sequence (including using digital mute). ASoC
-+ signals the codec when to change power states.
-+
-+ * Machine specific controls: Allow machines to add controls to the sound card
-+ e.g. volume control for speaker amp.
-+
-+To achieve all this, ASoC basically splits an embedded audio system into 3
-+components :-
-+
-+ * Codec driver: The codec driver is platform independent and contains audio
-+ controls, audio interface capabilities, codec dapm definition and codec IO
-+ functions.
-+
-+ * Platform driver: The platform driver contains the audio dma engine and audio
-+ interface drivers (e.g. I2S, AC97, PCM) for that platform.
-+
-+ * Machine driver: The machine driver handles any machine specific controls and
-+ audio events. i.e. turing on an amp at start of playback.
-+
-+
-+Documentation
-+=============
-+
-+The documentation is spilt into the following sections:-
-+
-+overview.txt: This file.
-+
-+codec.txt: Codec driver internals.
-+
-+DAI.txt: Description of Digital Audio Interface standards and how to configure
-+a DAI within your codec and CPU DAI drivers.
-+
-+dapm.txt: Dynamic Audio Power Management
-+
-+platform.txt: Platform audio DMA and DAI.
-+
-+machine.txt: Machine driver internals.
-+
-+pop_clicks.txt: How to minimise audio artifacts.
-+
-+clocking.txt: ASoC clocking for best power performance.
-\ No newline at end of file
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/platform.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/platform.txt
-@@ -0,0 +1,58 @@
-+ASoC Platform Driver
-+====================
-+
-+An ASoC platform driver can be divided into audio DMA and SoC DAI configuration
-+and control. The platform drivers only target the SoC CPU and must have no board
-+specific code.
-+
-+Audio DMA
-+=========
-+
-+The platform DMA driver optionally supports the following alsa operations:-
-+
-+/* SoC audio ops */
-+struct snd_soc_ops {
-+ int (*startup)(snd_pcm_substream_t *);
-+ void (*shutdown)(snd_pcm_substream_t *);
-+ int (*hw_params)(snd_pcm_substream_t *, snd_pcm_hw_params_t *);
-+ int (*hw_free)(snd_pcm_substream_t *);
-+ int (*prepare)(snd_pcm_substream_t *);
-+ int (*trigger)(snd_pcm_substream_t *, int);
-+};
-+
-+The platform driver exports it's DMA functionailty via struct snd_soc_platform:-
-+
-+struct snd_soc_platform {
-+ char *name;
-+
-+ int (*probe)(struct platform_device *pdev);
-+ int (*remove)(struct platform_device *pdev);
-+ int (*suspend)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
-+ int (*resume)(struct platform_device *pdev, struct snd_soc_cpu_dai *cpu_dai);
-+
-+ /* pcm creation and destruction */
-+ int (*pcm_new)(snd_card_t *, struct snd_soc_codec_dai *, snd_pcm_t *);
-+ void (*pcm_free)(snd_pcm_t *);
-+
-+ /* platform stream ops */
-+ snd_pcm_ops_t *pcm_ops;
-+};
-+
-+Please refer to the alsa driver documentation for details of audio DMA.
-+http://www.alsa-project.org/~iwai/writing-an-alsa-driver/c436.htm
-+
-+An example DMA driver is soc/pxa/pxa2xx-pcm.c
-+
-+
-+SoC DAI Drivers
-+===============
-+
-+Each SoC DAI driver must provide the following features:-
-+
-+ 1) Digital audio interface (DAI) description
-+ 2) Digital audio interface configuration
-+ 3) PCM's description
-+ 4) Sysclk configuration
-+ 5) Suspend and resume (optional)
-+
-+Please see codec.txt for a description of items 1 - 4.
-Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/pops_clicks.txt
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/pops_clicks.txt
-@@ -0,0 +1,52 @@
-+Audio Pops and Clicks
-+=====================
-+
-+Pops and clicks are unwanted audio artifacts caused by the powering up and down
-+of components within the audio subsystem. This is noticable on PC's when an audio
-+module is either loaded or unloaded (at module load time the sound card is
-+powered up and causes a popping noise on the speakers).
-+
-+Pops and clicks can be more frequent on portable systems with DAPM. This is because
-+the components within the subsystem are being dynamically powered depending on
-+the audio usage and this can subsequently cause a small pop or click every time a
-+component power state is changed.
-+
-+
-+Minimising Playback Pops and Clicks
-+===================================
-+
-+Playback pops in portable audio subsystems cannot be completely eliminated atm,
-+however future audio codec hardware will have better pop and click supression.
-+Pops can be reduced within playback by powering the audio components in a
-+specific order. This order is different for startup and shutdown and follows
-+some basic rules:-
-+
-+ Startup Order :- DAC --> Mixers --> Output PGA --> Digital Unmute
-+
-+ Shutdown Order :- Digital Mute --> Output PGA --> Mixers --> DAC
-+
-+This assumes that the codec PCM output path from the DAC is via a mixer and then
-+a PGA (programmable gain amplifier) before being output to the speakers.
-+
-+
-+Minimising Capture Pops and Clicks
-+==================================
-+
-+Capture artifacts are somewhat easier to get rid as we can delay activating the
-+ADC until all the pops have occured. This follows similar power rules to
-+playback in that components are powered in a sequence depending upon stream
-+startup or shutdown.
-+
-+ Startup Order - Input PGA --> Mixers --> ADC
-+
-+ Shutdown Order - ADC --> Mixers --> Input PGA
-+
-+
-+Zipper Noise
-+============
-+An unwanted zipper noise can occur within the audio playback or capture stream
-+when a volume control is changed near its maximum gain value. The zipper noise
-+is heard when the gain increase or decrease changes the mean audio signal
-+amplitude too quickly. It can be minimised by enabling the zero cross setting
-+for each volume control. The ZC forces the gain change to occur when the signal
-+crosses the zero amplitude line.
-Index: linux-2.6-pxa-new/include/sound/ac97_codec.h
-===================================================================
---- linux-2.6-pxa-new.orig/include/sound/ac97_codec.h
-+++ linux-2.6-pxa-new/include/sound/ac97_codec.h
-@@ -425,6 +425,7 @@ struct snd_ac97_build_ops {
-
- struct snd_ac97_bus_ops {
- void (*reset) (struct snd_ac97 *ac97);
-+ void (*warm_reset)(struct snd_ac97 *ac97);
- void (*write) (struct snd_ac97 *ac97, unsigned short reg, unsigned short val);
- unsigned short (*read) (struct snd_ac97 *ac97, unsigned short reg);
- void (*wait) (struct snd_ac97 *ac97);
-Index: linux-2.6-pxa-new/include/sound/soc-dapm.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/include/sound/soc-dapm.h
-@@ -0,0 +1,286 @@
-+/*
-+ * linux/sound/soc-dapm.h -- ALSA SoC Dynamic Audio Power Management
-+ *
-+ * Author: Liam Girdwood
-+ * Created: Aug 11th 2005
-+ * Copyright: Wolfson Microelectronics. PLC.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __LINUX_SND_SOC_DAPM_H
-+#define __LINUX_SND_SOC_DAPM_H
-+
-+#include <linux/device.h>
-+#include <linux/types.h>
-+#include <sound/control.h>
-+#include <sound/soc.h>
-+
-+/* widget has no PM register bit */
-+#define SND_SOC_NOPM -1
-+
-+/*
-+ * SoC dynamic audio power managment
-+ *
-+ * We can have upto 4 power domains
-+ * 1. Codec domain - VREF, VMID
-+ * Usually controlled at codec probe/remove, although can be set
-+ * at stream time if power is not needed for sidetone, etc.
-+ * 2. Platform/Machine domain - physically connected inputs and outputs
-+ * Is platform/machine and user action specific, is set in the machine
-+ * driver and by userspace e.g when HP are inserted
-+ * 3. Path domain - Internal codec path mixers
-+ * Are automatically set when mixer and mux settings are
-+ * changed by the user.
-+ * 4. Stream domain - DAC's and ADC's.
-+ * Enabled when stream playback/capture is started.
-+ */
-+
-+/* codec domain */
-+#define SND_SOC_DAPM_VMID(wname) \
-+{ .id = snd_soc_dapm_vmid, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0}
-+
-+/* platform domain */
-+#define SND_SOC_DAPM_INPUT(wname) \
-+{ .id = snd_soc_dapm_input, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0}
-+#define SND_SOC_DAPM_OUTPUT(wname) \
-+{ .id = snd_soc_dapm_output, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0}
-+#define SND_SOC_DAPM_MIC(wname, wevent) \
-+{ .id = snd_soc_dapm_mic, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0, .event = wevent, \
-+ .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD}
-+#define SND_SOC_DAPM_HP(wname, wevent) \
-+{ .id = snd_soc_dapm_hp, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0, .event = wevent, \
-+ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD}
-+#define SND_SOC_DAPM_SPK(wname, wevent) \
-+{ .id = snd_soc_dapm_spk, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0, .event = wevent, \
-+ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD}
-+#define SND_SOC_DAPM_LINE(wname, wevent) \
-+{ .id = snd_soc_dapm_line, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0, .event = wevent, \
-+ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD}
-+
-+/* path domain */
-+#define SND_SOC_DAPM_PGA(wname, wreg, wshift, winvert,\
-+ wcontrols, wncontrols) \
-+{ .id = snd_soc_dapm_pga, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols}
-+#define SND_SOC_DAPM_MIXER(wname, wreg, wshift, winvert, \
-+ wcontrols, wncontrols)\
-+{ .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols}
-+#define SND_SOC_DAPM_MICBIAS(wname, wreg, wshift, winvert) \
-+{ .id = snd_soc_dapm_micbias, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = NULL, .num_kcontrols = 0}
-+#define SND_SOC_DAPM_SWITCH(wname, wreg, wshift, winvert, wcontrols) \
-+{ .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1}
-+#define SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols) \
-+{ .id = snd_soc_dapm_mux, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1}
-+
-+/* path domain with event - event handler must return 0 for success */
-+#define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \
-+ wncontrols, wevent, wflags) \
-+{ .id = snd_soc_dapm_pga, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols, \
-+ .event = wevent, .event_flags = wflags}
-+#define SND_SOC_DAPM_MIXER_E(wname, wreg, wshift, winvert, wcontrols, \
-+ wncontrols, wevent, wflags) \
-+{ .id = snd_soc_dapm_mixer, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = wncontrols, \
-+ .event = wevent, .event_flags = wflags}
-+#define SND_SOC_DAPM_MICBIAS_E(wname, wreg, wshift, winvert, wevent, wflags) \
-+{ .id = snd_soc_dapm_micbias, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = NULL, .num_kcontrols = 0, \
-+ .event = wevent, .event_flags = wflags}
-+#define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \
-+ wevent, wflags) \
-+{ .id = snd_soc_dapm_switch, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1 \
-+ .event = wevent, .event_flags = wflags}
-+#define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \
-+ wevent, wflags) \
-+{ .id = snd_soc_dapm_mux, .name = wname, .reg = wreg, .shift = wshift, \
-+ .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1, \
-+ .event = wevent, .event_flags = wflags}
-+
-+/* events that are pre and post DAPM */
-+#define SND_SOC_DAPM_PRE(wname, wevent) \
-+{ .id = snd_soc_dapm_pre, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0, .event = wevent, \
-+ .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD}
-+#define SND_SOC_DAPM_POST(wname, wevent) \
-+{ .id = snd_soc_dapm_post, .name = wname, .kcontrols = NULL, \
-+ .num_kcontrols = 0, .event = wevent, \
-+ .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD}
-+
-+/* stream domain */
-+#define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) \
-+{ .id = snd_soc_dapm_dac, .name = wname, .sname = stname, .reg = wreg, \
-+ .shift = wshift, .invert = winvert}
-+#define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) \
-+{ .id = snd_soc_dapm_adc, .name = wname, .sname = stname, .reg = wreg, \
-+ .shift = wshift, .invert = winvert}
-+
-+/* dapm kcontrol types */
-+#define SOC_DAPM_SINGLE(xname, reg, shift, mask, invert) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_volsw, \
-+ .get = snd_soc_dapm_get_volsw, .put = snd_soc_dapm_put_volsw, \
-+ .private_value = SOC_SINGLE_VALUE(reg, shift, mask, invert) }
-+#define SOC_DAPM_DOUBLE(xname, reg, shift_left, shift_right, mask, invert, \
-+ power) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
-+ .info = snd_soc_info_volsw, \
-+ .get = snd_soc_dapm_get_volsw, .put = snd_soc_dapm_put_volsw, \
-+ .private_value = (reg) | ((shift_left) << 8) | ((shift_right) << 12) |\
-+ ((mask) << 16) | ((invert) << 24) }
-+#define SOC_DAPM_ENUM(xname, xenum) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_enum_double, \
-+ .get = snd_soc_dapm_get_enum_double, \
-+ .put = snd_soc_dapm_put_enum_double, \
-+ .private_value = (unsigned long)&xenum }
-+
-+/* dapm stream operations */
-+#define SND_SOC_DAPM_STREAM_NOP 0x0
-+#define SND_SOC_DAPM_STREAM_START 0x1
-+#define SND_SOC_DAPM_STREAM_STOP 0x2
-+#define SND_SOC_DAPM_STREAM_SUSPEND 0x4
-+#define SND_SOC_DAPM_STREAM_RESUME 0x8
-+#define SND_SOC_DAPM_STREAM_PAUSE_PUSH 0x10
-+#define SND_SOC_DAPM_STREAM_PAUSE_RELEASE 0x20
-+
-+/* dapm event types */
-+#define SND_SOC_DAPM_PRE_PMU 0x1 /* before widget power up */
-+#define SND_SOC_DAPM_POST_PMU 0x2 /* after widget power up */
-+#define SND_SOC_DAPM_PRE_PMD 0x4 /* before widget power down */
-+#define SND_SOC_DAPM_POST_PMD 0x8 /* after widget power down */
-+#define SND_SOC_DAPM_PRE_REG 0x10 /* before audio path setup */
-+#define SND_SOC_DAPM_POST_REG 0x20 /* after audio path setup */
-+
-+/* convenience event type detection */
-+#define SND_SOC_DAPM_EVENT_ON(e) \
-+ (e & (SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU))
-+#define SND_SOC_DAPM_EVENT_OFF(e) \
-+ (e & (SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD))
-+
-+struct snd_soc_dapm_widget;
-+enum snd_soc_dapm_type;
-+struct snd_soc_dapm_path;
-+struct snd_soc_dapm_pin;
-+
-+/* dapm controls */
-+int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_dapm_new_control(struct snd_soc_codec *codec,
-+ const struct snd_soc_dapm_widget *widget);
-+
-+/* dapm path setup */
-+int snd_soc_dapm_connect_input(struct snd_soc_codec *codec,
-+ const char *sink_name, const char *control_name, const char *src_name);
-+int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec);
-+void snd_soc_dapm_free(struct snd_soc_device *socdev);
-+
-+/* dapm events */
-+int snd_soc_dapm_stream_event(struct snd_soc_codec *codec, char *stream,
-+ int event);
-+
-+/* dapm sys fs - used by the core */
-+int snd_soc_dapm_sys_add(struct device *dev);
-+
-+/* dapm audio endpoint control */
-+int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
-+ char *pin, int status);
-+int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);
-+
-+/* dapm widget types */
-+enum snd_soc_dapm_type {
-+ snd_soc_dapm_input = 0, /* input pin */
-+ snd_soc_dapm_output, /* output pin */
-+ snd_soc_dapm_mux, /* selects 1 analog signal from many inputs */
-+ snd_soc_dapm_mixer, /* mixes several analog signals together */
-+ snd_soc_dapm_pga, /* programmable gain/attenuation (volume) */
-+ snd_soc_dapm_adc, /* analog to digital converter */
-+ snd_soc_dapm_dac, /* digital to analog converter */
-+ snd_soc_dapm_micbias, /* microphone bias (power) */
-+ snd_soc_dapm_mic, /* microphone */
-+ snd_soc_dapm_hp, /* headphones */
-+ snd_soc_dapm_spk, /* speaker */
-+ snd_soc_dapm_line, /* line input/output */
-+ snd_soc_dapm_switch, /* analog switch */
-+ snd_soc_dapm_vmid, /* codec bias/vmid - to minimise pops */
-+ snd_soc_dapm_pre, /* machine specific pre widget - exec first */
-+ snd_soc_dapm_post, /* machine specific post widget - exec last */
-+};
-+
-+/* dapm audio path between two widgets */
-+struct snd_soc_dapm_path {
-+ char *name;
-+ char *long_name;
-+
-+ /* source (input) and sink (output) widgets */
-+ struct snd_soc_dapm_widget *source;
-+ struct snd_soc_dapm_widget *sink;
-+ struct snd_kcontrol *kcontrol;
-+
-+ /* status */
-+ u32 connect:1; /* source and sink widgets are connected */
-+ u32 walked:1; /* path has been walked */
-+
-+ struct list_head list_source;
-+ struct list_head list_sink;
-+ struct list_head list;
-+};
-+
-+/* dapm widget */
-+struct snd_soc_dapm_widget {
-+ enum snd_soc_dapm_type id;
-+ char *name; /* widget name */
-+ char *sname; /* stream name */
-+ struct snd_soc_codec *codec;
-+ struct list_head list;
-+
-+ /* dapm control */
-+ short reg; /* negative reg = no direct dapm */
-+ unsigned char shift; /* bits to shift */
-+ unsigned int saved_value; /* widget saved value */
-+ unsigned int value; /* widget current value */
-+ unsigned char power:1; /* block power status */
-+ unsigned char invert:1; /* invert the power bit */
-+ unsigned char active:1; /* active stream on DAC, ADC's */
-+ unsigned char connected:1; /* connected codec pin */
-+ unsigned char new:1; /* cnew complete */
-+ unsigned char ext:1; /* has external widgets */
-+ unsigned char muted:1; /* muted for pop reduction */
-+ unsigned char suspend:1; /* was active before suspend */
-+ unsigned char pmdown:1; /* waiting for timeout */
-+
-+ /* external events */
-+ unsigned short event_flags; /* flags to specify event types */
-+ int (*event)(struct snd_soc_dapm_widget*, int);
-+
-+ /* kcontrols that relate to this widget */
-+ int num_kcontrols;
-+ const struct snd_kcontrol_new *kcontrols;
-+
-+ /* widget input and outputs */
-+ struct list_head sources;
-+ struct list_head sinks;
-+};
-+
-+#endif
-Index: linux-2.6-pxa-new/include/sound/soc.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/include/sound/soc.h
-@@ -0,0 +1,487 @@
-+/*
-+ * linux/sound/soc.h -- ALSA SoC Layer
-+ *
-+ * Author: Liam Girdwood
-+ * Created: Aug 11th 2005
-+ * Copyright: Wolfson Microelectronics. PLC.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __LINUX_SND_SOC_H
-+#define __LINUX_SND_SOC_H
-+
-+#include <linux/platform_device.h>
-+#include <linux/types.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/control.h>
-+#include <sound/ac97_codec.h>
-+
-+#define SND_SOC_VERSION "0.12.4"
-+
-+/*
-+ * Convenience kcontrol builders
-+ */
-+#define SOC_SINGLE_VALUE(reg,shift,mask,invert) ((reg) | ((shift) << 8) |\
-+ ((shift) << 12) | ((mask) << 16) | ((invert) << 24))
-+#define SOC_SINGLE_VALUE_EXT(reg,mask,invert) ((reg) | ((mask) << 16) |\
-+ ((invert) << 31))
-+#define SOC_SINGLE(xname, reg, shift, mask, invert) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
-+ .put = snd_soc_put_volsw, \
-+ .private_value = SOC_SINGLE_VALUE(reg, shift, mask, invert) }
-+#define SOC_DOUBLE(xname, reg, shift_left, shift_right, mask, invert) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname),\
-+ .info = snd_soc_info_volsw, .get = snd_soc_get_volsw, \
-+ .put = snd_soc_put_volsw, \
-+ .private_value = (reg) | ((shift_left) << 8) | \
-+ ((shift_right) << 12) | ((mask) << 16) | ((invert) << 24) }
-+#define SOC_DOUBLE_R(xname, reg_left, reg_right, shift, mask, invert) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
-+ .info = snd_soc_info_volsw_2r, \
-+ .get = snd_soc_get_volsw_2r, .put = snd_soc_put_volsw_2r, \
-+ .private_value = (reg_left) | ((shift) << 8) | \
-+ ((mask) << 12) | ((invert) << 20) | ((reg_right) << 24) }
-+#define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xtexts) \
-+{ .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
-+ .mask = xmask, .texts = xtexts }
-+#define SOC_ENUM_SINGLE(xreg, xshift, xmask, xtexts) \
-+ SOC_ENUM_DOUBLE(xreg, xshift, xshift, xmask, xtexts)
-+#define SOC_ENUM_SINGLE_EXT(xmask, xtexts) \
-+{ .mask = xmask, .texts = xtexts }
-+#define SOC_ENUM(xname, xenum) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname,\
-+ .info = snd_soc_info_enum_double, \
-+ .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, \
-+ .private_value = (unsigned long)&xenum }
-+#define SOC_SINGLE_EXT(xname, xreg, xmask, xinvert,\
-+ xhandler_get, xhandler_put) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_volsw_ext, \
-+ .get = xhandler_get, .put = xhandler_put, \
-+ .private_value = SOC_SINGLE_VALUE_EXT(xreg, xmask, xinvert) }
-+#define SOC_SINGLE_BOOL_EXT(xname, xdata, xhandler_get, xhandler_put) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_bool_ext, \
-+ .get = xhandler_get, .put = xhandler_put, \
-+ .private_value = xdata }
-+#define SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \
-+{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
-+ .info = snd_soc_info_enum_ext, \
-+ .get = xhandler_get, .put = xhandler_put, \
-+ .private_value = (unsigned long)&xenum }
-+
-+/*
-+ * Digital Audio Interface (DAI) types
-+ */
-+#define SND_SOC_DAI_AC97 0x1
-+#define SND_SOC_DAI_I2S 0x2
-+#define SND_SOC_DAI_PCM 0x4
-+
-+/*
-+ * DAI hardware audio formats
-+ */
-+#define SND_SOC_DAIFMT_I2S (1 << 0) /* I2S mode */
-+#define SND_SOC_DAIFMT_RIGHT_J (1 << 1) /* Right justified mode */
-+#define SND_SOC_DAIFMT_LEFT_J (1 << 2) /* Left Justified mode */
-+#define SND_SOC_DAIFMT_DSP_A (1 << 3) /* L data msb after FRM or LRC */
-+#define SND_SOC_DAIFMT_DSP_B (1 << 4) /* L data msb during FRM or LRC */
-+#define SND_SOC_DAIFMT_AC97 (1 << 5) /* AC97 */
-+
-+/*
-+ * DAI hardware signal inversions
-+ */
-+#define SND_SOC_DAIFMT_NB_NF (1 << 8) /* normal bit clock + frame */
-+#define SND_SOC_DAIFMT_NB_IF (1 << 9) /* normal bclk + inv frm */
-+#define SND_SOC_DAIFMT_IB_NF (1 << 10) /* invert bclk + nor frm */
-+#define SND_SOC_DAIFMT_IB_IF (1 << 11) /* invert bclk + frm */
-+
-+/*
-+ * DAI hardware clock masters
-+ * This is wrt the codec, the inverse is true for the interface
-+ * i.e. if the codec is clk and frm master then the interface is
-+ * clk and frame slave.
-+ */
-+#define SND_SOC_DAIFMT_CBM_CFM (1 << 12) /* codec clk & frm master */
-+#define SND_SOC_DAIFMT_CBS_CFM (1 << 13) /* codec clk slave & frm master */
-+#define SND_SOC_DAIFMT_CBM_CFS (1 << 14) /* codec clk master & frame slave */
-+#define SND_SOC_DAIFMT_CBS_CFS (1 << 15) /* codec clk & frm slave */
-+
-+#define SND_SOC_DAIFMT_FORMAT_MASK 0x00ff
-+#define SND_SOC_DAIFMT_INV_MASK 0x0f00
-+#define SND_SOC_DAIFMT_CLOCK_MASK 0xf000
-+
-+/*
-+ * DAI hardware audio direction
-+ */
-+#define SND_SOC_DAIDIR_PLAYBACK 0x1
-+#define SND_SOC_DAIDIR_CAPTURE 0x2
-+
-+/*
-+ * DAI hardware Time Division Multiplexing (TDM) Slots
-+ * Left and Right data word positions
-+ * This is measured in words (sample size) and not bits.
-+ */
-+#define SND_SOC_DAITDM_LRDW(l,r) ((l << 8) | r)
-+
-+/*
-+ * DAI hardware clock ratios
-+ * bit clock can either be a generated by dividing mclk or
-+ * by multiplying sample rate, hence there are 2 definitions below
-+ * depending on codec type.
-+ */
-+/* ratio of sample rate to mclk/sysclk */
-+#define SND_SOC_FS_ALL 0xffff /* all mclk supported */
-+
-+/* bit clock dividers */
-+#define SND_SOC_FSBD(x) (1 << (x - 1)) /* ratio mclk:bclk */
-+#define SND_SOC_FSBD_REAL(x) (ffs(x))
-+
-+/* bit clock ratio to (sample rate * channels * word size) */
-+#define SND_SOC_FSBW(x) (1 << (x - 1))
-+#define SND_SOC_FSBW_REAL(x) (ffs(x))
-+/* all bclk ratios supported */
-+#define SND_SOC_FSB_ALL ~0ULL
-+
-+/*
-+ * DAI hardware flags
-+ */
-+/* use bfs mclk divider mode (BCLK = MCLK / x) */
-+#define SND_SOC_DAI_BFS_DIV 0x1
-+/* use bfs rate mulitplier (BCLK = RATE * x)*/
-+#define SND_SOC_DAI_BFS_RATE 0x2
-+/* use bfs rcw multiplier (BCLK = RATE * CHN * WORD SIZE) */
-+#define SND_SOC_DAI_BFS_RCW 0x4
-+/* capture and playback can use different clocks */
-+#define SND_SOC_DAI_ASYNC 0x8
-+/* can use gated BCLK */
-+#define SND_SOC_DAI_GATED 0x10
-+
-+/*
-+ * AC97 codec ID's bitmask
-+ */
-+#define SND_SOC_DAI_AC97_ID0 (1 << 0)
-+#define SND_SOC_DAI_AC97_ID1 (1 << 1)
-+#define SND_SOC_DAI_AC97_ID2 (1 << 2)
-+#define SND_SOC_DAI_AC97_ID3 (1 << 3)
-+
-+struct snd_soc_device;
-+struct snd_soc_pcm_stream;
-+struct snd_soc_ops;
-+struct snd_soc_dai_mode;
-+struct snd_soc_pcm_runtime;
-+struct snd_soc_codec_dai;
-+struct snd_soc_cpu_dai;
-+struct snd_soc_codec;
-+struct snd_soc_machine_config;
-+struct soc_enum;
-+struct snd_soc_ac97_ops;
-+struct snd_soc_clock_info;
-+
-+typedef int (*hw_write_t)(void *,const char* ,int);
-+typedef int (*hw_read_t)(void *,char* ,int);
-+
-+extern struct snd_ac97_bus_ops soc_ac97_ops;
-+
-+/* pcm <-> DAI connect */
-+void snd_soc_free_pcms(struct snd_soc_device *socdev);
-+int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char *xid);
-+int snd_soc_register_card(struct snd_soc_device *socdev);
-+
-+/* set runtime hw params */
-+int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
-+ const struct snd_pcm_hardware *hw);
-+int snd_soc_get_rate(int rate);
-+
-+/* codec IO */
-+#define snd_soc_read(codec, reg) codec->read(codec, reg)
-+#define snd_soc_write(codec, reg, value) codec->write(codec, reg, value)
-+
-+/* codec register bit access */
-+int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
-+ unsigned short mask, unsigned short value);
-+int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg,
-+ unsigned short mask, unsigned short value);
-+
-+int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
-+ struct snd_ac97_bus_ops *ops, int num);
-+void snd_soc_free_ac97_codec(struct snd_soc_codec *codec);
-+
-+/*
-+ *Controls
-+ */
-+struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template,
-+ void *data, char *long_name);
-+int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo);
-+int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo);
-+int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_info_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo);
-+int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo);
-+int snd_soc_info_bool_ext(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo);
-+int snd_soc_get_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_info_volsw_2r(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo);
-+int snd_soc_get_volsw_2r(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+int snd_soc_put_volsw_2r(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol);
-+
-+/* SoC PCM stream information */
-+struct snd_soc_pcm_stream {
-+ char *stream_name;
-+ unsigned int rate_min; /* min rate */
-+ unsigned int rate_max; /* max rate */
-+ unsigned int channels_min; /* min channels */
-+ unsigned int channels_max; /* max channels */
-+ unsigned int active:1; /* stream is in use */
-+};
-+
-+/* SoC audio ops */
-+struct snd_soc_ops {
-+ int (*startup)(struct snd_pcm_substream *);
-+ void (*shutdown)(struct snd_pcm_substream *);
-+ int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
-+ int (*hw_free)(struct snd_pcm_substream *);
-+ int (*prepare)(struct snd_pcm_substream *);
-+ int (*trigger)(struct snd_pcm_substream *, int);
-+};
-+
-+/* SoC DAI hardware mode */
-+struct snd_soc_dai_mode {
-+ u16 fmt; /* SND_SOC_DAIFMT_* */
-+ u16 tdm; /* SND_SOC_HWTDM_* */
-+ u64 pcmfmt; /* SNDRV_PCM_FMTBIT_* */
-+ u16 pcmrate; /* SND_SOC_HWRATE_* */
-+ u16 pcmdir:2; /* SND_SOC_HWDIR_* */
-+ u16 flags:8; /* hw flags */
-+ u16 fs; /* mclk to rate divider */
-+ u64 bfs; /* mclk to bclk dividers */
-+ unsigned long priv; /* private mode data */
-+};
-+
-+/* DAI capabilities */
-+struct snd_soc_dai_cap {
-+ int num_modes; /* number of DAI modes */
-+ struct snd_soc_dai_mode *mode; /* array of supported DAI modes */
-+};
-+
-+/* SoC Codec DAI */
-+struct snd_soc_codec_dai {
-+ char *name;
-+ int id;
-+
-+ /* DAI capabilities */
-+ struct snd_soc_pcm_stream playback;
-+ struct snd_soc_pcm_stream capture;
-+ struct snd_soc_dai_cap caps;
-+
-+ /* DAI runtime info */
-+ struct snd_soc_dai_mode dai_runtime;
-+ struct snd_soc_ops ops;
-+ unsigned int (*config_sysclk)(struct snd_soc_codec_dai*,
-+ struct snd_soc_clock_info *info, unsigned int clk);
-+ int (*digital_mute)(struct snd_soc_codec *,
-+ struct snd_soc_codec_dai*, int);
-+ unsigned int mclk; /* the audio master clock */
-+ unsigned int pll_in; /* the PLL input clock */
-+ unsigned int pll_out; /* the PLL output clock */
-+ unsigned int clk_div; /* internal clock divider << 1 (for fractions) */
-+ unsigned int active;
-+ unsigned char pop_wait:1;
-+
-+ /* DAI private data */
-+ void *private_data;
-+};
-+
-+/* SoC CPU DAI */
-+struct snd_soc_cpu_dai {
-+
-+ /* DAI description */
-+ char *name;
-+ unsigned int id;
-+ unsigned char type;
-+
-+ /* DAI callbacks */
-+ int (*probe)(struct platform_device *pdev);
-+ void (*remove)(struct platform_device *pdev);
-+ int (*suspend)(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *cpu_dai);
-+ int (*resume)(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *cpu_dai);
-+ unsigned int (*config_sysclk)(struct snd_soc_cpu_dai *cpu_dai,
-+ struct snd_soc_clock_info *info, unsigned int clk);
-+
-+ /* DAI capabilities */
-+ struct snd_soc_pcm_stream capture;
-+ struct snd_soc_pcm_stream playback;
-+ struct snd_soc_dai_cap caps;
-+
-+ /* DAI runtime info */
-+ struct snd_soc_dai_mode dai_runtime;
-+ struct snd_soc_ops ops;
-+ struct snd_pcm_runtime *runtime;
-+ unsigned char active:1;
-+ unsigned int mclk;
-+ void *dma_data;
-+
-+ /* DAI private data */
-+ void *private_data;
-+};
-+
-+/* SoC Audio Codec */
-+struct snd_soc_codec {
-+ char *name;
-+ struct module *owner;
-+ struct mutex mutex;
-+
-+ /* callbacks */
-+ int (*dapm_event)(struct snd_soc_codec *codec, int event);
-+
-+ /* runtime */
-+ struct snd_card *card;
-+ struct snd_ac97 *ac97; /* for ad-hoc ac97 devices */
-+ unsigned int active;
-+ unsigned int pcm_devs;
-+ void *private_data;
-+
-+ /* codec IO */
-+ void *control_data; /* codec control (i2c/3wire) data */
-+ unsigned int (*read)(struct snd_soc_codec *, unsigned int);
-+ int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
-+ hw_write_t hw_write;
-+ hw_read_t hw_read;
-+ void *reg_cache;
-+ short reg_cache_size;
-+ short reg_cache_step;
-+
-+ /* dapm */
-+ struct list_head dapm_widgets;
-+ struct list_head dapm_paths;
-+ unsigned int dapm_state;
-+ unsigned int suspend_dapm_state;
-+
-+ /* codec DAI's */
-+ struct snd_soc_codec_dai *dai;
-+ unsigned int num_dai;
-+};
-+
-+/* codec device */
-+struct snd_soc_codec_device {
-+ int (*probe)(struct platform_device *pdev);
-+ int (*remove)(struct platform_device *pdev);
-+ int (*suspend)(struct platform_device *pdev, pm_message_t state);
-+ int (*resume)(struct platform_device *pdev);
-+};
-+
-+/* SoC platform interface */
-+struct snd_soc_platform {
-+ char *name;
-+
-+ int (*probe)(struct platform_device *pdev);
-+ int (*remove)(struct platform_device *pdev);
-+ int (*suspend)(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *cpu_dai);
-+ int (*resume)(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *cpu_dai);
-+
-+ /* pcm creation and destruction */
-+ int (*pcm_new)(struct snd_card *, struct snd_soc_codec_dai *,
-+ struct snd_pcm *);
-+ void (*pcm_free)(struct snd_pcm *);
-+
-+ /* platform stream ops */
-+ struct snd_pcm_ops *pcm_ops;
-+};
-+
-+/* SoC machine DAI configuration, glues a codec and cpu DAI together */
-+struct snd_soc_dai_link {
-+ char *name; /* Codec name */
-+ char *stream_name; /* Stream name */
-+
-+ /* DAI */
-+ struct snd_soc_codec_dai *codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai;
-+ u32 flags; /* DAI config preference flags */
-+
-+ /* codec/machine specific init - e.g. add machine controls */
-+ int (*init)(struct snd_soc_codec *codec);
-+
-+ /* audio sysclock configuration */
-+ unsigned int (*config_sysclk)(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info);
-+};
-+
-+/* SoC machine */
-+struct snd_soc_machine {
-+ char *name;
-+
-+ int (*probe)(struct platform_device *pdev);
-+ int (*remove)(struct platform_device *pdev);
-+
-+ /* the pre and post PM functions are used to do any PM work before and
-+ * after the codec and DAI's do any PM work. */
-+ int (*suspend_pre)(struct platform_device *pdev, pm_message_t state);
-+ int (*suspend_post)(struct platform_device *pdev, pm_message_t state);
-+ int (*resume_pre)(struct platform_device *pdev);
-+ int (*resume_post)(struct platform_device *pdev);
-+
-+ /* machine stream operations */
-+ struct snd_soc_ops *ops;
-+
-+ /* CPU <--> Codec DAI links */
-+ struct snd_soc_dai_link *dai_link;
-+ int num_links;
-+};
-+
-+/* SoC Device - the audio subsystem */
-+struct snd_soc_device {
-+ struct device *dev;
-+ struct snd_soc_machine *machine;
-+ struct snd_soc_platform *platform;
-+ struct snd_soc_codec *codec;
-+ struct snd_soc_codec_device *codec_dev;
-+ void *codec_data;
-+};
-+
-+/* runtime channel data */
-+struct snd_soc_pcm_runtime {
-+ struct snd_soc_codec_dai *codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai;
-+ struct snd_soc_device *socdev;
-+};
-+
-+/* enumerated kcontrol */
-+struct soc_enum {
-+ unsigned short reg;
-+ unsigned short reg2;
-+ unsigned char shift_l;
-+ unsigned char shift_r;
-+ unsigned int mask;
-+ const char **texts;
-+ void *dapm;
-+};
-+
-+/* clocking configuration data */
-+struct snd_soc_clock_info {
-+ unsigned int rate;
-+ unsigned int fs;
-+ unsigned int bclk_master;
-+};
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/Kconfig
-===================================================================
---- linux-2.6-pxa-new.orig/sound/Kconfig
-+++ linux-2.6-pxa-new/sound/Kconfig
-@@ -76,6 +76,8 @@ source "sound/sparc/Kconfig"
-
- source "sound/parisc/Kconfig"
-
-+source "sound/soc/Kconfig"
-+
- endmenu
-
- menu "Open Sound System"
-Index: linux-2.6-pxa-new/sound/soc/Kconfig
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/Kconfig
-@@ -0,0 +1,37 @@
-+#
-+# SoC audio configuration
-+#
-+
-+menu "SoC audio support"
-+ depends on SND!=n
-+
-+config SND_SOC_AC97_BUS
-+ bool
-+
-+config SND_SOC
-+ tristate "SoC audio support"
-+ ---help---
-+
-+ If you want SoC support, you should say Y here and also to the
-+ specific driver for your SoC below. You will also need to select the
-+ specific codec(s) attached to the SoC
-+
-+ This SoC audio support can also be built as a module. If so, the module
-+ will be called snd-soc-core.
-+
-+# All the supported Soc's
-+menu "Soc Platforms"
-+depends on SND_SOC
-+source "sound/soc/pxa/Kconfig"
-+source "sound/soc/at91/Kconfig"
-+source "sound/soc/imx/Kconfig"
-+source "sound/soc/s3c24xx/Kconfig"
-+endmenu
-+
-+# Supported codecs
-+menu "Soc Codecs"
-+depends on SND_SOC
-+source "sound/soc/codecs/Kconfig"
-+endmenu
-+
-+endmenu
-Index: linux-2.6-pxa-new/sound/soc/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/Makefile
-@@ -0,0 +1,4 @@
-+snd-soc-core-objs := soc-core.o soc-dapm.o
-+
-+obj-$(CONFIG_SND_SOC) += snd-soc-core.o
-+obj-$(CONFIG_SND_SOC) += pxa/ at91/ imx/ s3c24xx/ codecs/
-Index: linux-2.6-pxa-new/sound/soc/codecs/Kconfig
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/Kconfig
-@@ -0,0 +1,90 @@
-+config SND_SOC_AC97_CODEC
-+ tristate "SoC generic AC97 support"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want generic AC97 support. This is not required
-+ for the AC97 codecs listed below.
-+
-+config SND_SOC_WM8711
-+ tristate "SoC driver for the WM8711 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8711 codec.
-+
-+config SND_SOC_WM8510
-+ tristate "SoC driver for the WM8510 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8711 codec.
-+
-+config SND_SOC_WM8731
-+ tristate "SoC driver for the WM8731 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8731 codec.
-+
-+config SND_SOC_WM8750
-+ tristate "SoC driver for the WM8750 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8750 codec.
-+
-+config SND_SOC_WM8753
-+ tristate "SoC driver for the WM8753 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8753 codec.
-+
-+config SND_SOC_WM8772
-+ tristate "SoC driver for the WM8772 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8772 codec.
-+
-+config SND_SOC_WM8971
-+ tristate "SoC driver for the WM8971 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8971 codec.
-+
-+config SND_SOC_WM8976
-+ tristate "SoC driver for the WM8976 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8976 codec.
-+
-+config SND_SOC_WM8974
-+ tristate "SoC driver for the WM8974 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8974 codec.
-+
-+config SND_SOC_WM8980
-+ tristate "SoC driver for the WM8980 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM8980 codec.
-+
-+config SND_SOC_WM9713
-+ tristate "SoC driver for the WM9713 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM9713 codec.
-+
-+config SND_SOC_WM9712
-+ tristate "SoC driver for the WM9712 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the WM9712 codec.
-+
-+config SND_SOC_UDA1380
-+ tristate "SoC driver for the UDA1380 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the UDA1380 codec.
-+
-+config SND_SOC_AK4535
-+ tristate "SoC driver for the AK4535 codec"
-+ depends SND_SOC
-+ help
-+ Say Y or M if you want to support the AK4535 codec.
-Index: linux-2.6-pxa-new/sound/soc/codecs/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/Makefile
-@@ -0,0 +1,31 @@
-+snd-soc-ac97-objs := ac97.o
-+snd-soc-wm8711-objs := wm8711.o
-+snd-soc-wm8510-objs := wm8510.o
-+snd-soc-wm8731-objs := wm8731.o
-+snd-soc-wm8750-objs := wm8750.o
-+snd-soc-wm8753-objs := wm8753.o
-+snd-soc-wm8772-objs := wm8772.o
-+snd-soc-wm8971-objs := wm8971.o
-+snd-soc-wm8974-objs := wm8974.o
-+snd-soc-wm8976-objs := wm8976.o
-+snd-soc-wm8980-objs := wm8980.o
-+snd-soc-uda1380-objs := uda1380.o
-+snd-soc-ak4535-objs := ak4535.o
-+snd-soc-wm9713-objs := wm9713.o
-+snd-soc-wm9712-objs := wm9712.o
-+
-+obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
-+obj-$(CONFIG_SND_SOC_WM8711) += snd-soc-wm8711.o
-+obj-$(CONFIG_SND_SOC_WM8510) += snd-soc-wm8510.o
-+obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
-+obj-$(CONFIG_SND_SOC_WM8750) += snd-soc-wm8750.o
-+obj-$(CONFIG_SND_SOC_WM8753) += snd-soc-wm8753.o
-+obj-$(CONFIG_SND_SOC_WM8772) += snd-soc-wm8772.o
-+obj-$(CONFIG_SND_SOC_WM8971) += snd-soc-wm8971.o
-+obj-$(CONFIG_SND_SOC_WM8974) += snd-soc-wm8974.o
-+obj-$(CONFIG_SND_SOC_WM8976) += snd-soc-wm8976.o
-+obj-$(CONFIG_SND_SOC_WM8980) += snd-soc-wm8980.o
-+obj-$(CONFIG_SND_SOC_UDA1380) += snd-soc-uda1380.o
-+obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o
-+obj-$(CONFIG_SND_SOC_WM9713) += snd-soc-wm9713.o
-+obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
-Index: linux-2.6-pxa-new/sound/soc/codecs/ac97.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/ac97.c
-@@ -0,0 +1,167 @@
-+/*
-+ * ac97.c -- ALSA Soc AC97 codec support
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 17th Oct 2005 Initial version.
-+ *
-+ * Generic AC97 support.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/ac97_codec.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+
-+#define AC97_VERSION "0.5"
-+
-+#define AC97_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define AC97_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+/* may need to expand this */
-+static struct snd_soc_dai_mode soc_ac97[] = {
-+ {0, 0, SNDRV_PCM_FMTBIT_S16_LE, AC97_RATES},
-+ {0, 0, SNDRV_PCM_FMTBIT_S18_3LE, AC97_RATES},
-+ {0, 0, SNDRV_PCM_FMTBIT_S20_3LE, AC97_RATES},
-+};
-+
-+static int ac97_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
-+ AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE;
-+ return snd_ac97_set_rate(codec->ac97, reg, runtime->rate);
-+}
-+
-+static struct snd_soc_codec_dai ac97_dai = {
-+ .name = "AC97 HiFi",
-+ .playback = {
-+ .stream_name = "AC97 Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .stream_name = "AC97 Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .prepare = ac97_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(soc_ac97),
-+ .mode = soc_ac97,},
-+};
-+
-+static unsigned int ac97_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ return soc_ac97_ops.read(codec->ac97, reg);
-+}
-+
-+static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int val)
-+{
-+ soc_ac97_ops.write(codec->ac97, reg, val);
-+ return 0;
-+}
-+
-+static int ac97_soc_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ struct snd_ac97_bus *ac97_bus;
-+ struct snd_ac97_template ac97_template;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "AC97 SoC Audio Codec %s\n", AC97_VERSION);
-+
-+ socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (socdev->codec == NULL)
-+ return -ENOMEM;
-+ codec = socdev->codec;
-+ mutex_init(&codec->mutex);
-+
-+ codec->name = "AC97";
-+ codec->owner = THIS_MODULE;
-+ codec->dai = &ac97_dai;
-+ codec->num_dai = 1;
-+ codec->write = ac97_write;
-+ codec->read = ac97_read;
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0)
-+ goto err;
-+
-+ /* add codec as bus device for standard ac97 */
-+ ret = snd_ac97_bus(codec->card, 0, &soc_ac97_ops, NULL, &ac97_bus);
-+ if(ret < 0)
-+ goto bus_err;
-+
-+ memset(&ac97_template, 0, sizeof(struct snd_ac97_template));
-+ ret = snd_ac97_mixer(ac97_bus, &ac97_template, &codec->ac97);
-+ if(ret < 0)
-+ goto bus_err;
-+
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0)
-+ goto bus_err;
-+ return 0;
-+
-+bus_err:
-+ snd_soc_free_pcms(socdev);
-+
-+err:
-+ kfree(socdev->codec->reg_cache);
-+ kfree(socdev->codec);
-+ socdev->codec = NULL;
-+ return ret;
-+}
-+
-+static int ac97_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if(codec == NULL)
-+ return 0;
-+
-+ snd_soc_free_pcms(socdev);
-+ kfree(socdev->codec->reg_cache);
-+ kfree(socdev->codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_ac97= {
-+ .probe = ac97_soc_probe,
-+ .remove = ac97_soc_remove,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_ac97);
-+
-+MODULE_DESCRIPTION("Soc Generic AC97 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/ac97.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/ac97.h
-@@ -0,0 +1,18 @@
-+/*
-+ * linux/sound/codecs/ac97.h -- ALSA SoC Layer
-+ *
-+ * Author: Liam Girdwood
-+ * Created: Dec 1st 2005
-+ * Copyright: Wolfson Microelectronics. PLC.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef __LINUX_SND_SOC_AC97_H
-+#define __LINUX_SND_SOC_AC97_H
-+
-+extern struct snd_soc_codec_device soc_codec_dev_ac97;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/ak4535.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/ak4535.c
-@@ -0,0 +1,701 @@
-+/*
-+ * ak4535.c -- AK4535 ALSA Soc Audio driver
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@openedhand.com>
-+ *
-+ * Based on wm8753.c by Liam Girdwood
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "ak4535.h"
-+
-+#define AUDIO_NAME "ak4535"
-+#define AK4535_VERSION "0.3"
-+
-+struct snd_soc_codec_device soc_codec_dev_ak4535;
-+
-+/*
-+ * ak4535 register cache
-+ */
-+static const u16 ak4535_reg[AK4535_CACHEREGNUM] = {
-+ 0x0000, 0x0080, 0x0000, 0x0003,
-+ 0x0002, 0x0000, 0x0011, 0x0001,
-+ 0x0000, 0x0040, 0x0036, 0x0010,
-+ 0x0000, 0x0000, 0x0057, 0x0000,
-+};
-+
-+#define AK4535_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBS_CFS | \
-+ SND_SOC_DAIFMT_NB_NF)
-+
-+#define AK4535_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define AK4535_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+static struct snd_soc_dai_mode ak4535_modes[] = {
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = AK4535_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = AK4535_RATES,
-+ .pcmdir = AK4535_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = AK4535_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = AK4535_RATES,
-+ .pcmdir = AK4535_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 32,
-+ },
-+};
-+
-+/*
-+ * read ak4535 register cache
-+ */
-+static inline unsigned int ak4535_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= AK4535_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write ak4535 register cache
-+ */
-+static inline void ak4535_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= AK4535_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the AK4535 register space
-+ */
-+static int ak4535_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D8 AK4535 register offset
-+ * D7...D0 register data
-+ */
-+ data[0] = reg & 0xff;
-+ data[1] = value & 0xff;
-+
-+ ak4535_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+static const char *ak4535_mono_gain[] = {"+6dB", "-17dB"};
-+static const char *ak4535_mono_out[] = {"(L + R)/2", "Hi-Z"};
-+static const char *ak4535_hp_out[] = {"Stereo", "Mono"};
-+static const char *ak4535_deemp[] = {"44.1kHz", "Off", "48kHz", "32kHz"};
-+static const char *ak4535_mic_select[] = {"Internal", "External"};
-+
-+static const struct soc_enum ak4535_enum[] = {
-+ SOC_ENUM_SINGLE(AK4535_SIG1, 7, 2, ak4535_mono_gain),
-+ SOC_ENUM_SINGLE(AK4535_SIG1, 6, 2, ak4535_mono_out),
-+ SOC_ENUM_SINGLE(AK4535_MODE2, 2, 2, ak4535_hp_out),
-+ SOC_ENUM_SINGLE(AK4535_DAC, 0, 4, ak4535_deemp),
-+ SOC_ENUM_SINGLE(AK4535_MIC, 1, 2, ak4535_mic_select),
-+};
-+
-+static const struct snd_kcontrol_new ak4535_snd_controls[] = {
-+ SOC_SINGLE("ALC2 Switch", AK4535_SIG1, 1, 1, 0),
-+ SOC_ENUM("Mono 1 Output", ak4535_enum[1]),
-+ SOC_ENUM("Mono 1 Gain", ak4535_enum[0]),
-+ SOC_ENUM("Headphone Output", ak4535_enum[2]),
-+ SOC_ENUM("Playback Deemphasis", ak4535_enum[3]),
-+ SOC_SINGLE("Bass Volume", AK4535_DAC, 2, 3, 0),
-+ SOC_SINGLE("Mic Boost (+20dB) Switch", AK4535_MIC, 0, 1, 0),
-+ SOC_ENUM("Mic Select", ak4535_enum[4]),
-+ SOC_SINGLE("ALC Operation Time", AK4535_TIMER, 0, 3, 0),
-+ SOC_SINGLE("ALC Recovery Time", AK4535_TIMER, 2, 3, 0),
-+ SOC_SINGLE("ALC ZC Time", AK4535_TIMER, 4, 3, 0),
-+ SOC_SINGLE("ALC 1 Switch", AK4535_ALC1, 5, 1, 0),
-+ SOC_SINGLE("ALC 2 Switch", AK4535_ALC1, 6, 1, 0),
-+ SOC_SINGLE("ALC Volume", AK4535_ALC2, 0, 127, 0),
-+ SOC_SINGLE("Capture Volume", AK4535_PGA, 0, 127, 0),
-+ SOC_SINGLE("Left Playback Volume", AK4535_LATT, 0, 127, 1),
-+ SOC_SINGLE("Right Playback Volume", AK4535_RATT, 0, 127, 1),
-+ SOC_SINGLE("AUX Bypass Volume", AK4535_VOL, 0, 15, 0),
-+ SOC_SINGLE("Mic Sidetone Volume", AK4535_VOL, 4, 7, 0),
-+};
-+
-+/* add non dapm controls */
-+static int ak4535_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(ak4535_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&ak4535_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Mono 1 Mixer */
-+static const struct snd_kcontrol_new ak4535_mono1_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("Mic Sidetone Switch", AK4535_SIG1, 4, 1, 0),
-+ SOC_DAPM_SINGLE("Mono Playback Switch", AK4535_SIG1, 5, 1, 0),
-+};
-+
-+/* Stereo Mixer */
-+static const struct snd_kcontrol_new ak4535_stereo_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("Mic Sidetone Switch", AK4535_SIG2, 4, 1, 0),
-+ SOC_DAPM_SINGLE("Playback Switch", AK4535_SIG2, 7, 1, 0),
-+ SOC_DAPM_SINGLE("Aux Bypass Switch", AK4535_SIG2, 5, 1, 0),
-+};
-+
-+/* Input Mixer */
-+static const struct snd_kcontrol_new ak4535_input_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("Mic Capture Switch", AK4535_MIC, 2, 1, 0),
-+ SOC_DAPM_SINGLE("Aux Capture Switch", AK4535_MIC, 5, 1, 0),
-+};
-+
-+/* Input mux */
-+static const struct snd_kcontrol_new ak4535_input_mux_control =
-+ SOC_DAPM_ENUM("Input Select", ak4535_enum[0]);
-+
-+/* HP L switch */
-+static const struct snd_kcontrol_new ak4535_hpl_control =
-+ SOC_DAPM_SINGLE("Switch", AK4535_SIG2, 1, 1, 1);
-+
-+/* HP R switch */
-+static const struct snd_kcontrol_new ak4535_hpr_control =
-+ SOC_DAPM_SINGLE("Switch", AK4535_SIG2, 0, 1, 1);
-+
-+/* Speaker switch */
-+static const struct snd_kcontrol_new ak4535_spk_control =
-+ SOC_DAPM_SINGLE("Switch", AK4535_MODE2, 0, 0, 0);
-+
-+/* mono 2 switch */
-+static const struct snd_kcontrol_new ak4535_mono2_control =
-+ SOC_DAPM_SINGLE("Switch", AK4535_SIG1, 0, 1, 0);
-+
-+/* Line out switch */
-+static const struct snd_kcontrol_new ak4535_line_control =
-+ SOC_DAPM_SINGLE("Switch", AK4535_SIG2, 6, 1, 0);
-+
-+/* ak4535 dapm widgets */
-+static const struct snd_soc_dapm_widget ak4535_dapm_widgets[] = {
-+ SND_SOC_DAPM_MIXER("Stereo Mixer", SND_SOC_NOPM, 0, 0,
-+ &ak4535_stereo_mixer_controls[0],
-+ ARRAY_SIZE(ak4535_stereo_mixer_controls)),
-+ SND_SOC_DAPM_MIXER("Mono1 Mixer", SND_SOC_NOPM, 0, 0,
-+ &ak4535_mono1_mixer_controls[0],
-+ ARRAY_SIZE(ak4535_mono1_mixer_controls)),
-+ SND_SOC_DAPM_MIXER("Input Mixer", SND_SOC_NOPM, 0, 0,
-+ &ak4535_input_mixer_controls[0],
-+ ARRAY_SIZE(ak4535_mono1_mixer_controls)),
-+ SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0,
-+ &ak4535_input_mux_control),
-+ SND_SOC_DAPM_DAC("DAC", "Playback", AK4535_PM2, 0, 0),
-+ SND_SOC_DAPM_SWITCH("Mono 2 Enable", SND_SOC_NOPM, 0, 0,
-+ &ak4535_mono2_control),
-+ SND_SOC_DAPM_SWITCH("Speaker Enable", SND_SOC_NOPM, 0, 0,
-+ &ak4535_spk_control),
-+ SND_SOC_DAPM_SWITCH("Line Out Enable", SND_SOC_NOPM, 0, 0,
-+ &ak4535_line_control),
-+ SND_SOC_DAPM_SWITCH("Left HP Enable", SND_SOC_NOPM, 0, 0,
-+ &ak4535_hpl_control),
-+ SND_SOC_DAPM_SWITCH("Right HP Enable", SND_SOC_NOPM, 0, 0,
-+ &ak4535_hpr_control),
-+ SND_SOC_DAPM_OUTPUT("LOUT"),
-+ SND_SOC_DAPM_OUTPUT("HPL"),
-+ SND_SOC_DAPM_OUTPUT("ROUT"),
-+ SND_SOC_DAPM_OUTPUT("HPR"),
-+ SND_SOC_DAPM_OUTPUT("SPP"),
-+ SND_SOC_DAPM_OUTPUT("SPN"),
-+ SND_SOC_DAPM_OUTPUT("MOUT1"),
-+ SND_SOC_DAPM_OUTPUT("MOUT2"),
-+ SND_SOC_DAPM_OUTPUT("MICOUT"),
-+ SND_SOC_DAPM_ADC("ADC", "Capture", AK4535_PM1, 0, 1),
-+ SND_SOC_DAPM_PGA("Spk Amp", AK4535_PM2, 3, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("HP R Amp", AK4535_PM2, 1, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("HP L Amp", AK4535_PM2, 2, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Mic", AK4535_PM1, 1, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Line Out", AK4535_PM1, 4, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Mono Out", AK4535_PM1, 3, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("AUX In", AK4535_PM1, 2, 0, NULL, 0),
-+
-+ SND_SOC_DAPM_MICBIAS("Mic Int Bias", AK4535_MIC, 3, 0),
-+ SND_SOC_DAPM_MICBIAS("Mic Ext Bias", AK4535_MIC, 4, 0),
-+ SND_SOC_DAPM_INPUT("MICIN"),
-+ SND_SOC_DAPM_INPUT("MICEXT"),
-+ SND_SOC_DAPM_INPUT("AUX"),
-+ SND_SOC_DAPM_INPUT("MIN"),
-+ SND_SOC_DAPM_INPUT("AIN"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /*stereo mixer */
-+ {"Stereo Mixer", "Playback Switch", "DAC"},
-+ {"Stereo Mixer", "Mic Sidetone Switch", "Mic"},
-+ {"Stereo Mixer", "Aux Bypass Switch", "AUX In"},
-+
-+ /* mono1 mixer */
-+ {"Mono1 Mixer", "Mic Sidetone Switch", "Mic"},
-+ {"Mono1 Mixer", "Mono Playback Switch", "DAC"},
-+
-+ /* mono2 mixer */
-+ {"Mono2 Mixer", "Mono Playback Switch", "Stereo Mixer"},
-+
-+ /* Mic */
-+ {"AIN", NULL, "Mic"},
-+ {"Input Mux", "Internal", "Mic Int Bias"},
-+ {"Input Mux", "External", "Mic Ext Bias"},
-+ {"Mic Int Bias", NULL, "MICIN"},
-+ {"Mic Ext Bias", NULL, "MICEXT"},
-+ {"MICOUT", NULL, "Input Mux"},
-+
-+ /* line out */
-+ {"LOUT", "Switch", "Line"},
-+ {"ROUT", "Switch", "Line Out Enable"},
-+ {"Line Out Enable", NULL, "Line Out"},
-+ {"Line Out", NULL, "Stereo Mixer"},
-+
-+ /* mono1 out */
-+ {"MOUT1", NULL, "Mono Out"},
-+ {"Mono Out", NULL, "Mono Mixer"},
-+
-+ /* left HP */
-+ {"HPL", "Switch", "Left HP Enable"},
-+ {"Left HP Enable", NULL, "HP L Amp"},
-+ {"HP L Amp", NULL, "Stereo Mixer"},
-+
-+ /* right HP */
-+ {"HPR", "Switch", "Right HP Enable"},
-+ {"Right HP Enable", NULL, "HP R Amp"},
-+ {"HP R Amp", NULL, "Stereo Mixer"},
-+
-+ /* speaker */
-+ {"SPP", "Switch", "Speaker Enable"},
-+ {"SPN", "Switch", "Speaker Enable"},
-+ {"Speaker Enable", NULL, "Spk Amp"},
-+ {"Spk Amp", NULL, "MIN"},
-+
-+ /* mono 2 */
-+ {"MOUT2", "Switch", "Mono 2 Enable"},
-+ {"Mono 2 Enable", NULL, "Stereo Mixer"},
-+
-+ /* Aux In */
-+ {"Aux In", NULL, "AUX"},
-+
-+ /* ADC */
-+ {"ADC", NULL, "Input Mixer"},
-+ {"Input Mixer", "Mic Capture Switch", "Mic"},
-+ {"Input Mixer", "Aux Capture Switch", "Aux In"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int ak4535_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(ak4535_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &ak4535_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static int ak4535_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u8 mode = 0, mode2;
-+ int bfs;
-+
-+ mode2 = ak4535_read_reg_cache(codec, AK4535_MODE2);
-+ bfs = SND_SOC_FSBW_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ snd_assert(bfs, return -ENODEV);
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ mode = 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ mode = 0x0001;
-+ break;
-+ }
-+
-+ /* set fs */
-+ switch (rtd->codec_dai->dai_runtime.fs) {
-+ case 1024:
-+ mode2 |= (0x3 << 5);
-+ break;
-+ case 512:
-+ mode2 |= (0x2 << 5);
-+ break;
-+ case 256:
-+ mode2 |= (0x1 << 5);
-+ break;
-+ }
-+
-+ /* bfs */
-+ if (bfs == 64)
-+ mode |= 0x4;
-+
-+ /* set rate */
-+ ak4535_write(codec, AK4535_MODE1, mode);
-+ ak4535_write(codec, AK4535_MODE2, mode2);
-+
-+ return 0;
-+}
-+
-+static unsigned int ak4535_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ if (info->fs != 256)
-+ return 0;
-+
-+ /* we only support 256 FS atm */
-+ if (info->rate * info->fs == clk) {
-+ dai->mclk = clk;
-+ return clk;
-+ }
-+
-+ return 0;
-+}
-+
-+static int ak4535_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = ak4535_read_reg_cache(codec, AK4535_DAC) & 0xffdf;
-+ if (mute)
-+ ak4535_write(codec, AK4535_DAC, mute_reg);
-+ else
-+ ak4535_write(codec, AK4535_DAC, mute_reg | 0x20);
-+ return 0;
-+}
-+
-+static int ak4535_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, dac unmute, active */
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, dac mute, inactive */
-+ ak4535_write(codec, AK4535_PM1, 0x80);
-+ ak4535_write(codec, AK4535_PM2, 0x0);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, inactive */
-+ ak4535_write(codec, AK4535_PM1, 0x0);
-+ ak4535_write(codec, AK4535_PM2, 0x80);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai ak4535_dai = {
-+ .name = "AK4535",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = ak4535_config_sysclk,
-+ .digital_mute = ak4535_mute,
-+ .ops = {
-+ .prepare = ak4535_pcm_prepare,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(ak4535_modes),
-+ .mode = ak4535_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(ak4535_dai);
-+
-+static int ak4535_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int ak4535_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(ak4535_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ ak4535_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the AK4535 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int ak4535_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ codec->name = "AK4535";
-+ codec->owner = THIS_MODULE;
-+ codec->read = ak4535_read_reg_cache;
-+ codec->write = ak4535_write;
-+ codec->dapm_event = ak4535_dapm_event;
-+ codec->dai = &ak4535_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(ak4535_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(ak4535_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, ak4535_reg,
-+ sizeof(u16) * ARRAY_SIZE(ak4535_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(ak4535_reg);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ ak4535_add_controls(codec);
-+ ak4535_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *ak4535_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+#define I2C_DRIVERID_AK4535 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver ak4535_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+static int ak4535_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = ak4535_socdev;
-+ struct ak4535_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if (ret < 0) {
-+ printk(KERN_ERR "failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = ak4535_init(socdev);
-+ if (ret < 0) {
-+ printk(KERN_ERR "failed to initialise AK4535\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int ak4535_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec* codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+static int ak4535_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, ak4535_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver ak4535_i2c_driver = {
-+ .driver = {
-+ .name = "AK4535 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_AK4535,
-+ .attach_adapter = ak4535_i2c_attach,
-+ .detach_client = ak4535_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "AK4535",
-+ .driver = &ak4535_i2c_driver,
-+};
-+#endif
-+
-+static int ak4535_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct ak4535_setup_data *setup;
-+ struct snd_soc_codec* codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "AK4535 Audio Codec %s", AK4535_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ ak4535_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&ak4535_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int ak4535_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec* codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ ak4535_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&ak4535_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_ak4535 = {
-+ .probe = ak4535_probe,
-+ .remove = ak4535_remove,
-+ .suspend = ak4535_suspend,
-+ .resume = ak4535_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_ak4535);
-+
-+MODULE_DESCRIPTION("Soc AK4535 driver");
-+MODULE_AUTHOR("Richard Purdie");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/ak4535.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/ak4535.h
-@@ -0,0 +1,46 @@
-+/*
-+ * ak4535.h -- AK4535 Soc Audio driver
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@openedhand.com>
-+ *
-+ * Based on wm8753.h
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _AK4535_H
-+#define _AK4535_H
-+
-+/* AK4535 register space */
-+
-+#define AK4535_PM1 0x0
-+#define AK4535_PM2 0x1
-+#define AK4535_SIG1 0x2
-+#define AK4535_SIG2 0x3
-+#define AK4535_MODE1 0x4
-+#define AK4535_MODE2 0x5
-+#define AK4535_DAC 0x6
-+#define AK4535_MIC 0x7
-+#define AK4535_TIMER 0x8
-+#define AK4535_ALC1 0x9
-+#define AK4535_ALC2 0xa
-+#define AK4535_PGA 0xb
-+#define AK4535_LATT 0xc
-+#define AK4535_RATT 0xd
-+#define AK4535_VOL 0xe
-+#define AK4535_STATUS 0xf
-+
-+#define AK4535_CACHEREGNUM 0x10
-+
-+struct ak4535_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai ak4535_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_ak4535;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/uda1380.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/uda1380.c
-@@ -0,0 +1,582 @@
-+/*
-+ * uda1380.c - Philips UDA1380 ALSA SoC audio driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Modified by Richard Purdie <richard@openedhand.com> to fit into SoC
-+ * codec model.
-+ *
-+ * Copyright (c) 2005 Giorgio Padrin <giorgio@mandarinlogiq.org>
-+ * Copyright 2005 Openedhand Ltd.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/types.h>
-+#include <linux/string.h>
-+#include <linux/slab.h>
-+#include <linux/errno.h>
-+#include <linux/ioctl.h>
-+#include <linux/delay.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/control.h>
-+#include <sound/initval.h>
-+#include <sound/info.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include "uda1380.h"
-+
-+#define UDA1380_VERSION "0.4"
-+
-+/*
-+ * uda1380 register cache
-+ */
-+static const u16 uda1380_reg[UDA1380_CACHEREGNUM] = {
-+ 0x0502, 0x0000, 0x0000, 0x3f3f,
-+ 0x0202, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0xff00, 0x0000, 0x4800,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x8000, 0x0002, 0x0000,
-+};
-+
-+#define UDA1380_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBS_CFS | \
-+ SND_SOC_DAIFMT_NB_NF)
-+
-+#define UDA1380_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define UDA1380_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+static struct snd_soc_dai_mode uda1380_modes[] = {
-+ /* slave rates capture & playback */
-+ {
-+ .fmt = UDA1380_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = UDA1380_RATES,
-+ .pcmdir = UDA1380_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+
-+ /* slave rates playback */
-+ {
-+ .fmt = UDA1380_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+};
-+
-+/*
-+ * read uda1380 register cache
-+ */
-+static inline unsigned int uda1380_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == UDA1380_RESET)
-+ return 0;
-+ if (reg >= UDA1380_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write uda1380 register cache
-+ */
-+static inline void uda1380_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= UDA1380_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the UDA1380 register space
-+ */
-+static int uda1380_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[3];
-+
-+ /* data is
-+ * data[0] is register offset
-+ * data[1] is MS byte
-+ * data[2] is LS byte
-+ */
-+ data[0] = reg;
-+ data[1] = (value & 0xff00) >> 8;
-+ data[2] = value & 0x00ff;
-+
-+ uda1380_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 3) == 3)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define uda1380_reset(c) uda1380_write(c, UDA1380_RESET, 0)
-+
-+/* declarations of ALSA reg_elem_REAL controls */
-+static const char *uda1380_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz",
-+ "96kHz"};
-+static const char *uda1380_input_sel[] = {"Line", "Mic"};
-+
-+static const struct soc_enum uda1380_enum[] = {
-+ SOC_ENUM_DOUBLE(UDA1380_DEEMP, 0, 8, 5, uda1380_deemp),
-+ SOC_ENUM_SINGLE(UDA1380_ADC, 3, 2, uda1380_input_sel),
-+};
-+
-+static const struct snd_kcontrol_new uda1380_snd_controls[] = {
-+ SOC_DOUBLE("Playback Volume", UDA1380_MVOL, 0, 8, 127, 0),
-+ SOC_DOUBLE("Treble Volume", UDA1380_MODE, 4, 12, 3, 0),
-+ SOC_DOUBLE("Bass Volume", UDA1380_MODE, 0, 8, 15, 0),
-+ SOC_ENUM("Playback De-emphasis", uda1380_enum[0]),
-+ SOC_DOUBLE("Capture Volume", UDA1380_DEC, 0, 8, 127, 0),
-+ SOC_DOUBLE("Line Capture Volume", UDA1380_PGA, 0, 8, 15, 0),
-+ SOC_SINGLE("Mic Capture Volume", UDA1380_PGA, 8, 11, 0),
-+ SOC_DOUBLE("Playback Switch", UDA1380_DEEMP, 3, 11, 1, 0),
-+ SOC_SINGLE("Capture Switch", UDA1380_PGA, 15, 1, 0),
-+ SOC_SINGLE("AGC Timing", UDA1380_AGC, 8, 7, 0),
-+ SOC_SINGLE("AGC Target level", UDA1380_AGC, 2, 3, 1),
-+ SOC_SINGLE("AGC Switch", UDA1380_AGC, 0, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int uda1380_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(uda1380_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&uda1380_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Input mux */
-+static const struct snd_kcontrol_new uda1380_input_mux_control =
-+ SOC_DAPM_ENUM("Input Select", uda1380_enum[1]);
-+
-+static const struct snd_soc_dapm_widget uda1380_dapm_widgets[] = {
-+ SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0,
-+ &uda1380_input_mux_control),
-+ SND_SOC_DAPM_PGA("Left PGA", UDA1380_PM, 3, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Right PGA", UDA1380_PM, 1, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Mic LNA", UDA1380_PM, 4, 0, NULL, 0),
-+ SND_SOC_DAPM_ADC("Left ADC", "Left Capture", UDA1380_PM, 2, 0),
-+ SND_SOC_DAPM_ADC("Right ADC", "Right Capture", UDA1380_PM, 0, 0),
-+ SND_SOC_DAPM_INPUT("VINM"),
-+ SND_SOC_DAPM_INPUT("VINL"),
-+ SND_SOC_DAPM_INPUT("VINR"),
-+ SND_SOC_DAPM_MIXER("Analog Mixer", UDA1380_PM, 6, 0, NULL, 0),
-+ SND_SOC_DAPM_OUTPUT("VOUTLHP"),
-+ SND_SOC_DAPM_OUTPUT("VOUTRHP"),
-+ SND_SOC_DAPM_OUTPUT("VOUTL"),
-+ SND_SOC_DAPM_OUTPUT("VOUTR"),
-+ SND_SOC_DAPM_DAC("DAC", "Playback", UDA1380_PM, 10, 0),
-+ SND_SOC_DAPM_PGA("HeadPhone Driver", UDA1380_PM, 13, 0, NULL, 0),
-+};
-+
-+static const char *audio_map[][3] = {
-+
-+ /* analog mixer setup is different from diagram for dapm */
-+ {"HeadPhone Driver", NULL, "Analog Mixer"},
-+ {"VOUTR", NULL, "Analog Mixer"},
-+ {"VOUTL", NULL, "Analog Mixer"},
-+ {"Analog Mixer", NULL, "VINR"},
-+ {"Analog Mixer", NULL, "VINL"},
-+ {"Analog Mixer", NULL, "DAC"},
-+
-+ /* headphone driver */
-+ {"VOUTLHP", NULL, "HeadPhone Driver"},
-+ {"VOUTRHP", NULL, "HeadPhone Driver"},
-+
-+ /* input mux */
-+ {"Left ADC", NULL, "Input Mux"},
-+ {"Input Mux", "Mic", "Mic LNA"},
-+ {"Input Mux", "Line", "Left PGA"},
-+
-+ /* right input */
-+ {"Right ADC", NULL, "Right PGA"},
-+
-+ /* inputs */
-+ {"Mic LNA", NULL, "VINM"},
-+ {"Left PGA", NULL, "VINL"},
-+ {"Right PGA", NULL, "VINR"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int uda1380_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(uda1380_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &uda1380_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static int uda1380_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ uda1380_write(codec, UDA1380_CLK, R00_EN_DAC | R00_EN_INT | clk);
-+ else
-+ uda1380_write(codec, UDA1380_CLK, R00_EN_ADC | R00_EN_DEC | clk);
-+
-+ return 0;
-+}
-+
-+static void uda1380_pcm_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ uda1380_write(codec, UDA1380_CLK, ~(R00_EN_DAC | R00_EN_INT) & clk);
-+ else
-+ uda1380_write(codec, UDA1380_CLK, ~(R00_EN_ADC | R00_EN_DEC) & clk);
-+}
-+
-+static unsigned int uda1380_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ if(info->fs != 256)
-+ return 0;
-+
-+ /* we only support 256 FS atm */
-+ if(info->rate * info->fs == clk) {
-+ dai->mclk = clk;
-+ return clk;
-+ }
-+
-+ return 0;
-+}
-+
-+static int uda1380_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = uda1380_read_reg_cache(codec, UDA1380_DEEMP) & 0xbfff;
-+ if(mute)
-+ uda1380_write(codec, UDA1380_DEEMP, mute_reg | 0x4000);
-+ else
-+ uda1380_write(codec, UDA1380_DEEMP, mute_reg);
-+ return 0;
-+}
-+
-+static int uda1380_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except internal bias */
-+ uda1380_write(codec, UDA1380_PM, R02_PON_BIAS);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, inactive */
-+ uda1380_write(codec, UDA1380_PM, 0x0);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai uda1380_dai = {
-+ .name = "UDA1380",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = uda1380_config_sysclk,
-+ .digital_mute = uda1380_mute,
-+ .ops = {
-+ .prepare = uda1380_pcm_prepare,
-+ .shutdown = uda1380_pcm_shutdown,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(uda1380_modes),
-+ .mode = uda1380_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(uda1380_dai);
-+
-+static int uda1380_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int uda1380_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(uda1380_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ uda1380_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the UDA1380 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int uda1380_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ codec->name = "UDA1380";
-+ codec->owner = THIS_MODULE;
-+ codec->read = uda1380_read_reg_cache;
-+ codec->write = uda1380_write;
-+ codec->dapm_event = uda1380_dapm_event;
-+ codec->dai = &uda1380_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(uda1380_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(uda1380_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, uda1380_reg,
-+ sizeof(u16) * ARRAY_SIZE(uda1380_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(uda1380_reg);
-+ uda1380_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ uda1380_write(codec, UDA1380_CLK, 0);
-+
-+ /* uda1380 init */
-+ uda1380_add_controls(codec);
-+ uda1380_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if(ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *uda1380_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+#define I2C_DRIVERID_UDA1380 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver uda1380_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int uda1380_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = uda1380_socdev;
-+ struct uda1380_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if(ret < 0) {
-+ printk(KERN_ERR "failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = uda1380_init(socdev);
-+ if(ret < 0) {
-+ printk(KERN_ERR "failed to initialise UDA1380\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int uda1380_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec* codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int uda1380_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, uda1380_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver uda1380_i2c_driver = {
-+ .driver = {
-+ .name = "UDA1380 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_UDA1380,
-+ .attach_adapter = uda1380_i2c_attach,
-+ .detach_client = uda1380_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "UDA1380",
-+ .driver = &uda1380_i2c_driver,
-+};
-+#endif
-+
-+static int uda1380_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct uda1380_setup_data *setup;
-+ struct snd_soc_codec* codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "UDA1380 Audio Codec %s", UDA1380_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ uda1380_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&uda1380_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int uda1380_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec* codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ uda1380_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&uda1380_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_uda1380 = {
-+ .probe = uda1380_probe,
-+ .remove = uda1380_remove,
-+ .suspend = uda1380_suspend,
-+ .resume = uda1380_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_uda1380);
-+
-+MODULE_AUTHOR("Giorgio Padrin");
-+MODULE_DESCRIPTION("Audio support for codec Philips UDA1380");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/uda1380.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/uda1380.h
-@@ -0,0 +1,56 @@
-+/*
-+ * Audio support for Philips UDA1380
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Copyright (c) 2005 Giorgio Padrin <giorgio@mandarinlogiq.org>
-+ */
-+
-+#define UDA1380_CLK 0x00
-+#define UDA1380_IFACE 0x01
-+#define UDA1380_PM 0x02
-+#define UDA1380_AMIX 0x03
-+#define UDA1380_HP 0x04
-+#define UDA1380_MVOL 0x10
-+#define UDA1380_MIXVOL 0x11
-+#define UDA1380_MODE 0x12
-+#define UDA1380_DEEMP 0x13
-+#define UDA1380_MIXER 0x14
-+#define UDA1380_INTSTAT 0x18
-+#define UDA1380_DEC 0x20
-+#define UDA1380_PGA 0x21
-+#define UDA1380_ADC 0x22
-+#define UDA1380_AGC 0x23
-+#define UDA1380_DECSTAT 0x28
-+#define UDA1380_RESET 0x7f
-+
-+#define UDA1380_CACHEREGNUM 0x24
-+
-+/* Register flags */
-+#define R00_EN_ADC 0x0800
-+#define R00_EN_DEC 0x0400
-+#define R00_EN_DAC 0x0200
-+#define R00_EN_INT 0x0100
-+#define R02_PON_HP 0x2000
-+#define R02_PON_DAC 0x0400
-+#define R02_PON_BIAS 0x0100
-+#define R02_PON_LNA 0x0010
-+#define R02_PON_PGAL 0x0008
-+#define R02_PON_ADCL 0x0004
-+#define R02_PON_PGAR 0x0002
-+#define R02_PON_ADCR 0x0001
-+#define R13_MTM 0x4000
-+#define R21_MT_ADC 0x8000
-+#define R22_SEL_LNA 0x0008
-+#define R22_SEL_MIC 0x0004
-+#define R22_SKIP_DCFIL 0x0002
-+#define R23_AGC_EN 0x0001
-+
-+struct uda1380_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai uda1380_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_uda1380;
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8731.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8731.c
-@@ -0,0 +1,886 @@
-+/*
-+ * wm8731.c -- WM8731 ALSA SoC Audio driver
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@openedhand.com>
-+ *
-+ * Based on wm8753.c by Liam Girdwood
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8731.h"
-+
-+#define AUDIO_NAME "wm8731"
-+#define WM8731_VERSION "0.12"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8731_DEBUG 0
-+
-+#ifdef WM8731_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8731;
-+
-+/*
-+ * wm8731 register cache
-+ * We can't read the WM8731 register space when we are
-+ * using 2 wire for device control, so we cache them instead.
-+ * There is no point in caching the reset register
-+ */
-+static const u16 wm8731_reg[WM8731_CACHEREGNUM] = {
-+ 0x0097, 0x0097, 0x0079, 0x0079,
-+ 0x000a, 0x0008, 0x009f, 0x000a,
-+ 0x0000, 0x0000
-+};
-+
-+#define WM8731_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8731_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8731_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+#define WM8731_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+static struct snd_soc_dai_mode wm8731_modes[] = {
-+ /* codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 1536,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 2304,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 1408,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 2112,
-+ .bfs = 64,
-+ },
-+
-+ /* 32k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 576,
-+ .bfs = 64,
-+ },
-+
-+ /* 44.1k & 48k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+
-+ /* 88.2 & 96k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+
-+ /* USB codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1500,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 44.1k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 272,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 48k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 250,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 88.2k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 136,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 96k */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 125,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8731_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8731_HIFI_BITS,
-+ .pcmrate = WM8731_RATES,
-+ .pcmdir = WM8731_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8731 register cache
-+ */
-+static inline unsigned int wm8731_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == WM8731_RESET)
-+ return 0;
-+ if (reg >= WM8731_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8731 register cache
-+ */
-+static inline void wm8731_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= WM8731_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the WM8731 register space
-+ */
-+static int wm8731_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8731 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8731_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8731_reset(c) wm8731_write(c, WM8731_RESET, 0)
-+
-+static const char *wm8731_input_select[] = {"Line In", "Mic"};
-+static const char *wm8731_deemph[] = {"None", "32Khz", "44.1Khz", "48Khz"};
-+
-+static const struct soc_enum wm8731_enum[] = {
-+ SOC_ENUM_SINGLE(WM8731_APANA, 2, 2, wm8731_input_select),
-+ SOC_ENUM_SINGLE(WM8731_APDIGI, 1, 4, wm8731_deemph),
-+};
-+
-+static const struct snd_kcontrol_new wm8731_snd_controls[] = {
-+
-+SOC_DOUBLE_R("Master Playback Volume", WM8731_LOUT1V, WM8731_ROUT1V,
-+ 0, 127, 0),
-+SOC_DOUBLE_R("Master Playback ZC Switch", WM8731_LOUT1V, WM8731_ROUT1V,
-+ 7, 1, 0),
-+
-+SOC_DOUBLE_R("Capture Volume", WM8731_LINVOL, WM8731_RINVOL, 0, 31, 0),
-+SOC_DOUBLE_R("Line Capture Switch", WM8731_LINVOL, WM8731_RINVOL, 7, 1, 1),
-+
-+SOC_SINGLE("Mic Boost (+20dB)", WM8731_APANA, 0, 1, 0),
-+SOC_SINGLE("Capture Mic Switch", WM8731_APANA, 1, 1, 1),
-+
-+SOC_SINGLE("Sidetone Playback Volume", WM8731_APANA, 6, 3, 1),
-+
-+SOC_SINGLE("ADC High Pass Filter Switch", WM8731_APDIGI, 0, 1, 1),
-+SOC_SINGLE("Store DC Offset Switch", WM8731_APDIGI, 4, 1, 0),
-+
-+SOC_ENUM("Playback De-emphasis", wm8731_enum[1]),
-+};
-+
-+/* add non dapm controls */
-+static int wm8731_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8731_snd_controls); i++) {
-+ if ((err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8731_snd_controls[i],codec, NULL))) < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Output Mixer */
-+static const struct snd_kcontrol_new wm8731_output_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8731_APANA, 3, 1, 0),
-+SOC_DAPM_SINGLE("Mic Sidetone Switch", WM8731_APANA, 5, 1, 0),
-+SOC_DAPM_SINGLE("HiFi Playback Switch", WM8731_APANA, 4, 1, 0),
-+};
-+
-+/* Input mux */
-+static const struct snd_kcontrol_new wm8731_input_mux_controls =
-+SOC_DAPM_ENUM("Input Select", wm8731_enum[0]);
-+
-+static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
-+SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1,
-+ &wm8731_output_mixer_controls[0],
-+ ARRAY_SIZE(wm8731_output_mixer_controls)),
-+SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8731_PWR, 3, 1),
-+SND_SOC_DAPM_OUTPUT("LOUT"),
-+SND_SOC_DAPM_OUTPUT("LHPOUT"),
-+SND_SOC_DAPM_OUTPUT("ROUT"),
-+SND_SOC_DAPM_OUTPUT("RHPOUT"),
-+SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8731_PWR, 2, 1),
-+SND_SOC_DAPM_MUX("Input Mux", SND_SOC_NOPM, 0, 0, &wm8731_input_mux_controls),
-+SND_SOC_DAPM_PGA("Line Input", WM8731_PWR, 0, 1, NULL, 0),
-+SND_SOC_DAPM_MICBIAS("Mic Bias", WM8731_PWR, 1, 1),
-+SND_SOC_DAPM_INPUT("MICIN"),
-+SND_SOC_DAPM_INPUT("RLINEIN"),
-+SND_SOC_DAPM_INPUT("LLINEIN"),
-+};
-+
-+static const char *intercon[][3] = {
-+ /* output mixer */
-+ {"Output Mixer", "Line Bypass Switch", "Line Input"},
-+ {"Output Mixer", "HiFi Playback Switch", "DAC"},
-+ {"Output Mixer", "Mic Sidetone Switch", "Mic Bias"},
-+
-+ /* outputs */
-+ {"RHPOUT", NULL, "Output Mixer"},
-+ {"ROUT", NULL, "Output Mixer"},
-+ {"LHPOUT", NULL, "Output Mixer"},
-+ {"LOUT", NULL, "Output Mixer"},
-+
-+ /* input mux */
-+ {"Input Mux", "Line In", "Line Input"},
-+ {"Input Mux", "Mic", "Mic Bias"},
-+ {"ADC", NULL, "Input Mux"},
-+
-+ /* inputs */
-+ {"Line Input", NULL, "LLINEIN"},
-+ {"Line Input", NULL, "RLINEIN"},
-+ {"Mic Bias", NULL, "MICIN"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8731_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8731_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8731_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path interconnects */
-+ for(i = 0; intercon[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, intercon[i][0],
-+ intercon[i][1], intercon[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct _coeff_div {
-+ u32 mclk;
-+ u32 rate;
-+ u16 fs;
-+ u8 sr:4;
-+ u8 bosr:1;
-+ u8 usb:1;
-+};
-+
-+/* codec mclk clock divider coefficients */
-+static const struct _coeff_div coeff_div[] = {
-+ /* 48k */
-+ {12288000, 48000, 256, 0x0, 0x0, 0x0},
-+ {18432000, 48000, 384, 0x0, 0x1, 0x0},
-+ {12000000, 48000, 250, 0x0, 0x0, 0x1},
-+
-+ /* 32k */
-+ {12288000, 32000, 384, 0x6, 0x0, 0x0},
-+ {18432000, 32000, 576, 0x6, 0x1, 0x0},
-+
-+ /* 8k */
-+ {12288000, 8000, 1536, 0x3, 0x0, 0x0},
-+ {18432000, 8000, 2304, 0x3, 0x1, 0x0},
-+ {11289600, 8000, 1408, 0xb, 0x0, 0x0},
-+ {16934400, 8000, 2112, 0xb, 0x1, 0x0},
-+ {12000000, 8000, 1500, 0x3, 0x0, 0x1},
-+
-+ /* 96k */
-+ {12288000, 96000, 128, 0x7, 0x0, 0x0},
-+ {18432000, 96000, 192, 0x7, 0x1, 0x0},
-+ {12000000, 96000, 125, 0x7, 0x0, 0x1},
-+
-+ /* 44.1k */
-+ {11289600, 44100, 256, 0x8, 0x0, 0x0},
-+ {16934400, 44100, 384, 0x8, 0x1, 0x0},
-+ {12000000, 44100, 272, 0x8, 0x1, 0x1},
-+
-+ /* 88.2k */
-+ {11289600, 88200, 128, 0xf, 0x0, 0x0},
-+ {16934400, 88200, 192, 0xf, 0x1, 0x0},
-+ {12000000, 88200, 136, 0xf, 0x1, 0x1},
-+};
-+
-+static inline int get_coeff(int mclk, int rate)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
-+ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
-+ return i;
-+ }
-+ return 0;
-+}
-+
-+/* WM8731 supports numerous clocks per sample rate */
-+static unsigned int wm8731_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ dai->mclk = 0;
-+
-+ /* check that the calculated FS and rate actually match a clock from
-+ * the machine driver */
-+ if (info->fs * info->rate == clk)
-+ dai->mclk = clk;
-+
-+ return dai->mclk;
-+}
-+
-+static int wm8731_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 iface = 0, srate;
-+ int i = get_coeff(rtd->codec_dai->mclk,
-+ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ iface |= 0x0040;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+ srate = (coeff_div[i].sr << 2) |
-+ (coeff_div[i].bosr << 1) | coeff_div[i].usb;
-+ wm8731_write(codec, WM8731_SRATE, srate);
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ iface |= 0x0013;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x000c;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0090;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0010;
-+ break;
-+ }
-+
-+ /* set iface */
-+ wm8731_write(codec, WM8731_IFACE, iface);
-+
-+ /* set active */
-+ wm8731_write(codec, WM8731_ACTIVE, 0x0001);
-+ return 0;
-+}
-+
-+static void wm8731_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ /* deactivate */
-+ if (!codec->active) {
-+ udelay(50);
-+ wm8731_write(codec, WM8731_ACTIVE, 0x0);
-+ }
-+}
-+
-+static int wm8731_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8731_read_reg_cache(codec, WM8731_APDIGI) & 0xfff7;
-+ if (mute)
-+ wm8731_write(codec, WM8731_APDIGI, mute_reg | 0x8);
-+ else
-+ wm8731_write(codec, WM8731_APDIGI, mute_reg);
-+ return 0;
-+}
-+
-+static int wm8731_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 reg = wm8731_read_reg_cache(codec, WM8731_PWR) & 0xff7f;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, osc on, dac unmute */
-+ wm8731_write(codec, WM8731_PWR, reg);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, */
-+ wm8731_write(codec, WM8731_PWR, reg | 0x0040);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8731_write(codec, WM8731_ACTIVE, 0x0);
-+ wm8731_write(codec, WM8731_PWR, 0xffff);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8731_dai = {
-+ .name = "WM8731",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8731_config_sysclk,
-+ .digital_mute = wm8731_mute,
-+ .ops = {
-+ .prepare = wm8731_pcm_prepare,
-+ .shutdown = wm8731_shutdown,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8731_modes),
-+ .mode = wm8731_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8731_dai);
-+
-+static int wm8731_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8731_write(codec, WM8731_ACTIVE, 0x0);
-+ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8731_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8731_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8731_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8731 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8731_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg, ret = 0;
-+
-+ codec->name = "WM8731";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8731_read_reg_cache;
-+ codec->write = wm8731_write;
-+ codec->dapm_event = wm8731_dapm_event;
-+ codec->dai = &wm8731_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8731_reg);
-+
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8731_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache,
-+ wm8731_reg, sizeof(u16) * ARRAY_SIZE(wm8731_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8731_reg);
-+
-+ wm8731_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* set the update bits */
-+ reg = wm8731_read_reg_cache(codec, WM8731_LOUT1V);
-+ wm8731_write(codec, WM8731_LOUT1V, reg | 0x0100);
-+ reg = wm8731_read_reg_cache(codec, WM8731_ROUT1V);
-+ wm8731_write(codec, WM8731_ROUT1V, reg | 0x0100);
-+ reg = wm8731_read_reg_cache(codec, WM8731_LINVOL);
-+ wm8731_write(codec, WM8731_LINVOL, reg | 0x0100);
-+ reg = wm8731_read_reg_cache(codec, WM8731_RINVOL);
-+ wm8731_write(codec, WM8731_RINVOL, reg | 0x0100);
-+
-+ wm8731_add_controls(codec);
-+ wm8731_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8731_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8731 2 wire address is determined by GPIO5
-+ * state during powerup.
-+ * low = 0x1a
-+ * high = 0x1b
-+ */
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8731_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int wm8731_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8731_socdev;
-+ struct wm8731_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if (ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8731_init(socdev);
-+ if (ret < 0) {
-+ err("failed to initialise WM8731\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int wm8731_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec* codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int wm8731_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8731_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8731_i2c_driver = {
-+ .driver = {
-+ .name = "WM8731 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8731,
-+ .attach_adapter = wm8731_i2c_attach,
-+ .detach_client = wm8731_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8731",
-+ .driver = &wm8731_i2c_driver,
-+};
-+#endif
-+
-+static int wm8731_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8731_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8731 Audio Codec %s", WM8731_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8731_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8731_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8731_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8731_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8731_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8731 = {
-+ .probe = wm8731_probe,
-+ .remove = wm8731_remove,
-+ .suspend = wm8731_suspend,
-+ .resume = wm8731_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8731);
-+
-+MODULE_DESCRIPTION("ASoC WM8731 driver");
-+MODULE_AUTHOR("Richard Purdie");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8731.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8731.h
-@@ -0,0 +1,41 @@
-+/*
-+ * wm8731.h -- WM8731 Soc Audio driver
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@openedhand.com>
-+ *
-+ * Based on wm8753.h
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _WM8731_H
-+#define _WM8731_H
-+
-+/* WM8731 register space */
-+
-+#define WM8731_LINVOL 0x00
-+#define WM8731_RINVOL 0x01
-+#define WM8731_LOUT1V 0x02
-+#define WM8731_ROUT1V 0x03
-+#define WM8731_APANA 0x04
-+#define WM8731_APDIGI 0x05
-+#define WM8731_PWR 0x06
-+#define WM8731_IFACE 0x07
-+#define WM8731_SRATE 0x08
-+#define WM8731_ACTIVE 0x09
-+#define WM8731_RESET 0x0f
-+
-+#define WM8731_CACHEREGNUM 10
-+
-+struct wm8731_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8731_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8731;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8750.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8750.c
-@@ -0,0 +1,1282 @@
-+/*
-+ * wm8750.c -- WM8750 ALSA SoC audio driver
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@openedhand.com>
-+ *
-+ * Based on WM8753.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8750.h"
-+
-+#define AUDIO_NAME "WM8750"
-+#define WM8750_VERSION "0.11"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8750_DEBUG 0
-+
-+#ifdef WM8750_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+static struct workqueue_struct *wm8750_workq = NULL;
-+static struct work_struct wm8750_dapm_work;
-+
-+/*
-+ * wm8750 register cache
-+ * We can't read the WM8750 register space when we
-+ * are using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8750_reg[] = {
-+ 0x0097, 0x0097, 0x0079, 0x0079, /* 0 */
-+ 0x0000, 0x0008, 0x0000, 0x000a, /* 4 */
-+ 0x0000, 0x0000, 0x00ff, 0x00ff, /* 8 */
-+ 0x000f, 0x000f, 0x0000, 0x0000, /* 12 */
-+ 0x0000, 0x007b, 0x0000, 0x0032, /* 16 */
-+ 0x0000, 0x00c3, 0x00c3, 0x00c0, /* 20 */
-+ 0x0000, 0x0000, 0x0000, 0x0000, /* 24 */
-+ 0x0000, 0x0000, 0x0000, 0x0000, /* 28 */
-+ 0x0000, 0x0000, 0x0050, 0x0050, /* 32 */
-+ 0x0050, 0x0050, 0x0050, 0x0050, /* 36 */
-+ 0x0079, 0x0079, 0x0079, /* 40 */
-+};
-+
-+#define WM8750_HIFI_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8750_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8750_HIFI_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+#define WM8750_HIFI_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+#define WM8750_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+static struct snd_soc_dai_mode wm8750_modes[] = {
-+ /* common codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1408,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 2304,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 2112,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1500,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* 11.025k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1024,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1088,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* 16k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 768,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1152,
-+ .bfs = WM8750_HIFI_FSB
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 750,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* 22.05k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 512,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 768,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 544,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* 32k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 576,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 375,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* 44.1k & 48k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 272,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 250,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* 88.2k & 96k */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 128,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 192,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 136,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 125,
-+ .bfs = WM8750_HIFI_FSB,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8750_HIFI_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8750_HIFI_BITS,
-+ .pcmrate = WM8750_HIFI_RATES,
-+ .pcmdir = WM8750_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8750 register cache
-+ */
-+static inline unsigned int wm8750_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg > WM8750_CACHE_REGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8750 register cache
-+ */
-+static inline void wm8750_write_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg > WM8750_CACHE_REGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+static int wm8750_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8753 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8750_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8750_reset(c) wm8750_write(c, WM8750_RESET, 0)
-+
-+/*
-+ * WM8750 Controls
-+ */
-+static const char *wm8750_bass[] = {"Linear Control", "Adaptive Boost"};
-+static const char *wm8750_bass_filter[] = { "130Hz @ 48kHz", "200Hz @ 48kHz" };
-+static const char *wm8750_treble[] = {"8kHz", "4kHz"};
-+static const char *wm8750_3d_lc[] = {"200Hz", "500Hz"};
-+static const char *wm8750_3d_uc[] = {"2.2kHz", "1.5kHz"};
-+static const char *wm8750_3d_func[] = {"Capture", "Playback"};
-+static const char *wm8750_alc_func[] = {"Off", "Right", "Left", "Stereo"};
-+static const char *wm8750_ng_type[] = {"Constant PGA Gain",
-+ "Mute ADC Output"};
-+static const char *wm8750_line_mux[] = {"Line 1", "Line 2", "Line 3", "PGA",
-+ "Differential"};
-+static const char *wm8750_pga_sel[] = {"Line 1", "Line 2", "Line 3",
-+ "Differential"};
-+static const char *wm8750_out3[] = {"VREF", "ROUT1 + Vol", "MonoOut",
-+ "ROUT1"};
-+static const char *wm8750_diff_sel[] = {"Line 1", "Line 2"};
-+static const char *wm8750_adcpol[] = {"Normal", "L Invert", "R Invert",
-+ "L + R Invert"};
-+static const char *wm8750_deemph[] = {"None", "32Khz", "44.1Khz", "48Khz"};
-+static const char *wm8750_mono_mux[] = {"Stereo", "Mono (Left)",
-+ "Mono (Right)", "Digital Mono"};
-+
-+static const struct soc_enum wm8750_enum[] = {
-+SOC_ENUM_SINGLE(WM8750_BASS, 7, 2, wm8750_bass),
-+SOC_ENUM_SINGLE(WM8750_BASS, 6, 2, wm8750_bass_filter),
-+SOC_ENUM_SINGLE(WM8750_TREBLE, 6, 2, wm8750_treble),
-+SOC_ENUM_SINGLE(WM8750_3D, 5, 2, wm8750_3d_lc),
-+SOC_ENUM_SINGLE(WM8750_3D, 6, 2, wm8750_3d_uc),
-+SOC_ENUM_SINGLE(WM8750_3D, 7, 2, wm8750_3d_func),
-+SOC_ENUM_SINGLE(WM8750_ALC1, 7, 4, wm8750_alc_func),
-+SOC_ENUM_SINGLE(WM8750_NGATE, 1, 2, wm8750_ng_type),
-+SOC_ENUM_SINGLE(WM8750_LOUTM1, 0, 5, wm8750_line_mux),
-+SOC_ENUM_SINGLE(WM8750_ROUTM1, 0, 5, wm8750_line_mux),
-+SOC_ENUM_SINGLE(WM8750_LADCIN, 6, 4, wm8750_pga_sel), /* 10 */
-+SOC_ENUM_SINGLE(WM8750_RADCIN, 6, 4, wm8750_pga_sel),
-+SOC_ENUM_SINGLE(WM8750_ADCTL2, 7, 4, wm8750_out3),
-+SOC_ENUM_SINGLE(WM8750_ADCIN, 8, 2, wm8750_diff_sel),
-+SOC_ENUM_SINGLE(WM8750_ADCDAC, 5, 4, wm8750_adcpol),
-+SOC_ENUM_SINGLE(WM8750_ADCDAC, 1, 4, wm8750_deemph),
-+SOC_ENUM_SINGLE(WM8750_ADCIN, 6, 4, wm8750_mono_mux), /* 16 */
-+
-+};
-+
-+static const struct snd_kcontrol_new wm8750_snd_controls[] = {
-+
-+SOC_DOUBLE_R("Capture Volume", WM8750_LINVOL, WM8750_RINVOL, 0, 63, 0),
-+SOC_DOUBLE_R("Capture ZC Switch", WM8750_LINVOL, WM8750_RINVOL, 6, 1, 0),
-+SOC_DOUBLE_R("Capture Switch", WM8750_LINVOL, WM8750_RINVOL, 7, 1, 1),
-+
-+SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8750_LOUT1V,
-+ WM8750_ROUT1V, 7, 1, 0),
-+SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8750_LOUT2V,
-+ WM8750_ROUT2V, 7, 1, 0),
-+
-+SOC_ENUM("Playback De-emphasis", wm8750_enum[15]),
-+
-+SOC_ENUM("Capture Polarity", wm8750_enum[14]),
-+SOC_SINGLE("Playback 6dB Attenuate", WM8750_ADCDAC, 7, 1, 0),
-+SOC_SINGLE("Capture 6dB Attenuate", WM8750_ADCDAC, 8, 1, 0),
-+
-+SOC_DOUBLE_R("PCM Volume", WM8750_LDAC, WM8750_RDAC, 0, 255, 0),
-+
-+SOC_ENUM("Bass Boost", wm8750_enum[0]),
-+SOC_ENUM("Bass Filter", wm8750_enum[1]),
-+SOC_SINGLE("Bass Volume", WM8750_BASS, 0, 15, 1),
-+
-+SOC_SINGLE("Treble Volume", WM8750_TREBLE, 0, 15, 0),
-+SOC_ENUM("Treble Cut-off", wm8750_enum[2]),
-+
-+SOC_SINGLE("3D Switch", WM8750_3D, 0, 1, 0),
-+SOC_SINGLE("3D Volume", WM8750_3D, 1, 15, 0),
-+SOC_ENUM("3D Lower Cut-off", wm8750_enum[3]),
-+SOC_ENUM("3D Upper Cut-off", wm8750_enum[4]),
-+SOC_ENUM("3D Mode", wm8750_enum[5]),
-+
-+SOC_SINGLE("ALC Capture Target Volume", WM8750_ALC1, 0, 7, 0),
-+SOC_SINGLE("ALC Capture Max Volume", WM8750_ALC1, 4, 7, 0),
-+SOC_ENUM("ALC Capture Function", wm8750_enum[6]),
-+SOC_SINGLE("ALC Capture ZC Switch", WM8750_ALC2, 7, 1, 0),
-+SOC_SINGLE("ALC Capture Hold Time", WM8750_ALC2, 0, 15, 0),
-+SOC_SINGLE("ALC Capture Decay Time", WM8750_ALC3, 4, 15, 0),
-+SOC_SINGLE("ALC Capture Attack Time", WM8750_ALC3, 0, 15, 0),
-+SOC_SINGLE("ALC Capture NG Threshold", WM8750_NGATE, 3, 31, 0),
-+SOC_ENUM("ALC Capture NG Type", wm8750_enum[4]),
-+SOC_SINGLE("ALC Capture NG Switch", WM8750_NGATE, 0, 1, 0),
-+
-+SOC_SINGLE("Left ADC Capture Volume", WM8750_LADC, 0, 255, 0),
-+SOC_SINGLE("Right ADC Capture Volume", WM8750_RADC, 0, 255, 0),
-+
-+SOC_SINGLE("ZC Timeout Switch", WM8750_ADCTL1, 0, 1, 0),
-+SOC_SINGLE("Playback Invert Switch", WM8750_ADCTL1, 1, 1, 0),
-+
-+SOC_SINGLE("Right Speaker Playback Invert Switch", WM8750_ADCTL2, 4, 1, 0),
-+
-+/* Unimplemented */
-+/* ADCDAC Bit 0 - ADCHPD */
-+/* ADCDAC Bit 4 - HPOR */
-+/* ADCTL1 Bit 2,3 - DATSEL */
-+/* ADCTL1 Bit 4,5 - DMONOMIX */
-+/* ADCTL1 Bit 6,7 - VSEL */
-+/* ADCTL2 Bit 2 - LRCM */
-+/* ADCTL2 Bit 3 - TRI */
-+/* ADCTL3 Bit 5 - HPFLREN */
-+/* ADCTL3 Bit 6 - VROI */
-+/* ADCTL3 Bit 7,8 - ADCLRM */
-+/* ADCIN Bit 4 - LDCM */
-+/* ADCIN Bit 5 - RDCM */
-+
-+SOC_DOUBLE_R("Mic Boost", WM8750_LADCIN, WM8750_RADCIN, 4, 3, 0),
-+
-+SOC_DOUBLE_R("Bypass Left Playback Volume", WM8750_LOUTM1,
-+ WM8750_LOUTM2, 4, 7, 1),
-+SOC_DOUBLE_R("Bypass Right Playback Volume", WM8750_ROUTM1,
-+ WM8750_ROUTM2, 4, 7, 1),
-+SOC_DOUBLE_R("Bypass Mono Playback Volume", WM8750_MOUTM1,
-+ WM8750_MOUTM2, 4, 7, 1),
-+
-+SOC_SINGLE("Mono Playback ZC Switch", WM8750_MOUTV, 7, 1, 0),
-+
-+SOC_DOUBLE_R("Headphone Playback Volume", WM8750_LOUT1V, WM8750_ROUT1V,
-+ 0, 127, 0),
-+SOC_DOUBLE_R("Speaker Playback Volume", WM8750_LOUT2V, WM8750_ROUT2V,
-+ 0, 127, 0),
-+
-+SOC_SINGLE("Mono Playback Volume", WM8750_MOUTV, 0, 127, 0),
-+
-+};
-+
-+/* add non dapm controls */
-+static int wm8750_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8750_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8750_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * DAPM Controls
-+ */
-+
-+/* Left Mixer */
-+static const struct snd_kcontrol_new wm8750_left_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Playback Switch", WM8750_LOUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Left Bypass Switch", WM8750_LOUTM1, 7, 1, 0),
-+SOC_DAPM_SINGLE("Right Playback Switch", WM8750_LOUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Bypass Switch", WM8750_LOUTM2, 7, 1, 0),
-+};
-+
-+/* Right Mixer */
-+static const struct snd_kcontrol_new wm8750_right_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left Playback Switch", WM8750_ROUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Left Bypass Switch", WM8750_ROUTM1, 7, 1, 0),
-+SOC_DAPM_SINGLE("Playback Switch", WM8750_ROUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Bypass Switch", WM8750_ROUTM2, 7, 1, 0),
-+};
-+
-+/* Mono Mixer */
-+static const struct snd_kcontrol_new wm8750_mono_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left Playback Switch", WM8750_MOUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Left Bypass Switch", WM8750_MOUTM1, 7, 1, 0),
-+SOC_DAPM_SINGLE("Right Playback Switch", WM8750_MOUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Bypass Switch", WM8750_MOUTM2, 7, 1, 0),
-+};
-+
-+/* Left Line Mux */
-+static const struct snd_kcontrol_new wm8750_left_line_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[8]);
-+
-+/* Right Line Mux */
-+static const struct snd_kcontrol_new wm8750_right_line_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[9]);
-+
-+/* Left PGA Mux */
-+static const struct snd_kcontrol_new wm8750_left_pga_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[10]);
-+
-+/* Right PGA Mux */
-+static const struct snd_kcontrol_new wm8750_right_pga_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[11]);
-+
-+/* Out 3 Mux */
-+static const struct snd_kcontrol_new wm8750_out3_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[12]);
-+
-+/* Differential Mux */
-+static const struct snd_kcontrol_new wm8750_diffmux_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[13]);
-+
-+/* Mono ADC Mux */
-+static const struct snd_kcontrol_new wm8750_monomux_controls =
-+SOC_DAPM_ENUM("Route", wm8750_enum[16]);
-+
-+static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = {
-+ SND_SOC_DAPM_MIXER("Left Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8750_left_mixer_controls[0],
-+ ARRAY_SIZE(wm8750_left_mixer_controls)),
-+ SND_SOC_DAPM_MIXER("Right Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8750_right_mixer_controls[0],
-+ ARRAY_SIZE(wm8750_right_mixer_controls)),
-+ SND_SOC_DAPM_MIXER("Mono Mixer", WM8750_PWR2, 2, 0,
-+ &wm8750_mono_mixer_controls[0],
-+ ARRAY_SIZE(wm8750_mono_mixer_controls)),
-+
-+ SND_SOC_DAPM_PGA("Right Out 2", WM8750_PWR2, 3, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Left Out 2", WM8750_PWR2, 4, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Right Out 1", WM8750_PWR2, 5, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Left Out 1", WM8750_PWR2, 6, 0, NULL, 0),
-+ SND_SOC_DAPM_DAC("Right DAC", "Right Playback", WM8750_PWR2, 7, 0),
-+ SND_SOC_DAPM_DAC("Left DAC", "Left Playback", WM8750_PWR2, 8, 0),
-+
-+ SND_SOC_DAPM_MICBIAS("Mic Bias", WM8750_PWR1, 1, 0),
-+ SND_SOC_DAPM_ADC("Right ADC", "Right Capture", WM8750_PWR1, 2, 0),
-+ SND_SOC_DAPM_ADC("Left ADC", "Left Capture", WM8750_PWR1, 3, 0),
-+
-+ SND_SOC_DAPM_MUX("Left PGA Mux", WM8750_PWR1, 5, 0,
-+ &wm8750_left_pga_controls),
-+ SND_SOC_DAPM_MUX("Right PGA Mux", WM8750_PWR1, 4, 0,
-+ &wm8750_right_pga_controls),
-+ SND_SOC_DAPM_MUX("Left Line Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8750_left_line_controls),
-+ SND_SOC_DAPM_MUX("Right Line Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8750_right_line_controls),
-+
-+ SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0, &wm8750_out3_controls),
-+ SND_SOC_DAPM_PGA("Out 3", WM8750_PWR2, 1, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Mono Out 1", WM8750_PWR2, 2, 0, NULL, 0),
-+
-+ SND_SOC_DAPM_MUX("Differential Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8750_diffmux_controls),
-+ SND_SOC_DAPM_MUX("Left ADC Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8750_monomux_controls),
-+ SND_SOC_DAPM_MUX("Right ADC Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8750_monomux_controls),
-+
-+ SND_SOC_DAPM_OUTPUT("LOUT1"),
-+ SND_SOC_DAPM_OUTPUT("ROUT1"),
-+ SND_SOC_DAPM_OUTPUT("LOUT2"),
-+ SND_SOC_DAPM_OUTPUT("ROUT2"),
-+ SND_SOC_DAPM_OUTPUT("MONO"),
-+ SND_SOC_DAPM_OUTPUT("OUT3"),
-+
-+ SND_SOC_DAPM_INPUT("LINPUT1"),
-+ SND_SOC_DAPM_INPUT("LINPUT2"),
-+ SND_SOC_DAPM_INPUT("LINPUT3"),
-+ SND_SOC_DAPM_INPUT("RINPUT1"),
-+ SND_SOC_DAPM_INPUT("RINPUT2"),
-+ SND_SOC_DAPM_INPUT("RINPUT3"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* left mixer */
-+ {"Left Mixer", "Playback Switch", "Left DAC"},
-+ {"Left Mixer", "Left Bypass Switch", "Left Line Mux"},
-+ {"Left Mixer", "Right Playback Switch", "Right DAC"},
-+ {"Left Mixer", "Right Bypass Switch", "Right Line Mux"},
-+
-+ /* right mixer */
-+ {"Right Mixer", "Left Playback Switch", "Left DAC"},
-+ {"Right Mixer", "Left Bypass Switch", "Left Line Mux"},
-+ {"Right Mixer", "Playback Switch", "Right DAC"},
-+ {"Right Mixer", "Right Bypass Switch", "Right Line Mux"},
-+
-+ /* left out 1 */
-+ {"Left Out 1", NULL, "Left Mixer"},
-+ {"LOUT1", NULL, "Left Out 1"},
-+
-+ /* left out 2 */
-+ {"Left Out 2", NULL, "Left Mixer"},
-+ {"LOUT2", NULL, "Left Out 2"},
-+
-+ /* right out 1 */
-+ {"Right Out 1", NULL, "Right Mixer"},
-+ {"ROUT1", NULL, "Right Out 1"},
-+
-+ /* right out 2 */
-+ {"Right Out 2", NULL, "Right Mixer"},
-+ {"ROUT2", NULL, "Right Out 2"},
-+
-+ /* mono mixer */
-+ {"Mono Mixer", "Left Playback Switch", "Left DAC"},
-+ {"Mono Mixer", "Left Bypass Switch", "Left Line Mux"},
-+ {"Mono Mixer", "Right Playback Switch", "Right DAC"},
-+ {"Mono Mixer", "Right Bypass Switch", "Right Line Mux"},
-+
-+ /* mono out */
-+ {"Mono Out 1", NULL, "Mono Mixer"},
-+ {"MONO1", NULL, "Mono Out 1"},
-+
-+ /* out 3 */
-+ {"Out3 Mux", "VREF", "VREF"},
-+ {"Out3 Mux", "ROUT1 + Vol", "ROUT1"},
-+ {"Out3 Mux", "ROUT1", "Right Mixer"},
-+ {"Out3 Mux", "MonoOut", "MONO1"},
-+ {"Out 3", NULL, "Out3 Mux"},
-+ {"OUT3", NULL, "Out 3"},
-+
-+ /* Left Line Mux */
-+ {"Left Line Mux", "Line 1", "LINPUT1"},
-+ {"Left Line Mux", "Line 2", "LINPUT2"},
-+ {"Left Line Mux", "Line 3", "LINPUT3"},
-+ {"Left Line Mux", "PGA", "Left PGA Mux"},
-+ {"Left Line Mux", "Differential", "Differential Mux"},
-+
-+ /* Right Line Mux */
-+ {"Right Line Mux", "Line 1", "RINPUT1"},
-+ {"Right Line Mux", "Line 2", "RINPUT2"},
-+ {"Right Line Mux", "Line 3", "RINPUT3"},
-+ {"Right Line Mux", "PGA", "Right PGA Mux"},
-+ {"Right Line Mux", "Differential", "Differential Mux"},
-+
-+ /* Left PGA Mux */
-+ {"Left PGA Mux", "Line 1", "LINPUT1"},
-+ {"Left PGA Mux", "Line 2", "LINPUT2"},
-+ {"Left PGA Mux", "Line 3", "LINPUT3"},
-+ {"Left PGA Mux", "Differential", "Differential Mux"},
-+
-+ /* Right PGA Mux */
-+ {"Right PGA Mux", "Line 1", "RINPUT1"},
-+ {"Right PGA Mux", "Line 2", "RINPUT2"},
-+ {"Right PGA Mux", "Line 3", "RINPUT3"},
-+ {"Right PGA Mux", "Differential", "Differential Mux"},
-+
-+ /* Differential Mux */
-+ {"Differential Mux", "Line 1", "LINPUT1"},
-+ {"Differential Mux", "Line 1", "RINPUT1"},
-+ {"Differential Mux", "Line 2", "LINPUT2"},
-+ {"Differential Mux", "Line 2", "RINPUT2"},
-+
-+ /* Left ADC Mux */
-+ {"Left ADC Mux", "Stereo", "Left PGA Mux"},
-+ {"Left ADC Mux", "Mono (Left)", "Left PGA Mux"},
-+ {"Left ADC Mux", "Digital Mono", "Left PGA Mux"},
-+
-+ /* Right ADC Mux */
-+ {"Right ADC Mux", "Stereo", "Right PGA Mux"},
-+ {"Right ADC Mux", "Mono (Right)", "Right PGA Mux"},
-+ {"Right ADC Mux", "Digital Mono", "Right PGA Mux"},
-+
-+ /* ADC */
-+ {"Left ADC", NULL, "Left ADC Mux"},
-+ {"Right ADC", NULL, "Right ADC Mux"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8750_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct _coeff_div {
-+ u32 mclk;
-+ u32 rate;
-+ u16 fs;
-+ u8 sr:5;
-+ u8 usb:1;
-+};
-+
-+/* codec hifi mclk clock divider coefficients */
-+static const struct _coeff_div coeff_div[] = {
-+ /* 8k */
-+ {12288000, 8000, 1536, 0x6, 0x0},
-+ {11289600, 8000, 1408, 0x16, 0x0},
-+ {18432000, 8000, 2304, 0x7, 0x0},
-+ {16934400, 8000, 2112, 0x17, 0x0},
-+ {12000000, 8000, 1500, 0x6, 0x1},
-+
-+ /* 11.025k */
-+ {11289600, 11025, 1024, 0x18, 0x0},
-+ {16934400, 11025, 1536, 0x19, 0x0},
-+ {12000000, 11025, 1088, 0x19, 0x1},
-+
-+ /* 16k */
-+ {12288000, 16000, 768, 0xa, 0x0},
-+ {18432000, 16000, 1152, 0xb, 0x0},
-+ {12000000, 16000, 750, 0xa, 0x1},
-+
-+ /* 22.05k */
-+ {11289600, 22050, 512, 0x1a, 0x0},
-+ {16934400, 22050, 768, 0x1b, 0x0},
-+ {12000000, 22050, 544, 0x1b, 0x1},
-+
-+ /* 32k */
-+ {12288000, 32000, 384, 0xc, 0x0},
-+ {18432000, 32000, 576, 0xd, 0x0},
-+ {12000000, 32000, 375, 0xa, 0x1},
-+
-+ /* 44.1k */
-+ {11289600, 44100, 256, 0x10, 0x0},
-+ {16934400, 44100, 384, 0x11, 0x0},
-+ {12000000, 44100, 272, 0x11, 0x1},
-+
-+ /* 48k */
-+ {12288000, 48000, 256, 0x0, 0x0},
-+ {18432000, 48000, 384, 0x1, 0x0},
-+ {12000000, 48000, 250, 0x0, 0x1},
-+
-+ /* 88.2k */
-+ {11289600, 88200, 128, 0x1e, 0x0},
-+ {16934400, 88200, 192, 0x1f, 0x0},
-+ {12000000, 88200, 136, 0x1f, 0x1},
-+
-+ /* 96k */
-+ {12288000, 96000, 128, 0xe, 0x0},
-+ {18432000, 96000, 192, 0xf, 0x0},
-+ {12000000, 96000, 125, 0xe, 0x1},
-+};
-+
-+static inline int get_coeff(int mclk, int rate)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
-+ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
-+ return i;
-+ }
-+
-+ printk(KERN_ERR "wm8750: could not get coeff for mclk %d @ rate %d\n",
-+ mclk, rate);
-+ return -EINVAL;
-+}
-+
-+/* WM8750 supports numerous input clocks per sample rate */
-+static unsigned int wm8750_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ dai->mclk = clk;
-+ return dai->mclk;
-+}
-+
-+static int wm8750_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 iface = 0, bfs, srate = 0;
-+ int i = get_coeff(rtd->codec_dai->mclk,
-+ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
-+
-+ /* is coefficient valid ? */
-+ if (i < 0)
-+ return i;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ iface = 0x0040;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ iface |= 0x0013;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x000c;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0090;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0010;
-+ break;
-+ }
-+
-+ /* set bclk divisor rate */
-+ switch (bfs) {
-+ case 1:
-+ break;
-+ case 4:
-+ srate |= (0x1 << 7);
-+ break;
-+ case 8:
-+ srate |= (0x2 << 7);
-+ break;
-+ case 16:
-+ srate |= (0x3 << 7);
-+ break;
-+ }
-+
-+ /* set iface & srate */
-+ wm8750_write(codec, WM8750_IFACE, iface);
-+ wm8750_write(codec, WM8750_SRATE, srate |
-+ (coeff_div[i].sr << 1) | coeff_div[i].usb);
-+
-+ return 0;
-+}
-+
-+static int wm8750_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8750_read_reg_cache(codec, WM8750_ADCDAC) & 0xfff7;
-+ if (mute)
-+ wm8750_write(codec, WM8750_ADCDAC, mute_reg | 0x8);
-+ else
-+ wm8750_write(codec, WM8750_ADCDAC, mute_reg);
-+ return 0;
-+}
-+
-+static int wm8750_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 pwr_reg = wm8750_read_reg_cache(codec, WM8750_PWR1) & 0xfe3e;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* set vmid to 50k and unmute dac */
-+ wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x00c0);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ /* set vmid to 5k for quick power up */
-+ wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x01c1);
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* mute dac and set vmid to 500k, enable VREF */
-+ wm8750_write(codec, WM8750_PWR1, pwr_reg | 0x0141);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ wm8750_write(codec, WM8750_PWR1, 0x0001);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8750_dai = {
-+ .name = "WM8750",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8750_config_sysclk,
-+ .digital_mute = wm8750_mute,
-+ .ops = {
-+ .prepare = wm8750_pcm_prepare,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8750_modes),
-+ .mode = wm8750_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8750_dai);
-+
-+static void wm8750_work(void *data)
-+{
-+ struct snd_soc_codec *codec = (struct snd_soc_codec *)data;
-+ wm8750_dapm_event(codec, codec->dapm_state);
-+}
-+
-+static int wm8750_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8750_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8750_reg); i++) {
-+ if (i == WM8750_RESET)
-+ continue;
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+
-+ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* charge wm8750 caps */
-+ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0) {
-+ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D2);
-+ codec->dapm_state = SNDRV_CTL_POWER_D0;
-+ queue_delayed_work(wm8750_workq, &wm8750_dapm_work,
-+ msecs_to_jiffies(1000));
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8750 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8750_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg, ret = 0;
-+
-+ codec->name = "WM8750";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8750_read_reg_cache;
-+ codec->write = wm8750_write;
-+ codec->dapm_event = wm8750_dapm_event;
-+ codec->dai = &wm8750_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8750_reg);
-+
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8750_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8750_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8750_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8750_reg);
-+
-+ wm8750_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* charge output caps */
-+ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D2);
-+ codec->dapm_state = SNDRV_CTL_POWER_D3hot;
-+ queue_delayed_work(wm8750_workq, &wm8750_dapm_work,
-+ msecs_to_jiffies(1000));
-+
-+ /* set the update bits */
-+ reg = wm8750_read_reg_cache(codec, WM8750_LDAC);
-+ wm8750_write(codec, WM8750_LDAC, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_RDAC);
-+ wm8750_write(codec, WM8750_RDAC, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_LOUT1V);
-+ wm8750_write(codec, WM8750_LOUT1V, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_ROUT1V);
-+ wm8750_write(codec, WM8750_ROUT1V, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_LOUT2V);
-+ wm8750_write(codec, WM8750_LOUT2V, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_ROUT2V);
-+ wm8750_write(codec, WM8750_ROUT2V, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_LINVOL);
-+ wm8750_write(codec, WM8750_LINVOL, reg | 0x0100);
-+ reg = wm8750_read_reg_cache(codec, WM8750_RINVOL);
-+ wm8750_write(codec, WM8750_RINVOL, reg | 0x0100);
-+
-+ wm8750_add_controls(codec);
-+ wm8750_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+static struct snd_soc_device *wm8750_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8731 2 wire address is determined by GPIO5
-+ * state during powerup.
-+ * low = 0x1a
-+ * high = 0x1b
-+ */
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8750_i2c_driver;
-+static struct i2c_client client_template;
-+
-+static int wm8750_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8750_socdev;
-+ struct wm8750_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if (ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8750_init(socdev);
-+ if (ret < 0) {
-+ err("failed to initialise WM8750\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int wm8750_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec *codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int wm8750_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8750_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8750_i2c_driver = {
-+ .driver = {
-+ .name = "WM8750 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8750,
-+ .attach_adapter = wm8750_i2c_attach,
-+ .detach_client = wm8750_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8750",
-+ .driver = &wm8750_i2c_driver,
-+};
-+#endif
-+
-+static int wm8750_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8750_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8750 Audio Codec %s", WM8750_VERSION);
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+ wm8750_socdev = socdev;
-+ INIT_WORK(&wm8750_dapm_work, wm8750_work, codec);
-+ wm8750_workq = create_workqueue("wm8750");
-+ if (wm8750_workq == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8750_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8750_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8750_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ if (wm8750_workq)
-+ destroy_workqueue(wm8750_workq);
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8750_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8750 = {
-+ .probe = wm8750_probe,
-+ .remove = wm8750_remove,
-+ .suspend = wm8750_suspend,
-+ .resume = wm8750_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8750);
-+
-+MODULE_DESCRIPTION("ASoC WM8750 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8750.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8750.h
-@@ -0,0 +1,66 @@
-+/*
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <richard@openedhand.com>
-+ *
-+ * Based on WM8753.h
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#ifndef _WM8750_H
-+#define _WM8750_H
-+
-+/* WM8750 register space */
-+
-+#define WM8750_LINVOL 0x00
-+#define WM8750_RINVOL 0x01
-+#define WM8750_LOUT1V 0x02
-+#define WM8750_ROUT1V 0x03
-+#define WM8750_ADCDAC 0x05
-+#define WM8750_IFACE 0x07
-+#define WM8750_SRATE 0x08
-+#define WM8750_LDAC 0x0a
-+#define WM8750_RDAC 0x0b
-+#define WM8750_BASS 0x0c
-+#define WM8750_TREBLE 0x0d
-+#define WM8750_RESET 0x0f
-+#define WM8750_3D 0x10
-+#define WM8750_ALC1 0x11
-+#define WM8750_ALC2 0x12
-+#define WM8750_ALC3 0x13
-+#define WM8750_NGATE 0x14
-+#define WM8750_LADC 0x15
-+#define WM8750_RADC 0x16
-+#define WM8750_ADCTL1 0x17
-+#define WM8750_ADCTL2 0x18
-+#define WM8750_PWR1 0x19
-+#define WM8750_PWR2 0x1a
-+#define WM8750_ADCTL3 0x1b
-+#define WM8750_ADCIN 0x1f
-+#define WM8750_LADCIN 0x20
-+#define WM8750_RADCIN 0x21
-+#define WM8750_LOUTM1 0x22
-+#define WM8750_LOUTM2 0x23
-+#define WM8750_ROUTM1 0x24
-+#define WM8750_ROUTM2 0x25
-+#define WM8750_MOUTM1 0x26
-+#define WM8750_MOUTM2 0x27
-+#define WM8750_LOUT2V 0x28
-+#define WM8750_ROUT2V 0x29
-+#define WM8750_MOUTV 0x2a
-+
-+#define WM8750_CACHE_REGNUM 0x2a
-+
-+struct wm8750_setup_data {
-+ unsigned short i2c_address;
-+ unsigned int mclk;
-+};
-+
-+extern struct snd_soc_codec_dai wm8750_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8750;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8753.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8753.c
-@@ -0,0 +1,2128 @@
-+/*
-+ * wm8753.c -- WM8753 ALSA Soc Audio driver
-+ *
-+ * Copyright 2003 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Notes:
-+ * The WM8753 is a low power, high quality stereo codec with integrated PCM
-+ * codec designed for portable digital telephony applications.
-+ *
-+ * Dual DAI:-
-+ *
-+ * This driver support 2 DAI PCM's. This makes the default PCM available for
-+ * HiFi audio (e.g. MP3, ogg) playback/capture and the other PCM available for
-+ * voice.
-+ *
-+ * Please note that the voice PCM can be connected directly to a Bluetooth
-+ * codec or GSM modem and thus cannot be read or written to, although it is
-+ * available to be configured with snd_hw_params(), etc and kcontrols in the
-+ * normal alsa manner.
-+ *
-+ * Fast DAI switching:-
-+ *
-+ * The driver can now fast switch between the DAI configurations via a
-+ * an alsa kcontrol. This allows the PCM to remain open.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8753.h"
-+
-+#define AUDIO_NAME "wm8753"
-+#define WM8753_VERSION "0.16"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8753_DEBUG 0
-+
-+#ifdef WM8753_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+static int caps_charge = 2000;
-+module_param(caps_charge, int, 0);
-+MODULE_PARM_DESC(caps_charge, "WM8753 cap charge time (msecs)");
-+
-+static struct workqueue_struct *wm8753_workq = NULL;
-+static struct work_struct wm8753_dapm_work;
-+static void wm8753_set_dai_mode(struct snd_soc_codec *codec,
-+ unsigned int mode);
-+
-+/*
-+ * wm8753 register cache
-+ * We can't read the WM8753 register space when we
-+ * are using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8753_reg[] = {
-+ 0x0008, 0x0000, 0x000a, 0x000a,
-+ 0x0033, 0x0000, 0x0007, 0x00ff,
-+ 0x00ff, 0x000f, 0x000f, 0x007b,
-+ 0x0000, 0x0032, 0x0000, 0x00c3,
-+ 0x00c3, 0x00c0, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0055,
-+ 0x0005, 0x0050, 0x0055, 0x0050,
-+ 0x0055, 0x0050, 0x0055, 0x0079,
-+ 0x0079, 0x0079, 0x0079, 0x0079,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0097, 0x0097, 0x0000, 0x0004,
-+ 0x0000, 0x0083, 0x0024, 0x01ba,
-+ 0x0000, 0x0083, 0x0024, 0x01ba,
-+ 0x0000, 0x0000
-+};
-+
-+#define WM8753_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8753_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8753_HIFI_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+#define WM8753_HIFI_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+#define WM8753_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+/*
-+ * HiFi modes
-+ */
-+static struct snd_soc_dai_mode wm8753_hifi_modes[] = {
-+ /* codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1408,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 2304,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 2112,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1500,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* 11.025k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1024,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1088,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* 16k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 768,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt= WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1152,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 750,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* 22.05k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 512,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 768,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 544,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* 32k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 576,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 375,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* 44.1k & 48k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 250,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 272,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* 88.2k & 96k */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 128,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 192,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 136,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 125,
-+ .bfs = WM8753_HIFI_FSB,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = WM8753_HIFI_RATES,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+#define WM8753_VOICE_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+#define WM8753_VOICE_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+#define WM8753_VOICE_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+/*
-+ * Voice modes
-+ */
-+static struct snd_soc_dai_mode wm8753_voice_modes[] = {
-+
-+ /* master modes */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_VOICE_BITS,
-+ .pcmrate = WM8753_VOICE_RATES,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM8753_VOICE_FSB,
-+ },
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM8753_VOICE_BITS,
-+ .pcmrate = WM8753_VOICE_RATES,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8753_VOICE_FSB,
-+ },
-+
-+ /* slave modes */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8753_VOICE_BITS,
-+ .pcmrate = WM8753_VOICE_RATES,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+
-+/*
-+ * Mode 4
-+ */
-+static struct snd_soc_dai_mode wm8753_mixed_modes[] = {
-+ /* slave modes */
-+ {
-+ .fmt = WM8753_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8753_HIFI_BITS,
-+ .pcmrate = WM8753_HIFI_RATES,
-+ .pcmdir = WM8753_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8753 register cache
-+ */
-+static inline unsigned int wm8753_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg < 1 || reg > (ARRAY_SIZE(wm8753_reg) + 1))
-+ return -1;
-+ return cache[reg - 1];
-+}
-+
-+/*
-+ * write wm8753 register cache
-+ */
-+static inline void wm8753_write_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg < 1 || reg > 0x3f)
-+ return;
-+ cache[reg - 1] = value;
-+}
-+
-+/*
-+ * write to the WM8753 register space
-+ */
-+static int wm8753_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8753 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8753_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8753_reset(c) wm8753_write(c, WM8753_RESET, 0)
-+
-+/*
-+ * WM8753 Controls
-+ */
-+static const char *wm8753_base[] = {"Linear Control", "Adaptive Boost"};
-+static const char *wm8753_base_filter[] =
-+ {"130Hz @ 48kHz", "200Hz @ 48kHz", "100Hz @ 16kHz", "400Hz @ 48kHz",
-+ "100Hz @ 8kHz", "200Hz @ 8kHz"};
-+static const char *wm8753_treble[] = {"8kHz", "4kHz"};
-+static const char *wm8753_alc_func[] = {"Off", "Right", "Left", "Stereo"};
-+static const char *wm8753_ng_type[] = {"Constant PGA Gain", "Mute ADC Output"};
-+static const char *wm8753_3d_func[] = {"Capture", "Playback"};
-+static const char *wm8753_3d_uc[] = {"2.2kHz", "1.5kHz"};
-+static const char *wm8753_3d_lc[] = {"200Hz", "500Hz"};
-+static const char *wm8753_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz"};
-+static const char *wm8753_mono_mix[] = {"Stereo", "Left", "Right", "Mono"};
-+static const char *wm8753_dac_phase[] = {"Non Inverted", "Inverted"};
-+static const char *wm8753_line_mix[] = {"Line 1 + 2", "Line 1 - 2",
-+ "Line 1", "Line 2"};
-+static const char *wm8753_mono_mux[] = {"Line Mix", "Rx Mix"};
-+static const char *wm8753_right_mux[] = {"Line 2", "Rx Mix"};
-+static const char *wm8753_left_mux[] = {"Line 1", "Rx Mix"};
-+static const char *wm8753_rxmsel[] = {"RXP - RXN", "RXP + RXN", "RXP", "RXN"};
-+static const char *wm8753_sidetone_mux[] = {"Left PGA", "Mic 1", "Mic 2",
-+ "Right PGA"};
-+static const char *wm8753_mono2_src[] = {"Inverted Mono 1", "Left", "Right",
-+ "Left + Right"};
-+static const char *wm8753_out3[] = {"VREF", "ROUT2", "Left + Right"};
-+static const char *wm8753_out4[] = {"VREF", "Capture ST", "LOUT2"};
-+static const char *wm8753_radcsel[] = {"PGA", "Line or RXP-RXN", "Sidetone"};
-+static const char *wm8753_ladcsel[] = {"PGA", "Line or RXP-RXN", "Line"};
-+static const char *wm8753_mono_adc[] = {"Stereo", "Analogue Mix Left",
-+ "Analogue Mix Right", "Digital Mono Mix"};
-+static const char *wm8753_adc_hp[] = {"3.4Hz @ 48kHz", "82Hz @ 16k",
-+ "82Hz @ 8kHz", "170Hz @ 8kHz"};
-+static const char *wm8753_adc_filter[] = {"HiFi", "Voice"};
-+static const char *wm8753_mic_sel[] = {"Mic 1", "Mic 2", "Mic 3"};
-+static const char *wm8753_dai_mode[] = {"DAI 0", "DAI 1", "DAI 2", "DAI 3"};
-+
-+static const struct soc_enum wm8753_enum[] = {
-+SOC_ENUM_SINGLE(WM8753_BASS, 7, 2, wm8753_base), // 0
-+SOC_ENUM_SINGLE(WM8753_BASS, 4, 6, wm8753_base_filter), // 1
-+SOC_ENUM_SINGLE(WM8753_TREBLE, 6, 2, wm8753_treble), // 2
-+SOC_ENUM_SINGLE(WM8753_ALC1, 7, 4, wm8753_alc_func), // 3
-+SOC_ENUM_SINGLE(WM8753_NGATE, 1, 2, wm8753_ng_type), // 4
-+SOC_ENUM_SINGLE(WM8753_3D, 7, 2, wm8753_3d_func), // 5
-+SOC_ENUM_SINGLE(WM8753_3D, 6, 2, wm8753_3d_uc), // 6
-+SOC_ENUM_SINGLE(WM8753_3D, 5, 2, wm8753_3d_lc), // 7
-+SOC_ENUM_SINGLE(WM8753_DAC, 1, 4, wm8753_deemp), // 8
-+SOC_ENUM_SINGLE(WM8753_DAC, 4, 4, wm8753_mono_mix), // 9
-+SOC_ENUM_SINGLE(WM8753_DAC, 6, 2, wm8753_dac_phase), // 10
-+SOC_ENUM_SINGLE(WM8753_INCTL1, 3, 4, wm8753_line_mix), // 11
-+SOC_ENUM_SINGLE(WM8753_INCTL1, 2, 2, wm8753_mono_mux), // 12
-+SOC_ENUM_SINGLE(WM8753_INCTL1, 1, 2, wm8753_right_mux), // 13
-+SOC_ENUM_SINGLE(WM8753_INCTL1, 0, 2, wm8753_left_mux), // 14
-+SOC_ENUM_SINGLE(WM8753_INCTL2, 6, 4, wm8753_rxmsel), // 15
-+SOC_ENUM_SINGLE(WM8753_INCTL2, 4, 4, wm8753_sidetone_mux),// 16
-+SOC_ENUM_SINGLE(WM8753_OUTCTL, 7, 4, wm8753_mono2_src), // 17
-+SOC_ENUM_SINGLE(WM8753_OUTCTL, 0, 3, wm8753_out3), // 18
-+SOC_ENUM_SINGLE(WM8753_ADCTL2, 7, 3, wm8753_out4), // 19
-+SOC_ENUM_SINGLE(WM8753_ADCIN, 2, 3, wm8753_radcsel), // 20
-+SOC_ENUM_SINGLE(WM8753_ADCIN, 0, 3, wm8753_ladcsel), // 21
-+SOC_ENUM_SINGLE(WM8753_ADCIN, 4, 4, wm8753_mono_adc), // 22
-+SOC_ENUM_SINGLE(WM8753_ADC, 2, 4, wm8753_adc_hp), // 23
-+SOC_ENUM_SINGLE(WM8753_ADC, 4, 2, wm8753_adc_filter), // 24
-+SOC_ENUM_SINGLE(WM8753_MICBIAS, 6, 3, wm8753_mic_sel), // 25
-+SOC_ENUM_SINGLE(WM8753_IOCTL, 2, 4, wm8753_dai_mode), // 26
-+};
-+
-+
-+static int wm8753_get_dai(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ int mode = wm8753_read_reg_cache(codec, WM8753_IOCTL);
-+
-+ ucontrol->value.integer.value[0] = (mode & 0xc) >> 2;
-+ return 0;
-+}
-+
-+static int wm8753_set_dai(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ int mode = wm8753_read_reg_cache(codec, WM8753_IOCTL);
-+
-+ if (((mode &0xc) >> 2) == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ mode &= 0xfff3;
-+ mode |= (ucontrol->value.integer.value[0] << 2);
-+
-+ wm8753_write(codec, WM8753_IOCTL, mode);
-+ wm8753_set_dai_mode(codec, ucontrol->value.integer.value[0]);
-+ return 1;
-+}
-+
-+static const struct snd_kcontrol_new wm8753_snd_controls[] = {
-+SOC_DOUBLE_R("PCM Volume", WM8753_LDAC, WM8753_RDAC, 0, 255, 0),
-+
-+SOC_DOUBLE_R("ADC Capture Volume", WM8753_LADC, WM8753_RADC, 0, 63, 0),
-+SOC_DOUBLE_R("ADC Capture Switch", WM8753_LINVOL, WM8753_RINVOL, 7, 1, 0),
-+SOC_DOUBLE_R("ADC Capture ZC Switch", WM8753_LINVOL, WM8753_RINVOL, 6, 1, 0),
-+
-+SOC_DOUBLE_R("Headphone Playback Volume", WM8753_LOUT1V, WM8753_ROUT1V, 0, 127, 0),
-+SOC_DOUBLE_R("Speaker Playback Volume", WM8753_LOUT2V, WM8753_ROUT2V, 0, 127, 0),
-+
-+SOC_SINGLE("Mono Playback Volume", WM8753_MOUTV, 0, 127, 0),
-+
-+SOC_DOUBLE_R("Bypass Playback Volume", WM8753_LOUTM1, WM8753_ROUTM1, 4, 7, 1),
-+SOC_DOUBLE_R("Sidetone Playback Volume", WM8753_LOUTM2, WM8753_ROUTM2, 4, 7, 1),
-+SOC_DOUBLE_R("Voice Playback Volume", WM8753_LOUTM2, WM8753_ROUTM2, 0, 7, 1),
-+
-+SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8753_LOUT1V, WM8753_ROUT1V, 7, 1, 0),
-+SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8753_LOUT2V, WM8753_ROUT2V, 7, 1, 0),
-+
-+SOC_SINGLE("Mono Bypass Playback Volume", WM8753_MOUTM1, 4, 7, 1),
-+SOC_SINGLE("Mono Sidetone Playback Volume", WM8753_MOUTM2, 4, 7, 1),
-+SOC_SINGLE("Mono Voice Playback Volume", WM8753_MOUTM2, 4, 7, 1),
-+SOC_SINGLE("Mono Playback ZC Switch", WM8753_MOUTV, 7, 1, 0),
-+
-+SOC_ENUM("Bass Boost", wm8753_enum[0]),
-+SOC_ENUM("Bass Filter", wm8753_enum[1]),
-+SOC_SINGLE("Bass Volume", WM8753_BASS, 0, 7, 1),
-+
-+SOC_SINGLE("Treble Volume", WM8753_TREBLE, 0, 7, 0),
-+SOC_ENUM("Treble Cut-off", wm8753_enum[2]),
-+
-+SOC_DOUBLE("Sidetone Capture Volume", WM8753_RECMIX1, 0, 4, 7, 1),
-+SOC_SINGLE("Voice Sidetone Capture Volume", WM8753_RECMIX2, 0, 7, 1),
-+
-+SOC_DOUBLE_R("Capture Volume", WM8753_LINVOL, WM8753_RINVOL, 0, 63, 0),
-+SOC_DOUBLE_R("Capture ZC Switch", WM8753_LINVOL, WM8753_RINVOL, 6, 1, 0),
-+SOC_DOUBLE_R("Capture Switch", WM8753_LINVOL, WM8753_RINVOL, 7, 1, 0),
-+
-+SOC_ENUM("Capture Filter Select", wm8753_enum[23]),
-+SOC_ENUM("Capture Filter Cut-off", wm8753_enum[24]),
-+SOC_SINGLE("Capture Filter Switch", WM8753_ADC, 0, 1, 1),
-+
-+SOC_SINGLE("ALC Capture Target Volume", WM8753_ALC1, 0, 7, 0),
-+SOC_SINGLE("ALC Capture Max Volume", WM8753_ALC1, 4, 7, 0),
-+SOC_ENUM("ALC Capture Function", wm8753_enum[3]),
-+SOC_SINGLE("ALC Capture ZC Switch", WM8753_ALC2, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Hold Time", WM8753_ALC2, 0, 15, 1),
-+SOC_SINGLE("ALC Capture Decay Time", WM8753_ALC3, 4, 15, 1),
-+SOC_SINGLE("ALC Capture Attack Time", WM8753_ALC3, 0, 15, 0),
-+SOC_SINGLE("ALC Capture NG Threshold", WM8753_NGATE, 3, 31, 0),
-+SOC_ENUM("ALC Capture NG Type", wm8753_enum[4]),
-+SOC_SINGLE("ALC Capture NG Switch", WM8753_NGATE, 0, 1, 0),
-+
-+SOC_ENUM("3D Function", wm8753_enum[5]),
-+SOC_ENUM("3D Upper Cut-off", wm8753_enum[6]),
-+SOC_ENUM("3D Lower Cut-off", wm8753_enum[7]),
-+SOC_SINGLE("3D Volume", WM8753_3D, 1, 15, 0),
-+SOC_SINGLE("3D Switch", WM8753_3D, 0, 1, 0),
-+
-+SOC_SINGLE("Capture 6dB Attenuate", WM8753_ADCTL1, 2, 1, 0),
-+SOC_SINGLE("Playback 6dB Attenuate", WM8753_ADCTL1, 1, 1, 0),
-+
-+SOC_ENUM("De-emphasis", wm8753_enum[8]),
-+SOC_ENUM("Playback Mono Mix", wm8753_enum[9]),
-+SOC_ENUM("Playback Phase", wm8753_enum[10]),
-+
-+SOC_SINGLE("Mic2 Capture Volume", WM8753_INCTL1, 7, 3, 0),
-+SOC_SINGLE("Mic1 Capture Volume", WM8753_INCTL1, 5, 3, 0),
-+
-+SOC_ENUM_EXT("DAI Mode", wm8753_enum[26], wm8753_get_dai, wm8753_set_dai),
-+};
-+
-+/* add non dapm controls */
-+static int wm8753_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8753_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8753_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * _DAPM_ Controls
-+ */
-+
-+/* Left Mixer */
-+static const struct snd_kcontrol_new wm8753_left_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Voice Playback Switch", WM8753_LOUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Sidetone Playback Switch", WM8753_LOUTM2, 7, 1, 0),
-+SOC_DAPM_SINGLE("Left Playback Switch", WM8753_LOUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", WM8753_LOUTM1, 7, 1, 0),
-+};
-+
-+/* Right mixer */
-+static const struct snd_kcontrol_new wm8753_right_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Voice Playback Switch", WM8753_ROUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Sidetone Playback Switch", WM8753_ROUTM2, 7, 1, 0),
-+SOC_DAPM_SINGLE("Right Playback Switch", WM8753_ROUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", WM8753_ROUTM1, 7, 1, 0),
-+};
-+
-+/* Mono mixer */
-+static const struct snd_kcontrol_new wm8753_mono_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left Playback Switch", WM8753_MOUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Playback Switch", WM8753_MOUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Voice Playback Switch", WM8753_MOUTM2, 3, 1, 0),
-+SOC_DAPM_SINGLE("Sidetone Playback Switch", WM8753_MOUTM2, 7, 1, 0),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", WM8753_MOUTM1, 7, 1, 0),
-+};
-+
-+/* Mono 2 Mux */
-+static const struct snd_kcontrol_new wm8753_mono2_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[17]);
-+
-+/* Out 3 Mux */
-+static const struct snd_kcontrol_new wm8753_out3_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[18]);
-+
-+/* Out 4 Mux */
-+static const struct snd_kcontrol_new wm8753_out4_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[19]);
-+
-+/* ADC Mono Mix */
-+static const struct snd_kcontrol_new wm8753_adc_mono_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[22]);
-+
-+/* Record mixer */
-+static const struct snd_kcontrol_new wm8753_record_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Voice Capture Switch", WM8753_RECMIX2, 3, 1, 0),
-+SOC_DAPM_SINGLE("Left Capture Switch", WM8753_RECMIX1, 3, 1, 0),
-+SOC_DAPM_SINGLE("Right Capture Switch", WM8753_RECMIX1, 7, 1, 0),
-+};
-+
-+/* Left ADC mux */
-+static const struct snd_kcontrol_new wm8753_adc_left_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[21]);
-+
-+/* Right ADC mux */
-+static const struct snd_kcontrol_new wm8753_adc_right_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[20]);
-+
-+/* MIC mux */
-+static const struct snd_kcontrol_new wm8753_mic_mux_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[16]);
-+
-+/* ALC mixer */
-+static const struct snd_kcontrol_new wm8753_alc_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Capture Switch", WM8753_INCTL2, 3, 1, 0),
-+SOC_DAPM_SINGLE("Mic2 Capture Switch", WM8753_INCTL2, 2, 1, 0),
-+SOC_DAPM_SINGLE("Mic1 Capture Switch", WM8753_INCTL2, 1, 1, 0),
-+SOC_DAPM_SINGLE("Rx Capture Switch", WM8753_INCTL2, 0, 1, 0),
-+};
-+
-+/* Left Line mux */
-+static const struct snd_kcontrol_new wm8753_line_left_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[14]);
-+
-+/* Right Line mux */
-+static const struct snd_kcontrol_new wm8753_line_right_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[13]);
-+
-+/* Mono Line mux */
-+static const struct snd_kcontrol_new wm8753_line_mono_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[12]);
-+
-+/* Line mux and mixer */
-+static const struct snd_kcontrol_new wm8753_line_mux_mix_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[11]);
-+
-+/* Rx mux and mixer */
-+static const struct snd_kcontrol_new wm8753_rx_mux_mix_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[15]);
-+
-+/* Mic Selector Mux */
-+static const struct snd_kcontrol_new wm8753_mic_sel_mux_controls =
-+SOC_DAPM_ENUM("Route", wm8753_enum[25]);
-+
-+static const struct snd_soc_dapm_widget wm8753_dapm_widgets[] = {
-+SND_SOC_DAPM_MICBIAS("Mic Bias", WM8753_PWR1, 5, 0),
-+SND_SOC_DAPM_MIXER("Left Mixer", WM8753_PWR4, 0, 0,
-+ &wm8753_left_mixer_controls[0], ARRAY_SIZE(wm8753_left_mixer_controls)),
-+SND_SOC_DAPM_PGA("Left Out 1", WM8753_PWR3, 8, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Left Out 2", WM8753_PWR3, 6, 0, NULL, 0),
-+SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", WM8753_PWR1, 3, 0),
-+SND_SOC_DAPM_OUTPUT("LOUT1"),
-+SND_SOC_DAPM_OUTPUT("LOUT2"),
-+SND_SOC_DAPM_MIXER("Right Mixer", WM8753_PWR4, 1, 0,
-+ &wm8753_right_mixer_controls[0], ARRAY_SIZE(wm8753_right_mixer_controls)),
-+SND_SOC_DAPM_PGA("Right Out 1", WM8753_PWR3, 7, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Right Out 2", WM8753_PWR3, 5, 0, NULL, 0),
-+SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", WM8753_PWR1, 2, 0),
-+SND_SOC_DAPM_OUTPUT("ROUT1"),
-+SND_SOC_DAPM_OUTPUT("ROUT2"),
-+SND_SOC_DAPM_MIXER("Mono Mixer", WM8753_PWR4, 2, 0,
-+ &wm8753_mono_mixer_controls[0], ARRAY_SIZE(wm8753_mono_mixer_controls)),
-+SND_SOC_DAPM_PGA("Mono Out 1", WM8753_PWR3, 2, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono Out 2", WM8753_PWR3, 1, 0, NULL, 0),
-+SND_SOC_DAPM_DAC("Voice DAC", "Voice Playback", WM8753_PWR1, 4, 0),
-+SND_SOC_DAPM_OUTPUT("MONO1"),
-+SND_SOC_DAPM_MUX("Mono 2 Mux", SND_SOC_NOPM, 0, 0, &wm8753_mono2_controls),
-+SND_SOC_DAPM_OUTPUT("MONO2"),
-+SND_SOC_DAPM_MIXER("Out3 Left + Right", -1, 0, 0, NULL, 0),
-+SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0, &wm8753_out3_controls),
-+SND_SOC_DAPM_PGA("Out 3", WM8753_PWR3, 4, 0, NULL, 0),
-+SND_SOC_DAPM_OUTPUT("OUT3"),
-+SND_SOC_DAPM_MUX("Out4 Mux", SND_SOC_NOPM, 0, 0, &wm8753_out4_controls),
-+SND_SOC_DAPM_PGA("Out 4", WM8753_PWR3, 3, 0, NULL, 0),
-+SND_SOC_DAPM_OUTPUT("OUT4"),
-+SND_SOC_DAPM_MIXER("Playback Mixer", WM8753_PWR4, 3, 0,
-+ &wm8753_record_mixer_controls[0],
-+ ARRAY_SIZE(wm8753_record_mixer_controls)),
-+SND_SOC_DAPM_ADC("Left ADC", "Left Voice Capture", WM8753_PWR2, 3, 0),
-+SND_SOC_DAPM_ADC("Right ADC", "Right Voice Capture", WM8753_PWR2, 2, 0),
-+SND_SOC_DAPM_MUX("Capture Left Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8753_adc_mono_controls),
-+SND_SOC_DAPM_MUX("Capture Right Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8753_adc_mono_controls),
-+SND_SOC_DAPM_MUX("Capture Left Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_adc_left_controls),
-+SND_SOC_DAPM_MUX("Capture Right Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_adc_right_controls),
-+SND_SOC_DAPM_MUX("Mic Sidetone Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_mic_mux_controls),
-+SND_SOC_DAPM_PGA("Left Capture Volume", WM8753_PWR2, 5, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Right Capture Volume", WM8753_PWR2, 4, 0, NULL, 0),
-+SND_SOC_DAPM_MIXER("ALC Mixer", WM8753_PWR2, 6, 0,
-+ &wm8753_alc_mixer_controls[0], ARRAY_SIZE(wm8753_alc_mixer_controls)),
-+SND_SOC_DAPM_MUX("Line Left Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_line_left_controls),
-+SND_SOC_DAPM_MUX("Line Right Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_line_right_controls),
-+SND_SOC_DAPM_MUX("Line Mono Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_line_mono_controls),
-+SND_SOC_DAPM_MUX("Line Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8753_line_mux_mix_controls),
-+SND_SOC_DAPM_MUX("Rx Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8753_rx_mux_mix_controls),
-+SND_SOC_DAPM_PGA("Mic 1 Volume", WM8753_PWR2, 8, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic 2 Volume", WM8753_PWR2, 7, 0, NULL, 0),
-+SND_SOC_DAPM_MUX("Mic Selection Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8753_mic_sel_mux_controls),
-+SND_SOC_DAPM_INPUT("LINE1"),
-+SND_SOC_DAPM_INPUT("LINE2"),
-+SND_SOC_DAPM_INPUT("RXP"),
-+SND_SOC_DAPM_INPUT("RXN"),
-+SND_SOC_DAPM_INPUT("ACIN"),
-+SND_SOC_DAPM_INPUT("ACOP"),
-+SND_SOC_DAPM_INPUT("MIC1N"),
-+SND_SOC_DAPM_INPUT("MIC1"),
-+SND_SOC_DAPM_INPUT("MIC2N"),
-+SND_SOC_DAPM_INPUT("MIC2"),
-+SND_SOC_DAPM_VMID("VREF"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* left mixer */
-+ {"Left Mixer", "Left Playback Switch", "Left DAC"},
-+ {"Left Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Left Mixer", "Sidetone Playback Switch", "Mic Sidetone Mux"},
-+ {"Left Mixer", "Bypass Playback Switch", "Line Left Mux"},
-+
-+ /* right mixer */
-+ {"Right Mixer", "Right Playback Switch", "Right DAC"},
-+ {"Right Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Right Mixer", "Sidetone Playback Switch", "Mic Sidetone Mux"},
-+ {"Right Mixer", "Bypass Playback Switch", "Line Right Mux"},
-+
-+ /* mono mixer */
-+ {"Mono Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Mono Mixer", "Left Playback Switch", "Left DAC"},
-+ {"Mono Mixer", "Right Playback Switch", "Right DAC"},
-+ {"Mono Mixer", "Sidetone Playback Switch", "Mic Sidetone Mux"},
-+ {"Mono Mixer", "Bypass Playback Switch", "Line Mono Mux"},
-+
-+ /* left out */
-+ {"Left Out 1", NULL, "Left Mixer"},
-+ {"Left Out 2", NULL, "Left Mixer"},
-+ {"LOUT1", NULL, "Left Out 1"},
-+ {"LOUT2", NULL, "Left Out 2"},
-+
-+ /* right out */
-+ {"Right Out 1", NULL, "Right Mixer"},
-+ {"Right Out 2", NULL, "Right Mixer"},
-+ {"ROUT1", NULL, "Right Out 1"},
-+ {"ROUT2", NULL, "Right Out 2"},
-+
-+ /* mono 1 out */
-+ {"Mono Out 1", NULL, "Mono Mixer"},
-+ {"MONO1", NULL, "Mono Out 1"},
-+
-+ /* mono 2 out */
-+ {"Mono 2 Mux", "Left + Right", "Out3 Left + Right"},
-+ {"Mono 2 Mux", "Inverted Mono 1", "MONO1"},
-+ {"Mono 2 Mux", "Left", "Left Mixer"},
-+ {"Mono 2 Mux", "Right", "Right Mixer"},
-+ {"Mono Out 2", NULL, "Mono 2 Mux"},
-+ {"MONO2", NULL, "Mono Out 2"},
-+
-+ /* out 3 */
-+ {"Out3 Left + Right", NULL, "Left Mixer"},
-+ {"Out3 Left + Right", NULL, "Right Mixer"},
-+ {"Out3 Mux", "VREF", "VREF"},
-+ {"Out3 Mux", "Left + Right", "Out3 Left + Right"},
-+ {"Out3 Mux", "ROUT2", "ROUT2"},
-+ {"Out 3", NULL, "Out3 Mux"},
-+ {"OUT3", NULL, "Out 3"},
-+
-+ /* out 4 */
-+ {"Out4 Mux", "VREF", "VREF"},
-+ {"Out4 Mux", "Capture ST", "Capture ST Mixer"},
-+ {"Out4 Mux", "LOUT2", "LOUT2"},
-+ {"Out 4", NULL, "Out4 Mux"},
-+ {"OUT4", NULL, "Out 4"},
-+
-+ /* record mixer */
-+ {"Playback Mixer", "Left Capture Switch", "Left Mixer"},
-+ {"Playback Mixer", "Voice Capture Switch", "Mono Mixer"},
-+ {"Playback Mixer", "Right Capture Switch", "Right Mixer"},
-+
-+ /* Mic/SideTone Mux */
-+ {"Mic Sidetone Mux", "Left PGA", "Left Capture Volume"},
-+ {"Mic Sidetone Mux", "Right PGA", "Right Capture Volume"},
-+ {"Mic Sidetone Mux", "Mic 1", "Mic 1 Volume"},
-+ {"Mic Sidetone Mux", "Mic 2", "Mic 2 Volume"},
-+
-+ /* Capture Left Mux */
-+ {"Capture Left Mux", "PGA", "Left Capture Volume"},
-+ {"Capture Left Mux", "Line or RXP-RXN", "Line Left Mux"},
-+ {"Capture Left Mux", "Line", "LINE1"},
-+
-+ /* Capture Right Mux */
-+ {"Capture Right Mux", "PGA", "Right Capture Volume"},
-+ {"Capture Right Mux", "Line or RXP-RXN", "Line Right Mux"},
-+ {"Capture Right Mux", "Sidetone", "Capture ST Mixer"},
-+
-+ /* Mono Capture mixer-mux */
-+ {"Capture Right Mixer", "Stereo", "Capture Right Mux"},
-+ {"Capture Left Mixer", "Analogue Mix Left", "Capture Left Mux"},
-+ {"Capture Left Mixer", "Analogue Mix Left", "Capture Right Mux"},
-+ {"Capture Right Mixer", "Analogue Mix Right", "Capture Left Mux"},
-+ {"Capture Right Mixer", "Analogue Mix Right", "Capture Right Mux"},
-+ {"Capture Left Mixer", "Digital Mono Mix", "Capture Left Mux"},
-+ {"Capture Left Mixer", "Digital Mono Mix", "Capture Right Mux"},
-+ {"Capture Right Mixer", "Digital Mono Mix", "Capture Left Mux"},
-+ {"Capture Right Mixer", "Digital Mono Mix", "Capture Right Mux"},
-+
-+ /* ADC */
-+ {"Left ADC", NULL, "Capture Left Mixer"},
-+ {"Right ADC", NULL, "Capture Right Mixer"},
-+
-+ /* Left Capture Volume */
-+ {"Left Capture Volume", NULL, "ACIN"},
-+
-+ /* Right Capture Volume */
-+ {"Right Capture Volume", NULL, "Mic 2 Volume"},
-+
-+ /* ALC Mixer */
-+ {"ALC Mixer", "Line Capture Switch", "Line Mixer"},
-+ {"ALC Mixer", "Mic2 Capture Switch", "Mic 2 Volume"},
-+ {"ALC Mixer", "Mic1 Capture Switch", "Mic 1 Volume"},
-+ {"ALC Mixer", "Rx Capture Switch", "Rx Mixer"},
-+
-+ /* Line Left Mux */
-+ {"Line Left Mux", "Line 1", "LINE1"},
-+ {"Line Left Mux", "Rx Mix", "Rx Mixer"},
-+
-+ /* Line Right Mux */
-+ {"Line Right Mux", "Line 2", "LINE2"},
-+ {"Line Right Mux", "Rx Mix", "Rx Mixer"},
-+
-+ /* Line Mono Mux */
-+ {"Line Mono Mux", "Line Mix", "Line Mixer"},
-+ {"Line Mono Mux", "Rx Mix", "Rx Mixer"},
-+
-+ /* Line Mixer/Mux */
-+ {"Line Mixer", "Line 1 + 2", "LINE1"},
-+ {"Line Mixer", "Line 1 - 2", "LINE1"},
-+ {"Line Mixer", "Line 1 + 2", "LINE2"},
-+ {"Line Mixer", "Line 1 - 2", "LINE2"},
-+ {"Line Mixer", "Line 1", "LINE1"},
-+ {"Line Mixer", "Line 2", "LINE2"},
-+
-+ /* Rx Mixer/Mux */
-+ {"Rx Mixer", "RXP - RXN", "RXP"},
-+ {"Rx Mixer", "RXP + RXN", "RXP"},
-+ {"Rx Mixer", "RXP - RXN", "RXN"},
-+ {"Rx Mixer", "RXP + RXN", "RXN"},
-+ {"Rx Mixer", "RXP", "RXP"},
-+ {"Rx Mixer", "RXN", "RXN"},
-+
-+ /* Mic 1 Volume */
-+ {"Mic 1 Volume", NULL, "MIC1N"},
-+ {"Mic 1 Volume", NULL, "Mic Selection Mux"},
-+
-+ /* Mic 2 Volume */
-+ {"Mic 2 Volume", NULL, "MIC2N"},
-+ {"Mic 2 Volume", NULL, "MIC2"},
-+
-+ /* Mic Selector Mux */
-+ {"Mic Selection Mux", "Mic 1", "MIC1"},
-+ {"Mic Selection Mux", "Mic 2", "MIC2N"},
-+ {"Mic Selection Mux", "Mic 3", "MIC2"},
-+
-+ /* ACOP */
-+ {"ACOP", NULL, "ALC Mixer"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8753_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8753_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8753_dapm_widgets[i]);
-+ }
-+
-+ /* set up the WM8753 audio map */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+/* PLL divisors */
-+struct _pll_div {
-+ u32 pll_in; /* ext clock input */
-+ u32 pll_out; /* pll out freq */
-+ u32 div2:1;
-+ u32 n:4;
-+ u32 k:24;
-+};
-+
-+/*
-+ * PLL divisors -
-+ */
-+static const struct _pll_div pll_div[] = {
-+ {13000000, 12288000, 0, 0x7, 0x23F54A},
-+ {13000000, 11289600, 0, 0x6, 0x3CA2F5},
-+ {12000000, 12288000, 0, 0x8, 0x0C49BA},
-+ {12000000, 11289600, 0, 0x7, 0x21B08A},
-+ {24000000, 12288000, 1, 0x8, 0x0C49BA},
-+ {24000000, 11289600, 1, 0x7, 0x21B08A},
-+ {12288000, 11289600, 0, 0x7, 0x166667},
-+ {26000000, 11289600, 1, 0x6, 0x3CA2F5},
-+ {26000000, 12288000, 1, 0x7, 0x23F54A},
-+};
-+
-+static u32 wm8753_config_pll(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int pll)
-+{
-+ u16 reg;
-+ int found = 0;
-+
-+ if (pll == 1) {
-+ reg = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xffef;
-+ if (!dai->pll_in || !dai->mclk) {
-+ /* disable PLL1 */
-+ wm8753_write(codec, WM8753_PLL1CTL1, 0x0026);
-+ wm8753_write(codec, WM8753_CLOCK, reg);
-+ return 0;
-+ } else {
-+ u16 value = 0;
-+ int i = 0;
-+
-+ /* if we cant match, then use good values for N and K */
-+ for (;i < ARRAY_SIZE(pll_div); i++) {
-+ if (pll_div[i].pll_out == dai->pll_out &&
-+ pll_div[i].pll_in == dai->pll_in) {
-+ found = 1;
-+ break;
-+ }
-+ }
-+
-+ if (!found)
-+ goto err;
-+
-+ /* set up N and K PLL divisor ratios */
-+ /* bits 8:5 = PLL_N, bits 3:0 = PLL_K[21:18] */
-+ value = (pll_div[i].n << 5) + ((pll_div[i].k & 0x3c0000) >> 18);
-+ wm8753_write(codec, WM8753_PLL1CTL2, value);
-+
-+ /* bits 8:0 = PLL_K[17:9] */
-+ value = (pll_div[i].k & 0x03fe00) >> 9;
-+ wm8753_write(codec, WM8753_PLL1CTL3, value);
-+
-+ /* bits 8:0 = PLL_K[8:0] */
-+ value = pll_div[i].k & 0x0001ff;
-+ wm8753_write(codec, WM8753_PLL1CTL4, value);
-+
-+ /* set PLL1 as input and enable */
-+ wm8753_write(codec, WM8753_PLL1CTL1, 0x0027 |
-+ (pll_div[i].div2 << 3));
-+ wm8753_write(codec, WM8753_CLOCK, reg | 0x0010);
-+ }
-+ } else {
-+ reg = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfff7;
-+ if (!dai->pll_in || !dai->mclk) {
-+ /* disable PLL2 */
-+ wm8753_write(codec, WM8753_PLL2CTL1, 0x0026);
-+ wm8753_write(codec, WM8753_CLOCK, reg);
-+ return 0;
-+ } else {
-+ u16 value = 0;
-+ int i = 0;
-+
-+ /* if we cant match, then use good values for N and K */
-+ for (;i < ARRAY_SIZE(pll_div); i++) {
-+ if (pll_div[i].pll_out == dai->pll_out &&
-+ pll_div[i].pll_in == dai->pll_in) {
-+ found = 1;
-+ break;
-+ }
-+ }
-+
-+ if (!found)
-+ goto err;
-+
-+ /* set up N and K PLL divisor ratios */
-+ /* bits 8:5 = PLL_N, bits 3:0 = PLL_K[21:18] */
-+ value = (pll_div[i].n << 5) + ((pll_div[i].k & 0x3c0000) >> 18);
-+ wm8753_write(codec, WM8753_PLL2CTL2, value);
-+
-+ /* bits 8:0 = PLL_K[17:9] */
-+ value = (pll_div[i].k & 0x03fe00) >> 9;
-+ wm8753_write(codec, WM8753_PLL2CTL3, value);
-+
-+ /* bits 8:0 = PLL_K[8:0] */
-+ value = pll_div[i].k & 0x0001ff;
-+ wm8753_write(codec, WM8753_PLL2CTL4, value);
-+
-+ /* set PLL1 as input and enable */
-+ wm8753_write(codec, WM8753_PLL2CTL1, 0x0027 |
-+ (pll_div[i].div2 << 3));
-+ wm8753_write(codec, WM8753_CLOCK, reg | 0x0008);
-+ }
-+ }
-+
-+ return dai->pll_in;
-+err:
-+ return 0;
-+}
-+
-+struct _coeff_div {
-+ u32 mclk;
-+ u32 rate;
-+ u16 fs;
-+ u8 sr:5;
-+ u8 usb:1;
-+};
-+
-+/* codec hifi mclk (after PLL) clock divider coefficients */
-+static const struct _coeff_div coeff_div[] = {
-+ /* 8k */
-+ {12288000, 8000, 1536, 0x6, 0x0},
-+ {11289600, 8000, 1408, 0x16, 0x0},
-+ {18432000, 8000, 2304, 0x7, 0x0},
-+ {16934400, 8000, 2112, 0x17, 0x0},
-+ {12000000, 8000, 1500, 0x6, 0x1},
-+
-+ /* 11.025k */
-+ {11289600, 11025, 1024, 0x18, 0x0},
-+ {16934400, 11025, 1536, 0x19, 0x0},
-+ {12000000, 11025, 1088, 0x19, 0x1},
-+
-+ /* 16k */
-+ {12288000, 16000, 768, 0xa, 0x0},
-+ {18432000, 16000, 1152, 0xb, 0x0},
-+ {12000000, 16000, 750, 0xa, 0x1},
-+
-+ /* 22.05k */
-+ {11289600, 22050, 512, 0x1a, 0x0},
-+ {16934400, 22050, 768, 0x1b, 0x0},
-+ {12000000, 22050, 544, 0x1b, 0x1},
-+
-+ /* 32k */
-+ {12288000, 32000, 384, 0xc, 0x0},
-+ {18432000, 32000, 576, 0xd, 0x0},
-+ {12000000, 32000, 375, 0xa, 0x1},
-+
-+ /* 44.1k */
-+ {11289600, 44100, 256, 0x10, 0x0},
-+ {16934400, 44100, 384, 0x11, 0x0},
-+ {12000000, 44100, 272, 0x11, 0x1},
-+
-+ /* 48k */
-+ {12288000, 48000, 256, 0x0, 0x0},
-+ {18432000, 48000, 384, 0x1, 0x0},
-+ {12000000, 48000, 250, 0x0, 0x1},
-+
-+ /* 88.2k */
-+ {11289600, 88200, 128, 0x1e, 0x0},
-+ {16934400, 88200, 192, 0x1f, 0x0},
-+ {12000000, 88200, 136, 0x1f, 0x1},
-+
-+ /* 96k */
-+ {12288000, 96000, 128, 0xe, 0x0},
-+ {18432000, 96000, 192, 0xf, 0x0},
-+ {12000000, 96000, 125, 0xe, 0x1},
-+};
-+
-+static int get_coeff(int mclk, int rate)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
-+ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
-+ return i;
-+ }
-+ return -EINVAL;
-+}
-+
-+/* supported HiFi input clocks (that don't use PLL) */
-+const static int hifi_clks[] = {11289600, 12000000, 12288000,
-+ 16934400, 18432000};
-+
-+/* The HiFi interface can be clocked in one of two ways:-
-+ * o No PLL - MCLK is used directly.
-+ * o PLL - PLL is used to generate audio MCLK from input clock.
-+ *
-+ * We use the direct method if we can as it saves power.
-+ */
-+static unsigned int wm8753_config_i2s_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i, pll_out;
-+
-+ /* is clk supported without the PLL */
-+ for(i = 0; i < ARRAY_SIZE(hifi_clks); i++) {
-+ if (clk == hifi_clks[i]) {
-+ dai->mclk = clk;
-+ dai->pll_in = dai->pll_out = 0;
-+ dai->clk_div = 1;
-+ return clk;
-+ }
-+ }
-+
-+ /* determine best PLL output speed */
-+ if (info->bclk_master &
-+ (SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS)) {
-+ pll_out = info->fs * info->rate;
-+ } else {
-+ /* calc slave clock */
-+ switch (info->rate){
-+ case 11025:
-+ case 22050:
-+ case 44100:
-+ case 88200:
-+ pll_out = 11289600;
-+ break;
-+ default:
-+ pll_out = 12288000;
-+ break;
-+ }
-+ }
-+
-+ /* are input & output clocks supported by PLL */
-+ for (i = 0;i < ARRAY_SIZE(pll_div); i++) {
-+ if (pll_div[i].pll_in == clk && pll_div[i].pll_out == pll_out) {
-+ dai->pll_in = clk;
-+ dai->pll_out = dai->mclk = pll_out;
-+ return pll_out;
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+/* valid PCM clock dividers * 2 */
-+static int pcm_divs[] = {2, 6, 11, 4, 8, 12, 16};
-+
-+/* The Voice interface can be clocked in one of four ways:-
-+ * o No PLL - MCLK is used directly.
-+ * o Div - MCLK is directly divided.
-+ * o PLL - PLL is used to generate audio MCLK from input clock.
-+ * o PLL & Div - PLL and post divider are used.
-+ *
-+ * We use the non PLL methods if we can, as it saves power.
-+ */
-+
-+static unsigned int wm8753_config_pcm_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 0; i < ARRAY_SIZE(pcm_divs); i++) {
-+ if ((best_clk >> 1) * pcm_divs[i] == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = pcm_divs[i];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll_div); i++) {
-+ if (pll_div[i].pll_in == clk) {
-+ for (j = 0; j < ARRAY_SIZE(pcm_divs); j++) {
-+ if (pll_div[i].pll_out == pcm_divs[j] * (best_clk >> 1)) {
-+ dai->pll_in = clk;
-+ dai->pll_out = pll_div[i].pll_out;
-+ dai->clk_div = pcm_divs[j];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+/* set the format and bit size for ADC and Voice DAC */
-+static void wm8753_adc_vdac_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x01e0;
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ voice |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ voice |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ voice |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ voice |= 0x0013;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ voice |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ voice |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ voice |= 0x000c;
-+ break;
-+ }
-+
-+ wm8753_write(codec, WM8753_PCM, voice);
-+}
-+
-+/* configure PCM DAI */
-+static int wm8753_pcm_dai_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 voice, ioctl, srate, srate2, fs, bfs, clock;
-+ unsigned int rate;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ fs = rtd->codec_dai->dai_runtime.fs;
-+ rate = snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate);
-+ voice = wm8753_read_reg_cache(codec, WM8753_PCM) & 0x001f;
-+
-+ /* set master/slave audio interface */
-+ ioctl = wm8753_read_reg_cache(codec, WM8753_IOCTL) & 0x01fd;
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ ioctl |= 0x0002;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ voice |= 0x0040;
-+ break;
-+ }
-+
-+ /* do we need to enable the PLL */
-+ if (rtd->codec_dai->pll_in) {
-+ if (wm8753_config_pll(codec, rtd->codec_dai, 2) !=
-+ rtd->codec_dai->pll_in) {
-+ err("could not set pll to %d --> %d",
-+ rtd->codec_dai->pll_in, rtd->codec_dai->pll_out);
-+ return -ENODEV;
-+ }
-+ }
-+
-+ /* set up PCM divider */
-+ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0x003f;
-+ switch (rtd->codec_dai->clk_div) {
-+ case 2: /* 1 */
-+ break;
-+ case 6: /* 3 */
-+ clock |= (0x2 << 6);
-+ break;
-+ case 11: /* 5.5 */
-+ clock |= (0x3 << 6);
-+ break;
-+ case 4: /* 2 */
-+ clock |= (0x4 << 6);
-+ break;
-+ case 8: /* 4 */
-+ clock |= (0x5 << 6);
-+ break;
-+ case 12: /* 6 */
-+ clock |= (0x6 << 6);
-+ break;
-+ case 16: /* 8 */
-+ clock |= (0x7 << 6);
-+ break;
-+ default:
-+ printk(KERN_ERR "wm8753: invalid PCM clk divider %d\n",
-+ rtd->codec_dai->clk_div);
-+ break;
-+ }
-+ wm8753_write(codec, WM8753_CLOCK, clock);
-+
-+ /* set bclk divisor rate */
-+ srate2 = wm8753_read_reg_cache(codec, WM8753_SRATE2) & 0x003f;
-+ switch (bfs) {
-+ case 1:
-+ break;
-+ case 2:
-+ srate2 |= (0x1 << 6);
-+ break;
-+ case 4:
-+ srate2 |= (0x2 << 6);
-+ break;
-+ case 8:
-+ srate2 |= (0x3 << 6);
-+ break;
-+ case 16:
-+ srate2 |= (0x4 << 6);
-+ break;
-+ }
-+ wm8753_write(codec, WM8753_SRATE2, srate2);
-+
-+ srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x017f;
-+ if (rtd->codec_dai->dai_runtime.fs == 384)
-+ srate |= 0x80;
-+ wm8753_write(codec, WM8753_SRATE1, srate);
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ voice |= 0x0090;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ voice |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ voice |= 0x0010;
-+ break;
-+ }
-+ //printk("voice %x %x ioctl %x %x srate2 %x %x srate1 %x %x\n",
-+ //WM8753_PCM, voice, WM8753_IOCTL, ioctl, WM8753_SRATE2,
-+ //srate2, WM8753_SRATE1, srate);
-+
-+ wm8753_write(codec, WM8753_IOCTL, ioctl);
-+ wm8753_write(codec, WM8753_PCM, voice);
-+ return 0;
-+}
-+
-+/* configure hifi DAC wordlength and format */
-+static void wm8753_hdac_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x01e0;
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ hifi |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ hifi |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ hifi |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ hifi |= 0x0013;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ hifi |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ hifi |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ hifi |= 0x000c;
-+ break;
-+ }
-+
-+ wm8753_write(codec, WM8753_HIFI, hifi);
-+}
-+
-+/* configure i2s (hifi) DAI clocking */
-+static int wm8753_i2s_dai_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 srate, bfs, hifi, ioctl;
-+ unsigned int rate;
-+ int i = 0;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ rate = snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate);
-+ hifi = wm8753_read_reg_cache(codec, WM8753_HIFI) & 0x001f;
-+
-+ /* is coefficient valid ? */
-+ if ((i = get_coeff(rtd->codec_dai->mclk, rate)) < 0)
-+ return i;
-+
-+ srate = wm8753_read_reg_cache(codec, WM8753_SRATE1) & 0x01c0;
-+ wm8753_write(codec, WM8753_SRATE1, srate | (coeff_div[i].sr << 1) |
-+ coeff_div[i].usb);
-+
-+ /* do we need to enable the PLL */
-+ if (rtd->codec_dai->pll_in) {
-+ if (wm8753_config_pll(codec, rtd->codec_dai, 1) !=
-+ rtd->codec_dai->pll_in) {
-+ err("could not set pll to %d --> %d",
-+ rtd->codec_dai->pll_in, rtd->codec_dai->pll_out);
-+ return -ENODEV;
-+ }
-+ }
-+
-+ /* set bclk divisor rate */
-+ srate = wm8753_read_reg_cache(codec, WM8753_SRATE2) & 0x01c7;
-+ switch (bfs) {
-+ case 1:
-+ break;
-+ case 2:
-+ srate |= (0x1 << 3);
-+ break;
-+ case 4:
-+ srate |= (0x2 << 3);
-+ break;
-+ case 8:
-+ srate |= (0x3 << 3);
-+ break;
-+ case 16:
-+ srate |= (0x4 << 3);
-+ break;
-+ }
-+ wm8753_write(codec, WM8753_SRATE2, srate);
-+
-+ /* set master/slave audio interface */
-+ ioctl = wm8753_read_reg_cache(codec, WM8753_IOCTL) & 0x00fe;
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ ioctl |= 0x0001;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ hifi |= 0x0040;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ hifi |= 0x0090;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ hifi |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ hifi |= 0x0010;
-+ break;
-+ }
-+ wm8753_write(codec, WM8753_IOCTL, ioctl);
-+ wm8753_write(codec, WM8753_HIFI, hifi);
-+ return 0;
-+}
-+
-+static int wm8753_mode1v_prepare (struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 clock;
-+
-+ /* set clk source as pcmclk */
-+ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
-+ wm8753_write(codec, WM8753_CLOCK, clock);
-+
-+ wm8753_adc_vdac_prepare(substream);
-+ return wm8753_pcm_dai_prepare(substream);
-+}
-+
-+static int wm8753_mode1h_prepare (struct snd_pcm_substream *substream)
-+{
-+ wm8753_hdac_prepare(substream);
-+ return wm8753_i2s_dai_prepare(substream);
-+}
-+
-+static int wm8753_mode2_prepare (struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 clock;
-+
-+ /* set clk source as pcmclk */
-+ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
-+ wm8753_write(codec, WM8753_CLOCK, clock);
-+
-+ wm8753_adc_vdac_prepare(substream);
-+ return wm8753_i2s_dai_prepare(substream);
-+}
-+
-+static int wm8753_mode3_prepare (struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 clock;
-+
-+ /* set clk source as mclk */
-+ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
-+ wm8753_write(codec, WM8753_CLOCK, clock | 0x4);
-+
-+ wm8753_hdac_prepare(substream);
-+ wm8753_adc_vdac_prepare(substream);
-+ return wm8753_i2s_dai_prepare(substream);
-+}
-+
-+static int wm8753_mode4_prepare (struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 clock;
-+
-+ /* set clk source as mclk */
-+ clock = wm8753_read_reg_cache(codec, WM8753_CLOCK) & 0xfffb;
-+ wm8753_write(codec, WM8753_CLOCK, clock | 0x4);
-+
-+ wm8753_hdac_prepare(substream);
-+ wm8753_adc_vdac_prepare(substream);
-+ return wm8753_i2s_dai_prepare(substream);
-+}
-+
-+static int wm8753_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8753_read_reg_cache(codec, WM8753_DAC) & 0xfff7;
-+
-+ /* the digital mute covers the HiFi and Voice DAC's on the WM8753.
-+ * make sure we check if they are not both active when we mute */
-+ if (mute && dai->id == 1) {
-+ if (!wm8753_dai[WM8753_DAI_VOICE].playback.active ||
-+ !wm8753_dai[WM8753_DAI_HIFI].playback.active)
-+ wm8753_write(codec, WM8753_DAC, mute_reg | 0x8);
-+ } else {
-+ if (mute)
-+ wm8753_write(codec, WM8753_DAC, mute_reg | 0x8);
-+ else
-+ wm8753_write(codec, WM8753_DAC, mute_reg);
-+ }
-+
-+ return 0;
-+}
-+
-+static int wm8753_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 pwr_reg = wm8753_read_reg_cache(codec, WM8753_PWR1) & 0xfe3e;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* set vmid to 50k and unmute dac */
-+ wm8753_write(codec, WM8753_PWR1, pwr_reg | 0x00c0);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ /* set vmid to 5k for quick power up */
-+ wm8753_write(codec, WM8753_PWR1, pwr_reg | 0x01c1);
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* mute dac and set vmid to 500k, enable VREF */
-+ wm8753_write(codec, WM8753_PWR1, pwr_reg | 0x0141);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ wm8753_write(codec, WM8753_PWR1, 0x0001);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+/*
-+ * The WM8753 supports upto 4 different and mutually exclusive DAI
-+ * configurations. This gives 2 PCM's available for use, hifi and voice.
-+ * NOTE: The Voice PCM cannot play or caputure audio to the CPU as it's DAI
-+ * is connected between the wm8753 and a BT codec or GSM modem.
-+ *
-+ * 1. Voice over PCM DAI - HIFI DAC over HIFI DAI
-+ * 2. Voice over HIFI DAI - HIFI disabled
-+ * 3. Voice disabled - HIFI over HIFI
-+ * 4. Voice disabled - HIFI over HIFI, uses voice DAI LRC for capture
-+ */
-+static const struct snd_soc_codec_dai wm8753_all_dai[] = {
-+/* DAI HiFi mode 1 */
-+{ .name = "WM8753 HiFi",
-+ .id = 1,
-+ .playback = {
-+ .stream_name = "HiFi Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = { /* dummy for fast DAI switching */
-+ .stream_name = "HiFi Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm8753_config_i2s_sysclk,
-+ .digital_mute = wm8753_mute,
-+ .ops = {
-+ .prepare = wm8753_mode1h_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8753_hifi_modes),
-+ .mode = wm8753_hifi_modes,},
-+},
-+/* DAI Voice mode 1 */
-+{ .name = "WM8753 Voice",
-+ .id = 1,
-+ .playback = {
-+ .stream_name = "Voice Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .capture = {
-+ .stream_name = "Voice Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm8753_config_pcm_sysclk,
-+ .digital_mute = wm8753_mute,
-+ .ops = {
-+ .prepare = wm8753_mode1v_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8753_voice_modes),
-+ .mode = wm8753_voice_modes,},
-+},
-+/* DAI HiFi mode 2 - dummy */
-+{ .name = "WM8753 HiFi",
-+ .id = 2,
-+},
-+/* DAI Voice mode 2 */
-+{ .name = "WM8753 Voice",
-+ .id = 2,
-+ .playback = {
-+ .stream_name = "Voice Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .capture = {
-+ .stream_name = "Voice Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm8753_config_i2s_sysclk,
-+ .digital_mute = wm8753_mute,
-+ .ops = {
-+ .prepare = wm8753_mode2_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8753_voice_modes),
-+ .mode = wm8753_voice_modes,},
-+},
-+/* DAI HiFi mode 3 */
-+{ .name = "WM8753 HiFi",
-+ .id = 3,
-+ .playback = {
-+ .stream_name = "HiFi Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .stream_name = "HiFi Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm8753_config_i2s_sysclk,
-+ .digital_mute = wm8753_mute,
-+ .ops = {
-+ .prepare = wm8753_mode3_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8753_hifi_modes),
-+ .mode = wm8753_hifi_modes,},
-+},
-+/* DAI Voice mode 3 - dummy */
-+{ .name = "WM8753 Voice",
-+ .id = 3,
-+},
-+/* DAI HiFi mode 4 */
-+{ .name = "WM8753 HiFi",
-+ .id = 4,
-+ .playback = {
-+ .stream_name = "HiFi Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .stream_name = "HiFi Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm8753_config_i2s_sysclk,
-+ .digital_mute = wm8753_mute,
-+ .ops = {
-+ .prepare = wm8753_mode4_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8753_mixed_modes),
-+ .mode = wm8753_mixed_modes,},
-+},
-+/* DAI Voice mode 4 - dummy */
-+{ .name = "WM8753 Voice",
-+ .id = 4,
-+},
-+};
-+
-+struct snd_soc_codec_dai wm8753_dai[2];
-+EXPORT_SYMBOL_GPL(wm8753_dai);
-+
-+static void wm8753_set_dai_mode(struct snd_soc_codec *codec, unsigned int mode)
-+{
-+ if (mode < 4) {
-+ wm8753_dai[0] = wm8753_all_dai[mode << 1];
-+ wm8753_dai[1] = wm8753_all_dai[(mode << 1) + 1];
-+ }
-+}
-+
-+static void wm8753_work(void *data)
-+{
-+ struct snd_soc_codec *codec = (struct snd_soc_codec *)data;
-+ wm8753_dapm_event(codec, codec->dapm_state);
-+}
-+
-+static int wm8753_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8753_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8753_reg); i++) {
-+ if (i + 1 == WM8753_RESET)
-+ continue;
-+ data[0] = ((i + 1) << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+
-+ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* charge wm8753 caps */
-+ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0) {
-+ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D2);
-+ codec->dapm_state = SNDRV_CTL_POWER_D0;
-+ queue_delayed_work(wm8753_workq, &wm8753_dapm_work,
-+ msecs_to_jiffies(caps_charge));
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8753 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8753_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg, ret = 0;
-+
-+ codec->name = "WM8753";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8753_read_reg_cache;
-+ codec->write = wm8753_write;
-+ codec->dapm_event = wm8753_dapm_event;
-+ codec->dai = wm8753_dai;
-+ codec->num_dai = 2;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8753_reg);
-+
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8753_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8753_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8753_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8753_reg);
-+ wm8753_set_dai_mode(codec, 0);
-+
-+ wm8753_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* charge output caps */
-+ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D2);
-+ codec->dapm_state = SNDRV_CTL_POWER_D3hot;
-+ queue_delayed_work(wm8753_workq,
-+ &wm8753_dapm_work, msecs_to_jiffies(caps_charge));
-+
-+ /* set the update bits */
-+ reg = wm8753_read_reg_cache(codec, WM8753_LDAC);
-+ wm8753_write(codec, WM8753_LDAC, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_RDAC);
-+ wm8753_write(codec, WM8753_RDAC, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_LOUT1V);
-+ wm8753_write(codec, WM8753_LOUT1V, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_ROUT1V);
-+ wm8753_write(codec, WM8753_ROUT1V, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_LOUT2V);
-+ wm8753_write(codec, WM8753_LOUT2V, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_ROUT2V);
-+ wm8753_write(codec, WM8753_ROUT2V, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_LINVOL);
-+ wm8753_write(codec, WM8753_LINVOL, reg | 0x0100);
-+ reg = wm8753_read_reg_cache(codec, WM8753_RINVOL);
-+ wm8753_write(codec, WM8753_RINVOL, reg | 0x0100);
-+
-+ wm8753_add_controls(codec);
-+ wm8753_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+static struct snd_soc_device *wm8753_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8753 2 wire address is determined by GPIO5
-+ * state during powerup.
-+ * low = 0x1a
-+ * high = 0x1b
-+ */
-+#define I2C_DRIVERID_WM8753 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8753_i2c_driver;
-+static struct i2c_client client_template;
-+
-+static int wm8753_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8753_socdev;
-+ struct wm8753_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if (ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8753_init(socdev);
-+ if (ret < 0) {
-+ err("failed to initialise WM8753\n");
-+ goto err;
-+ }
-+
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int wm8753_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec *codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int wm8753_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8753_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8753_i2c_driver = {
-+ .driver = {
-+ .name = "WM8753 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8753,
-+ .attach_adapter = wm8753_i2c_attach,
-+ .detach_client = wm8753_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8753",
-+ .driver = &wm8753_i2c_driver,
-+};
-+#endif
-+
-+static int wm8753_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8753_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8753 Audio Codec %s", WM8753_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+ wm8753_socdev = socdev;
-+ INIT_WORK(&wm8753_dapm_work, wm8753_work, codec);
-+ wm8753_workq = create_workqueue("wm8753");
-+ if (wm8753_workq == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8753_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8753_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8753_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ if (wm8753_workq)
-+ destroy_workqueue(wm8753_workq);
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8753_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8753 = {
-+ .probe = wm8753_probe,
-+ .remove = wm8753_remove,
-+ .suspend = wm8753_suspend,
-+ .resume = wm8753_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8753);
-+
-+MODULE_DESCRIPTION("ASoC WM8753 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8753.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8753.h
-@@ -0,0 +1,91 @@
-+/*
-+ * wm8753.h -- audio driver for WM8753
-+ *
-+ * Copyright 2003 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#ifndef _WM8753_H
-+#define _WM8753_H
-+
-+/* WM8753 register space */
-+
-+#define WM8753_DAC 0x01
-+#define WM8753_ADC 0x02
-+#define WM8753_PCM 0x03
-+#define WM8753_HIFI 0x04
-+#define WM8753_IOCTL 0x05
-+#define WM8753_SRATE1 0x06
-+#define WM8753_SRATE2 0x07
-+#define WM8753_LDAC 0x08
-+#define WM8753_RDAC 0x09
-+#define WM8753_BASS 0x0a
-+#define WM8753_TREBLE 0x0b
-+#define WM8753_ALC1 0x0c
-+#define WM8753_ALC2 0x0d
-+#define WM8753_ALC3 0x0e
-+#define WM8753_NGATE 0x0f
-+#define WM8753_LADC 0x10
-+#define WM8753_RADC 0x11
-+#define WM8753_ADCTL1 0x12
-+#define WM8753_3D 0x13
-+#define WM8753_PWR1 0x14
-+#define WM8753_PWR2 0x15
-+#define WM8753_PWR3 0x16
-+#define WM8753_PWR4 0x17
-+#define WM8753_ID 0x18
-+#define WM8753_INTPOL 0x19
-+#define WM8753_INTEN 0x1a
-+#define WM8753_GPIO1 0x1b
-+#define WM8753_GPIO2 0x1c
-+#define WM8753_RESET 0x1f
-+#define WM8753_RECMIX1 0x20
-+#define WM8753_RECMIX2 0x21
-+#define WM8753_LOUTM1 0x22
-+#define WM8753_LOUTM2 0x23
-+#define WM8753_ROUTM1 0x24
-+#define WM8753_ROUTM2 0x25
-+#define WM8753_MOUTM1 0x26
-+#define WM8753_MOUTM2 0x27
-+#define WM8753_LOUT1V 0x28
-+#define WM8753_ROUT1V 0x29
-+#define WM8753_LOUT2V 0x2a
-+#define WM8753_ROUT2V 0x2b
-+#define WM8753_MOUTV 0x2c
-+#define WM8753_OUTCTL 0x2d
-+#define WM8753_ADCIN 0x2e
-+#define WM8753_INCTL1 0x2f
-+#define WM8753_INCTL2 0x30
-+#define WM8753_LINVOL 0x31
-+#define WM8753_RINVOL 0x32
-+#define WM8753_MICBIAS 0x33
-+#define WM8753_CLOCK 0x34
-+#define WM8753_PLL1CTL1 0x35
-+#define WM8753_PLL1CTL2 0x36
-+#define WM8753_PLL1CTL3 0x37
-+#define WM8753_PLL1CTL4 0x38
-+#define WM8753_PLL2CTL1 0x39
-+#define WM8753_PLL2CTL2 0x3a
-+#define WM8753_PLL2CTL3 0x3b
-+#define WM8753_PLL2CTL4 0x3c
-+#define WM8753_BIASCTL 0x3d
-+#define WM8753_ADCTL2 0x3f
-+
-+struct wm8753_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+#define WM8753_DAI_HIFI 0
-+#define WM8753_DAI_VOICE 1
-+
-+extern struct snd_soc_codec_dai wm8753_dai[2];
-+extern struct snd_soc_codec_device soc_codec_dev_wm8753;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8772.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8772.c
-@@ -0,0 +1,806 @@
-+/*
-+ * wm8772.c -- WM8772 ALSA Soc Audio driver
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8772.h"
-+
-+#define AUDIO_NAME "WM8772"
-+#define WM8772_VERSION "0.3"
-+
-+/*
-+ * wm8772 register cache
-+ * We can't read the WM8772 register space when we
-+ * are using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8772_reg[] = {
-+ 0x00ff, 0x00ff, 0x0120, 0x0000, /* 0 */
-+ 0x00ff, 0x00ff, 0x00ff, 0x00ff, /* 4 */
-+ 0x00ff, 0x0000, 0x0080, 0x0040, /* 8 */
-+ 0x0000
-+};
-+
-+#define WM8772_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_IB_NF)
-+
-+#define WM8772_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8772_PRATES \
-+ (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
-+ SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000)
-+
-+#define WM8772_CRATES \
-+ (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 |\
-+ SNDRV_PCM_RATE_96000)
-+
-+static struct snd_soc_dai_mode wm8772_modes[] = {
-+ /* common codec frame and clock master modes */
-+ /* 32k */
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 768,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 512,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+ },
-+
-+ /* 44.1k */
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 768,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 512,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+ },
-+
-+ /* 48k */
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 768,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 512,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+ },
-+
-+ /* 96k */
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8772_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8772_DIR,
-+ .pcmrate = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+ },
-+
-+ /* 192k */
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_192000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_192000,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+ },
-+
-+ /* slave mode */
-+ {
-+ .fmt = WM8772_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = WM8772_PRATES,
-+ .pcmdir = SND_SOC_DAIDIR_PLAYBACK,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+ {
-+ .fmt = WM8772_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = WM8772_CRATES,
-+ .pcmdir = SND_SOC_DAIDIR_CAPTURE,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8772 register cache
-+ */
-+static inline unsigned int wm8772_read_reg_cache(struct snd_soc_codec * codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg > WM8772_CACHE_REGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8772 register cache
-+ */
-+static inline void wm8772_write_reg_cache(struct snd_soc_codec * codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg > WM8772_CACHE_REGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+static int wm8772_write(struct snd_soc_codec * codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8772 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8772_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+#define wm8772_reset(c) wm8772_write(c, WM8772_RESET, 0)
-+
-+/*
-+ * WM8772 Controls
-+ */
-+static const char *wm8772_zero_flag[] = {"All Ch", "Ch 1", "Ch 2", "Ch3"};
-+
-+static const struct soc_enum wm8772_enum[] = {
-+SOC_ENUM_SINGLE(WM8772_DACCTRL, 0, 4, wm8772_zero_flag),
-+};
-+
-+static const struct snd_kcontrol_new wm8772_snd_controls[] = {
-+
-+SOC_SINGLE("Left1 Playback Volume", WM8772_LDAC1VOL, 0, 255, 0),
-+SOC_SINGLE("Left2 Playback Volume", WM8772_LDAC2VOL, 0, 255, 0),
-+SOC_SINGLE("Left3 Playback Volume", WM8772_LDAC3VOL, 0, 255, 0),
-+SOC_SINGLE("Right1 Playback Volume", WM8772_RDAC1VOL, 0, 255, 0),
-+SOC_SINGLE("Right1 Playback Volume", WM8772_RDAC2VOL, 0, 255, 0),
-+SOC_SINGLE("Right1 Playback Volume", WM8772_RDAC3VOL, 0, 255, 0),
-+SOC_SINGLE("Master Playback Volume", WM8772_MDACVOL, 0, 255, 0),
-+
-+SOC_SINGLE("Playback Switch", WM8772_DACCH, 0, 1, 0),
-+SOC_SINGLE("Capture Switch", WM8772_ADCCTRL, 2, 1, 0),
-+
-+SOC_SINGLE("Demp1 Playback Switch", WM8772_DACCTRL, 6, 1, 0),
-+SOC_SINGLE("Demp2 Playback Switch", WM8772_DACCTRL, 7, 1, 0),
-+SOC_SINGLE("Demp3 Playback Switch", WM8772_DACCTRL, 8, 1, 0),
-+
-+SOC_SINGLE("Phase Invert 1 Switch", WM8772_IFACE, 6, 1, 0),
-+SOC_SINGLE("Phase Invert 2 Switch", WM8772_IFACE, 7, 1, 0),
-+SOC_SINGLE("Phase Invert 3 Switch", WM8772_IFACE, 8, 1, 0),
-+
-+SOC_SINGLE("Playback ZC Switch", WM8772_DACCTRL, 0, 1, 0),
-+
-+SOC_SINGLE("Capture High Pass Switch", WM8772_ADCCTRL, 3, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int wm8772_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8772_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8772_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/* valid wm8772 mclk frequencies */
-+static const int freq_table[5][6] = {
-+ {4096000, 6144000, 8192000, 12288000, 16384000, 24576000},
-+ {5644800, 8467000, 11289600, 16934000, 22579200, 33868800},
-+ {6144000, 9216000, 12288000, 18432000, 24576000, 36864000},
-+ {12288000, 18432000, 24576000, 36864000, 0, 0},
-+ {24576000, 36864000, 0, 0, 0},
-+};
-+
-+static unsigned int check_freq(int rate, unsigned int freq)
-+{
-+ int i;
-+
-+ for(i = 0; i < 6; i++) {
-+ if(freq == freq_table[i][rate])
-+ return freq;
-+ }
-+ return 0;
-+}
-+
-+static unsigned int wm8772_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ switch (info->rate){
-+ case 32000:
-+ dai->mclk = check_freq(0, clk);
-+ break;
-+ case 44100:
-+ dai->mclk = check_freq(1, clk);
-+ break;
-+ case 48000:
-+ dai->mclk = check_freq(2, clk);
-+ break;
-+ case 96000:
-+ dai->mclk = check_freq(3, clk);
-+ break;
-+ case 192000:
-+ dai->mclk = check_freq(4, clk);
-+ break;
-+ default:
-+ dai->mclk = 0;
-+ }
-+ return dai->mclk;
-+}
-+
-+static int wm8772_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 diface = wm8772_read_reg_cache(codec, WM8772_IFACE) & 0xffc0;
-+ u16 diface_ctrl = wm8772_read_reg_cache(codec, WM8772_DACRATE) & 0xfe1f;
-+ u16 aiface = 0;
-+ u16 aiface_ctrl = wm8772_read_reg_cache(codec, WM8772_ADCCTRL) & 0xfcff;
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ diface_ctrl |= 0x0010;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ diface |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ diface |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ diface |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ diface |= 0x0007;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FORMAT_S20_3LE:
-+ diface |= 0x0010;
-+ break;
-+ case SNDRV_PCM_FORMAT_S24_3LE:
-+ diface |= 0x0020;
-+ break;
-+ case SNDRV_PCM_FORMAT_S32_LE:
-+ diface |= 0x0030;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ diface |= 0x0008;
-+ break;
-+ }
-+
-+ /* set rate */
-+ switch (rtd->codec_dai->dai_runtime.fs) {
-+ case 768:
-+ diface_ctrl |= (0x5 << 6);
-+ break;
-+ case 512:
-+ diface_ctrl |= (0x4 << 6);
-+ break;
-+ case 384:
-+ diface_ctrl |= (0x3 << 6);
-+ break;
-+ case 256:
-+ diface_ctrl |= (0x2 << 6);
-+ break;
-+ case 192:
-+ diface_ctrl |= (0x1 << 6);
-+ break;
-+ }
-+
-+ wm8772_write(codec, WM8772_DACRATE, diface_ctrl);
-+ wm8772_write(codec, WM8772_IFACE, diface);
-+
-+ } else {
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ aiface |= 0x0010;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ aiface |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ aiface |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ aiface |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ aiface |= 0x0003;
-+ aiface_ctrl |= 0x0010;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ aiface |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ aiface |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ aiface |= 0x000c;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ aiface_ctrl |= 0x0020;
-+ break;
-+ }
-+
-+ /* set rate */
-+ switch (rtd->codec_dai->dai_runtime.fs) {
-+ case 768:
-+ aiface |= (0x5 << 5);
-+ break;
-+ case 512:
-+ aiface |= (0x4 << 5);
-+ break;
-+ case 384:
-+ aiface |= (0x3 << 5);
-+ break;
-+ case 256:
-+ aiface |= (0x2 << 5);
-+ break;
-+ }
-+
-+ wm8772_write(codec, WM8772_ADCCTRL, aiface_ctrl);
-+ wm8772_write(codec, WM8772_ADCRATE, aiface);
-+ }
-+
-+ return 0;
-+}
-+
-+static int wm8772_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 master = wm8772_read_reg_cache(codec, WM8772_DACRATE) & 0xffe0;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, dac unmute, active */
-+ wm8772_write(codec, WM8772_DACRATE, master);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, dac mute, inactive */
-+ wm8772_write(codec, WM8772_DACRATE, master | 0x0f);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8772_write(codec, WM8772_DACRATE, master | 0x1f);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8772_dai = {
-+ .name = "WM8772",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 6,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8772_config_sysclk,
-+ .ops = {
-+ .prepare = wm8772_pcm_prepare,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8772_modes),
-+ .mode = wm8772_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8772_dai);
-+
-+static int wm8772_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8772_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8772_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8772_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8772 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8772_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg, ret = 0;
-+
-+ codec->name = "WM8772";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8772_read_reg_cache;
-+ codec->write = wm8772_write;
-+ codec->dapm_event = wm8772_dapm_event;
-+ codec->dai = &wm8772_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8772_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8772_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8772_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8772_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8772_reg);
-+
-+ wm8772_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* set the update bits */
-+ reg = wm8772_read_reg_cache(codec, WM8772_MDACVOL);
-+ wm8772_write(codec, WM8772_MDACVOL, reg | 0x0100);
-+ reg = wm8772_read_reg_cache(codec, WM8772_LDAC1VOL);
-+ wm8772_write(codec, WM8772_LDAC1VOL, reg | 0x0100);
-+ reg = wm8772_read_reg_cache(codec, WM8772_LDAC2VOL);
-+ wm8772_write(codec, WM8772_LDAC2VOL, reg | 0x0100);
-+ reg = wm8772_read_reg_cache(codec, WM8772_LDAC3VOL);
-+ wm8772_write(codec, WM8772_LDAC3VOL, reg | 0x0100);
-+ reg = wm8772_read_reg_cache(codec, WM8772_RDAC1VOL);
-+ wm8772_write(codec, WM8772_RDAC1VOL, reg | 0x0100);
-+ reg = wm8772_read_reg_cache(codec, WM8772_RDAC2VOL);
-+ wm8772_write(codec, WM8772_RDAC2VOL, reg | 0x0100);
-+ reg = wm8772_read_reg_cache(codec, WM8772_RDAC3VOL);
-+ wm8772_write(codec, WM8772_RDAC3VOL, reg | 0x0100);
-+
-+ wm8772_add_controls(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8772_socdev;
-+
-+static int wm8772_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8772_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "WM8772 Audio Codec %s", WM8772_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8772_socdev = socdev;
-+
-+ /* Add other interfaces here */
-+#warning do SPI device probe here and then call wm8772_init()
-+
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8772_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8772_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8772 = {
-+ .probe = wm8772_probe,
-+ .remove = wm8772_remove,
-+ .suspend = wm8772_suspend,
-+ .resume = wm8772_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8772);
-+
-+MODULE_DESCRIPTION("ASoC WM8772 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8772.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8772.h
-@@ -0,0 +1,40 @@
-+/*
-+ * wm8772.h -- audio driver for WM8772
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#ifndef _WM8772_H
-+#define _WM8772_H
-+
-+/* WM8772 register space */
-+
-+#define WM8772_LDAC1VOL 0x00
-+#define WM8772_RDAC1VOL 0x01
-+#define WM8772_DACCH 0x02
-+#define WM8772_IFACE 0x03
-+#define WM8772_LDAC2VOL 0x04
-+#define WM8772_RDAC2VOL 0x05
-+#define WM8772_LDAC3VOL 0x06
-+#define WM8772_RDAC3VOL 0x07
-+#define WM8772_MDACVOL 0x08
-+#define WM8772_DACCTRL 0x09
-+#define WM8772_DACRATE 0x0a
-+#define WM8772_ADCRATE 0x0b
-+#define WM8772_ADCCTRL 0x0c
-+#define WM8772_RESET 0x1f
-+
-+#define WM8772_CACHE_REGNUM 10
-+
-+extern struct snd_soc_codec_dai wm8772_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8772;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8971.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8971.c
-@@ -0,0 +1,1214 @@
-+/*
-+ * wm8971.c -- WM8971 ALSA SoC Audio driver
-+ *
-+ * Copyright 2005 Lab126, Inc.
-+ *
-+ * Author: Kenneth Kiraly <kiraly@lab126.com>
-+ *
-+ * Based on wm8753.c by Liam Girdwood
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8971.h"
-+
-+#define AUDIO_NAME "wm8971"
-+#define WM8971_VERSION "0.8"
-+
-+#undef WM8971_DEBUG
-+
-+#ifdef WM8971_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+#define WM8971_REG_COUNT 43
-+
-+static struct workqueue_struct *wm8971_workq = NULL;
-+static struct work_struct wm8971_dapm_work;
-+
-+/*
-+ * wm8971 register cache
-+ * We can't read the WM8971 register space when we
-+ * are using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8971_reg[] = {
-+ 0x0097, 0x0097, 0x0079, 0x0079, /* 0 */
-+ 0x0000, 0x0008, 0x0000, 0x000a, /* 4 */
-+ 0x0000, 0x0000, 0x00ff, 0x00ff, /* 8 */
-+ 0x000f, 0x000f, 0x0000, 0x0000, /* 12 */
-+ 0x0000, 0x007b, 0x0000, 0x0032, /* 16 */
-+ 0x0000, 0x00c3, 0x00c3, 0x00c0, /* 20 */
-+ 0x0000, 0x0000, 0x0000, 0x0000, /* 24 */
-+ 0x0000, 0x0000, 0x0000, 0x0000, /* 28 */
-+ 0x0000, 0x0000, 0x0050, 0x0050, /* 32 */
-+ 0x0050, 0x0050, 0x0050, 0x0050, /* 36 */
-+ 0x0079, 0x0079, 0x0079, /* 40 */
-+};
-+
-+#define WM8971_HIFI_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8971_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8971_HIFI_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+#define WM8971_HIFI_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+#define WM8971_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+static struct snd_soc_dai_mode wm8971_modes[] = {
-+ /* common codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1408,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 2304,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 2112,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1500,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* 11.025k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1024,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1536,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1088,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* 16k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 768,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1152,
-+ .bfs = WM8971_HIFI_FSB
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 750,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* 22.05k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 512,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 768,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 544,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* 32k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 576,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 375,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* 44.1k & 48k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 384,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 272,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 250,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* 88.2k & 96k */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 128,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 192,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 136,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 125,
-+ .bfs = WM8971_HIFI_FSB,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8971_HIFI_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8971_HIFI_BITS,
-+ .pcmrate = WM8971_HIFI_RATES,
-+ .pcmdir = WM8971_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+static inline unsigned int wm8971_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg < WM8971_REG_COUNT)
-+ return cache[reg];
-+
-+ return -1;
-+}
-+
-+static inline void wm8971_write_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg < WM8971_REG_COUNT)
-+ cache[reg] = value;
-+}
-+
-+static int wm8971_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8753 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8971_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8971_reset(c) wm8971_write(c, WM8971_RESET, 0)
-+
-+/* WM8971 Controls */
-+static const char *wm8971_bass[] = { "Linear Control", "Adaptive Boost" };
-+static const char *wm8971_bass_filter[] = { "130Hz @ 48kHz",
-+ "200Hz @ 48kHz" };
-+static const char *wm8971_treble[] = { "8kHz", "4kHz" };
-+static const char *wm8971_alc_func[] = { "Off", "Right", "Left", "Stereo" };
-+static const char *wm8971_ng_type[] = { "Constant PGA Gain",
-+ "Mute ADC Output" };
-+static const char *wm8971_deemp[] = { "None", "32kHz", "44.1kHz", "48kHz" };
-+static const char *wm8971_mono_mux[] = {"Stereo", "Mono (Left)",
-+ "Mono (Right)", "Digital Mono"};
-+static const char *wm8971_dac_phase[] = { "Non Inverted", "Inverted" };
-+static const char *wm8971_lline_mux[] = {"Line", "NC", "NC", "PGA",
-+ "Differential"};
-+static const char *wm8971_rline_mux[] = {"Line", "Mic", "NC", "PGA",
-+ "Differential"};
-+static const char *wm8971_lpga_sel[] = {"Line", "NC", "NC", "Differential"};
-+static const char *wm8971_rpga_sel[] = {"Line", "Mic", "NC", "Differential"};
-+static const char *wm8971_adcpol[] = {"Normal", "L Invert", "R Invert",
-+ "L + R Invert"};
-+
-+static const struct soc_enum wm8971_enum[] = {
-+ SOC_ENUM_SINGLE(WM8971_BASS, 7, 2, wm8971_bass), /* 0 */
-+ SOC_ENUM_SINGLE(WM8971_BASS, 6, 2, wm8971_bass_filter),
-+ SOC_ENUM_SINGLE(WM8971_TREBLE, 6, 2, wm8971_treble),
-+ SOC_ENUM_SINGLE(WM8971_ALC1, 7, 4, wm8971_alc_func),
-+ SOC_ENUM_SINGLE(WM8971_NGATE, 1, 2, wm8971_ng_type), /* 4 */
-+ SOC_ENUM_SINGLE(WM8971_ADCDAC, 1, 4, wm8971_deemp),
-+ SOC_ENUM_SINGLE(WM8971_ADCTL1, 4, 4, wm8971_mono_mux),
-+ SOC_ENUM_SINGLE(WM8971_ADCTL1, 1, 2, wm8971_dac_phase),
-+ SOC_ENUM_SINGLE(WM8971_LOUTM1, 0, 5, wm8971_lline_mux), /* 8 */
-+ SOC_ENUM_SINGLE(WM8971_ROUTM1, 0, 5, wm8971_rline_mux),
-+ SOC_ENUM_SINGLE(WM8971_LADCIN, 6, 4, wm8971_lpga_sel),
-+ SOC_ENUM_SINGLE(WM8971_RADCIN, 6, 4, wm8971_rpga_sel),
-+ SOC_ENUM_SINGLE(WM8971_ADCDAC, 5, 4, wm8971_adcpol), /* 12 */
-+ SOC_ENUM_SINGLE(WM8971_ADCIN, 6, 4, wm8971_mono_mux),
-+};
-+
-+static const struct snd_kcontrol_new wm8971_snd_controls[] = {
-+ SOC_DOUBLE_R("Capture Volume", WM8971_LINVOL, WM8971_RINVOL, 0, 63, 0),
-+ SOC_DOUBLE_R("Capture ZC Switch", WM8971_LINVOL, WM8971_RINVOL, 6, 1, 0),
-+ SOC_DOUBLE_R("Capture Switch", WM8971_LINVOL, WM8971_RINVOL, 7, 1, 1),
-+
-+ SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8971_LOUT1V,
-+ WM8971_ROUT1V, 7, 1, 0),
-+ SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8971_LOUT2V,
-+ WM8971_ROUT2V, 7, 1, 0),
-+ SOC_SINGLE("Mono Playback ZC Switch", WM8971_MOUTV, 7, 1, 0),
-+
-+ SOC_DOUBLE_R("PCM Volume", WM8971_LDAC, WM8971_RDAC, 0, 255, 0),
-+
-+ SOC_DOUBLE_R("Bypass Left Playback Volume", WM8971_LOUTM1,
-+ WM8971_LOUTM2, 4, 7, 1),
-+ SOC_DOUBLE_R("Bypass Right Playback Volume", WM8971_ROUTM1,
-+ WM8971_ROUTM2, 4, 7, 1),
-+ SOC_DOUBLE_R("Bypass Mono Playback Volume", WM8971_MOUTM1,
-+ WM8971_MOUTM2, 4, 7, 1),
-+
-+ SOC_DOUBLE_R("Headphone Playback Volume", WM8971_LOUT1V,
-+ WM8971_ROUT1V, 0, 127, 0),
-+ SOC_DOUBLE_R("Speaker Playback Volume", WM8971_LOUT2V,
-+ WM8971_ROUT2V, 0, 127, 0),
-+
-+ SOC_ENUM("Bass Boost", wm8971_enum[0]),
-+ SOC_ENUM("Bass Filter", wm8971_enum[1]),
-+ SOC_SINGLE("Bass Volume", WM8971_BASS, 0, 7, 1),
-+
-+ SOC_SINGLE("Treble Volume", WM8971_TREBLE, 0, 7, 0),
-+ SOC_ENUM("Treble Cut-off", wm8971_enum[2]),
-+
-+ SOC_SINGLE("Capture Filter Switch", WM8971_ADCDAC, 0, 1, 1),
-+
-+ SOC_SINGLE("ALC Target Volume", WM8971_ALC1, 0, 7, 0),
-+ SOC_SINGLE("ALC Max Volume", WM8971_ALC1, 4, 7, 0),
-+
-+ SOC_SINGLE("ALC Capture Target Volume", WM8971_ALC1, 0, 7, 0),
-+ SOC_SINGLE("ALC Capture Max Volume", WM8971_ALC1, 4, 7, 0),
-+ SOC_ENUM("ALC Capture Function", wm8971_enum[3]),
-+ SOC_SINGLE("ALC Capture ZC Switch", WM8971_ALC2, 7, 1, 0),
-+ SOC_SINGLE("ALC Capture Hold Time", WM8971_ALC2, 0, 15, 0),
-+ SOC_SINGLE("ALC Capture Decay Time", WM8971_ALC3, 4, 15, 0),
-+ SOC_SINGLE("ALC Capture Attack Time", WM8971_ALC3, 0, 15, 0),
-+ SOC_SINGLE("ALC Capture NG Threshold", WM8971_NGATE, 3, 31, 0),
-+ SOC_ENUM("ALC Capture NG Type", wm8971_enum[4]),
-+ SOC_SINGLE("ALC Capture NG Switch", WM8971_NGATE, 0, 1, 0),
-+
-+ SOC_SINGLE("Capture 6dB Attenuate", WM8971_ADCDAC, 8, 1, 0),
-+ SOC_SINGLE("Playback 6dB Attenuate", WM8971_ADCDAC, 7, 1, 0),
-+
-+ SOC_ENUM("Playback De-emphasis", wm8971_enum[5]),
-+ SOC_ENUM("Playback Function", wm8971_enum[6]),
-+ SOC_ENUM("Playback Phase", wm8971_enum[7]),
-+
-+ SOC_DOUBLE_R("Mic Boost", WM8971_LADCIN, WM8971_RADCIN, 4, 3, 0),
-+};
-+
-+/* add non-DAPM controls */
-+static int wm8971_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8971_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8971_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/*
-+ * DAPM Controls
-+ */
-+
-+/* Left Mixer */
-+static const struct snd_kcontrol_new wm8971_left_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Playback Switch", WM8971_LOUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Left Bypass Switch", WM8971_LOUTM1, 7, 1, 0),
-+SOC_DAPM_SINGLE("Right Playback Switch", WM8971_LOUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Bypass Switch", WM8971_LOUTM2, 7, 1, 0),
-+};
-+
-+/* Right Mixer */
-+static const struct snd_kcontrol_new wm8971_right_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left Playback Switch", WM8971_ROUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Left Bypass Switch", WM8971_ROUTM1, 7, 1, 0),
-+SOC_DAPM_SINGLE("Playback Switch", WM8971_ROUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Bypass Switch", WM8971_ROUTM2, 7, 1, 0),
-+};
-+
-+/* Mono Mixer */
-+static const struct snd_kcontrol_new wm8971_mono_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left Playback Switch", WM8971_MOUTM1, 8, 1, 0),
-+SOC_DAPM_SINGLE("Left Bypass Switch", WM8971_MOUTM1, 7, 1, 0),
-+SOC_DAPM_SINGLE("Right Playback Switch", WM8971_MOUTM2, 8, 1, 0),
-+SOC_DAPM_SINGLE("Right Bypass Switch", WM8971_MOUTM2, 7, 1, 0),
-+};
-+
-+/* Left Line Mux */
-+static const struct snd_kcontrol_new wm8971_left_line_controls =
-+SOC_DAPM_ENUM("Route", wm8971_enum[8]);
-+
-+/* Right Line Mux */
-+static const struct snd_kcontrol_new wm8971_right_line_controls =
-+SOC_DAPM_ENUM("Route", wm8971_enum[9]);
-+
-+/* Left PGA Mux */
-+static const struct snd_kcontrol_new wm8971_left_pga_controls =
-+SOC_DAPM_ENUM("Route", wm8971_enum[10]);
-+
-+/* Right PGA Mux */
-+static const struct snd_kcontrol_new wm8971_right_pga_controls =
-+SOC_DAPM_ENUM("Route", wm8971_enum[11]);
-+
-+/* Mono ADC Mux */
-+static const struct snd_kcontrol_new wm8971_monomux_controls =
-+SOC_DAPM_ENUM("Route", wm8971_enum[13]);
-+
-+static const struct snd_soc_dapm_widget wm8971_dapm_widgets[] = {
-+ SND_SOC_DAPM_MIXER("Left Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8971_left_mixer_controls[0],
-+ ARRAY_SIZE(wm8971_left_mixer_controls)),
-+ SND_SOC_DAPM_MIXER("Right Mixer", SND_SOC_NOPM, 0, 0,
-+ &wm8971_right_mixer_controls[0],
-+ ARRAY_SIZE(wm8971_right_mixer_controls)),
-+ SND_SOC_DAPM_MIXER("Mono Mixer", WM8971_PWR2, 2, 0,
-+ &wm8971_mono_mixer_controls[0],
-+ ARRAY_SIZE(wm8971_mono_mixer_controls)),
-+
-+ SND_SOC_DAPM_PGA("Right Out 2", WM8971_PWR2, 3, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Left Out 2", WM8971_PWR2, 4, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Right Out 1", WM8971_PWR2, 5, 0, NULL, 0),
-+ SND_SOC_DAPM_PGA("Left Out 1", WM8971_PWR2, 6, 0, NULL, 0),
-+ SND_SOC_DAPM_DAC("Right DAC", "Right Playback", WM8971_PWR2, 7, 0),
-+ SND_SOC_DAPM_DAC("Left DAC", "Left Playback", WM8971_PWR2, 8, 0),
-+ SND_SOC_DAPM_PGA("Mono Out 1", WM8971_PWR2, 2, 0, NULL, 0),
-+
-+ SND_SOC_DAPM_MICBIAS("Mic Bias", WM8971_PWR1, 1, 0),
-+ SND_SOC_DAPM_ADC("Right ADC", "Right Capture", WM8971_PWR1, 2, 0),
-+ SND_SOC_DAPM_ADC("Left ADC", "Left Capture", WM8971_PWR1, 3, 0),
-+
-+ SND_SOC_DAPM_MUX("Left PGA Mux", WM8971_PWR1, 5, 0,
-+ &wm8971_left_pga_controls),
-+ SND_SOC_DAPM_MUX("Right PGA Mux", WM8971_PWR1, 4, 0,
-+ &wm8971_right_pga_controls),
-+ SND_SOC_DAPM_MUX("Left Line Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8971_left_line_controls),
-+ SND_SOC_DAPM_MUX("Right Line Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8971_right_line_controls),
-+
-+ SND_SOC_DAPM_MUX("Left ADC Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8971_monomux_controls),
-+ SND_SOC_DAPM_MUX("Right ADC Mux", SND_SOC_NOPM, 0, 0,
-+ &wm8971_monomux_controls),
-+
-+ SND_SOC_DAPM_OUTPUT("LOUT1"),
-+ SND_SOC_DAPM_OUTPUT("ROUT1"),
-+ SND_SOC_DAPM_OUTPUT("LOUT2"),
-+ SND_SOC_DAPM_OUTPUT("ROUT2"),
-+ SND_SOC_DAPM_OUTPUT("MONO"),
-+
-+ SND_SOC_DAPM_INPUT("LINPUT1"),
-+ SND_SOC_DAPM_INPUT("RINPUT1"),
-+ SND_SOC_DAPM_INPUT("MIC"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* left mixer */
-+ {"Left Mixer", "Playback Switch", "Left DAC"},
-+ {"Left Mixer", "Left Bypass Switch", "Left Line Mux"},
-+ {"Left Mixer", "Right Playback Switch", "Right DAC"},
-+ {"Left Mixer", "Right Bypass Switch", "Right Line Mux"},
-+
-+ /* right mixer */
-+ {"Right Mixer", "Left Playback Switch", "Left DAC"},
-+ {"Right Mixer", "Left Bypass Switch", "Left Line Mux"},
-+ {"Right Mixer", "Playback Switch", "Right DAC"},
-+ {"Right Mixer", "Right Bypass Switch", "Right Line Mux"},
-+
-+ /* left out 1 */
-+ {"Left Out 1", NULL, "Left Mixer"},
-+ {"LOUT1", NULL, "Left Out 1"},
-+
-+ /* left out 2 */
-+ {"Left Out 2", NULL, "Left Mixer"},
-+ {"LOUT2", NULL, "Left Out 2"},
-+
-+ /* right out 1 */
-+ {"Right Out 1", NULL, "Right Mixer"},
-+ {"ROUT1", NULL, "Right Out 1"},
-+
-+ /* right out 2 */
-+ {"Right Out 2", NULL, "Right Mixer"},
-+ {"ROUT2", NULL, "Right Out 2"},
-+
-+ /* mono mixer */
-+ {"Mono Mixer", "Left Playback Switch", "Left DAC"},
-+ {"Mono Mixer", "Left Bypass Switch", "Left Line Mux"},
-+ {"Mono Mixer", "Right Playback Switch", "Right DAC"},
-+ {"Mono Mixer", "Right Bypass Switch", "Right Line Mux"},
-+
-+ /* mono out */
-+ {"Mono Out", NULL, "Mono Mixer"},
-+ {"MONO1", NULL, "Mono Out"},
-+
-+ /* Left Line Mux */
-+ {"Left Line Mux", "Line", "LINPUT1"},
-+ {"Left Line Mux", "PGA", "Left PGA Mux"},
-+ {"Left Line Mux", "Differential", "Differential Mux"},
-+
-+ /* Right Line Mux */
-+ {"Right Line Mux", "Line", "RINPUT1"},
-+ {"Right Line Mux", "Mic", "MIC"},
-+ {"Right Line Mux", "PGA", "Right PGA Mux"},
-+ {"Right Line Mux", "Differential", "Differential Mux"},
-+
-+ /* Left PGA Mux */
-+ {"Left PGA Mux", "Line", "LINPUT1"},
-+ {"Left PGA Mux", "Differential", "Differential Mux"},
-+
-+ /* Right PGA Mux */
-+ {"Right PGA Mux", "Line", "RINPUT1"},
-+ {"Right PGA Mux", "Differential", "Differential Mux"},
-+
-+ /* Differential Mux */
-+ {"Differential Mux", "Line", "LINPUT1"},
-+ {"Differential Mux", "Line", "RINPUT1"},
-+
-+ /* Left ADC Mux */
-+ {"Left ADC Mux", "Stereo", "Left PGA Mux"},
-+ {"Left ADC Mux", "Mono (Left)", "Left PGA Mux"},
-+ {"Left ADC Mux", "Digital Mono", "Left PGA Mux"},
-+
-+ /* Right ADC Mux */
-+ {"Right ADC Mux", "Stereo", "Right PGA Mux"},
-+ {"Right ADC Mux", "Mono (Right)", "Right PGA Mux"},
-+ {"Right ADC Mux", "Digital Mono", "Right PGA Mux"},
-+
-+ /* ADC */
-+ {"Left ADC", NULL, "Left ADC Mux"},
-+ {"Right ADC", NULL, "Right ADC Mux"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8971_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8971_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8971_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct _coeff_div {
-+ u32 mclk;
-+ u32 rate;
-+ u16 fs;
-+ u8 sr:5;
-+ u8 usb:1;
-+};
-+
-+/* codec hifi mclk clock divider coefficients */
-+static const struct _coeff_div coeff_div[] = {
-+ /* 8k */
-+ {12288000, 8000, 1536, 0x6, 0x0},
-+ {11289600, 8000, 1408, 0x16, 0x0},
-+ {18432000, 8000, 2304, 0x7, 0x0},
-+ {16934400, 8000, 2112, 0x17, 0x0},
-+ {12000000, 8000, 1500, 0x6, 0x1},
-+
-+ /* 11.025k */
-+ {11289600, 11025, 1024, 0x18, 0x0},
-+ {16934400, 11025, 1536, 0x19, 0x0},
-+ {12000000, 11025, 1088, 0x19, 0x1},
-+
-+ /* 16k */
-+ {12288000, 16000, 768, 0xa, 0x0},
-+ {18432000, 16000, 1152, 0xb, 0x0},
-+ {12000000, 16000, 750, 0xa, 0x1},
-+
-+ /* 22.05k */
-+ {11289600, 22050, 512, 0x1a, 0x0},
-+ {16934400, 22050, 768, 0x1b, 0x0},
-+ {12000000, 22050, 544, 0x1b, 0x1},
-+
-+ /* 32k */
-+ {12288000, 32000, 384, 0xc, 0x0},
-+ {18432000, 32000, 576, 0xd, 0x0},
-+ {12000000, 32000, 375, 0xa, 0x1},
-+
-+ /* 44.1k */
-+ {11289600, 44100, 256, 0x10, 0x0},
-+ {16934400, 44100, 384, 0x11, 0x0},
-+ {12000000, 44100, 272, 0x11, 0x1},
-+
-+ /* 48k */
-+ {12288000, 48000, 256, 0x0, 0x0},
-+ {18432000, 48000, 384, 0x1, 0x0},
-+ {12000000, 48000, 250, 0x0, 0x1},
-+
-+ /* 88.2k */
-+ {11289600, 88200, 128, 0x1e, 0x0},
-+ {16934400, 88200, 192, 0x1f, 0x0},
-+ {12000000, 88200, 136, 0x1f, 0x1},
-+
-+ /* 96k */
-+ {12288000, 96000, 128, 0xe, 0x0},
-+ {18432000, 96000, 192, 0xf, 0x0},
-+ {12000000, 96000, 125, 0xe, 0x1},
-+};
-+
-+static int get_coeff(int mclk, int rate)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
-+ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
-+ return i;
-+ }
-+ return -EINVAL;
-+}
-+
-+/* WM8971 supports numerous input clocks per sample rate */
-+static unsigned int wm8971_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ dai->mclk = 0;
-+
-+ /* check that the calculated FS and rate actually match a clock from
-+ * the machine driver */
-+ if (info->fs * info->rate == clk)
-+ dai->mclk = clk;
-+
-+ return dai->mclk;
-+}
-+
-+static int wm8971_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 iface = 0, bfs, srate = 0;
-+ int i = get_coeff(rtd->codec_dai->mclk,
-+ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
-+
-+ /* is coefficient valid ? */
-+ if (i < 0)
-+ return i;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ iface |= 0x0040;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ iface |= 0x0013;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x000c;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0090;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0010;
-+ break;
-+ }
-+
-+ /* set bclk divisor rate */
-+ switch (bfs) {
-+ case 1:
-+ break;
-+ case 4:
-+ srate |= (0x1 << 7);
-+ break;
-+ case 8:
-+ srate |= (0x2 << 7);
-+ break;
-+ case 16:
-+ srate |= (0x3 << 7);
-+ break;
-+ }
-+
-+ /* set iface & srate */
-+ wm8971_write(codec, WM8971_AUDIO, iface);
-+ wm8971_write(codec, WM8971_SRATE, srate |
-+ (coeff_div[i].sr << 1) | coeff_div[i].usb);
-+ return 0;
-+}
-+
-+static int wm8971_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8971_read_reg_cache(codec, WM8971_ADCDAC) & 0xfff7;
-+ if (mute)
-+ wm8971_write(codec, WM8971_ADCDAC, mute_reg | 0x8);
-+ else
-+ wm8971_write(codec, WM8971_ADCDAC, mute_reg);
-+ return 0;
-+}
-+
-+static int wm8971_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 pwr_reg = wm8971_read_reg_cache(codec, WM8971_PWR1) & 0xfe3e;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* set vmid to 50k and unmute dac */
-+ wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x00c1);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ /* set vmid to 5k for quick power up */
-+ wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x01c0);
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* mute dac and set vmid to 500k, enable VREF */
-+ wm8971_write(codec, WM8971_PWR1, pwr_reg | 0x0140);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ wm8971_write(codec, WM8971_PWR1, 0x0001);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8971_dai = {
-+ .name = "WM8971",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8971_config_sysclk,
-+ .digital_mute = wm8971_mute,
-+ .ops = {
-+ .prepare = wm8971_pcm_prepare,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8971_modes),
-+ .mode = wm8971_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8971_dai);
-+
-+static void wm8971_work(void *data)
-+{
-+ struct snd_soc_codec *codec = (struct snd_soc_codec *)data;
-+ wm8971_dapm_event(codec, codec->dapm_state);
-+}
-+
-+static int wm8971_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8971_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8971_reg); i++) {
-+ if (i + 1 == WM8971_RESET)
-+ continue;
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+
-+ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* charge wm8971 caps */
-+ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0) {
-+ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D2);
-+ codec->dapm_state = SNDRV_CTL_POWER_D0;
-+ queue_delayed_work(wm8971_workq, &wm8971_dapm_work,
-+ msecs_to_jiffies(1000));
-+ }
-+
-+ return 0;
-+}
-+
-+static int wm8971_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg, ret = 0;
-+
-+ codec->name = "WM8971";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8971_read_reg_cache;
-+ codec->write = wm8971_write;
-+ codec->dapm_event = wm8971_dapm_event;
-+ codec->dai = &wm8971_dai;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8971_reg);
-+ codec->num_dai = 1;
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8971_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8971_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8971_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8971_reg);
-+
-+ wm8971_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* charge output caps */
-+ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D2);
-+ codec->dapm_state = SNDRV_CTL_POWER_D3hot;
-+ queue_delayed_work(wm8971_workq, &wm8971_dapm_work,
-+ msecs_to_jiffies(1000));
-+
-+ /* set the update bits */
-+ reg = wm8971_read_reg_cache(codec, WM8971_LDAC);
-+ wm8971_write(codec, WM8971_LDAC, reg | 0x0100);
-+ reg = wm8971_read_reg_cache(codec, WM8971_RDAC);
-+ wm8971_write(codec, WM8971_RDAC, reg | 0x0100);
-+
-+ reg = wm8971_read_reg_cache(codec, WM8971_LOUT1V);
-+ wm8971_write(codec, WM8971_LOUT1V, reg | 0x0100);
-+ reg = wm8971_read_reg_cache(codec, WM8971_ROUT1V);
-+ wm8971_write(codec, WM8971_ROUT1V, reg | 0x0100);
-+
-+ reg = wm8971_read_reg_cache(codec, WM8971_LOUT2V);
-+ wm8971_write(codec, WM8971_LOUT2V, reg | 0x0100);
-+ reg = wm8971_read_reg_cache(codec, WM8971_ROUT2V);
-+ wm8971_write(codec, WM8971_ROUT2V, reg | 0x0100);
-+
-+ reg = wm8971_read_reg_cache(codec, WM8971_LINVOL);
-+ wm8971_write(codec, WM8971_LINVOL, reg | 0x0100);
-+ reg = wm8971_read_reg_cache(codec, WM8971_RINVOL);
-+ wm8971_write(codec, WM8971_RINVOL, reg | 0x0100);
-+
-+ wm8971_add_controls(codec);
-+ wm8971_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+static struct snd_soc_device *wm8971_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8731 2 wire address is determined by GPIO5
-+ * state during powerup.
-+ * low = 0x1a
-+ * high = 0x1b
-+ */
-+#define I2C_DRIVERID_WM8971 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8971_i2c_driver;
-+static struct i2c_client client_template;
-+
-+static int wm8971_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8971_socdev;
-+ struct wm8971_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+
-+ i2c_set_clientdata(i2c, codec);
-+
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if (ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8971_init(socdev);
-+ if (ret < 0) {
-+ err("failed to initialise WM8971\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int wm8971_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec* codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int wm8971_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8971_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8971_i2c_driver = {
-+ .driver = {
-+ .name = "WM8971 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8971,
-+ .attach_adapter = wm8971_i2c_attach,
-+ .detach_client = wm8971_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8971",
-+ .driver = &wm8971_i2c_driver,
-+};
-+#endif
-+
-+static int wm8971_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8971_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8971 Audio Codec %s", WM8971_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+ wm8971_socdev = socdev;
-+
-+ INIT_WORK(&wm8971_dapm_work, wm8971_work, codec);
-+ wm8971_workq = create_workqueue("wm8971");
-+ if (wm8971_workq == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8971_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8971_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8971_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ if (wm8971_workq)
-+ destroy_workqueue(wm8971_workq);
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8971_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8971 = {
-+ .probe = wm8971_probe,
-+ .remove = wm8971_remove,
-+ .suspend = wm8971_suspend,
-+ .resume = wm8971_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8971);
-+
-+MODULE_DESCRIPTION("ASoC WM8971 driver");
-+MODULE_AUTHOR("Lab126");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8971.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8971.h
-@@ -0,0 +1,61 @@
-+/*
-+ * wm8971.h -- audio driver for WM8971
-+ *
-+ * Copyright 2005 Lab126, Inc.
-+ *
-+ * Author: Kenneth Kiraly <kiraly@lab126.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#ifndef _WM8971_H
-+#define _WM8971_H
-+
-+#define WM8971_LINVOL 0x00
-+#define WM8971_RINVOL 0x01
-+#define WM8971_LOUT1V 0x02
-+#define WM8971_ROUT1V 0x03
-+#define WM8971_ADCDAC 0x05
-+#define WM8971_AUDIO 0x07
-+#define WM8971_SRATE 0x08
-+#define WM8971_LDAC 0x0a
-+#define WM8971_RDAC 0x0b
-+#define WM8971_BASS 0x0c
-+#define WM8971_TREBLE 0x0d
-+#define WM8971_RESET 0x0f
-+#define WM8971_ALC1 0x11
-+#define WM8971_ALC2 0x12
-+#define WM8971_ALC3 0x13
-+#define WM8971_NGATE 0x14
-+#define WM8971_LADC 0x15
-+#define WM8971_RADC 0x16
-+#define WM8971_ADCTL1 0x17
-+#define WM8971_ADCTL2 0x18
-+#define WM8971_PWR1 0x19
-+#define WM8971_PWR2 0x1a
-+#define WM8971_ADCTL3 0x1b
-+#define WM8971_ADCIN 0x1f
-+#define WM8971_LADCIN 0x20
-+#define WM8971_RADCIN 0x21
-+#define WM8971_LOUTM1 0x22
-+#define WM8971_LOUTM2 0x23
-+#define WM8971_ROUTM1 0x24
-+#define WM8971_ROUTM2 0x25
-+#define WM8971_MOUTM1 0x26
-+#define WM8971_MOUTM2 0x27
-+#define WM8971_LOUT2V 0x28
-+#define WM8971_ROUT2V 0x29
-+#define WM8971_MOUTV 0x2A
-+
-+struct wm8971_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8971_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8971;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8974.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8974.c
-@@ -0,0 +1,935 @@
-+/*
-+ * wm8974.c -- WM8974 ALSA Soc Audio driver
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ *
-+ * Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8974.h"
-+
-+#define AUDIO_NAME "wm8974"
-+#define WM8974_VERSION "0.5"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8974_DEBUG 0
-+
-+#ifdef WM8974_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8974;
-+
-+/*
-+ * wm8974 register cache
-+ * We can't read the WM8974 register space when we are
-+ * using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8974_reg[WM8974_CACHEREGNUM] = {
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0050, 0x0000, 0x0140, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x00ff,
-+ 0x0000, 0x0000, 0x0100, 0x00ff,
-+ 0x0000, 0x0000, 0x012c, 0x002c,
-+ 0x002c, 0x002c, 0x002c, 0x0000,
-+ 0x0032, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0038, 0x000b, 0x0032, 0x0000,
-+ 0x0008, 0x000c, 0x0093, 0x00e9,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0003, 0x0010, 0x0000, 0x0000,
-+ 0x0000, 0x0002, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0039, 0x0000,
-+ 0x0000,
-+};
-+
-+#define WM8974_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8974_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8974_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+#define WM8794_BCLK \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
-+ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
-+
-+#define WM8794_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+static struct snd_soc_dai_mode wm8974_modes[] = {
-+ /* codec frame and clock master modes */
-+ {
-+ .fmt = WM8974_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8794_HIFI_BITS,
-+ .pcmrate = WM8974_RATES,
-+ .pcmdir = WM8974_DIR,
-+ .fs = 256,
-+ .bfs = WM8794_BCLK,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8974_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8794_HIFI_BITS,
-+ .pcmrate = WM8974_RATES,
-+ .pcmdir = WM8974_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8974 register cache
-+ */
-+static inline unsigned int wm8974_read_reg_cache(struct snd_soc_codec * codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == WM8974_RESET)
-+ return 0;
-+ if (reg >= WM8974_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8974 register cache
-+ */
-+static inline void wm8974_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= WM8974_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the WM8974 register space
-+ */
-+static int wm8974_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8974 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8974_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8974_reset(c) wm8974_write(c, WM8974_RESET, 0)
-+
-+static const char *wm8974_companding[] = {"Off", "NC", "u-law", "A-law" };
-+static const char *wm8974_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
-+static const char *wm8974_eqmode[] = {"Capture", "Playback" };
-+static const char *wm8974_bw[] = {"Narrow", "Wide" };
-+static const char *wm8974_eq1[] = {"80Hz", "105Hz", "135Hz", "175Hz" };
-+static const char *wm8974_eq2[] = {"230Hz", "300Hz", "385Hz", "500Hz" };
-+static const char *wm8974_eq3[] = {"650Hz", "850Hz", "1.1kHz", "1.4kHz" };
-+static const char *wm8974_eq4[] = {"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz" };
-+static const char *wm8974_eq5[] = {"5.3kHz", "6.9kHz", "9kHz", "11.7kHz" };
-+static const char *wm8974_alc[] = {"ALC", "Limiter" };
-+
-+static const struct soc_enum wm8974_enum[] = {
-+ SOC_ENUM_SINGLE(WM8974_COMP, 1, 4, wm8974_companding), /* adc */
-+ SOC_ENUM_SINGLE(WM8974_COMP, 3, 4, wm8974_companding), /* dac */
-+ SOC_ENUM_SINGLE(WM8974_DAC, 4, 4, wm8974_deemp),
-+ SOC_ENUM_SINGLE(WM8974_EQ1, 8, 2, wm8974_eqmode),
-+
-+ SOC_ENUM_SINGLE(WM8974_EQ1, 5, 4, wm8974_eq1),
-+ SOC_ENUM_SINGLE(WM8974_EQ2, 8, 2, wm8974_bw),
-+ SOC_ENUM_SINGLE(WM8974_EQ2, 5, 4, wm8974_eq2),
-+ SOC_ENUM_SINGLE(WM8974_EQ3, 8, 2, wm8974_bw),
-+
-+ SOC_ENUM_SINGLE(WM8974_EQ3, 5, 4, wm8974_eq3),
-+ SOC_ENUM_SINGLE(WM8974_EQ4, 8, 2, wm8974_bw),
-+ SOC_ENUM_SINGLE(WM8974_EQ4, 5, 4, wm8974_eq4),
-+ SOC_ENUM_SINGLE(WM8974_EQ5, 8, 2, wm8974_bw),
-+
-+ SOC_ENUM_SINGLE(WM8974_EQ5, 5, 4, wm8974_eq5),
-+ SOC_ENUM_SINGLE(WM8974_ALC3, 8, 2, wm8974_alc),
-+};
-+
-+static const struct snd_kcontrol_new wm8974_snd_controls[] = {
-+
-+SOC_SINGLE("Digital Loopback Switch", WM8974_COMP, 0, 1, 0),
-+
-+SOC_ENUM("DAC Companding", wm8974_enum[1]),
-+SOC_ENUM("ADC Companding", wm8974_enum[0]),
-+
-+SOC_ENUM("Playback De-emphasis", wm8974_enum[2]),
-+SOC_SINGLE("DAC Inversion Switch", WM8974_DAC, 0, 1, 0),
-+
-+SOC_SINGLE("PCM Volume", WM8974_DACVOL, 0, 127, 0),
-+
-+SOC_SINGLE("High Pass Filter Switch", WM8974_ADC, 8, 1, 0),
-+SOC_SINGLE("High Pass Cut Off", WM8974_ADC, 4, 7, 0),
-+SOC_SINGLE("ADC Inversion Switch", WM8974_COMP, 0, 1, 0),
-+
-+SOC_SINGLE("Capture Volume", WM8974_ADCVOL, 0, 127, 0),
-+
-+SOC_ENUM("Equaliser Function", wm8974_enum[3]),
-+SOC_ENUM("EQ1 Cut Off", wm8974_enum[4]),
-+SOC_SINGLE("EQ1 Volume", WM8974_EQ1, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ2 Bandwith", wm8974_enum[5]),
-+SOC_ENUM("EQ2 Cut Off", wm8974_enum[6]),
-+SOC_SINGLE("EQ2 Volume", WM8974_EQ2, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ3 Bandwith", wm8974_enum[7]),
-+SOC_ENUM("EQ3 Cut Off", wm8974_enum[8]),
-+SOC_SINGLE("EQ3 Volume", WM8974_EQ3, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ4 Bandwith", wm8974_enum[9]),
-+SOC_ENUM("EQ4 Cut Off", wm8974_enum[10]),
-+SOC_SINGLE("EQ4 Volume", WM8974_EQ4, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ5 Bandwith", wm8974_enum[11]),
-+SOC_ENUM("EQ5 Cut Off", wm8974_enum[12]),
-+SOC_SINGLE("EQ5 Volume", WM8974_EQ5, 0, 31, 1),
-+
-+SOC_SINGLE("DAC Playback Limiter Switch", WM8974_DACLIM1, 8, 1, 0),
-+SOC_SINGLE("DAC Playback Limiter Decay", WM8974_DACLIM1, 4, 15, 0),
-+SOC_SINGLE("DAC Playback Limiter Attack", WM8974_DACLIM1, 0, 15, 0),
-+
-+SOC_SINGLE("DAC Playback Limiter Threshold", WM8974_DACLIM2, 4, 7, 0),
-+SOC_SINGLE("DAC Playback Limiter Boost", WM8974_DACLIM2, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Enable Switch", WM8974_ALC1, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Max Gain", WM8974_ALC1, 3, 7, 0),
-+SOC_SINGLE("ALC Capture Min Gain", WM8974_ALC1, 0, 7, 0),
-+
-+SOC_SINGLE("ALC Capture ZC Switch", WM8974_ALC2, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Hold", WM8974_ALC2, 4, 7, 0),
-+SOC_SINGLE("ALC Capture Target", WM8974_ALC2, 0, 15, 0),
-+
-+SOC_ENUM("ALC Capture Mode", wm8974_enum[13]),
-+SOC_SINGLE("ALC Capture Decay", WM8974_ALC3, 4, 15, 0),
-+SOC_SINGLE("ALC Capture Attack", WM8974_ALC3, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Capture Noise Gate Switch", WM8974_NGATE, 3, 1, 0),
-+SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8974_NGATE, 0, 7, 0),
-+
-+SOC_SINGLE("Capture PGA ZC Switch", WM8974_INPPGA, 7, 1, 0),
-+SOC_SINGLE("Capture PGA Volume", WM8974_INPPGA, 0, 63, 0),
-+
-+SOC_SINGLE("Speaker Playback ZC Switch", WM8974_SPKVOL, 7, 1, 0),
-+SOC_SINGLE("Speaker Playback Switch", WM8974_SPKVOL, 6, 1, 1),
-+SOC_SINGLE("Speaker Playback Volume", WM8974_SPKVOL, 0, 63, 0),
-+
-+SOC_SINGLE("Capture Boost(+20dB)", WM8974_ADCBOOST, 8, 1, 0),
-+SOC_SINGLE("Mono Playback Switch", WM8974_MONOMIX, 6, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int wm8974_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8974_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8974_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Speaker Output Mixer */
-+static const struct snd_kcontrol_new wm8974_speaker_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8974_SPKMIX, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8974_SPKMIX, 5, 1, 0),
-+SOC_DAPM_SINGLE("PCM Playback Switch", WM8974_SPKMIX, 0, 1, 1),
-+};
-+
-+/* Mono Output Mixer */
-+static const struct snd_kcontrol_new wm8974_mono_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8974_MONOMIX, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8974_MONOMIX, 2, 1, 0),
-+SOC_DAPM_SINGLE("PCM Playback Switch", WM8974_MONOMIX, 0, 1, 1),
-+};
-+
-+/* AUX Input boost vol */
-+static const struct snd_kcontrol_new wm8974_aux_boost_controls =
-+SOC_DAPM_SINGLE("Aux Volume", WM8974_ADCBOOST, 0, 7, 0);
-+
-+/* Mic Input boost vol */
-+static const struct snd_kcontrol_new wm8974_mic_boost_controls =
-+SOC_DAPM_SINGLE("Mic Volume", WM8974_ADCBOOST, 4, 7, 0);
-+
-+/* Capture boost switch */
-+static const struct snd_kcontrol_new wm8974_capture_boost_controls =
-+SOC_DAPM_SINGLE("Capture Boost Switch", WM8974_INPPGA, 6, 1, 0);
-+
-+/* Aux In to PGA */
-+static const struct snd_kcontrol_new wm8974_aux_capture_boost_controls =
-+SOC_DAPM_SINGLE("Aux Capture Boost Switch", WM8974_INPPGA, 2, 1, 0);
-+
-+/* Mic P In to PGA */
-+static const struct snd_kcontrol_new wm8974_micp_capture_boost_controls =
-+SOC_DAPM_SINGLE("Mic P Capture Boost Switch", WM8974_INPPGA, 0, 1, 0);
-+
-+/* Mic N In to PGA */
-+static const struct snd_kcontrol_new wm8974_micn_capture_boost_controls =
-+SOC_DAPM_SINGLE("Mic N Capture Boost Switch", WM8974_INPPGA, 1, 1, 0);
-+
-+static const struct snd_soc_dapm_widget wm8974_dapm_widgets[] = {
-+SND_SOC_DAPM_MIXER("Speaker Mixer", WM8974_POWER3, 2, 0,
-+ &wm8974_speaker_mixer_controls[0],
-+ ARRAY_SIZE(wm8974_speaker_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Mono Mixer", WM8974_POWER3, 3, 0,
-+ &wm8974_mono_mixer_controls[0],
-+ ARRAY_SIZE(wm8974_mono_mixer_controls)),
-+SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8974_POWER3, 0, 0),
-+SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8974_POWER3, 0, 0),
-+SND_SOC_DAPM_PGA("Aux Input", WM8974_POWER1, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkN Out", WM8974_POWER3, 5, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkP Out", WM8974_POWER3, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono Out", WM8974_POWER3, 7, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic PGA", WM8974_POWER2, 2, 0, NULL, 0),
-+
-+SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8974_aux_boost_controls, 1),
-+SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8974_mic_boost_controls, 1),
-+SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8974_capture_boost_controls),
-+
-+SND_SOC_DAPM_MIXER("Boost Mixer", WM8974_POWER2, 4, 0, NULL, 0),
-+
-+SND_SOC_DAPM_MICBIAS("Mic Bias", WM8974_POWER1, 4, 0),
-+
-+SND_SOC_DAPM_INPUT("MICN"),
-+SND_SOC_DAPM_INPUT("MICP"),
-+SND_SOC_DAPM_INPUT("AUX"),
-+SND_SOC_DAPM_OUTPUT("MONOOUT"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTP"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTN"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* Mono output mixer */
-+ {"Mono Mixer", "PCM Playback Switch", "DAC"},
-+ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Speaker output mixer */
-+ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
-+ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Outputs */
-+ {"Mono Out", NULL, "Mono Mixer"},
-+ {"MONOOUT", NULL, "Mono Out"},
-+ {"SpkN Out", NULL, "Speaker Mixer"},
-+ {"SpkP Out", NULL, "Speaker Mixer"},
-+ {"SPKOUTN", NULL, "SpkN Out"},
-+ {"SPKOUTP", NULL, "SpkP Out"},
-+
-+ /* Boost Mixer */
-+ {"Boost Mixer", NULL, "ADC"},
-+ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
-+ {"Aux Boost", "Aux Volume", "Boost Mixer"},
-+ {"Capture Boost", "Capture Switch", "Boost Mixer"},
-+ {"Mic Boost", "Mic Volume", "Boost Mixer"},
-+
-+ /* Inputs */
-+ {"MICP", NULL, "Mic Boost"},
-+ {"MICN", NULL, "Mic PGA"},
-+ {"Mic PGA", NULL, "Capture Boost"},
-+ {"AUX", NULL, "Aux Input"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8974_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8974_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8974_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct pll_ {
-+ unsigned int in_hz, out_hz;
-+ unsigned int pre:4; /* prescale - 1 */
-+ unsigned int n:4;
-+ unsigned int k;
-+};
-+
-+struct pll_ pll[] = {
-+ {12000000, 11289600, 0, 7, 0x86c220},
-+ {12000000, 12288000, 0, 8, 0x3126e8},
-+ {13000000, 11289600, 0, 6, 0xf28bd4},
-+ {13000000, 12288000, 0, 7, 0x8fd525},
-+ {12288000, 11289600, 0, 7, 0x59999a},
-+ {11289600, 12288000, 0, 8, 0x80dee9},
-+ /* liam - add more entries */
-+};
-+
-+static int set_pll(struct snd_soc_codec *codec, unsigned int in,
-+ unsigned int out)
-+{
-+ int i;
-+ u16 reg;
-+
-+ if(out == 0) {
-+ reg = wm8974_read_reg_cache(codec, WM8974_POWER1);
-+ wm8974_write(codec, WM8974_POWER1, reg & 0x1df);
-+ return 0;
-+ }
-+
-+ for(i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (in == pll[i].in_hz && out == pll[i].out_hz) {
-+ wm8974_write(codec, WM8974_PLLN, (pll[i].pre << 4) | pll[i].n);
-+ wm8974_write(codec, WM8974_PLLK1, pll[i].k >> 18);
-+ wm8974_write(codec, WM8974_PLLK1, (pll[i].k >> 9) && 0x1ff);
-+ wm8974_write(codec, WM8974_PLLK1, pll[i].k && 0x1ff);
-+ reg = wm8974_read_reg_cache(codec, WM8974_POWER1);
-+ wm8974_write(codec, WM8974_POWER1, reg | 0x020);
-+ return 0;
-+ }
-+ }
-+ return -EINVAL;
-+}
-+
-+/* mclk dividers * 2 */
-+static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
-+
-+/* we need 256FS to drive the DAC's and ADC's */
-+static unsigned int wm8974_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if ((best_clk >> 1) * mclk_div[i] == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = mclk_div[i];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (pll[i].in_hz == clk) {
-+ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
-+ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
-+ dai->pll_in = clk;
-+ dai->pll_out = pll[i].out_hz;
-+ dai->clk_div = mclk_div[j];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+static int wm8974_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_codec_dai *dai = rtd->codec_dai;
-+ u16 iface = 0, bfs, clk = 0, adn;
-+ int fs = 48000 << 7, i;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ switch (bfs) {
-+ case 2:
-+ clk |= 0x1 << 2;
-+ break;
-+ case 4:
-+ clk |= 0x2 << 2;
-+ break;
-+ case 8:
-+ clk |= 0x3 << 2;
-+ break;
-+ case 16:
-+ clk |= 0x4 << 2;
-+ break;
-+ case 32:
-+ clk |= 0x5 << 2;
-+ break;
-+ }
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ clk |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0010;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0008;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x00018;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0020;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0040;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x0060;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0180;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0100;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0080;
-+ break;
-+ }
-+
-+ /* filter coefficient */
-+ adn = wm8974_read_reg_cache(codec, WM8974_ADD) & 0x1f1;
-+ switch (rtd->codec_dai->dai_runtime.pcmrate) {
-+ case SNDRV_PCM_RATE_8000:
-+ adn |= 0x5 << 1;
-+ fs = 8000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_11025:
-+ adn |= 0x4 << 1;
-+ fs = 11025 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_16000:
-+ adn |= 0x3 << 1;
-+ fs = 16000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_22050:
-+ adn |= 0x2 << 1;
-+ fs = 22050 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_32000:
-+ adn |= 0x1 << 1;
-+ fs = 32000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_44100:
-+ fs = 44100 << 7;
-+ break;
-+ }
-+
-+ /* do we need to enable the PLL */
-+ if(dai->pll_in)
-+ set_pll(codec, dai->pll_in, dai->pll_out);
-+
-+ /* divide the clock to 256 fs */
-+ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if (dai->clk_div == mclk_div[i]) {
-+ clk |= i << 5;
-+ clk &= 0xff;
-+ goto set;
-+ }
-+ }
-+
-+set:
-+ /* set iface */
-+ wm8974_write(codec, WM8974_IFACE, iface);
-+ wm8974_write(codec, WM8974_CLOCK, clk);
-+
-+ return 0;
-+}
-+
-+static int wm8974_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ set_pll(codec, 0, 0);
-+ return 0;
-+}
-+
-+static int wm8974_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8974_read_reg_cache(codec, WM8974_DAC) & 0xffbf;
-+ if(mute)
-+ wm8974_write(codec, WM8974_DAC, mute_reg | 0x40);
-+ else
-+ wm8974_write(codec, WM8974_DAC, mute_reg);
-+ return 0;
-+}
-+
-+/* liam need to make this lower power with dapm */
-+static int wm8974_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, dac unmute, active */
-+ wm8974_write(codec, WM8974_POWER1, 0x1ff);
-+ wm8974_write(codec, WM8974_POWER2, 0x1ff);
-+ wm8974_write(codec, WM8974_POWER3, 0x1ff);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, dac mute, inactive */
-+
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8974_write(codec, WM8974_POWER1, 0x0);
-+ wm8974_write(codec, WM8974_POWER2, 0x0);
-+ wm8974_write(codec, WM8974_POWER3, 0x0);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8974_dai = {
-+ .name = "WM8974 HiFi",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 1,
-+ },
-+ .config_sysclk = wm8974_config_sysclk,
-+ .digital_mute = wm8974_mute,
-+ .ops = {
-+ .prepare = wm8974_pcm_prepare,
-+ .hw_free = wm8974_hw_free,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8974_modes),
-+ .mode = wm8974_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8974_dai);
-+
-+static int wm8974_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8974_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8974_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8974_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8974 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8974_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ codec->name = "WM8974";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8974_read_reg_cache;
-+ codec->write = wm8974_write;
-+ codec->dapm_event = wm8974_dapm_event;
-+ codec->dai = &wm8974_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8974_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8974_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8974_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8974_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8974_reg);
-+
-+ wm8974_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8974_add_controls(codec);
-+ wm8974_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if(ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8974_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8974 2 wire address is 0x1a
-+ */
-+#define I2C_DRIVERID_WM8974 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8974_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int wm8974_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8974_socdev;
-+ struct wm8974_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL) {
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if(ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8974_init(socdev);
-+ if(ret < 0) {
-+ err("failed to initialise WM8974\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int wm8974_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec *codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int wm8974_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8974_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8974_i2c_driver = {
-+ .driver = {
-+ .name = "WM8974 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8974,
-+ .attach_adapter = wm8974_i2c_attach,
-+ .detach_client = wm8974_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8974",
-+ .driver = &wm8974_i2c_driver,
-+};
-+#endif
-+
-+static int wm8974_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8974_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8974 Audio Codec %s", WM8974_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8974_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8974_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8974_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8974_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8974_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8974 = {
-+ .probe = wm8974_probe,
-+ .remove = wm8974_remove,
-+ .suspend = wm8974_suspend,
-+ .resume = wm8974_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8974);
-+
-+MODULE_DESCRIPTION("ASoC WM8974 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8974.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8974.h
-@@ -0,0 +1,64 @@
-+/*
-+ * wm8974.h -- WM8974 Soc Audio driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _WM8974_H
-+#define _WM8974_H
-+
-+/* WM8974 register space */
-+
-+#define WM8974_RESET 0x0
-+#define WM8974_POWER1 0x1
-+#define WM8974_POWER2 0x2
-+#define WM8974_POWER3 0x3
-+#define WM8974_IFACE 0x4
-+#define WM8974_COMP 0x5
-+#define WM8974_CLOCK 0x6
-+#define WM8974_ADD 0x7
-+#define WM8974_GPIO 0x8
-+#define WM8974_DAC 0xa
-+#define WM8974_DACVOL 0xb
-+#define WM8974_ADC 0xe
-+#define WM8974_ADCVOL 0xf
-+#define WM8974_EQ1 0x12
-+#define WM8974_EQ2 0x13
-+#define WM8974_EQ3 0x14
-+#define WM8974_EQ4 0x15
-+#define WM8974_EQ5 0x16
-+#define WM8974_DACLIM1 0x18
-+#define WM8974_DACLIM2 0x19
-+#define WM8974_NOTCH1 0x1b
-+#define WM8974_NOTCH2 0x1c
-+#define WM8974_NOTCH3 0x1d
-+#define WM8974_NOTCH4 0x1e
-+#define WM8974_ALC1 0x20
-+#define WM8974_ALC2 0x21
-+#define WM8974_ALC3 0x22
-+#define WM8974_NGATE 0x23
-+#define WM8974_PLLN 0x24
-+#define WM8974_PLLK1 0x25
-+#define WM8974_PLLK2 0x26
-+#define WM8974_PLLK3 0x27
-+#define WM8974_ATTEN 0x28
-+#define WM8974_INPUT 0x2c
-+#define WM8974_INPPGA 0x2d
-+#define WM8974_ADCBOOST 0x2f
-+#define WM8974_OUTPUT 0x31
-+#define WM8974_SPKMIX 0x32
-+#define WM8974_SPKVOL 0x36
-+#define WM8974_MONOMIX 0x38
-+
-+#define WM8974_CACHEREGNUM 57
-+
-+struct wm8974_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8974_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8974;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm9712.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm9712.c
-@@ -0,0 +1,781 @@
-+/*
-+ * wm9712.c -- ALSA Soc WM9712 codec support
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 4th Feb 2006 Initial version.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/ac97_codec.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#define WM9712_VERSION "0.4"
-+
-+static unsigned int ac97_read(struct snd_soc_codec *codec,
-+ unsigned int reg);
-+static int ac97_write(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int val);
-+
-+#define AC97_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define AC97_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+/* may need to expand this */
-+static struct snd_soc_dai_mode ac97_modes[] = {
-+ {
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE,
-+ .pcmrate = AC97_RATES,
-+ .pcmdir = AC97_DIR,
-+ },
-+};
-+
-+/*
-+ * WM9712 register cache
-+ */
-+static const u16 wm9712_reg[] = {
-+ 0x6174, 0x8000, 0x8000, 0x8000, // 6
-+ 0xf0f0, 0xaaa0, 0xc008, 0x6808, // e
-+ 0xe808, 0xaaa0, 0xad00, 0x8000, // 16
-+ 0xe808, 0x3000, 0x8000, 0x0000, // 1e
-+ 0x0000, 0x0000, 0x0000, 0x000f, // 26
-+ 0x0405, 0x0410, 0xbb80, 0xbb80, // 2e
-+ 0x0000, 0xbb80, 0x0000, 0x0000, // 36
-+ 0x0000, 0x2000, 0x0000, 0x0000, // 3e
-+ 0x0000, 0x0000, 0x0000, 0x0000, // 46
-+ 0x0000, 0x0000, 0xf83e, 0xffff, // 4e
-+ 0x0000, 0x0000, 0x0000, 0xf83e, // 56
-+ 0x0008, 0x0000, 0x0000, 0x0000, // 5e
-+ 0xb032, 0x3e00, 0x0000, 0x0000, // 66
-+ 0x0000, 0x0000, 0x0000, 0x0000, // 6e
-+ 0x0000, 0x0000, 0x0000, 0x0006, // 76
-+ 0x0001, 0x0000, 0x574d, 0x4c12, // 7e
-+ 0x0000, 0x0000 // virtual hp mixers
-+};
-+
-+/* virtual HP mixers regs */
-+#define HPL_MIXER 0x80
-+#define HPR_MIXER 0x82
-+
-+static const char *wm9712_alc_select[] = {"None", "Left", "Right", "Stereo"};
-+static const char *wm9712_alc_mux[] = {"Stereo", "Left", "Right", "None"};
-+static const char *wm9712_out3_src[] = {"Left", "VREF", "Left + Right",
-+ "Mono"};
-+static const char *wm9712_spk_src[] = {"Speaker Mix", "Headphone Mix"};
-+static const char *wm9712_rec_adc[] = {"Stereo", "Left", "Right", "Mute"};
-+static const char *wm9712_base[] = {"Linear Control", "Adaptive Boost"};
-+static const char *wm9712_rec_gain[] = {"+1.5dB Steps", "+0.75dB Steps"};
-+static const char *wm9712_mic[] = {"Mic 1", "Differential", "Mic 2",
-+ "Stereo"};
-+static const char *wm9712_rec_sel[] = {"Mic", "NC", "NC", "Speaker Mixer",
-+ "Line", "Headphone Mixer", "Phone Mixer", "Phone"};
-+static const char *wm9712_ng_type[] = {"Constant Gain", "Mute"};
-+static const char *wm9712_diff_sel[] = {"Mic", "Line"};
-+
-+static const struct soc_enum wm9712_enum[] = {
-+SOC_ENUM_SINGLE(AC97_PCI_SVID, 14, 4, wm9712_alc_select),
-+SOC_ENUM_SINGLE(AC97_VIDEO, 12, 4, wm9712_alc_mux),
-+SOC_ENUM_SINGLE(AC97_AUX, 9, 4, wm9712_out3_src),
-+SOC_ENUM_SINGLE(AC97_AUX, 8, 2, wm9712_spk_src),
-+SOC_ENUM_SINGLE(AC97_REC_SEL, 12, 4, wm9712_rec_adc),
-+SOC_ENUM_SINGLE(AC97_MASTER_TONE, 15, 2, wm9712_base),
-+SOC_ENUM_DOUBLE(AC97_REC_GAIN, 14, 6, 2, wm9712_rec_gain),
-+SOC_ENUM_SINGLE(AC97_MIC, 5, 4, wm9712_mic),
-+SOC_ENUM_SINGLE(AC97_REC_SEL, 8, 8, wm9712_rec_sel),
-+SOC_ENUM_SINGLE(AC97_REC_SEL, 0, 8, wm9712_rec_sel),
-+SOC_ENUM_SINGLE(AC97_PCI_SVID, 5, 2, wm9712_ng_type),
-+SOC_ENUM_SINGLE(0x5c, 8, 2, wm9712_diff_sel),
-+};
-+
-+static const struct snd_kcontrol_new wm9712_snd_ac97_controls[] = {
-+SOC_DOUBLE("Speaker Playback Volume", AC97_MASTER, 8, 0, 31, 1),
-+SOC_SINGLE("Speaker Playback Switch", AC97_MASTER, 15, 1, 1),
-+SOC_DOUBLE("Headphone Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1),
-+SOC_SINGLE("Headphone Playback Switch", AC97_HEADPHONE,15, 1, 1),
-+
-+SOC_SINGLE("Speaker Playback ZC Switch", AC97_MASTER, 7, 1, 0),
-+SOC_SINGLE("Speaker Playback Invert Switch", AC97_MASTER, 6, 1, 0),
-+SOC_SINGLE("Headphone Playback ZC Switch", AC97_HEADPHONE, 7, 1, 0),
-+SOC_SINGLE("Mono Playback ZC Switch", AC97_MASTER_MONO, 7, 1, 0),
-+SOC_SINGLE("Mono Playback Volume", AC97_MASTER_MONO, 0, 31, 0),
-+
-+SOC_SINGLE("ALC Target Volume", AC97_CODEC_CLASS_REV, 12, 15, 0),
-+SOC_SINGLE("ALC Hold Time", AC97_CODEC_CLASS_REV, 8, 15, 0),
-+SOC_SINGLE("ALC Decay Time", AC97_CODEC_CLASS_REV, 4, 15, 0),
-+SOC_SINGLE("ALC Attack Time", AC97_CODEC_CLASS_REV, 0, 15, 0),
-+SOC_ENUM("ALC Function", wm9712_enum[0]),
-+SOC_SINGLE("ALC Max Volume", AC97_PCI_SVID, 11, 7, 0),
-+SOC_SINGLE("ALC ZC Timeout", AC97_PCI_SVID, 9, 3, 1),
-+SOC_SINGLE("ALC ZC Switch", AC97_PCI_SVID, 8, 1, 0),
-+SOC_SINGLE("ALC NG Switch", AC97_PCI_SVID, 7, 1, 0),
-+SOC_ENUM("ALC NG Type", wm9712_enum[10]),
-+SOC_SINGLE("ALC NG Threshold", AC97_PCI_SVID, 0, 31, 1),
-+
-+SOC_SINGLE("Mic Headphone Volume", AC97_VIDEO, 12, 7, 1),
-+SOC_SINGLE("ALC Headphone Volume", AC97_VIDEO, 7, 7, 1),
-+
-+SOC_SINGLE("Out3 Switch", AC97_AUX, 15, 1, 1),
-+SOC_SINGLE("Out3 ZC Switch", AC97_AUX, 7, 1, 1),
-+SOC_SINGLE("Out3 Volume", AC97_AUX, 0, 31, 1),
-+
-+SOC_SINGLE("PCBeep Bypass Headphone Volume", AC97_PC_BEEP, 12, 7, 1),
-+SOC_SINGLE("PCBeep Bypass Speaker Volume", AC97_PC_BEEP, 8, 7, 1),
-+SOC_SINGLE("PCBeep Bypass Phone Volume", AC97_PC_BEEP, 4, 7, 1),
-+
-+SOC_SINGLE("Aux Playback Headphone Volume", AC97_CD, 12, 7, 1),
-+SOC_SINGLE("Aux Playback Speaker Volume", AC97_CD, 8, 7, 1),
-+SOC_SINGLE("Aux Playback Phone Volume", AC97_CD, 4, 7, 1),
-+
-+SOC_SINGLE("Phone Volume", AC97_PHONE, 0, 15, 0),
-+SOC_DOUBLE("Line Capture Volume", AC97_LINE, 8, 0, 31, 1),
-+
-+SOC_SINGLE("Capture 20dB Boost Switch", AC97_REC_SEL, 14, 1, 0),
-+SOC_SINGLE("Capture to Phone 20dB Boost Switch", AC97_REC_SEL, 11, 1, 1),
-+
-+SOC_SINGLE("3D Upper Cut-off Switch", AC97_3D_CONTROL, 5, 1, 1),
-+SOC_SINGLE("3D Lower Cut-off Switch", AC97_3D_CONTROL, 4, 1, 1),
-+SOC_SINGLE("3D Playback Volume", AC97_3D_CONTROL, 0, 15, 0),
-+
-+SOC_ENUM("Bass Control", wm9712_enum[5]),
-+SOC_SINGLE("Bass Cut-off Switch", AC97_MASTER_TONE, 12, 1, 1),
-+SOC_SINGLE("Tone Cut-off Switch", AC97_MASTER_TONE, 4, 1, 1),
-+SOC_SINGLE("Playback Attenuate (-6dB) Switch", AC97_MASTER_TONE, 6, 1, 0),
-+SOC_SINGLE("Bass Volume", AC97_MASTER_TONE, 8, 15, 0),
-+SOC_SINGLE("Treble Volume", AC97_MASTER_TONE, 0, 15, 0),
-+
-+SOC_SINGLE("Capture ADC Switch", AC97_REC_GAIN, 15, 1, 1),
-+SOC_ENUM("Capture Volume Steps", wm9712_enum[6]),
-+SOC_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 63, 1),
-+SOC_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0),
-+
-+SOC_SINGLE("Mic 1 Volume", AC97_MIC, 8, 31, 1),
-+SOC_SINGLE("Mic 2 Volume", AC97_MIC, 0, 31, 1),
-+SOC_SINGLE("Mic 20dB Boost Switch", AC97_MIC, 7, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int wm9712_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm9712_snd_ac97_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm9712_snd_ac97_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/* We have to create a fake left and right HP mixers because
-+ * the codec only has a single control that is shared by both channels.
-+ * This makes it impossible to determine the audio path.
-+ */
-+static int mixer_event (struct snd_soc_dapm_widget *w, int event)
-+{
-+ u16 l, r, beep, line, phone, mic, pcm, aux;
-+
-+ l = ac97_read(w->codec, HPL_MIXER);
-+ r = ac97_read(w->codec, HPR_MIXER);
-+ beep = ac97_read(w->codec, AC97_PC_BEEP);
-+ mic = ac97_read(w->codec, AC97_VIDEO);
-+ phone = ac97_read(w->codec, AC97_PHONE);
-+ line = ac97_read(w->codec, AC97_LINE);
-+ pcm = ac97_read(w->codec, AC97_PCM);
-+ aux = ac97_read(w->codec, AC97_CD);
-+
-+ if (l & 0x1 || r & 0x1)
-+ ac97_write(w->codec, AC97_VIDEO, mic & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_VIDEO, mic | 0x8000);
-+
-+ if (l & 0x2 || r & 0x2)
-+ ac97_write(w->codec, AC97_PCM, pcm & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_PCM, pcm | 0x8000);
-+
-+ if (l & 0x4 || r & 0x4)
-+ ac97_write(w->codec, AC97_LINE, line & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_LINE, line | 0x8000);
-+
-+ if (l & 0x8 || r & 0x8)
-+ ac97_write(w->codec, AC97_PHONE, phone & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_PHONE, phone | 0x8000);
-+
-+ if (l & 0x10 || r & 0x10)
-+ ac97_write(w->codec, AC97_CD, aux & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_CD, aux | 0x8000);
-+
-+ if (l & 0x20 || r & 0x20)
-+ ac97_write(w->codec, AC97_PC_BEEP, beep & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_PC_BEEP, beep | 0x8000);
-+
-+ return 0;
-+}
-+
-+/* Left Headphone Mixers */
-+static const struct snd_kcontrol_new wm9712_hpl_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("PCBeep Bypass Switch", HPL_MIXER, 5, 1, 0),
-+ SOC_DAPM_SINGLE("Aux Playback Switch", HPL_MIXER, 4, 1, 0),
-+ SOC_DAPM_SINGLE("Phone Bypass Switch", HPL_MIXER, 3, 1, 0),
-+ SOC_DAPM_SINGLE("Line Bypass Switch", HPL_MIXER, 2, 1, 0),
-+ SOC_DAPM_SINGLE("PCM Playback Switch", HPL_MIXER, 1, 1, 0),
-+ SOC_DAPM_SINGLE("Mic Sidetone Switch", HPL_MIXER, 0, 1, 0),
-+};
-+
-+/* Right Headphone Mixers */
-+static const struct snd_kcontrol_new wm9712_hpr_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("PCBeep Bypass Switch", HPR_MIXER, 5, 1, 0),
-+ SOC_DAPM_SINGLE("Aux Playback Switch", HPR_MIXER, 4, 1, 0),
-+ SOC_DAPM_SINGLE("Phone Bypass Switch", HPR_MIXER, 3, 1, 0),
-+ SOC_DAPM_SINGLE("Line Bypass Switch", HPR_MIXER, 2, 1, 0),
-+ SOC_DAPM_SINGLE("PCM Playback Switch", HPR_MIXER, 1, 1, 0),
-+ SOC_DAPM_SINGLE("Mic Sidetone Switch", HPR_MIXER, 0, 1, 0),
-+};
-+
-+/* Speaker Mixer */
-+static const struct snd_kcontrol_new wm9712_speaker_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("PCBeep Bypass Switch", AC97_PC_BEEP, 11, 1, 1),
-+ SOC_DAPM_SINGLE("Aux Playback Switch", AC97_CD, 11, 1, 1),
-+ SOC_DAPM_SINGLE("Phone Bypass Switch", AC97_PHONE, 14, 1, 1),
-+ SOC_DAPM_SINGLE("Line Bypass Switch", AC97_LINE, 14, 1, 1),
-+ SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PCM, 14, 1, 1),
-+};
-+
-+/* Phone Mixer */
-+static const struct snd_kcontrol_new wm9712_phone_mixer_controls[] = {
-+ SOC_DAPM_SINGLE("PCBeep Bypass Switch", AC97_PC_BEEP, 7, 1, 1),
-+ SOC_DAPM_SINGLE("Aux Playback Switch", AC97_CD, 7, 1, 1),
-+ SOC_DAPM_SINGLE("Line Bypass Switch", AC97_LINE, 13, 1, 1),
-+ SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PCM, 13, 1, 1),
-+ SOC_DAPM_SINGLE("Mic 1 Sidetone Switch", AC97_MIC, 14, 1, 1),
-+ SOC_DAPM_SINGLE("Mic 2 Sidetone Switch", AC97_MIC, 13, 1, 1),
-+};
-+
-+/* ALC headphone mux */
-+static const struct snd_kcontrol_new wm9712_alc_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[1]);
-+
-+/* out 3 mux */
-+static const struct snd_kcontrol_new wm9712_out3_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[2]);
-+
-+/* spk mux */
-+static const struct snd_kcontrol_new wm9712_spk_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[3]);
-+
-+/* Capture to Phone mux */
-+static const struct snd_kcontrol_new wm9712_capture_phone_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[4]);
-+
-+/* Capture left select */
-+static const struct snd_kcontrol_new wm9712_capture_selectl_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[8]);
-+
-+/* Capture right select */
-+static const struct snd_kcontrol_new wm9712_capture_selectr_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[9]);
-+
-+/* Mic select */
-+static const struct snd_kcontrol_new wm9712_mic_src_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[7]);
-+
-+/* diff select */
-+static const struct snd_kcontrol_new wm9712_diff_sel_controls =
-+SOC_DAPM_ENUM("Route", wm9712_enum[11]);
-+
-+static const struct snd_soc_dapm_widget wm9712_dapm_widgets[] = {
-+SND_SOC_DAPM_MUX("ALC Sidetone Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9712_alc_mux_controls),
-+SND_SOC_DAPM_MUX("Out3 Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9712_out3_mux_controls),
-+SND_SOC_DAPM_MUX("Speaker Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9712_spk_mux_controls),
-+SND_SOC_DAPM_MUX("Capture Phone Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9712_capture_phone_mux_controls),
-+SND_SOC_DAPM_MUX("Left Capture Select", SND_SOC_NOPM, 0, 0,
-+ &wm9712_capture_selectl_controls),
-+SND_SOC_DAPM_MUX("Right Capture Select", SND_SOC_NOPM, 0, 0,
-+ &wm9712_capture_selectr_controls),
-+SND_SOC_DAPM_MUX("Mic Select Source", SND_SOC_NOPM, 0, 0,
-+ &wm9712_mic_src_controls),
-+SND_SOC_DAPM_MUX("Differential Source", SND_SOC_NOPM, 0, 0,
-+ &wm9712_diff_sel_controls),
-+SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
-+SND_SOC_DAPM_MIXER_E("Left HP Mixer", AC97_INT_PAGING, 9, 1,
-+ &wm9712_hpl_mixer_controls[0], ARRAY_SIZE(wm9712_hpl_mixer_controls),
-+ mixer_event, SND_SOC_DAPM_POST_REG),
-+SND_SOC_DAPM_MIXER_E("Right HP Mixer", AC97_INT_PAGING, 8, 1,
-+ &wm9712_hpr_mixer_controls[0], ARRAY_SIZE(wm9712_hpr_mixer_controls),
-+ mixer_event, SND_SOC_DAPM_POST_REG),
-+SND_SOC_DAPM_MIXER("Phone Mixer", AC97_INT_PAGING, 6, 1,
-+ &wm9712_phone_mixer_controls[0], ARRAY_SIZE(wm9712_phone_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Speaker Mixer", AC97_INT_PAGING, 7, 1,
-+ &wm9712_speaker_mixer_controls[0],
-+ ARRAY_SIZE(wm9712_speaker_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
-+SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", AC97_INT_PAGING, 14, 1),
-+SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", AC97_INT_PAGING, 13, 1),
-+SND_SOC_DAPM_DAC("Aux DAC", "Aux Playback", SND_SOC_NOPM, 0, 0),
-+SND_SOC_DAPM_ADC("Left ADC", "Left HiFi Capture", AC97_INT_PAGING, 12, 1),
-+SND_SOC_DAPM_ADC("Right ADC", "Right HiFi Capture", AC97_INT_PAGING, 11, 1),
-+SND_SOC_DAPM_PGA("Headphone PGA", AC97_INT_PAGING, 4, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Speaker PGA", AC97_INT_PAGING, 3, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Out 3 PGA", AC97_INT_PAGING, 5, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Line PGA", AC97_INT_PAGING, 2, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Phone PGA", AC97_INT_PAGING, 1, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic PGA", AC97_INT_PAGING, 0, 1, NULL, 0),
-+SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_INT_PAGING, 10, 1),
-+SND_SOC_DAPM_OUTPUT("MONOOUT"),
-+SND_SOC_DAPM_OUTPUT("HPOUTL"),
-+SND_SOC_DAPM_OUTPUT("HPOUTR"),
-+SND_SOC_DAPM_OUTPUT("LOUT2"),
-+SND_SOC_DAPM_OUTPUT("ROUT2"),
-+SND_SOC_DAPM_OUTPUT("OUT3"),
-+SND_SOC_DAPM_INPUT("LINEINL"),
-+SND_SOC_DAPM_INPUT("LINEINR"),
-+SND_SOC_DAPM_INPUT("PHONE"),
-+SND_SOC_DAPM_INPUT("PCBEEP"),
-+SND_SOC_DAPM_INPUT("MIC1"),
-+SND_SOC_DAPM_INPUT("MIC2"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* virtual mixer - mixes left & right channels for spk and mono */
-+ {"AC97 Mixer", NULL, "Left DAC"},
-+ {"AC97 Mixer", NULL, "Right DAC"},
-+
-+ /* Left HP mixer */
-+ {"Left HP Mixer", "PCBeep Bypass Switch", "PCBEEP"},
-+ {"Left HP Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Left HP Mixer", "Phone Bypass Switch", "Phone PGA"},
-+ {"Left HP Mixer", "Line Bypass Switch", "Line PGA"},
-+ {"Left HP Mixer", "PCM Playback Switch", "Left DAC"},
-+ {"Left HP Mixer", "Mic Sidetone Switch", "Mic PGA"},
-+ {"Left HP Mixer", NULL, "ALC Sidetone Mux"},
-+ //{"Right HP Mixer", NULL, "HP Mixer"},
-+
-+ /* Right HP mixer */
-+ {"Right HP Mixer", "PCBeep Bypass Switch", "PCBEEP"},
-+ {"Right HP Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Right HP Mixer", "Phone Bypass Switch", "Phone PGA"},
-+ {"Right HP Mixer", "Line Bypass Switch", "Line PGA"},
-+ {"Right HP Mixer", "PCM Playback Switch", "Right DAC"},
-+ {"Right HP Mixer", "Mic Sidetone Switch", "Mic PGA"},
-+ {"Right HP Mixer", NULL, "ALC Sidetone Mux"},
-+
-+ /* speaker mixer */
-+ {"Speaker Mixer", "PCBeep Bypass Switch", "PCBEEP"},
-+ {"Speaker Mixer", "Line Bypass Switch", "Line PGA"},
-+ {"Speaker Mixer", "PCM Playback Switch", "AC97 Mixer"},
-+ {"Speaker Mixer", "Phone Bypass Switch", "Phone PGA"},
-+ {"Speaker Mixer", "Aux Playback Switch", "Aux DAC"},
-+
-+ /* Phone mixer */
-+ {"Phone Mixer", "PCBeep Bypass Switch", "PCBEEP"},
-+ {"Phone Mixer", "Line Bypass Switch", "Line PGA"},
-+ {"Phone Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Phone Mixer", "PCM Playback Switch", "AC97 Mixer"},
-+ {"Phone Mixer", "Mic 1 Sidetone Switch", "Mic PGA"},
-+ {"Phone Mixer", "Mic 2 Sidetone Switch", "Mic PGA"},
-+
-+ /* inputs */
-+ {"Line PGA", NULL, "LINEINL"},
-+ {"Line PGA", NULL, "LINEINR"},
-+ {"Phone PGA", NULL, "PHONE"},
-+ {"Mic PGA", NULL, "MIC1"},
-+ {"Mic PGA", NULL, "MIC2"},
-+
-+ /* left capture selector */
-+ {"Left Capture Select", "Mic", "MIC1"},
-+ {"Left Capture Select", "Speaker Mixer", "Speaker Mixer"},
-+ {"Left Capture Select", "Line", "LINEINL"},
-+ {"Left Capture Select", "Headphone Mixer", "Left HP Mixer"},
-+ {"Left Capture Select", "Phone Mixer", "Phone Mixer"},
-+ {"Left Capture Select", "Phone", "PHONE"},
-+
-+ /* right capture selector */
-+ {"Right Capture Select", "Mic", "MIC2"},
-+ {"Right Capture Select", "Speaker Mixer", "Speaker Mixer"},
-+ {"Right Capture Select", "Line", "LINEINR"},
-+ {"Right Capture Select", "Headphone Mixer", "Right HP Mixer"},
-+ {"Right Capture Select", "Phone Mixer", "Phone Mixer"},
-+ {"Right Capture Select", "Phone", "PHONE"},
-+
-+ /* ALC Sidetone */
-+ {"ALC Sidetone Mux", "Stereo", "Left Capture Select"},
-+ {"ALC Sidetone Mux", "Stereo", "Right Capture Select"},
-+ {"ALC Sidetone Mux", "Left", "Left Capture Select"},
-+ {"ALC Sidetone Mux", "Right", "Right Capture Select"},
-+
-+ /* ADC's */
-+ {"Left ADC", NULL, "Left Capture Select"},
-+ {"Right ADC", NULL, "Right Capture Select"},
-+
-+ /* outputs */
-+ {"MONOOUT", NULL, "Phone Mixer"},
-+ {"HPOUTL", NULL, "Headphone PGA"},
-+ {"Headphone PGA", NULL, "Left HP Mixer"},
-+ {"HPOUTR", NULL, "Headphone PGA"},
-+ {"Headphone PGA", NULL, "Right HP Mixer"},
-+
-+ /* mono hp mixer */
-+ {"Mono HP Mixer", NULL, "Left HP Mixer"},
-+ {"Mono HP Mixer", NULL, "Right HP Mixer"},
-+
-+ /* Out3 Mux */
-+ {"Out3 Mux", "Left", "Left HP Mixer"},
-+ {"Out3 Mux", "Mono", "Phone Mixer"},
-+ {"Out3 Mux", "Left + Right", "Mono HP Mixer"},
-+ {"Out 3 PGA", NULL, "Out3 Mux"},
-+ {"OUT3", NULL, "Out 3 PGA"},
-+
-+ /* speaker Mux */
-+ {"Speaker Mux", "Speaker Mix", "Speaker Mixer"},
-+ {"Speaker Mux", "Headphone Mix", "Mono HP Mixer"},
-+ {"Speaker PGA", NULL, "Speaker Mux"},
-+ {"LOUT2", NULL, "Speaker PGA"},
-+ {"ROUT2", NULL, "Speaker PGA"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm9712_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm9712_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm9712_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static unsigned int ac97_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+
-+ if (reg == AC97_RESET || reg == AC97_GPIO_STATUS ||
-+ reg == AC97_VENDOR_ID1 || reg == AC97_VENDOR_ID2 ||
-+ reg == AC97_REC_GAIN)
-+ return soc_ac97_ops.read(codec->ac97, reg);
-+ else {
-+ reg = reg >> 1;
-+
-+ if (reg > (ARRAY_SIZE(wm9712_reg)))
-+ return -EIO;
-+
-+ return cache[reg];
-+ }
-+}
-+
-+static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int val)
-+{
-+ u16 *cache = codec->reg_cache;
-+
-+ soc_ac97_ops.write(codec->ac97, reg, val);
-+ reg = reg >> 1;
-+ if (reg <= (ARRAY_SIZE(wm9712_reg)))
-+ cache[reg] = val;
-+
-+ return 0;
-+}
-+
-+static int ac97_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg;
-+ u16 vra;
-+
-+ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
-+ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ reg = AC97_PCM_FRONT_DAC_RATE;
-+ else
-+ reg = AC97_PCM_LR_ADC_RATE;
-+
-+ return ac97_write(codec, reg, runtime->rate);
-+}
-+
-+static int ac97_aux_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 vra, xsle;
-+
-+ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
-+ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
-+ xsle = ac97_read(codec, AC97_PCI_SID);
-+ ac97_write(codec, AC97_PCI_SID, xsle | 0x8000);
-+
-+ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
-+ return -ENODEV;
-+
-+ return ac97_write(codec, AC97_PCM_SURR_DAC_RATE, runtime->rate);
-+}
-+
-+struct snd_soc_codec_dai wm9712_dai[] = {
-+{
-+ .name = "AC97 HiFi",
-+ .playback = {
-+ .stream_name = "HiFi Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .stream_name = "HiFi Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .prepare = ac97_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(ac97_modes),
-+ .mode = ac97_modes,},
-+ },
-+ {
-+ .name = "AC97 Aux",
-+ .playback = {
-+ .stream_name = "Aux Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .ops = {
-+ .prepare = ac97_aux_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(ac97_modes),
-+ .mode = ac97_modes,},
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm9712_dai);
-+
-+static int wm9712_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 reg;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* liam - maybe enable thermal shutdown */
-+ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0xdfff;
-+ ac97_write(codec, AC97_EXTENDED_MID, reg);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* enable master bias and vmid */
-+ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0xbbff;
-+ ac97_write(codec, AC97_EXTENDED_MID, reg);
-+ ac97_write(codec, AC97_POWERDOWN, 0x0000);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* disable everything including AC link */
-+ ac97_write(codec, AC97_EXTENDED_MID, 0xffff);
-+ ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xffff);
-+ ac97_write(codec, AC97_POWERDOWN, 0xffff);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
-+{
-+ if (try_warm && soc_ac97_ops.warm_reset) {
-+ soc_ac97_ops.warm_reset(codec->ac97);
-+ if (!(ac97_read(codec, 0) & 0x8000))
-+ return 1;
-+ }
-+
-+ soc_ac97_ops.reset(codec->ac97);
-+ if (ac97_read(codec, 0) & 0x8000)
-+ goto err;
-+ return 0;
-+
-+err:
-+ printk(KERN_ERR "WM9712 AC97 reset failed\n");
-+ return -EIO;
-+}
-+
-+static int wm9712_soc_suspend(struct platform_device *pdev,
-+ pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm9712_soc_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i, ret;
-+ u16 *cache = codec->reg_cache;
-+
-+ ret = wm9712_reset(codec, 1);
-+ if (ret < 0){
-+ printk(KERN_ERR "could not reset AC97 codec\n");
-+ return ret;
-+ }
-+
-+ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ if (ret == 0) {
-+ /* Sync reg_cache with the hardware after cold reset */
-+ for (i = 2; i < ARRAY_SIZE(wm9712_reg) << 1; i+=2) {
-+ if (i == AC97_INT_PAGING || i == AC97_POWERDOWN ||
-+ (i > 0x58 && i != 0x5c))
-+ continue;
-+ soc_ac97_ops.write(codec->ac97, i, cache[i>>1]);
-+ }
-+ }
-+
-+ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0)
-+ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D0);
-+
-+ return ret;
-+}
-+
-+static int wm9712_soc_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION);
-+
-+ socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (socdev->codec == NULL)
-+ return -ENOMEM;
-+ codec = socdev->codec;
-+ mutex_init(&codec->mutex);
-+
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm9712_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL) {
-+ kfree(codec->ac97);
-+ kfree(socdev->codec);
-+ socdev->codec = NULL;
-+ return -ENOMEM;
-+ }
-+ memcpy(codec->reg_cache, wm9712_reg, sizeof(u16) * ARRAY_SIZE(wm9712_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9712_reg);
-+ codec->reg_cache_step = 2;
-+
-+ codec->name = "WM9712";
-+ codec->owner = THIS_MODULE;
-+ codec->dai = wm9712_dai;
-+ codec->num_dai = ARRAY_SIZE(wm9712_dai);
-+ codec->write = ac97_write;
-+ codec->read = ac97_read;
-+ codec->dapm_event = wm9712_dapm_event;
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
-+ if (ret < 0)
-+ goto err;
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0)
-+ goto pcm_err;
-+
-+ ret = wm9712_reset(codec, 0);
-+ if (ret < 0) {
-+ printk(KERN_ERR "AC97 link error\n");
-+ goto reset_err;
-+ }
-+
-+ /* set alc mux to none */
-+ ac97_write(codec, AC97_VIDEO, ac97_read(codec, AC97_VIDEO) | 0x3000);
-+
-+ wm9712_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm9712_add_controls(codec);
-+ wm9712_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0)
-+ goto reset_err;
-+
-+ return 0;
-+
-+reset_err:
-+ snd_soc_free_pcms(socdev);
-+
-+pcm_err:
-+ snd_soc_free_ac97_codec(codec);
-+
-+err:
-+ kfree(socdev->codec->reg_cache);
-+ kfree(socdev->codec);
-+ socdev->codec = NULL;
-+ return ret;
-+}
-+
-+static int wm9712_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec == NULL)
-+ return 0;
-+
-+ snd_soc_dapm_free(socdev);
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_free_ac97_codec(codec);
-+ kfree(codec->reg_cache);
-+ kfree(codec);
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm9712 = {
-+ .probe = wm9712_soc_probe,
-+ .remove = wm9712_soc_remove,
-+ .suspend = wm9712_soc_suspend,
-+ .resume = wm9712_soc_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm9712);
-+
-+MODULE_DESCRIPTION("ASoC WM9711/WM9712 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm9712.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm9712.h
-@@ -0,0 +1,14 @@
-+/*
-+ * wm9712.h -- WM9712 Soc Audio driver
-+ */
-+
-+#ifndef _WM9712_H
-+#define _WM9712_H
-+
-+#define WM9712_DAI_AC97_HIFI 0
-+#define WM9712_DAI_AC97_AUX 1
-+
-+extern struct snd_soc_codec_dai wm9712_dai[2];
-+extern struct snd_soc_codec_device soc_codec_dev_wm9712;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm9713.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm9713.c
-@@ -0,0 +1,1313 @@
-+/*
-+ * wm9713.c -- ALSA Soc WM9713 codec support
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 4th Feb 2006 Initial version.
-+ *
-+ * Features:-
-+ *
-+ * o Support for AC97 Codec, Voice DAC and Aux DAC
-+ * o Support for DAPM
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/ac97_codec.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#define WM9713_VERSION "0.12"
-+
-+struct wm9713 {
-+ u32 pll; /* current PLL frequency */
-+ u32 pll_resume; /* PLL resume frequency */
-+};
-+
-+static unsigned int ac97_read(struct snd_soc_codec *codec,
-+ unsigned int reg);
-+static int ac97_write(struct snd_soc_codec *codec,
-+ unsigned int reg, unsigned int val);
-+
-+#define AC97_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define AC97_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | \
-+ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \
-+ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+/* may need to expand this */
-+static struct snd_soc_dai_mode ac97_modes[] = {
-+ {
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE,
-+ .pcmrate = AC97_RATES,
-+ },
-+};
-+
-+#define WM9713_VOICE_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | \
-+ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_DSP_A | \
-+ SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM9713_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM9713_VOICE_FSB \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
-+ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
-+
-+#define WM9713_VOICE_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 | \
-+ SNDRV_PCM_RATE_96000)
-+
-+#define WM9713_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+/*
-+ * Voice modes
-+ */
-+static struct snd_soc_dai_mode wm9713_voice_modes[] = {
-+ /* master modes */
-+ {
-+ .fmt = WM9713_VOICE_DAIFMT | SND_SOC_DAIFMT_CBM_CFM | \
-+ SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = WM9713_HIFI_BITS,
-+ .pcmrate = WM9713_VOICE_RATES,
-+ .pcmdir = WM9713_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM9713_VOICE_FSB,
-+ },
-+
-+ /* slave modes */
-+ {
-+ .fmt = WM9713_VOICE_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM9713_HIFI_BITS,
-+ .pcmrate = WM9713_VOICE_RATES,
-+ .pcmdir = WM9713_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * WM9713 register cache
-+ * Reg 0x3c bit 15 is used by touch driver.
-+ */
-+static const u16 wm9713_reg[] = {
-+ 0x6174, 0x8080, 0x8080, 0x8080, // 6
-+ 0xc880, 0xe808, 0xe808, 0x0808, // e
-+ 0x00da, 0x8000, 0xd600, 0xaaa0, // 16
-+ 0xaaa0, 0xaaa0, 0x0000, 0x0000, // 1e
-+ 0x0f0f, 0x0040, 0x0000, 0x7f00, // 26
-+ 0x0405, 0x0410, 0xbb80, 0xbb80, // 2e
-+ 0x0000, 0xbb80, 0x0000, 0x4523, // 36
-+ 0x0000, 0x2000, 0x7eff, 0xffff, // 3e
-+ 0x0000, 0x0000, 0x0080, 0x0000, // 46
-+ 0x0000, 0x0000, 0xfffe, 0xffff, // 4e
-+ 0x0000, 0x0000, 0x0000, 0xfffe, // 56
-+ 0x4000, 0x0000, 0x0000, 0x0000, // 5e
-+ 0xb032, 0x3e00, 0x0000, 0x0000, // 66
-+ 0x0000, 0x0000, 0x0000, 0x0000, // 6e
-+ 0x0000, 0x0000, 0x0000, 0x0006, // 76
-+ 0x0001, 0x0000, 0x574d, 0x4c13, // 7e
-+ 0x0000, 0x0000, 0x0000 // virtual hp & mic mixers
-+};
-+
-+/* virtual HP mixers regs */
-+#define HPL_MIXER 0x80
-+#define HPR_MIXER 0x82
-+#define MICB_MUX 0x82
-+
-+static const char *wm9713_mic_mixer[] = {"Stereo", "Mic 1", "Mic 2", "Mute"};
-+static const char *wm9713_rec_mux[] = {"Stereo", "Left", "Right", "Mute"};
-+static const char *wm9713_rec_src[] =
-+ {"Mic 1", "Mic 2", "Line", "Mono In", "Headphone", "Speaker",
-+ "Mono Out", "Zh"};
-+static const char *wm9713_rec_gain[] = {"+1.5dB Steps", "+0.75dB Steps"};
-+static const char *wm9713_alc_select[] = {"None", "Left", "Right", "Stereo"};
-+static const char *wm9713_mono_pga[] = {"Vmid", "Zh", "Mono", "Inv",
-+ "Mono Vmid", "Inv Vmid"};
-+static const char *wm9713_spk_pga[] =
-+ {"Vmid", "Zh", "Headphone", "Speaker", "Inv", "Headphone Vmid",
-+ "Speaker Vmid", "Inv Vmid"};
-+static const char *wm9713_hp_pga[] = {"Vmid", "Zh", "Headphone",
-+ "Headphone Vmid"};
-+static const char *wm9713_out3_pga[] = {"Vmid", "Zh", "Inv 1", "Inv 1 Vmid"};
-+static const char *wm9713_out4_pga[] = {"Vmid", "Zh", "Inv 2", "Inv 2 Vmid"};
-+static const char *wm9713_dac_inv[] =
-+ {"Off", "Mono", "Speaker", "Left Headphone", "Right Headphone",
-+ "Headphone Mono", "NC", "Vmid"};
-+static const char *wm9713_bass[] = {"Linear Control", "Adaptive Boost"};
-+static const char *wm9713_ng_type[] = {"Constant Gain", "Mute"};
-+static const char *wm9713_mic_select[] = {"Mic 1", "Mic 2 A", "Mic 2 B"};
-+static const char *wm9713_micb_select[] = {"MPB", "MPA"};
-+
-+static const struct soc_enum wm9713_enum[] = {
-+SOC_ENUM_SINGLE(AC97_LINE, 3, 4, wm9713_mic_mixer), /* record mic mixer 0 */
-+SOC_ENUM_SINGLE(AC97_VIDEO, 14, 4, wm9713_rec_mux), /* record mux hp 1 */
-+SOC_ENUM_SINGLE(AC97_VIDEO, 9, 4, wm9713_rec_mux), /* record mux mono 2 */
-+SOC_ENUM_SINGLE(AC97_VIDEO, 3, 8, wm9713_rec_src), /* record mux left 3 */
-+SOC_ENUM_SINGLE(AC97_VIDEO, 0, 8, wm9713_rec_src), /* record mux right 4*/
-+SOC_ENUM_DOUBLE(AC97_CD, 14, 6, 2, wm9713_rec_gain), /* record step size 5 */
-+SOC_ENUM_SINGLE(AC97_PCI_SVID, 14, 4, wm9713_alc_select), /* alc source select 6*/
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 14, 4, wm9713_mono_pga), /* mono input select 7 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 11, 8, wm9713_spk_pga), /* speaker left input select 8 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 8, 8, wm9713_spk_pga), /* speaker right input select 9 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 6, 3, wm9713_hp_pga), /* headphone left input 10 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 4, 3, wm9713_hp_pga), /* headphone right input 11 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 2, 4, wm9713_out3_pga), /* out 3 source 12 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN, 0, 4, wm9713_out4_pga), /* out 4 source 13 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN_MIC, 13, 8, wm9713_dac_inv), /* dac invert 1 14 */
-+SOC_ENUM_SINGLE(AC97_REC_GAIN_MIC, 10, 8, wm9713_dac_inv), /* dac invert 2 15 */
-+SOC_ENUM_SINGLE(AC97_GENERAL_PURPOSE, 15, 2, wm9713_bass), /* bass control 16 */
-+SOC_ENUM_SINGLE(AC97_PCI_SVID, 5, 2, wm9713_ng_type), /* noise gate type 17 */
-+SOC_ENUM_SINGLE(AC97_3D_CONTROL, 12, 3, wm9713_mic_select), /* mic selection 18 */
-+SOC_ENUM_SINGLE(MICB_MUX, 0, 2, wm9713_micb_select), /* mic selection 19 */
-+};
-+
-+static const struct snd_kcontrol_new wm9713_snd_ac97_controls[] = {
-+SOC_DOUBLE("Speaker Playback Volume", AC97_MASTER, 8, 0, 31, 1),
-+SOC_DOUBLE("Speaker Playback Switch", AC97_MASTER, 15, 7, 1, 1),
-+SOC_DOUBLE("Headphone Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1),
-+SOC_DOUBLE("Headphone Playback Switch", AC97_HEADPHONE,15, 7, 1, 1),
-+SOC_DOUBLE("Line In Volume", AC97_PC_BEEP, 8, 0, 31, 1),
-+SOC_DOUBLE("PCM Playback Volume", AC97_PHONE, 8, 0, 31, 1),
-+SOC_SINGLE("Mic 1 Volume", AC97_MIC, 8, 31, 1),
-+SOC_SINGLE("Mic 2 Volume", AC97_MIC, 0, 31, 1),
-+
-+SOC_SINGLE("Mic Boost (+20dB) Switch", AC97_LINE, 5, 1, 0),
-+SOC_SINGLE("Mic Headphone Mixer Volume", AC97_LINE, 0, 7, 1),
-+
-+SOC_SINGLE("Capture Switch", AC97_CD, 15, 1, 1),
-+SOC_ENUM("Capture Volume Steps", wm9713_enum[5]),
-+SOC_DOUBLE("Capture Volume", AC97_CD, 8, 0, 63, 0),
-+SOC_SINGLE("Capture ZC Switch", AC97_CD, 7, 1, 0),
-+
-+SOC_SINGLE("Capture to Headphone Volume", AC97_VIDEO, 11, 7, 1),
-+SOC_SINGLE("Capture to Mono Boost (+20dB) Switch", AC97_VIDEO, 8, 1, 0),
-+SOC_SINGLE("Capture ADC Boost (+20dB) Switch", AC97_VIDEO, 6, 1, 0),
-+
-+SOC_SINGLE("ALC Target Volume", AC97_CODEC_CLASS_REV, 12, 15, 0),
-+SOC_SINGLE("ALC Hold Time", AC97_CODEC_CLASS_REV, 8, 15, 0),
-+SOC_SINGLE("ALC Decay Time ", AC97_CODEC_CLASS_REV, 4, 15, 0),
-+SOC_SINGLE("ALC Attack Time", AC97_CODEC_CLASS_REV, 0, 15, 0),
-+SOC_ENUM("ALC Function", wm9713_enum[6]),
-+SOC_SINGLE("ALC Max Volume", AC97_PCI_SVID, 11, 7, 0),
-+SOC_SINGLE("ALC ZC Timeout", AC97_PCI_SVID, 9, 3, 0),
-+SOC_SINGLE("ALC ZC Switch", AC97_PCI_SVID, 8, 1, 0),
-+SOC_SINGLE("ALC NG Switch", AC97_PCI_SVID, 7, 1, 0),
-+SOC_ENUM("ALC NG Type", wm9713_enum[17]),
-+SOC_SINGLE("ALC NG Threshold", AC97_PCI_SVID, 0, 31, 0),
-+
-+SOC_DOUBLE("Speaker Playback ZC Switch", AC97_MASTER, 14, 6, 1, 0),
-+SOC_DOUBLE("Headphone Playback ZC Switch", AC97_HEADPHONE, 14, 6, 1, 0),
-+
-+SOC_SINGLE("Out4 Playback Switch", AC97_MASTER_MONO, 15, 1, 1),
-+SOC_SINGLE("Out4 Playback ZC Switch", AC97_MASTER_MONO, 14, 1, 0),
-+SOC_SINGLE("Out4 Playback Volume", AC97_MASTER_MONO, 8, 63, 1),
-+
-+SOC_SINGLE("Out3 Playback Switch", AC97_MASTER_MONO, 7, 1, 1),
-+SOC_SINGLE("Out3 Playback ZC Switch", AC97_MASTER_MONO, 6, 1, 0),
-+SOC_SINGLE("Out3 Playback Volume", AC97_MASTER_MONO, 0, 63, 1),
-+
-+SOC_SINGLE("Mono Capture Volume", AC97_MASTER_TONE, 8, 31, 1),
-+SOC_SINGLE("Mono Playback Switch", AC97_MASTER_TONE, 7, 1, 1),
-+SOC_SINGLE("Mono Playback ZC Switch", AC97_MASTER_TONE, 6, 1, 0),
-+SOC_SINGLE("Mono Playback Volume", AC97_MASTER_TONE, 0, 31, 1),
-+
-+SOC_SINGLE("PC Beep Playback Headphone Volume", AC97_AUX, 12, 7, 1),
-+SOC_SINGLE("PC Beep Playback Speaker Volume", AC97_AUX, 8, 7, 1),
-+SOC_SINGLE("PC Beep Playback Mono Volume", AC97_AUX, 4, 7, 1),
-+
-+SOC_SINGLE("Voice Playback Headphone Volume", AC97_PCM, 12, 7, 1),
-+SOC_SINGLE("Voice Playback Master Volume", AC97_PCM, 8, 7, 1),
-+SOC_SINGLE("Voice Playback Mono Volume", AC97_PCM, 4, 7, 1),
-+
-+SOC_SINGLE("Aux Playback Headphone Volume", AC97_REC_SEL, 12, 7, 1),
-+SOC_SINGLE("Aux Playback Master Volume", AC97_REC_SEL, 8, 7, 1),
-+SOC_SINGLE("Aux Playback Mono Volume", AC97_REC_SEL, 4, 7, 1),
-+
-+SOC_ENUM("Bass Control", wm9713_enum[16]),
-+SOC_SINGLE("Bass Cut-off Switch", AC97_GENERAL_PURPOSE, 12, 1, 1),
-+SOC_SINGLE("Tone Cut-off Switch", AC97_GENERAL_PURPOSE, 4, 1, 1),
-+SOC_SINGLE("Playback Attenuate (-6dB) Switch", AC97_GENERAL_PURPOSE, 6, 1, 0),
-+SOC_SINGLE("Bass Volume", AC97_GENERAL_PURPOSE, 8, 15, 1),
-+SOC_SINGLE("Tone Volume", AC97_GENERAL_PURPOSE, 0, 15, 1),
-+
-+SOC_SINGLE("3D Upper Cut-off Switch", AC97_REC_GAIN_MIC, 5, 1, 0),
-+SOC_SINGLE("3D Lower Cut-off Switch", AC97_REC_GAIN_MIC, 4, 1, 0),
-+SOC_SINGLE("3D Depth", AC97_REC_GAIN_MIC, 0, 15, 1),
-+};
-+
-+/* add non dapm controls */
-+static int wm9713_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm9713_snd_ac97_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm9713_snd_ac97_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+ return 0;
-+}
-+
-+/* We have to create a fake left and right HP mixers because
-+ * the codec only has a single control that is shared by both channels.
-+ * This makes it impossible to determine the audio path using the current
-+ * register map, thus we add a new (virtual) register to help determine the
-+ * audio route within the device.
-+ */
-+static int mixer_event (struct snd_soc_dapm_widget *w, int event)
-+{
-+ u16 l, r, beep, tone, phone, rec, pcm, aux;
-+
-+ l = ac97_read(w->codec, HPL_MIXER);
-+ r = ac97_read(w->codec, HPR_MIXER);
-+ beep = ac97_read(w->codec, AC97_PC_BEEP);
-+ tone = ac97_read(w->codec, AC97_MASTER_TONE);
-+ phone = ac97_read(w->codec, AC97_PHONE);
-+ rec = ac97_read(w->codec, AC97_REC_SEL);
-+ pcm = ac97_read(w->codec, AC97_PCM);
-+ aux = ac97_read(w->codec, AC97_AUX);
-+
-+ if (event & SND_SOC_DAPM_PRE_REG)
-+ return 0;
-+ if (l & 0x1 || r & 0x1)
-+ ac97_write(w->codec, AC97_PC_BEEP, beep & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_PC_BEEP, beep | 0x8000);
-+
-+ if (l & 0x2 || r & 0x2)
-+ ac97_write(w->codec, AC97_MASTER_TONE, tone & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_MASTER_TONE, tone | 0x8000);
-+
-+ if (l & 0x4 || r & 0x4)
-+ ac97_write(w->codec, AC97_PHONE, phone & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_PHONE, phone | 0x8000);
-+
-+ if (l & 0x8 || r & 0x8)
-+ ac97_write(w->codec, AC97_REC_SEL, rec & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_REC_SEL, rec | 0x8000);
-+
-+ if (l & 0x10 || r & 0x10)
-+ ac97_write(w->codec, AC97_PCM, pcm & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_PCM, pcm | 0x8000);
-+
-+ if (l & 0x20 || r & 0x20)
-+ ac97_write(w->codec, AC97_AUX, aux & 0x7fff);
-+ else
-+ ac97_write(w->codec, AC97_AUX, aux | 0x8000);
-+
-+ return 0;
-+}
-+
-+/* Left Headphone Mixers */
-+static const struct snd_kcontrol_new wm9713_hpl_mixer_controls[] = {
-+SOC_DAPM_SINGLE("PC Beep Playback Switch", HPL_MIXER, 5, 1, 0),
-+SOC_DAPM_SINGLE("Voice Playback Switch", HPL_MIXER, 4, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", HPL_MIXER, 3, 1, 0),
-+SOC_DAPM_SINGLE("PCM Playback Switch", HPL_MIXER, 2, 1, 0),
-+SOC_DAPM_SINGLE("MonoIn Playback Switch", HPL_MIXER, 1, 1, 0),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", HPL_MIXER, 0, 1, 0),
-+};
-+
-+/* Right Headphone Mixers */
-+static const struct snd_kcontrol_new wm9713_hpr_mixer_controls[] = {
-+SOC_DAPM_SINGLE("PC Beep Playback Switch", HPR_MIXER, 5, 1, 0),
-+SOC_DAPM_SINGLE("Voice Playback Switch", HPR_MIXER, 4, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", HPR_MIXER, 3, 1, 0),
-+SOC_DAPM_SINGLE("PCM Playback Switch", HPR_MIXER, 2, 1, 0),
-+SOC_DAPM_SINGLE("MonoIn Playback Switch", HPR_MIXER, 1, 1, 0),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", HPR_MIXER, 0, 1, 0),
-+};
-+
-+/* headphone capture mux */
-+static const struct snd_kcontrol_new wm9713_hp_rec_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[1]);
-+
-+/* headphone mic mux */
-+static const struct snd_kcontrol_new wm9713_hp_mic_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[0]);
-+
-+/* Speaker Mixer */
-+static const struct snd_kcontrol_new wm9713_speaker_mixer_controls[] = {
-+SOC_DAPM_SINGLE("PC Beep Playback Switch", AC97_AUX, 11, 1, 1),
-+SOC_DAPM_SINGLE("Voice Playback Switch", AC97_PCM, 11, 1, 1),
-+SOC_DAPM_SINGLE("Aux Playback Switch", AC97_REC_SEL, 11, 1, 1),
-+SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PHONE, 14, 1, 1),
-+SOC_DAPM_SINGLE("MonoIn Playback Switch", AC97_MASTER_TONE, 14, 1, 1),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", AC97_PC_BEEP, 14, 1, 1),
-+};
-+
-+/* Mono Mixer */
-+static const struct snd_kcontrol_new wm9713_mono_mixer_controls[] = {
-+SOC_DAPM_SINGLE("PC Beep Playback Switch", AC97_AUX, 7, 1, 1),
-+SOC_DAPM_SINGLE("Voice Playback Switch", AC97_PCM, 7, 1, 1),
-+SOC_DAPM_SINGLE("Aux Playback Switch", AC97_REC_SEL, 7, 1, 1),
-+SOC_DAPM_SINGLE("PCM Playback Switch", AC97_PHONE, 13, 1, 1),
-+SOC_DAPM_SINGLE("MonoIn Playback Switch", AC97_MASTER_TONE, 13, 1, 1),
-+SOC_DAPM_SINGLE("Bypass Playback Switch", AC97_PC_BEEP, 13, 1, 1),
-+SOC_DAPM_SINGLE("Mic 1 Sidetone Switch", AC97_LINE, 7, 1, 1),
-+SOC_DAPM_SINGLE("Mic 2 Sidetone Switch", AC97_LINE, 6, 1, 1),
-+};
-+
-+/* mono mic mux */
-+static const struct snd_kcontrol_new wm9713_mono_mic_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[2]);
-+
-+/* mono output mux */
-+static const struct snd_kcontrol_new wm9713_mono_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[7]);
-+
-+/* speaker left output mux */
-+static const struct snd_kcontrol_new wm9713_hp_spkl_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[8]);
-+
-+/* speaker right output mux */
-+static const struct snd_kcontrol_new wm9713_hp_spkr_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[9]);
-+
-+/* headphone left output mux */
-+static const struct snd_kcontrol_new wm9713_hpl_out_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[10]);
-+
-+/* headphone right output mux */
-+static const struct snd_kcontrol_new wm9713_hpr_out_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[11]);
-+
-+/* Out3 mux */
-+static const struct snd_kcontrol_new wm9713_out3_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[12]);
-+
-+/* Out4 mux */
-+static const struct snd_kcontrol_new wm9713_out4_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[13]);
-+
-+/* DAC inv mux 1 */
-+static const struct snd_kcontrol_new wm9713_dac_inv1_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[14]);
-+
-+/* DAC inv mux 2 */
-+static const struct snd_kcontrol_new wm9713_dac_inv2_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[15]);
-+
-+/* Capture source left */
-+static const struct snd_kcontrol_new wm9713_rec_srcl_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[3]);
-+
-+/* Capture source right */
-+static const struct snd_kcontrol_new wm9713_rec_srcr_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[4]);
-+
-+/* mic source */
-+static const struct snd_kcontrol_new wm9713_mic_sel_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[18]);
-+
-+/* mic source B virtual control */
-+static const struct snd_kcontrol_new wm9713_micb_sel_mux_controls =
-+SOC_DAPM_ENUM("Route", wm9713_enum[19]);
-+
-+static const struct snd_soc_dapm_widget wm9713_dapm_widgets[] = {
-+SND_SOC_DAPM_MUX("Capture Headphone Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_hp_rec_mux_controls),
-+SND_SOC_DAPM_MUX("Sidetone Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_hp_mic_mux_controls),
-+SND_SOC_DAPM_MUX("Capture Mono Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_mono_mic_mux_controls),
-+SND_SOC_DAPM_MUX("Mono Out Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_mono_mux_controls),
-+SND_SOC_DAPM_MUX("Left Speaker Out Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_hp_spkl_mux_controls),
-+SND_SOC_DAPM_MUX("Right Speaker Out Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_hp_spkr_mux_controls),
-+SND_SOC_DAPM_MUX("Left Headphone Out Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_hpl_out_mux_controls),
-+SND_SOC_DAPM_MUX("Right Headphone Out Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_hpr_out_mux_controls),
-+SND_SOC_DAPM_MUX("Out 3 Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_out3_mux_controls),
-+SND_SOC_DAPM_MUX("Out 4 Mux", SND_SOC_NOPM, 0, 0,
-+ &wm9713_out4_mux_controls),
-+SND_SOC_DAPM_MUX("DAC Inv Mux 1", SND_SOC_NOPM, 0, 0,
-+ &wm9713_dac_inv1_mux_controls),
-+SND_SOC_DAPM_MUX("DAC Inv Mux 2", SND_SOC_NOPM, 0, 0,
-+ &wm9713_dac_inv2_mux_controls),
-+SND_SOC_DAPM_MUX("Left Capture Source", SND_SOC_NOPM, 0, 0,
-+ &wm9713_rec_srcl_mux_controls),
-+SND_SOC_DAPM_MUX("Right Capture Source", SND_SOC_NOPM, 0, 0,
-+ &wm9713_rec_srcr_mux_controls),
-+SND_SOC_DAPM_MUX("Mic A Source", SND_SOC_NOPM, 0, 0,
-+ &wm9713_mic_sel_mux_controls ),
-+SND_SOC_DAPM_MUX("Mic B Source", SND_SOC_NOPM, 0, 0,
-+ &wm9713_micb_sel_mux_controls ),
-+SND_SOC_DAPM_MIXER_E("Left HP Mixer", AC97_EXTENDED_MID, 3, 1,
-+ &wm9713_hpl_mixer_controls[0], ARRAY_SIZE(wm9713_hpl_mixer_controls),
-+ mixer_event, SND_SOC_DAPM_POST_REG),
-+SND_SOC_DAPM_MIXER_E("Right HP Mixer", AC97_EXTENDED_MID, 2, 1,
-+ &wm9713_hpr_mixer_controls[0], ARRAY_SIZE(wm9713_hpr_mixer_controls),
-+ mixer_event, SND_SOC_DAPM_POST_REG),
-+SND_SOC_DAPM_MIXER("Mono Mixer", AC97_EXTENDED_MID, 0, 1,
-+ &wm9713_mono_mixer_controls[0], ARRAY_SIZE(wm9713_mono_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Speaker Mixer", AC97_EXTENDED_MID, 1, 1,
-+ &wm9713_speaker_mixer_controls[0],
-+ ARRAY_SIZE(wm9713_speaker_mixer_controls)),
-+SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback", AC97_EXTENDED_MID, 7, 1),
-+SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback", AC97_EXTENDED_MID, 6, 1),
-+SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
-+SND_SOC_DAPM_MIXER("HP Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
-+SND_SOC_DAPM_MIXER("Capture Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
-+SND_SOC_DAPM_DAC("Voice DAC", "Voice Playback", AC97_EXTENDED_MID, 12, 1),
-+SND_SOC_DAPM_DAC("Aux DAC", "Aux Playback", AC97_EXTENDED_MID, 11, 1),
-+SND_SOC_DAPM_ADC("Left ADC", "Left HiFi Capture", AC97_EXTENDED_MID, 5, 1),
-+SND_SOC_DAPM_ADC("Right ADC", "Right HiFi Capture", AC97_EXTENDED_MID, 4, 1),
-+SND_SOC_DAPM_PGA("Left Headphone", AC97_EXTENDED_MSTATUS, 10, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Right Headphone", AC97_EXTENDED_MSTATUS, 9, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Left Speaker", AC97_EXTENDED_MSTATUS, 8, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Right Speaker", AC97_EXTENDED_MSTATUS, 7, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Out 3", AC97_EXTENDED_MSTATUS, 11, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Out 4", AC97_EXTENDED_MSTATUS, 12, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono Out", AC97_EXTENDED_MSTATUS, 13, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Left Line In", AC97_EXTENDED_MSTATUS, 6, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Right Line In", AC97_EXTENDED_MSTATUS, 5, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono In", AC97_EXTENDED_MSTATUS, 4, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic A PGA", AC97_EXTENDED_MSTATUS, 3, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic B PGA", AC97_EXTENDED_MSTATUS, 2, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic A Pre Amp", AC97_EXTENDED_MSTATUS, 1, 1, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic B Pre Amp", AC97_EXTENDED_MSTATUS, 0, 1, NULL, 0),
-+SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_EXTENDED_MSTATUS, 14, 1),
-+SND_SOC_DAPM_OUTPUT("MONO"),
-+SND_SOC_DAPM_OUTPUT("HPL"),
-+SND_SOC_DAPM_OUTPUT("HPR"),
-+SND_SOC_DAPM_OUTPUT("SPKL"),
-+SND_SOC_DAPM_OUTPUT("SPKR"),
-+SND_SOC_DAPM_OUTPUT("OUT3"),
-+SND_SOC_DAPM_OUTPUT("OUT4"),
-+SND_SOC_DAPM_INPUT("LINEL"),
-+SND_SOC_DAPM_INPUT("LINER"),
-+SND_SOC_DAPM_INPUT("MONOIN"),
-+SND_SOC_DAPM_INPUT("PCBEEP"),
-+SND_SOC_DAPM_INPUT("MIC1"),
-+SND_SOC_DAPM_INPUT("MIC2A"),
-+SND_SOC_DAPM_INPUT("MIC2B"),
-+SND_SOC_DAPM_VMID("VMID"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* left HP mixer */
-+ {"Left HP Mixer", "PC Beep Playback Switch", "PCBEEP"},
-+ {"Left HP Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Left HP Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Left HP Mixer", "Bypass Playback Switch", "Left Line In"},
-+ {"Left HP Mixer", "PCM Playback Switch", "Left DAC"},
-+ {"Left HP Mixer", "MonoIn Playback Switch", "Mono In"},
-+ {"Left HP Mixer", NULL, "Capture Headphone Mux"},
-+
-+ /* right HP mixer */
-+ {"Right HP Mixer", "PC Beep Playback Switch", "PCBEEP"},
-+ {"Right HP Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Right HP Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Right HP Mixer", "Bypass Playback Switch", "Right Line In"},
-+ {"Right HP Mixer", "PCM Playback Switch", "Right DAC"},
-+ {"Right HP Mixer", "MonoIn Playback Switch", "Mono In"},
-+ {"Right HP Mixer", NULL, "Capture Headphone Mux"},
-+
-+ /* virtual mixer - mixes left & right channels for spk and mono */
-+ {"AC97 Mixer", NULL, "Left DAC"},
-+ {"AC97 Mixer", NULL, "Right DAC"},
-+ {"Line Mixer", NULL, "Right Line In"},
-+ {"Line Mixer", NULL, "Left Line In"},
-+ {"HP Mixer", NULL, "Left HP Mixer"},
-+ {"HP Mixer", NULL, "Right HP Mixer"},
-+ {"Capture Mixer", NULL, "Left Capture Source"},
-+ {"Capture Mixer", NULL, "Right Capture Source"},
-+
-+ /* speaker mixer */
-+ {"Speaker Mixer", "PC Beep Playback Switch", "PCBEEP"},
-+ {"Speaker Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Speaker Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Speaker Mixer", "Bypass Playback Switch", "Line Mixer"},
-+ {"Speaker Mixer", "PCM Playback Switch", "AC97 Mixer"},
-+ {"Speaker Mixer", "MonoIn Playback Switch", "Mono In"},
-+
-+ /* mono mixer */
-+ {"Mono Mixer", "PC Beep Playback Switch", "PCBEEP"},
-+ {"Mono Mixer", "Voice Playback Switch", "Voice DAC"},
-+ {"Mono Mixer", "Aux Playback Switch", "Aux DAC"},
-+ {"Mono Mixer", "Bypass Playback Switch", "Line Mixer"},
-+ {"Mono Mixer", "PCM Playback Switch", "AC97 Mixer"},
-+ {"Mono Mixer", NULL, "Capture Mono Mux"},
-+
-+ /* DAC inv mux 1 */
-+ {"DAC Inv Mux 1", "Mono", "Mono Mixer"},
-+ {"DAC Inv Mux 1", "Speaker", "Speaker Mixer"},
-+ {"DAC Inv Mux 1", "Left Headphone", "Left HP Mixer"},
-+ {"DAC Inv Mux 1", "Right Headphone", "Right HP Mixer"},
-+ {"DAC Inv Mux 1", "Headphone Mono", "HP Mixer"},
-+
-+ /* DAC inv mux 2 */
-+ {"DAC Inv Mux 2", "Mono", "Mono Mixer"},
-+ {"DAC Inv Mux 2", "Speaker", "Speaker Mixer"},
-+ {"DAC Inv Mux 2", "Left Headphone", "Left HP Mixer"},
-+ {"DAC Inv Mux 2", "Right Headphone", "Right HP Mixer"},
-+ {"DAC Inv Mux 2", "Headphone Mono", "HP Mixer"},
-+
-+ /* headphone left mux */
-+ {"Left Headphone Out Mux", "Headphone", "Left HP Mixer"},
-+
-+ /* headphone right mux */
-+ {"Right Headphone Out Mux", "Headphone", "Right HP Mixer"},
-+
-+ /* speaker left mux */
-+ {"Left Speaker Out Mux", "Headphone", "Left HP Mixer"},
-+ {"Left Speaker Out Mux", "Speaker", "Speaker Mixer"},
-+ {"Left Speaker Out Mux", "Inv", "DAC Inv Mux 1"},
-+
-+ /* speaker right mux */
-+ {"Right Speaker Out Mux", "Headphone", "Right HP Mixer"},
-+ {"Right Speaker Out Mux", "Speaker", "Speaker Mixer"},
-+ {"Right Speaker Out Mux", "Inv", "DAC Inv Mux 2"},
-+
-+ /* mono mux */
-+ {"Mono Out Mux", "Mono", "Mono Mixer"},
-+ {"Mono Out Mux", "Inv", "DAC Inv Mux 1"},
-+
-+ /* out 3 mux */
-+ {"Out 3 Mux", "Inv 1", "DAC Inv Mux 1"},
-+
-+ /* out 4 mux */
-+ {"Out 4 Mux", "Inv 2", "DAC Inv Mux 2"},
-+
-+ /* output pga */
-+ {"HPL", NULL, "Left Headphone"},
-+ {"Left Headphone", NULL, "Left Headphone Out Mux"},
-+ {"HPR", NULL, "Right Headphone"},
-+ {"Right Headphone", NULL, "Right Headphone Out Mux"},
-+ {"OUT3", NULL, "Out 3"},
-+ {"Out 3", NULL, "Out 3 Mux"},
-+ {"OUT4", NULL, "Out 4"},
-+ {"Out 4", NULL, "Out 4 Mux"},
-+ {"SPKL", NULL, "Left Speaker"},
-+ {"Left Speaker", NULL, "Left Speaker Out Mux"},
-+ {"SPKR", NULL, "Right Speaker"},
-+ {"Right Speaker", NULL, "Right Speaker Out Mux"},
-+ {"MONO", NULL, "Mono Out"},
-+ {"Mono Out", NULL, "Mono Out Mux"},
-+
-+ /* input pga */
-+ {"Left Line In", NULL, "LINEL"},
-+ {"Right Line In", NULL, "LINER"},
-+ {"Mono In", NULL, "MONOIN"},
-+ {"Mic A PGA", NULL, "Mic A Pre Amp"},
-+ {"Mic B PGA", NULL, "Mic B Pre Amp"},
-+
-+ /* left capture select */
-+ {"Left Capture Source", "Mic 1", "Mic A Pre Amp"},
-+ {"Left Capture Source", "Mic 2", "Mic B Pre Amp"},
-+ {"Left Capture Source", "Line", "LINEL"},
-+ {"Left Capture Source", "Mono In", "MONOIN"},
-+ {"Left Capture Source", "Headphone", "Left HP Mixer"},
-+ {"Left Capture Source", "Speaker", "Speaker Mixer"},
-+ {"Left Capture Source", "Mono Out", "Mono Mixer"},
-+
-+ /* right capture select */
-+ {"Right Capture Source", "Mic 1", "Mic A Pre Amp"},
-+ {"Right Capture Source", "Mic 2", "Mic B Pre Amp"},
-+ {"Right Capture Source", "Line", "LINER"},
-+ {"Right Capture Source", "Mono In", "MONOIN"},
-+ {"Right Capture Source", "Headphone", "Right HP Mixer"},
-+ {"Right Capture Source", "Speaker", "Speaker Mixer"},
-+ {"Right Capture Source", "Mono Out", "Mono Mixer"},
-+
-+ /* left ADC */
-+ {"Left ADC", NULL, "Left Capture Source"},
-+
-+ /* right ADC */
-+ {"Right ADC", NULL, "Right Capture Source"},
-+
-+ /* mic */
-+ {"Mic A Pre Amp", NULL, "Mic A Source"},
-+ {"Mic A Source", "Mic 1", "MIC1"},
-+ {"Mic A Source", "Mic 2 A", "MIC2A"},
-+ {"Mic A Source", "Mic 2 B", "Mic B Source"},
-+ {"Mic B Pre Amp", "MPB", "Mic B Source"},
-+ {"Mic B Source", NULL, "MIC2B"},
-+
-+ /* headphone capture */
-+ {"Capture Headphone Mux", "Stereo", "Capture Mixer"},
-+ {"Capture Headphone Mux", "Left", "Left Capture Source"},
-+ {"Capture Headphone Mux", "Right", "Right Capture Source"},
-+
-+ /* mono capture */
-+ {"Capture Mono Mux", "Stereo", "Capture Mixer"},
-+ {"Capture Mono Mux", "Left", "Left Capture Source"},
-+ {"Capture Mono Mux", "Right", "Right Capture Source"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm9713_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm9713_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm9713_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+static unsigned int ac97_read(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+
-+ if (reg == AC97_RESET || reg == AC97_GPIO_STATUS ||
-+ reg == AC97_VENDOR_ID1 || reg == AC97_VENDOR_ID2 ||
-+ reg == AC97_CD)
-+ return soc_ac97_ops.read(codec->ac97, reg);
-+ else {
-+ reg = reg >> 1;
-+
-+ if (reg > (ARRAY_SIZE(wm9713_reg)))
-+ return -EIO;
-+
-+ return cache[reg];
-+ }
-+}
-+
-+static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int val)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg < 0x7c)
-+ soc_ac97_ops.write(codec->ac97, reg, val);
-+ reg = reg >> 1;
-+ if (reg <= (ARRAY_SIZE(wm9713_reg)))
-+ cache[reg] = val;
-+
-+ return 0;
-+}
-+
-+struct pll_ {
-+ unsigned int in_hz;
-+ unsigned int lf:1; /* allows low frequency use */
-+ unsigned int sdm:1; /* allows fraction n div */
-+ unsigned int divsel:1; /* enables input clock div */
-+ unsigned int divctl:1; /* input clock divider */
-+ unsigned int n:4;
-+ unsigned int k;
-+};
-+
-+struct pll_ pll[] = {
-+ {13000000, 0, 1, 0, 0, 7, 0x23f488},
-+ {2048000, 1, 0, 0, 0, 12, 0x0},
-+ {4096000, 1, 0, 0, 0, 6, 0x0},
-+ {12288000, 0, 0, 0, 0, 8, 0x0},
-+ /* liam - add more entries */
-+};
-+
-+/* we must have either 24.576MHz or a PLL freq */
-+static unsigned int wm9713_config_ac97sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i;
-+ dai->mclk = 0;
-+
-+ /* first check if we can get away witout burning any PLL power */
-+ if (24576000 == clk) {
-+ /* standard AC97 clock */
-+ dai->mclk = clk;
-+ goto out;
-+ }
-+
-+ /* ok no standard clock, so we must now try the PLL */
-+ for(i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (clk == pll[i].in_hz) {
-+ dai->mclk = clk; /* clock out */
-+ goto out;
-+ }
-+ }
-+
-+out:
-+ return dai->mclk;
-+}
-+
-+/* The WM9713 voice DAC can only run at 256FS. This interface and DAC are
-+ * clocked by the main AC97 clock divided down to 256 FS.
-+ */
-+static unsigned int wm9713_config_vsysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 1; i <= 16; i++) {
-+ if (best_clk * i == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = i << 1;
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (pll[i].in_hz == clk) {
-+ for (j = 1; j <= 16; j++) {
-+ if (24576000 == j * best_clk) {
-+ dai->pll_in = clk;
-+ dai->pll_out = 24576000;
-+ dai->clk_div = j << 1;
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+u32 wm9713_set_pll(struct snd_soc_codec *codec, u32 in)
-+{
-+ struct wm9713 *wm = (struct wm9713*)codec->private_data;
-+ int i;
-+ u16 reg, reg2;
-+
-+ /* turn PLL off ? */
-+ if (in == 0) {
-+ /* disable PLL power and select ext source */
-+ reg = ac97_read(codec, AC97_HANDSET_RATE);
-+ ac97_write(codec, AC97_HANDSET_RATE, reg | 0x0080);
-+ reg = ac97_read(codec, AC97_EXTENDED_MID);
-+ ac97_write(codec, AC97_EXTENDED_MID, reg | 0x0200);
-+ wm->pll = 0;
-+ return 0;
-+ }
-+
-+ for (i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (pll[i].in_hz == in)
-+ goto found;
-+ }
-+ return -EINVAL;
-+
-+found:
-+ if (pll[i].sdm == 0) {
-+ reg = (pll[i].n << 12) | (pll[i].lf << 11) |
-+ (pll[i].divsel << 9) | (pll[i].divctl << 8);
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+ } else {
-+ /* write the fractional k to the reg 0x46 pages */
-+ reg2 = (pll[i].n << 12) | (pll[i].lf << 11) | (pll[i].sdm << 10) |
-+ (pll[i].divsel << 9) | (pll[i].divctl << 8);
-+
-+ reg = reg2 | (0x5 << 4) | (pll[i].k >> 20); /* K [21:20] */
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+
-+ reg = reg2 | (0x4 << 4) | ((pll[i].k >> 16) & 0xf); /* K [19:16] */
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+
-+ reg = reg2 | (0x3 << 4) | ((pll[i].k >> 12) & 0xf); /* K [15:12] */
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+
-+ reg = reg2 | (0x2 << 4) | ((pll[i].k >> 8) & 0xf); /* K [11:8] */
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+
-+ reg = reg2 | (0x1 << 4) | ((pll[i].k >> 4) & 0xf); /* K [7:4] */
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+
-+ reg = reg2 | (0x0 << 4) | (pll[i].k & 0xf); /* K [3:0] */
-+ ac97_write(codec, AC97_LINE1_LEVEL, reg);
-+ }
-+
-+ /* turn PLL on and select as source */
-+ reg = ac97_read(codec, AC97_EXTENDED_MID);
-+ ac97_write(codec, AC97_EXTENDED_MID, reg & 0xfdff);
-+ reg = ac97_read(codec, AC97_HANDSET_RATE);
-+ ac97_write(codec, AC97_HANDSET_RATE, reg & 0xff7f);
-+ /* wait 10ms AC97 link frames for the link to stabilise */
-+ schedule_timeout_interruptible(msecs_to_jiffies(10));
-+ wm->pll = in;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(wm9713_set_pll);
-+
-+static int wm9713_voice_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 reg = 0x8000, bfs, div, gpio;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ gpio = ac97_read(codec, AC97_GPIO_CFG) & 0xffe2;
-+
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ reg |= 0x4000;
-+ gpio |= 0x0008;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ reg |= 0x6000;
-+ gpio |= 0x000c;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ reg |= 0x0200;
-+ gpio |= 0x000d;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ gpio |= 0x0009;
-+ break;
-+ }
-+ ac97_write(codec, AC97_GPIO_CFG, gpio);
-+
-+ /* enable PLL if needed */
-+ if (rtd->codec_dai->pll_in)
-+ wm9713_set_pll(codec, rtd->codec_dai->pll_in);
-+
-+ /* set the PCM divider */
-+ div = ac97_read(codec, AC97_HANDSET_RATE) & 0xf0ff;
-+ ac97_write(codec, AC97_HANDSET_RATE, div |
-+ ((rtd->codec_dai->clk_div >> 1) -1) << 8);
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ reg |= 0x00c0;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ reg |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ reg |= 0x0040;
-+ break;
-+ }
-+
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ reg |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ reg |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ reg |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ reg |= 0x0043;
-+ break;
-+ }
-+
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ reg |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ reg |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ reg |= 0x000c;
-+ break;
-+ }
-+
-+ switch (bfs) {
-+ case 2:
-+ reg |= (0x1 << 9);
-+ break;
-+ case 4:
-+ reg |= (0x2 << 9);
-+ break;
-+ case 8:
-+ reg |= (0x3 << 9);
-+ break;
-+ case 16:
-+ reg |= (0x4 << 9);
-+ break;
-+ }
-+
-+ /* enable PCM interface in master mode */
-+ ac97_write(codec, AC97_CENTER_LFE_MASTER, reg);
-+ return 0;
-+}
-+
-+static void wm9713_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (!codec->active)
-+ wm9713_set_pll(codec, 0);
-+}
-+
-+static void wm9713_voiceshutdown(snd_pcm_substream_t *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 status;
-+
-+ wm9713_shutdown(substream);
-+
-+ /* Gracefully shut down the voice interface. */
-+ status = ac97_read(codec, AC97_EXTENDED_STATUS) | 0x1000;
-+ ac97_write(codec,AC97_HANDSET_RATE,0x0280);
-+ schedule_timeout_interruptible(msecs_to_jiffies(1));
-+ ac97_write(codec,AC97_HANDSET_RATE,0x0F80);
-+ ac97_write(codec,AC97_EXTENDED_MID,status);
-+}
-+
-+static int ac97_hifi_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int reg;
-+ u16 vra;
-+
-+ /* we need a 24576000Hz clock to run at the correct speed */
-+ if (rtd->codec_dai->mclk != 24576000)
-+ wm9713_set_pll(codec, rtd->codec_dai->mclk);
-+
-+ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
-+ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ reg = AC97_PCM_FRONT_DAC_RATE;
-+ else
-+ reg = AC97_PCM_LR_ADC_RATE;
-+
-+ return ac97_write(codec, reg, runtime->rate);
-+}
-+
-+static int ac97_aux_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 vra, xsle;
-+
-+ /* we need a 24576000Hz clock to run at the correct speed */
-+ if (rtd->codec_dai->mclk != 24576000)
-+ wm9713_set_pll(codec, rtd->codec_dai->mclk);
-+
-+ vra = ac97_read(codec, AC97_EXTENDED_STATUS);
-+ ac97_write(codec, AC97_EXTENDED_STATUS, vra | 0x1);
-+ xsle = ac97_read(codec, AC97_PCI_SID);
-+ ac97_write(codec, AC97_PCI_SID, xsle | 0x8000);
-+
-+ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
-+ return -ENODEV;
-+
-+ return ac97_write(codec, AC97_PCM_SURR_DAC_RATE, runtime->rate);
-+}
-+
-+struct snd_soc_codec_dai wm9713_dai[] = {
-+{
-+ .name = "AC97 HiFi",
-+ .playback = {
-+ .stream_name = "HiFi Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .stream_name = "HiFi Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm9713_config_ac97sysclk,
-+ .ops = {
-+ .shutdown = wm9713_shutdown,
-+ .prepare = ac97_hifi_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(ac97_modes),
-+ .mode = ac97_modes,},},
-+ {
-+ .name = "AC97 Aux",
-+ .playback = {
-+ .stream_name = "Aux Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .config_sysclk = wm9713_config_ac97sysclk,
-+ .ops = {
-+ .shutdown = wm9713_shutdown,
-+ .prepare = ac97_aux_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(ac97_modes),
-+ .mode = ac97_modes,}
-+ },
-+ {
-+ .name = "WM9713 Voice",
-+ .playback = {
-+ .stream_name = "Voice Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .capture = {
-+ .stream_name = "Voice Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .config_sysclk = wm9713_config_vsysclk,
-+ .ops = {
-+ .prepare = wm9713_voice_prepare,
-+ .shutdown = wm9713_voiceshutdown,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm9713_voice_modes),
-+ .mode = wm9713_voice_modes,},
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm9713_dai);
-+
-+int wm9713_reset(struct snd_soc_codec *codec, int try_warm)
-+{
-+ if (try_warm && soc_ac97_ops.warm_reset) {
-+ soc_ac97_ops.warm_reset(codec->ac97);
-+ if (!(ac97_read(codec, 0) & 0x8000))
-+ return 1;
-+ }
-+
-+ soc_ac97_ops.reset(codec->ac97);
-+ if (ac97_read(codec, 0) & 0x8000)
-+ return -EIO;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(wm9713_reset);
-+
-+static int wm9713_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 reg;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* enable thermal shutdown */
-+ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0x1bff;
-+ ac97_write(codec, AC97_EXTENDED_MID, reg);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* enable master bias and vmid */
-+ reg = ac97_read(codec, AC97_EXTENDED_MID) & 0x3bff;
-+ ac97_write(codec, AC97_EXTENDED_MID, reg);
-+ ac97_write(codec, AC97_POWERDOWN, 0x0000);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* disable everything including AC link */
-+ ac97_write(codec, AC97_EXTENDED_MID, 0xffff);
-+ ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xffff);
-+ ac97_write(codec, AC97_POWERDOWN, 0xffff);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+static int wm9713_soc_suspend(struct platform_device *pdev,
-+ pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct wm9713 *wm = (struct wm9713*)codec->private_data;
-+
-+ if (wm->pll) {
-+ wm->pll_resume = wm->pll;
-+ wm9713_set_pll(codec, 0);
-+ }
-+ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm9713_soc_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct wm9713 *wm = (struct wm9713*)codec->private_data;
-+ int i, ret;
-+ u16 *cache = codec->reg_cache;
-+
-+ if ((ret = wm9713_reset(codec, 1)) < 0){
-+ printk(KERN_ERR "could not reset AC97 codec\n");
-+ return ret;
-+ }
-+
-+ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* only synchronise the codec if warm reset failed */
-+ if (ret == 0) {
-+ for (i = 2; i < ARRAY_SIZE(wm9713_reg) << 1; i+=2) {
-+ if (i == AC97_POWERDOWN || i == AC97_EXTENDED_MID ||
-+ i == AC97_EXTENDED_MSTATUS || i > 0x66)
-+ continue;
-+ soc_ac97_ops.write(codec->ac97, i, cache[i>>1]);
-+ }
-+ }
-+
-+ if (wm->pll_resume) {
-+ wm9713_set_pll(codec, wm->pll_resume);
-+ wm->pll_resume = 0;
-+ }
-+
-+ if (codec->suspend_dapm_state == SNDRV_CTL_POWER_D0)
-+ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D0);
-+
-+ return ret;
-+}
-+
-+static int wm9713_soc_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec;
-+ int ret = 0, reg;
-+
-+ printk(KERN_INFO "WM9713/WM9714 SoC Audio Codec %s\n", WM9713_VERSION);
-+
-+ socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (socdev->codec == NULL)
-+ return -ENOMEM;
-+ codec = socdev->codec;
-+ mutex_init(&codec->mutex);
-+
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm9713_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL){
-+ kfree(socdev->codec);
-+ socdev->codec = NULL;
-+ return -ENOMEM;
-+ }
-+ memcpy(codec->reg_cache, wm9713_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm9713_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm9713_reg);
-+ codec->reg_cache_step = 2;
-+
-+ codec->private_data = kzalloc(sizeof(struct wm9713), GFP_KERNEL);
-+ if (codec->private_data == NULL) {
-+ kfree(codec->reg_cache);
-+ kfree(socdev->codec);
-+ socdev->codec = NULL;
-+ return -ENOMEM;
-+ }
-+
-+ codec->name = "WM9713";
-+ codec->owner = THIS_MODULE;
-+ codec->dai = wm9713_dai;
-+ codec->num_dai = ARRAY_SIZE(wm9713_dai);
-+ codec->write = ac97_write;
-+ codec->read = ac97_read;
-+ codec->dapm_event = wm9713_dapm_event;
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ ret = snd_soc_new_ac97_codec(codec, &soc_ac97_ops, 0);
-+ if (ret < 0)
-+ goto err;
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0)
-+ goto pcm_err;
-+
-+ /* do a cold reset for the controller and then try
-+ * a warm reset followed by an optional cold reset for codec */
-+ wm9713_reset(codec, 0);
-+ ret = wm9713_reset(codec, 1);
-+ if (ret < 0) {
-+ printk(KERN_ERR "AC97 link error\n");
-+ goto reset_err;
-+ }
-+
-+ wm9713_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* unmute the adc - move to kcontrol */
-+ reg = ac97_read(codec, AC97_CD) & 0x7fff;
-+ ac97_write(codec, AC97_CD, reg);
-+
-+ wm9713_add_controls(codec);
-+ wm9713_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0)
-+ goto reset_err;
-+ return 0;
-+
-+reset_err:
-+ snd_soc_free_pcms(socdev);
-+
-+pcm_err:
-+ snd_soc_free_ac97_codec(codec);
-+
-+err:
-+ kfree(socdev->codec->private_data);
-+ kfree(socdev->codec->reg_cache);
-+ kfree(socdev->codec);
-+ socdev->codec = NULL;
-+ return ret;
-+}
-+
-+static int wm9713_soc_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec == NULL)
-+ return 0;
-+
-+ snd_soc_dapm_free(socdev);
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_free_ac97_codec(codec);
-+ kfree(codec->private_data);
-+ kfree(codec->reg_cache);
-+ kfree(codec);
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm9713= {
-+ .probe = wm9713_soc_probe,
-+ .remove = wm9713_soc_remove,
-+ .suspend = wm9713_soc_suspend,
-+ .resume = wm9713_soc_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm9713);
-+
-+MODULE_DESCRIPTION("ASoC WM9713/WM9714 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm9713.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm9713.h
-@@ -0,0 +1,18 @@
-+/*
-+ * wm9713.h -- WM9713 Soc Audio driver
-+ */
-+
-+#ifndef _WM9713_H
-+#define _WM9713_H
-+
-+#define WM9713_DAI_AC97_HIFI 0
-+#define WM9713_DAI_AC97_AUX 1
-+#define WM9713_DAI_PCM_VOICE 2
-+
-+extern struct snd_soc_codec_device soc_codec_dev_wm9713;
-+extern struct snd_soc_codec_dai wm9713_dai[3];
-+
-+u32 wm9713_set_pll(struct snd_soc_codec *codec, u32 in);
-+int wm9713_reset(struct snd_soc_codec *codec, int try_warm);
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/pxa/Kconfig
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/Kconfig
-@@ -0,0 +1,125 @@
-+menu "SoC Audio for the Intel PXA2xx"
-+
-+config SND_PXA2xx_SOC
-+ tristate "SoC Audio for the Intel PXA2xx chip"
-+ depends on ARCH_PXA && SND
-+ select SND_PCM
-+ help
-+ Say Y or M if you want to add support for codecs attached to
-+ the PXA2xx AC97, I2S or SSP interface. You will also need
-+ to select the audio interfaces to support below.
-+
-+config SND_PXA2xx_AC97
-+ tristate
-+ select SND_AC97_CODEC
-+
-+config SND_PXA2xx_SOC_AC97
-+ tristate
-+ select SND_AC97_BUS
-+ select SND_SOC_AC97_BUS
-+
-+config SND_PXA2xx_SOC_I2S
-+ tristate
-+
-+config SND_PXA2xx_SOC_SSP
-+ tristate
-+ select PXA_SSP
-+
-+config SND_PXA2xx_SOC_MAINSTONE
-+ tristate "SoC AC97 Audio support for Intel Mainstone"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_AC97
-+ help
-+ Say Y if you want to add support for generic AC97 SoC audio on Mainstone.
-+
-+config SND_PXA2xx_SOC_MAINSTONE_WM8731
-+ tristate "SoC I2S Audio support for Intel Mainstone - WM8731"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_I2S
-+ help
-+ Say Y if you want to add support for SoC audio on Mainstone
-+ with the WM8731.
-+
-+config SND_PXA2xx_SOC_MAINSTONE_WM8753
-+ tristate "SoC I2S/SSP Audio support for Intel Mainstone - WM8753"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_I2S
-+ select SND_PXA2xx_SOC_SSP
-+ help
-+ Say Y if you want to add support for SoC audio on Mainstone
-+ with the WM8753.
-+
-+config SND_PXA2xx_SOC_MAINSTONE_WM8974
-+ tristate "SoC I2S Audio support for Intel Mainstone - WM8974"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_I2S
-+ help
-+ Say Y if you want to add support for SoC audio on Mainstone
-+ with the WM8974.
-+
-+config SND_PXA2xx_SOC_MAINSTONE_WM9713
-+ tristate "SoC I2S/SSP Audio support for Intel Mainstone - WM9713"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_AC97
-+ select SND_PXA2xx_SOC_SSP
-+ help
-+ Say Y if you want to add support for SoC voice audio on Mainstone
-+ with the WM9713.
-+
-+config SND_MAINSTONE_BASEBAND
-+ tristate "Example SoC Baseband Audio support for Intel Mainstone"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_AC97
-+ help
-+ Say Y if you want to add support for SoC baseband on Mainstone
-+ with the WM9713 and example Baseband modem.
-+
-+config SND_MAINSTONE_BLUETOOTH
-+ tristate "Example SoC Bluetooth Audio support for Intel Mainstone"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_I2S
-+ help
-+ Say Y if you want to add support for SoC bluetooth on Mainstone
-+ with the WM8753 and example Bluetooth codec.
-+
-+config SND_PXA2xx_SOC_MAINSTONE_WM9712
-+ tristate "SoC I2S/SSP Audio support for Intel Mainstone - WM9712"
-+ depends on SND_PXA2xx_SOC && MACH_MAINSTONE
-+ select SND_PXA2xx_SOC_AC97
-+ help
-+ Say Y if you want to add support for SoC voice audio on Mainstone
-+ with the WM9712.
-+
-+config SND_PXA2xx_SOC_CORGI
-+ tristate "SoC Audio support for Sharp Zaurus SL-C7x0"
-+ depends on SND_PXA2xx_SOC && PXA_SHARP_C7xx
-+ select SND_PXA2xx_SOC_I2S
-+ help
-+ Say Y if you want to add support for SoC audio on Sharp
-+ Zaurus SL-C7x0 models (Corgi, Shepherd, Husky).
-+
-+config SND_PXA2xx_SOC_SPITZ
-+ tristate "SoC Audio support for Sharp Zaurus SL-Cxx00"
-+ depends on SND_PXA2xx_SOC && PXA_SHARP_Cxx00
-+ select SND_PXA2xx_SOC_I2S
-+ help
-+ Say Y if you want to add support for SoC audio on Sharp
-+ Zaurus SL-Cxx00 models (Spitz, Borzoi and Akita).
-+
-+config SND_PXA2xx_SOC_POODLE
-+ tristate "SoC Audio support for Poodle"
-+ depends on SND_PXA2xx_SOC && MACH_POODLE
-+ select SND_PXA2xx_SOC_I2S
-+ help
-+ Say Y if you want to add support for SoC audio on Sharp
-+ Zaurus SL-5600 model (Poodle).
-+
-+config SND_PXA2xx_SOC_TOSA
-+ tristate "SoC AC97 Audio support for Tosa"
-+ depends on SND_PXA2xx_SOC && MACH_TOSA
-+ select SND_PXA2xx_SOC_AC97
-+ help
-+ Say Y if you want to add support for SoC audio on Sharp
-+ Zaurus SL-C6000x models (Tosa).
-+
-+endmenu
-Index: linux-2.6-pxa-new/sound/soc/pxa/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/Makefile
-@@ -0,0 +1,36 @@
-+# PXA Platform Support
-+snd-soc-pxa2xx-objs := pxa2xx-pcm.o
-+snd-soc-pxa2xx-ac97-objs := pxa2xx-ac97.o
-+snd-soc-pxa2xx-i2s-objs := pxa2xx-i2s.o
-+snd-soc-pxa2xx-ssp-objs := pxa2xx-ssp.o
-+
-+obj-$(CONFIG_SND_PXA2xx_SOC) += snd-soc-pxa2xx.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_AC97) += snd-soc-pxa2xx-ac97.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_I2S) += snd-soc-pxa2xx-i2s.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_SSP) += snd-soc-pxa2xx-ssp.o
-+
-+# PXA Machine Support
-+snd-soc-corgi-objs := corgi.o
-+snd-soc-mainstone-wm8731-objs := mainstone_wm8731.o
-+snd-soc-mainstone-wm8753-objs := mainstone_wm8753.o
-+snd-soc-mainstone-wm8974-objs := mainstone_wm8974.o
-+snd-soc-mainstone-wm9713-objs := mainstone_wm9713.o
-+snd-soc-mainstone-wm9712-objs := mainstone_wm9712.o
-+snd-soc-mainstone-baseband-objs := mainstone_baseband.o
-+snd-soc-mainstone-bluetooth-objs := mainstone_bluetooth.o
-+snd-soc-poodle-objs := poodle.o
-+snd-soc-tosa-objs := tosa.o
-+snd-soc-spitz-objs := spitz.o
-+
-+obj-$(CONFIG_SND_PXA2xx_SOC_CORGI) += snd-soc-corgi.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731) += snd-soc-mainstone-wm8731.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753) += snd-soc-mainstone-wm8753.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974) += snd-soc-mainstone-wm8974.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713) += snd-soc-mainstone-wm9713.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712) += snd-soc-mainstone-wm9712.o
-+obj-$(CONFIG_SND_MAINSTONE_BASEBAND) += snd-soc-mainstone-baseband.o
-+obj-$(CONFIG_SND_MAINSTONE_BLUETOOTH) += snd-soc-mainstone-bluetooth.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_POODLE) += snd-soc-poodle.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_TOSA) += snd-soc-tosa.o
-+obj-$(CONFIG_SND_PXA2xx_SOC_SPITZ) += snd-soc-spitz.o
-+
-Index: linux-2.6-pxa-new/sound/soc/pxa/corgi.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/corgi.c
-@@ -0,0 +1,361 @@
-+/*
-+ * corgi.c -- SoC audio for Corgi
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ * Richard Purdie <richard@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Nov 2005 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/hardware/scoop.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/corgi.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm8731.h"
-+#include "pxa2xx-pcm.h"
-+
-+#define CORGI_HP 0
-+#define CORGI_MIC 1
-+#define CORGI_LINE 2
-+#define CORGI_HEADSET 3
-+#define CORGI_HP_OFF 4
-+#define CORGI_SPK_ON 0
-+#define CORGI_SPK_OFF 1
-+
-+ /* audio clock in Hz - rounded from 12.235MHz */
-+#define CORGI_AUDIO_CLOCK 12288000
-+
-+static int corgi_jack_func;
-+static int corgi_spk_func;
-+
-+static void corgi_ext_control(struct snd_soc_codec *codec)
-+{
-+ int spk = 0, mic = 0, line = 0, hp = 0, hs = 0;
-+
-+ /* set up jack connection */
-+ switch (corgi_jack_func) {
-+ case CORGI_HP:
-+ hp = 1;
-+ /* set = unmute headphone */
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
-+ break;
-+ case CORGI_MIC:
-+ mic = 1;
-+ /* reset = mute headphone */
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
-+ break;
-+ case CORGI_LINE:
-+ line = 1;
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
-+ break;
-+ case CORGI_HEADSET:
-+ hs = 1;
-+ mic = 1;
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
-+ break;
-+ }
-+
-+ if (corgi_spk_func == CORGI_SPK_ON)
-+ spk = 1;
-+
-+ /* set the enpoints to their new connetion states */
-+ snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
-+ snd_soc_dapm_set_endpoint(codec, "Mic Jack", mic);
-+ snd_soc_dapm_set_endpoint(codec, "Line Jack", line);
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
-+
-+ /* signal a DAPM event */
-+ snd_soc_dapm_sync_endpoints(codec);
-+}
-+
-+static int corgi_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec *codec = rtd->socdev->codec;
-+
-+ /* check the jack status at stream startup */
-+ corgi_ext_control(codec);
-+ return 0;
-+}
-+
-+/* we need to unmute the HP at shutdown as the mute burns power on corgi */
-+static int corgi_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec *codec = rtd->socdev->codec;
-+
-+ /* set = unmute headphone */
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
-+ return 0;
-+}
-+
-+static struct snd_soc_ops corgi_ops = {
-+ .startup = corgi_startup,
-+ .shutdown = corgi_shutdown,
-+};
-+
-+static int corgi_get_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = corgi_jack_func;
-+ return 0;
-+}
-+
-+static int corgi_set_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (corgi_jack_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ corgi_jack_func = ucontrol->value.integer.value[0];
-+ corgi_ext_control(codec);
-+ return 1;
-+}
-+
-+static int corgi_get_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = corgi_spk_func;
-+ return 0;
-+}
-+
-+static int corgi_set_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (corgi_spk_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ corgi_spk_func = ucontrol->value.integer.value[0];
-+ corgi_ext_control(codec);
-+ return 1;
-+}
-+
-+static int corgi_amp_event(struct snd_soc_dapm_widget *w, int event)
-+{
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
-+ else
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON);
-+
-+ return 0;
-+}
-+
-+static int corgi_mic_event(struct snd_soc_dapm_widget *w, int event)
-+{
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS);
-+ else
-+ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS);
-+
-+ return 0;
-+}
-+
-+/* corgi machine dapm widgets */
-+static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
-+SND_SOC_DAPM_HP("Headphone Jack", NULL),
-+SND_SOC_DAPM_MIC("Mic Jack", corgi_mic_event),
-+SND_SOC_DAPM_SPK("Ext Spk", corgi_amp_event),
-+SND_SOC_DAPM_LINE("Line Jack", NULL),
-+SND_SOC_DAPM_HP("Headset Jack", NULL),
-+};
-+
-+/* Corgi machine audio map (connections to the codec pins) */
-+static const char *audio_map[][3] = {
-+
-+ /* headset Jack - in = micin, out = LHPOUT*/
-+ {"Headset Jack", NULL, "LHPOUT"},
-+
-+ /* headphone connected to LHPOUT1, RHPOUT1 */
-+ {"Headphone Jack", NULL, "LHPOUT"},
-+ {"Headphone Jack", NULL, "RHPOUT"},
-+
-+ /* speaker connected to LOUT, ROUT */
-+ {"Ext Spk", NULL, "ROUT"},
-+ {"Ext Spk", NULL, "LOUT"},
-+
-+ /* mic is connected to MICIN (via right channel of headphone jack) */
-+ {"MICIN", NULL, "Mic Jack"},
-+
-+ /* Same as the above but no mic bias for line signals */
-+ {"MICIN", NULL, "Line Jack"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static const char *jack_function[] = {"Headphone", "Mic", "Line", "Headset",
-+ "Off"};
-+static const char *spk_function[] = {"On", "Off"};
-+static const struct soc_enum corgi_enum[] = {
-+ SOC_ENUM_SINGLE_EXT(5, jack_function),
-+ SOC_ENUM_SINGLE_EXT(2, spk_function),
-+};
-+
-+static const struct snd_kcontrol_new wm8731_corgi_controls[] = {
-+ SOC_ENUM_EXT("Jack Function", corgi_enum[0], corgi_get_jack,
-+ corgi_set_jack),
-+ SOC_ENUM_EXT("Speaker Function", corgi_enum[1], corgi_get_spk,
-+ corgi_set_spk),
-+};
-+
-+/*
-+ * Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
-+ */
-+static int corgi_wm8731_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
-+
-+ /* Add corgi specific controls */
-+ for (i = 0; i < ARRAY_SIZE(wm8731_corgi_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8731_corgi_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ /* Add corgi specific widgets */
-+ for(i = 0; i < ARRAY_SIZE(wm8731_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8731_dapm_widgets[i]);
-+ }
-+
-+ /* Set up corgi specific audio path audio_map */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+static unsigned int corgi_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ if (info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
-+ /* pxa2xx is i2s master */
-+ switch (info->rate) {
-+ case 44100:
-+ case 88200:
-+ /* configure codec digital filters for 44.1, 88.2 */
-+ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ 11289600);
-+ break;
-+ default:
-+ /* configure codec digital filters for all other rates */
-+ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ CORGI_AUDIO_CLOCK);
-+ break;
-+ }
-+ /* config pxa i2s as master */
-+ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info,
-+ CORGI_AUDIO_CLOCK);
-+ } else {
-+ /* codec is i2s master -
-+ * only configure codec DAI clock and filters */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ CORGI_AUDIO_CLOCK);
-+ }
-+}
-+
-+/* corgi digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link corgi_dai = {
-+ .name = "WM8731",
-+ .stream_name = "WM8731",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8731_dai,
-+ .init = corgi_wm8731_init,
-+ .config_sysclk = corgi_config_sysclk,
-+};
-+
-+/* corgi audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_corgi = {
-+ .name = "Corgi",
-+ .dai_link = &corgi_dai,
-+ .num_links = 1,
-+ .ops = &corgi_ops,
-+};
-+
-+/* corgi audio private data */
-+static struct wm8731_setup_data corgi_wm8731_setup = {
-+ .i2c_address = 0x1b,
-+};
-+
-+/* corgi audio subsystem */
-+static struct snd_soc_device corgi_snd_devdata = {
-+ .machine = &snd_soc_machine_corgi,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8731,
-+ .codec_data = &corgi_wm8731_setup,
-+};
-+
-+static struct platform_device *corgi_snd_device;
-+
-+static int __init corgi_init(void)
-+{
-+ int ret;
-+
-+ if (!(machine_is_corgi() || machine_is_shepherd() || machine_is_husky()))
-+ return -ENODEV;
-+
-+ corgi_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!corgi_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(corgi_snd_device, &corgi_snd_devdata);
-+ corgi_snd_devdata.dev = &corgi_snd_device->dev;
-+ ret = platform_device_add(corgi_snd_device);
-+
-+ if (ret)
-+ platform_device_put(corgi_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit corgi_exit(void)
-+{
-+ platform_device_unregister(corgi_snd_device);
-+}
-+
-+module_init(corgi_init);
-+module_exit(corgi_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Richard Purdie");
-+MODULE_DESCRIPTION("ALSA SoC Corgi");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone.c
-@@ -0,0 +1,126 @@
-+/*
-+ * mainstone.c -- SoC audio for Mainstone
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Oct 2005 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/ac97.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+static long mst_audio_suspend_mask;
-+
-+static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ mst_audio_suspend_mask = MST_MSCWR2;
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_resume(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_probe(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_remove(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static struct snd_soc_machine_config codecs[] = {
-+{
-+ .name = "AC97",
-+ .sname = "AC97 HiFi",
-+ .iface = &pxa_ac97_interface[0],
-+},
-+{
-+ .name = "AC97 Aux",
-+ .sname = "AC97 Aux",
-+ .iface = &pxa_ac97_interface[1],
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .probe = mainstone_probe,
-+ .remove = mainstone_remove,
-+ .suspend_pre = mainstone_suspend,
-+ .resume_post = mainstone_resume,
-+ .config = codecs,
-+ .nconfigs = ARRAY_SIZE(codecs),
-+};
-+
-+static struct snd_soc_device mainstone_snd_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_ac97,
-+};
-+
-+static struct platform_device *mainstone_snd_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
-+ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
-+ ret = platform_device_add(mainstone_snd_device);
-+
-+ if (ret)
-+ platform_device_put(mainstone_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC Mainstone");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_baseband.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_baseband.c
-@@ -0,0 +1,249 @@
-+/*
-+ * mainstone_baseband.c
-+ * Mainstone Example Baseband modem -- ALSA Soc Audio Layer
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 15th Apr 2006 Initial version.
-+ *
-+ * This is example code to demonstrate connecting a baseband modem to the PCM
-+ * DAI on the WM9713 codec on the Intel Mainstone platform. It is by no means
-+ * complete as it requires code to control the modem.
-+ *
-+ * The architecture consists of the WM9713 AC97 DAI connected to the PXA27x
-+ * AC97 controller and the WM9713 PCM DAI connected to the basebands DAI. The
-+ * baseband is controlled via a serial port. Audio is routed between the PXA27x
-+ * and the baseband via internal WM9713 analog paths.
-+ *
-+ * This driver is not the baseband modem driver. This driver only calls
-+ * functions from the Baseband driver to set up it's PCM DAI.
-+ *
-+ * It's intended to use this driver as follows:-
-+ *
-+ * 1. open() WM9713 PCM audio device.
-+ * 2. open() serial device (for AT commands).
-+ * 3. configure PCM audio device (rate etc) - sets up WM9713 PCM DAI,
-+ * this will also set up the baseband PCM DAI (via calling baseband driver).
-+ * 4. send any further AT commands to set up baseband.
-+ * 5. configure codec audio mixer paths.
-+ * 6. open(), configure and read/write AC97 audio device - to Tx/Rx voice
-+ *
-+ * The PCM audio device is opened but IO is never performed on it as the IO is
-+ * directly between the codec and the baseband (and not the CPU).
-+ *
-+ * TODO:
-+ * o Implement callbacks
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/audio.h>
-+#include <asm/arch/ssp.h>
-+
-+#include "../codecs/wm9713.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+
-+#define BASEBAND_XXX_DAIFMT \
-+ (SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBS_CFS |\
-+ SND_SOC_DAIFMT_NB_NF)
-+
-+#define BASEBAND_XXX_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+/*
-+ * PCM modes - 8k 16bit mono baseband modem is master
-+ */
-+static struct snd_soc_dai_mode mainstone_example_modes[] = {
-+ /* port master clk & frame modes */
-+ {BASEBAND_XXX_DAIFMT, SND_SOC_DAITDM_LRDW(0,0), SNDRV_PCM_FORMAT_S16_LE,
-+ SNDRV_PCM_RATE_8000, BASEBAND_XXX_DIR, SND_SOC_DAI_BFS_RATE, 256, 64},
-+};
-+
-+/* Do specific baseband PCM voice startup here */
-+static int mainstone_baseband_startup(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+/* Do specific baseband PCM voice shutdown here */
-+static void mainstone_baseband_shutdown (struct snd_pcm_substream *substream)
-+{
-+}
-+
-+/* Do specific baseband modem PCM voice hw params init here */
-+static int mainstone_baseband_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ return 0;
-+}
-+
-+/* Do specific baseband modem PCM voice hw params free here */
-+static int mainstone_baseband_hw_free(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+static struct snd_soc_cpu_dai mainstone_example_dai[] = {
-+ { .name = "Baseband",
-+ .id = 0,
-+ .type = SND_SOC_DAI_PCM,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .ops = {
-+ .startup = mainstone_baseband_startup,
-+ .shutdown = mainstone_baseband_shutdown,
-+ .hw_params = mainstone_baseband_hw_params,
-+ .hw_free = mainstone_baseband_hw_free,
-+ },
-+ .caps = {
-+ .mode = mainstone_example_modes,
-+ .num_modes = ARRAY_SIZE(mainstone_example_modes),},
-+ },
-+};
-+
-+/* do we need to do any thing on the mainstone when the stream is
-+ * started and stopped
-+ */
-+static int mainstone_startup(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+static void mainstone_shutdown(struct snd_pcm_substream *substream)
-+{
-+}
-+
-+static struct snd_soc_ops mainstone_ops = {
-+ .startup = mainstone_startup,
-+ .shutdown = mainstone_shutdown,
-+};
-+
-+/* PM */
-+static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_resume(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_probe(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_remove(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_wm9713_init(struct snd_soc_codec *codec)
-+{
-+ return 0;
-+}
-+
-+unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ /* wm8753 has pll that generates mclk from 13MHz xtal */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
-+}
-+
-+/* the physical audio connections between the WM9713, Baseband and pxa2xx */
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{
-+ .name = "AC97",
-+ .stream_name = "AC97 HiFi",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-+ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
-+ .init = mainstone_wm9713_init,
-+},
-+{
-+ .name = "AC97 Aux",
-+ .stream_name = "AC97 Aux",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-+ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_AUX],
-+},
-+{
-+ .name = "Baseband",
-+ .stream_name = "Voice",
-+ .cpu_dai = mainstone_example_dai,
-+ .codec_dai = &wm9713_dai[WM9713_DAI_PCM_VOICE],
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .probe = mainstone_probe,
-+ .remove = mainstone_remove,
-+ .suspend_pre = mainstone_suspend,
-+ .resume_post = mainstone_resume,
-+ .ops = &mainstone_ops,
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct snd_soc_device mainstone_snd_ac97_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm9713,
-+};
-+
-+static struct platform_device *mainstone_snd_ac97_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_ac97_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_ac97_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_ac97_device, &mainstone_snd_ac97_devdata);
-+ mainstone_snd_ac97_devdata.dev = &mainstone_snd_ac97_device->dev;
-+
-+ if((ret = platform_device_add(mainstone_snd_ac97_device)) != 0)
-+ platform_device_put(mainstone_snd_ac97_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_ac97_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("Mainstone Example Baseband PCM Interface");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_bluetooth.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_bluetooth.c
-@@ -0,0 +1,399 @@
-+/*
-+ * mainstone_bluetooth.c
-+ * Mainstone Example Bluetooth -- ALSA Soc Audio Layer
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 15th May 2006 Initial version.
-+ *
-+ * This is example code to demonstrate connecting a bluetooth codec to the PCM
-+ * DAI on the WM8753 codec on the Intel Mainstone platform. It is by no means
-+ * complete as it requires code to control the BT codec.
-+ *
-+ * The architecture consists of the WM8753 HIFI DAI connected to the PXA27x
-+ * I2S controller and the WM8753 PCM DAI connected to the bluetooth DAI. The
-+ * bluetooth codec and wm8753 are controlled via I2C. Audio is routed between
-+ * the PXA27x and the bluetooth via internal WM8753 analog paths.
-+ *
-+ * This example supports the following audio input/outputs.
-+ *
-+ * o Board mounted Mic and Speaker (spk has amplifier)
-+ * o Headphones via jack socket
-+ * o BT source and sink
-+ *
-+ * This driver is not the bluetooth codec driver. This driver only calls
-+ * functions from the Bluetooth driver to set up it's PCM DAI.
-+ *
-+ * It's intended to use the driver as follows:-
-+ *
-+ * 1. open() WM8753 PCM audio device.
-+ * 2. configure PCM audio device (rate etc) - sets up WM8753 PCM DAI,
-+ * this should also set up the BT codec DAI (via calling bt driver).
-+ * 3. configure codec audio mixer paths.
-+ * 4. open(), configure and read/write HIFI audio device - to Tx/Rx voice
-+ *
-+ * The PCM audio device is opened but IO is never performed on it as the IO is
-+ * directly between the codec and the BT codec (and not the CPU).
-+ *
-+ * TODO:
-+ * o Implement callbacks
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/audio.h>
-+#include <asm/arch/ssp.h>
-+
-+#include "../codecs/wm8753.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+
-+#define BLUETOOTH_DAIFMT \
-+ (SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBS_CFS |\
-+ SND_SOC_DAIFMT_NB_NF)
-+
-+#define BLUETOOTH_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+/*
-+ * PCM modes - 8k 16bit mono BT codec is master
-+ */
-+static struct snd_soc_dai_mode mainstone_bt_modes[] = {
-+ /* port master clk & frame modes */
-+ {BLUETOOTH_DAIFMT, SND_SOC_DAITDM_LRDW(0,0), SNDRV_PCM_FORMAT_S16_LE,
-+ SNDRV_PCM_RATE_8000, BLUETOOTH_DIR, SND_SOC_DAI_BFS_RATE, 256, 64},
-+};
-+
-+/* Do specific bluetooth PCM startup here */
-+static int mainstone_bt_startup(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+/* Do specific bluetooth PCM shutdown here */
-+static void mainstone_bt_shutdown (struct snd_pcm_substream *substream)
-+{
-+}
-+
-+/* Do pecific bluetooth PCM hw params init here */
-+static int mainstone_bt_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ return 0;
-+}
-+
-+/* Do specific bluetooth PCM hw params free here */
-+static int mainstone_bt_hw_free(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+static struct snd_soc_cpu_dai mainstone_bt_dai[] = {
-+ { .name = "Bluetooth",
-+ .id = 0,
-+ .type = SND_SOC_DAI_PCM,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .ops = {
-+ .startup = mainstone_bt_startup,
-+ .shutdown = mainstone_bt_shutdown,
-+ .hw_params = mainstone_bt_hw_params,
-+ .hw_free = mainstone_bt_hw_free,
-+ },
-+ .caps = {
-+ .mode = mainstone_bt_modes,
-+ .num_modes = ARRAY_SIZE(mainstone_bt_modes),},
-+ },
-+};
-+
-+/* do we need to do any thing on the mainstone when the stream is
-+ * started and stopped
-+ */
-+static int mainstone_startup(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+static void mainstone_shutdown(struct snd_pcm_substream *substream)
-+{
-+}
-+
-+static struct snd_soc_ops mainstone_ops = {
-+ .startup = mainstone_startup,
-+ .shutdown = mainstone_shutdown,
-+};
-+
-+/* PM */
-+static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_resume(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_probe(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+static int mainstone_remove(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+/*
-+ * Machine audio functions.
-+ *
-+ * The machine now has 3 extra audio controls.
-+ *
-+ * Jack function: Sets function (device plugged into Jack) to nothing (Off)
-+ * or Headphones.
-+ *
-+ * Mic function: Set the on board Mic to On or Off
-+ * Spk function: Set the on board Spk to On or Off
-+ *
-+ * example: BT playback (of far end) and capture (of near end)
-+ * Set Mic and Speaker to On, open BT alsa interface as above and set up
-+ * internal audio paths.
-+ */
-+
-+static int machine_jack_func = 0;
-+static int machine_spk_func = 0;
-+static int machine_mic_func = 0;
-+
-+static int machine_get_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = machine_jack_func;
-+ return 0;
-+}
-+
-+static int machine_set_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ machine_jack_func = ucontrol->value.integer.value[0];
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", machine_jack_func);
-+ return 0;
-+}
-+
-+static int machine_get_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = machine_spk_func;
-+ return 0;
-+}
-+
-+static int machine_set_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ machine_spk_func = ucontrol->value.integer.value[0];
-+ snd_soc_dapm_set_endpoint(codec, "Spk", machine_spk_func);
-+ return 0;
-+}
-+
-+static int machine_get_mic(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = machine_spk_func;
-+ return 0;
-+}
-+
-+static int machine_set_mic(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ machine_spk_func = ucontrol->value.integer.value[0];
-+ snd_soc_dapm_set_endpoint(codec, "Mic", machine_mic_func);
-+ return 0;
-+}
-+
-+/* turns on board speaker amp on/off */
-+static int machine_amp_event(struct snd_soc_dapm_widget *w, int event)
-+{
-+#if 0
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ /* on */
-+ else
-+ /* off */
-+#endif
-+ return 0;
-+}
-+
-+/* machine dapm widgets */
-+static const struct snd_soc_dapm_widget machine_dapm_widgets[] = {
-+SND_SOC_DAPM_HP("Headphone Jack", NULL),
-+SND_SOC_DAPM_SPK("Spk", machine_amp_event),
-+SND_SOC_DAPM_MIC("Mic", NULL),
-+};
-+
-+/* machine connections to the codec pins */
-+static const char* audio_map[][3] = {
-+
-+ /* headphone connected to LOUT1, ROUT1 */
-+ {"Headphone Jack", NULL, "LOUT"},
-+ {"Headphone Jack", NULL, "ROUT"},
-+
-+ /* speaker connected to LOUT2, ROUT2 */
-+ {"Spk", NULL, "ROUT2"},
-+ {"Spk", NULL, "LOUT2"},
-+
-+ /* mic is connected to MIC1 (via Mic Bias) */
-+ {"MIC1", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static const char* jack_function[] = {"Off", "Headphone"};
-+static const char* spk_function[] = {"Off", "On"};
-+static const char* mic_function[] = {"Off", "On"};
-+static const struct soc_enum machine_ctl_enum[] = {
-+ SOC_ENUM_SINGLE_EXT(2, jack_function),
-+ SOC_ENUM_SINGLE_EXT(2, spk_function),
-+ SOC_ENUM_SINGLE_EXT(2, mic_function),
-+};
-+
-+static const struct snd_kcontrol_new wm8753_machine_controls[] = {
-+ SOC_ENUM_EXT("Jack Function", machine_ctl_enum[0], machine_get_jack, machine_set_jack),
-+ SOC_ENUM_EXT("Speaker Function", machine_ctl_enum[1], machine_get_spk, machine_set_spk),
-+ SOC_ENUM_EXT("Mic Function", machine_ctl_enum[2], machine_get_mic, machine_set_mic),
-+};
-+
-+static int mainstone_wm8753_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ /* not used on this machine - e.g. will never be powered up */
-+ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
-+ snd_soc_dapm_set_endpoint(codec, "OUT4", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MONO2", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MONO1", 0);
-+ snd_soc_dapm_set_endpoint(codec, "LINE1", 0);
-+ snd_soc_dapm_set_endpoint(codec, "LINE2", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
-+
-+ /* Add machine specific controls */
-+ for (i = 0; i < ARRAY_SIZE(wm8753_machine_controls); i++) {
-+ if ((err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8753_machine_controls[i],codec, NULL))) < 0)
-+ return err;
-+ }
-+
-+ /* Add machine specific widgets */
-+ for(i = 0; i < ARRAY_SIZE(machine_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &machine_dapm_widgets[i]);
-+ }
-+
-+ /* Set up machine specific audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+/* this configures the clocking between the WM8753 and the BT codec */
-+unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ /* wm8753 has pll that generates mclk from 13MHz xtal */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
-+}
-+
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{ /* Hifi Playback - for similatious use with voice below */
-+ .name = "WM8753",
-+ .stream_name = "WM8753 HiFi",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
-+ .init = mainstone_wm8753_init,
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+{ /* Voice via BT */
-+ .name = "Bluetooth",
-+ .stream_name = "Voice",
-+ .cpu_dai = mainstone_bt_dai,
-+ .codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .probe = mainstone_probe,
-+ .remove = mainstone_remove,
-+ .suspend_pre = mainstone_suspend,
-+ .resume_post = mainstone_resume,
-+ .ops = &mainstone_ops,
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct snd_soc_device mainstone_snd_wm8753_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8753,
-+};
-+
-+static struct platform_device *mainstone_snd_wm8753_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_wm8753_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_wm8753_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_wm8753_device, &mainstone_snd_wm8753_devdata);
-+ mainstone_snd_wm8753_devdata.dev = &mainstone_snd_wm8753_device->dev;
-+
-+ if((ret = platform_device_add(mainstone_snd_wm8753_device)) != 0)
-+ platform_device_put(mainstone_snd_wm8753_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_wm8753_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("Mainstone Example Bluetooth PCM Interface");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8731.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8731.c
-@@ -0,0 +1,156 @@
-+/*
-+ * mainstone.c -- SoC audio for Mainstone
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 5th June 2006 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm8731.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+
-+
-+static const struct snd_soc_dapm_widget dapm_widgets[] = {
-+ SND_SOC_DAPM_MIC("Int Mic", NULL),
-+ SND_SOC_DAPM_SPK("Ext Spk", NULL),
-+};
-+
-+static const char* intercon[][3] = {
-+
-+ /* speaker connected to LHPOUT */
-+ {"Ext Spk", NULL, "LHPOUT"},
-+
-+ /* mic is connected to Mic Jack, with WM8731 Mic Bias */
-+ {"MICIN", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Int Mic"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+/*
-+ * Logic for a wm8731 as connected on a Endrelia ETI-B1 board.
-+ */
-+static int mainstone_wm8731_init(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+
-+ /* Add specific widgets */
-+ for(i = 0; i < ARRAY_SIZE(dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &dapm_widgets[i]);
-+ }
-+
-+ /* Set up specific audio path interconnects */
-+ for(i = 0; intercon[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1], intercon[i][2]);
-+ }
-+
-+ /* not connected */
-+ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
-+
-+ /* always connected */
-+ snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
-+ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+
-+ return 0;
-+}
-+
-+unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ /* we have a 12.288MHz crystal */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12288000);
-+}
-+
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{
-+ .name = "WM8731",
-+ .stream_name = "WM8731 HiFi",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8731_dai,
-+ .init = mainstone_wm8731_init,
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct wm8731_setup_data corgi_wm8731_setup = {
-+ .i2c_address = 0x1b,
-+};
-+
-+static struct snd_soc_device mainstone_snd_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8731,
-+ .codec_data = &corgi_wm8731_setup,
-+};
-+
-+static struct platform_device *mainstone_snd_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
-+ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
-+ ret = platform_device_add(mainstone_snd_device);
-+
-+ if (ret)
-+ platform_device_put(mainstone_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC WM8731 Mainstone");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8753.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8753.c
-@@ -0,0 +1,226 @@
-+/*
-+ * mainstone.c -- SoC audio for Mainstone
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Oct 2005 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm8753.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+
-+static int mainstone_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
-+ /* enable USB on the go MUX so we can use SSPFRM2 */
-+ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_SEL;
-+ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_RST;
-+ }
-+ return 0;
-+}
-+
-+static void mainstone_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
-+ /* disable USB on the go MUX so we can use ttyS0 */
-+ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_SEL;
-+ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_RST;
-+ }
-+}
-+
-+static struct snd_soc_ops mainstone_ops = {
-+ .startup = mainstone_startup,
-+ .shutdown = mainstone_shutdown,
-+};
-+
-+static long mst_audio_suspend_mask;
-+
-+static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ mst_audio_suspend_mask = MST_MSCWR2;
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_resume(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_probe(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_remove(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+/* example machine audio_mapnections */
-+static const char* audio_map[][3] = {
-+
-+ /* mic is connected to mic1 - with bias */
-+ {"MIC1", NULL, "Mic Bias"},
-+ {"MIC1N", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic1 Jack"},
-+ {"Mic Bias", NULL, "Mic1 Jack"},
-+
-+ {"ACIN", NULL, "ACOP"},
-+ {NULL, NULL, NULL},
-+};
-+
-+/* headphone detect support on my board */
-+static const char * hp_pol[] = {"Headphone", "Speaker"};
-+static const struct soc_enum wm8753_enum =
-+ SOC_ENUM_SINGLE(WM8753_OUTCTL, 1, 2, hp_pol);
-+
-+static const struct snd_kcontrol_new wm8753_mainstone_controls[] = {
-+ SOC_SINGLE("Headphone Detect Switch", WM8753_OUTCTL, 6, 1, 0),
-+ SOC_ENUM("Headphone Detect Polarity", wm8753_enum),
-+};
-+
-+/*
-+ * This is an example machine initialisation for a wm8753 connected to a
-+ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
-+ * to re-route the audio in such an event.
-+ */
-+static int mainstone_wm8753_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ /* set up mainstone codec pins */
-+ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
-+
-+ /* add mainstone specific controls */
-+ for (i = 0; i < ARRAY_SIZE(wm8753_mainstone_controls); i++) {
-+ if ((err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8753_mainstone_controls[i],codec, NULL))) < 0)
-+ return err;
-+ }
-+
-+ /* set up mainstone specific audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ /* wm8753 has pll that generates mclk from 13MHz xtal */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 13000000);
-+}
-+
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{ /* Hifi Playback - for similatious use with voice below */
-+ .name = "WM8753",
-+ .stream_name = "WM8753 HiFi",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8753_dai[WM8753_DAI_HIFI],
-+ .init = mainstone_wm8753_init,
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+{ /* Voice via BT */
-+ .name = "Bluetooth",
-+ .stream_name = "Voice",
-+ .cpu_dai = &pxa_ssp_dai[1],
-+ .codec_dai = &wm8753_dai[WM8753_DAI_VOICE],
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .probe = mainstone_probe,
-+ .remove = mainstone_remove,
-+ .suspend_pre = mainstone_suspend,
-+ .resume_post = mainstone_resume,
-+ .ops = &mainstone_ops,
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct wm8753_setup_data mainstone_wm8753_setup = {
-+ .i2c_address = 0x1a,
-+};
-+
-+static struct snd_soc_device mainstone_snd_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8753,
-+ .codec_data = &mainstone_wm8753_setup,
-+};
-+
-+static struct platform_device *mainstone_snd_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
-+ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
-+ ret = platform_device_add(mainstone_snd_device);
-+
-+ if (ret)
-+ platform_device_put(mainstone_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC WM8753 Mainstone");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8974.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm8974.c
-@@ -0,0 +1,112 @@
-+/*
-+ * mainstone.c -- SoC audio for Mainstone
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Oct 2005 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm8974.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+
-+static int mainstone_wm8974_init(struct snd_soc_codec *codec)
-+{
-+ return 0;
-+}
-+
-+unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ /* we have a PLL */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12288000);
-+
-+}
-+
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{
-+ .name = "WM8974",
-+ .stream_name = "WM8974 HiFi",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8974_dai,
-+ .init = mainstone_wm8974_init,
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct wm8974_setup_data mainstone_wm8974_setup = {
-+ .i2c_address = 0x1a,
-+};
-+
-+static struct snd_soc_device mainstone_snd_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8974,
-+ .codec_data = &mainstone_wm8974_setup,
-+};
-+
-+static struct platform_device *mainstone_snd_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_device, &mainstone_snd_devdata);
-+ mainstone_snd_devdata.dev = &mainstone_snd_device->dev;
-+ ret = platform_device_add(mainstone_snd_device);
-+
-+ if (ret)
-+ platform_device_put(mainstone_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC Mainstone");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9712.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9712.c
-@@ -0,0 +1,171 @@
-+/*
-+ * mainstone.c -- SoC audio for Mainstone
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 29th Jan 2006 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm9712.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+static long mst_audio_suspend_mask;
-+
-+static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ mst_audio_suspend_mask = MST_MSCWR2;
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_resume(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_probe(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_remove(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+/* mainstone machine dapm widgets */
-+static const struct snd_soc_dapm_widget mainstone_dapm_widgets[] = {
-+ SND_SOC_DAPM_MIC("Mic (Internal)", NULL),
-+};
-+
-+/* example machine interconnections */
-+static const char* intercon[][3] = {
-+
-+ /* mic is connected to mic1 - with bias */
-+ {"MIC1", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic (Internal)"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+/*
-+ * This is an example machine initialisation for a wm8753 connected to a
-+ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
-+ * to re-route the audio in such an event.
-+ */
-+static int mainstone_wm9712_init(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ /* set up mainstone codec pins */
-+ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
-+ //snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
-+
-+ /* Add mainstone specific widgets */
-+ for(i = 0; i < ARRAY_SIZE(mainstone_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &mainstone_dapm_widgets[i]);
-+ }
-+
-+ /* set up mainstone specific audio path interconnects */
-+ for(i = 0; intercon[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1], intercon[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{
-+ .name = "AC97",
-+ .stream_name = "AC97 HiFi",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-+ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
-+ .init = mainstone_wm9712_init,
-+},
-+{
-+ .name = "AC97 Aux",
-+ .stream_name = "AC97 Aux",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-+ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .probe = mainstone_probe,
-+ .remove = mainstone_remove,
-+ .suspend_pre = mainstone_suspend,
-+ .resume_post = mainstone_resume,
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct snd_soc_device mainstone_snd_ac97_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm9712,
-+};
-+
-+static struct platform_device *mainstone_snd_ac97_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_ac97_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_ac97_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_ac97_device, &mainstone_snd_ac97_devdata);
-+ mainstone_snd_ac97_devdata.dev = &mainstone_snd_ac97_device->dev;
-+
-+ if((ret = platform_device_add(mainstone_snd_ac97_device)) != 0)
-+ platform_device_put(mainstone_snd_ac97_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_ac97_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC WM9712 Mainstone");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9713.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/mainstone_wm9713.c
-@@ -0,0 +1,263 @@
-+/*
-+ * mainstone.c -- SoC audio for Mainstone
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Mainstone audio amplifier code taken from arch/arm/mach-pxa/mainstone.c
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 29th Jan 2006 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+#include <linux/i2c.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm9713.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine mainstone;
-+
-+static int mainstone_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
-+ /* enable USB on the go MUX so we can use SSPFRM2 */
-+ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_SEL;
-+ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_RST;
-+ }
-+ return 0;
-+}
-+
-+static void mainstone_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if(rtd->cpu_dai->type == SND_SOC_DAI_PCM && rtd->cpu_dai->id == 1) {
-+ /* disable USB on the go MUX so we can use ttyS0 */
-+ MST_MSCWR2 &= ~MST_MSCWR2_USB_OTG_SEL;
-+ MST_MSCWR2 |= MST_MSCWR2_USB_OTG_RST;
-+ }
-+}
-+
-+static struct snd_soc_ops mainstone_ops = {
-+ .startup = mainstone_startup,
-+ .shutdown = mainstone_shutdown,
-+};
-+
-+static int test = 0;
-+static int get_test(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = test;
-+ return 0;
-+}
-+
-+static int set_test(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ test = ucontrol->value.integer.value[0];
-+ if(test) {
-+
-+ } else {
-+
-+ }
-+ return 0;
-+}
-+
-+static long mst_audio_suspend_mask;
-+
-+static int mainstone_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ mst_audio_suspend_mask = MST_MSCWR2;
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_resume(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= mst_audio_suspend_mask | ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_probe(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 &= ~MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static int mainstone_remove(struct platform_device *pdev)
-+{
-+ MST_MSCWR2 |= MST_MSCWR2_AC97_SPKROFF;
-+ return 0;
-+}
-+
-+static const char* test_function[] = {"Off", "On"};
-+static const struct soc_enum mainstone_enum[] = {
-+ SOC_ENUM_SINGLE_EXT(2, test_function),
-+};
-+
-+static const struct snd_kcontrol_new mainstone_controls[] = {
-+ SOC_ENUM_EXT("ATest Function", mainstone_enum[0], get_test, set_test),
-+};
-+
-+/* mainstone machine dapm widgets */
-+static const struct snd_soc_dapm_widget mainstone_dapm_widgets[] = {
-+ SND_SOC_DAPM_MIC("Mic 1", NULL),
-+ SND_SOC_DAPM_MIC("Mic 2", NULL),
-+ SND_SOC_DAPM_MIC("Mic 3", NULL),
-+};
-+
-+/* example machine audio_mapnections */
-+static const char* audio_map[][3] = {
-+
-+ /* mic is connected to mic1 - with bias */
-+ {"MIC1", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic 1"},
-+ /* mic is connected to mic2A - with bias */
-+ {"MIC2A", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic 2"},
-+ /* mic is connected to mic2B - with bias */
-+ {"MIC2B", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic 3"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+/*
-+ * This is an example machine initialisation for a wm9713 connected to a
-+ * Mainstone II. It is missing logic to detect hp/mic insertions and logic
-+ * to re-route the audio in such an event.
-+ */
-+static int mainstone_wm9713_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ /* set up mainstone codec pins */
-+ snd_soc_dapm_set_endpoint(codec, "RXP", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RXN", 0);
-+ //snd_soc_dapm_set_endpoint(codec, "MIC2", 0);
-+
-+ /* Add test specific controls */
-+ for (i = 0; i < ARRAY_SIZE(mainstone_controls); i++) {
-+ if ((err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&mainstone_controls[i],codec, NULL))) < 0)
-+ return err;
-+ }
-+
-+ /* Add mainstone specific widgets */
-+ for(i = 0; i < ARRAY_SIZE(mainstone_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &mainstone_dapm_widgets[i]);
-+ }
-+
-+ /* set up mainstone specific audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+/* configure the system audio clock */
-+unsigned int mainstone_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 24576000);
-+}
-+
-+static struct snd_soc_dai_link mainstone_dai[] = {
-+{
-+ .name = "AC97",
-+ .stream_name = "AC97 HiFi",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-+ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
-+ .init = mainstone_wm9713_init,
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+{
-+ .name = "AC97 Aux",
-+ .stream_name = "AC97 Aux",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-+ .codec_dai = &wm9713_dai[WM9713_DAI_AC97_AUX],
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+{
-+ .name = "WM9713",
-+ .stream_name = "WM9713 Voice",
-+ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP2],
-+ .codec_dai = &wm9713_dai[WM9713_DAI_PCM_VOICE],
-+ .config_sysclk = mainstone_config_sysclk,
-+},
-+};
-+
-+static struct snd_soc_machine mainstone = {
-+ .name = "Mainstone",
-+ .probe = mainstone_probe,
-+ .remove = mainstone_remove,
-+ .suspend_pre = mainstone_suspend,
-+ .resume_post = mainstone_resume,
-+ .ops = &mainstone_ops,
-+ .dai_link = mainstone_dai,
-+ .num_links = ARRAY_SIZE(mainstone_dai),
-+};
-+
-+static struct snd_soc_device mainstone_snd_ac97_devdata = {
-+ .machine = &mainstone,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm9713,
-+};
-+
-+static struct platform_device *mainstone_snd_ac97_device;
-+
-+static int __init mainstone_init(void)
-+{
-+ int ret;
-+
-+ mainstone_snd_ac97_device = platform_device_alloc("soc-audio", -1);
-+ if (!mainstone_snd_ac97_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(mainstone_snd_ac97_device, &mainstone_snd_ac97_devdata);
-+ mainstone_snd_ac97_devdata.dev = &mainstone_snd_ac97_device->dev;
-+
-+ if((ret = platform_device_add(mainstone_snd_ac97_device)) != 0)
-+ platform_device_put(mainstone_snd_ac97_device);
-+
-+ return ret;
-+}
-+
-+static void __exit mainstone_exit(void)
-+{
-+ platform_device_unregister(mainstone_snd_ac97_device);
-+}
-+
-+module_init(mainstone_init);
-+module_exit(mainstone_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC WM9713 Mainstone");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/poodle.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/poodle.c
-@@ -0,0 +1,329 @@
-+/*
-+ * poodle.c -- SoC audio for Poodle
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ * Richard Purdie <richard@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/hardware/locomo.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/poodle.h>
-+#include <asm/arch/audio.h>
-+
-+#include "../codecs/wm8731.h"
-+#include "pxa2xx-pcm.h"
-+
-+#define POODLE_HP 1
-+#define POODLE_HP_OFF 0
-+#define POODLE_SPK_ON 1
-+#define POODLE_SPK_OFF 0
-+
-+ /* audio clock in Hz - rounded from 12.235MHz */
-+#define POODLE_AUDIO_CLOCK 12288000
-+
-+static int poodle_jack_func;
-+static int poodle_spk_func;
-+
-+static void poodle_ext_control(struct snd_soc_codec *codec)
-+{
-+ int spk = 0;
-+
-+ /* set up jack connection */
-+ if (poodle_jack_func == POODLE_HP) {
-+ /* set = unmute headphone */
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_L, 1);
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_R, 1);
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
-+ } else {
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_L, 0);
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_R, 0);
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
-+ }
-+
-+ if (poodle_spk_func == POODLE_SPK_ON)
-+ spk = 1;
-+
-+ /* set the enpoints to their new connetion states */
-+ snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
-+
-+ /* signal a DAPM event */
-+ snd_soc_dapm_sync_endpoints(codec);
-+}
-+
-+static int poodle_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec *codec = rtd->socdev->codec;
-+
-+ /* check the jack status at stream startup */
-+ poodle_ext_control(codec);
-+ return 0;
-+}
-+
-+/* we need to unmute the HP at shutdown as the mute burns power on poodle */
-+static int poodle_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec *codec = rtd->socdev->codec;
-+
-+ /* set = unmute headphone */
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_L, 1);
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_R, 1);
-+ return 0;
-+}
-+
-+static struct snd_soc_ops poodle_ops = {
-+ .startup = poodle_startup,
-+ .shutdown = poodle_shutdown,
-+};
-+
-+static int poodle_get_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = poodle_jack_func;
-+ return 0;
-+}
-+
-+static int poodle_set_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (poodle_jack_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ poodle_jack_func = ucontrol->value.integer.value[0];
-+ poodle_ext_control(codec);
-+ return 1;
-+}
-+
-+static int poodle_get_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = poodle_spk_func;
-+ return 0;
-+}
-+
-+static int poodle_set_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (poodle_spk_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ poodle_spk_func = ucontrol->value.integer.value[0];
-+ poodle_ext_control(codec);
-+ return 1;
-+}
-+
-+static int poodle_amp_event(struct snd_soc_dapm_widget *w, int event)
-+{
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_AMP_ON, 0);
-+ else
-+ locomo_gpio_write(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_AMP_ON, 1);
-+
-+ return 0;
-+}
-+
-+/* poodle machine dapm widgets */
-+static const struct snd_soc_dapm_widget wm8731_dapm_widgets[] = {
-+SND_SOC_DAPM_HP("Headphone Jack", NULL),
-+SND_SOC_DAPM_SPK("Ext Spk", poodle_amp_event),
-+};
-+
-+/* Corgi machine audio_mapnections to the codec pins */
-+static const char *audio_map[][3] = {
-+
-+ /* headphone connected to LHPOUT1, RHPOUT1 */
-+ {"Headphone Jack", NULL, "LHPOUT"},
-+ {"Headphone Jack", NULL, "RHPOUT"},
-+
-+ /* speaker connected to LOUT, ROUT */
-+ {"Ext Spk", NULL, "ROUT"},
-+ {"Ext Spk", NULL, "LOUT"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static const char *jack_function[] = {"Off", "Headphone"};
-+static const char *spk_function[] = {"Off", "On"};
-+static const struct soc_enum poodle_enum[] = {
-+ SOC_ENUM_SINGLE_EXT(2, jack_function),
-+ SOC_ENUM_SINGLE_EXT(2, spk_function),
-+};
-+
-+static const snd_kcontrol_new_t wm8731_poodle_controls[] = {
-+ SOC_ENUM_EXT("Jack Function", poodle_enum[0], poodle_get_jack,
-+ poodle_set_jack),
-+ SOC_ENUM_EXT("Speaker Function", poodle_enum[1], poodle_get_spk,
-+ poodle_set_spk),
-+};
-+
-+/*
-+ * Logic for a wm8731 as connected on a Sharp SL-C7x0 Device
-+ */
-+static int poodle_wm8731_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MICIN", 1);
-+
-+ /* Add poodle specific controls */
-+ for (i = 0; i < ARRAY_SIZE(wm8731_poodle_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8731_poodle_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ /* Add poodle specific widgets */
-+ for (i = 0; i < ARRAY_SIZE(wm8731_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8731_dapm_widgets[i]);
-+ }
-+
-+ /* Set up poodle specific audio path audio_map */
-+ for (i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+static unsigned int poodle_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ if (info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
-+ /* pxa2xx is i2s master */
-+ switch (info->rate) {
-+ case 44100:
-+ case 88200:
-+ /* configure codec digital filters for 44.1, 88.2 */
-+ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ 11289600);
-+ break;
-+ default:
-+ /* configure codec digital filters for all other rates */
-+ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ POODLE_AUDIO_CLOCK);
-+ break;
-+ }
-+ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info,
-+ POODLE_AUDIO_CLOCK);
-+ } else {
-+ /* codec is i2s master -
-+ * only configure codec DAI clock and filters */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ POODLE_AUDIO_CLOCK);
-+ }
-+}
-+
-+/* poodle digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link poodle_dai = {
-+ .name = "WM8731",
-+ .stream_name = "WM8731",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8731_dai,
-+ .init = poodle_wm8731_init,
-+ .config_sysclk = poodle_config_sysclk,
-+};
-+
-+/* poodle audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_poodle = {
-+ .name = "Poodle",
-+ .dai_link = &poodle_dai,
-+ .num_links = 1,
-+ .ops = &poodle_ops,
-+};
-+
-+/* poodle audio private data */
-+static struct wm8731_setup_data poodle_wm8731_setup = {
-+ .i2c_address = 0x1b,
-+};
-+
-+/* poodle audio subsystem */
-+static struct snd_soc_device poodle_snd_devdata = {
-+ .machine = &snd_soc_machine_poodle,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8731,
-+ .codec_data = &poodle_wm8731_setup,
-+};
-+
-+static struct platform_device *poodle_snd_device;
-+
-+static int __init poodle_init(void)
-+{
-+ int ret;
-+
-+ if (!machine_is_poodle())
-+ return -ENODEV;
-+
-+ locomo_gpio_set_dir(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_AMP_ON, 0);
-+ /* should we mute HP at startup - burning power ?*/
-+ locomo_gpio_set_dir(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_L, 0);
-+ locomo_gpio_set_dir(&poodle_locomo_device.dev,
-+ POODLE_LOCOMO_GPIO_MUTE_R, 0);
-+
-+ poodle_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!poodle_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(poodle_snd_device, &poodle_snd_devdata);
-+ poodle_snd_devdata.dev = &poodle_snd_device->dev;
-+ ret = platform_device_add(poodle_snd_device);
-+
-+ if (ret)
-+ platform_device_put(poodle_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit poodle_exit(void)
-+{
-+ platform_device_unregister(poodle_snd_device);
-+}
-+
-+module_init(poodle_init);
-+module_exit(poodle_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Richard Purdie");
-+MODULE_DESCRIPTION("ALSA SoC Poodle");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ac97.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ac97.c
-@@ -0,0 +1,437 @@
-+/*
-+ * linux/sound/pxa2xx-ac97.c -- AC97 support for the Intel PXA2xx chip.
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Dec 02, 2004
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/interrupt.h>
-+#include <linux/wait.h>
-+#include <linux/delay.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/ac97_codec.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+
-+#include <asm/irq.h>
-+#include <linux/mutex.h>
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/audio.h>
-+
-+#include "pxa2xx-pcm.h"
-+
-+static DEFINE_MUTEX(car_mutex);
-+static DECLARE_WAIT_QUEUE_HEAD(gsr_wq);
-+static volatile long gsr_bits;
-+
-+#define AC97_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define AC97_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
-+
-+/* may need to expand this */
-+static struct snd_soc_dai_mode pxa2xx_ac97_modes[] = {
-+ {
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = AC97_RATES,
-+ .pcmdir = AC97_DIR,
-+ },
-+};
-+
-+/*
-+ * Beware PXA27x bugs:
-+ *
-+ * o Slot 12 read from modem space will hang controller.
-+ * o CDONE, SDONE interrupt fails after any slot 12 IO.
-+ *
-+ * We therefore have an hybrid approach for waiting on SDONE (interrupt or
-+ * 1 jiffy timeout if interrupt never comes).
-+ */
-+
-+static unsigned short pxa2xx_ac97_read(struct snd_ac97 *ac97,
-+ unsigned short reg)
-+{
-+ unsigned short val = -1;
-+ volatile u32 *reg_addr;
-+
-+ mutex_lock(&car_mutex);
-+
-+ /* set up primary or secondary codec/modem space */
-+#ifdef CONFIG_PXA27x
-+ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
-+#else
-+ if (reg == AC97_GPIO_STATUS)
-+ reg_addr = ac97->num ? &SMC_REG_BASE : &PMC_REG_BASE;
-+ else
-+ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
-+#endif
-+ reg_addr += (reg >> 1);
-+
-+#ifndef CONFIG_PXA27x
-+ if (reg == AC97_GPIO_STATUS) {
-+ /* read from controller cache */
-+ val = *reg_addr;
-+ goto out;
-+ }
-+#endif
-+
-+ /* start read access across the ac97 link */
-+ GSR = GSR_CDONE | GSR_SDONE;
-+ gsr_bits = 0;
-+ val = *reg_addr;
-+
-+ wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_SDONE, 1);
-+ if (!((GSR | gsr_bits) & GSR_SDONE)) {
-+ printk(KERN_ERR "%s: read error (ac97_reg=%x GSR=%#lx)\n",
-+ __FUNCTION__, reg, GSR | gsr_bits);
-+ val = -1;
-+ goto out;
-+ }
-+
-+ /* valid data now */
-+ GSR = GSR_CDONE | GSR_SDONE;
-+ gsr_bits = 0;
-+ val = *reg_addr;
-+ /* but we've just started another cycle... */
-+ wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_SDONE, 1);
-+
-+out: mutex_unlock(&car_mutex);
-+ return val;
-+}
-+
-+static void pxa2xx_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
-+ unsigned short val)
-+{
-+ volatile u32 *reg_addr;
-+
-+ mutex_lock(&car_mutex);
-+
-+ /* set up primary or secondary codec/modem space */
-+#ifdef CONFIG_PXA27x
-+ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
-+#else
-+ if (reg == AC97_GPIO_STATUS)
-+ reg_addr = ac97->num ? &SMC_REG_BASE : &PMC_REG_BASE;
-+ else
-+ reg_addr = ac97->num ? &SAC_REG_BASE : &PAC_REG_BASE;
-+#endif
-+ reg_addr += (reg >> 1);
-+
-+ GSR = GSR_CDONE | GSR_SDONE;
-+ gsr_bits = 0;
-+ *reg_addr = val;
-+ wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_CDONE, 1);
-+ if (!((GSR | gsr_bits) & GSR_CDONE))
-+ printk(KERN_ERR "%s: write error (ac97_reg=%x GSR=%#lx)\n",
-+ __FUNCTION__, reg, GSR | gsr_bits);
-+
-+ mutex_unlock(&car_mutex);
-+}
-+
-+static void pxa2xx_ac97_warm_reset(struct snd_ac97 *ac97)
-+{
-+ gsr_bits = 0;
-+
-+#ifdef CONFIG_PXA27x
-+ /* warm reset broken on Bulverde,
-+ so manually keep AC97 reset high */
-+ pxa_gpio_mode(113 | GPIO_OUT | GPIO_DFLT_HIGH);
-+ udelay(10);
-+ GCR |= GCR_WARM_RST;
-+ pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
-+ udelay(500);
-+#else
-+ GCR |= GCR_WARM_RST | GCR_PRIRDY_IEN | GCR_SECRDY_IEN;
-+ wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
-+#endif
-+
-+ if (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)))
-+ printk(KERN_INFO "%s: warm reset timeout (GSR=%#lx)\n",
-+ __FUNCTION__, gsr_bits);
-+
-+ GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
-+ GCR |= GCR_SDONE_IE|GCR_CDONE_IE;
-+}
-+
-+static void pxa2xx_ac97_cold_reset(struct snd_ac97 *ac97)
-+{
-+ GCR &= GCR_COLD_RST; /* clear everything but nCRST */
-+ GCR &= ~GCR_COLD_RST; /* then assert nCRST */
-+
-+ gsr_bits = 0;
-+#ifdef CONFIG_PXA27x
-+ /* PXA27x Developers Manual section 13.5.2.2.1 */
-+ pxa_set_cken(1 << 31, 1);
-+ udelay(5);
-+ pxa_set_cken(1 << 31, 0);
-+ GCR = GCR_COLD_RST;
-+ udelay(50);
-+#else
-+ GCR = GCR_COLD_RST;
-+ GCR |= GCR_CDONE_IE|GCR_SDONE_IE;
-+ wait_event_timeout(gsr_wq, gsr_bits & (GSR_PCR | GSR_SCR), 1);
-+#endif
-+
-+ if (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)))
-+ printk(KERN_INFO "%s: cold reset timeout (GSR=%#lx)\n",
-+ __FUNCTION__, gsr_bits);
-+
-+ GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
-+ GCR |= GCR_SDONE_IE|GCR_CDONE_IE;
-+}
-+
-+static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id)
-+{
-+ long status;
-+
-+ status = GSR;
-+ if (status) {
-+ GSR = status;
-+ gsr_bits |= status;
-+ wake_up(&gsr_wq);
-+
-+#ifdef CONFIG_PXA27x
-+ /* Although we don't use those we still need to clear them
-+ since they tend to spuriously trigger when MMC is used
-+ (hardware bug? go figure)... */
-+ MISR = MISR_EOC;
-+ PISR = PISR_EOC;
-+ MCSR = MCSR_EOC;
-+#endif
-+
-+ return IRQ_HANDLED;
-+ }
-+
-+ return IRQ_NONE;
-+}
-+
-+struct snd_ac97_bus_ops soc_ac97_ops = {
-+ .read = pxa2xx_ac97_read,
-+ .write = pxa2xx_ac97_write,
-+ .warm_reset = pxa2xx_ac97_warm_reset,
-+ .reset = pxa2xx_ac97_cold_reset,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_out = {
-+ .name = "AC97 PCM Stereo out",
-+ .dev_addr = __PREG(PCDR),
-+ .drcmr = &DRCMRTXPCDR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST32 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_in = {
-+ .name = "AC97 PCM Stereo in",
-+ .dev_addr = __PREG(PCDR),
-+ .drcmr = &DRCMRRXPCDR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST32 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_out = {
-+ .name = "AC97 Aux PCM (Slot 5) Mono out",
-+ .dev_addr = __PREG(MODR),
-+ .drcmr = &DRCMRTXMODR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_in = {
-+ .name = "AC97 Aux PCM (Slot 5) Mono in",
-+ .dev_addr = __PREG(MODR),
-+ .drcmr = &DRCMRRXMODR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_mic_mono_in = {
-+ .name = "AC97 Mic PCM (Slot 6) Mono in",
-+ .dev_addr = __PREG(MCDR),
-+ .drcmr = &DRCMRRXMCDR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+#ifdef CONFIG_PM
-+static int pxa2xx_ac97_suspend(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ GCR |= GCR_ACLINK_OFF;
-+ pxa_set_cken(CKEN2_AC97, 0);
-+ return 0;
-+}
-+
-+static int pxa2xx_ac97_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
-+ pxa_gpio_mode(GPIO30_SDATA_OUT_AC97_MD);
-+ pxa_gpio_mode(GPIO28_BITCLK_AC97_MD);
-+ pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
-+#ifdef CONFIG_PXA27x
-+ /* Use GPIO 113 as AC97 Reset on Bulverde */
-+ pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
-+#endif
-+ pxa_set_cken(CKEN2_AC97, 1);
-+ return 0;
-+}
-+
-+#else
-+#define pxa2xx_ac97_suspend NULL
-+#define pxa2xx_ac97_resume NULL
-+#endif
-+
-+static int pxa2xx_ac97_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+
-+ ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, 0, "AC97", NULL);
-+ if (ret < 0)
-+ goto err;
-+
-+ pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
-+ pxa_gpio_mode(GPIO30_SDATA_OUT_AC97_MD);
-+ pxa_gpio_mode(GPIO28_BITCLK_AC97_MD);
-+ pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
-+#ifdef CONFIG_PXA27x
-+ /* Use GPIO 113 as AC97 Reset on Bulverde */
-+ pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT);
-+#endif
-+ pxa_set_cken(CKEN2_AC97, 1);
-+ return 0;
-+
-+ err:
-+ if (CKEN & CKEN2_AC97) {
-+ GCR |= GCR_ACLINK_OFF;
-+ free_irq(IRQ_AC97, NULL);
-+ pxa_set_cken(CKEN2_AC97, 0);
-+ }
-+ return ret;
-+}
-+
-+static void pxa2xx_ac97_remove(struct platform_device *pdev)
-+{
-+ GCR |= GCR_ACLINK_OFF;
-+ free_irq(IRQ_AC97, NULL);
-+ pxa_set_cken(CKEN2_AC97, 0);
-+}
-+
-+static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_stereo_out;
-+ else
-+ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_stereo_in;
-+
-+ return 0;
-+}
-+
-+static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_aux_mono_out;
-+ else
-+ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_aux_mono_in;
-+
-+ return 0;
-+}
-+
-+static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ return -ENODEV;
-+ else
-+ rtd->cpu_dai->dma_data = &pxa2xx_ac97_pcm_mic_mono_in;
-+
-+ return 0;
-+}
-+
-+/*
-+ * There is only 1 physical AC97 interface for pxa2xx, but it
-+ * has extra fifo's that can be used for aux DACs and ADCs.
-+ */
-+struct snd_soc_cpu_dai pxa_ac97_dai[] = {
-+{
-+ .name = "pxa2xx-ac97",
-+ .id = 0,
-+ .type = SND_SOC_DAI_AC97,
-+ .probe = pxa2xx_ac97_probe,
-+ .remove = pxa2xx_ac97_remove,
-+ .suspend = pxa2xx_ac97_suspend,
-+ .resume = pxa2xx_ac97_resume,
-+ .playback = {
-+ .stream_name = "AC97 Playback",
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .capture = {
-+ .stream_name = "AC97 Capture",
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .ops = {
-+ .hw_params = pxa2xx_ac97_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(pxa2xx_ac97_modes),
-+ .mode = pxa2xx_ac97_modes,},
-+},
-+{
-+ .name = "pxa2xx-ac97-aux",
-+ .id = 1,
-+ .type = SND_SOC_DAI_AC97,
-+ .playback = {
-+ .stream_name = "AC97 Aux Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .capture = {
-+ .stream_name = "AC97 Aux Capture",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .ops = {
-+ .hw_params = pxa2xx_ac97_hw_aux_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(pxa2xx_ac97_modes),
-+ .mode = pxa2xx_ac97_modes,},
-+},
-+{
-+ .name = "pxa2xx-ac97-mic",
-+ .id = 2,
-+ .type = SND_SOC_DAI_AC97,
-+ .capture = {
-+ .stream_name = "AC97 Mic Capture",
-+ .channels_min = 1,
-+ .channels_max = 1,},
-+ .ops = {
-+ .hw_params = pxa2xx_ac97_hw_mic_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(pxa2xx_ac97_modes),
-+ .mode = pxa2xx_ac97_modes,},},
-+};
-+
-+EXPORT_SYMBOL_GPL(pxa_ac97_dai);
-+EXPORT_SYMBOL_GPL(soc_ac97_ops);
-+
-+MODULE_AUTHOR("Nicolas Pitre");
-+MODULE_DESCRIPTION("AC97 driver for the Intel PXA2xx chip");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-i2s.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-i2s.c
-@@ -0,0 +1,354 @@
-+/*
-+ * pxa2xx-i2s.c -- ALSA Soc Audio Layer
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 12th Aug 2005 Initial version.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/device.h>
-+#include <linux/delay.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/audio.h>
-+
-+#include "pxa2xx-pcm.h"
-+
-+/* used to disable sysclk if external crystal is used */
-+static int extclk;
-+module_param(extclk, int, 0);
-+MODULE_PARM_DESC(extclk, "set to 1 to disable pxa2xx i2s sysclk");
-+
-+struct pxa_i2s_port {
-+ u32 sadiv;
-+ u32 sacr0;
-+ u32 sacr1;
-+ u32 saimr;
-+ int master;
-+};
-+static struct pxa_i2s_port pxa_i2s;
-+
-+#define PXA_I2S_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
-+
-+#define PXA_I2S_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define PXA_I2S_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+/* priv is divider */
-+static struct snd_soc_dai_mode pxa2xx_i2s_modes[] = {
-+ /* pxa2xx I2S frame and clock master modes */
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x48,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x34,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x24,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0x1a,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0xd,
-+ },
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = PXA_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBD(4),
-+ .priv = 0xc,
-+ },
-+
-+ /* pxa2xx I2S frame master and clock slave mode */
-+ {
-+ .fmt = PXA_I2S_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = PXA_I2S_RATES,
-+ .pcmdir = PXA_I2S_DIR,
-+ .fs = SND_SOC_FS_ALL,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .bfs = 64,
-+ .priv = 0x48,
-+ },
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = {
-+ .name = "I2S PCM Stereo out",
-+ .dev_addr = __PREG(SADR),
-+ .drcmr = &DRCMRTXSADR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST32 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_in = {
-+ .name = "I2S PCM Stereo in",
-+ .dev_addr = __PREG(SADR),
-+ .drcmr = &DRCMRRXSADR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST32 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_gpio gpio_bus[] = {
-+ { /* I2S SoC Slave */
-+ .rx = GPIO29_SDATA_IN_I2S_MD,
-+ .tx = GPIO30_SDATA_OUT_I2S_MD,
-+ .clk = GPIO28_BITCLK_IN_I2S_MD,
-+ .frm = GPIO31_SYNC_I2S_MD,
-+ },
-+ { /* I2S SoC Master */
-+#ifdef CONFIG_PXA27x
-+ .sys = GPIO113_I2S_SYSCLK_MD,
-+#else
-+ .sys = GPIO32_SYSCLK_I2S_MD,
-+#endif
-+ .rx = GPIO29_SDATA_IN_I2S_MD,
-+ .tx = GPIO30_SDATA_OUT_I2S_MD,
-+ .clk = GPIO28_BITCLK_OUT_I2S_MD,
-+ .frm = GPIO31_SYNC_I2S_MD,
-+ },
-+};
-+
-+static int pxa2xx_i2s_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (!rtd->cpu_dai->active) {
-+ SACR0 |= SACR0_RST;
-+ SACR0 = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+/* wait for I2S controller to be ready */
-+static int pxa_i2s_wait(void)
-+{
-+ int i;
-+
-+ /* flush the Rx FIFO */
-+ for(i = 0; i < 16; i++)
-+ SADR;
-+ return 0;
-+}
-+
-+static int pxa2xx_i2s_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ pxa_i2s.master = 0;
-+ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CBS_CFS)
-+ pxa_i2s.master = 1;
-+
-+ if (pxa_i2s.master && !extclk)
-+ pxa_gpio_mode(gpio_bus[pxa_i2s.master].sys);
-+
-+ pxa_gpio_mode(gpio_bus[pxa_i2s.master].rx);
-+ pxa_gpio_mode(gpio_bus[pxa_i2s.master].tx);
-+ pxa_gpio_mode(gpio_bus[pxa_i2s.master].frm);
-+ pxa_gpio_mode(gpio_bus[pxa_i2s.master].clk);
-+ pxa_set_cken(CKEN8_I2S, 1);
-+ pxa_i2s_wait();
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ rtd->cpu_dai->dma_data = &pxa2xx_i2s_pcm_stereo_out;
-+ else
-+ rtd->cpu_dai->dma_data = &pxa2xx_i2s_pcm_stereo_in;
-+
-+ /* is port used by another stream */
-+ if (!(SACR0 & SACR0_ENB)) {
-+
-+ SACR0 = 0;
-+ SACR1 = 0;
-+ if (pxa_i2s.master)
-+ SACR0 |= SACR0_BCKD;
-+
-+ SACR0 |= SACR0_RFTH(14) | SACR0_TFTH(1);
-+
-+ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_LEFT_J)
-+ SACR1 |= SACR1_AMSL;
-+ }
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SAIMR |= SAIMR_TFS;
-+ else
-+ SAIMR |= SAIMR_RFS;
-+
-+ SADIV = rtd->cpu_dai->dai_runtime.priv;
-+ return 0;
-+}
-+
-+static int pxa2xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ SACR0 |= SACR0_ENB;
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static void pxa2xx_i2s_shutdown(struct snd_pcm_substream *substream)
-+{
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ SACR1 |= SACR1_DRPL;
-+ SAIMR &= ~SAIMR_TFS;
-+ } else {
-+ SACR1 |= SACR1_DREC;
-+ SAIMR &= ~SAIMR_RFS;
-+ }
-+
-+ if (SACR1 & (SACR1_DREC | SACR1_DRPL)) {
-+ SACR0 &= ~SACR0_ENB;
-+ pxa_i2s_wait();
-+ pxa_set_cken(CKEN8_I2S, 0);
-+ }
-+}
-+
-+#ifdef CONFIG_PM
-+static int pxa2xx_i2s_suspend(struct platform_device *dev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if (!dai->active)
-+ return 0;
-+
-+ /* store registers */
-+ pxa_i2s.sacr0 = SACR0;
-+ pxa_i2s.sacr1 = SACR1;
-+ pxa_i2s.saimr = SAIMR;
-+ pxa_i2s.sadiv = SADIV;
-+
-+ /* deactivate link */
-+ SACR0 &= ~SACR0_ENB;
-+ pxa_i2s_wait();
-+ return 0;
-+}
-+
-+static int pxa2xx_i2s_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if (!dai->active)
-+ return 0;
-+
-+ pxa_i2s_wait();
-+
-+ SACR0 = pxa_i2s.sacr0 &= ~SACR0_ENB;
-+ SACR1 = pxa_i2s.sacr1;
-+ SAIMR = pxa_i2s.saimr;
-+ SADIV = pxa_i2s.sadiv;
-+ SACR0 |= SACR0_ENB;
-+
-+ return 0;
-+}
-+
-+#else
-+#define pxa2xx_i2s_suspend NULL
-+#define pxa2xx_i2s_resume NULL
-+#endif
-+
-+/* pxa2xx I2S sysclock is always 256 FS */
-+static unsigned int pxa_i2s_config_sysclk(struct snd_soc_cpu_dai *iface,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ return info->rate << 8;
-+}
-+
-+struct snd_soc_cpu_dai pxa_i2s_dai = {
-+ .name = "pxa2xx-i2s",
-+ .id = 0,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = pxa2xx_i2s_suspend,
-+ .resume = pxa2xx_i2s_resume,
-+ .config_sysclk = pxa_i2s_config_sysclk,
-+ .playback = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = pxa2xx_i2s_startup,
-+ .shutdown = pxa2xx_i2s_shutdown,
-+ .trigger = pxa2xx_i2s_trigger,
-+ .hw_params = pxa2xx_i2s_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(pxa2xx_i2s_modes),
-+ .mode = pxa2xx_i2s_modes,},
-+};
-+
-+EXPORT_SYMBOL_GPL(pxa_i2s_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("pxa2xx I2S SoC Interface");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.c
-@@ -0,0 +1,363 @@
-+/*
-+ * linux/sound/arm/pxa2xx-pcm.c -- ALSA PCM interface for the Intel PXA2xx chip
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Nov 30, 2004
-+ * Copyright: (C) 2004 MontaVista Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/dma-mapping.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+
-+#include <asm/dma.h>
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/audio.h>
-+
-+#include "pxa2xx-pcm.h"
-+
-+static const struct snd_pcm_hardware pxa2xx_pcm_hardware = {
-+ .info = SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_PAUSE |
-+ SNDRV_PCM_INFO_RESUME,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE |
-+ SNDRV_PCM_FMTBIT_S24_LE |
-+ SNDRV_PCM_FMTBIT_S32_LE,
-+ .period_bytes_min = 32,
-+ .period_bytes_max = 8192 - 32,
-+ .periods_min = 1,
-+ .periods_max = PAGE_SIZE/sizeof(pxa_dma_desc),
-+ .buffer_bytes_max = 128 * 1024,
-+ .fifo_size = 32,
-+};
-+
-+struct pxa2xx_runtime_data {
-+ int dma_ch;
-+ struct pxa2xx_pcm_dma_params *params;
-+ pxa_dma_desc *dma_desc_array;
-+ dma_addr_t dma_desc_array_phys;
-+};
-+
-+static void pxa2xx_pcm_dma_irq(int dma_ch, void *dev_id)
-+{
-+ struct snd_pcm_substream *substream = dev_id;
-+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
-+ int dcsr;
-+
-+ dcsr = DCSR(dma_ch);
-+ DCSR(dma_ch) = dcsr & ~DCSR_STOPIRQEN;
-+
-+ if (dcsr & DCSR_ENDINTR) {
-+ snd_pcm_period_elapsed(substream);
-+ } else {
-+ printk( KERN_ERR "%s: DMA error on channel %d (DCSR=%#x)\n",
-+ prtd->params->name, dma_ch, dcsr );
-+ }
-+}
-+
-+static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct pxa2xx_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct pxa2xx_pcm_dma_params *dma = rtd->cpu_dai->dma_data;
-+ size_t totsize = params_buffer_bytes(params);
-+ size_t period = params_period_bytes(params);
-+ pxa_dma_desc *dma_desc;
-+ dma_addr_t dma_buff_phys, next_desc_phys;
-+ int ret;
-+
-+ /* this may get called several times by oss emulation
-+ * with different params */
-+ if (prtd->params == NULL) {
-+ prtd->params = dma;
-+ ret = pxa_request_dma(prtd->params->name, DMA_PRIO_LOW,
-+ pxa2xx_pcm_dma_irq, substream);
-+ if (ret < 0)
-+ return ret;
-+ prtd->dma_ch = ret;
-+ } else if (prtd->params != dma) {
-+ pxa_free_dma(prtd->dma_ch);
-+ prtd->params = dma;
-+ ret = pxa_request_dma(prtd->params->name, DMA_PRIO_LOW,
-+ pxa2xx_pcm_dma_irq, substream);
-+ if (ret < 0)
-+ return ret;
-+ prtd->dma_ch = ret;
-+ }
-+
-+ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-+ runtime->dma_bytes = totsize;
-+
-+ dma_desc = prtd->dma_desc_array;
-+ next_desc_phys = prtd->dma_desc_array_phys;
-+ dma_buff_phys = runtime->dma_addr;
-+ do {
-+ next_desc_phys += sizeof(pxa_dma_desc);
-+ dma_desc->ddadr = next_desc_phys;
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ dma_desc->dsadr = dma_buff_phys;
-+ dma_desc->dtadr = prtd->params->dev_addr;
-+ } else {
-+ dma_desc->dsadr = prtd->params->dev_addr;
-+ dma_desc->dtadr = dma_buff_phys;
-+ }
-+ if (period > totsize)
-+ period = totsize;
-+ dma_desc->dcmd = prtd->params->dcmd | period | DCMD_ENDIRQEN;
-+ dma_desc++;
-+ dma_buff_phys += period;
-+ } while (totsize -= period);
-+ dma_desc[-1].ddadr = prtd->dma_desc_array_phys;
-+
-+ return 0;
-+}
-+
-+static int pxa2xx_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
-+
-+ if (prtd && prtd->params)
-+ *prtd->params->drcmr = 0;
-+
-+ if (prtd->dma_ch) {
-+ snd_pcm_set_runtime_buffer(substream, NULL);
-+ pxa_free_dma(prtd->dma_ch);
-+ prtd->dma_ch = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+static int pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
-+
-+ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
-+ DCSR(prtd->dma_ch) = 0;
-+ DCMD(prtd->dma_ch) = 0;
-+ *prtd->params->drcmr = prtd->dma_ch | DRCMR_MAPVLD;
-+
-+ return 0;
-+}
-+
-+static int pxa2xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ DDADR(prtd->dma_ch) = prtd->dma_desc_array_phys;
-+ DCSR(prtd->dma_ch) = DCSR_RUN;
-+ break;
-+
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
-+ break;
-+
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ DCSR(prtd->dma_ch) |= DCSR_RUN;
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ DDADR(prtd->dma_ch) = prtd->dma_desc_array_phys;
-+ DCSR(prtd->dma_ch) |= DCSR_RUN;
-+ break;
-+
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static snd_pcm_uframes_t
-+pxa2xx_pcm_pointer(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct pxa2xx_runtime_data *prtd = runtime->private_data;
-+
-+ dma_addr_t ptr = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ?
-+ DSADR(prtd->dma_ch) : DTADR(prtd->dma_ch);
-+ snd_pcm_uframes_t x = bytes_to_frames(runtime, ptr - runtime->dma_addr);
-+
-+ if (x == runtime->buffer_size)
-+ x = 0;
-+ return x;
-+}
-+
-+static int pxa2xx_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct pxa2xx_runtime_data *prtd;
-+ int ret;
-+
-+ snd_soc_set_runtime_hwparams(substream, &pxa2xx_pcm_hardware);
-+
-+ /*
-+ * For mysterious reasons (and despite what the manual says)
-+ * playback samples are lost if the DMA count is not a multiple
-+ * of the DMA burst size. Let's add a rule to enforce that.
-+ */
-+ ret = snd_pcm_hw_constraint_step(runtime, 0,
-+ SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);
-+ if (ret)
-+ goto out;
-+
-+ ret = snd_pcm_hw_constraint_step(runtime, 0,
-+ SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);
-+ if (ret)
-+ goto out;
-+
-+ prtd = kzalloc(sizeof(struct pxa2xx_runtime_data), GFP_KERNEL);
-+ if (prtd == NULL) {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
-+
-+ prtd->dma_desc_array =
-+ dma_alloc_writecombine(substream->pcm->card->dev, PAGE_SIZE,
-+ &prtd->dma_desc_array_phys, GFP_KERNEL);
-+ if (!prtd->dma_desc_array) {
-+ ret = -ENOMEM;
-+ goto err1;
-+ }
-+
-+ runtime->private_data = prtd;
-+ return 0;
-+
-+ err1:
-+ kfree(prtd);
-+ out:
-+ return ret;
-+}
-+
-+static int pxa2xx_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct pxa2xx_runtime_data *prtd = runtime->private_data;
-+
-+ dma_free_writecombine(substream->pcm->card->dev, PAGE_SIZE,
-+ prtd->dma_desc_array, prtd->dma_desc_array_phys);
-+ kfree(prtd);
-+ return 0;
-+}
-+
-+static int pxa2xx_pcm_mmap(struct snd_pcm_substream *substream,
-+ struct vm_area_struct *vma)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-+ runtime->dma_area,
-+ runtime->dma_addr,
-+ runtime->dma_bytes);
-+}
-+
-+struct snd_pcm_ops pxa2xx_pcm_ops = {
-+ .open = pxa2xx_pcm_open,
-+ .close = pxa2xx_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = pxa2xx_pcm_hw_params,
-+ .hw_free = pxa2xx_pcm_hw_free,
-+ .prepare = pxa2xx_pcm_prepare,
-+ .trigger = pxa2xx_pcm_trigger,
-+ .pointer = pxa2xx_pcm_pointer,
-+ .mmap = pxa2xx_pcm_mmap,
-+};
-+
-+static int pxa2xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
-+{
-+ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
-+ struct snd_dma_buffer *buf = &substream->dma_buffer;
-+ size_t size = pxa2xx_pcm_hardware.buffer_bytes_max;
-+ buf->dev.type = SNDRV_DMA_TYPE_DEV;
-+ buf->dev.dev = pcm->card->dev;
-+ buf->private_data = NULL;
-+ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
-+ &buf->addr, GFP_KERNEL);
-+ if (!buf->area)
-+ return -ENOMEM;
-+ buf->bytes = size;
-+ return 0;
-+}
-+
-+static void pxa2xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_dma_buffer *buf;
-+ int stream;
-+
-+ for (stream = 0; stream < 2; stream++) {
-+ substream = pcm->streams[stream].substream;
-+ if (!substream)
-+ continue;
-+
-+ buf = &substream->dma_buffer;
-+ if (!buf->area)
-+ continue;
-+
-+ dma_free_writecombine(pcm->card->dev, buf->bytes,
-+ buf->area, buf->addr);
-+ buf->area = NULL;
-+ }
-+}
-+
-+static u64 pxa2xx_pcm_dmamask = DMA_32BIT_MASK;
-+
-+int pxa2xx_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
-+ struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &pxa2xx_pcm_dmamask;
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = DMA_32BIT_MASK;
-+
-+ if (dai->playback.channels_min) {
-+ ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto out;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto out;
-+ }
-+ out:
-+ return ret;
-+}
-+
-+struct snd_soc_platform pxa2xx_soc_platform = {
-+ .name = "pxa2xx-audio",
-+ .pcm_ops = &pxa2xx_pcm_ops,
-+ .pcm_new = pxa2xx_pcm_new,
-+ .pcm_free = pxa2xx_pcm_free_dma_buffers,
-+};
-+
-+EXPORT_SYMBOL_GPL(pxa2xx_soc_platform);
-+
-+MODULE_AUTHOR("Nicolas Pitre");
-+MODULE_DESCRIPTION("Intel PXA2xx PCM DMA module");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-pcm.h
-@@ -0,0 +1,48 @@
-+/*
-+ * linux/sound/arm/pxa2xx-pcm.h -- ALSA PCM interface for the Intel PXA2xx chip
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Nov 30, 2004
-+ * Copyright: MontaVista Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _PXA2XX_PCM_H
-+#define _PXA2XX_PCM_H
-+
-+struct pxa2xx_pcm_dma_params {
-+ char *name; /* stream identifier */
-+ u32 dcmd; /* DMA descriptor dcmd field */
-+ volatile u32 *drcmr; /* the DMA request channel to use */
-+ u32 dev_addr; /* device physical address for DMA */
-+};
-+
-+struct pxa2xx_gpio {
-+ u32 sys;
-+ u32 rx;
-+ u32 tx;
-+ u32 clk;
-+ u32 frm;
-+};
-+
-+/* pxa2xx DAI ID's */
-+#define PXA2XX_DAI_AC97_HIFI 0
-+#define PXA2XX_DAI_AC97_AUX 1
-+#define PXA2XX_DAI_AC97_MIC 2
-+#define PXA2XX_DAI_I2S 0
-+#define PXA2XX_DAI_SSP1 0
-+#define PXA2XX_DAI_SSP2 1
-+#define PXA2XX_DAI_SSP3 2
-+
-+extern struct snd_soc_cpu_dai pxa_ac97_dai[3];
-+extern struct snd_soc_cpu_dai pxa_i2s_dai;
-+extern struct snd_soc_cpu_dai pxa_ssp_dai[3];
-+
-+/* platform data */
-+extern struct snd_soc_platform pxa2xx_soc_platform;
-+extern struct snd_ac97_bus_ops pxa2xx_ac97_ops;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ssp.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/pxa2xx-ssp.c
-@@ -0,0 +1,767 @@
-+/*
-+ * pxa2xx-ssp.c -- ALSA Soc Audio Layer
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 12th Aug 2005 Initial version.
-+ *
-+ * TODO:
-+ * o Fix master mode (bug)
-+ * o Fix resume (bug)
-+ * o Add support for other clocks
-+ * o Test network mode for > 16bit sample size
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/audio.h>
-+#include <asm/arch/ssp.h>
-+
-+#include "pxa2xx-pcm.h"
-+
-+/*
-+ * SSP sysclock frequency in Hz
-+ * Neither default pxa2xx PLL clocks are good for audio, hence pxa27x
-+ * has audio clock. I would recommend using the pxa27x audio clock or an
-+ * external clock or making the codec master to gurantee better sample rates.
-+ */
-+#ifdef CONFIG_PXA27x
-+static int sysclk[3] = {13000000, 13000000, 13000000};
-+#else
-+static int sysclk[3] = {1843200, 1843200, 1843200};
-+#endif
-+module_param_array(sysclk, int, NULL, 0);
-+MODULE_PARM_DESC(sysclk, "sysclk frequency in Hz");
-+
-+/*
-+ * SSP sysclock source.
-+ * sysclk is ignored if audio clock is used
-+ */
-+#ifdef CONFIG_PXA27x
-+static int clksrc[3] = {0, 0, 0};
-+#else
-+static int clksrc[3] = {0, 0, 0};
-+#endif
-+module_param_array(clksrc, int, NULL, 0);
-+MODULE_PARM_DESC(clksrc,
-+ "sysclk source, 0 = internal PLL, 1 = ext, 2 = network, 3 = audio clock");
-+
-+/*
-+ * SSP GPIO's
-+ */
-+#define GPIO26_SSP1RX_MD (26 | GPIO_ALT_FN_1_IN)
-+#define GPIO25_SSP1TX_MD (25 | GPIO_ALT_FN_2_OUT)
-+#define GPIO23_SSP1CLKS_MD (23 | GPIO_ALT_FN_2_IN)
-+#define GPIO24_SSP1FRMS_MD (24 | GPIO_ALT_FN_2_IN)
-+#define GPIO23_SSP1CLKM_MD (23 | GPIO_ALT_FN_2_OUT)
-+#define GPIO24_SSP1FRMM_MD (24 | GPIO_ALT_FN_2_OUT)
-+
-+#define GPIO11_SSP2RX_MD (11 | GPIO_ALT_FN_2_IN)
-+#define GPIO13_SSP2TX_MD (13 | GPIO_ALT_FN_1_OUT)
-+#define GPIO22_SSP2CLKS_MD (22 | GPIO_ALT_FN_3_IN)
-+#define GPIO88_SSP2FRMS_MD (88 | GPIO_ALT_FN_3_IN)
-+#define GPIO22_SSP2CLKM_MD (22 | GPIO_ALT_FN_3_OUT)
-+#define GPIO88_SSP2FRMM_MD (88 | GPIO_ALT_FN_3_OUT)
-+
-+#define GPIO82_SSP3RX_MD (82 | GPIO_ALT_FN_1_IN)
-+#define GPIO81_SSP3TX_MD (81 | GPIO_ALT_FN_1_OUT)
-+#define GPIO84_SSP3CLKS_MD (84 | GPIO_ALT_FN_1_IN)
-+#define GPIO83_SSP3FRMS_MD (83 | GPIO_ALT_FN_1_IN)
-+#define GPIO84_SSP3CLKM_MD (84 | GPIO_ALT_FN_1_OUT)
-+#define GPIO83_SSP3FRMM_MD (83 | GPIO_ALT_FN_1_OUT)
-+
-+#define PXA_SSP_MDAIFMT \
-+ (SND_SOC_DAIFMT_DSP_B |SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_CBM_CFS | \
-+ SND_SOC_DAIFMT_CBS_CFM | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF)
-+
-+#define PXA_SSP_SDAIFMT \
-+ (SND_SOC_DAIFMT_DSP_B |SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_CBM_CFS | \
-+ SND_SOC_DAIFMT_CBS_CFM | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF)
-+
-+#define PXA_SSP_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define PXA_SSP_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | \
-+ SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000)
-+
-+#define PXA_SSP_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+/*
-+ * SSP modes
-+ */
-+static struct snd_soc_dai_mode pxa2xx_ssp_modes[] = {
-+ /* port slave clk & frame modes */
-+ {
-+ .fmt = PXA_SSP_SDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = PXA_SSP_RATES,
-+ .pcmdir = PXA_SSP_DIR,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+
-+ /* port master clk & frame modes */
-+#ifdef CONFIG_PXA27x
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_11025,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_22050,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 256,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 128,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+ {
-+ .fmt = PXA_SSP_MDAIFMT,
-+ .pcmfmt = PXA_SSP_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = PXA_SSP_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = 128,
-+ .bfs = SND_SOC_FSBW(1),
-+ },
-+#endif
-+};
-+
-+static struct ssp_dev ssp[3];
-+#ifdef CONFIG_PM
-+static struct ssp_state ssp_state[3];
-+#endif
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_mono_out = {
-+ .name = "SSP1 PCM Mono out",
-+ .dev_addr = __PREG(SSDR_P1),
-+ .drcmr = &DRCMRTXSSDR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_mono_in = {
-+ .name = "SSP1 PCM Mono in",
-+ .dev_addr = __PREG(SSDR_P1),
-+ .drcmr = &DRCMRRXSSDR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_stereo_out = {
-+ .name = "SSP1 PCM Stereo out",
-+ .dev_addr = __PREG(SSDR_P1),
-+ .drcmr = &DRCMRTXSSDR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp1_pcm_stereo_in = {
-+ .name = "SSP1 PCM Stereo in",
-+ .dev_addr = __PREG(SSDR_P1),
-+ .drcmr = &DRCMRRXSSDR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_mono_out = {
-+ .name = "SSP2 PCM Mono out",
-+ .dev_addr = __PREG(SSDR_P2),
-+ .drcmr = &DRCMRTXSS2DR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_mono_in = {
-+ .name = "SSP2 PCM Mono in",
-+ .dev_addr = __PREG(SSDR_P2),
-+ .drcmr = &DRCMRRXSS2DR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_stereo_out = {
-+ .name = "SSP2 PCM Stereo out",
-+ .dev_addr = __PREG(SSDR_P2),
-+ .drcmr = &DRCMRTXSS2DR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp2_pcm_stereo_in = {
-+ .name = "SSP2 PCM Stereo in",
-+ .dev_addr = __PREG(SSDR_P2),
-+ .drcmr = &DRCMRRXSS2DR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_mono_out = {
-+ .name = "SSP3 PCM Mono out",
-+ .dev_addr = __PREG(SSDR_P3),
-+ .drcmr = &DRCMRTXSS3DR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_mono_in = {
-+ .name = "SSP3 PCM Mono in",
-+ .dev_addr = __PREG(SSDR_P3),
-+ .drcmr = &DRCMRRXSS3DR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH2,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_stereo_out = {
-+ .name = "SSP3 PCM Stereo out",
-+ .dev_addr = __PREG(SSDR_P3),
-+ .drcmr = &DRCMRTXSS3DR,
-+ .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG |
-+ DCMD_BURST16 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params pxa2xx_ssp3_pcm_stereo_in = {
-+ .name = "SSP3 PCM Stereo in",
-+ .dev_addr = __PREG(SSDR_P3),
-+ .drcmr = &DRCMRRXSS3DR,
-+ .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC |
-+ DCMD_BURST16 | DCMD_WIDTH4,
-+};
-+
-+static struct pxa2xx_pcm_dma_params *ssp_dma_params[3][4] = {
-+ {&pxa2xx_ssp1_pcm_mono_out, &pxa2xx_ssp1_pcm_mono_in,
-+ &pxa2xx_ssp1_pcm_stereo_out,&pxa2xx_ssp1_pcm_stereo_in,},
-+ {&pxa2xx_ssp2_pcm_mono_out, &pxa2xx_ssp2_pcm_mono_in,
-+ &pxa2xx_ssp2_pcm_stereo_out, &pxa2xx_ssp2_pcm_stereo_in,},
-+ {&pxa2xx_ssp3_pcm_mono_out, &pxa2xx_ssp3_pcm_mono_in,
-+ &pxa2xx_ssp3_pcm_stereo_out,&pxa2xx_ssp3_pcm_stereo_in,},
-+};
-+
-+static struct pxa2xx_gpio ssp_gpios[3][4] = {
-+ {{ /* SSP1 SND_SOC_DAIFMT_CBM_CFM */
-+ .rx = GPIO26_SSP1RX_MD,
-+ .tx = GPIO25_SSP1TX_MD,
-+ .clk = (23 | GPIO_ALT_FN_2_IN),
-+ .frm = (24 | GPIO_ALT_FN_2_IN),
-+ },
-+ { /* SSP1 SND_SOC_DAIFMT_CBS_CFS */
-+ .rx = GPIO26_SSP1RX_MD,
-+ .tx = GPIO25_SSP1TX_MD,
-+ .clk = (23 | GPIO_ALT_FN_2_OUT),
-+ .frm = (24 | GPIO_ALT_FN_2_OUT),
-+ },
-+ { /* SSP1 SND_SOC_DAIFMT_CBS_CFM */
-+ .rx = GPIO26_SSP1RX_MD,
-+ .tx = GPIO25_SSP1TX_MD,
-+ .clk = (23 | GPIO_ALT_FN_2_OUT),
-+ .frm = (24 | GPIO_ALT_FN_2_IN),
-+ },
-+ { /* SSP1 SND_SOC_DAIFMT_CBM_CFS */
-+ .rx = GPIO26_SSP1RX_MD,
-+ .tx = GPIO25_SSP1TX_MD,
-+ .clk = (23 | GPIO_ALT_FN_2_IN),
-+ .frm = (24 | GPIO_ALT_FN_2_OUT),
-+ }},
-+ {{ /* SSP2 SND_SOC_DAIFMT_CBM_CFM */
-+ .rx = GPIO11_SSP2RX_MD,
-+ .tx = GPIO13_SSP2TX_MD,
-+ .clk = (22 | GPIO_ALT_FN_3_IN),
-+ .frm = (88 | GPIO_ALT_FN_3_IN),
-+ },
-+ { /* SSP2 SND_SOC_DAIFMT_CBS_CFS */
-+ .rx = GPIO11_SSP2RX_MD,
-+ .tx = GPIO13_SSP2TX_MD,
-+ .clk = (22 | GPIO_ALT_FN_3_OUT),
-+ .frm = (88 | GPIO_ALT_FN_3_OUT),
-+ },
-+ { /* SSP2 SND_SOC_DAIFMT_CBS_CFM */
-+ .rx = GPIO11_SSP2RX_MD,
-+ .tx = GPIO13_SSP2TX_MD,
-+ .clk = (22 | GPIO_ALT_FN_3_OUT),
-+ .frm = (88 | GPIO_ALT_FN_3_IN),
-+ },
-+ { /* SSP2 SND_SOC_DAIFMT_CBM_CFS */
-+ .rx = GPIO11_SSP2RX_MD,
-+ .tx = GPIO13_SSP2TX_MD,
-+ .clk = (22 | GPIO_ALT_FN_3_IN),
-+ .frm = (88 | GPIO_ALT_FN_3_OUT),
-+ }},
-+ {{ /* SSP3 SND_SOC_DAIFMT_CBM_CFM */
-+ .rx = GPIO82_SSP3RX_MD,
-+ .tx = GPIO81_SSP3TX_MD,
-+ .clk = (84 | GPIO_ALT_FN_3_IN),
-+ .frm = (83 | GPIO_ALT_FN_3_IN),
-+ },
-+ { /* SSP3 SND_SOC_DAIFMT_CBS_CFS */
-+ .rx = GPIO82_SSP3RX_MD,
-+ .tx = GPIO81_SSP3TX_MD,
-+ .clk = (84 | GPIO_ALT_FN_3_OUT),
-+ .frm = (83 | GPIO_ALT_FN_3_OUT),
-+ },
-+ { /* SSP3 SND_SOC_DAIFMT_CBS_CFM */
-+ .rx = GPIO82_SSP3RX_MD,
-+ .tx = GPIO81_SSP3TX_MD,
-+ .clk = (84 | GPIO_ALT_FN_3_OUT),
-+ .frm = (83 | GPIO_ALT_FN_3_IN),
-+ },
-+ { /* SSP3 SND_SOC_DAIFMT_CBM_CFS */
-+ .rx = GPIO82_SSP3RX_MD,
-+ .tx = GPIO81_SSP3TX_MD,
-+ .clk = (84 | GPIO_ALT_FN_3_IN),
-+ .frm = (83 | GPIO_ALT_FN_3_OUT),
-+ }},
-+};
-+
-+static int pxa2xx_ssp_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ int ret = 0;
-+
-+ if (!rtd->cpu_dai->active) {
-+ ret = ssp_init (&ssp[rtd->cpu_dai->id], rtd->cpu_dai->id + 1,
-+ SSP_NO_IRQ);
-+ if (ret < 0)
-+ return ret;
-+ ssp_disable(&ssp[rtd->cpu_dai->id]);
-+ }
-+ return ret;
-+}
-+
-+static void pxa2xx_ssp_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (!rtd->cpu_dai->active) {
-+ ssp_disable(&ssp[rtd->cpu_dai->id]);
-+ ssp_exit(&ssp[rtd->cpu_dai->id]);
-+ }
-+}
-+
-+#ifdef CONFIG_PM
-+
-+#if defined (CONFIG_PXA27x)
-+static int cken[3] = {CKEN23_SSP1, CKEN3_SSP2, CKEN4_SSP3};
-+#else
-+static int cken[3] = {CKEN3_SSP, CKEN9_NSSP, CKEN10_ASSP};
-+#endif
-+
-+static int pxa2xx_ssp_suspend(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if (!dai->active)
-+ return 0;
-+
-+ ssp_save_state(&ssp[dai->id], &ssp_state[dai->id]);
-+ pxa_set_cken(cken[dai->id], 0);
-+ return 0;
-+}
-+
-+static int pxa2xx_ssp_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if (!dai->active)
-+ return 0;
-+
-+ pxa_set_cken(cken[dai->id], 1);
-+ ssp_restore_state(&ssp[dai->id], &ssp_state[dai->id]);
-+ ssp_enable(&ssp[dai->id]);
-+
-+ return 0;
-+}
-+
-+#else
-+#define pxa2xx_ssp_suspend NULL
-+#define pxa2xx_ssp_resume NULL
-+#endif
-+
-+/* todo - check clk source and PLL before returning clock rate */
-+static unsigned int pxa_ssp_config_sysclk(struct snd_soc_cpu_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ /* audio clock ? (divide by 1) */
-+ if (clksrc[dai->id] == 3) {
-+ switch(info->rate){
-+ case 8000:
-+ case 16000:
-+ case 32000:
-+ case 48000:
-+ case 96000:
-+ return 12288000;
-+ break;
-+ case 11025:
-+ case 22050:
-+ case 44100:
-+ case 88200:
-+ return 11289600;
-+ break;
-+ }
-+ }
-+
-+ /* pll */
-+ return sysclk[dai->id];
-+}
-+
-+#ifdef CONFIG_PXA27x
-+static u32 pxa27x_set_audio_clk(unsigned int rate, unsigned int fs)
-+{
-+ u32 aclk = 0, div = 0;
-+
-+ if (rate == 0 || fs == 0)
-+ return 0;
-+
-+ switch(rate){
-+ case 8000:
-+ case 16000:
-+ case 32000:
-+ case 48000:
-+ case 96000:
-+ aclk = 0x2 << 4;
-+ div = 12288000 / (rate * fs);
-+ break;
-+ case 11025:
-+ case 22050:
-+ case 44100:
-+ case 88200:
-+ aclk = 0x1 << 4;
-+ div = 11289600 / (rate * fs);
-+ break;
-+ }
-+
-+ aclk |= ffs(div) - 1;
-+ return aclk;
-+}
-+#endif
-+
-+static inline int get_scr(int srate, int id)
-+{
-+ if (srate == 0)
-+ return 0;
-+ return (sysclk[id] / srate) - 1;
-+}
-+
-+static int pxa2xx_ssp_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ int fmt = 0, dma = 0, fs, chn = params_channels(params);
-+ u32 ssp_mode = 0, ssp_setup = 0, psp_mode = 0, rate = 0;
-+
-+ fs = rtd->cpu_dai->dai_runtime.fs;
-+
-+ /* select correct DMA params */
-+ if (substream->stream != SNDRV_PCM_STREAM_PLAYBACK)
-+ dma = 1;
-+ if (chn == 2 || rtd->cpu_dai->dai_runtime.pcmfmt != PXA_SSP_BITS)
-+ dma += 2;
-+ rtd->cpu_dai->dma_data = ssp_dma_params[rtd->cpu_dai->id][dma];
-+
-+ /* is port used by another stream */
-+ if (SSCR0 & SSCR0_SSE)
-+ return 0;
-+
-+ /* bit size */
-+ switch(rtd->cpu_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ ssp_mode |=SSCR0_DataSize(16);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ ssp_mode |=(SSCR0_EDSS | SSCR0_DataSize(8));
-+ /* use network mode for stereo samples > 16 bits */
-+ if (chn == 2) {
-+ ssp_mode |= (SSCR0_MOD | SSCR0_SlotsPerFrm(2) << 24);
-+ /* active slots 0,1 */
-+ SSTSA_P(rtd->cpu_dai->id +1) = 0x3;
-+ SSRSA_P(rtd->cpu_dai->id +1) = 0x3;
-+ }
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ ssp_mode |= (SSCR0_EDSS | SSCR0_DataSize(16));
-+ /* use network mode for stereo samples > 16 bits */
-+ if (chn == 2) {
-+ ssp_mode |= (SSCR0_MOD | SSCR0_SlotsPerFrm(2) << 24);
-+ /* active slots 0,1 */
-+ SSTSA_P(rtd->cpu_dai->id +1) = 0x3;
-+ SSRSA_P(rtd->cpu_dai->id +1) = 0x3;
-+ }
-+ break;
-+ }
-+
-+ ssp_mode |= SSCR0_PSP;
-+ ssp_setup = SSCR1_RxTresh(14) | SSCR1_TxTresh(1) |
-+ SSCR1_TRAIL | SSCR1_RWOT;
-+
-+ switch(rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ ssp_setup |= (SSCR1_SCLKDIR | SSCR1_SFRMDIR);
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ ssp_setup |= SSCR1_SCLKDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ ssp_setup |= SSCR1_SFRMDIR;
-+ break;
-+ }
-+
-+ switch(rtd->cpu_dai->dai_runtime.fmt) {
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ fmt = 1;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ fmt = 2;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ fmt = 3;
-+ break;
-+ }
-+
-+ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].rx);
-+ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].tx);
-+ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].frm);
-+ pxa_gpio_mode(ssp_gpios[rtd->cpu_dai->id][fmt].clk);
-+
-+ switch (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ psp_mode |= SSPSP_SFRMP | SSPSP_FSRT;
-+ break;
-+ }
-+
-+ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_DSP_A)
-+ psp_mode |= SSPSP_SCMODE(2);
-+ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_DSP_B)
-+ psp_mode |= SSPSP_SCMODE(3);
-+
-+ switch(clksrc[rtd->cpu_dai->id]) {
-+ case 2: /* network clock */
-+ ssp_mode |= SSCR0_NCS | SSCR0_MOD;
-+ case 1: /* external clock */
-+ ssp_mode |= SSCR0_ECS;
-+ case 0: /* internal clock */
-+ rate = get_scr(snd_soc_get_rate(rtd->cpu_dai->dai_runtime.pcmrate),
-+ rtd->cpu_dai->id);
-+ break;
-+#ifdef CONFIG_PXA27x
-+ case 3: /* audio clock */
-+ ssp_mode |= (1 << 30);
-+ SSACD_P(rtd->cpu_dai->id) = (0x1 << 3) |
-+ pxa27x_set_audio_clk(
-+ snd_soc_get_rate(rtd->cpu_dai->dai_runtime.pcmrate), fs);
-+ break;
-+#endif
-+ }
-+
-+ ssp_config(&ssp[rtd->cpu_dai->id], ssp_mode, ssp_setup, psp_mode,
-+ SSCR0_SerClkDiv(rate));
-+#if 0
-+ printk("SSCR0 %x SSCR1 %x SSTO %x SSPSP %x SSSR %x\n",
-+ SSCR0_P(rtd->cpu_dai->id+1), SSCR1_P(rtd->cpu_dai->id+1),
-+ SSTO_P(rtd->cpu_dai->id+1), SSPSP_P(rtd->cpu_dai->id+1),
-+ SSSR_P(rtd->cpu_dai->id+1));
-+#endif
-+ return 0;
-+}
-+
-+static int pxa2xx_ssp_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ ssp_enable(&ssp[rtd->cpu_dai->id]);
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_TSRE;
-+ else
-+ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_RSRE;
-+ SSSR_P(rtd->cpu_dai->id+1) |= SSSR_P(rtd->cpu_dai->id+1);
-+ break;
-+ case SNDRV_PCM_TRIGGER_START:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_TSRE;
-+ else
-+ SSCR1_P(rtd->cpu_dai->id+1) |= SSCR1_RSRE;
-+ ssp_enable(&ssp[rtd->cpu_dai->id]);
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_TSRE;
-+ else
-+ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_RSRE;
-+ break;
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ ssp_disable(&ssp[rtd->cpu_dai->id]);
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_TSRE;
-+ else
-+ SSCR1_P(rtd->cpu_dai->id+1) &= ~SSCR1_RSRE;
-+ break;
-+
-+ default:
-+ ret = -EINVAL;
-+ }
-+#if 0
-+ printk("SSCR0 %x SSCR1 %x SSTO %x SSPSP %x SSSR %x\n",
-+ SSCR0_P(rtd->cpu_dai->id+1), SSCR1_P(rtd->cpu_dai->id+1),
-+ SSTO_P(rtd->cpu_dai->id+1), SSPSP_P(rtd->cpu_dai->id+1),
-+ SSSR_P(rtd->cpu_dai->id+1));
-+#endif
-+ return ret;
-+}
-+
-+struct snd_soc_cpu_dai pxa_ssp_dai[] = {
-+ { .name = "pxa2xx-ssp1",
-+ .id = 0,
-+ .type = SND_SOC_DAI_PCM,
-+ .suspend = pxa2xx_ssp_suspend,
-+ .resume = pxa2xx_ssp_resume,
-+ .config_sysclk = pxa_ssp_config_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = pxa2xx_ssp_startup,
-+ .shutdown = pxa2xx_ssp_shutdown,
-+ .trigger = pxa2xx_ssp_trigger,
-+ .hw_params = pxa2xx_ssp_hw_params,},
-+ .caps = {
-+ .mode = pxa2xx_ssp_modes,
-+ .num_modes = ARRAY_SIZE(pxa2xx_ssp_modes),},
-+ },
-+ { .name = "pxa2xx-ssp2",
-+ .id = 1,
-+ .type = SND_SOC_DAI_PCM,
-+ .suspend = pxa2xx_ssp_suspend,
-+ .resume = pxa2xx_ssp_resume,
-+ .config_sysclk = pxa_ssp_config_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = pxa2xx_ssp_startup,
-+ .shutdown = pxa2xx_ssp_shutdown,
-+ .trigger = pxa2xx_ssp_trigger,
-+ .hw_params = pxa2xx_ssp_hw_params,},
-+ .caps = {
-+ .mode = pxa2xx_ssp_modes,
-+ .num_modes = ARRAY_SIZE(pxa2xx_ssp_modes),},
-+ },
-+ { .name = "pxa2xx-ssp3",
-+ .id = 2,
-+ .type = SND_SOC_DAI_PCM,
-+ .suspend = pxa2xx_ssp_suspend,
-+ .resume = pxa2xx_ssp_resume,
-+ .config_sysclk = pxa_ssp_config_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = pxa2xx_ssp_startup,
-+ .shutdown = pxa2xx_ssp_shutdown,
-+ .trigger = pxa2xx_ssp_trigger,
-+ .hw_params = pxa2xx_ssp_hw_params,},
-+ .caps = {
-+ .mode = pxa2xx_ssp_modes,
-+ .num_modes = ARRAY_SIZE(pxa2xx_ssp_modes),},
-+ },
-+};
-+
-+EXPORT_SYMBOL_GPL(pxa_ssp_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("pxa2xx SSP/PCM SoC Interface");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/spitz.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/spitz.c
-@@ -0,0 +1,374 @@
-+/*
-+ * spitz.c -- SoC audio for Sharp SL-Cxx00 models Spitz, Borzoi and Akita
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ * Richard Purdie <richard@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Nov 2005 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/hardware/scoop.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/akita.h>
-+#include <asm/arch/spitz.h>
-+#include <asm/mach-types.h>
-+#include "../codecs/wm8750.h"
-+#include "pxa2xx-pcm.h"
-+
-+#define SPITZ_HP 0
-+#define SPITZ_MIC 1
-+#define SPITZ_LINE 2
-+#define SPITZ_HEADSET 3
-+#define SPITZ_HP_OFF 4
-+#define SPITZ_SPK_ON 0
-+#define SPITZ_SPK_OFF 1
-+
-+ /* audio clock in Hz - rounded from 12.235MHz */
-+#define SPITZ_AUDIO_CLOCK 12288000
-+
-+static int spitz_jack_func;
-+static int spitz_spk_func;
-+
-+static void spitz_ext_control(struct snd_soc_codec *codec)
-+{
-+ if (spitz_spk_func == SPITZ_SPK_ON)
-+ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
-+ else
-+ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 0);
-+
-+ /* set up jack connection */
-+ switch (spitz_jack_func) {
-+ case SPITZ_HP:
-+ /* enable and unmute hp jack, disable mic bias */
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
-+ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
-+ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
-+ break;
-+ case SPITZ_MIC:
-+ /* enable mic jack and bias, mute hp */
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
-+ break;
-+ case SPITZ_LINE:
-+ /* enable line jack, disable mic bias and mute hp */
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Line Jack", 1);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
-+ break;
-+ case SPITZ_HEADSET:
-+ /* enable and unmute headset jack enable mic bias, mute L hp */
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
-+ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 1);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
-+ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
-+ break;
-+ case SPITZ_HP_OFF:
-+
-+ /* jack removed, everything off */
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
-+ snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
-+ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
-+ break;
-+ }
-+ snd_soc_dapm_sync_endpoints(codec);
-+}
-+
-+static int spitz_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec *codec = rtd->socdev->codec;
-+
-+ /* check the jack status at stream startup */
-+ spitz_ext_control(codec);
-+ return 0;
-+}
-+
-+static struct snd_soc_ops spitz_ops = {
-+ .startup = spitz_startup,
-+};
-+
-+static int spitz_get_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = spitz_jack_func;
-+ return 0;
-+}
-+
-+static int spitz_set_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (spitz_jack_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ spitz_jack_func = ucontrol->value.integer.value[0];
-+ spitz_ext_control(codec);
-+ return 1;
-+}
-+
-+static int spitz_get_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = spitz_spk_func;
-+ return 0;
-+}
-+
-+static int spitz_set_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (spitz_spk_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ spitz_spk_func = ucontrol->value.integer.value[0];
-+ spitz_ext_control(codec);
-+ return 1;
-+}
-+
-+static int spitz_mic_bias(struct snd_soc_dapm_widget *w, int event)
-+{
-+ if (machine_is_borzoi() || machine_is_spitz()) {
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ set_scoop_gpio(&spitzscoop2_device.dev,
-+ SPITZ_SCP2_MIC_BIAS);
-+ else
-+ reset_scoop_gpio(&spitzscoop2_device.dev,
-+ SPITZ_SCP2_MIC_BIAS);
-+ }
-+
-+ if (machine_is_akita()) {
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ akita_set_ioexp(&akitaioexp_device.dev,
-+ AKITA_IOEXP_MIC_BIAS);
-+ else
-+ akita_reset_ioexp(&akitaioexp_device.dev,
-+ AKITA_IOEXP_MIC_BIAS);
-+ }
-+ return 0;
-+}
-+
-+/* spitz machine dapm widgets */
-+static const struct snd_soc_dapm_widget wm8750_dapm_widgets[] = {
-+ SND_SOC_DAPM_HP("Headphone Jack", NULL),
-+ SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias),
-+ SND_SOC_DAPM_SPK("Ext Spk", NULL),
-+ SND_SOC_DAPM_LINE("Line Jack", NULL),
-+
-+ /* headset is a mic and mono headphone */
-+ SND_SOC_DAPM_HP("Headset Jack", NULL),
-+};
-+
-+/* Spitz machine audio_map */
-+static const char *audio_map[][3] = {
-+
-+ /* headphone connected to LOUT1, ROUT1 */
-+ {"Headphone Jack", NULL, "LOUT1"},
-+ {"Headphone Jack", NULL, "ROUT1"},
-+
-+ /* headset connected to ROUT1 and LINPUT1 with bias (def below) */
-+ {"Headset Jack", NULL, "ROUT1"},
-+
-+ /* ext speaker connected to LOUT2, ROUT2 */
-+ {"Ext Spk", NULL , "ROUT2"},
-+ {"Ext Spk", NULL , "LOUT2"},
-+
-+ /* mic is connected to input 1 - with bias */
-+ {"LINPUT1", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic Jack"},
-+
-+ /* line is connected to input 1 - no bias */
-+ {"LINPUT1", NULL, "Line Jack"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static const char *jack_function[] = {"Headphone", "Mic", "Line", "Headset",
-+ "Off"};
-+static const char *spk_function[] = {"On", "Off"};
-+static const struct soc_enum spitz_enum[] = {
-+ SOC_ENUM_SINGLE_EXT(5, jack_function),
-+ SOC_ENUM_SINGLE_EXT(2, spk_function),
-+};
-+
-+static const struct snd_kcontrol_new wm8750_spitz_controls[] = {
-+ SOC_ENUM_EXT("Jack Function", spitz_enum[0], spitz_get_jack,
-+ spitz_set_jack),
-+ SOC_ENUM_EXT("Speaker Function", spitz_enum[1], spitz_get_spk,
-+ spitz_set_spk),
-+};
-+
-+/*
-+ * Logic for a wm8750 as connected on a Sharp SL-Cxx00 Device
-+ */
-+static int spitz_wm8750_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ /* NC codec pins */
-+ snd_soc_dapm_set_endpoint(codec, "RINPUT1", 0);
-+ snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0);
-+ snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0);
-+ snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0);
-+ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MONO", 0);
-+
-+ /* Add spitz specific controls */
-+ for (i = 0; i < ARRAY_SIZE(wm8750_spitz_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8750_spitz_controls[i], codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ /* Add spitz specific widgets */
-+ for (i = 0; i < ARRAY_SIZE(wm8750_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8750_dapm_widgets[i]);
-+ }
-+
-+ /* Set up spitz specific audio path audio_map */
-+ for (i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+static unsigned int spitz_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ if (info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
-+ /* pxa2xx is i2s master */
-+ switch (info->rate) {
-+ case 11025:
-+ case 22050:
-+ case 44100:
-+ case 88200:
-+ /* configure codec digital filters
-+ * for 11.025, 22.05, 44.1, 88.2 */
-+ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ 11289600);
-+ break;
-+ default:
-+ /* configure codec digital filters for all other rates */
-+ rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ SPITZ_AUDIO_CLOCK);
-+ break;
-+ }
-+ /* configure pxa2xx i2s interface clocks as master */
-+ return rtd->cpu_dai->config_sysclk(rtd->cpu_dai, info,
-+ SPITZ_AUDIO_CLOCK);
-+ } else {
-+ /* codec is i2s master - only configure codec DAI clock */
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info,
-+ SPITZ_AUDIO_CLOCK);
-+ }
-+}
-+
-+/* spitz digital audio interface glue - connects codec <--> CPU */
-+static struct snd_soc_dai_link spitz_dai = {
-+ .name = "wm8750",
-+ .stream_name = "WM8750",
-+ .cpu_dai = &pxa_i2s_dai,
-+ .codec_dai = &wm8750_dai,
-+ .init = spitz_wm8750_init,
-+ .config_sysclk = spitz_config_sysclk,
-+};
-+
-+/* spitz audio machine driver */
-+static struct snd_soc_machine snd_soc_machine_spitz = {
-+ .name = "Spitz",
-+ .dai_link = &spitz_dai,
-+ .num_links = 1,
-+ .ops = &spitz_ops,
-+};
-+
-+/* spitz audio private data */
-+static struct wm8750_setup_data spitz_wm8750_setup = {
-+ .i2c_address = 0x1b,
-+};
-+
-+/* spitz audio subsystem */
-+static struct snd_soc_device spitz_snd_devdata = {
-+ .machine = &snd_soc_machine_spitz,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8750,
-+ .codec_data = &spitz_wm8750_setup,
-+};
-+
-+static struct platform_device *spitz_snd_device;
-+
-+static int __init spitz_init(void)
-+{
-+ int ret;
-+
-+ if (!(machine_is_spitz() || machine_is_borzoi() || machine_is_akita()))
-+ return -ENODEV;
-+
-+ spitz_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!spitz_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(spitz_snd_device, &spitz_snd_devdata);
-+ spitz_snd_devdata.dev = &spitz_snd_device->dev;
-+ ret = platform_device_add(spitz_snd_device);
-+
-+ if (ret)
-+ platform_device_put(spitz_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit spitz_exit(void)
-+{
-+ platform_device_unregister(spitz_snd_device);
-+}
-+
-+module_init(spitz_init);
-+module_exit(spitz_exit);
-+
-+MODULE_AUTHOR("Richard Purdie");
-+MODULE_DESCRIPTION("ALSA SoC Spitz");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/pxa/tosa.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/pxa/tosa.c
-@@ -0,0 +1,287 @@
-+/*
-+ * tosa.c -- SoC audio for Tosa
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ * Richard Purdie <richard@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Nov 2005 Initial version.
-+ *
-+ * GPIO's
-+ * 1 - Jack Insertion
-+ * 5 - Hookswitch (headset answer/hang up switch)
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/device.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/mach-types.h>
-+#include <asm/hardware/tmio.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/audio.h>
-+#include <asm/arch/tosa.h>
-+
-+#include "../codecs/wm9712.h"
-+#include "pxa2xx-pcm.h"
-+
-+static struct snd_soc_machine tosa;
-+
-+#define TOSA_HP 0
-+#define TOSA_MIC_INT 1
-+#define TOSA_HEADSET 2
-+#define TOSA_HP_OFF 3
-+#define TOSA_SPK_ON 0
-+#define TOSA_SPK_OFF 1
-+
-+static int tosa_jack_func;
-+static int tosa_spk_func;
-+
-+static void tosa_ext_control(struct snd_soc_codec *codec)
-+{
-+ int spk = 0, mic_int = 0, hp = 0, hs = 0;
-+
-+ /* set up jack connection */
-+ switch (tosa_jack_func) {
-+ case TOSA_HP:
-+ hp = 1;
-+ break;
-+ case TOSA_MIC_INT:
-+ mic_int = 1;
-+ break;
-+ case TOSA_HEADSET:
-+ hs = 1;
-+ break;
-+ }
-+
-+ if (tosa_spk_func == TOSA_SPK_ON)
-+ spk = 1;
-+
-+ snd_soc_dapm_set_endpoint(codec, "Speaker", spk);
-+ snd_soc_dapm_set_endpoint(codec, "Mic (Internal)", mic_int);
-+ snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
-+ snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
-+ snd_soc_dapm_sync_endpoints(codec);
-+}
-+
-+static int tosa_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_codec *codec = rtd->socdev->codec;
-+
-+ /* check the jack status at stream startup */
-+ tosa_ext_control(codec);
-+ return 0;
-+}
-+
-+static struct snd_soc_ops tosa_ops = {
-+ .startup = tosa_startup,
-+};
-+
-+static int tosa_get_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = tosa_jack_func;
-+ return 0;
-+}
-+
-+static int tosa_set_jack(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (tosa_jack_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ tosa_jack_func = ucontrol->value.integer.value[0];
-+ tosa_ext_control(codec);
-+ return 1;
-+}
-+
-+static int tosa_get_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ ucontrol->value.integer.value[0] = tosa_spk_func;
-+ return 0;
-+}
-+
-+static int tosa_set_spk(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+
-+ if (tosa_spk_func == ucontrol->value.integer.value[0])
-+ return 0;
-+
-+ tosa_spk_func = ucontrol->value.integer.value[0];
-+ tosa_ext_control(codec);
-+ return 1;
-+}
-+
-+/* tosa dapm event handlers */
-+static int tosa_hp_event(struct snd_soc_dapm_widget *w, int event)
-+{
-+ if (SND_SOC_DAPM_EVENT_ON(event))
-+ set_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_L_MUTE);
-+ else
-+ reset_tc6393_gpio(&tc6393_device.dev,TOSA_TC6393_L_MUTE);
-+ return 0;
-+}
-+
-+/* tosa machine dapm widgets */
-+static const struct snd_soc_dapm_widget tosa_dapm_widgets[] = {
-+SND_SOC_DAPM_HP("Headphone Jack", tosa_hp_event),
-+SND_SOC_DAPM_HP("Headset Jack", NULL),
-+SND_SOC_DAPM_MIC("Mic (Internal)", NULL),
-+SND_SOC_DAPM_SPK("Speaker", NULL),
-+};
-+
-+/* tosa audio map */
-+static const char *audio_map[][3] = {
-+
-+ /* headphone connected to HPOUTL, HPOUTR */
-+ {"Headphone Jack", NULL, "HPOUTL"},
-+ {"Headphone Jack", NULL, "HPOUTR"},
-+
-+ /* ext speaker connected to LOUT2, ROUT2 */
-+ {"Speaker", NULL, "LOUT2"},
-+ {"Speaker", NULL, "ROUT2"},
-+
-+ /* internal mic is connected to mic1, mic2 differential - with bias */
-+ {"MIC1", NULL, "Mic Bias"},
-+ {"MIC2", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Mic (Internal)"},
-+
-+ /* headset is connected to HPOUTR, and LINEINR with bias */
-+ {"Headset Jack", NULL, "HPOUTR"},
-+ {"LINEINR", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Headset Jack"},
-+
-+ {NULL, NULL, NULL},
-+};
-+
-+static const char *jack_function[] = {"Headphone", "Mic", "Line", "Headset",
-+ "Off"};
-+static const char *spk_function[] = {"On", "Off"};
-+static const struct soc_enum tosa_enum[] = {
-+ SOC_ENUM_SINGLE_EXT(5, jack_function),
-+ SOC_ENUM_SINGLE_EXT(2, spk_function),
-+};
-+
-+static const struct snd_kcontrol_new tosa_controls[] = {
-+ SOC_ENUM_EXT("Jack Function", tosa_enum[0], tosa_get_jack,
-+ tosa_set_jack),
-+ SOC_ENUM_EXT("Speaker Function", tosa_enum[1], tosa_get_spk,
-+ tosa_set_spk),
-+};
-+
-+static int tosa_ac97_init(struct snd_soc_codec *codec)
-+{
-+ int i, err;
-+
-+ snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
-+ snd_soc_dapm_set_endpoint(codec, "MONOOUT", 0);
-+
-+ /* add tosa specific controls */
-+ for (i = 0; i < ARRAY_SIZE(tosa_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&tosa_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ /* add tosa specific widgets */
-+ for (i = 0; i < ARRAY_SIZE(tosa_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &tosa_dapm_widgets[i]);
-+ }
-+
-+ /* set up tosa specific audio path audio_map */
-+ for (i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link tosa_dai[] = {
-+{
-+ .name = "AC97",
-+ .stream_name = "AC97 HiFi",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI],
-+ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI],
-+ .init = tosa_ac97_init,
-+},
-+{
-+ .name = "AC97 Aux",
-+ .stream_name = "AC97 Aux",
-+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX],
-+ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX],
-+},
-+};
-+
-+static struct snd_soc_machine tosa = {
-+ .name = "Tosa",
-+ .dai_link = tosa_dai,
-+ .num_links = ARRAY_SIZE(tosa_dai),
-+ .ops = &tosa_ops,
-+};
-+
-+static struct snd_soc_device tosa_snd_devdata = {
-+ .machine = &tosa,
-+ .platform = &pxa2xx_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm9712,
-+};
-+
-+static struct platform_device *tosa_snd_device;
-+
-+static int __init tosa_init(void)
-+{
-+ int ret;
-+
-+ if (!machine_is_tosa())
-+ return -ENODEV;
-+
-+ tosa_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!tosa_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(tosa_snd_device, &tosa_snd_devdata);
-+ tosa_snd_devdata.dev = &tosa_snd_device->dev;
-+ ret = platform_device_add(tosa_snd_device);
-+
-+ if (ret)
-+ platform_device_put(tosa_snd_device);
-+
-+ return ret;
-+}
-+
-+static void __exit tosa_exit(void)
-+{
-+ platform_device_unregister(tosa_snd_device);
-+}
-+
-+module_init(tosa_init);
-+module_exit(tosa_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Richard Purdie");
-+MODULE_DESCRIPTION("ALSA SoC Tosa");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/soc-dapm.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/soc-dapm.c
-@@ -0,0 +1,1327 @@
-+/*
-+ * soc-dapm.c -- ALSA SoC Dynamic Audio Power Management
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 12th Aug 2005 Initial version.
-+ * 25th Oct 2005 Implemented path power domain.
-+ * 18th Dec 2005 Implemented machine and stream level power domain.
-+ *
-+ * Features:
-+ * o Changes power status of internal codec blocks depending on the
-+ * dynamic configuration of codec internal audio paths and active
-+ * DAC's/ADC's.
-+ * o Platform power domain - can support external components i.e. amps and
-+ * mic/meadphone insertion events.
-+ * o Automatic Mic Bias support
-+ * o Jack insertion power event initiation - e.g. hp insertion will enable
-+ * sinks, dacs, etc
-+ * o Delayed powerdown of audio susbsytem to reduce pops between a quick
-+ * device reopen.
-+ *
-+ * Todo:
-+ * o DAPM power change sequencing - allow for configurable per
-+ * codec sequences.
-+ * o Support for analogue bias optimisation.
-+ * o Support for reduced codec oversampling rates.
-+ * o Support for reduced codec bias currents.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/bitops.h>
-+#include <linux/platform_device.h>
-+#include <linux/jiffies.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+/* debug */
-+#define DAPM_DEBUG 0
-+#if DAPM_DEBUG
-+#define dump_dapm(codec, action) dbg_dump_dapm(codec, action)
-+#define dbg(format, arg...) printk(format, ## arg)
-+#else
-+#define dump_dapm(codec, action)
-+#define dbg(format, arg...)
-+#endif
-+
-+#define POP_DEBUG 0
-+#if POP_DEBUG
-+#define POP_TIME 500 /* 500 msecs - change if pop debug is too fast */
-+#define pop_wait(time) schedule_timeout_interruptible(msecs_to_jiffies(time))
-+#define pop_dbg(format, arg...) printk(format, ## arg); pop_wait(POP_TIME)
-+#else
-+#define pop_dbg(format, arg...)
-+#define pop_wait(time)
-+#endif
-+
-+/* dapm power sequences - make this per codec in the future */
-+static int dapm_up_seq[] = {
-+ snd_soc_dapm_pre, snd_soc_dapm_micbias, snd_soc_dapm_mic,
-+ snd_soc_dapm_mux, snd_soc_dapm_dac, snd_soc_dapm_mixer, snd_soc_dapm_pga,
-+ snd_soc_dapm_adc, snd_soc_dapm_hp, snd_soc_dapm_spk, snd_soc_dapm_post
-+};
-+static int dapm_down_seq[] = {
-+ snd_soc_dapm_pre, snd_soc_dapm_adc, snd_soc_dapm_hp, snd_soc_dapm_spk,
-+ snd_soc_dapm_pga, snd_soc_dapm_mixer, snd_soc_dapm_dac, snd_soc_dapm_mic,
-+ snd_soc_dapm_micbias, snd_soc_dapm_mux, snd_soc_dapm_post
-+};
-+
-+static int dapm_status = 1;
-+module_param(dapm_status, int, 0);
-+MODULE_PARM_DESC(dapm_status, "enable DPM sysfs entries");
-+
-+/* create a new dapm widget */
-+static struct snd_soc_dapm_widget *dapm_cnew_widget(
-+ const struct snd_soc_dapm_widget *_widget)
-+{
-+ struct snd_soc_dapm_widget* widget;
-+ widget = kmalloc(sizeof(struct snd_soc_dapm_widget), GFP_KERNEL);
-+ if (!widget)
-+ return NULL;
-+
-+ memcpy(widget, _widget, sizeof(struct snd_soc_dapm_widget));
-+ return widget;
-+}
-+
-+/* set up initial codec paths */
-+static void dapm_set_path_status(struct snd_soc_dapm_widget *w,
-+ struct snd_soc_dapm_path *p, int i)
-+{
-+ switch (w->id) {
-+ case snd_soc_dapm_switch:
-+ case snd_soc_dapm_mixer: {
-+ int val;
-+ int reg = w->kcontrols[i].private_value & 0xff;
-+ int shift = (w->kcontrols[i].private_value >> 8) & 0x0f;
-+ int mask = (w->kcontrols[i].private_value >> 16) & 0xff;
-+ int invert = (w->kcontrols[i].private_value >> 24) & 0x01;
-+
-+ val = snd_soc_read(w->codec, reg);
-+ val = (val >> shift) & mask;
-+
-+ if ((invert && !val) || (!invert && val))
-+ p->connect = 1;
-+ else
-+ p->connect = 0;
-+ }
-+ break;
-+ case snd_soc_dapm_mux: {
-+ struct soc_enum *e = (struct soc_enum *)w->kcontrols[i].private_value;
-+ int val, item, bitmask;
-+
-+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
-+ ;
-+ val = snd_soc_read(w->codec, e->reg);
-+ item = (val >> e->shift_l) & (bitmask - 1);
-+
-+ p->connect = 0;
-+ for (i = 0; i < e->mask; i++) {
-+ if (!(strcmp(p->name, e->texts[i])) && item == i)
-+ p->connect = 1;
-+ }
-+ }
-+ break;
-+ /* does not effect routing - always connected */
-+ case snd_soc_dapm_pga:
-+ case snd_soc_dapm_output:
-+ case snd_soc_dapm_adc:
-+ case snd_soc_dapm_input:
-+ case snd_soc_dapm_dac:
-+ case snd_soc_dapm_micbias:
-+ case snd_soc_dapm_vmid:
-+ p->connect = 1;
-+ break;
-+ /* does effect routing - dynamically connected */
-+ case snd_soc_dapm_hp:
-+ case snd_soc_dapm_mic:
-+ case snd_soc_dapm_spk:
-+ case snd_soc_dapm_line:
-+ case snd_soc_dapm_pre:
-+ case snd_soc_dapm_post:
-+ p->connect = 0;
-+ break;
-+ }
-+}
-+
-+/* connect mux widget to it's interconnecting audio paths */
-+static int dapm_connect_mux(struct snd_soc_codec *codec,
-+ struct snd_soc_dapm_widget *src, struct snd_soc_dapm_widget *dest,
-+ struct snd_soc_dapm_path *path, const char *control_name,
-+ const struct snd_kcontrol_new *kcontrol)
-+{
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+ int i;
-+
-+ for (i = 0; i < e->mask; i++) {
-+ if (!(strcmp(control_name, e->texts[i]))) {
-+ list_add(&path->list, &codec->dapm_paths);
-+ list_add(&path->list_sink, &dest->sources);
-+ list_add(&path->list_source, &src->sinks);
-+ path->name = (char*)e->texts[i];
-+ dapm_set_path_status(dest, path, 0);
-+ return 0;
-+ }
-+ }
-+
-+ return -ENODEV;
-+}
-+
-+/* connect mixer widget to it's interconnecting audio paths */
-+static int dapm_connect_mixer(struct snd_soc_codec *codec,
-+ struct snd_soc_dapm_widget *src, struct snd_soc_dapm_widget *dest,
-+ struct snd_soc_dapm_path *path, const char *control_name)
-+{
-+ int i;
-+
-+ /* search for mixer kcontrol */
-+ for (i = 0; i < dest->num_kcontrols; i++) {
-+ if (!strcmp(control_name, dest->kcontrols[i].name)) {
-+ list_add(&path->list, &codec->dapm_paths);
-+ list_add(&path->list_sink, &dest->sources);
-+ list_add(&path->list_source, &src->sinks);
-+ path->name = dest->kcontrols[i].name;
-+ dapm_set_path_status(dest, path, i);
-+ return 0;
-+ }
-+ }
-+ return -ENODEV;
-+}
-+
-+/* update dapm codec register bits */
-+static int dapm_update_bits(struct snd_soc_dapm_widget *widget)
-+{
-+ int change, power;
-+ unsigned short old, new;
-+ struct snd_soc_codec *codec = widget->codec;
-+
-+ /* check for valid widgets */
-+ if (widget->reg < 0 || widget->id == snd_soc_dapm_input ||
-+ widget->id == snd_soc_dapm_output ||
-+ widget->id == snd_soc_dapm_hp ||
-+ widget->id == snd_soc_dapm_mic ||
-+ widget->id == snd_soc_dapm_line ||
-+ widget->id == snd_soc_dapm_spk)
-+ return 0;
-+
-+ power = widget->power;
-+ if (widget->invert)
-+ power = (power ? 0:1);
-+
-+ old = snd_soc_read(codec, widget->reg);
-+ new = (old & ~(0x1 << widget->shift)) | (power << widget->shift);
-+
-+ change = old != new;
-+ if (change) {
-+ pop_dbg("pop test %s : %s in %d ms\n", widget->name,
-+ widget->power ? "on" : "off", POP_TIME);
-+ snd_soc_write(codec, widget->reg, new);
-+ pop_wait(POP_TIME);
-+ }
-+ dbg("reg old %x new %x change %d\n", old, new, change);
-+ return change;
-+}
-+
-+/* ramps the volume up or down to minimise pops before or after a
-+ * DAPM power event */
-+static int dapm_set_pga(struct snd_soc_dapm_widget *widget, int power)
-+{
-+ const struct snd_kcontrol_new *k = widget->kcontrols;
-+
-+ if (widget->muted && !power)
-+ return 0;
-+ if (!widget->muted && power)
-+ return 0;
-+
-+ if (widget->num_kcontrols && k) {
-+ int reg = k->private_value & 0xff;
-+ int shift = (k->private_value >> 8) & 0x0f;
-+ int mask = (k->private_value >> 16) & 0xff;
-+ int invert = (k->private_value >> 24) & 0x01;
-+
-+ if (power) {
-+ int i;
-+ /* power up has happended, increase volume to last level */
-+ if (invert) {
-+ for (i = mask; i > widget->saved_value; i--)
-+ snd_soc_update_bits(widget->codec, reg, mask, i);
-+ } else {
-+ for (i = 0; i < widget->saved_value; i++)
-+ snd_soc_update_bits(widget->codec, reg, mask, i);
-+ }
-+ widget->muted = 0;
-+ } else {
-+ /* power down is about to occur, decrease volume to mute */
-+ int val = snd_soc_read(widget->codec, reg);
-+ int i = widget->saved_value = (val >> shift) & mask;
-+ if (invert) {
-+ for (; i < mask; i++)
-+ snd_soc_update_bits(widget->codec, reg, mask, i);
-+ } else {
-+ for (; i > 0; i--)
-+ snd_soc_update_bits(widget->codec, reg, mask, i);
-+ }
-+ widget->muted = 1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+/* create new dapm mixer control */
-+static int dapm_new_mixer(struct snd_soc_codec *codec,
-+ struct snd_soc_dapm_widget *w)
-+{
-+ int i, ret = 0;
-+ char name[32];
-+ struct snd_soc_dapm_path *path;
-+
-+ /* add kcontrol */
-+ for (i = 0; i < w->num_kcontrols; i++) {
-+
-+ /* match name */
-+ list_for_each_entry(path, &w->sources, list_sink) {
-+
-+ /* mixer/mux paths name must match control name */
-+ if (path->name != (char*)w->kcontrols[i].name)
-+ continue;
-+
-+ /* add dapm control with long name */
-+ snprintf(name, 32, "%s %s", w->name, w->kcontrols[i].name);
-+ path->long_name = kstrdup (name, GFP_KERNEL);
-+ if (path->long_name == NULL)
-+ return -ENOMEM;
-+
-+ path->kcontrol = snd_soc_cnew(&w->kcontrols[i], w,
-+ path->long_name);
-+ ret = snd_ctl_add(codec->card, path->kcontrol);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: failed to add dapm kcontrol %s\n",
-+ path->long_name);
-+ kfree(path->long_name);
-+ path->long_name = NULL;
-+ return ret;
-+ }
-+ }
-+ }
-+ return ret;
-+}
-+
-+/* create new dapm mux control */
-+static int dapm_new_mux(struct snd_soc_codec *codec,
-+ struct snd_soc_dapm_widget *w)
-+{
-+ struct snd_soc_dapm_path *path = NULL;
-+ struct snd_kcontrol *kcontrol;
-+ int ret = 0;
-+
-+ if (!w->num_kcontrols) {
-+ printk(KERN_ERR "asoc: mux %s has no controls\n", w->name);
-+ return -EINVAL;
-+ }
-+
-+ kcontrol = snd_soc_cnew(&w->kcontrols[0], w, w->name);
-+ ret = snd_ctl_add(codec->card, kcontrol);
-+ if (ret < 0)
-+ goto err;
-+
-+ list_for_each_entry(path, &w->sources, list_sink)
-+ path->kcontrol = kcontrol;
-+
-+ return ret;
-+
-+err:
-+ printk(KERN_ERR "asoc: failed to add kcontrol %s\n", w->name);
-+ return ret;
-+}
-+
-+/* create new dapm volume control */
-+static int dapm_new_pga(struct snd_soc_codec *codec,
-+ struct snd_soc_dapm_widget *w)
-+{
-+ struct snd_kcontrol *kcontrol;
-+ int ret = 0;
-+
-+ if (!w->num_kcontrols)
-+ return -EINVAL;
-+
-+ kcontrol = snd_soc_cnew(&w->kcontrols[0], w, w->name);
-+ ret = snd_ctl_add(codec->card, kcontrol);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: failed to add kcontrol %s\n", w->name);
-+ return ret;
-+ }
-+
-+ return ret;
-+}
-+
-+/* reset 'walked' bit for each dapm path */
-+static inline void dapm_clear_walk(struct snd_soc_codec *codec)
-+{
-+ struct snd_soc_dapm_path *p;
-+
-+ list_for_each_entry(p, &codec->dapm_paths, list)
-+ p->walked = 0;
-+}
-+
-+/*
-+ * Recursively check for a completed path to an active or physically connected
-+ * output widget. Returns number of complete paths.
-+ */
-+static int is_connected_output_ep(struct snd_soc_dapm_widget *widget)
-+{
-+ struct snd_soc_dapm_path *path;
-+ int con = 0;
-+
-+ if (widget->id == snd_soc_dapm_adc && widget->active)
-+ return 1;
-+
-+ if (widget->connected) {
-+ /* connected pin ? */
-+ if (widget->id == snd_soc_dapm_output && !widget->ext)
-+ return 1;
-+
-+ /* connected jack or spk ? */
-+ if (widget->id == snd_soc_dapm_hp || widget->id == snd_soc_dapm_spk ||
-+ widget->id == snd_soc_dapm_line)
-+ return 1;
-+ }
-+
-+ list_for_each_entry(path, &widget->sinks, list_source) {
-+ if (path->walked)
-+ continue;
-+
-+ if (path->sink && path->connect) {
-+ path->walked = 1;
-+ con += is_connected_output_ep(path->sink);
-+ }
-+ }
-+
-+ return con;
-+}
-+
-+/*
-+ * Recursively check for a completed path to an active or physically connected
-+ * input widget. Returns number of complete paths.
-+ */
-+static int is_connected_input_ep(struct snd_soc_dapm_widget *widget)
-+{
-+ struct snd_soc_dapm_path *path;
-+ int con = 0;
-+
-+ /* active stream ? */
-+ if (widget->id == snd_soc_dapm_dac && widget->active)
-+ return 1;
-+
-+ if (widget->connected) {
-+ /* connected pin ? */
-+ if (widget->id == snd_soc_dapm_input && !widget->ext)
-+ return 1;
-+
-+ /* connected VMID/Bias for lower pops */
-+ if (widget->id == snd_soc_dapm_vmid)
-+ return 1;
-+
-+ /* connected jack ? */
-+ if (widget->id == snd_soc_dapm_mic || widget->id == snd_soc_dapm_line)
-+ return 1;
-+ }
-+
-+ list_for_each_entry(path, &widget->sources, list_sink) {
-+ if (path->walked)
-+ continue;
-+
-+ if (path->source && path->connect) {
-+ path->walked = 1;
-+ con += is_connected_input_ep(path->source);
-+ }
-+ }
-+
-+ return con;
-+}
-+
-+/*
-+ * Scan each dapm widget for complete audio path.
-+ * A complete path is a route that has valid endpoints i.e.:-
-+ *
-+ * o DAC to output pin.
-+ * o Input Pin to ADC.
-+ * o Input pin to Output pin (bypass, sidetone)
-+ * o DAC to ADC (loopback).
-+ */
-+int dapm_power_widgets(struct snd_soc_codec *codec, int event)
-+{
-+ struct snd_soc_dapm_widget *w;
-+ int in, out, i, c = 1, *seq = NULL, ret = 0, power_change, power;
-+
-+ /* do we have a sequenced stream event */
-+ if (event == SND_SOC_DAPM_STREAM_START) {
-+ c = ARRAY_SIZE(dapm_up_seq);
-+ seq = dapm_up_seq;
-+ } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-+ c = ARRAY_SIZE(dapm_down_seq);
-+ seq = dapm_down_seq;
-+ }
-+
-+ for(i = 0; i < c; i++) {
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+
-+ /* is widget in stream order */
-+ if (seq && seq[i] && w->id != seq[i])
-+ continue;
-+
-+ /* vmid - no action */
-+ if (w->id == snd_soc_dapm_vmid)
-+ continue;
-+
-+ /* active ADC */
-+ if (w->id == snd_soc_dapm_adc && w->active) {
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ w->power = (in != 0) ? 1 : 0;
-+ dapm_update_bits(w);
-+ continue;
-+ }
-+
-+ /* active DAC */
-+ if (w->id == snd_soc_dapm_dac && w->active) {
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+ w->power = (out != 0) ? 1 : 0;
-+ dapm_update_bits(w);
-+ continue;
-+ }
-+
-+ /* programmable gain/attenuation */
-+ if (w->id == snd_soc_dapm_pga) {
-+ int on;
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+ w->power = on = (out != 0 && in != 0) ? 1 : 0;
-+
-+ if (!on)
-+ dapm_set_pga(w, on); /* lower volume to reduce pops */
-+ dapm_update_bits(w);
-+ if (on)
-+ dapm_set_pga(w, on); /* restore volume from zero */
-+
-+ continue;
-+ }
-+
-+ /* pre and post event widgets */
-+ if (w->id == snd_soc_dapm_pre) {
-+ if (!w->event)
-+ continue;
-+
-+ if (event == SND_SOC_DAPM_STREAM_START) {
-+ ret = w->event(w, SND_SOC_DAPM_PRE_PMU);
-+ if (ret < 0)
-+ return ret;
-+ } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-+ ret = w->event(w, SND_SOC_DAPM_PRE_PMD);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ continue;
-+ }
-+ if (w->id == snd_soc_dapm_post) {
-+ if (!w->event)
-+ continue;
-+
-+ if (event == SND_SOC_DAPM_STREAM_START) {
-+ ret = w->event(w, SND_SOC_DAPM_POST_PMU);
-+ if (ret < 0)
-+ return ret;
-+ } else if (event == SND_SOC_DAPM_STREAM_STOP) {
-+ ret = w->event(w, SND_SOC_DAPM_POST_PMD);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ continue;
-+ }
-+
-+ /* all other widgets */
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+ power = (out != 0 && in != 0) ? 1 : 0;
-+ power_change = (w->power == power) ? 0: 1;
-+ w->power = power;
-+
-+ /* call any power change event handlers */
-+ if (power_change) {
-+ if (w->event) {
-+ dbg("power %s event for %s flags %x\n",
-+ w->power ? "on" : "off", w->name, w->event_flags);
-+ if (power) {
-+ /* power up event */
-+ if (w->event_flags & SND_SOC_DAPM_PRE_PMU) {
-+ ret = w->event(w, SND_SOC_DAPM_PRE_PMU);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ dapm_update_bits(w);
-+ if (w->event_flags & SND_SOC_DAPM_POST_PMU){
-+ ret = w->event(w, SND_SOC_DAPM_POST_PMU);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ } else {
-+ /* power down event */
-+ if (w->event_flags & SND_SOC_DAPM_PRE_PMD) {
-+ ret = w->event(w, SND_SOC_DAPM_PRE_PMD);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ dapm_update_bits(w);
-+ if (w->event_flags & SND_SOC_DAPM_POST_PMD) {
-+ ret = w->event(w, SND_SOC_DAPM_POST_PMD);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ }
-+ } else
-+ /* no event handler */
-+ dapm_update_bits(w);
-+ }
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+#if DAPM_DEBUG
-+static void dbg_dump_dapm(struct snd_soc_codec* codec, const char *action)
-+{
-+ struct snd_soc_dapm_widget *w;
-+ struct snd_soc_dapm_path *p = NULL;
-+ int in, out;
-+
-+ printk("DAPM %s %s\n", codec->name, action);
-+
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+
-+ /* only display widgets that effect routing */
-+ switch (w->id) {
-+ case snd_soc_dapm_pre:
-+ case snd_soc_dapm_post:
-+ case snd_soc_dapm_vmid:
-+ continue;
-+ case snd_soc_dapm_mux:
-+ case snd_soc_dapm_output:
-+ case snd_soc_dapm_input:
-+ case snd_soc_dapm_switch:
-+ case snd_soc_dapm_hp:
-+ case snd_soc_dapm_mic:
-+ case snd_soc_dapm_spk:
-+ case snd_soc_dapm_line:
-+ case snd_soc_dapm_micbias:
-+ case snd_soc_dapm_dac:
-+ case snd_soc_dapm_adc:
-+ case snd_soc_dapm_pga:
-+ case snd_soc_dapm_mixer:
-+ if (w->name) {
-+ in = is_connected_input_ep(w);
-+ dapm_clear_walk(w->codec);
-+ out = is_connected_output_ep(w);
-+ dapm_clear_walk(w->codec);
-+ printk("%s: %s in %d out %d\n", w->name,
-+ w->power ? "On":"Off",in, out);
-+
-+ list_for_each_entry(p, &w->sources, list_sink) {
-+ if (p->connect)
-+ printk(" in %s %s\n", p->name ? p->name : "static",
-+ p->source->name);
-+ }
-+ list_for_each_entry(p, &w->sinks, list_source) {
-+ p = list_entry(lp, struct snd_soc_dapm_path, list_source);
-+ if (p->connect)
-+ printk(" out %s %s\n", p->name ? p->name : "static",
-+ p->sink->name);
-+ }
-+ }
-+ break;
-+ }
-+ }
-+}
-+#endif
-+
-+/* test and update the power status of a mux widget */
-+int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *kcontrol, int mask, int val, struct soc_enum* e)
-+{
-+ struct snd_soc_dapm_path *path;
-+ int found = 0;
-+
-+ if (widget->id != snd_soc_dapm_mux)
-+ return -ENODEV;
-+
-+ if (!snd_soc_test_bits(widget->codec, e->reg, mask, val))
-+ return 0;
-+
-+ /* find dapm widget path assoc with kcontrol */
-+ list_for_each_entry(path, &widget->codec->dapm_paths, list) {
-+ if (path->kcontrol != kcontrol)
-+ continue;
-+
-+ if (!path->name || ! e->texts[val])
-+ continue;
-+
-+ found = 1;
-+ /* we now need to match the string in the enum to the path */
-+ if (!(strcmp(path->name, e->texts[val])))
-+ path->connect = 1; /* new connection */
-+ else
-+ path->connect = 0; /* old connection must be powered down */
-+ }
-+
-+ if (found)
-+ dapm_power_widgets(widget->codec, SND_SOC_DAPM_STREAM_NOP);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(dapm_mux_update_power);
-+
-+/* test and update the power status of a mixer widget */
-+int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget,
-+ struct snd_kcontrol *kcontrol, int reg, int val_mask, int val, int invert)
-+{
-+ struct snd_soc_dapm_path *path;
-+ int found = 0;
-+
-+ if (widget->id != snd_soc_dapm_mixer)
-+ return -ENODEV;
-+
-+ if (!snd_soc_test_bits(widget->codec, reg, val_mask, val))
-+ return 0;
-+
-+ /* find dapm widget path assoc with kcontrol */
-+ list_for_each_entry(path, &widget->codec->dapm_paths, list) {
-+ if (path->kcontrol != kcontrol)
-+ continue;
-+
-+ /* found, now check type */
-+ found = 1;
-+ if (val)
-+ /* new connection */
-+ path->connect = invert ? 0:1;
-+ else
-+ /* old connection must be powered down */
-+ path->connect = invert ? 1:0;
-+ break;
-+ }
-+
-+ if (found)
-+ dapm_power_widgets(widget->codec, SND_SOC_DAPM_STREAM_NOP);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(dapm_mixer_update_power);
-+
-+/* show dapm widget status in sys fs */
-+static ssize_t dapm_widget_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct snd_soc_device *devdata = dev_get_drvdata(dev);
-+ struct snd_soc_codec *codec = devdata->codec;
-+ struct snd_soc_dapm_widget *w;
-+ int count = 0;
-+ char *state = "not set";
-+
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+
-+ /* only display widgets that burnm power */
-+ switch (w->id) {
-+ case snd_soc_dapm_hp:
-+ case snd_soc_dapm_mic:
-+ case snd_soc_dapm_spk:
-+ case snd_soc_dapm_line:
-+ case snd_soc_dapm_micbias:
-+ case snd_soc_dapm_dac:
-+ case snd_soc_dapm_adc:
-+ case snd_soc_dapm_pga:
-+ case snd_soc_dapm_mixer:
-+ if (w->name)
-+ count += sprintf(buf + count, "%s: %s\n",
-+ w->name, w->power ? "On":"Off");
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ switch(codec->dapm_state){
-+ case SNDRV_CTL_POWER_D0:
-+ state = "D0";
-+ break;
-+ case SNDRV_CTL_POWER_D1:
-+ state = "D1";
-+ break;
-+ case SNDRV_CTL_POWER_D2:
-+ state = "D2";
-+ break;
-+ case SNDRV_CTL_POWER_D3hot:
-+ state = "D3hot";
-+ break;
-+ case SNDRV_CTL_POWER_D3cold:
-+ state = "D3cold";
-+ break;
-+ }
-+ count += sprintf(buf + count, "PM State: %s\n", state);
-+
-+ return count;
-+}
-+
-+static DEVICE_ATTR(dapm_widget, 0444, dapm_widget_show, NULL);
-+
-+int snd_soc_dapm_sys_add(struct device *dev)
-+{
-+ int ret = 0;
-+
-+ if (dapm_status)
-+ ret = device_create_file(dev, &dev_attr_dapm_widget);
-+
-+ return ret;
-+}
-+
-+static void snd_soc_dapm_sys_remove(struct device *dev)
-+{
-+ if (dapm_status)
-+ device_remove_file(dev, &dev_attr_dapm_widget);
-+}
-+
-+/* free all dapm widgets and resources */
-+void dapm_free_widgets(struct snd_soc_codec *codec)
-+{
-+ struct snd_soc_dapm_widget *w, *next_w;
-+ struct snd_soc_dapm_path *p, *next_p;
-+
-+ list_for_each_entry_safe(w, next_w, &codec->dapm_widgets, list) {
-+ list_del(&w->list);
-+ kfree(w);
-+ }
-+
-+ list_for_each_entry_safe(p, next_p, &codec->dapm_paths, list) {
-+ list_del(&p->list);
-+ kfree(p->long_name);
-+ kfree(p);
-+ }
-+}
-+
-+/**
-+ * snd_soc_dapm_sync_endpoints - scan and power dapm paths
-+ * @codec: audio codec
-+ *
-+ * Walks all dapm audio paths and powers widgets according to their
-+ * stream or path usage.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec)
-+{
-+ return dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints);
-+
-+/**
-+ * snd_soc_dapm_connect_input - connect dapm widgets
-+ * @codec: audio codec
-+ * @sink: name of target widget
-+ * @control: mixer control name
-+ * @source: name of source name
-+ *
-+ * Connects 2 dapm widgets together via a named audio path. The sink is
-+ * the widget receiving the audio signal, whilst the source is the sender
-+ * of the audio signal.
-+ *
-+ * Returns 0 for success else error.
-+ */
-+int snd_soc_dapm_connect_input(struct snd_soc_codec *codec, const char *sink,
-+ const char * control, const char *source)
-+{
-+ struct snd_soc_dapm_path *path;
-+ struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w;
-+ int ret = 0;
-+
-+ /* find src and dest widgets */
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+
-+ if (!wsink && !(strcmp(w->name, sink))) {
-+ wsink = w;
-+ continue;
-+ }
-+ if (!wsource && !(strcmp(w->name, source))) {
-+ wsource = w;
-+ }
-+ }
-+
-+ if (wsource == NULL || wsink == NULL)
-+ return -ENODEV;
-+
-+ path = kzalloc(sizeof(struct snd_soc_dapm_path), GFP_KERNEL);
-+ if (!path)
-+ return -ENOMEM;
-+
-+ path->source = wsource;
-+ path->sink = wsink;
-+ INIT_LIST_HEAD(&path->list);
-+ INIT_LIST_HEAD(&path->list_source);
-+ INIT_LIST_HEAD(&path->list_sink);
-+
-+ /* check for external widgets */
-+ if (wsink->id == snd_soc_dapm_input) {
-+ if (wsource->id == snd_soc_dapm_micbias ||
-+ wsource->id == snd_soc_dapm_mic ||
-+ wsink->id == snd_soc_dapm_line)
-+ wsink->ext = 1;
-+ }
-+ if (wsource->id == snd_soc_dapm_output) {
-+ if (wsink->id == snd_soc_dapm_spk ||
-+ wsink->id == snd_soc_dapm_hp ||
-+ wsink->id == snd_soc_dapm_line)
-+ wsource->ext = 1;
-+ }
-+
-+ /* connect static paths */
-+ if (control == NULL) {
-+ list_add(&path->list, &codec->dapm_paths);
-+ list_add(&path->list_sink, &wsink->sources);
-+ list_add(&path->list_source, &wsource->sinks);
-+ path->connect = 1;
-+ return 0;
-+ }
-+
-+ /* connect dynamic paths */
-+ switch(wsink->id) {
-+ case snd_soc_dapm_adc:
-+ case snd_soc_dapm_dac:
-+ case snd_soc_dapm_pga:
-+ case snd_soc_dapm_input:
-+ case snd_soc_dapm_output:
-+ case snd_soc_dapm_micbias:
-+ case snd_soc_dapm_vmid:
-+ case snd_soc_dapm_pre:
-+ case snd_soc_dapm_post:
-+ list_add(&path->list, &codec->dapm_paths);
-+ list_add(&path->list_sink, &wsink->sources);
-+ list_add(&path->list_source, &wsource->sinks);
-+ path->connect = 1;
-+ return 0;
-+ case snd_soc_dapm_mux:
-+ ret = dapm_connect_mux(codec, wsource, wsink, path, control,
-+ &wsink->kcontrols[0]);
-+ if (ret != 0)
-+ goto err;
-+ break;
-+ case snd_soc_dapm_switch:
-+ case snd_soc_dapm_mixer:
-+ ret = dapm_connect_mixer(codec, wsource, wsink, path, control);
-+ if (ret != 0)
-+ goto err;
-+ break;
-+ case snd_soc_dapm_hp:
-+ case snd_soc_dapm_mic:
-+ case snd_soc_dapm_line:
-+ case snd_soc_dapm_spk:
-+ list_add(&path->list, &codec->dapm_paths);
-+ list_add(&path->list_sink, &wsink->sources);
-+ list_add(&path->list_source, &wsource->sinks);
-+ path->connect = 0;
-+ return 0;
-+ }
-+ return 0;
-+
-+err:
-+ printk(KERN_WARNING "asoc: no dapm match for %s --> %s --> %s\n", source,
-+ control, sink);
-+ kfree(path);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_connect_input);
-+
-+/**
-+ * snd_soc_dapm_new_widgets - add new dapm widgets
-+ * @codec: audio codec
-+ *
-+ * Checks the codec for any new dapm widgets and creates them if found.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_new_widgets(struct snd_soc_codec *codec)
-+{
-+ struct snd_soc_dapm_widget *w;
-+
-+ mutex_lock(&codec->mutex);
-+ list_for_each_entry(w, &codec->dapm_widgets, list)
-+ {
-+ if (w->new)
-+ continue;
-+
-+ switch(w->id) {
-+ case snd_soc_dapm_switch:
-+ case snd_soc_dapm_mixer:
-+ dapm_new_mixer(codec, w);
-+ break;
-+ case snd_soc_dapm_mux:
-+ dapm_new_mux(codec, w);
-+ break;
-+ case snd_soc_dapm_adc:
-+ case snd_soc_dapm_dac:
-+ case snd_soc_dapm_pga:
-+ dapm_new_pga(codec, w);
-+ break;
-+ case snd_soc_dapm_input:
-+ case snd_soc_dapm_output:
-+ case snd_soc_dapm_micbias:
-+ case snd_soc_dapm_spk:
-+ case snd_soc_dapm_hp:
-+ case snd_soc_dapm_mic:
-+ case snd_soc_dapm_line:
-+ case snd_soc_dapm_vmid:
-+ case snd_soc_dapm_pre:
-+ case snd_soc_dapm_post:
-+ break;
-+ }
-+ w->new = 1;
-+ }
-+
-+ dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
-+ mutex_unlock(&codec->mutex);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_new_widgets);
-+
-+/**
-+ * snd_soc_dapm_get_volsw - dapm mixer get callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to get the value of a dapm mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
-+ int reg = kcontrol->private_value & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int rshift = (kcontrol->private_value >> 12) & 0x0f;
-+ int mask = (kcontrol->private_value >> 16) & 0xff;
-+ int invert = (kcontrol->private_value >> 24) & 0x01;
-+
-+ /* return the saved value if we are powered down */
-+ if (widget->id == snd_soc_dapm_pga && !widget->power) {
-+ ucontrol->value.integer.value[0] = widget->saved_value;
-+ return 0;
-+ }
-+
-+ ucontrol->value.integer.value[0] =
-+ (snd_soc_read(widget->codec, reg) >> shift) & mask;
-+ if (shift != rshift)
-+ ucontrol->value.integer.value[1] =
-+ (snd_soc_read(widget->codec, reg) >> rshift) & mask;
-+ if (invert) {
-+ ucontrol->value.integer.value[0] =
-+ mask - ucontrol->value.integer.value[0];
-+ if (shift != rshift)
-+ ucontrol->value.integer.value[1] =
-+ mask - ucontrol->value.integer.value[1];
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_get_volsw);
-+
-+/**
-+ * snd_soc_dapm_put_volsw - dapm mixer set callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to set the value of a dapm mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
-+ int reg = kcontrol->private_value & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int rshift = (kcontrol->private_value >> 12) & 0x0f;
-+ int mask = (kcontrol->private_value >> 16) & 0xff;
-+ int invert = (kcontrol->private_value >> 24) & 0x01;
-+ unsigned short val, val2, val_mask;
-+ int ret;
-+
-+ val = (ucontrol->value.integer.value[0] & mask);
-+
-+ if (invert)
-+ val = mask - val;
-+ val_mask = mask << shift;
-+ val = val << shift;
-+ if (shift != rshift) {
-+ val2 = (ucontrol->value.integer.value[1] & mask);
-+ if (invert)
-+ val2 = mask - val2;
-+ val_mask |= mask << rshift;
-+ val |= val2 << rshift;
-+ }
-+
-+ mutex_lock(&widget->codec->mutex);
-+ widget->value = val;
-+
-+ /* save volume value if the widget is powered down */
-+ if (widget->id == snd_soc_dapm_pga && !widget->power) {
-+ widget->saved_value = val;
-+ mutex_unlock(&widget->codec->mutex);
-+ return 1;
-+ }
-+
-+ dapm_mixer_update_power(widget, kcontrol, reg, val_mask, val, invert);
-+ if (widget->event) {
-+ if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-+ ret = widget->event(widget, SND_SOC_DAPM_PRE_REG);
-+ if (ret < 0)
-+ goto out;
-+ }
-+ ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
-+ if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-+ ret = widget->event(widget, SND_SOC_DAPM_POST_REG);
-+ } else
-+ ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
-+
-+out:
-+ mutex_unlock(&widget->codec->mutex);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_put_volsw);
-+
-+/**
-+ * snd_soc_dapm_get_enum_double - dapm enumerated double mixer get callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to get the value of a dapm enumerated double mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+ unsigned short val, bitmask;
-+
-+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
-+ ;
-+ val = snd_soc_read(widget->codec, e->reg);
-+ ucontrol->value.enumerated.item[0] = (val >> e->shift_l) & (bitmask - 1);
-+ if (e->shift_l != e->shift_r)
-+ ucontrol->value.enumerated.item[1] =
-+ (val >> e->shift_r) & (bitmask - 1);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_get_enum_double);
-+
-+/**
-+ * snd_soc_dapm_put_enum_double - dapm enumerated double mixer set callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to set the value of a dapm enumerated double mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+ unsigned short val, mux;
-+ unsigned short mask, bitmask;
-+ int ret = 0;
-+
-+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
-+ ;
-+ if (ucontrol->value.enumerated.item[0] > e->mask - 1)
-+ return -EINVAL;
-+ mux = ucontrol->value.enumerated.item[0];
-+ val = mux << e->shift_l;
-+ mask = (bitmask - 1) << e->shift_l;
-+ if (e->shift_l != e->shift_r) {
-+ if (ucontrol->value.enumerated.item[1] > e->mask - 1)
-+ return -EINVAL;
-+ val |= ucontrol->value.enumerated.item[1] << e->shift_r;
-+ mask |= (bitmask - 1) << e->shift_r;
-+ }
-+
-+ mutex_lock(&widget->codec->mutex);
-+ widget->value = val;
-+ dapm_mux_update_power(widget, kcontrol, mask, mux, e);
-+ if (widget->event) {
-+ if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
-+ ret = widget->event(widget, SND_SOC_DAPM_PRE_REG);
-+ if (ret < 0)
-+ goto out;
-+ }
-+ ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-+ if (widget->event_flags & SND_SOC_DAPM_POST_REG)
-+ ret = widget->event(widget, SND_SOC_DAPM_POST_REG);
-+ } else
-+ ret = snd_soc_update_bits(widget->codec, e->reg, mask, val);
-+
-+out:
-+ mutex_unlock(&widget->codec->mutex);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_put_enum_double);
-+
-+/**
-+ * snd_soc_dapm_new_control - create new dapm control
-+ * @codec: audio codec
-+ * @widget: widget template
-+ *
-+ * Creates a new dapm control based upon the template.
-+ *
-+ * Returns 0 for success else error.
-+ */
-+int snd_soc_dapm_new_control(struct snd_soc_codec *codec,
-+ const struct snd_soc_dapm_widget *widget)
-+{
-+ struct snd_soc_dapm_widget *w;
-+
-+ if ((w = dapm_cnew_widget(widget)) == NULL)
-+ return -ENOMEM;
-+
-+ w->codec = codec;
-+ INIT_LIST_HEAD(&w->sources);
-+ INIT_LIST_HEAD(&w->sinks);
-+ INIT_LIST_HEAD(&w->list);
-+ list_add(&w->list, &codec->dapm_widgets);
-+
-+ /* machine layer set ups unconnected pins and insertions */
-+ w->connected = 1;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_new_control);
-+
-+/**
-+ * snd_soc_dapm_stream_event - send a stream event to the dapm core
-+ * @codec: audio codec
-+ * @stream: stream name
-+ * @event: stream event
-+ *
-+ * Sends a stream event to the dapm core. The core then makes any
-+ * necessary widget power changes.
-+ *
-+ * Returns 0 for success else error.
-+ */
-+int snd_soc_dapm_stream_event(struct snd_soc_codec *codec,
-+ char *stream, int event)
-+{
-+ struct snd_soc_dapm_widget *w;
-+
-+ mutex_lock(&codec->mutex);
-+ list_for_each_entry(w, &codec->dapm_widgets, list)
-+ {
-+ if (!w->sname)
-+ continue;
-+ dbg("widget %s\n %s stream %s event %d\n", w->name, w->sname,
-+ stream, event);
-+ if (strstr(w->sname, stream)) {
-+ switch(event) {
-+ case SND_SOC_DAPM_STREAM_START:
-+ w->active = 1;
-+ break;
-+ case SND_SOC_DAPM_STREAM_STOP:
-+ w->active = 0;
-+ break;
-+ case SND_SOC_DAPM_STREAM_SUSPEND:
-+ if (w->active)
-+ w->suspend = 1;
-+ w->active = 0;
-+ break;
-+ case SND_SOC_DAPM_STREAM_RESUME:
-+ if (w->suspend) {
-+ w->active = 1;
-+ w->suspend = 0;
-+ }
-+ break;
-+ case SND_SOC_DAPM_STREAM_PAUSE_PUSH:
-+ break;
-+ case SND_SOC_DAPM_STREAM_PAUSE_RELEASE:
-+ break;
-+ }
-+ }
-+ }
-+ mutex_unlock(&codec->mutex);
-+
-+ dapm_power_widgets(codec, event);
-+ dump_dapm(codec, __FUNCTION__);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_stream_event);
-+
-+/**
-+ * snd_soc_dapm_set_endpoint - set audio endpoint status
-+ * @codec: audio codec
-+ * @endpoint: audio signal endpoint (or start point)
-+ * @status: point status
-+ *
-+ * Set audio endpoint status - connected or disconnected.
-+ *
-+ * Returns 0 for success else error.
-+ */
-+int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
-+ char *endpoint, int status)
-+{
-+ struct snd_soc_dapm_widget *w;
-+
-+ list_for_each_entry(w, &codec->dapm_widgets, list) {
-+ if (!strcmp(w->name, endpoint)) {
-+ w->connected = status;
-+ }
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_set_endpoint);
-+
-+/**
-+ * snd_soc_dapm_free - free dapm resources
-+ * @socdev: SoC device
-+ *
-+ * Free all dapm widgets and resources.
-+ */
-+void snd_soc_dapm_free(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ snd_soc_dapm_sys_remove(socdev->dev);
-+ dapm_free_widgets(codec);
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_dapm_free);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("Dynamic Audio Power Management core for ALSA SoC");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/soc-core.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/soc-core.c
-@@ -0,0 +1,2063 @@
-+/*
-+ * soc-core.c -- ALSA SoC Audio Layer
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 12th Aug 2005 Initial version.
-+ * 25th Oct 2005 Working Codec, Interface and Platform registration.
-+ *
-+ * TODO:
-+ * o Add hw rules to enforce rates, etc.
-+ * o More testing with other codecs/machines.
-+ * o Add more codecs and platforms to ensure good API coverage.
-+ * o Support TDM on PCM and I2S
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/bitops.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+/* debug */
-+#define SOC_DEBUG 1
-+#if SOC_DEBUG
-+#define dbg(format, arg...) printk(format, ## arg)
-+#else
-+#define dbg(format, arg...)
-+#endif
-+/* debug DAI capabilities matching */
-+#define SOC_DEBUG_DAI 1
-+#if SOC_DEBUG_DAI
-+#define dbgc(format, arg...) printk(format, ## arg)
-+#else
-+#define dbgc(format, arg...)
-+#endif
-+
-+#define CODEC_CPU(codec, cpu) ((codec << 4) | cpu)
-+
-+static DEFINE_MUTEX(pcm_mutex);
-+static DEFINE_MUTEX(io_mutex);
-+static struct workqueue_struct *soc_workq;
-+static struct work_struct soc_stream_work;
-+static DECLARE_WAIT_QUEUE_HEAD(soc_pm_waitq);
-+
-+/* supported sample rates */
-+/* ATTENTION: these values depend on the definition in pcm.h! */
-+static const unsigned int rates[] = {
-+ 5512, 8000, 11025, 16000, 22050, 32000, 44100,
-+ 48000, 64000, 88200, 96000, 176400, 192000
-+};
-+
-+/*
-+ * This is a timeout to do a DAPM powerdown after a stream is closed().
-+ * It can be used to eliminate pops between different playback streams, e.g.
-+ * between two audio tracks.
-+ */
-+static int pmdown_time = 5000;
-+module_param(pmdown_time, int, 0);
-+MODULE_PARM_DESC(pmdown_time, "DAPM stream powerdown time (msecs)");
-+
-+#ifdef CONFIG_SND_SOC_AC97_BUS
-+/* unregister ac97 codec */
-+static int soc_ac97_dev_unregister(struct snd_soc_codec *codec)
-+{
-+ if (codec->ac97->dev.bus)
-+ device_unregister(&codec->ac97->dev);
-+ return 0;
-+}
-+
-+/* stop no dev release warning */
-+static void soc_ac97_device_release(struct device *dev){}
-+
-+/* register ac97 codec to bus */
-+static int soc_ac97_dev_register(struct snd_soc_codec *codec)
-+{
-+ int err;
-+
-+ codec->ac97->dev.bus = &ac97_bus_type;
-+ codec->ac97->dev.parent = NULL;
-+ codec->ac97->dev.release = soc_ac97_device_release;
-+
-+ snprintf(codec->ac97->dev.bus_id, BUS_ID_SIZE, "%d-%d:%s",
-+ codec->card->number, 0, codec->name);
-+ err = device_register(&codec->ac97->dev);
-+ if (err < 0) {
-+ snd_printk(KERN_ERR "Can't register ac97 bus\n");
-+ codec->ac97->dev.bus = NULL;
-+ return err;
-+ }
-+ return 0;
-+}
-+#endif
-+
-+static inline const char* get_dai_name(int type)
-+{
-+ switch(type) {
-+ case SND_SOC_DAI_AC97:
-+ return "AC97";
-+ case SND_SOC_DAI_I2S:
-+ return "I2S";
-+ case SND_SOC_DAI_PCM:
-+ return "PCM";
-+ }
-+ return NULL;
-+}
-+
-+/* get rate format from rate */
-+static inline int soc_get_rate_format(int rate)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(rates); i++) {
-+ if (rates[i] == rate)
-+ return 1 << i;
-+ }
-+ return 0;
-+}
-+
-+/* gets the audio system mclk/sysclk for the given parameters */
-+static unsigned inline int soc_get_mclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_machine *machine = socdev->machine;
-+ int i;
-+
-+ /* find the matching machine config and get it's mclk for the given
-+ * sample rate and hardware format */
-+ for(i = 0; i < machine->num_links; i++) {
-+ if (machine->dai_link[i].cpu_dai == rtd->cpu_dai &&
-+ machine->dai_link[i].config_sysclk)
-+ return machine->dai_link[i].config_sysclk(rtd, info);
-+ }
-+ return 0;
-+}
-+
-+/* changes a bitclk multiplier mask to a divider mask */
-+static u64 soc_bfs_rcw_to_div(u64 bfs, int rate, unsigned int mclk,
-+ unsigned int pcmfmt, unsigned int chn)
-+{
-+ int i, j;
-+ u64 bfs_ = 0;
-+ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
-+
-+ if (size <= 0)
-+ return 0;
-+
-+ /* the minimum bit clock that has enough bandwidth */
-+ min = size * rate * chn;
-+ dbgc("rcw --> div min bclk %d with mclk %d\n", min, mclk);
-+
-+ for (i = 0; i < 64; i++) {
-+ if ((bfs >> i) & 0x1) {
-+ j = min * (i + 1);
-+ bfs_ |= SND_SOC_FSBD(mclk/j);
-+ dbgc("rcw --> div support mult %d\n",
-+ SND_SOC_FSBD_REAL(1<<i));
-+ }
-+ }
-+
-+ return bfs_;
-+}
-+
-+/* changes a bitclk divider mask to a multiplier mask */
-+static u64 soc_bfs_div_to_rcw(u64 bfs, int rate, unsigned int mclk,
-+ unsigned int pcmfmt, unsigned int chn)
-+{
-+ int i, j;
-+ u64 bfs_ = 0;
-+
-+ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
-+
-+ if (size <= 0)
-+ return 0;
-+
-+ /* the minimum bit clock that has enough bandwidth */
-+ min = size * rate * chn;
-+ dbgc("div to rcw min bclk %d with mclk %d\n", min, mclk);
-+
-+ for (i = 0; i < 64; i++) {
-+ if ((bfs >> i) & 0x1) {
-+ j = mclk / (i + 1);
-+ if (j >= min) {
-+ bfs_ |= SND_SOC_FSBW(j/min);
-+ dbgc("div --> rcw support div %d\n",
-+ SND_SOC_FSBW_REAL(1<<i));
-+ }
-+ }
-+ }
-+
-+ return bfs_;
-+}
-+
-+/* changes a constant bitclk to a multiplier mask */
-+static u64 soc_bfs_rate_to_rcw(u64 bfs, int rate, unsigned int mclk,
-+ unsigned int pcmfmt, unsigned int chn)
-+{
-+ unsigned int bfs_ = rate * bfs;
-+ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
-+
-+ if (size <= 0)
-+ return 0;
-+
-+ /* the minimum bit clock that has enough bandwidth */
-+ min = size * rate * chn;
-+ dbgc("rate --> rcw min bclk %d with mclk %d\n", min, mclk);
-+
-+ if (bfs_ < min)
-+ return 0;
-+ else {
-+ bfs_ = SND_SOC_FSBW(bfs_/min);
-+ dbgc("rate --> rcw support div %d\n", SND_SOC_FSBW_REAL(bfs_));
-+ return bfs_;
-+ }
-+}
-+
-+/* changes a bitclk multiplier mask to a divider mask */
-+static u64 soc_bfs_rate_to_div(u64 bfs, int rate, unsigned int mclk,
-+ unsigned int pcmfmt, unsigned int chn)
-+{
-+ unsigned int bfs_ = rate * bfs;
-+ int size = snd_pcm_format_physical_width(pcmfmt), min = 0;
-+
-+ if (size <= 0)
-+ return 0;
-+
-+ /* the minimum bit clock that has enough bandwidth */
-+ min = size * rate * chn;
-+ dbgc("rate --> div min bclk %d with mclk %d\n", min, mclk);
-+
-+ if (bfs_ < min)
-+ return 0;
-+ else {
-+ bfs_ = SND_SOC_FSBW(mclk/bfs_);
-+ dbgc("rate --> div support div %d\n", SND_SOC_FSBD_REAL(bfs_));
-+ return bfs_;
-+ }
-+}
-+
-+/* Matches codec DAI and SoC CPU DAI hardware parameters */
-+static int soc_hw_match_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_dai_mode *codec_dai_mode = NULL;
-+ struct snd_soc_dai_mode *cpu_dai_mode = NULL;
-+ struct snd_soc_clock_info clk_info;
-+ unsigned int fs, mclk, rate = params_rate(params),
-+ chn, j, k, cpu_bclk, codec_bclk, pcmrate;
-+ u16 fmt = 0;
-+ u64 codec_bfs, cpu_bfs;
-+
-+ dbg("asoc: match version %s\n", SND_SOC_VERSION);
-+ clk_info.rate = rate;
-+ pcmrate = soc_get_rate_format(rate);
-+
-+ /* try and find a match from the codec and cpu DAI capabilities */
-+ for (j = 0; j < rtd->codec_dai->caps.num_modes; j++) {
-+ for (k = 0; k < rtd->cpu_dai->caps.num_modes; k++) {
-+ codec_dai_mode = &rtd->codec_dai->caps.mode[j];
-+ cpu_dai_mode = &rtd->cpu_dai->caps.mode[k];
-+
-+ if (!(codec_dai_mode->pcmrate & cpu_dai_mode->pcmrate &
-+ pcmrate)) {
-+ dbgc("asoc: DAI[%d:%d] failed to match rate\n", j, k);
-+ continue;
-+ }
-+
-+ fmt = codec_dai_mode->fmt & cpu_dai_mode->fmt;
-+ if (!(fmt & SND_SOC_DAIFMT_FORMAT_MASK)) {
-+ dbgc("asoc: DAI[%d:%d] failed to match format\n", j, k);
-+ continue;
-+ }
-+
-+ if (!(fmt & SND_SOC_DAIFMT_CLOCK_MASK)) {
-+ dbgc("asoc: DAI[%d:%d] failed to match clock masters\n",
-+ j, k);
-+ continue;
-+ }
-+
-+ if (!(fmt & SND_SOC_DAIFMT_INV_MASK)) {
-+ dbgc("asoc: DAI[%d:%d] failed to match invert\n", j, k);
-+ continue;
-+ }
-+
-+ if (!(codec_dai_mode->pcmfmt & cpu_dai_mode->pcmfmt)) {
-+ dbgc("asoc: DAI[%d:%d] failed to match pcm format\n", j, k);
-+ continue;
-+ }
-+
-+ if (!(codec_dai_mode->pcmdir & cpu_dai_mode->pcmdir)) {
-+ dbgc("asoc: DAI[%d:%d] failed to match direction\n", j, k);
-+ continue;
-+ }
-+
-+ /* todo - still need to add tdm selection */
-+ rtd->cpu_dai->dai_runtime.fmt =
-+ rtd->codec_dai->dai_runtime.fmt =
-+ 1 << (ffs(fmt & SND_SOC_DAIFMT_FORMAT_MASK) -1) |
-+ 1 << (ffs(fmt & SND_SOC_DAIFMT_CLOCK_MASK) - 1) |
-+ 1 << (ffs(fmt & SND_SOC_DAIFMT_INV_MASK) - 1);
-+ clk_info.bclk_master =
-+ rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK;
-+
-+ /* make sure the ratio between rate and master
-+ * clock is acceptable*/
-+ fs = (cpu_dai_mode->fs & codec_dai_mode->fs);
-+ if (fs == 0) {
-+ dbgc("asoc: DAI[%d:%d] failed to match FS\n", j, k);
-+ continue;
-+ }
-+ clk_info.fs = rtd->cpu_dai->dai_runtime.fs =
-+ rtd->codec_dai->dai_runtime.fs = fs;
-+
-+ /* calculate audio system clocking using slowest clocks possible*/
-+ mclk = soc_get_mclk(rtd, &clk_info);
-+ if (mclk == 0) {
-+ dbgc("asoc: DAI[%d:%d] configuration not clockable\n", j, k);
-+ dbgc("asoc: rate %d fs %d master %x\n", rate, fs,
-+ clk_info.bclk_master);
-+ continue;
-+ }
-+
-+ /* calculate word size (per channel) and frame size */
-+ rtd->codec_dai->dai_runtime.pcmfmt =
-+ rtd->cpu_dai->dai_runtime.pcmfmt =
-+ 1 << params_format(params);
-+
-+ chn = params_channels(params);
-+ /* i2s always has left and right */
-+ if (params_channels(params) == 1 &&
-+ rtd->cpu_dai->dai_runtime.fmt & (SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_LEFT_J))
-+ chn <<= 1;
-+
-+ /* Calculate bfs - the ratio between bitclock and the sample rate
-+ * We must take into consideration the dividers and multipliers
-+ * used in the codec and cpu DAI modes. We always choose the
-+ * lowest possible clocks to reduce power.
-+ */
-+ switch (CODEC_CPU(codec_dai_mode->flags, cpu_dai_mode->flags)) {
-+ case CODEC_CPU(SND_SOC_DAI_BFS_DIV, SND_SOC_DAI_BFS_DIV):
-+ /* cpu & codec bfs dividers */
-+ rtd->cpu_dai->dai_runtime.bfs =
-+ rtd->codec_dai->dai_runtime.bfs =
-+ 1 << (fls(codec_dai_mode->bfs & cpu_dai_mode->bfs) - 1);
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_DIV, SND_SOC_DAI_BFS_RCW):
-+ /* normalise bfs codec divider & cpu rcw mult */
-+ codec_bfs = soc_bfs_div_to_rcw(codec_dai_mode->bfs, rate,
-+ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ rtd->cpu_dai->dai_runtime.bfs =
-+ 1 << (ffs(codec_bfs & cpu_dai_mode->bfs) - 1);
-+ cpu_bfs = soc_bfs_rcw_to_div(cpu_dai_mode->bfs, rate, mclk,
-+ rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ rtd->codec_dai->dai_runtime.bfs =
-+ 1 << (fls(codec_dai_mode->bfs & cpu_bfs) - 1);
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_RCW, SND_SOC_DAI_BFS_DIV):
-+ /* normalise bfs codec rcw mult & cpu divider */
-+ codec_bfs = soc_bfs_rcw_to_div(codec_dai_mode->bfs, rate,
-+ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ rtd->cpu_dai->dai_runtime.bfs =
-+ 1 << (fls(codec_bfs & cpu_dai_mode->bfs) -1);
-+ cpu_bfs = soc_bfs_div_to_rcw(cpu_dai_mode->bfs, rate, mclk,
-+ rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ rtd->codec_dai->dai_runtime.bfs =
-+ 1 << (ffs(codec_dai_mode->bfs & cpu_bfs) -1);
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_RCW, SND_SOC_DAI_BFS_RCW):
-+ /* codec & cpu bfs rate rcw multipliers */
-+ rtd->cpu_dai->dai_runtime.bfs =
-+ rtd->codec_dai->dai_runtime.bfs =
-+ 1 << (ffs(codec_dai_mode->bfs & cpu_dai_mode->bfs) -1);
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_DIV, SND_SOC_DAI_BFS_RATE):
-+ /* normalise cpu bfs rate const multiplier & codec div */
-+ cpu_bfs = soc_bfs_rate_to_div(cpu_dai_mode->bfs, rate,
-+ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ if(codec_dai_mode->bfs & cpu_bfs) {
-+ rtd->codec_dai->dai_runtime.bfs = cpu_bfs;
-+ rtd->cpu_dai->dai_runtime.bfs = cpu_dai_mode->bfs;
-+ } else
-+ rtd->cpu_dai->dai_runtime.bfs = 0;
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_RCW, SND_SOC_DAI_BFS_RATE):
-+ /* normalise cpu bfs rate const multiplier & codec rcw mult */
-+ cpu_bfs = soc_bfs_rate_to_rcw(cpu_dai_mode->bfs, rate,
-+ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ if(codec_dai_mode->bfs & cpu_bfs) {
-+ rtd->codec_dai->dai_runtime.bfs = cpu_bfs;
-+ rtd->cpu_dai->dai_runtime.bfs = cpu_dai_mode->bfs;
-+ } else
-+ rtd->cpu_dai->dai_runtime.bfs = 0;
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_RATE, SND_SOC_DAI_BFS_RCW):
-+ /* normalise cpu bfs rate rcw multiplier & codec const mult */
-+ codec_bfs = soc_bfs_rate_to_rcw(codec_dai_mode->bfs, rate,
-+ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ if(cpu_dai_mode->bfs & codec_bfs) {
-+ rtd->cpu_dai->dai_runtime.bfs = codec_bfs;
-+ rtd->codec_dai->dai_runtime.bfs = codec_dai_mode->bfs;
-+ } else
-+ rtd->cpu_dai->dai_runtime.bfs = 0;
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_RATE, SND_SOC_DAI_BFS_DIV):
-+ /* normalise cpu bfs div & codec const mult */
-+ codec_bfs = soc_bfs_rate_to_div(codec_dai_mode->bfs, rate,
-+ mclk, rtd->codec_dai->dai_runtime.pcmfmt, chn);
-+ if(codec_dai_mode->bfs & codec_bfs) {
-+ rtd->cpu_dai->dai_runtime.bfs = codec_bfs;
-+ rtd->codec_dai->dai_runtime.bfs = codec_dai_mode->bfs;
-+ } else
-+ rtd->cpu_dai->dai_runtime.bfs = 0;
-+ break;
-+ case CODEC_CPU(SND_SOC_DAI_BFS_RATE, SND_SOC_DAI_BFS_RATE):
-+ /* cpu & codec constant mult */
-+ if(codec_dai_mode->bfs == cpu_dai_mode->bfs)
-+ rtd->cpu_dai->dai_runtime.bfs =
-+ rtd->codec_dai->dai_runtime.bfs =
-+ codec_dai_mode->bfs;
-+ else
-+ rtd->cpu_dai->dai_runtime.bfs =
-+ rtd->codec_dai->dai_runtime.bfs = 0;
-+ break;
-+ default:
-+ if(codec_dai_mode->flags == 0)
-+ printk(KERN_ERR "asoc: error missing codec DAI flags\n");
-+ else
-+ printk(KERN_ERR "asoc: error missing CPU DAI flags\n");
-+ break;
-+ }
-+
-+ /* make sure the bit clock speed is acceptable */
-+ if (!rtd->cpu_dai->dai_runtime.bfs ||
-+ !rtd->codec_dai->dai_runtime.bfs) {
-+ dbgc("asoc: DAI[%d:%d] failed to match BFS\n", j, k);
-+ dbgc("asoc: cpu_dai %llu codec %llu\n",
-+ rtd->cpu_dai->dai_runtime.bfs,
-+ rtd->codec_dai->dai_runtime.bfs);
-+ dbgc("asoc: mclk %d hwfmt %x\n", mclk, fmt);
-+ continue;
-+ }
-+
-+ goto found;
-+ }
-+ }
-+ printk(KERN_ERR "asoc: no matching DAI found between codec and CPU\n");
-+ return -EINVAL;
-+
-+found:
-+ /* we have matching DAI's, so complete the runtime info */
-+ rtd->codec_dai->dai_runtime.pcmrate =
-+ rtd->cpu_dai->dai_runtime.pcmrate =
-+ soc_get_rate_format(rate);
-+
-+ rtd->codec_dai->dai_runtime.priv = codec_dai_mode->priv;
-+ rtd->cpu_dai->dai_runtime.priv = cpu_dai_mode->priv;
-+ rtd->codec_dai->dai_runtime.flags = codec_dai_mode->flags;
-+ rtd->cpu_dai->dai_runtime.flags = cpu_dai_mode->flags;
-+
-+ /* for debug atm */
-+ dbg("asoc: DAI[%d:%d] Match OK\n", j, k);
-+ if (rtd->codec_dai->dai_runtime.flags == SND_SOC_DAI_BFS_DIV) {
-+ codec_bclk = (rtd->codec_dai->dai_runtime.fs * params_rate(params)) /
-+ SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ dbg("asoc: codec fs %d mclk %d bfs div %d bclk %d\n",
-+ rtd->codec_dai->dai_runtime.fs, mclk,
-+ SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs), codec_bclk);
-+ } else if(rtd->codec_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RATE) {
-+ codec_bclk = params_rate(params) * rtd->codec_dai->dai_runtime.bfs;
-+ dbg("asoc: codec fs %d mclk %d bfs rate mult %llu bclk %d\n",
-+ rtd->codec_dai->dai_runtime.fs, mclk,
-+ rtd->codec_dai->dai_runtime.bfs, codec_bclk);
-+ } else if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RCW) {
-+ codec_bclk = params_rate(params) * params_channels(params) *
-+ snd_pcm_format_physical_width(rtd->codec_dai->dai_runtime.pcmfmt) *
-+ SND_SOC_FSBW_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ dbg("asoc: codec fs %d mclk %d bfs rcw mult %d bclk %d\n",
-+ rtd->codec_dai->dai_runtime.fs, mclk,
-+ SND_SOC_FSBW_REAL(rtd->codec_dai->dai_runtime.bfs), codec_bclk);
-+ } else
-+ codec_bclk = 0;
-+
-+ if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_DIV) {
-+ cpu_bclk = (rtd->cpu_dai->dai_runtime.fs * params_rate(params)) /
-+ SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
-+ dbg("asoc: cpu fs %d mclk %d bfs div %d bclk %d\n",
-+ rtd->cpu_dai->dai_runtime.fs, mclk,
-+ SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs), cpu_bclk);
-+ } else if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RATE) {
-+ cpu_bclk = params_rate(params) * rtd->cpu_dai->dai_runtime.bfs;
-+ dbg("asoc: cpu fs %d mclk %d bfs rate mult %llu bclk %d\n",
-+ rtd->cpu_dai->dai_runtime.fs, mclk,
-+ rtd->cpu_dai->dai_runtime.bfs, cpu_bclk);
-+ } else if (rtd->cpu_dai->dai_runtime.flags == SND_SOC_DAI_BFS_RCW) {
-+ cpu_bclk = params_rate(params) * params_channels(params) *
-+ snd_pcm_format_physical_width(rtd->cpu_dai->dai_runtime.pcmfmt) *
-+ SND_SOC_FSBW_REAL(rtd->cpu_dai->dai_runtime.bfs);
-+ dbg("asoc: cpu fs %d mclk %d bfs mult rcw %d bclk %d\n",
-+ rtd->cpu_dai->dai_runtime.fs, mclk,
-+ SND_SOC_FSBW_REAL(rtd->cpu_dai->dai_runtime.bfs), cpu_bclk);
-+ } else
-+ cpu_bclk = 0;
-+
-+ /*
-+ * Check we have matching bitclocks. If we don't then it means the
-+ * sysclock returned by either the codec or cpu DAI (selected by the
-+ * machine sysclock function) is wrong compared with the supported DAI
-+ * modes for the codec or cpu DAI.
-+ */
-+ if (cpu_bclk != codec_bclk && cpu_bclk){
-+ printk(KERN_ERR
-+ "asoc: codec and cpu bitclocks differ, audio may be wrong speed\n"
-+ );
-+ printk(KERN_ERR "asoc: codec %d != cpu %d\n", codec_bclk, cpu_bclk);
-+ }
-+
-+ switch(rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ dbg("asoc: DAI codec BCLK master, LRC master\n");
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ dbg("asoc: DAI codec BCLK slave, LRC master\n");
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ dbg("asoc: DAI codec BCLK master, LRC slave\n");
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ dbg("asoc: DAI codec BCLK slave, LRC slave\n");
-+ break;
-+ }
-+ dbg("asoc: mode %x, invert %x\n",
-+ rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK,
-+ rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK);
-+ dbg("asoc: audio rate %d chn %d fmt %x\n", params_rate(params),
-+ params_channels(params), params_format(params));
-+
-+ return 0;
-+}
-+
-+static inline u32 get_rates(struct snd_soc_dai_mode *modes, int nmodes)
-+{
-+ int i;
-+ u32 rates = 0;
-+
-+ for(i = 0; i < nmodes; i++)
-+ rates |= modes[i].pcmrate;
-+
-+ return rates;
-+}
-+
-+static inline u64 get_formats(struct snd_soc_dai_mode *modes, int nmodes)
-+{
-+ int i;
-+ u64 formats = 0;
-+
-+ for(i = 0; i < nmodes; i++)
-+ formats |= modes[i].pcmfmt;
-+
-+ return formats;
-+}
-+
-+/*
-+ * Called by ALSA when a PCM substream is opened, the runtime->hw record is
-+ * then initialized and any private data can be allocated. This also calls
-+ * startup for the cpu DAI, platform, machine and codec DAI.
-+ */
-+static int soc_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_machine *machine = socdev->machine;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec_dai *codec_dai = rtd->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = rtd->cpu_dai;
-+ int ret = 0;
-+
-+ mutex_lock(&pcm_mutex);
-+
-+ /* startup the audio subsystem */
-+ if (rtd->cpu_dai->ops.startup) {
-+ ret = rtd->cpu_dai->ops.startup(substream);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't open interface %s\n",
-+ rtd->cpu_dai->name);
-+ goto out;
-+ }
-+ }
-+
-+ if (platform->pcm_ops->open) {
-+ ret = platform->pcm_ops->open(substream);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't open platform %s\n", platform->name);
-+ goto platform_err;
-+ }
-+ }
-+
-+ if (machine->ops && machine->ops->startup) {
-+ ret = machine->ops->startup(substream);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: %s startup failed\n", machine->name);
-+ goto machine_err;
-+ }
-+ }
-+
-+ if (rtd->codec_dai->ops.startup) {
-+ ret = rtd->codec_dai->ops.startup(substream);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't open codec %s\n",
-+ rtd->codec_dai->name);
-+ goto codec_dai_err;
-+ }
-+ }
-+
-+ /* create runtime params from DMA, codec and cpu DAI */
-+ if (runtime->hw.rates)
-+ runtime->hw.rates &=
-+ get_rates(codec_dai->caps.mode, codec_dai->caps.num_modes) &
-+ get_rates(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
-+ else
-+ runtime->hw.rates =
-+ get_rates(codec_dai->caps.mode, codec_dai->caps.num_modes) &
-+ get_rates(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
-+ if (runtime->hw.formats)
-+ runtime->hw.formats &=
-+ get_formats(codec_dai->caps.mode, codec_dai->caps.num_modes) &
-+ get_formats(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
-+ else
-+ runtime->hw.formats =
-+ get_formats(codec_dai->caps.mode, codec_dai->caps.num_modes) &
-+ get_formats(cpu_dai->caps.mode, cpu_dai->caps.num_modes);
-+
-+ /* Check that the codec and cpu DAI's are compatible */
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ runtime->hw.rate_min =
-+ max(rtd->codec_dai->playback.rate_min,
-+ rtd->cpu_dai->playback.rate_min);
-+ runtime->hw.rate_max =
-+ min(rtd->codec_dai->playback.rate_max,
-+ rtd->cpu_dai->playback.rate_max);
-+ runtime->hw.channels_min =
-+ max(rtd->codec_dai->playback.channels_min,
-+ rtd->cpu_dai->playback.channels_min);
-+ runtime->hw.channels_max =
-+ min(rtd->codec_dai->playback.channels_max,
-+ rtd->cpu_dai->playback.channels_max);
-+ } else {
-+ runtime->hw.rate_min =
-+ max(rtd->codec_dai->capture.rate_min,
-+ rtd->cpu_dai->capture.rate_min);
-+ runtime->hw.rate_max =
-+ min(rtd->codec_dai->capture.rate_max,
-+ rtd->cpu_dai->capture.rate_max);
-+ runtime->hw.channels_min =
-+ max(rtd->codec_dai->capture.channels_min,
-+ rtd->cpu_dai->capture.channels_min);
-+ runtime->hw.channels_max =
-+ min(rtd->codec_dai->capture.channels_max,
-+ rtd->cpu_dai->capture.channels_max);
-+ }
-+
-+ snd_pcm_limit_hw_rates(runtime);
-+ if (!runtime->hw.rates) {
-+ printk(KERN_ERR "asoc: %s <-> %s No matching rates\n",
-+ rtd->codec_dai->name, rtd->cpu_dai->name);
-+ goto codec_dai_err;
-+ }
-+ if (!runtime->hw.formats) {
-+ printk(KERN_ERR "asoc: %s <-> %s No matching formats\n",
-+ rtd->codec_dai->name, rtd->cpu_dai->name);
-+ goto codec_dai_err;
-+ }
-+ if (!runtime->hw.channels_min || !runtime->hw.channels_max) {
-+ printk(KERN_ERR "asoc: %s <-> %s No matching channels\n",
-+ rtd->codec_dai->name, rtd->cpu_dai->name);
-+ goto codec_dai_err;
-+ }
-+
-+ dbg("asoc: %s <-> %s info:\n", rtd->codec_dai->name, rtd->cpu_dai->name);
-+ dbg("asoc: rate mask 0x%x\n", runtime->hw.rates);
-+ dbg("asoc: min ch %d max ch %d\n", runtime->hw.channels_min,
-+ runtime->hw.channels_max);
-+ dbg("asoc: min rate %d max rate %d\n", runtime->hw.rate_min,
-+ runtime->hw.rate_max);
-+
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ rtd->cpu_dai->playback.active = rtd->codec_dai->playback.active = 1;
-+ else
-+ rtd->cpu_dai->capture.active = rtd->codec_dai->capture.active = 1;
-+ rtd->cpu_dai->active = rtd->codec_dai->active = 1;
-+ rtd->cpu_dai->runtime = runtime;
-+ socdev->codec->active++;
-+ mutex_unlock(&pcm_mutex);
-+ return 0;
-+
-+codec_dai_err:
-+ if (machine->ops && machine->ops->shutdown)
-+ machine->ops->shutdown(substream);
-+
-+machine_err:
-+ if (platform->pcm_ops->close)
-+ platform->pcm_ops->close(substream);
-+
-+platform_err:
-+ if (rtd->cpu_dai->ops.shutdown)
-+ rtd->cpu_dai->ops.shutdown(substream);
-+out:
-+ mutex_unlock(&pcm_mutex);
-+ return ret;
-+}
-+
-+/*
-+ * Power down the audio subsytem pmdown_time msecs after close is called.
-+ * This is to ensure there are no pops or clicks in between any music tracks
-+ * due to DAPM power cycling.
-+ */
-+static void close_delayed_work(void *data)
-+{
-+ struct snd_soc_device *socdev = data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_codec_dai *codec_dai;
-+ int i;
-+
-+ mutex_lock(&pcm_mutex);
-+ for(i = 0; i < codec->num_dai; i++) {
-+ codec_dai = &codec->dai[i];
-+
-+ dbg("pop wq checking: %s status: %s waiting: %s\n",
-+ codec_dai->playback.stream_name,
-+ codec_dai->playback.active ? "active" : "inactive",
-+ codec_dai->pop_wait ? "yes" : "no");
-+
-+ /* are we waiting on this codec DAI stream */
-+ if (codec_dai->pop_wait == 1) {
-+
-+ codec_dai->pop_wait = 0;
-+ snd_soc_dapm_stream_event(codec, codec_dai->playback.stream_name,
-+ SND_SOC_DAPM_STREAM_STOP);
-+
-+ /* power down the codec power domain if no longer active */
-+ if (codec->active == 0) {
-+ dbg("pop wq D3 %s %s\n", codec->name,
-+ codec_dai->playback.stream_name);
-+ if (codec->dapm_event)
-+ codec->dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ }
-+ }
-+ }
-+ mutex_unlock(&pcm_mutex);
-+}
-+
-+/*
-+ * Called by ALSA when a PCM substream is closed. Private data can be
-+ * freed here. The cpu DAI, codec DAI, machine and platform are also
-+ * shutdown.
-+ */
-+static int soc_codec_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_machine *machine = socdev->machine;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ mutex_lock(&pcm_mutex);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ rtd->cpu_dai->playback.active = rtd->codec_dai->playback.active = 0;
-+ else
-+ rtd->cpu_dai->capture.active = rtd->codec_dai->capture.active = 0;
-+
-+ if (rtd->codec_dai->playback.active == 0 &&
-+ rtd->codec_dai->capture.active == 0) {
-+ rtd->cpu_dai->active = rtd->codec_dai->active = 0;
-+ }
-+ codec->active--;
-+
-+ if (rtd->cpu_dai->ops.shutdown)
-+ rtd->cpu_dai->ops.shutdown(substream);
-+
-+ if (rtd->codec_dai->ops.shutdown)
-+ rtd->codec_dai->ops.shutdown(substream);
-+
-+ if (machine->ops && machine->ops->shutdown)
-+ machine->ops->shutdown(substream);
-+
-+ if (platform->pcm_ops->close)
-+ platform->pcm_ops->close(substream);
-+ rtd->cpu_dai->runtime = NULL;
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ /* start delayed pop wq here for playback streams */
-+ rtd->codec_dai->pop_wait = 1;
-+ queue_delayed_work(soc_workq, &soc_stream_work,
-+ msecs_to_jiffies(pmdown_time));
-+ } else {
-+ /* capture streams can be powered down now */
-+ snd_soc_dapm_stream_event(codec, rtd->codec_dai->capture.stream_name,
-+ SND_SOC_DAPM_STREAM_STOP);
-+
-+ if (codec->active == 0 && rtd->codec_dai->pop_wait == 0){
-+ if (codec->dapm_event)
-+ codec->dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ }
-+ }
-+
-+ mutex_unlock(&pcm_mutex);
-+ return 0;
-+}
-+
-+/*
-+ * Called by ALSA when the PCM substream is prepared, can set format, sample
-+ * rate, etc. This function is non atomic and can be called multiple times,
-+ * it can refer to the runtime info.
-+ */
-+static int soc_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ mutex_lock(&pcm_mutex);
-+ if (platform->pcm_ops->prepare) {
-+ ret = platform->pcm_ops->prepare(substream);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: platform prepare error\n");
-+ goto out;
-+ }
-+ }
-+
-+ if (rtd->codec_dai->ops.prepare) {
-+ ret = rtd->codec_dai->ops.prepare(substream);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: codec DAI prepare error\n");
-+ goto out;
-+ }
-+ }
-+
-+ if (rtd->cpu_dai->ops.prepare)
-+ ret = rtd->cpu_dai->ops.prepare(substream);
-+
-+ /* we only want to start a DAPM playback stream if we are not waiting
-+ * on an existing one stopping */
-+ if (rtd->codec_dai->pop_wait) {
-+ /* we are waiting for the delayed work to start */
-+ if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
-+ snd_soc_dapm_stream_event(codec,
-+ rtd->codec_dai->capture.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-+ else {
-+ rtd->codec_dai->pop_wait = 0;
-+ cancel_delayed_work(&soc_stream_work);
-+ if (rtd->codec_dai->digital_mute)
-+ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 0);
-+ }
-+ } else {
-+ /* no delayed work - do we need to power up codec */
-+ if (codec->dapm_state != SNDRV_CTL_POWER_D0) {
-+
-+ if (codec->dapm_event)
-+ codec->dapm_event(codec, SNDRV_CTL_POWER_D1);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ snd_soc_dapm_stream_event(codec,
-+ rtd->codec_dai->playback.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-+ else
-+ snd_soc_dapm_stream_event(codec,
-+ rtd->codec_dai->capture.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-+
-+ if (codec->dapm_event)
-+ codec->dapm_event(codec, SNDRV_CTL_POWER_D0);
-+ if (rtd->codec_dai->digital_mute)
-+ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 0);
-+
-+ } else {
-+ /* codec already powered - power on widgets */
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ snd_soc_dapm_stream_event(codec,
-+ rtd->codec_dai->playback.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-+ else
-+ snd_soc_dapm_stream_event(codec,
-+ rtd->codec_dai->capture.stream_name,
-+ SND_SOC_DAPM_STREAM_START);
-+ if (rtd->codec_dai->digital_mute)
-+ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 0);
-+ }
-+ }
-+
-+out:
-+ mutex_unlock(&pcm_mutex);
-+ return ret;
-+}
-+
-+/*
-+ * Called by ALSA when the hardware params are set by application. This
-+ * function can also be called multiple times and can allocate buffers
-+ * (using snd_pcm_lib_* ). It's non-atomic.
-+ */
-+static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_machine *machine = socdev->machine;
-+ int ret = 0;
-+
-+ mutex_lock(&pcm_mutex);
-+
-+ /* we don't need to match any AC97 params */
-+ if (rtd->cpu_dai->type != SND_SOC_DAI_AC97) {
-+ ret = soc_hw_match_params(substream, params);
-+ if (ret < 0)
-+ goto out;
-+ } else {
-+ struct snd_soc_clock_info clk_info;
-+ clk_info.rate = params_rate(params);
-+ ret = soc_get_mclk(rtd, &clk_info);
-+ if (ret < 0)
-+ goto out;
-+ }
-+
-+ if (rtd->codec_dai->ops.hw_params) {
-+ ret = rtd->codec_dai->ops.hw_params(substream, params);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't set codec %s hw params\n",
-+ rtd->codec_dai->name);
-+ goto out;
-+ }
-+ }
-+
-+ if (rtd->cpu_dai->ops.hw_params) {
-+ ret = rtd->cpu_dai->ops.hw_params(substream, params);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't set interface %s hw params\n",
-+ rtd->cpu_dai->name);
-+ goto interface_err;
-+ }
-+ }
-+
-+ if (platform->pcm_ops->hw_params) {
-+ ret = platform->pcm_ops->hw_params(substream, params);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't set platform %s hw params\n",
-+ platform->name);
-+ goto platform_err;
-+ }
-+ }
-+
-+ if (machine->ops && machine->ops->hw_params) {
-+ ret = machine->ops->hw_params(substream, params);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: machine hw_params failed\n");
-+ goto machine_err;
-+ }
-+ }
-+
-+out:
-+ mutex_unlock(&pcm_mutex);
-+ return ret;
-+
-+machine_err:
-+ if (platform->pcm_ops->hw_free)
-+ platform->pcm_ops->hw_free(substream);
-+
-+platform_err:
-+ if (rtd->cpu_dai->ops.hw_free)
-+ rtd->cpu_dai->ops.hw_free(substream);
-+
-+interface_err:
-+ if (rtd->codec_dai->ops.hw_free)
-+ rtd->codec_dai->ops.hw_free(substream);
-+
-+ mutex_unlock(&pcm_mutex);
-+ return ret;
-+}
-+
-+/*
-+ * Free's resources allocated by hw_params, can be called multiple times
-+ */
-+static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_machine *machine = socdev->machine;
-+
-+ mutex_lock(&pcm_mutex);
-+
-+ /* apply codec digital mute */
-+ if (!codec->active && rtd->codec_dai->digital_mute)
-+ rtd->codec_dai->digital_mute(codec, rtd->codec_dai, 1);
-+
-+ /* free any machine hw params */
-+ if (machine->ops && machine->ops->hw_free)
-+ machine->ops->hw_free(substream);
-+
-+ /* free any DMA resources */
-+ if (platform->pcm_ops->hw_free)
-+ platform->pcm_ops->hw_free(substream);
-+
-+ /* now free hw params for the DAI's */
-+ if (rtd->codec_dai->ops.hw_free)
-+ rtd->codec_dai->ops.hw_free(substream);
-+
-+ if (rtd->cpu_dai->ops.hw_free)
-+ rtd->cpu_dai->ops.hw_free(substream);
-+
-+ mutex_unlock(&pcm_mutex);
-+ return 0;
-+}
-+
-+static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ int ret;
-+
-+ if (rtd->codec_dai->ops.trigger) {
-+ ret = rtd->codec_dai->ops.trigger(substream, cmd);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ if (platform->pcm_ops->trigger) {
-+ ret = platform->pcm_ops->trigger(substream, cmd);
-+ if (ret < 0)
-+ return ret;
-+ }
-+
-+ if (rtd->cpu_dai->ops.trigger) {
-+ ret = rtd->cpu_dai->ops.trigger(substream, cmd);
-+ if (ret < 0)
-+ return ret;
-+ }
-+ return 0;
-+}
-+
-+/* ASoC PCM operations */
-+static struct snd_pcm_ops soc_pcm_ops = {
-+ .open = soc_pcm_open,
-+ .close = soc_codec_close,
-+ .hw_params = soc_pcm_hw_params,
-+ .hw_free = soc_pcm_hw_free,
-+ .prepare = soc_pcm_prepare,
-+ .trigger = soc_pcm_trigger,
-+};
-+
-+#ifdef CONFIG_PM
-+/* powers down audio subsystem for suspend */
-+static int soc_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_machine *machine = socdev->machine;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+
-+ /* mute any active DAC's */
-+ for(i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_codec_dai *dai = machine->dai_link[i].codec_dai;
-+ if (dai->digital_mute && dai->playback.active)
-+ dai->digital_mute(codec, dai, 1);
-+ }
-+
-+ if (machine->suspend_pre)
-+ machine->suspend_pre(pdev, state);
-+
-+ for(i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->suspend && cpu_dai->type != SND_SOC_DAI_AC97)
-+ cpu_dai->suspend(pdev, cpu_dai);
-+ if (platform->suspend)
-+ platform->suspend(pdev, cpu_dai);
-+ }
-+
-+ /* close any waiting streams and save state */
-+ flush_workqueue(soc_workq);
-+ codec->suspend_dapm_state = codec->dapm_state;
-+
-+ for(i = 0; i < codec->num_dai; i++) {
-+ char *stream = codec->dai[i].playback.stream_name;
-+ if (stream != NULL)
-+ snd_soc_dapm_stream_event(codec, stream,
-+ SND_SOC_DAPM_STREAM_SUSPEND);
-+ stream = codec->dai[i].capture.stream_name;
-+ if (stream != NULL)
-+ snd_soc_dapm_stream_event(codec, stream,
-+ SND_SOC_DAPM_STREAM_SUSPEND);
-+ }
-+
-+ if (codec_dev->suspend)
-+ codec_dev->suspend(pdev, state);
-+
-+ for(i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->suspend && cpu_dai->type == SND_SOC_DAI_AC97)
-+ cpu_dai->suspend(pdev, cpu_dai);
-+ }
-+
-+ if (machine->suspend_post)
-+ machine->suspend_post(pdev, state);
-+
-+ return 0;
-+}
-+
-+/* powers up audio subsystem after a suspend */
-+static int soc_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_machine *machine = socdev->machine;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+
-+ if (machine->resume_pre)
-+ machine->resume_pre(pdev);
-+
-+ for(i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->resume && cpu_dai->type == SND_SOC_DAI_AC97)
-+ cpu_dai->resume(pdev, cpu_dai);
-+ }
-+
-+ if (codec_dev->resume)
-+ codec_dev->resume(pdev);
-+
-+ for(i = 0; i < codec->num_dai; i++) {
-+ char* stream = codec->dai[i].playback.stream_name;
-+ if (stream != NULL)
-+ snd_soc_dapm_stream_event(codec, stream,
-+ SND_SOC_DAPM_STREAM_RESUME);
-+ stream = codec->dai[i].capture.stream_name;
-+ if (stream != NULL)
-+ snd_soc_dapm_stream_event(codec, stream,
-+ SND_SOC_DAPM_STREAM_RESUME);
-+ }
-+
-+ /* unmute any active DAC's */
-+ for(i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_codec_dai *dai = machine->dai_link[i].codec_dai;
-+ if (dai->digital_mute && dai->playback.active)
-+ dai->digital_mute(codec, dai, 0);
-+ }
-+
-+ for(i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->resume && cpu_dai->type != SND_SOC_DAI_AC97)
-+ cpu_dai->resume(pdev, cpu_dai);
-+ if (platform->resume)
-+ platform->resume(pdev, cpu_dai);
-+ }
-+
-+ if (machine->resume_post)
-+ machine->resume_post(pdev);
-+
-+ return 0;
-+}
-+
-+#else
-+#define soc_suspend NULL
-+#define soc_resume NULL
-+#endif
-+
-+/* probes a new socdev */
-+static int soc_probe(struct platform_device *pdev)
-+{
-+ int ret = 0, i;
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_machine *machine = socdev->machine;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
-+
-+ if (machine->probe) {
-+ ret = machine->probe(pdev);
-+ if(ret < 0)
-+ return ret;
-+ }
-+
-+ for (i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->probe) {
-+ ret = cpu_dai->probe(pdev);
-+ if(ret < 0)
-+ goto cpu_dai_err;
-+ }
-+ }
-+
-+ if (codec_dev->probe) {
-+ ret = codec_dev->probe(pdev);
-+ if(ret < 0)
-+ goto cpu_dai_err;
-+ }
-+
-+ if (platform->probe) {
-+ ret = platform->probe(pdev);
-+ if(ret < 0)
-+ goto platform_err;
-+ }
-+
-+ /* DAPM stream work */
-+ soc_workq = create_workqueue("kdapm");
-+ if (soc_workq == NULL)
-+ goto work_err;
-+ INIT_WORK(&soc_stream_work, close_delayed_work, socdev);
-+ return 0;
-+
-+work_err:
-+ if (platform->remove)
-+ platform->remove(pdev);
-+
-+platform_err:
-+ if (codec_dev->remove)
-+ codec_dev->remove(pdev);
-+
-+cpu_dai_err:
-+ for (i--; i > 0; i--) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->remove)
-+ cpu_dai->remove(pdev);
-+ }
-+
-+ if (machine->remove)
-+ machine->remove(pdev);
-+
-+ return ret;
-+}
-+
-+/* removes a socdev */
-+static int soc_remove(struct platform_device *pdev)
-+{
-+ int i;
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_machine *machine = socdev->machine;
-+ struct snd_soc_platform *platform = socdev->platform;
-+ struct snd_soc_codec_device *codec_dev = socdev->codec_dev;
-+
-+ if (soc_workq)
-+ destroy_workqueue(soc_workq);
-+
-+ if (platform->remove)
-+ platform->remove(pdev);
-+
-+ if (codec_dev->remove)
-+ codec_dev->remove(pdev);
-+
-+ for (i = 0; i < machine->num_links; i++) {
-+ struct snd_soc_cpu_dai *cpu_dai = machine->dai_link[i].cpu_dai;
-+ if (cpu_dai->remove)
-+ cpu_dai->remove(pdev);
-+ }
-+
-+ if (machine->remove)
-+ machine->remove(pdev);
-+
-+ return 0;
-+}
-+
-+/* ASoC platform driver */
-+static struct platform_driver soc_driver = {
-+ .driver = {
-+ .name = "soc-audio",
-+ },
-+ .probe = soc_probe,
-+ .remove = soc_remove,
-+ .suspend = soc_suspend,
-+ .resume = soc_resume,
-+};
-+
-+/* create a new pcm */
-+static int soc_new_pcm(struct snd_soc_device *socdev,
-+ struct snd_soc_dai_link *dai_link, int num)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_codec_dai *codec_dai = dai_link->codec_dai;
-+ struct snd_soc_cpu_dai *cpu_dai = dai_link->cpu_dai;
-+ struct snd_soc_pcm_runtime *rtd;
-+ struct snd_pcm *pcm;
-+ char new_name[64];
-+ int ret = 0, playback = 0, capture = 0;
-+
-+ rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime), GFP_KERNEL);
-+ if (rtd == NULL)
-+ return -ENOMEM;
-+ rtd->cpu_dai = cpu_dai;
-+ rtd->codec_dai = codec_dai;
-+ rtd->socdev = socdev;
-+
-+ /* check client and interface hw capabilities */
-+ sprintf(new_name, "%s %s-%s-%d",dai_link->stream_name, codec_dai->name,
-+ get_dai_name(cpu_dai->type), num);
-+
-+ if (codec_dai->playback.channels_min)
-+ playback = 1;
-+ if (codec_dai->capture.channels_min)
-+ capture = 1;
-+
-+ ret = snd_pcm_new(codec->card, new_name, codec->pcm_devs++, playback,
-+ capture, &pcm);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't create pcm for codec %s\n", codec->name);
-+ kfree(rtd);
-+ return ret;
-+ }
-+
-+ pcm->private_data = rtd;
-+ soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
-+ soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;
-+ soc_pcm_ops.ioctl = socdev->platform->pcm_ops->ioctl;
-+ soc_pcm_ops.copy = socdev->platform->pcm_ops->copy;
-+ soc_pcm_ops.silence = socdev->platform->pcm_ops->silence;
-+ soc_pcm_ops.ack = socdev->platform->pcm_ops->ack;
-+ soc_pcm_ops.page = socdev->platform->pcm_ops->page;
-+
-+ if (playback)
-+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops);
-+
-+ if (capture)
-+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops);
-+
-+ ret = socdev->platform->pcm_new(codec->card, codec_dai, pcm);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: platform pcm constructor failed\n");
-+ kfree(rtd);
-+ return ret;
-+ }
-+
-+ pcm->private_free = socdev->platform->pcm_free;
-+ printk(KERN_INFO "asoc: %s <-> %s mapping ok\n", codec_dai->name,
-+ cpu_dai->name);
-+ return ret;
-+}
-+
-+/* codec register dump */
-+static ssize_t codec_reg_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
-+{
-+ struct snd_soc_device *devdata = dev_get_drvdata(dev);
-+ struct snd_soc_codec *codec = devdata->codec;
-+ int i, step = 1, count = 0;
-+
-+ if (!codec->reg_cache_size)
-+ return 0;
-+
-+ if (codec->reg_cache_step)
-+ step = codec->reg_cache_step;
-+
-+ count += sprintf(buf, "%s registers\n", codec->name);
-+ for(i = 0; i < codec->reg_cache_size; i += step)
-+ count += sprintf(buf + count, "%2x: %4x\n", i, codec->read(codec, i));
-+
-+ return count;
-+}
-+static DEVICE_ATTR(codec_reg, 0444, codec_reg_show, NULL);
-+
-+/**
-+ * snd_soc_new_ac97_codec - initailise AC97 device
-+ * @codec: audio codec
-+ * @ops: AC97 bus operations
-+ * @num: AC97 codec number
-+ *
-+ * Initialises AC97 codec resources for use by ad-hoc devices only.
-+ */
-+int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
-+ struct snd_ac97_bus_ops *ops, int num)
-+{
-+ mutex_lock(&codec->mutex);
-+
-+ codec->ac97 = kzalloc(sizeof(struct snd_ac97), GFP_KERNEL);
-+ if (codec->ac97 == NULL) {
-+ mutex_unlock(&codec->mutex);
-+ return -ENOMEM;
-+ }
-+
-+ codec->ac97->bus = kzalloc(sizeof(struct snd_ac97_bus), GFP_KERNEL);
-+ if (codec->ac97->bus == NULL) {
-+ kfree(codec->ac97);
-+ codec->ac97 = NULL;
-+ mutex_unlock(&codec->mutex);
-+ return -ENOMEM;
-+ }
-+
-+ codec->ac97->bus->ops = ops;
-+ codec->ac97->num = num;
-+ mutex_unlock(&codec->mutex);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_new_ac97_codec);
-+
-+/**
-+ * snd_soc_free_ac97_codec - free AC97 codec device
-+ * @codec: audio codec
-+ *
-+ * Frees AC97 codec device resources.
-+ */
-+void snd_soc_free_ac97_codec(struct snd_soc_codec *codec)
-+{
-+ mutex_lock(&codec->mutex);
-+ kfree(codec->ac97->bus);
-+ kfree(codec->ac97);
-+ codec->ac97 = NULL;
-+ mutex_unlock(&codec->mutex);
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_free_ac97_codec);
-+
-+/**
-+ * snd_soc_update_bits - update codec register bits
-+ * @codec: audio codec
-+ * @reg: codec register
-+ * @mask: register mask
-+ * @value: new value
-+ *
-+ * Writes new register value.
-+ *
-+ * Returns 1 for change else 0.
-+ */
-+int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg,
-+ unsigned short mask, unsigned short value)
-+{
-+ int change;
-+ unsigned short old, new;
-+
-+ mutex_lock(&io_mutex);
-+ old = snd_soc_read(codec, reg);
-+ new = (old & ~mask) | value;
-+ change = old != new;
-+ if (change)
-+ snd_soc_write(codec, reg, new);
-+
-+ mutex_unlock(&io_mutex);
-+ return change;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_update_bits);
-+
-+/**
-+ * snd_soc_test_bits - test register for change
-+ * @codec: audio codec
-+ * @reg: codec register
-+ * @mask: register mask
-+ * @value: new value
-+ *
-+ * Tests a register with a new value and checks if the new value is
-+ * different from the old value.
-+ *
-+ * Returns 1 for change else 0.
-+ */
-+int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg,
-+ unsigned short mask, unsigned short value)
-+{
-+ int change;
-+ unsigned short old, new;
-+
-+ mutex_lock(&io_mutex);
-+ old = snd_soc_read(codec, reg);
-+ new = (old & ~mask) | value;
-+ change = old != new;
-+ mutex_unlock(&io_mutex);
-+
-+ return change;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_test_bits);
-+
-+/**
-+ * snd_soc_get_rate - get int sample rate
-+ * @hwpcmrate: the hardware pcm rate
-+ *
-+ * Returns the audio rate integaer value, else 0.
-+ */
-+int snd_soc_get_rate(int hwpcmrate)
-+{
-+ int rate = ffs(hwpcmrate) - 1;
-+
-+ if (rate > ARRAY_SIZE(rates))
-+ return 0;
-+ return rates[rate];
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_get_rate);
-+
-+/**
-+ * snd_soc_new_pcms - create new sound card and pcms
-+ * @socdev: the SoC audio device
-+ *
-+ * Create a new sound card based upon the codec and interface pcms.
-+ *
-+ * Returns 0 for success, else error.
-+ */
-+int snd_soc_new_pcms(struct snd_soc_device *socdev, int idx, const char * xid)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_machine *machine = socdev->machine;
-+ int ret = 0, i;
-+
-+ mutex_lock(&codec->mutex);
-+
-+ /* register a sound card */
-+ codec->card = snd_card_new(idx, xid, codec->owner, 0);
-+ if (!codec->card) {
-+ printk(KERN_ERR "asoc: can't create sound card for codec %s\n",
-+ codec->name);
-+ mutex_unlock(&codec->mutex);
-+ return -ENODEV;
-+ }
-+
-+ codec->card->dev = socdev->dev;
-+ codec->card->private_data = codec;
-+ strncpy(codec->card->driver, codec->name, sizeof(codec->card->driver));
-+
-+ /* create the pcms */
-+ for(i = 0; i < machine->num_links; i++) {
-+ ret = soc_new_pcm(socdev, &machine->dai_link[i], i);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: can't create pcm %s\n",
-+ machine->dai_link[i].stream_name);
-+ mutex_unlock(&codec->mutex);
-+ return ret;
-+ }
-+ }
-+
-+ mutex_unlock(&codec->mutex);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_new_pcms);
-+
-+/**
-+ * snd_soc_register_card - register sound card
-+ * @socdev: the SoC audio device
-+ *
-+ * Register a SoC sound card. Also registers an AC97 device if the
-+ * codec is AC97 for ad hoc devices.
-+ *
-+ * Returns 0 for success, else error.
-+ */
-+int snd_soc_register_card(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_machine *machine = socdev->machine;
-+ int ret = 0, i, ac97 = 0, err = 0;
-+
-+ mutex_lock(&codec->mutex);
-+ for(i = 0; i < machine->num_links; i++) {
-+ if (socdev->machine->dai_link[i].init) {
-+ err = socdev->machine->dai_link[i].init(codec);
-+ if (err < 0) {
-+ printk(KERN_ERR "asoc: failed to init %s\n",
-+ socdev->machine->dai_link[i].stream_name);
-+ continue;
-+ }
-+ }
-+ if (socdev->machine->dai_link[i].cpu_dai->type == SND_SOC_DAI_AC97)
-+ ac97 = 1;
-+ }
-+ snprintf(codec->card->shortname, sizeof(codec->card->shortname),
-+ "%s", machine->name);
-+ snprintf(codec->card->longname, sizeof(codec->card->longname),
-+ "%s (%s)", machine->name, codec->name);
-+
-+ ret = snd_card_register(codec->card);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: failed to register soundcard for codec %s\n",
-+ codec->name);
-+ goto out;
-+ }
-+
-+#ifdef CONFIG_SND_SOC_AC97_BUS
-+ if (ac97) {
-+ ret = soc_ac97_dev_register(codec);
-+ if (ret < 0) {
-+ printk(KERN_ERR "asoc: AC97 device register failed\n");
-+ snd_card_free(codec->card);
-+ goto out;
-+ }
-+ }
-+#endif
-+
-+ err = snd_soc_dapm_sys_add(socdev->dev);
-+ if (err < 0)
-+ printk(KERN_WARNING "asoc: failed to add dapm sysfs entries\n");
-+
-+ err = device_create_file(socdev->dev, &dev_attr_codec_reg);
-+ if (err < 0)
-+ printk(KERN_WARNING "asoc: failed to add codec sysfs entries\n");
-+out:
-+ mutex_unlock(&codec->mutex);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_register_card);
-+
-+/**
-+ * snd_soc_free_pcms - free sound card and pcms
-+ * @socdev: the SoC audio device
-+ *
-+ * Frees sound card and pcms associated with the socdev.
-+ * Also unregister the codec if it is an AC97 device.
-+ */
-+void snd_soc_free_pcms(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ mutex_lock(&codec->mutex);
-+#ifdef CONFIG_SND_SOC_AC97_BUS
-+ if (codec->ac97)
-+ soc_ac97_dev_unregister(codec);
-+#endif
-+
-+ if (codec->card)
-+ snd_card_free(codec->card);
-+ device_remove_file(socdev->dev, &dev_attr_codec_reg);
-+ mutex_unlock(&codec->mutex);
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_free_pcms);
-+
-+/**
-+ * snd_soc_set_runtime_hwparams - set the runtime hardware parameters
-+ * @substream: the pcm substream
-+ * @hw: the hardware parameters
-+ *
-+ * Sets the substream runtime hardware parameters.
-+ */
-+int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream,
-+ const struct snd_pcm_hardware *hw)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ runtime->hw.info = hw->info;
-+ runtime->hw.formats = hw->formats;
-+ runtime->hw.period_bytes_min = hw->period_bytes_min;
-+ runtime->hw.period_bytes_max = hw->period_bytes_max;
-+ runtime->hw.periods_min = hw->periods_min;
-+ runtime->hw.periods_max = hw->periods_max;
-+ runtime->hw.buffer_bytes_max = hw->buffer_bytes_max;
-+ runtime->hw.fifo_size = hw->fifo_size;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_set_runtime_hwparams);
-+
-+/**
-+ * snd_soc_cnew - create new control
-+ * @_template: control template
-+ * @data: control private data
-+ * @lnng_name: control long name
-+ *
-+ * Create a new mixer control from a template control.
-+ *
-+ * Returns 0 for success, else error.
-+ */
-+struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template,
-+ void *data, char *long_name)
-+{
-+ struct snd_kcontrol_new template;
-+
-+ memcpy(&template, _template, sizeof(template));
-+ if (long_name)
-+ template.name = long_name;
-+ template.access = SNDRV_CTL_ELEM_ACCESS_READWRITE;
-+ template.index = 0;
-+
-+ return snd_ctl_new1(&template, data);
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_cnew);
-+
-+/**
-+ * snd_soc_info_enum_double - enumerated double mixer info callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to provide information about a double enumerated
-+ * mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_info_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = e->shift_l == e->shift_r ? 1 : 2;
-+ uinfo->value.enumerated.items = e->mask;
-+
-+ if (uinfo->value.enumerated.item > e->mask - 1)
-+ uinfo->value.enumerated.item = e->mask - 1;
-+ strcpy(uinfo->value.enumerated.name,
-+ e->texts[uinfo->value.enumerated.item]);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_info_enum_double);
-+
-+/**
-+ * snd_soc_get_enum_double - enumerated double mixer get callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to get the value of a double enumerated mixer.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+ unsigned short val, bitmask;
-+
-+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
-+ ;
-+ val = snd_soc_read(codec, e->reg);
-+ ucontrol->value.enumerated.item[0] = (val >> e->shift_l) & (bitmask - 1);
-+ if (e->shift_l != e->shift_r)
-+ ucontrol->value.enumerated.item[1] =
-+ (val >> e->shift_r) & (bitmask - 1);
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_get_enum_double);
-+
-+/**
-+ * snd_soc_put_enum_double - enumerated double mixer put callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to set the value of a double enumerated mixer.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+ unsigned short val;
-+ unsigned short mask, bitmask;
-+
-+ for (bitmask = 1; bitmask < e->mask; bitmask <<= 1)
-+ ;
-+ if (ucontrol->value.enumerated.item[0] > e->mask - 1)
-+ return -EINVAL;
-+ val = ucontrol->value.enumerated.item[0] << e->shift_l;
-+ mask = (bitmask - 1) << e->shift_l;
-+ if (e->shift_l != e->shift_r) {
-+ if (ucontrol->value.enumerated.item[1] > e->mask - 1)
-+ return -EINVAL;
-+ val |= ucontrol->value.enumerated.item[1] << e->shift_r;
-+ mask |= (bitmask - 1) << e->shift_r;
-+ }
-+
-+ return snd_soc_update_bits(codec, e->reg, mask, val);
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_put_enum_double);
-+
-+/**
-+ * snd_soc_info_enum_ext - external enumerated single mixer info callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to provide information about an external enumerated
-+ * single mixer.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_info_enum_ext(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-+
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
-+ uinfo->count = 1;
-+ uinfo->value.enumerated.items = e->mask;
-+
-+ if (uinfo->value.enumerated.item > e->mask - 1)
-+ uinfo->value.enumerated.item = e->mask - 1;
-+ strcpy(uinfo->value.enumerated.name,
-+ e->texts[uinfo->value.enumerated.item]);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_info_enum_ext);
-+
-+/**
-+ * snd_soc_info_volsw_ext - external single mixer info callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to provide information about a single external mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_info_volsw_ext(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int mask = kcontrol->private_value;
-+
-+ uinfo->type =
-+ mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
-+ uinfo->count = 1;
-+ uinfo->value.integer.min = 0;
-+ uinfo->value.integer.max = mask;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_info_volsw_ext);
-+
-+/**
-+ * snd_soc_info_bool_ext - external single boolean mixer info callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to provide information about a single boolean external mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_info_bool_ext(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
-+ uinfo->count = 1;
-+ uinfo->value.integer.min = 0;
-+ uinfo->value.integer.max = 1;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_info_bool_ext);
-+
-+/**
-+ * snd_soc_info_volsw - single mixer info callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to provide information about a single mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_info_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int mask = (kcontrol->private_value >> 16) & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int rshift = (kcontrol->private_value >> 12) & 0x0f;
-+
-+ uinfo->type =
-+ mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
-+ uinfo->count = shift == rshift ? 1 : 2;
-+ uinfo->value.integer.min = 0;
-+ uinfo->value.integer.max = mask;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_info_volsw);
-+
-+/**
-+ * snd_soc_get_volsw - single mixer get callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to get the value of a single mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_get_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ int reg = kcontrol->private_value & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int rshift = (kcontrol->private_value >> 12) & 0x0f;
-+ int mask = (kcontrol->private_value >> 16) & 0xff;
-+ int invert = (kcontrol->private_value >> 24) & 0x01;
-+
-+ ucontrol->value.integer.value[0] =
-+ (snd_soc_read(codec, reg) >> shift) & mask;
-+ if (shift != rshift)
-+ ucontrol->value.integer.value[1] =
-+ (snd_soc_read(codec, reg) >> rshift) & mask;
-+ if (invert) {
-+ ucontrol->value.integer.value[0] =
-+ mask - ucontrol->value.integer.value[0];
-+ if (shift != rshift)
-+ ucontrol->value.integer.value[1] =
-+ mask - ucontrol->value.integer.value[1];
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_get_volsw);
-+
-+/**
-+ * snd_soc_put_volsw - single mixer put callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to set the value of a single mixer control.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_put_volsw(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ int reg = kcontrol->private_value & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int rshift = (kcontrol->private_value >> 12) & 0x0f;
-+ int mask = (kcontrol->private_value >> 16) & 0xff;
-+ int invert = (kcontrol->private_value >> 24) & 0x01;
-+ int err;
-+ unsigned short val, val2, val_mask;
-+
-+ val = (ucontrol->value.integer.value[0] & mask);
-+ if (invert)
-+ val = mask - val;
-+ val_mask = mask << shift;
-+ val = val << shift;
-+ if (shift != rshift) {
-+ val2 = (ucontrol->value.integer.value[1] & mask);
-+ if (invert)
-+ val2 = mask - val2;
-+ val_mask |= mask << rshift;
-+ val |= val2 << rshift;
-+ }
-+ err = snd_soc_update_bits(codec, reg, val_mask, val);
-+ return err;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_put_volsw);
-+
-+/**
-+ * snd_soc_info_volsw_2r - double mixer info callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to provide information about a double mixer control that
-+ * spans 2 codec registers.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_info_volsw_2r(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_info *uinfo)
-+{
-+ int mask = (kcontrol->private_value >> 12) & 0xff;
-+
-+ uinfo->type =
-+ mask == 1 ? SNDRV_CTL_ELEM_TYPE_BOOLEAN : SNDRV_CTL_ELEM_TYPE_INTEGER;
-+ uinfo->count = 2;
-+ uinfo->value.integer.min = 0;
-+ uinfo->value.integer.max = mask;
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_info_volsw_2r);
-+
-+/**
-+ * snd_soc_get_volsw_2r - double mixer get callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to get the value of a double mixer control that spans 2 registers.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_get_volsw_2r(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ int reg = kcontrol->private_value & 0xff;
-+ int reg2 = (kcontrol->private_value >> 24) & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int mask = (kcontrol->private_value >> 12) & 0xff;
-+ int invert = (kcontrol->private_value >> 20) & 0x01;
-+
-+ ucontrol->value.integer.value[0] =
-+ (snd_soc_read(codec, reg) >> shift) & mask;
-+ ucontrol->value.integer.value[1] =
-+ (snd_soc_read(codec, reg2) >> shift) & mask;
-+ if (invert) {
-+ ucontrol->value.integer.value[0] =
-+ mask - ucontrol->value.integer.value[0];
-+ ucontrol->value.integer.value[1] =
-+ mask - ucontrol->value.integer.value[1];
-+ }
-+
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_get_volsw_2r);
-+
-+/**
-+ * snd_soc_put_volsw_2r - double mixer set callback
-+ * @kcontrol: mixer control
-+ * @uinfo: control element information
-+ *
-+ * Callback to set the value of a double mixer control that spans 2 registers.
-+ *
-+ * Returns 0 for success.
-+ */
-+int snd_soc_put_volsw_2r(struct snd_kcontrol *kcontrol,
-+ struct snd_ctl_elem_value *ucontrol)
-+{
-+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
-+ int reg = kcontrol->private_value & 0xff;
-+ int reg2 = (kcontrol->private_value >> 24) & 0xff;
-+ int shift = (kcontrol->private_value >> 8) & 0x0f;
-+ int mask = (kcontrol->private_value >> 12) & 0xff;
-+ int invert = (kcontrol->private_value >> 20) & 0x01;
-+ int err;
-+ unsigned short val, val2, val_mask;
-+
-+ val_mask = mask << shift;
-+ val = (ucontrol->value.integer.value[0] & mask);
-+ val2 = (ucontrol->value.integer.value[1] & mask);
-+
-+ if (invert) {
-+ val = mask - val;
-+ val2 = mask - val2;
-+ }
-+
-+ val = val << shift;
-+ val2 = val2 << shift;
-+
-+ if ((err = snd_soc_update_bits(codec, reg, val_mask, val)) < 0)
-+ return err;
-+
-+ err = snd_soc_update_bits(codec, reg2, val_mask, val2);
-+ return err;
-+}
-+EXPORT_SYMBOL_GPL(snd_soc_put_volsw_2r);
-+
-+static int __devinit snd_soc_init(void)
-+{
-+ printk(KERN_INFO "ASoC version %s\n", SND_SOC_VERSION);
-+ return platform_driver_register(&soc_driver);
-+}
-+
-+static void snd_soc_exit(void)
-+{
-+ platform_driver_unregister(&soc_driver);
-+}
-+
-+module_init(snd_soc_init);
-+module_exit(snd_soc_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("ALSA SoC Core");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/at91/Kconfig
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/at91/Kconfig
-@@ -0,0 +1,24 @@
-+menu "SoC Audio for the Atmel AT91"
-+
-+config SND_AT91_SOC
-+ tristate "SoC Audio for the Atmel AT91 System-on-Chip"
-+ depends on ARCH_AT91 && SND
-+ select SND_PCM
-+ help
-+ Say Y or M if you want to add support for codecs attached to
-+ the AT91 SSC interface. You will also need
-+ to select the audio interfaces to support below.
-+
-+config SND_AT91_SOC_I2S
-+ tristate
-+
-+config SND_AT91_SOC_ETI_B1_WM8731
-+ tristate "SoC I2S Audio support for Endrelia ETI-B1 board"
-+ depends on SND_AT91_SOC && MACH_ETI_B1
-+ select SND_AT91_SOC_I2S
-+ select SND_SOC_WM8731
-+ help
-+ Say Y if you want to add support for SoC audio on Endrelia
-+ ETI-B1 board.
-+
-+endmenu
-Index: linux-2.6-pxa-new/sound/soc/at91/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/at91/Makefile
-@@ -0,0 +1,11 @@
-+# AT91 Platform Support
-+snd-soc-at91-objs := at91rm9200-pcm.o
-+snd-soc-at91-i2s-objs := at91rm9200-i2s.o
-+
-+obj-$(CONFIG_SND_AT91_SOC) += snd-soc-at91.o
-+obj-$(CONFIG_SND_AT91_SOC_I2S) += snd-soc-at91-i2s.o
-+
-+# AT91 Machine Support
-+snd-soc-eti-b1-wm8731-objs := eti_b1_wm8731.o
-+
-+obj-$(CONFIG_SND_AT91_SOC_ETI_B1_WM8731) += snd-soc-eti-b1-wm8731.o
-Index: linux-2.6-pxa-new/sound/soc/at91/at91rm9200-i2s.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/at91/at91rm9200-i2s.c
-@@ -0,0 +1,715 @@
-+/*
-+ * at91rm9200-i2s.c -- ALSA Soc Audio Layer Platform driver and DMA engine
-+ *
-+ * Author: Frank Mandarino <fmandarino@endrelia.com>
-+ * Endrelia Technologies Inc.
-+ *
-+ * Based on pxa2xx Platform drivers by
-+ * Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 3rd Mar 2006 Initial version.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/interrupt.h>
-+#include <linux/device.h>
-+#include <linux/delay.h>
-+#include <linux/clk.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+
-+#include <asm/arch/at91rm9200.h>
-+#include <asm/arch/at91rm9200_ssc.h>
-+#include <asm/arch/at91rm9200_pdc.h>
-+#include <asm/arch/hardware.h>
-+
-+#include "at91rm9200-pcm.h"
-+
-+#if 0
-+#define DBG(x...) printk(KERN_DEBUG "at91rm9200-i2s:" x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+#define AT91RM9200_I2S_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_NB_NF)
-+
-+#define AT91RM9200_I2S_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+/* priv is (SSC_CMR.DIV << 16 | SSC_TCMR.PERIOD ) */
-+static struct snd_soc_dai_mode at91rm9200_i2s[] = {
-+
-+ /* 8k: BCLK = (MCLK/10) = (60MHz/50) = 1.2MHz */
-+ {
-+ .fmt = AT91RM9200_I2S_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = AT91RM9200_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1500,
-+ .bfs = SND_SOC_FSBD(10),
-+ .priv = (25 << 16 | 74),
-+ },
-+
-+ /* 16k: BCLK = (MCLK/3) ~= (60MHz/14) = 4.285714MHz */
-+ {
-+ .fmt = AT91RM9200_I2S_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_16000,
-+ .pcmdir = AT91RM9200_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 750,
-+ .bfs = SND_SOC_FSBD(3),
-+ .priv = (7 << 16 | 133),
-+ },
-+
-+ /* 32k: BCLK = (MCLK/3) ~= (60MHz/14) = 4.285714MHz */
-+ {
-+ .fmt = AT91RM9200_I2S_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = AT91RM9200_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 375,
-+ .bfs = SND_SOC_FSBD(3),
-+ .priv = (7 << 16 | 66),
-+ },
-+
-+ /* 48k: BCLK = (MCLK/5) ~= (60MHz/26) = 2.3076923MHz */
-+ {
-+ .fmt = AT91RM9200_I2S_DAIFMT,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = AT91RM9200_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 250,
-+ .bfs SND_SOC_FSBD(5),
-+ .priv = (13 << 16 | 23),
-+ },
-+};
-+
-+
-+/*
-+ * SSC registers required by the PCM DMA engine.
-+ */
-+static struct at91rm9200_ssc_regs ssc_reg[3] = {
-+ {
-+ .cr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_SSC_CR),
-+ .ier = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_SSC_IER),
-+ .idr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_SSC_IDR),
-+ },
-+ {
-+ .cr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_SSC_CR),
-+ .ier = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_SSC_IER),
-+ .idr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_SSC_IDR),
-+ },
-+ {
-+ .cr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_SSC_CR),
-+ .ier = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_SSC_IER),
-+ .idr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_SSC_IDR),
-+ },
-+};
-+
-+static struct at91rm9200_pdc_regs pdc_tx_reg[3] = {
-+ {
-+ .xpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TPR),
-+ .xcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TCR),
-+ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TNPR),
-+ .xncr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_TNCR),
-+ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_PTCR),
-+ },
-+ {
-+ .xpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TPR),
-+ .xcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TCR),
-+ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TNPR),
-+ .xncr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_TNCR),
-+ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_PTCR),
-+ },
-+ {
-+ .xpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TPR),
-+ .xcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TCR),
-+ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TNPR),
-+ .xncr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_TNCR),
-+ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_PTCR),
-+ },
-+};
-+
-+static struct at91rm9200_pdc_regs pdc_rx_reg[3] = {
-+ {
-+ .xpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RPR),
-+ .xcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RCR),
-+ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RNPR),
-+ .xncr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_RNCR),
-+ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC0 + AT91_PDC_PTCR),
-+ },
-+ {
-+ .xpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RPR),
-+ .xcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RCR),
-+ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RNPR),
-+ .xncr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_RNCR),
-+ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC1 + AT91_PDC_PTCR),
-+ },
-+ {
-+ .xpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RPR),
-+ .xcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RCR),
-+ .xnpr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RNPR),
-+ .xncr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_RNCR),
-+ .ptcr = (void __iomem *) (AT91_VA_BASE_SSC2 + AT91_PDC_PTCR),
-+ },
-+};
-+
-+/*
-+ * SSC & PDC status bits for transmit and receive.
-+ */
-+static struct at91rm9200_ssc_mask ssc_tx_mask = {
-+ .ssc_enable = AT91_SSC_TXEN,
-+ .ssc_disable = AT91_SSC_TXDIS,
-+ .ssc_endx = AT91_SSC_ENDTX,
-+ .ssc_endbuf = AT91_SSC_TXBUFE,
-+ .pdc_enable = AT91_PDC_TXTEN,
-+ .pdc_disable = AT91_PDC_TXTDIS,
-+};
-+
-+static struct at91rm9200_ssc_mask ssc_rx_mask = {
-+ .ssc_enable = AT91_SSC_RXEN,
-+ .ssc_disable = AT91_SSC_RXDIS,
-+ .ssc_endx = AT91_SSC_ENDRX,
-+ .ssc_endbuf = AT91_SSC_RXBUFF,
-+ .pdc_enable = AT91_PDC_RXTEN,
-+ .pdc_disable = AT91_PDC_RXTDIS,
-+};
-+
-+/*
-+ * A MUTEX is used to protect an SSC initialzed flag which allows
-+ * the substream hw_params() call to initialize the SSC only if
-+ * there are no other substreams open. If there are other
-+ * substreams open, the hw_param() call can only check that
-+ * it is using the same format and rate.
-+ */
-+static DECLARE_MUTEX(ssc0_mutex);
-+static DECLARE_MUTEX(ssc1_mutex);
-+static DECLARE_MUTEX(ssc2_mutex);
-+
-+/*
-+ * DMA parameters.
-+ */
-+static at91rm9200_pcm_dma_params_t ssc_dma_params[3][2] = {
-+ {{
-+ .name = "SSC0/I2S PCM Stereo out",
-+ .ssc = &ssc_reg[0],
-+ .pdc = &pdc_tx_reg[0],
-+ .mask = &ssc_tx_mask,
-+ },
-+ {
-+ .name = "SSC0/I2S PCM Stereo in",
-+ .ssc = &ssc_reg[0],
-+ .pdc = &pdc_rx_reg[0],
-+ .mask = &ssc_rx_mask,
-+ }},
-+ {{
-+ .name = "SSC1/I2S PCM Stereo out",
-+ .ssc = &ssc_reg[1],
-+ .pdc = &pdc_tx_reg[1],
-+ .mask = &ssc_tx_mask,
-+ },
-+ {
-+ .name = "SSC1/I2S PCM Stereo in",
-+ .ssc = &ssc_reg[1],
-+ .pdc = &pdc_rx_reg[1],
-+ .mask = &ssc_rx_mask,
-+ }},
-+ {{
-+ .name = "SSC2/I2S PCM Stereo out",
-+ .ssc = &ssc_reg[2],
-+ .pdc = &pdc_tx_reg[2],
-+ .mask = &ssc_tx_mask,
-+ },
-+ {
-+ .name = "SSC1/I2S PCM Stereo in",
-+ .ssc = &ssc_reg[2],
-+ .pdc = &pdc_rx_reg[2],
-+ .mask = &ssc_rx_mask,
-+ }},
-+};
-+
-+
-+struct at91rm9200_ssc_state {
-+ u32 ssc_cmr;
-+ u32 ssc_rcmr;
-+ u32 ssc_rfmr;
-+ u32 ssc_tcmr;
-+ u32 ssc_tfmr;
-+ u32 ssc_sr;
-+ u32 ssc_imr;
-+};
-+
-+static struct at91rm9200_ssc_info {
-+ char *name;
-+ void __iomem *ssc_base;
-+ u32 pid;
-+ spinlock_t lock; /* lock for dir_mask */
-+ int dir_mask; /* 0=unused, 1=playback, 2=capture */
-+ struct semaphore *mutex;
-+ int initialized;
-+ int pcmfmt;
-+ int rate;
-+ at91rm9200_pcm_dma_params_t *dma_params[2];
-+ struct at91rm9200_ssc_state ssc_state;
-+
-+} ssc_info[3] = {
-+ {
-+ .name = "ssc0",
-+ .ssc_base = (void __iomem *) AT91_VA_BASE_SSC0,
-+ .pid = AT91_ID_SSC0,
-+ .lock = SPIN_LOCK_UNLOCKED,
-+ .dir_mask = 0,
-+ .mutex = &ssc0_mutex,
-+ .initialized = 0,
-+ },
-+ {
-+ .name = "ssc1",
-+ .ssc_base = (void __iomem *) AT91_VA_BASE_SSC1,
-+ .pid = AT91_ID_SSC1,
-+ .lock = SPIN_LOCK_UNLOCKED,
-+ .dir_mask = 0,
-+ .mutex = &ssc1_mutex,
-+ .initialized = 0,
-+ },
-+ {
-+ .name = "ssc2",
-+ .ssc_base = (void __iomem *) AT91_VA_BASE_SSC2,
-+ .pid = AT91_ID_SSC2,
-+ .lock = SPIN_LOCK_UNLOCKED,
-+ .dir_mask = 0,
-+ .mutex = &ssc2_mutex,
-+ .initialized = 0,
-+ },
-+};
-+
-+
-+static irqreturn_t at91rm9200_i2s_interrupt(int irq, void *dev_id)
-+{
-+ struct at91rm9200_ssc_info *ssc_p = dev_id;
-+ at91rm9200_pcm_dma_params_t *dma_params;
-+ u32 ssc_sr;
-+ int i;
-+
-+ ssc_sr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR)
-+ & at91_ssc_read(ssc_p->ssc_base + AT91_SSC_IMR);
-+
-+ /*
-+ * Loop through the substreams attached to this SSC. If
-+ * a DMA-related interrupt occurred on that substream, call
-+ * the DMA interrupt handler function, if one has been
-+ * registered in the dma_params structure by the PCM driver.
-+ */
-+ for (i = 0; i < ARRAY_SIZE(ssc_p->dma_params); i++) {
-+ dma_params = ssc_p->dma_params[i];
-+
-+ if (dma_params != NULL && dma_params->dma_intr_handler != NULL &&
-+ (ssc_sr &
-+ (dma_params->mask->ssc_endx | dma_params->mask->ssc_endbuf)))
-+
-+ dma_params->dma_intr_handler(ssc_sr, dma_params->substream);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int at91rm9200_i2s_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct at91rm9200_ssc_info *ssc_p = &ssc_info[rtd->cpu_dai->id];
-+ int dir_mask;
-+
-+ DBG("i2s_startup: SSC_SR=0x%08lx\n",
-+ at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR));
-+ dir_mask = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0x1 : 0x2;
-+
-+ spin_lock_irq(&ssc_p->lock);
-+ if (ssc_p->dir_mask & dir_mask) {
-+ spin_unlock_irq(&ssc_p->lock);
-+ return -EBUSY;
-+ }
-+ ssc_p->dir_mask |= dir_mask;
-+ spin_unlock_irq(&ssc_p->lock);
-+
-+ return 0;
-+}
-+
-+static void at91rm9200_i2s_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct at91rm9200_ssc_info *ssc_p = &ssc_info[rtd->cpu_dai->id];
-+ at91rm9200_pcm_dma_params_t *dma_params = rtd->cpu_dai->dma_data;
-+ int dir, dir_mask;
-+
-+ dir = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
-+
-+ if (dma_params != NULL) {
-+ at91_ssc_write(dma_params->ssc->cr, dma_params->mask->ssc_disable);
-+ DBG("%s disabled SSC_SR=0x%08lx\n", (dir ? "receive" : "transmit"),
-+ at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR));
-+
-+ dma_params->substream = NULL;
-+ ssc_p->dma_params[dir] = NULL;
-+ }
-+
-+ dir_mask = 1 << dir;
-+
-+ spin_lock_irq(&ssc_p->lock);
-+ ssc_p->dir_mask &= ~dir_mask;
-+ if (!ssc_p->dir_mask) {
-+ /* Shutdown the SSC clock. */
-+ DBG("Stopping pid %d clock\n", ssc_p->pid);
-+ at91_sys_write(AT91_PMC_PCDR, 1<<ssc_p->pid);
-+
-+ if (ssc_p->initialized)
-+ free_irq(ssc_p->pid, ssc_p);
-+
-+ /* Reset the SSC */
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CR, AT91_SSC_SWRST);
-+
-+ /* Force a re-init on the next hw_params() call. */
-+ ssc_p->initialized = 0;
-+ }
-+ spin_unlock_irq(&ssc_p->lock);
-+}
-+
-+#ifdef CONFIG_PM
-+static int at91rm9200_i2s_suspend(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ struct at91rm9200_ssc_info *ssc_p;
-+
-+ if(!dai->active)
-+ return 0;
-+
-+ ssc_p = &ssc_info[dai->id];
-+
-+ /* Save the status register before disabling transmit and receive. */
-+ ssc_p->state->ssc_sr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_SR);
-+ at91_ssc_write(ssc_p->ssc_base +
-+ AT91_SSC_CR, AT91_SSC_TXDIS | AT91_SSC_RXDIS);
-+
-+ /* Save the current interrupt mask, then disable unmasked interrupts. */
-+ ssc_p->state->ssc_imr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_IMR);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_IDR, ssc_p->state->ssc_imr);
-+
-+ ssc_p->state->ssc_cmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_CMR);
-+ ssc_p->state->ssc_rcmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
-+ ssc_p->state->ssc_rfmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
-+ ssc_p->state->ssc_tcmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
-+ ssc_p->state->ssc_tfmr = at91_ssc_read(ssc_p->ssc_base + AT91_SSC_RCMR);
-+
-+ return 0;
-+}
-+
-+static int at91rm9200_i2s_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ struct at91rm9200_ssc_info *ssc_p;
-+ u32 cr_mask;
-+
-+ if(!dai->active)
-+ return 0;
-+
-+ ssc_p = &ssc_info[dai->id];
-+
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_tfmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_tcmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_rfmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, ssc_p->state->ssc_rcmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CMR, ssc_p->state->ssc_cmr);
-+
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_IER, ssc_p->state->ssc_imr);
-+
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CR,
-+ ((ssc_p->state->ssc_sr & AT91_SSC_RXENA) ? AT91_SSC_RXEN : 0) |
-+ ((ssc_p->state->ssc_sr & AT91_SSC_TXENA) ? AT91_SSC_TXEN : 0));
-+
-+ return 0;
-+}
-+
-+#else
-+#define at91rm9200_i2s_suspend NULL
-+#define at91rm9200_i2s_resume NULL
-+#endif
-+
-+static unsigned int at91rm9200_i2s_config_sysclk(
-+ struct snd_soc_cpu_dai *iface, struct snd_soc_clock_info *info,
-+ unsigned int clk)
-+{
-+ /* Currently, there is only support for USB (12Mhz) mode */
-+ if (clk != 12000000)
-+ return 0;
-+ return 12000000;
-+}
-+
-+static int at91rm9200_i2s_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ int id = rtd->cpu_dai->id;
-+ struct at91rm9200_ssc_info *ssc_p = &ssc_info[id];
-+ at91rm9200_pcm_dma_params_t *dma_params;
-+ unsigned int pcmfmt, rate;
-+ int dir, channels, bits;
-+ struct clk *mck_clk;
-+ unsigned long bclk;
-+ u32 div, period, tfmr, rfmr, tcmr, rcmr;
-+ int ret;
-+
-+ /*
-+ * Currently, there is only one set of dma params for
-+ * each direction. If more are added, this code will
-+ * have to be changed to select the proper set.
-+ */
-+ dir = substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 0 : 1;
-+
-+ dma_params = &ssc_dma_params[id][dir];
-+ dma_params->substream = substream;
-+
-+ ssc_p->dma_params[dir] = dma_params;
-+ rtd->cpu_dai->dma_data = dma_params;
-+
-+ rate = params_rate(params);
-+ channels = params_channels(params);
-+
-+ pcmfmt = rtd->cpu_dai->dai_runtime.pcmfmt;
-+ switch (pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ /* likely this is all we'll ever support, but ... */
-+ bits = 16;
-+ dma_params->pdc_xfer_size = 2;
-+ break;
-+ default:
-+ printk(KERN_WARNING "at91rm9200-i2s: unsupported format %x\n",
-+ pcmfmt);
-+ return -EINVAL;
-+ }
-+
-+ /* Don't allow both SSC substreams to initialize at the same time. */
-+ down(ssc_p->mutex);
-+
-+ /*
-+ * If this SSC is alreadly initialized, then this substream must use
-+ * the same format and rate.
-+ */
-+ if (ssc_p->initialized) {
-+ if (pcmfmt != ssc_p->pcmfmt || rate != ssc_p->rate) {
-+ printk(KERN_WARNING "at91rm9200-i2s: "
-+ "incompatible substream in other direction\n");
-+ up(ssc_p->mutex);
-+ return -EINVAL;
-+ }
-+ } else {
-+ /* Enable PMC peripheral clock for this SSC */
-+ DBG("Starting pid %d clock\n", ssc_p->pid);
-+ at91_sys_write(AT91_PMC_PCER, 1<<ssc_p->pid);
-+
-+ /* Reset the SSC */
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CR, AT91_SSC_SWRST);
-+
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RPR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RCR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RNPR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_RNCR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TPR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TCR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TNPR, 0);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_PDC_TNCR, 0);
-+
-+ mck_clk = clk_get(NULL, "mck");
-+
-+ div = rtd->cpu_dai->dai_runtime.priv >> 16;
-+ period = rtd->cpu_dai->dai_runtime.priv & 0xffff;
-+ bclk = 60000000 / (2 * div);
-+
-+ DBG("mck %ld fsbd %d bfs %d bfs_real %d bclk %ld div %d period %d\n",
-+ clk_get_rate(mck_clk),
-+ SND_SOC_FSBD(6),
-+ rtd->cpu_dai->dai_runtime.bfs,
-+ SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs),
-+ bclk,
-+ div,
-+ period);
-+
-+ clk_put(mck_clk);
-+
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_CMR, div);
-+
-+ /*
-+ * Setup the TFMR and RFMR for the proper data format.
-+ */
-+ tfmr =
-+ (( AT91_SSC_FSEDGE_POSITIVE ) & AT91_SSC_FSEDGE)
-+ | (( 0 << 23) & AT91_SSC_FSDEN)
-+ | (( AT91_SSC_FSOS_NEGATIVE ) & AT91_SSC_FSOS)
-+ | (((bits - 1) << 16) & AT91_SSC_FSLEN)
-+ | (((channels - 1) << 8) & AT91_SSC_DATNB)
-+ | (( 1 << 7) & AT91_SSC_MSBF)
-+ | (( 0 << 5) & AT91_SSC_DATDEF)
-+ | (((bits - 1) << 0) & AT91_SSC_DATALEN);
-+ DBG("SSC_TFMR=0x%08x\n", tfmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_TFMR, tfmr);
-+
-+ rfmr =
-+ (( AT91_SSC_FSEDGE_POSITIVE ) & AT91_SSC_FSEDGE)
-+ | (( AT91_SSC_FSOS_NONE ) & AT91_SSC_FSOS)
-+ | (( 0 << 16) & AT91_SSC_FSLEN)
-+ | (((channels - 1) << 8) & AT91_SSC_DATNB)
-+ | (( 1 << 7) & AT91_SSC_MSBF)
-+ | (( 0 << 5) & AT91_SSC_LOOP)
-+ | (((bits - 1) << 0) & AT91_SSC_DATALEN);
-+
-+ DBG("SSC_RFMR=0x%08x\n", rfmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RFMR, rfmr);
-+
-+ /*
-+ * Setup the TCMR and RCMR to generate the proper BCLK
-+ * and LRC signals.
-+ */
-+ tcmr =
-+ (( period << 24) & AT91_SSC_PERIOD)
-+ | (( 1 << 16) & AT91_SSC_STTDLY)
-+ | (( AT91_SSC_START_FALLING_RF ) & AT91_SSC_START)
-+ | (( AT91_SSC_CKI_FALLING ) & AT91_SSC_CKI)
-+ | (( AT91_SSC_CKO_CONTINUOUS ) & AT91_SSC_CKO)
-+ | (( AT91_SSC_CKS_DIV ) & AT91_SSC_CKS);
-+
-+ DBG("SSC_TCMR=0x%08x\n", tcmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_TCMR, tcmr);
-+
-+ rcmr =
-+ (( 0 << 24) & AT91_SSC_PERIOD)
-+ | (( 1 << 16) & AT91_SSC_STTDLY)
-+ | (( AT91_SSC_START_TX_RX ) & AT91_SSC_START)
-+ | (( AT91_SSC_CK_RISING ) & AT91_SSC_CKI)
-+ | (( AT91_SSC_CKO_NONE ) & AT91_SSC_CKO)
-+ | (( AT91_SSC_CKS_CLOCK ) & AT91_SSC_CKS);
-+
-+ DBG("SSC_RCMR=0x%08x\n", rcmr);
-+ at91_ssc_write(ssc_p->ssc_base + AT91_SSC_RCMR, rcmr);
-+
-+ if ((ret = request_irq(ssc_p->pid, at91rm9200_i2s_interrupt,
-+ 0, ssc_p->name, ssc_p)) < 0) {
-+ printk(KERN_WARNING "at91rm9200-i2s: request_irq failure\n");
-+ return ret;
-+ }
-+
-+ /*
-+ * Save the current substream parameters in order to check
-+ * that the substream in the opposite direction uses the
-+ * same parameters.
-+ */
-+ ssc_p->pcmfmt = pcmfmt;
-+ ssc_p->rate = rate;
-+ ssc_p->initialized = 1;
-+
-+ DBG("hw_params: SSC initialized\n");
-+ }
-+
-+ up(ssc_p->mutex);
-+
-+ return 0;
-+}
-+
-+
-+static int at91rm9200_i2s_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ at91rm9200_pcm_dma_params_t *dma_params = rtd->cpu_dai->dma_data;
-+
-+ at91_ssc_write(dma_params->ssc->cr, dma_params->mask->ssc_enable);
-+
-+ DBG("%s enabled SSC_SR=0x%08lx\n",
-+ substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? "transmit" : "receive",
-+ at91_ssc_read(ssc_info[rtd->cpu_dai->id].ssc_base + AT91_SSC_SR));
-+ return 0;
-+}
-+
-+
-+struct snd_soc_cpu_dai at91rm9200_i2s_dai[] = {
-+ { .name = "at91rm9200-ssc0/i2s",
-+ .id = 0,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = at91rm9200_i2s_suspend,
-+ .resume = at91rm9200_i2s_resume,
-+ .config_sysclk = at91rm9200_i2s_config_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = at91rm9200_i2s_startup,
-+ .shutdown = at91rm9200_i2s_shutdown,
-+ .prepare = at91rm9200_i2s_prepare,
-+ .hw_params = at91rm9200_i2s_hw_params,},
-+ .caps = {
-+ .mode = &at91rm9200_i2s[0],
-+ .num_modes = ARRAY_SIZE(at91rm9200_i2s),},
-+ },
-+ { .name = "at91rm9200-ssc1/i2s",
-+ .id = 1,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = at91rm9200_i2s_suspend,
-+ .resume = at91rm9200_i2s_resume,
-+ .config_sysclk = at91rm9200_i2s_config_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = at91rm9200_i2s_startup,
-+ .shutdown = at91rm9200_i2s_shutdown,
-+ .prepare = at91rm9200_i2s_prepare,
-+ .hw_params = at91rm9200_i2s_hw_params,},
-+ .caps = {
-+ .mode = &at91rm9200_i2s[0],
-+ .num_modes = ARRAY_SIZE(at91rm9200_i2s),},
-+ },
-+ { .name = "at91rm9200-ssc2/i2s",
-+ .id = 2,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = at91rm9200_i2s_suspend,
-+ .resume = at91rm9200_i2s_resume,
-+ .config_sysclk = at91rm9200_i2s_config_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = at91rm9200_i2s_startup,
-+ .shutdown = at91rm9200_i2s_shutdown,
-+ .prepare = at91rm9200_i2s_prepare,
-+ .hw_params = at91rm9200_i2s_hw_params,},
-+ .caps = {
-+ .mode = &at91rm9200_i2s[0],
-+ .num_modes = ARRAY_SIZE(at91rm9200_i2s),},
-+ },
-+};
-+
-+EXPORT_SYMBOL_GPL(at91rm9200_i2s_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Frank Mandarino, fmandarino@endrelia.com, www.endrelia.com");
-+MODULE_DESCRIPTION("AT91RM9200 I2S ASoC Interface");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.c
-@@ -0,0 +1,428 @@
-+/*
-+ * at91rm9200-pcm.c -- ALSA PCM interface for the Atmel AT91RM9200 chip.
-+ *
-+ * Author: Frank Mandarino <fmandarino@endrelia.com>
-+ * Endrelia Technologies Inc.
-+ * Created: Mar 3, 2006
-+ *
-+ * Based on pxa2xx-pcm.c by:
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Nov 30, 2004
-+ * Copyright: (C) 2004 MontaVista Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/dma-mapping.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+
-+#include <asm/arch/at91rm9200.h>
-+#include <asm/arch/at91rm9200_ssc.h>
-+#include <asm/arch/at91rm9200_pdc.h>
-+#include <asm/arch/hardware.h>
-+
-+#include "at91rm9200-pcm.h"
-+
-+#if 0
-+#define DBG(x...) printk(KERN_INFO "at91rm9200-pcm: " x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+static const snd_pcm_hardware_t at91rm9200_pcm_hardware = {
-+ .info = SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_PAUSE,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
-+ .period_bytes_min = 32,
-+ .period_bytes_max = 8192,
-+ .periods_min = 2,
-+ .periods_max = 1024,
-+ .buffer_bytes_max = 32 * 1024,
-+};
-+
-+struct at91rm9200_runtime_data {
-+ at91rm9200_pcm_dma_params_t *params;
-+ dma_addr_t dma_buffer; /* physical address of dma buffer */
-+ dma_addr_t dma_buffer_end; /* first address beyond DMA buffer */
-+ size_t period_size;
-+ dma_addr_t period_ptr; /* physical address of next period */
-+ u32 pdc_xpr_save; /* PDC register save */
-+ u32 pdc_xcr_save;
-+ u32 pdc_xnpr_save;
-+ u32 pdc_xncr_save;
-+};
-+
-+static void at91rm9200_pcm_dma_irq(u32 ssc_sr,
-+ struct snd_pcm_substream *substream)
-+{
-+ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
-+ at91rm9200_pcm_dma_params_t *params = prtd->params;
-+ static int count = 0;
-+
-+ count++;
-+
-+ if (ssc_sr & params->mask->ssc_endbuf) {
-+
-+ printk(KERN_WARNING
-+ "at91rm9200-pcm: buffer %s on %s (SSC_SR=%#x, count=%d)\n",
-+ substream->stream == SNDRV_PCM_STREAM_PLAYBACK
-+ ? "underrun" : "overrun",
-+ params->name, ssc_sr, count);
-+
-+ /* re-start the PDC */
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
-+
-+ prtd->period_ptr += prtd->period_size;
-+ if (prtd->period_ptr >= prtd->dma_buffer_end) {
-+ prtd->period_ptr = prtd->dma_buffer;
-+ }
-+
-+ at91_ssc_write(params->pdc->xpr, prtd->period_ptr);
-+ at91_ssc_write(params->pdc->xcr,
-+ prtd->period_size / params->pdc_xfer_size);
-+
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
-+ }
-+
-+ if (ssc_sr & params->mask->ssc_endx) {
-+
-+ /* Load the PDC next pointer and counter registers */
-+ prtd->period_ptr += prtd->period_size;
-+ if (prtd->period_ptr >= prtd->dma_buffer_end) {
-+ prtd->period_ptr = prtd->dma_buffer;
-+ }
-+ at91_ssc_write(params->pdc->xnpr, prtd->period_ptr);
-+ at91_ssc_write(params->pdc->xncr,
-+ prtd->period_size / params->pdc_xfer_size);
-+ }
-+
-+ snd_pcm_period_elapsed(substream);
-+}
-+
-+static int at91rm9200_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ snd_pcm_runtime_t *runtime = substream->runtime;
-+ struct at91rm9200_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ /* this may get called several times by oss emulation
-+ * with different params */
-+
-+ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-+ runtime->dma_bytes = params_buffer_bytes(params);
-+
-+ prtd->params = rtd->cpu_dai->dma_data;
-+ prtd->params->dma_intr_handler = at91rm9200_pcm_dma_irq;
-+
-+ prtd->dma_buffer = runtime->dma_addr;
-+ prtd->dma_buffer_end = runtime->dma_addr + runtime->dma_bytes;
-+ prtd->period_size = params_period_bytes(params);
-+
-+ DBG("hw_params: DMA for %s initialized (dma_bytes=%d, period_size=%d)\n",
-+ prtd->params->name, runtime->dma_bytes, prtd->period_size);
-+ return 0;
-+}
-+
-+static int at91rm9200_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
-+ at91rm9200_pcm_dma_params_t *params = prtd->params;
-+
-+ if (params != NULL) {
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
-+ prtd->params->dma_intr_handler = NULL;
-+ }
-+
-+ return 0;
-+}
-+
-+static int at91rm9200_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
-+ at91rm9200_pcm_dma_params_t *params = prtd->params;
-+
-+ at91_ssc_write(params->ssc->idr,
-+ params->mask->ssc_endx | params->mask->ssc_endbuf);
-+
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
-+ return 0;
-+}
-+
-+static int at91rm9200_pcm_trigger(struct snd_pcm_substream *substream,
-+ int cmd)
-+{
-+ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
-+ at91rm9200_pcm_dma_params_t *params = prtd->params;
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ prtd->period_ptr = prtd->dma_buffer;
-+
-+ at91_ssc_write(params->pdc->xpr, prtd->period_ptr);
-+ at91_ssc_write(params->pdc->xcr,
-+ prtd->period_size / params->pdc_xfer_size);
-+
-+ prtd->period_ptr += prtd->period_size;
-+ at91_ssc_write(params->pdc->xnpr, prtd->period_ptr);
-+ at91_ssc_write(params->pdc->xncr,
-+ prtd->period_size / params->pdc_xfer_size);
-+
-+ DBG("trigger: period_ptr=%lx, xpr=%lx, xcr=%ld, xnpr=%lx, xncr=%ld\n",
-+ (unsigned long) prtd->period_ptr,
-+ at91_ssc_read(params->pdc->xpr),
-+ at91_ssc_read(params->pdc->xcr),
-+ at91_ssc_read(params->pdc->xnpr),
-+ at91_ssc_read(params->pdc->xncr));
-+
-+ at91_ssc_write(params->ssc->ier,
-+ params->mask->ssc_endx | params->mask->ssc_endbuf);
-+
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
-+
-+ DBG("sr=%lx imr=%lx\n", at91_ssc_read(params->ssc->ier - 4),
-+ at91_ssc_read(params->ssc->ier + 8));
-+ break;
-+
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
-+ break;
-+
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
-+ break;
-+
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static snd_pcm_uframes_t at91rm9200_pcm_pointer(
-+ struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct at91rm9200_runtime_data *prtd = runtime->private_data;
-+ at91rm9200_pcm_dma_params_t *params = prtd->params;
-+ dma_addr_t ptr;
-+ snd_pcm_uframes_t x;
-+
-+ ptr = (dma_addr_t) at91_ssc_read(params->pdc->xpr);
-+ x = bytes_to_frames(runtime, ptr - prtd->dma_buffer);
-+
-+ if (x == runtime->buffer_size)
-+ x = 0;
-+ return x;
-+}
-+
-+static int at91rm9200_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct at91rm9200_runtime_data *prtd;
-+ int ret = 0;
-+
-+ snd_soc_set_runtime_hwparams(substream, &at91rm9200_pcm_hardware);
-+
-+ /* ensure that buffer size is a multiple of period size */
-+ ret = snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS);
-+ if (ret < 0)
-+ goto out;
-+
-+ prtd = kzalloc(sizeof(struct at91rm9200_runtime_data), GFP_KERNEL);
-+ if (prtd == NULL) {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
-+ runtime->private_data = prtd;
-+
-+ out:
-+ return ret;
-+}
-+
-+static int at91rm9200_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct at91rm9200_runtime_data *prtd = substream->runtime->private_data;
-+
-+ kfree(prtd);
-+ return 0;
-+}
-+
-+static int at91rm9200_pcm_mmap(struct snd_pcm_substream *substream,
-+ struct vm_area_struct *vma)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+
-+ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-+ runtime->dma_area,
-+ runtime->dma_addr,
-+ runtime->dma_bytes);
-+}
-+
-+struct snd_pcm_ops at91rm9200_pcm_ops = {
-+ .open = at91rm9200_pcm_open,
-+ .close = at91rm9200_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = at91rm9200_pcm_hw_params,
-+ .hw_free = at91rm9200_pcm_hw_free,
-+ .prepare = at91rm9200_pcm_prepare,
-+ .trigger = at91rm9200_pcm_trigger,
-+ .pointer = at91rm9200_pcm_pointer,
-+ .mmap = at91rm9200_pcm_mmap,
-+};
-+
-+static int at91rm9200_pcm_preallocate_dma_buffer(struct snd_pcm *pcm,
-+ int stream)
-+{
-+ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
-+ struct snd_dma_buffer *buf = &substream->dma_buffer;
-+ size_t size = at91rm9200_pcm_hardware.buffer_bytes_max;
-+
-+ buf->dev.type = SNDRV_DMA_TYPE_DEV;
-+ buf->dev.dev = pcm->card->dev;
-+ buf->private_data = NULL;
-+ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
-+ &buf->addr, GFP_KERNEL);
-+
-+ DBG("preallocate_dma_buffer: area=%p, addr=%p, size=%d\n",
-+ (void *) buf->area,
-+ (void *) buf->addr,
-+ size);
-+
-+ if (!buf->area)
-+ return -ENOMEM;
-+
-+ buf->bytes = size;
-+ return 0;
-+}
-+
-+static u64 at91rm9200_pcm_dmamask = 0xffffffff;
-+
-+static int at91rm9200_pcm_new(struct snd_card *card,
-+ struct snd_soc_codec_dai *dai, struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &at91rm9200_pcm_dmamask;
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = 0xffffffff;
-+
-+ if (dai->playback.channels_min) {
-+ ret = at91rm9200_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto out;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = at91rm9200_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto out;
-+ }
-+ out:
-+ return ret;
-+}
-+
-+static void at91rm9200_pcm_free_dma_buffers(struct snd_pcm *pcm)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_dma_buffer *buf;
-+ int stream;
-+
-+ for (stream = 0; stream < 2; stream++) {
-+ substream = pcm->streams[stream].substream;
-+ if (!substream)
-+ continue;
-+
-+ buf = &substream->dma_buffer;
-+ if (!buf->area)
-+ continue;
-+
-+ dma_free_writecombine(pcm->card->dev, buf->bytes,
-+ buf->area, buf->addr);
-+ buf->area = NULL;
-+ }
-+}
-+
-+static int at91rm9200_pcm_suspend(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ struct snd_pcm_runtime *runtime = dai->runtime;
-+ struct at91rm9200_runtime_data *prtd;
-+ at91rm9200_pcm_dma_params_t *params;
-+
-+ if (!runtime)
-+ return 0;
-+
-+ prtd = runtime->private_data;
-+ params = prtd->params;
-+
-+ /* disable the PDC and save the PDC registers */
-+
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_disable);
-+
-+ prtd->pdc_xpr_save = at91_ssc_read(params->pdc->xpr);
-+ prtd->pdc_xcr_save = at91_ssc_read(params->pdc->xcr);
-+ prtd->pdc_xnpr_save = at91_ssc_read(params->pdc->xnpr);
-+ prtd->pdc_xncr_save = at91_ssc_read(params->pdc->xncr);
-+
-+ return 0;
-+}
-+
-+static int at91rm9200_pcm_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ struct snd_pcm_runtime *runtime = dai->runtime;
-+ struct at91rm9200_runtime_data *prtd;
-+ at91rm9200_pcm_dma_params_t *params;
-+
-+ if (!runtime)
-+ return 0;
-+
-+ prtd = runtime->private_data;
-+ params = prtd->params;
-+
-+ /* restore the PDC registers and enable the PDC */
-+ at91_ssc_write(params->pdc->xpr, prtd->pdc_xpr_save);
-+ at91_ssc_write(params->pdc->xcr, prtd->pdc_xcr_save);
-+ at91_ssc_write(params->pdc->xnpr, prtd->pdc_xnpr_save);
-+ at91_ssc_write(params->pdc->xncr, prtd->pdc_xncr_save);
-+
-+ at91_ssc_write(params->pdc->ptcr, params->mask->pdc_enable);
-+ return 0;
-+}
-+
-+struct snd_soc_platform at91rm9200_soc_platform = {
-+ .name = "at91rm9200-audio",
-+ .pcm_ops = &at91rm9200_pcm_ops,
-+ .pcm_new = at91rm9200_pcm_new,
-+ .pcm_free = at91rm9200_pcm_free_dma_buffers,
-+ .suspend = at91rm9200_pcm_suspend,
-+ .resume = at91rm9200_pcm_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(at91rm9200_soc_platform);
-+
-+MODULE_AUTHOR("Frank Mandarino <fmandarino@endrelia.com>");
-+MODULE_DESCRIPTION("Atmel AT91RM9200 PCM module");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/at91/at91rm9200-pcm.h
-@@ -0,0 +1,75 @@
-+/*
-+ * at91rm9200-pcm.h - ALSA PCM interface for the Atmel AT91RM9200 chip
-+ *
-+ * Author: Frank Mandarino <fmandarino@endrelia.com>
-+ * Endrelia Technologies Inc.
-+ * Created: Mar 3, 2006
-+ *
-+ * Based on pxa2xx-pcm.h by:
-+ *
-+ * Author: Nicolas Pitre
-+ * Created: Nov 30, 2004
-+ * Copyright: MontaVista Software, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+/*
-+ * Registers and status bits that are required by the PCM driver.
-+ */
-+struct at91rm9200_ssc_regs {
-+ void __iomem *cr; /* SSC control */
-+ void __iomem *ier; /* SSC interrupt enable */
-+ void __iomem *idr; /* SSC interrupt disable */
-+};
-+
-+struct at91rm9200_pdc_regs {
-+ void __iomem *xpr; /* PDC recv/trans pointer */
-+ void __iomem *xcr; /* PDC recv/trans counter */
-+ void __iomem *xnpr; /* PDC next recv/trans pointer */
-+ void __iomem *xncr; /* PDC next recv/trans counter */
-+ void __iomem *ptcr; /* PDC transfer control */
-+};
-+
-+struct at91rm9200_ssc_mask {
-+ u32 ssc_enable; /* SSC recv/trans enable */
-+ u32 ssc_disable; /* SSC recv/trans disable */
-+ u32 ssc_endx; /* SSC ENDTX or ENDRX */
-+ u32 ssc_endbuf; /* SSC TXBUFE or RXBUFF */
-+ u32 pdc_enable; /* PDC recv/trans enable */
-+ u32 pdc_disable; /* PDC recv/trans disable */
-+};
-+
-+
-+/*
-+ * This structure, shared between the PCM driver and the interface,
-+ * contains all information required by the PCM driver to perform the
-+ * PDC DMA operation. All fields except dma_intr_handler() are initialized
-+ * by the interface. The dms_intr_handler() pointer is set by the PCM
-+ * driver and called by the interface SSC interrupt handler if it is
-+ * non-NULL.
-+ */
-+typedef struct {
-+ char *name; /* stream identifier */
-+ int pdc_xfer_size; /* PDC counter increment in bytes */
-+ struct at91rm9200_ssc_regs *ssc; /* SSC register addresses */
-+ struct at91rm9200_pdc_regs *pdc; /* PDC receive/transmit registers */
-+ struct at91rm9200_ssc_mask *mask;/* SSC & PDC status bits */
-+ snd_pcm_substream_t *substream;
-+ void (*dma_intr_handler)(u32, snd_pcm_substream_t *);
-+} at91rm9200_pcm_dma_params_t;
-+
-+extern struct snd_soc_cpu_dai at91rm9200_i2s_dai[3];
-+extern struct snd_soc_platform at91rm9200_soc_platform;
-+
-+
-+/*
-+ * SSC I/O helpers.
-+ * E.g., at91_ssc_write(AT91_SSC(1) + AT91_SSC_CR, AT91_SSC_RXEN);
-+ */
-+#define AT91_SSC(x) (((x)==0) ? AT91_VA_BASE_SSC0 :\
-+ ((x)==1) ? AT91_VA_BASE_SSC1 : ((x)==2) ? AT91_VA_BASE_SSC2 : NULL)
-+#define at91_ssc_read(a) ((unsigned long) __raw_readl(a))
-+#define at91_ssc_write(a,v) __raw_writel((v),(a))
-Index: linux-2.6-pxa-new/sound/soc/imx/imx-ssi.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx-ssi.c
-@@ -0,0 +1,452 @@
-+/*
-+ * imx-ssi.c -- SSI driver for Freescale IMX
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Based on mxc-alsa-mc13783 (C) 2006 Freescale.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 29th Aug 2006 Initial version.
-+ *
-+ */
-+
-+#define IMX_DSP_DAIFMT \
-+ ( SND_SOC_DAIFMT_DSP__A |SND_SOC_DAIFMT_DSP_B | \
-+ SND_SOC_DAIFMT_CBS_CFS |SND_SOC_DAIFMT_CBM_CFS | \
-+ SND_SOC_DAIFMT_CBS_CFM |SND_SOC_DAIFMT_NB_NF |\
-+ SND_SOC_DAIFMT_NB_IF)
-+
-+#define IMX_DSP_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define IMX_DSP_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | \
-+ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \
-+ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | \
-+ SNDRV_PCM_RATE_96000)
-+
-+#define IMX_DSP_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE)
-+
-+static struct snd_soc_dai_mode imx_dsp_pcm_modes[] = {
-+
-+ /* frame master and clock slave mode */
-+ {IMX_DSP_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
-+ SND_SOC_DAITDM_LRDW(0,0), IMX_DSP_BITS, IMX_DSP_RATES,
-+ IMX_DSP_DIR, 0, SND_SOC_FS_ALL,
-+ SND_SOC_FSB(32) | SND_SOC_FSB(32) | SND_SOC_FSB(16)},
-+
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_out = {
-+ .name = "SSI1 PCM Stereo out",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = emi_2_per,
-+ .watermark_level = SDMA_TXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI1_STX0,
-+ .event_id = DMA_REQ_SSI1_TX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_in = {
-+ .name = "SSI1 PCM Stereo in",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_RXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI1_SRX0,
-+ .event_id = DMA_REQ_SSI1_RX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_out = {
-+ .name = "SSI2 PCM Stereo out",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_TXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI2_STX0,
-+ .event_id = DMA_REQ_SSI2_TX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_in = {
-+ .name = "SSI2 PCM Stereo in",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_RXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI2_SRX0,
-+ .event_id = DMA_REQ_SSI2_RX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static int imx_dsp_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (!rtd->cpu_dai->active) {
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static int imx_ssi1_hw_tx_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 bfs, div;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
-+
-+ SSI1_STCR = 0;
-+ SSI1_STCCR = 0;
-+
-+ /* DAI mode */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_DSP_B:
-+ SSI1_STCR |= SSI_STCR_TEFS; // data 1 bit after sync
-+ case SND_SOC_DAIFMT_DSP_A:
-+ SSI1_STCR |= SSI_STCR_TFSL; // frame is 1 bclk long
-+ break;
-+ }
-+
-+ /* DAI clock inversion */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ SSI1_STCR |= SSI_STCR_TFSI | SSI_STCR_TSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ SSI1_STCR |= SSI_STCR_TSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ SSI1_STCR |= SSI_STCR_TFSI;
-+ break;
-+ }
-+
-+ /* DAI data (word) size */
-+ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ SSI1_STCCR |= SSI_STCCR_WL(16);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ SSI1_STCCR |= SSI_STCCR_WL(20);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ SSI1_STCCR |= SSI_STCCR_WL(24);
-+ break;
-+ }
-+
-+ /* DAI clock master masks */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ SSI1_STCR |= SSI_STCR_TFDIR | SSI_STCR_TXDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ SSI1_STCR |= SSI_STCR_TFDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ SSI1_STCR |= SSI_STCR_TXDIR;
-+ break;
-+ }
-+
-+ /* DAI BCLK ratio to SYSCLK / MCLK */
-+ /* prescaler modulus - todo */
-+ switch (bfs) {
-+ case 2:
-+ break;
-+ case 4:
-+ break;
-+ case 8:
-+ break;
-+ case 16:
-+ break;
-+ }
-+
-+ /* TDM - todo, only fifo 0 atm */
-+ SSI1_STCR |= SSI_STCR_TFEN0;
-+ SSI1_STCCR |= SSI_STCCR_DC(params_channels(params));
-+
-+ return 0;
-+}
-+
-+static int imx_ssi1_hw_rx_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 bfs, div;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
-+
-+ SSI1_SRCR = 0;
-+ SSI1_SRCCR = 0;
-+
-+ /* DAI mode */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_DSP_B:
-+ SSI1_SRCR |= SSI_SRCR_REFS; // data 1 bit after sync
-+ case SND_SOC_DAIFMT_DSP_A:
-+ SSI1_SRCR |= SSI_SRCR_RFSL; // frame is 1 bclk long
-+ break;
-+ }
-+
-+ /* DAI clock inversion */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ SSI1_SRCR |= SSI_SRCR_TFSI | SSI_SRCR_TSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ SSI1_SRCR |= SSI_SRCR_RSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ SSI1_SRCR |= SSI_SRCR_RFSI;
-+ break;
-+ }
-+
-+ /* DAI data (word) size */
-+ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ SSI1_SRCCR |= SSI_SRCCR_WL(16);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ SSI1_SRCCR |= SSI_SRCCR_WL(20);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ SSI1_SRCCR |= SSI_SRCCR_WL(24);
-+ break;
-+ }
-+
-+ /* DAI clock master masks */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ SSI1_SRCR |= SSI_SRCR_RFDIR | SSI_SRCR_RXDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ SSI1_SRCR |= SSI_SRCR_RFDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ SSI1_SRCR |= SSI_SRCR_RXDIR;
-+ break;
-+ }
-+
-+ /* DAI BCLK ratio to SYSCLK / MCLK */
-+ /* prescaler modulus - todo */
-+ switch (bfs) {
-+ case 2:
-+ break;
-+ case 4:
-+ break;
-+ case 8:
-+ break;
-+ case 16:
-+ break;
-+ }
-+
-+ /* TDM - todo, only fifo 0 atm */
-+ SSI1_SRCR |= SSI_SRCR_RFEN0;
-+ SSI1_SRCCR |= SSI_SRCCR_DC(params_channels(params));
-+
-+ return 0;
-+}
-+
-+static int imx_ssi_dsp_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ /* clear register if not enabled */
-+ if(!(SSI1_SCR & SSI_SCR_SSIEN))
-+ SSI1_SCR = 0;
-+
-+ /* async */
-+ if (rtd->cpu_dai->flags & SND_SOC_DAI_ASYNC)
-+ SSI1_SCR |= SSI_SCR_SYN;
-+
-+ /* DAI mode */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ SSI1_SCR |= SSI_SCR_NET;
-+ break;
-+ }
-+
-+ /* TDM - to complete */
-+
-+ /* Tx/Rx config */
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ return imx_ssi1_dsp_hw_tx_params(substream, params);
-+ } else {
-+ return imx_ssi1_dsp_hw_rx_params(substream, params);
-+ }
-+}
-+
-+
-+
-+static int imx_ssi_dsp_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ SSI1_SCR |= SSI_SCR_TE;
-+ SSI1_SIER |= SSI_SIER_TDMAE;
-+ } else {
-+ SSI1_SCR |= SSI_SCR_RE;
-+ SSI1_SIER |= SSI_SIER_RDMAE;
-+ }
-+ SSI1_SCR |= SSI_SCR_SSIEN;
-+
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSI1_SCR |= SSI_SCR_TE;
-+ else
-+ SSI1_SCR |= SSI_SCR_RE;
-+ break
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSI1_SCR &= ~SSI_SCR_TE;
-+ else
-+ SSI1_SCR &= ~SSI_SCR_RE;
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static void imx_ssi_dsp_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ /* shutdown SSI */
-+ if (!rtd->cpu_dai->active) {
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR &= ~SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR &= ~SSI_SCR_SSIEN;
-+ }
-+}
-+
-+#ifdef CONFIG_PM
-+static int imx_ssi_dsp_suspend(struct platform_device *dev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if(!dai->active)
-+ return 0;
-+
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR &= ~SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR &= ~SSI_SCR_SSIEN;
-+
-+ return 0;
-+}
-+
-+static int imx_ssi_dsp_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if(!dai->active)
-+ return 0;
-+
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR |= SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR |= SSI_SCR_SSIEN;
-+
-+ return 0;
-+}
-+
-+#else
-+#define imx_ssi_dsp_suspend NULL
-+#define imx_ssi_dsp_resume NULL
-+#endif
-+
-+static unsigned int imx_ssi_config_dsp_sysclk(struct snd_soc_cpu_dai *iface,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ return clk;
-+}
-+
-+struct snd_soc_cpu_dai imx_ssi_dsp_dai = {
-+ .name = "imx-dsp-1",
-+ .id = 0,
-+ .type = SND_SOC_DAI_PCM,
-+ .suspend = imx_ssi_dsp_suspend,
-+ .resume = imx_ssi_dsp_resume,
-+ .config_sysclk = imx_ssi_config_dsp_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = imx_ssi_dsp_startup,
-+ .shutdown = imx_ssi_dsp_shutdown,
-+ .trigger = imx_ssi_trigger,
-+ .hw_params = imx_ssi_dsp_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(imx_dsp_modes),
-+ .mode = imx_dsp_modes,},
-+},
-+{
-+ .name = "imx-dsp-2",
-+ .id = 1,
-+ .type = SND_SOC_DAI_PCM,
-+ .suspend = imx_ssi_dsp_suspend,
-+ .resume = imx_ssi_dsp_resume,
-+ .config_sysclk = imx_ssi_config_dsp_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = imx_dsp_startup,
-+ .shutdown = imx_dsp_shutdown,
-+ .trigger = imx_ssi1_trigger,
-+ .hw_params = imx_ssi1_pcm_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(imx_dsp_modes),
-+ .mode = imx_dsp_modes,},
-+};
-+
-+
-+EXPORT_SYMBOL_GPL(imx_ssi_dsp_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("i.MX ASoC SSI driver");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/imx/Kconfig
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/Kconfig
-@@ -0,0 +1,31 @@
-+menu "SoC Audio for the Freescale i.MX"
-+
-+config SND_MXC_SOC
-+ tristate "SoC Audio for the Freescale i.MX CPU"
-+ depends on ARCH_MXC && SND
-+ select SND_PCM
-+ help
-+ Say Y or M if you want to add support for codecs attached to
-+ the MXC AC97, I2S or SSP interface. You will also need
-+ to select the audio interfaces to support below.
-+
-+config SND_MXC_AC97
-+ tristate
-+ select SND_AC97_CODEC
-+
-+config SND_MXC_SOC_AC97
-+ tristate
-+ select SND_AC97_BUS
-+
-+config SND_MXC_SOC_SSI
-+ tristate
-+
-+config SND_MXC_SOC_MX3_WM8753
-+ tristate "SoC Audio support for MX31 - WM8753"
-+ depends on SND_MXC_SOC && ARCH_MX3
-+ select SND_MXC_SOC_SSI
-+ help
-+ Say Y if you want to add support for SoC audio on MX31ADS
-+ with the WM8753.
-+
-+endmenu
-Index: linux-2.6-pxa-new/sound/soc/imx/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/Makefile
-@@ -0,0 +1,18 @@
-+# i.MX Platform Support
-+snd-soc-imx21-objs := imx21-pcm.o
-+snd-soc-imx31-objs := imx31-pcm.o
-+snd-soc-imx-ac97-objs := imx-ac97.o
-+snd-soc-imx-i2s-objs := imx-i2s.o
-+
-+obj-$(CONFIG_SND_MXC_SOC) += snd-soc-imx.o
-+obj-$(CONFIG_SND_MXC_SOC_AC97) += snd-soc-imx-ac97.o
-+obj-$(CONFIG_SND_MXC_SOC_I2S) += snd-soc-imx-i2s.o
-+
-+# i.MX Machine Support
-+snd-soc-mx31ads-wm8753-objs := mx31ads_wm8753.o
-+obj-$(CONFIG_SND_SOC_MX31ADS_WM8753) += snd-soc-mx31ads-wm8753.o
-+snd-soc-mx21ads-wm8753-objs := mx21ads_wm8753.o
-+obj-$(CONFIG_SND_SOC_MX21ADS_WM8753) += snd-soc-mx21ads-wm8753.o
-+snd-soc-mx21ads-wm8731-objs := mx21ads_wm8731.o
-+obj-$(CONFIG_SND_SOC_MX21ADS_WM8731) += snd-soc-mx21ads-wm8731.o
-+
-Index: linux-2.6.17/sound/Makefile
-===================================================================
---- linux-2.6.17.orig/sound/Makefile 2006-06-18 02:49:35.000000000 +0100
-+++ linux-2.6.17/sound/Makefile 2006-07-04 14:04:41.000000000 +0100
-@@ -4,7 +4,7 @@
- obj-$(CONFIG_SOUND) += soundcore.o
- obj-$(CONFIG_SOUND_PRIME) += oss/
- obj-$(CONFIG_DMASOUND) += oss/
--obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
-+obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ soc/
-
- ifeq ($(CONFIG_SND),y)
- obj-y += last.o
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8711.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8711.c
-@@ -0,0 +1,843 @@
-+/*
-+ * wm8711.c -- WM8711 ALSA SoC Audio driver
-+ *
-+ * Copyright 2006 Wolfson Microelectronics
-+ *
-+ * Author: Mike Arthur <linux@wolfsonmicro.com>
-+ *
-+ * Based on wm8711.c by Richard Purdie
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8711.h"
-+
-+#define AUDIO_NAME "wm8711"
-+#define WM8711_VERSION "0.2"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8711_DEBUG 0
-+
-+#ifdef WM8711_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8711;
-+
-+/*
-+ * wm8711 register cache
-+ * We can't read the WM8711 register space when we are
-+ * using 2 wire for device control, so we cache them instead.
-+ * There is no point in caching the reset register
-+ */
-+static const u16 wm8711_reg[WM8711_CACHEREGNUM] = {
-+ 0x0079, 0x0079, 0x000a, 0x0008,
-+ 0x009f, 0x000a, 0x0000, 0x0000
-+};
-+
-+#define WM8711_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8711_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK)
-+
-+#define WM8711_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+#define WM8711_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE | \
-+ SNDRV_PCM_FMTBIT_S32_LE)
-+
-+static struct snd_soc_dai_mode wm8711_modes[] = {
-+ /* codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 1536,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 2304,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 1408,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 2112,
-+ .bfs = 64,
-+ },
-+
-+ /* 32k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_32000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 576,
-+ .bfs = 64,
-+ },
-+
-+ /* 44.1k & 48k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 256,
-+ .bfs = 64,
-+ },
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 64,
-+ },
-+
-+ /* 88.2 & 96k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 128,
-+ .bfs = 64,
-+
-+ },
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 192,
-+ .bfs = 64,
-+ },
-+
-+ /* USB codec frame and clock master modes */
-+ /* 8k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_8000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 1500,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 44.1k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 272,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 48k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_48000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 250,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 88.2k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_88200,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 136,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* 96k */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = SNDRV_PCM_RATE_96000,
-+ .pcmdir = WM8711_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 125,
-+ .bfs = SND_SOC_FSBD(1),
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8711_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8711_HIFI_BITS,
-+ .pcmrate = WM8711_RATES,
-+ .pcmdir = WM8711_DIR,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8711 register cache
-+ */
-+static inline unsigned int wm8711_read_reg_cache(struct snd_soc_codec * codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == WM8711_RESET)
-+ return 0;
-+ if (reg >= WM8711_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8711 register cache
-+ */
-+static inline void wm8711_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= WM8711_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the WM8711 register space
-+ */
-+static int wm8711_write(struct snd_soc_codec * codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8753 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8711_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8711_reset(c) wm8711_write(c, WM8711_RESET, 0)
-+
-+static const struct snd_kcontrol_new wm8711_snd_controls[] = {
-+
-+SOC_DOUBLE_R("Master Playback Volume", WM8711_LOUT1V, WM8711_ROUT1V,
-+ 0, 127, 0),
-+SOC_DOUBLE_R("Master Playback ZC Switch", WM8711_LOUT1V, WM8711_ROUT1V,
-+ 7, 1, 0),
-+
-+};
-+
-+/* add non dapm controls */
-+static int wm8711_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8711_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8711_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Output Mixer */
-+static const snd_kcontrol_new_t wm8711_output_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8711_APANA, 3, 1, 0),
-+SOC_DAPM_SINGLE("HiFi Playback Switch", WM8711_APANA, 4, 1, 0),
-+};
-+
-+static const struct snd_soc_dapm_widget wm8711_dapm_widgets[] = {
-+SND_SOC_DAPM_MIXER("Output Mixer", WM8711_PWR, 4, 1,
-+ &wm8711_output_mixer_controls[0],
-+ ARRAY_SIZE(wm8711_output_mixer_controls)),
-+SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8711_PWR, 3, 1),
-+SND_SOC_DAPM_OUTPUT("LOUT"),
-+SND_SOC_DAPM_OUTPUT("LHPOUT"),
-+SND_SOC_DAPM_OUTPUT("ROUT"),
-+SND_SOC_DAPM_OUTPUT("RHPOUT"),
-+};
-+
-+static const char *intercon[][3] = {
-+ /* output mixer */
-+ {"Output Mixer", "Line Bypass Switch", "Line Input"},
-+ {"Output Mixer", "HiFi Playback Switch", "DAC"},
-+
-+ /* outputs */
-+ {"RHPOUT", NULL, "Output Mixer"},
-+ {"ROUT", NULL, "Output Mixer"},
-+ {"LHPOUT", NULL, "Output Mixer"},
-+ {"LOUT", NULL, "Output Mixer"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8711_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8711_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8711_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path interconnects */
-+ for(i = 0; intercon[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, intercon[i][0], intercon[i][1],
-+ intercon[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct _coeff_div {
-+ u32 mclk;
-+ u32 rate;
-+ u16 fs;
-+ u8 sr:4;
-+ u8 bosr:1;
-+ u8 usb:1;
-+};
-+
-+/* codec mclk clock divider coefficients */
-+static const struct _coeff_div coeff_div[] = {
-+ /* 48k */
-+ {12288000, 48000, 256, 0x0, 0x0, 0x0},
-+ {18432000, 48000, 384, 0x0, 0x1, 0x0},
-+ {12000000, 48000, 250, 0x0, 0x0, 0x1},
-+
-+ /* 32k */
-+ {12288000, 32000, 384, 0x6, 0x0, 0x0},
-+ {18432000, 32000, 576, 0x6, 0x1, 0x0},
-+
-+ /* 8k */
-+ {12288000, 8000, 1536, 0x3, 0x0, 0x0},
-+ {18432000, 8000, 2304, 0x3, 0x1, 0x0},
-+ {11289600, 8000, 1408, 0xb, 0x0, 0x0},
-+ {16934400, 8000, 2112, 0xb, 0x1, 0x0},
-+ {12000000, 8000, 1500, 0x3, 0x0, 0x1},
-+
-+ /* 96k */
-+ {12288000, 96000, 128, 0x7, 0x0, 0x0},
-+ {18432000, 96000, 192, 0x7, 0x1, 0x0},
-+ {12000000, 96000, 125, 0x7, 0x0, 0x1},
-+
-+ /* 44.1k */
-+ {11289600, 44100, 256, 0x8, 0x0, 0x0},
-+ {16934400, 44100, 384, 0x8, 0x1, 0x0},
-+ {12000000, 44100, 272, 0x8, 0x1, 0x1},
-+
-+ /* 88.2k */
-+ {11289600, 88200, 128, 0xf, 0x0, 0x0},
-+ {16934400, 88200, 192, 0xf, 0x1, 0x0},
-+ {12000000, 88200, 136, 0xf, 0x1, 0x1},
-+};
-+
-+static inline int get_coeff(int mclk, int rate)
-+{
-+ int i;
-+
-+ for (i = 0; i < ARRAY_SIZE(coeff_div); i++) {
-+ if (coeff_div[i].rate == rate && coeff_div[i].mclk == mclk)
-+ return i;
-+ }
-+ return 0;
-+}
-+
-+/* WM8711 supports numerous clocks per sample rate */
-+static unsigned int wm8711_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ dai->mclk = 0;
-+
-+ /* check that the calculated FS and rate actually match a clock from
-+ * the machine driver */
-+ if (info->fs * info->rate == clk)
-+ dai->mclk = clk;
-+
-+ return dai->mclk;
-+}
-+
-+static int wm8711_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 iface = 0, srate;
-+ int i = get_coeff(rtd->codec_dai->mclk,
-+ snd_soc_get_rate(rtd->codec_dai->dai_runtime.pcmrate));
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ iface |= 0x0040;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+ srate = (coeff_div[i].sr << 2) | (coeff_div[i].bosr << 1) |
-+ coeff_div[i].usb;
-+ wm8711_write(codec, WM8711_SRATE, srate);
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0002;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x0003;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ iface |= 0x0013;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FORMAT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FORMAT_S20_3LE:
-+ iface |= 0x0004;
-+ break;
-+ case SNDRV_PCM_FORMAT_S24_LE:
-+ iface |= 0x0008;
-+ break;
-+ case SNDRV_PCM_FORMAT_S32_LE:
-+ iface |= 0x000c;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0090;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0080;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0010;
-+ break;
-+ }
-+
-+ /* set iface */
-+ wm8711_write(codec, WM8711_IFACE, iface);
-+
-+ /* set active */
-+ wm8711_write(codec, WM8711_ACTIVE, 0x0001);
-+ return 0;
-+}
-+
-+static void wm8711_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ /* deactivate */
-+ if (!codec->active) {
-+ udelay(50);
-+ wm8711_write(codec, WM8711_ACTIVE, 0x0);
-+ }
-+}
-+
-+static int wm8711_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8711_read_reg_cache(codec, WM8711_APDIGI) & 0xfff7;
-+ if (mute)
-+ wm8711_write(codec, WM8711_APDIGI, mute_reg | 0x8);
-+ else
-+ wm8711_write(codec, WM8711_APDIGI, mute_reg);
-+
-+ return 0;
-+}
-+
-+static int wm8711_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+ u16 reg = wm8711_read_reg_cache(codec, WM8711_PWR) & 0xff7f;
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, osc on, dac unmute */
-+ wm8711_write(codec, WM8711_PWR, reg);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, */
-+ wm8711_write(codec, WM8711_PWR, reg | 0x0040);
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8711_write(codec, WM8711_ACTIVE, 0x0);
-+ wm8711_write(codec, WM8711_PWR, 0xffff);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8711_dai = {
-+ .name = "WM8711",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8711_config_sysclk,
-+ .digital_mute = wm8711_mute,
-+ .ops = {
-+ .prepare = wm8711_pcm_prepare,
-+ .shutdown = wm8711_shutdown,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8711_modes),
-+ .mode = wm8711_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8711_dai);
-+
-+static int wm8711_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8711_write(codec, WM8711_ACTIVE, 0x0);
-+ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8711_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8711_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8711_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8711 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8711_init(struct snd_soc_device* socdev)
-+{
-+ struct snd_soc_codec* codec = socdev->codec;
-+ int reg, ret = 0;
-+
-+ codec->name = "WM8711";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8711_read_reg_cache;
-+ codec->write = wm8711_write;
-+ codec->dapm_event = wm8711_dapm_event;
-+ codec->dai = &wm8711_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8711_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8711_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8711_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8711_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8711_reg);
-+
-+ wm8711_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if (ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+
-+ /* set the update bits */
-+ reg = wm8711_read_reg_cache(codec, WM8711_LOUT1V);
-+ wm8711_write(codec, WM8711_LOUT1V, reg | 0x0100);
-+ reg = wm8711_read_reg_cache(codec, WM8711_ROUT1V);
-+ wm8711_write(codec, WM8711_ROUT1V, reg | 0x0100);
-+
-+ wm8711_add_controls(codec);
-+ wm8711_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if (ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8711_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8711 2 wire address is determined by GPIO5
-+ * state during powerup.
-+ * low = 0x1a
-+ * high = 0x1b
-+ */
-+#define I2C_DRIVERID_WM8711 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8711_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int wm8711_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8711_socdev;
-+ struct wm8711_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+
-+ i2c_set_clientdata(i2c, codec);
-+
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if (ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8711_init(socdev);
-+ if (ret < 0) {
-+ err("failed to initialise WM8711\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+
-+}
-+
-+static int wm8711_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec* codec = i2c_get_clientdata(client);
-+
-+ i2c_detach_client(client);
-+
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+static int wm8711_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8711_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8711_i2c_driver = {
-+ .driver = {
-+ .name = "WM8711 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8711,
-+ .attach_adapter = wm8711_i2c_attach,
-+ .detach_client = wm8711_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8711",
-+ .driver = &wm8711_i2c_driver,
-+};
-+#endif
-+
-+static int wm8711_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8711_setup_data *setup;
-+ struct snd_soc_codec* codec;
-+ int ret = 0;
-+
-+ info("WM8711 Audio Codec %s", WM8711_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8711_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8711_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8711_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8711_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8711_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8711 = {
-+ .probe = wm8711_probe,
-+ .remove = wm8711_remove,
-+ .suspend = wm8711_suspend,
-+ .resume = wm8711_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8711);
-+
-+MODULE_DESCRIPTION("ASoC WM8711 driver");
-+MODULE_AUTHOR("Mike Arthur");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8711.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8711.h
-@@ -0,0 +1,39 @@
-+/*
-+ * wm8711.h -- WM8711 Soc Audio driver
-+ *
-+ * Copyright 2006 Wolfson Microelectronics
-+ *
-+ * Author: Mike Arthur <linux@wolfsonmicro.com>
-+ *
-+ * Based on wm8731.h
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _WM8711_H
-+#define _WM8711_H
-+
-+/* WM8711 register space */
-+
-+#define WM8711_LOUT1V 0x02
-+#define WM8711_ROUT1V 0x03
-+#define WM8711_APANA 0x04
-+#define WM8711_APDIGI 0x05
-+#define WM8711_PWR 0x06
-+#define WM8711_IFACE 0x07
-+#define WM8711_SRATE 0x08
-+#define WM8711_ACTIVE 0x09
-+#define WM8711_RESET 0x0f
-+
-+#define WM8711_CACHEREGNUM 8
-+
-+struct wm8711_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8711_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8711;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8980.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8980.c
-@@ -0,0 +1,991 @@
-+/*
-+ * wm8980.c -- WM8980 ALSA Soc Audio driver
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ *
-+ * Authors:
-+ * Mike Arthur <linux@wolfsonmicro.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8980.h"
-+
-+#define AUDIO_NAME "wm8980"
-+#define WM8980_VERSION "0.2"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8980_DEBUG 0
-+
-+#ifdef WM8980_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8980;
-+
-+/*
-+ * wm8980 register cache
-+ * We can't read the WM8980 register space when we are
-+ * using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8980_reg[WM8980_CACHEREGNUM] = {
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0050, 0x0000, 0x0140, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x00ff,
-+ 0x00ff, 0x0000, 0x0100, 0x00ff,
-+ 0x00ff, 0x0000, 0x012c, 0x002c,
-+ 0x002c, 0x002c, 0x002c, 0x0000,
-+ 0x0032, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0038, 0x000b, 0x0032, 0x0000,
-+ 0x0008, 0x000c, 0x0093, 0x00e9,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0033, 0x0010, 0x0010, 0x0100,
-+ 0x0100, 0x0002, 0x0001, 0x0001,
-+ 0x0039, 0x0039, 0x0039, 0x0039,
-+ 0x0001, 0x0001,
-+};
-+
-+#define WM8980_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8980_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8980_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+#define WM8980_PCM_FORMATS \
-+ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
-+ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | \
-+ SNDRV_PCM_FORMAT_S32_LE)
-+
-+#define WM8980_BCLK \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
-+ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
-+
-+static struct snd_soc_dai_mode wm8980_modes[] = {
-+ /* codec frame and clock master modes */
-+ {
-+ .fmt = WM8980_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8980_PCM_FORMATS,
-+ .pcmrate = WM8980_RATES,
-+ .pcmdir = WM8980_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM8980_BCLK,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8980_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8980_PCM_FORMATS,
-+ .pcmrate = WM8980_RATES,
-+ .pcmdir = WM8980_DIR,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8980 register cache
-+ */
-+static inline unsigned int wm8980_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == WM8980_RESET)
-+ return 0;
-+ if (reg >= WM8980_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8980 register cache
-+ */
-+static inline void wm8980_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= WM8980_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the WM8980 register space
-+ */
-+static int wm8980_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8980 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8980_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+#define wm8980_reset(c) wm8980_write(c, WM8980_RESET, 0)
-+
-+static const char *wm8980_companding[] = {"Off", "NC", "u-law", "A-law" };
-+static const char *wm8980_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
-+static const char *wm8980_eqmode[] = {"Capture", "Playback" };
-+static const char *wm8980_bw[] = {"Narrow", "Wide" };
-+static const char *wm8980_eq1[] = {"80Hz", "105Hz", "135Hz", "175Hz" };
-+static const char *wm8980_eq2[] = {"230Hz", "300Hz", "385Hz", "500Hz" };
-+static const char *wm8980_eq3[] = {"650Hz", "850Hz", "1.1kHz", "1.4kHz" };
-+static const char *wm8980_eq4[] = {"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz" };
-+static const char *wm8980_eq5[] = {"5.3kHz", "6.9kHz", "9kHz", "11.7kHz" };
-+static const char *wm8980_alc[] =
-+ {"ALC both on", "ALC left only", "ALC right only", "Limiter" };
-+
-+static const struct soc_enum wm8980_enum[] = {
-+ SOC_ENUM_SINGLE(WM8980_COMP, 1, 4, wm8980_companding), /* adc */
-+ SOC_ENUM_SINGLE(WM8980_COMP, 3, 4, wm8980_companding), /* dac */
-+ SOC_ENUM_SINGLE(WM8980_DAC, 4, 4, wm8980_deemp),
-+ SOC_ENUM_SINGLE(WM8980_EQ1, 8, 2, wm8980_eqmode),
-+
-+ SOC_ENUM_SINGLE(WM8980_EQ1, 5, 4, wm8980_eq1),
-+ SOC_ENUM_SINGLE(WM8980_EQ2, 8, 2, wm8980_bw),
-+ SOC_ENUM_SINGLE(WM8980_EQ2, 5, 4, wm8980_eq2),
-+ SOC_ENUM_SINGLE(WM8980_EQ3, 8, 2, wm8980_bw),
-+
-+ SOC_ENUM_SINGLE(WM8980_EQ3, 5, 4, wm8980_eq3),
-+ SOC_ENUM_SINGLE(WM8980_EQ4, 8, 2, wm8980_bw),
-+ SOC_ENUM_SINGLE(WM8980_EQ4, 5, 4, wm8980_eq4),
-+ SOC_ENUM_SINGLE(WM8980_EQ5, 8, 2, wm8980_bw),
-+
-+ SOC_ENUM_SINGLE(WM8980_EQ5, 5, 4, wm8980_eq5),
-+ SOC_ENUM_SINGLE(WM8980_ALC3, 8, 2, wm8980_alc),
-+};
-+
-+static const struct snd_kcontrol_new wm8980_snd_controls[] = {
-+SOC_SINGLE("Digital Loopback Switch", WM8980_COMP, 0, 1, 0),
-+
-+SOC_ENUM("ADC Companding", wm8980_enum[0]),
-+SOC_ENUM("DAC Companding", wm8980_enum[1]),
-+
-+SOC_SINGLE("Jack Detection Enable", WM8980_JACK1, 6, 1, 0),
-+
-+SOC_SINGLE("DAC Right Inversion Switch", WM8980_DAC, 1, 1, 0),
-+SOC_SINGLE("DAC Left Inversion Switch", WM8980_DAC, 0, 1, 0),
-+
-+SOC_SINGLE("Left Playback Volume", WM8980_DACVOLL, 0, 127, 0),
-+SOC_SINGLE("Right Playback Volume", WM8980_DACVOLR, 0, 127, 0),
-+
-+SOC_SINGLE("High Pass Filter Switch", WM8980_ADC, 8, 1, 0),
-+SOC_SINGLE("High Pass Filter Switch", WM8980_ADC, 8, 1, 0),
-+SOC_SINGLE("High Pass Cut Off", WM8980_ADC, 4, 7, 0),
-+SOC_SINGLE("Right ADC Inversion Switch", WM8980_ADC, 1, 1, 0),
-+SOC_SINGLE("Left ADC Inversion Switch", WM8980_ADC, 0, 1, 0),
-+
-+SOC_SINGLE("Left Capture Volume", WM8980_ADCVOLL, 0, 127, 0),
-+SOC_SINGLE("Right Capture Volume", WM8980_ADCVOLR, 0, 127, 0),
-+
-+SOC_ENUM("Equaliser Function", wm8980_enum[3]),
-+SOC_ENUM("EQ1 Cut Off", wm8980_enum[4]),
-+SOC_SINGLE("EQ1 Volume", WM8980_EQ1, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ2 Bandwith", wm8980_enum[5]),
-+SOC_ENUM("EQ2 Cut Off", wm8980_enum[6]),
-+SOC_SINGLE("EQ2 Volume", WM8980_EQ2, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ3 Bandwith", wm8980_enum[7]),
-+SOC_ENUM("EQ3 Cut Off", wm8980_enum[8]),
-+SOC_SINGLE("EQ3 Volume", WM8980_EQ3, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ4 Bandwith", wm8980_enum[9]),
-+SOC_ENUM("EQ4 Cut Off", wm8980_enum[10]),
-+SOC_SINGLE("EQ4 Volume", WM8980_EQ4, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ5 Bandwith", wm8980_enum[11]),
-+SOC_ENUM("EQ5 Cut Off", wm8980_enum[12]),
-+SOC_SINGLE("EQ5 Volume", WM8980_EQ5, 0, 31, 1),
-+
-+SOC_SINGLE("DAC Playback Limiter Switch", WM8980_DACLIM1, 8, 1, 0),
-+SOC_SINGLE("DAC Playback Limiter Decay", WM8980_DACLIM1, 4, 15, 0),
-+SOC_SINGLE("DAC Playback Limiter Attack", WM8980_DACLIM1, 0, 15, 0),
-+
-+SOC_SINGLE("DAC Playback Limiter Threshold", WM8980_DACLIM2, 4, 7, 0),
-+SOC_SINGLE("DAC Playback Limiter Boost", WM8980_DACLIM2, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Enable Switch", WM8980_ALC1, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Max Gain", WM8980_ALC1, 3, 7, 0),
-+SOC_SINGLE("ALC Capture Min Gain", WM8980_ALC1, 0, 7, 0),
-+
-+SOC_SINGLE("ALC Capture ZC Switch", WM8980_ALC2, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Hold", WM8980_ALC2, 4, 7, 0),
-+SOC_SINGLE("ALC Capture Target", WM8980_ALC2, 0, 15, 0),
-+
-+SOC_ENUM("ALC Capture Mode", wm8980_enum[13]),
-+SOC_SINGLE("ALC Capture Decay", WM8980_ALC3, 4, 15, 0),
-+SOC_SINGLE("ALC Capture Attack", WM8980_ALC3, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Capture Noise Gate Switch", WM8980_NGATE, 3, 1, 0),
-+SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8980_NGATE, 0, 7, 0),
-+
-+SOC_SINGLE("Left Capture PGA ZC Switch", WM8980_INPPGAL, 7, 1, 0),
-+SOC_SINGLE("Left Capture PGA Volume", WM8980_INPPGAL, 0, 63, 0),
-+
-+SOC_SINGLE("Right Capture PGA ZC Switch", WM8980_INPPGAR, 7, 1, 0),
-+SOC_SINGLE("Right Capture PGA Volume", WM8980_INPPGAR, 0, 63, 0),
-+
-+SOC_SINGLE("Left Headphone Playback ZC Switch", WM8980_HPVOLL, 7, 1, 0),
-+SOC_SINGLE("Left Headphone Playback Switch", WM8980_HPVOLL, 6, 1, 1),
-+SOC_SINGLE("Left Headphone Playback Volume", WM8980_HPVOLL, 0, 63, 0),
-+
-+SOC_SINGLE("Right Headphone Playback ZC Switch", WM8980_HPVOLR, 7, 1, 0),
-+SOC_SINGLE("Right Headphone Playback Switch", WM8980_HPVOLR, 6, 1, 1),
-+SOC_SINGLE("Right Headphone Playback Volume", WM8980_HPVOLR, 0, 63, 0),
-+
-+SOC_SINGLE("Left Speaker Playback ZC Switch", WM8980_SPKVOLL, 7, 1, 0),
-+SOC_SINGLE("Left Speaker Playback Switch", WM8980_SPKVOLL, 6, 1, 1),
-+SOC_SINGLE("Left Speaker Playback Volume", WM8980_SPKVOLL, 0, 63, 0),
-+
-+SOC_SINGLE("Right Speaker Playback ZC Switch", WM8980_SPKVOLR, 7, 1, 0),
-+SOC_SINGLE("Right Speaker Playback Switch", WM8980_SPKVOLR, 6, 1, 1),
-+SOC_SINGLE("Right Speaker Playback Volume", WM8980_SPKVOLR, 0, 63, 0),
-+
-+SOC_DOUBLE_R("Capture Boost(+20dB)", WM8980_ADCBOOSTL, WM8980_ADCBOOSTR,
-+ 8, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int wm8980_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8980_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8980_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Left Output Mixer */
-+static const snd_kcontrol_new_t wm8980_left_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8980_OUTPUT, 6, 1, 1),
-+SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8980_MIXL, 0, 1, 1),
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8980_MIXL, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8980_MIXL, 5, 1, 0),
-+};
-+
-+/* Right Output Mixer */
-+static const snd_kcontrol_new_t wm8980_right_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8980_OUTPUT, 5, 1, 1),
-+SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8980_MIXR, 0, 1, 1),
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8980_MIXR, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8980_MIXR, 5, 1, 0),
-+};
-+
-+/* Left AUX Input boost vol */
-+static const snd_kcontrol_new_t wm8980_laux_boost_controls =
-+SOC_DAPM_SINGLE("Left Aux Volume", WM8980_ADCBOOSTL, 0, 3, 0);
-+
-+/* Right AUX Input boost vol */
-+static const snd_kcontrol_new_t wm8980_raux_boost_controls =
-+SOC_DAPM_SINGLE("Right Aux Volume", WM8980_ADCBOOSTR, 0, 3, 0);
-+
-+/* Left Input boost vol */
-+static const snd_kcontrol_new_t wm8980_lmic_boost_controls =
-+SOC_DAPM_SINGLE("Left Input Volume", WM8980_ADCBOOSTL, 4, 3, 0);
-+
-+/* Right Input boost vol */
-+static const snd_kcontrol_new_t wm8980_rmic_boost_controls =
-+SOC_DAPM_SINGLE("Right Input Volume", WM8980_ADCBOOSTR, 4, 3, 0);
-+
-+/* Left Aux In to PGA */
-+static const snd_kcontrol_new_t wm8980_laux_capture_boost_controls =
-+SOC_DAPM_SINGLE("Left Capture Switch", WM8980_ADCBOOSTL, 8, 1, 0);
-+
-+/* Right Aux In to PGA */
-+static const snd_kcontrol_new_t wm8980_raux_capture_boost_controls =
-+SOC_DAPM_SINGLE("Right Capture Switch", WM8980_ADCBOOSTR, 8, 1, 0);
-+
-+/* Left Input P In to PGA */
-+static const snd_kcontrol_new_t wm8980_lmicp_capture_boost_controls =
-+SOC_DAPM_SINGLE("Left Input P Capture Boost Switch", WM8980_INPUT, 0, 1, 0);
-+
-+/* Right Input P In to PGA */
-+static const snd_kcontrol_new_t wm8980_rmicp_capture_boost_controls =
-+SOC_DAPM_SINGLE("Right Input P Capture Boost Switch", WM8980_INPUT, 4, 1, 0);
-+
-+/* Left Input N In to PGA */
-+static const snd_kcontrol_new_t wm8980_lmicn_capture_boost_controls =
-+SOC_DAPM_SINGLE("Left Input N Capture Boost Switch", WM8980_INPUT, 1, 1, 0);
-+
-+/* Right Input N In to PGA */
-+static const snd_kcontrol_new_t wm8980_rmicn_capture_boost_controls =
-+SOC_DAPM_SINGLE("Right Input N Capture Boost Switch", WM8980_INPUT, 5, 1, 0);
-+
-+// TODO Widgets
-+static const struct snd_soc_dapm_widget wm8980_dapm_widgets[] = {
-+#if 0
-+//SND_SOC_DAPM_MUTE("Mono Mute", WM8980_MONOMIX, 6, 0),
-+//SND_SOC_DAPM_MUTE("Speaker Mute", WM8980_SPKMIX, 6, 0),
-+
-+SND_SOC_DAPM_MIXER("Speaker Mixer", WM8980_POWER3, 2, 0,
-+ &wm8980_speaker_mixer_controls[0],
-+ ARRAY_SIZE(wm8980_speaker_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Mono Mixer", WM8980_POWER3, 3, 0,
-+ &wm8980_mono_mixer_controls[0],
-+ ARRAY_SIZE(wm8980_mono_mixer_controls)),
-+SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8980_POWER3, 0, 0),
-+SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8980_POWER3, 0, 0),
-+SND_SOC_DAPM_PGA("Aux Input", WM8980_POWER1, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkN Out", WM8980_POWER3, 5, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkP Out", WM8980_POWER3, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono Out", WM8980_POWER3, 7, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic PGA", WM8980_POWER2, 2, 0, NULL, 0),
-+
-+SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8980_aux_boost_controls, 1),
-+SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8980_mic_boost_controls, 1),
-+SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8980_capture_boost_controls),
-+
-+SND_SOC_DAPM_MIXER("Boost Mixer", WM8980_POWER2, 4, 0, NULL, 0),
-+
-+SND_SOC_DAPM_MICBIAS("Mic Bias", WM8980_POWER1, 4, 0),
-+
-+SND_SOC_DAPM_INPUT("MICN"),
-+SND_SOC_DAPM_INPUT("MICP"),
-+SND_SOC_DAPM_INPUT("AUX"),
-+SND_SOC_DAPM_OUTPUT("MONOOUT"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTP"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTN"),
-+#endif
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* Mono output mixer */
-+ {"Mono Mixer", "PCM Playback Switch", "DAC"},
-+ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Speaker output mixer */
-+ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
-+ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Outputs */
-+ {"Mono Out", NULL, "Mono Mixer"},
-+ {"MONOOUT", NULL, "Mono Out"},
-+ {"SpkN Out", NULL, "Speaker Mixer"},
-+ {"SpkP Out", NULL, "Speaker Mixer"},
-+ {"SPKOUTN", NULL, "SpkN Out"},
-+ {"SPKOUTP", NULL, "SpkP Out"},
-+
-+ /* Boost Mixer */
-+ {"Boost Mixer", NULL, "ADC"},
-+ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
-+ {"Aux Boost", "Aux Volume", "Boost Mixer"},
-+ {"Capture Boost", "Capture Switch", "Boost Mixer"},
-+ {"Mic Boost", "Mic Volume", "Boost Mixer"},
-+
-+ /* Inputs */
-+ {"MICP", NULL, "Mic Boost"},
-+ {"MICN", NULL, "Mic PGA"},
-+ {"Mic PGA", NULL, "Capture Boost"},
-+ {"AUX", NULL, "Aux Input"},
-+
-+ /* */
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8980_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8980_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8980_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path map */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1],
-+ audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct pll_ {
-+ unsigned int in_hz, out_hz;
-+ unsigned int pre:4; /* prescale - 1 */
-+ unsigned int n:4;
-+ unsigned int k;
-+};
-+
-+struct pll_ pll[] = {
-+ {12000000, 11289600, 0, 7, 0x86c220},
-+ {12000000, 12288000, 0, 8, 0x3126e8},
-+ {13000000, 11289600, 0, 6, 0xf28bd4},
-+ {13000000, 12288000, 0, 7, 0x8fd525},
-+ {12288000, 11289600, 0, 7, 0x59999a},
-+ {11289600, 12288000, 0, 8, 0x80dee9},
-+ /* TODO: liam - add more entries */
-+};
-+
-+static int set_pll(struct snd_soc_codec *codec, unsigned int in,
-+ unsigned int out)
-+{
-+ int i;
-+ u16 reg;
-+
-+ if(out == 0) {
-+ reg = wm8980_read_reg_cache(codec, WM8980_POWER1);
-+ wm8980_write(codec, WM8980_POWER1, reg & 0x1df);
-+ return 0;
-+ }
-+
-+ for(i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (in == pll[i].in_hz && out == pll[i].out_hz) {
-+ wm8980_write(codec, WM8980_PLLN, (pll[i].pre << 4) | pll[i].n);
-+ wm8980_write(codec, WM8980_PLLK1, pll[i].k >> 18);
-+ wm8980_write(codec, WM8980_PLLK1, (pll[i].k >> 9) && 0x1ff);
-+ wm8980_write(codec, WM8980_PLLK1, pll[i].k && 0x1ff);
-+ reg = wm8980_read_reg_cache(codec, WM8980_POWER1);
-+ wm8980_write(codec, WM8980_POWER1, reg | 0x020);
-+ return 0;
-+ }
-+ }
-+ return -EINVAL;
-+}
-+
-+/* mclk dividers * 2 */
-+static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
-+
-+/* we need 256FS to drive the DAC's and ADC's */
-+static unsigned int wm8980_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if ((best_clk >> 1) * mclk_div[i] == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = mclk_div[i];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (pll[i].in_hz == clk) {
-+ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
-+ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
-+ dai->pll_in = clk;
-+ dai->pll_out = pll[i].out_hz;
-+ dai->clk_div = mclk_div[j];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+static int wm8980_pcm_prepare(snd_pcm_substream_t *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_codec_dai *dai = rtd->codec_dai;
-+ u16 iface = 0, bfs, clk = 0, adn;
-+ int fs = 48000 << 7, i;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ switch (bfs) {
-+ case 2:
-+ clk |= 0x1 << 2;
-+ break;
-+ case 4:
-+ clk |= 0x2 << 2;
-+ break;
-+ case 8:
-+ clk |= 0x3 << 2;
-+ break;
-+ case 16:
-+ clk |= 0x4 << 2;
-+ break;
-+ case 32:
-+ clk |= 0x5 << 2;
-+ break;
-+ }
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ clk |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0010;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0008;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x00018;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0020;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0040;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x0060;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0180;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0100;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0080;
-+ break;
-+ }
-+
-+ /* filter coefficient */
-+ adn = wm8980_read_reg_cache(codec, WM8980_ADD) & 0x1f1;
-+ switch (rtd->codec_dai->dai_runtime.pcmrate) {
-+ case SNDRV_PCM_RATE_8000:
-+ adn |= 0x5 << 1;
-+ fs = 8000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_11025:
-+ adn |= 0x4 << 1;
-+ fs = 11025 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_16000:
-+ adn |= 0x3 << 1;
-+ fs = 16000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_22050:
-+ adn |= 0x2 << 1;
-+ fs = 22050 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_32000:
-+ adn |= 0x1 << 1;
-+ fs = 32000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_44100:
-+ fs = 44100 << 7;
-+ break;
-+ }
-+
-+ /* do we need to enable the PLL */
-+ if(dai->pll_in)
-+ set_pll(codec, dai->pll_in, dai->pll_out);
-+
-+ /* divide the clock to 256 fs */
-+ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if (dai->clk_div == mclk_div[i]) {
-+ clk |= i << 5;
-+ clk &= 0xff;
-+ goto set;
-+ }
-+ }
-+
-+set:
-+ /* set iface */
-+ wm8980_write(codec, WM8980_IFACE, iface);
-+ wm8980_write(codec, WM8980_CLOCK, clk);
-+
-+ return 0;
-+}
-+
-+static int wm8980_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ set_pll(codec, 0, 0);
-+ return 0;
-+}
-+
-+static int wm8980_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8980_read_reg_cache(codec, WM8980_DAC) & 0xffbf;
-+ if(mute)
-+ wm8980_write(codec, WM8980_DAC, mute_reg | 0x40);
-+ else
-+ wm8980_write(codec, WM8980_DAC, mute_reg);
-+
-+ return 0;
-+}
-+
-+/* TODO: liam need to make this lower power with dapm */
-+static int wm8980_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, dac unmute, active */
-+ wm8980_write(codec, WM8980_POWER1, 0x1ff);
-+ wm8980_write(codec, WM8980_POWER2, 0x1ff);
-+ wm8980_write(codec, WM8980_POWER3, 0x1ff);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, dac mute, inactive */
-+
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8980_write(codec, WM8980_POWER1, 0x0);
-+ wm8980_write(codec, WM8980_POWER2, 0x0);
-+ wm8980_write(codec, WM8980_POWER3, 0x0);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8980_dai = {
-+ .name = "WM8980 HiFi",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .config_sysclk = wm8980_config_sysclk,
-+ .digital_mute = wm8980_mute,
-+ .ops = {
-+ .prepare = wm8980_pcm_prepare,
-+ .hw_free = wm8980_hw_free,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8980_modes),
-+ .mode = wm8980_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8980_dai);
-+
-+static int wm8980_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8980_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8980_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8980_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8980 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8980_init(struct snd_soc_device* socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ codec->name = "WM8980";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8980_read_reg_cache;
-+ codec->write = wm8980_write;
-+ codec->dapm_event = wm8980_dapm_event;
-+ codec->dai = &wm8980_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8980_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8980_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8980_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8980_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8980_reg);
-+
-+ wm8980_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8980_add_controls(codec);
-+ wm8980_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if(ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8980_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8980 2 wire address is 0x1a
-+ */
-+#define I2C_DRIVERID_WM8980 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8980_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int wm8980_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8980_socdev;
-+ struct wm8980_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+
-+ i2c_set_clientdata(i2c, codec);
-+
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if(ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8980_init(socdev);
-+ if(ret < 0) {
-+ err("failed to initialise WM8980\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+
-+}
-+
-+static int wm8980_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec *codec = i2c_get_clientdata(client);
-+
-+ i2c_detach_client(client);
-+
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+static int wm8980_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8980_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8980_i2c_driver = {
-+ .driver = {
-+ .name = "WM8980 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8980,
-+ .attach_adapter = wm8980_i2c_attach,
-+ .detach_client = wm8980_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8980",
-+ .driver = &wm8980_i2c_driver,
-+};
-+#endif
-+
-+static int wm8980_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8980_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8980 Audio Codec %s", WM8980_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8980_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8980_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8980_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8980_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8980_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8980 = {
-+ .probe = wm8980_probe,
-+ .remove = wm8980_remove,
-+ .suspend = wm8980_suspend,
-+ .resume = wm8980_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8980);
-+
-+MODULE_DESCRIPTION("ASoC WM8980 driver");
-+MODULE_AUTHOR("Mike Arthur");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8980.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8980.h
-@@ -0,0 +1,77 @@
-+/*
-+ * wm8980.h -- WM8980 Soc Audio driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _WM8980_H
-+#define _WM8980_H
-+
-+/* WM8980 register space */
-+
-+#define WM8980_RESET 0x0
-+#define WM8980_POWER1 0x1
-+#define WM8980_POWER2 0x2
-+#define WM8980_POWER3 0x3
-+#define WM8980_IFACE 0x4
-+#define WM8980_COMP 0x5
-+#define WM8980_CLOCK 0x6
-+#define WM8980_ADD 0x7
-+#define WM8980_GPIO 0x8
-+#define WM8980_JACK1 0x9
-+#define WM8980_DAC 0xa
-+#define WM8980_DACVOLL 0xb
-+#define WM8980_DACVOLR 0xc
-+#define WM8980_JACK2 0xd
-+#define WM8980_ADC 0xe
-+#define WM8980_ADCVOLL 0xf
-+#define WM8980_ADCVOLR 0x10
-+#define WM8980_EQ1 0x12
-+#define WM8980_EQ2 0x13
-+#define WM8980_EQ3 0x14
-+#define WM8980_EQ4 0x15
-+#define WM8980_EQ5 0x16
-+#define WM8980_DACLIM1 0x18
-+#define WM8980_DACLIM2 0x19
-+#define WM8980_NOTCH1 0x1b
-+#define WM8980_NOTCH2 0x1c
-+#define WM8980_NOTCH3 0x1d
-+#define WM8980_NOTCH4 0x1e
-+#define WM8980_ALC1 0x20
-+#define WM8980_ALC2 0x21
-+#define WM8980_ALC3 0x22
-+#define WM8980_NGATE 0x23
-+#define WM8980_PLLN 0x24
-+#define WM8980_PLLK1 0x25
-+#define WM8980_PLLK2 0x26
-+#define WM8980_PLLK3 0x27
-+#define WM8980_VIDEO 0x28
-+#define WM8980_3D 0x29
-+#define WM8980_BEEP 0x2b
-+#define WM8980_INPUT 0x2c
-+#define WM8980_INPPGAL 0x2d
-+#define WM8980_INPPGAR 0x2e
-+#define WM8980_ADCBOOSTL 0x2f
-+#define WM8980_ADCBOOSTR 0x30
-+#define WM8980_OUTPUT 0x31
-+#define WM8980_MIXL 0x32
-+#define WM8980_MIXR 0x33
-+#define WM8980_HPVOLL 0x34
-+#define WM8980_HPVOLR 0x35
-+#define WM8980_SPKVOLL 0x36
-+#define WM8980_SPKVOLR 0x37
-+#define WM8980_OUT3MIX 0x38
-+#define WM8980_MONOMIX 0x39
-+
-+#define WM8980_CACHEREGNUM 58
-+
-+struct wm8980_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8980_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8980;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/at91/eti_b1_wm8731.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/at91/eti_b1_wm8731.c
-@@ -0,0 +1,230 @@
-+/*
-+ * eti_b1_wm8731 -- SoC audio for Endrelia ETI_B1.
-+ *
-+ * Author: Frank Mandarino <fmandarino@endrelia.com>
-+ * Endrelia Technologies Inc.
-+ * Created: Mar 29, 2006
-+ *
-+ * Based on corgi.c by:
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Authors: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ * Richard Purdie <richard@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 30th Nov 2005 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/clk.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+
-+#include <asm/arch/at91rm9200.h>
-+#include <asm/arch/gpio.h>
-+#include <asm/arch/hardware.h>
-+
-+#include "../codecs/wm8731.h"
-+#include "at91rm9200-pcm.h"
-+
-+#if 0
-+#define DBG(x...) printk(KERN_INFO "eti_b1_wm8731:" x)
-+#else
-+#define DBG(x...)
-+#endif
-+
-+static struct clk *pck1_clk;
-+static struct clk *pllb_clk;
-+
-+static int eti_b1_startup(snd_pcm_substream_t *substream)
-+{
-+ /* Start PCK1 clock. */
-+ clk_enable(pck1_clk);
-+ DBG("pck1 started\n");
-+
-+ return 0;
-+}
-+
-+static void eti_b1_shutdown(snd_pcm_substream_t *substream)
-+{
-+ /* Stop PCK1 clock. */
-+ clk_disable(pck1_clk);
-+ DBG("pck1 stopped\n");
-+}
-+
-+static struct snd_soc_ops eti_b1_ops = {
-+ .startup = eti_b1_startup,
-+ .shutdown = eti_b1_shutdown,
-+};
-+
-+
-+static const struct snd_soc_dapm_widget eti_b1_dapm_widgets[] = {
-+ SND_SOC_DAPM_MIC("Int Mic", NULL),
-+ SND_SOC_DAPM_SPK("Ext Spk", NULL),
-+};
-+
-+static const char *intercon[][3] = {
-+
-+ /* speaker connected to LHPOUT */
-+ {"Ext Spk", NULL, "LHPOUT"},
-+
-+ /* mic is connected to Mic Jack, with WM8731 Mic Bias */
-+ {"MICIN", NULL, "Mic Bias"},
-+ {"Mic Bias", NULL, "Int Mic"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+/*
-+ * Logic for a wm8731 as connected on a Endrelia ETI-B1 board.
-+ */
-+static int eti_b1_wm8731_init(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ DBG("eti_b1_wm8731_init() called\n");
-+
-+ /* Add specific widgets */
-+ for(i = 0; i < ARRAY_SIZE(eti_b1_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &eti_b1_dapm_widgets[i]);
-+ }
-+
-+ /* Set up specific audio path interconnects */
-+ for(i = 0; intercon[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, intercon[i][0],
-+ intercon[i][1], intercon[i][2]);
-+ }
-+
-+ /* not connected */
-+ snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
-+ snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
-+
-+ /* always connected */
-+ snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
-+ snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
-+
-+ snd_soc_dapm_sync_endpoints(codec);
-+
-+ return 0;
-+}
-+
-+unsigned int eti_b1_config_sysclk(struct snd_soc_pcm_runtime *rtd,
-+ struct snd_soc_clock_info *info)
-+{
-+ if(info->bclk_master & SND_SOC_DAIFMT_CBS_CFS) {
-+ return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12000000);
-+ }
-+ return 0;
-+}
-+
-+static struct snd_soc_dai_link eti_b1_dai = {
-+ .name = "WM8731",
-+ .stream_name = "WM8731",
-+ .cpu_dai = &at91rm9200_i2s_dai[1],
-+ .codec_dai = &wm8731_dai,
-+ .init = eti_b1_wm8731_init,
-+ .config_sysclk = eti_b1_config_sysclk,
-+};
-+
-+static struct snd_soc_machine snd_soc_machine_eti_b1 = {
-+ .name = "ETI_B1",
-+ .dai_link = &eti_b1_dai,
-+ .num_links = 1,
-+ .ops = &eti_b1_ops,
-+};
-+
-+static struct wm8731_setup_data eti_b1_wm8731_setup = {
-+ .i2c_address = 0x1a,
-+};
-+
-+static struct snd_soc_device eti_b1_snd_devdata = {
-+ .machine = &snd_soc_machine_eti_b1,
-+ .platform = &at91rm9200_soc_platform,
-+ .codec_dev = &soc_codec_dev_wm8731,
-+ .codec_data = &eti_b1_wm8731_setup,
-+};
-+
-+static struct platform_device *eti_b1_snd_device;
-+
-+static int __init eti_b1_init(void)
-+{
-+ int ret;
-+ u32 ssc_pio_lines;
-+
-+ eti_b1_snd_device = platform_device_alloc("soc-audio", -1);
-+ if (!eti_b1_snd_device)
-+ return -ENOMEM;
-+
-+ platform_set_drvdata(eti_b1_snd_device, &eti_b1_snd_devdata);
-+ eti_b1_snd_devdata.dev = &eti_b1_snd_device->dev;
-+
-+ ret = platform_device_add(eti_b1_snd_device);
-+ if (ret) {
-+ platform_device_put(eti_b1_snd_device);
-+ return ret;
-+ }
-+
-+ ssc_pio_lines = AT91_PB6_TF1 | AT91_PB7_TK1 | AT91_PB8_TD1
-+ | AT91_PB9_RD1 /* | AT91_PB10_RK1 | AT91_PB11_RF1 */;
-+
-+ /* Reset all PIO registers and assign lines to peripheral A */
-+ at91_sys_write(AT91_PIOB + PIO_PDR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_ODR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_IFDR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_CODR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_IDR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_MDDR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_PUDR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_ASR, ssc_pio_lines);
-+ at91_sys_write(AT91_PIOB + PIO_OWDR, ssc_pio_lines);
-+
-+ /*
-+ * Set PCK1 parent to PLLB and its rate to 12 Mhz.
-+ */
-+ pllb_clk = clk_get(NULL, "pllb");
-+ pck1_clk = clk_get(NULL, "pck1");
-+
-+ clk_set_parent(pck1_clk, pllb_clk);
-+ clk_set_rate(pck1_clk, 12000000);
-+
-+ DBG("MCLK rate %luHz\n", clk_get_rate(pck1_clk));
-+
-+ /* assign the GPIO pin to PCK1 */
-+ at91_set_B_periph(AT91_PIN_PA24, 0);
-+
-+ return ret;
-+}
-+
-+static void __exit eti_b1_exit(void)
-+{
-+ clk_put(pck1_clk);
-+ clk_put(pllb_clk);
-+
-+ platform_device_unregister(eti_b1_snd_device);
-+}
-+
-+module_init(eti_b1_init);
-+module_exit(eti_b1_exit);
-+
-+/* Module information */
-+MODULE_AUTHOR("Frank Mandarino <fmandarino@endrelia.com>");
-+MODULE_DESCRIPTION("ALSA SoC ETI-B1-WM8731");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8510.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8510.c
-@@ -0,0 +1,895 @@
-+/*
-+ * wm8510.c -- WM8510 ALSA Soc Audio driver
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ *
-+ * Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8510.h"
-+
-+#define AUDIO_NAME "wm8510"
-+#define WM8510_VERSION "0.5"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8510_DEBUG 0
-+
-+#ifdef WM8510_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8510;
-+
-+/*
-+ * wm8510 register cache
-+ * We can't read the WM8510 register space when we are
-+ * using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8510_reg[WM8510_CACHEREGNUM] = {
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0050, 0x0000, 0x0140, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x00ff,
-+ 0x0000, 0x0000, 0x0100, 0x00ff,
-+ 0x0000, 0x0000, 0x012c, 0x002c,
-+ 0x002c, 0x002c, 0x002c, 0x0000,
-+ 0x0032, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0038, 0x000b, 0x0032, 0x0000,
-+ 0x0008, 0x000c, 0x0093, 0x00e9,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0003, 0x0010, 0x0000, 0x0000,
-+ 0x0000, 0x0002, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0039, 0x0000,
-+ 0x0000,
-+};
-+
-+#define WM8510_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
-+ SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8510_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8510_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+#define WM8794_BCLK \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
-+ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
-+
-+#define WM8794_HIFI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
-+
-+static struct snd_soc_dai_mode wm8510_modes[] = {
-+ /* codec frame and clock master modes */
-+ {
-+ .fmt = WM8510_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8794_HIFI_BITS,
-+ .pcmrate = WM8510_RATES,
-+ .pcmdir = WM8510_DIR,
-+ .fs = 256,
-+ .bfs = WM8794_BCLK,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8510_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8794_HIFI_BITS,
-+ .pcmrate = WM8510_RATES,
-+ .pcmdir = WM8510_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8510 register cache
-+ */
-+static inline unsigned int wm8510_read_reg_cache(struct snd_soc_codec * codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == WM8510_RESET)
-+ return 0;
-+ if (reg >= WM8510_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8510 register cache
-+ */
-+static inline void wm8510_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= WM8510_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the WM8510 register space
-+ */
-+static int wm8510_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8510 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8510_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -EIO;
-+}
-+
-+#define wm8510_reset(c) wm8510_write(c, WM8510_RESET, 0)
-+
-+static const char *wm8510_companding[] = {"Off", "NC", "u-law", "A-law" };
-+static const char *wm8510_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
-+static const char *wm8510_alc[] = {"ALC", "Limiter" };
-+
-+static const struct soc_enum wm8510_enum[] = {
-+ SOC_ENUM_SINGLE(WM8510_COMP, 1, 4, wm8510_companding), /* adc */
-+ SOC_ENUM_SINGLE(WM8510_COMP, 3, 4, wm8510_companding), /* dac */
-+ SOC_ENUM_SINGLE(WM8510_DAC, 4, 4, wm8510_deemp),
-+ SOC_ENUM_SINGLE(WM8510_ALC3, 8, 2, wm8510_alc),
-+};
-+
-+static const struct snd_kcontrol_new wm8510_snd_controls[] = {
-+
-+SOC_SINGLE("Digital Loopback Switch", WM8510_COMP, 0, 1, 0),
-+
-+SOC_ENUM("DAC Companding", wm8510_enum[1]),
-+SOC_ENUM("ADC Companding", wm8510_enum[0]),
-+
-+SOC_ENUM("Playback De-emphasis", wm8510_enum[2]),
-+SOC_SINGLE("DAC Inversion Switch", WM8510_DAC, 0, 1, 0),
-+
-+SOC_SINGLE("Master Playback Volume", WM8510_DACVOL, 0, 127, 0),
-+
-+SOC_SINGLE("High Pass Filter Switch", WM8510_ADC, 8, 1, 0),
-+SOC_SINGLE("High Pass Cut Off", WM8510_ADC, 4, 7, 0),
-+SOC_SINGLE("ADC Inversion Switch", WM8510_COMP, 0, 1, 0),
-+
-+SOC_SINGLE("Capture Volume", WM8510_ADCVOL, 0, 127, 0),
-+
-+SOC_SINGLE("DAC Playback Limiter Switch", WM8510_DACLIM1, 8, 1, 0),
-+SOC_SINGLE("DAC Playback Limiter Decay", WM8510_DACLIM1, 4, 15, 0),
-+SOC_SINGLE("DAC Playback Limiter Attack", WM8510_DACLIM1, 0, 15, 0),
-+
-+SOC_SINGLE("DAC Playback Limiter Threshold", WM8510_DACLIM2, 4, 7, 0),
-+SOC_SINGLE("DAC Playback Limiter Boost", WM8510_DACLIM2, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Enable Switch", WM8510_ALC1, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Max Gain", WM8510_ALC1, 3, 7, 0),
-+SOC_SINGLE("ALC Capture Min Gain", WM8510_ALC1, 0, 7, 0),
-+
-+SOC_SINGLE("ALC Capture ZC Switch", WM8510_ALC2, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Hold", WM8510_ALC2, 4, 7, 0),
-+SOC_SINGLE("ALC Capture Target", WM8510_ALC2, 0, 15, 0),
-+
-+SOC_ENUM("ALC Capture Mode", wm8510_enum[3]),
-+SOC_SINGLE("ALC Capture Decay", WM8510_ALC3, 4, 15, 0),
-+SOC_SINGLE("ALC Capture Attack", WM8510_ALC3, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Capture Noise Gate Switch", WM8510_NGATE, 3, 1, 0),
-+SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8510_NGATE, 0, 7, 0),
-+
-+SOC_SINGLE("Capture PGA ZC Switch", WM8510_INPPGA, 7, 1, 0),
-+SOC_SINGLE("Capture PGA Volume", WM8510_INPPGA, 0, 63, 0),
-+
-+SOC_SINGLE("Speaker Playback ZC Switch", WM8510_SPKVOL, 7, 1, 0),
-+SOC_SINGLE("Speaker Playback Switch", WM8510_SPKVOL, 6, 1, 1),
-+SOC_SINGLE("Speaker Playback Volume", WM8510_SPKVOL, 0, 63, 0),
-+
-+SOC_SINGLE("Capture Boost(+20dB)", WM8510_ADCBOOST, 8, 1, 0),
-+SOC_SINGLE("Mono Playback Switch", WM8510_MONOMIX, 6, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int wm8510_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8510_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8510_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Speaker Output Mixer */
-+static const struct snd_kcontrol_new wm8510_speaker_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8510_SPKMIX, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8510_SPKMIX, 5, 1, 0),
-+SOC_DAPM_SINGLE("PCM Playback Switch", WM8510_SPKMIX, 0, 1, 1),
-+};
-+
-+/* Mono Output Mixer */
-+static const struct snd_kcontrol_new wm8510_mono_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8510_MONOMIX, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8510_MONOMIX, 2, 1, 0),
-+SOC_DAPM_SINGLE("PCM Playback Switch", WM8510_MONOMIX, 0, 1, 1),
-+};
-+
-+/* AUX Input boost vol */
-+static const struct snd_kcontrol_new wm8510_aux_boost_controls =
-+SOC_DAPM_SINGLE("Aux Volume", WM8510_ADCBOOST, 0, 7, 0);
-+
-+/* Mic Input boost vol */
-+static const struct snd_kcontrol_new wm8510_mic_boost_controls =
-+SOC_DAPM_SINGLE("Mic Volume", WM8510_ADCBOOST, 4, 7, 0);
-+
-+/* Capture boost switch */
-+static const struct snd_kcontrol_new wm8510_capture_boost_controls =
-+SOC_DAPM_SINGLE("Capture Boost Switch", WM8510_INPPGA, 6, 1, 0);
-+
-+/* Aux In to PGA */
-+static const struct snd_kcontrol_new wm8510_aux_capture_boost_controls =
-+SOC_DAPM_SINGLE("Aux Capture Boost Switch", WM8510_INPPGA, 2, 1, 0);
-+
-+/* Mic P In to PGA */
-+static const struct snd_kcontrol_new wm8510_micp_capture_boost_controls =
-+SOC_DAPM_SINGLE("Mic P Capture Boost Switch", WM8510_INPPGA, 0, 1, 0);
-+
-+/* Mic N In to PGA */
-+static const struct snd_kcontrol_new wm8510_micn_capture_boost_controls =
-+SOC_DAPM_SINGLE("Mic N Capture Boost Switch", WM8510_INPPGA, 1, 1, 0);
-+
-+static const struct snd_soc_dapm_widget wm8510_dapm_widgets[] = {
-+SND_SOC_DAPM_MIXER("Speaker Mixer", WM8510_POWER3, 2, 0,
-+ &wm8510_speaker_mixer_controls[0],
-+ ARRAY_SIZE(wm8510_speaker_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Mono Mixer", WM8510_POWER3, 3, 0,
-+ &wm8510_mono_mixer_controls[0],
-+ ARRAY_SIZE(wm8510_mono_mixer_controls)),
-+SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8510_POWER3, 0, 0),
-+SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8510_POWER3, 0, 0),
-+SND_SOC_DAPM_PGA("Aux Input", WM8510_POWER1, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkN Out", WM8510_POWER3, 5, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkP Out", WM8510_POWER3, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono Out", WM8510_POWER3, 7, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic PGA", WM8510_POWER2, 2, 0, NULL, 0),
-+
-+SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8510_aux_boost_controls, 1),
-+SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8510_mic_boost_controls, 1),
-+SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8510_capture_boost_controls),
-+
-+SND_SOC_DAPM_MIXER("Boost Mixer", WM8510_POWER2, 4, 0, NULL, 0),
-+
-+SND_SOC_DAPM_MICBIAS("Mic Bias", WM8510_POWER1, 4, 0),
-+
-+SND_SOC_DAPM_INPUT("MICN"),
-+SND_SOC_DAPM_INPUT("MICP"),
-+SND_SOC_DAPM_INPUT("AUX"),
-+SND_SOC_DAPM_OUTPUT("MONOOUT"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTP"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTN"),
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* Mono output mixer */
-+ {"Mono Mixer", "PCM Playback Switch", "DAC"},
-+ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Speaker output mixer */
-+ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
-+ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Outputs */
-+ {"Mono Out", NULL, "Mono Mixer"},
-+ {"MONOOUT", NULL, "Mono Out"},
-+ {"SpkN Out", NULL, "Speaker Mixer"},
-+ {"SpkP Out", NULL, "Speaker Mixer"},
-+ {"SPKOUTN", NULL, "SpkN Out"},
-+ {"SPKOUTP", NULL, "SpkP Out"},
-+
-+ /* Boost Mixer */
-+ {"Boost Mixer", NULL, "ADC"},
-+ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
-+ {"Aux Boost", "Aux Volume", "Boost Mixer"},
-+ {"Capture Boost", "Capture Switch", "Boost Mixer"},
-+ {"Mic Boost", "Mic Volume", "Boost Mixer"},
-+
-+ /* Inputs */
-+ {"MICP", NULL, "Mic Boost"},
-+ {"MICN", NULL, "Mic PGA"},
-+ {"Mic PGA", NULL, "Capture Boost"},
-+ {"AUX", NULL, "Aux Input"},
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8510_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8510_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8510_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path audio_mapnects */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0],
-+ audio_map[i][1], audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct pll_ {
-+ unsigned int in_hz, out_hz;
-+ unsigned int pre:4; /* prescale - 1 */
-+ unsigned int n:4;
-+ unsigned int k;
-+};
-+
-+struct pll_ pll[] = {
-+ {12000000, 11289600, 0, 7, 0x86c220},
-+ {12000000, 12288000, 0, 8, 0x3126e8},
-+ {13000000, 11289600, 0, 6, 0xf28bd4},
-+ {13000000, 12288000, 0, 7, 0x8fd525},
-+ {12288000, 11289600, 0, 7, 0x59999a},
-+ {11289600, 12288000, 0, 8, 0x80dee9},
-+ /* liam - add more entries */
-+};
-+
-+static int set_pll(struct snd_soc_codec *codec, unsigned int in,
-+ unsigned int out)
-+{
-+ int i;
-+ u16 reg;
-+
-+ if(out == 0) {
-+ reg = wm8510_read_reg_cache(codec, WM8510_POWER1);
-+ wm8510_write(codec, WM8510_POWER1, reg & 0x1df);
-+ return 0;
-+ }
-+
-+ for(i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (in == pll[i].in_hz && out == pll[i].out_hz) {
-+ wm8510_write(codec, WM8510_PLLN, (pll[i].pre << 4) | pll[i].n);
-+ wm8510_write(codec, WM8510_PLLK1, pll[i].k >> 18);
-+ wm8510_write(codec, WM8510_PLLK1, (pll[i].k >> 9) && 0x1ff);
-+ wm8510_write(codec, WM8510_PLLK1, pll[i].k && 0x1ff);
-+ reg = wm8510_read_reg_cache(codec, WM8510_POWER1);
-+ wm8510_write(codec, WM8510_POWER1, reg | 0x020);
-+ return 0;
-+ }
-+ }
-+ return -EINVAL;
-+}
-+
-+/* mclk dividers * 2 */
-+static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
-+
-+/* we need 256FS to drive the DAC's and ADC's */
-+static unsigned int wm8510_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if ((best_clk >> 1) * mclk_div[i] == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = mclk_div[i];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (pll[i].in_hz == clk) {
-+ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
-+ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
-+ dai->pll_in = clk;
-+ dai->pll_out = pll[i].out_hz;
-+ dai->clk_div = mclk_div[j];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+static int wm8510_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_codec_dai *dai = rtd->codec_dai;
-+ u16 iface = 0, bfs, clk = 0, adn;
-+ int fs = 48000 << 7, i;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ switch (bfs) {
-+ case 2:
-+ clk |= 0x1 << 2;
-+ break;
-+ case 4:
-+ clk |= 0x2 << 2;
-+ break;
-+ case 8:
-+ clk |= 0x3 << 2;
-+ break;
-+ case 16:
-+ clk |= 0x4 << 2;
-+ break;
-+ case 32:
-+ clk |= 0x5 << 2;
-+ break;
-+ }
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ clk |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0010;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0008;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x00018;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0020;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0040;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x0060;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0180;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0100;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0080;
-+ break;
-+ }
-+
-+ /* filter coefficient */
-+ adn = wm8510_read_reg_cache(codec, WM8510_ADD) & 0x1f1;
-+ switch (rtd->codec_dai->dai_runtime.pcmrate) {
-+ case SNDRV_PCM_RATE_8000:
-+ adn |= 0x5 << 1;
-+ fs = 8000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_11025:
-+ adn |= 0x4 << 1;
-+ fs = 11025 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_16000:
-+ adn |= 0x3 << 1;
-+ fs = 16000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_22050:
-+ adn |= 0x2 << 1;
-+ fs = 22050 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_32000:
-+ adn |= 0x1 << 1;
-+ fs = 32000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_44100:
-+ fs = 44100 << 7;
-+ break;
-+ }
-+
-+ /* do we need to enable the PLL */
-+ if(dai->pll_in)
-+ set_pll(codec, dai->pll_in, dai->pll_out);
-+
-+ /* divide the clock to 256 fs */
-+ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if (dai->clk_div == mclk_div[i]) {
-+ clk |= i << 5;
-+ clk &= 0xff;
-+ goto set;
-+ }
-+ }
-+
-+set:
-+ /* set iface */
-+ wm8510_write(codec, WM8510_IFACE, iface);
-+ wm8510_write(codec, WM8510_CLOCK, clk);
-+
-+ return 0;
-+}
-+
-+static int wm8510_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ set_pll(codec, 0, 0);
-+ return 0;
-+}
-+
-+static int wm8510_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8510_read_reg_cache(codec, WM8510_DAC) & 0xffbf;
-+ if(mute)
-+ wm8510_write(codec, WM8510_DAC, mute_reg | 0x40);
-+ else
-+ wm8510_write(codec, WM8510_DAC, mute_reg);
-+ return 0;
-+}
-+
-+/* liam need to make this lower power with dapm */
-+static int wm8510_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, dac unmute, active */
-+ wm8510_write(codec, WM8510_POWER1, 0x1ff);
-+ wm8510_write(codec, WM8510_POWER2, 0x1ff);
-+ wm8510_write(codec, WM8510_POWER3, 0x1ff);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, dac mute, inactive */
-+
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8510_write(codec, WM8510_POWER1, 0x0);
-+ wm8510_write(codec, WM8510_POWER2, 0x0);
-+ wm8510_write(codec, WM8510_POWER3, 0x0);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8510_dai = {
-+ .name = "WM8510 HiFi",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 1,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 1,
-+ },
-+ .config_sysclk = wm8510_config_sysclk,
-+ .digital_mute = wm8510_mute,
-+ .ops = {
-+ .prepare = wm8510_pcm_prepare,
-+ .hw_free = wm8510_hw_free,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8510_modes),
-+ .mode = wm8510_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8510_dai);
-+
-+static int wm8510_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8510_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8510_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8510_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8510 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8510_init(struct snd_soc_device *socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ codec->name = "WM8510";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8510_read_reg_cache;
-+ codec->write = wm8510_write;
-+ codec->dapm_event = wm8510_dapm_event;
-+ codec->dai = &wm8510_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8510_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8510_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8510_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8510_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8510_reg);
-+
-+ wm8510_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8510_add_controls(codec);
-+ wm8510_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if(ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8510_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8510 2 wire address is 0x1a
-+ */
-+#define I2C_DRIVERID_WM8510 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8510_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int wm8510_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8510_socdev;
-+ struct wm8510_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+ i2c_set_clientdata(i2c, codec);
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if(ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8510_init(socdev);
-+ if(ret < 0) {
-+ err("failed to initialise WM8510\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+}
-+
-+static int wm8510_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec *codec = i2c_get_clientdata(client);
-+ i2c_detach_client(client);
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+ return 0;
-+}
-+
-+static int wm8510_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8510_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8510_i2c_driver = {
-+ .driver = {
-+ .name = "WM8510 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8510,
-+ .attach_adapter = wm8510_i2c_attach,
-+ .detach_client = wm8510_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8510",
-+ .driver = &wm8510_i2c_driver,
-+};
-+#endif
-+
-+static int wm8510_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8510_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8510 Audio Codec %s", WM8510_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8510_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8510_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8510_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8510_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8510_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8510 = {
-+ .probe = wm8510_probe,
-+ .remove = wm8510_remove,
-+ .suspend = wm8510_suspend,
-+ .resume = wm8510_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8510);
-+
-+MODULE_DESCRIPTION("ASoC WM8510 driver");
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8510.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8510.h
-@@ -0,0 +1,64 @@
-+/*
-+ * wm8510.h -- WM8510 Soc Audio driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _WM8510_H
-+#define _WM8510_H
-+
-+/* WM8510 register space */
-+
-+#define WM8510_RESET 0x0
-+#define WM8510_POWER1 0x1
-+#define WM8510_POWER2 0x2
-+#define WM8510_POWER3 0x3
-+#define WM8510_IFACE 0x4
-+#define WM8510_COMP 0x5
-+#define WM8510_CLOCK 0x6
-+#define WM8510_ADD 0x7
-+#define WM8510_GPIO 0x8
-+#define WM8510_DAC 0xa
-+#define WM8510_DACVOL 0xb
-+#define WM8510_ADC 0xe
-+#define WM8510_ADCVOL 0xf
-+#define WM8510_EQ1 0x12
-+#define WM8510_EQ2 0x13
-+#define WM8510_EQ3 0x14
-+#define WM8510_EQ4 0x15
-+#define WM8510_EQ5 0x16
-+#define WM8510_DACLIM1 0x18
-+#define WM8510_DACLIM2 0x19
-+#define WM8510_NOTCH1 0x1b
-+#define WM8510_NOTCH2 0x1c
-+#define WM8510_NOTCH3 0x1d
-+#define WM8510_NOTCH4 0x1e
-+#define WM8510_ALC1 0x20
-+#define WM8510_ALC2 0x21
-+#define WM8510_ALC3 0x22
-+#define WM8510_NGATE 0x23
-+#define WM8510_PLLN 0x24
-+#define WM8510_PLLK1 0x25
-+#define WM8510_PLLK2 0x26
-+#define WM8510_PLLK3 0x27
-+#define WM8510_ATTEN 0x28
-+#define WM8510_INPUT 0x2c
-+#define WM8510_INPPGA 0x2d
-+#define WM8510_ADCBOOST 0x2f
-+#define WM8510_OUTPUT 0x31
-+#define WM8510_SPKMIX 0x32
-+#define WM8510_SPKVOL 0x36
-+#define WM8510_MONOMIX 0x38
-+
-+#define WM8510_CACHEREGNUM 57
-+
-+struct wm8510_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8510_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8510;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/imx/imx-ac97.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx-ac97.c
-@@ -0,0 +1,281 @@
-+/*
-+ * imx-ssi.c -- SSI driver for Freescale IMX
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Based on mxc-alsa-mc13783 (C) 2006 Freescale.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 29th Aug 2006 Initial version.
-+ *
-+ */
-+
-+#define IMX_AC97_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |\
-+ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
-+ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+/* may need to expand this */
-+static struct snd_soc_dai_mode imx_ssi_ac97_modes[] = {
-+ {0, 0, SNDRV_PCM_FMTBIT_S16_LE, IMX_AC97_RATES},
-+ {0, 0, SNDRV_PCM_FMTBIT_S18_3LE, IMX_AC97_RATES},
-+ {0, 0, SNDRV_PCM_FMTBIT_S20_3LE, IMX_AC97_RATES},
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_out = {
-+ .name = "SSI1 PCM Stereo out",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = emi_2_per,
-+ .watermark_level = SDMA_TXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI1_STX0,
-+ .event_id = DMA_REQ_SSI1_TX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_in = {
-+ .name = "SSI1 PCM Stereo in",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_RXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI1_SRX0,
-+ .event_id = DMA_REQ_SSI1_RX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_out = {
-+ .name = "SSI2 PCM Stereo out",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_TXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI2_STX0,
-+ .event_id = DMA_REQ_SSI2_TX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_in = {
-+ .name = "SSI2 PCM Stereo in",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_RXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI2_SRX0,
-+ .event_id = DMA_REQ_SSI2_RX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static unsigned short imx_ssi_ac97_read(struct snd_ac97 *ac97, unsigned short reg)
-+{
-+}
-+
-+static void imx_ssi_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val)
-+{
-+}
-+
-+static void imx_ssi_ac97_warm_reset(struct snd_ac97 *ac97)
-+{
-+}
-+
-+static void imx_ssi_ac97_cold_reset(struct snd_ac97 *ac97)
-+{
-+}
-+
-+struct snd_ac97_bus_ops soc_ac97_ops = {
-+ .read = imx_ssi_ac97_read,
-+ .write = imx_ssi_ac97_write,
-+ .warm_reset = imx_ssi_ac97_warm_reset,
-+ .reset = imx_ssi_ac97_cold_reset,
-+};
-+
-+
-+static intimx_ssi1_ac97_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+
-+
-+ return ret;
-+}
-+
-+static void imx_ssi1_ac97_remove(struct platform_device *pdev)
-+{
-+ /* shutdown SSI */
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR &= ~SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR &= ~SSI_SCR_SSIEN;
-+ }
-+
-+}
-+
-+static int imx_ssi1_ac97_prepare(struct snd_pcm_substream *substream)
-+{
-+ // set vra
-+}
-+
-+static int imx_ssi_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (!rtd->cpu_dai->active) {
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static int imx_ssi1_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ SSI1_SCR |= SSI_SCR_TE;
-+ SSI1_SIER |= SSI_SIER_TDMAE;
-+ } else {
-+ SSI1_SCR |= SSI_SCR_RE;
-+ SSI1_SIER |= SSI_SIER_RDMAE;
-+ }
-+ SSI1_SCR |= SSI_SCR_SSIEN;
-+
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSI1_SCR |= SSI_SCR_TE;
-+ else
-+ SSI1_SCR |= SSI_SCR_RE;
-+ break
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSI1_SCR &= ~SSI_SCR_TE;
-+ else
-+ SSI1_SCR &= ~SSI_SCR_RE;
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static void imx_ssi_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+
-+}
-+
-+#ifdef CONFIG_PM
-+static int imx_ssi_suspend(struct platform_device *dev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if(!dai->active)
-+ return 0;
-+
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR &= ~SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR &= ~SSI_SCR_SSIEN;
-+
-+ return 0;
-+}
-+
-+static int imx_ssi_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if(!dai->active)
-+ return 0;
-+
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR |= SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR |= SSI_SCR_SSIEN;
-+
-+ return 0;
-+}
-+
-+#else
-+#define imx_ssi_suspend NULL
-+#define imx_ssi_resume NULL
-+#endif
-+
-+static unsigned int imx_ssi_config_ac97_sysclk(struct snd_soc_cpu_dai *iface,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ return clk;
-+}
-+
-+struct snd_soc_cpu_dai imx_ssi_ac97_dai = {
-+ .name = "imx-ac97-1",
-+ .id = 0,
-+ .type = SND_SOC_DAI_AC97,
-+ .suspend = imx_ssi_suspend,
-+ .resume = imx_ssi_resume,
-+ .config_sysclk = imx_ssi_ac97_config_sysclk,
-+ .playback = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .ops = {
-+ .probe = imx_ac97_probe,
-+ .remove = imx_ac97_shutdown,
-+ .trigger = imx_ssi1_trigger,
-+ .prepare = imx_ssi_ac97_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(imx_ssi_ac97_modes),
-+ .mode = imx_ssi_ac97_modes,},
-+},
-+{
-+ .name = "imx-ac97-2",
-+ .id = 1,
-+ .type = SND_SOC_DAI_AC97,
-+ .suspend = imx_ssi_suspend,
-+ .resume = imx_ssi_resume,
-+ .config_sysclk = imx_ssi_ac97_config_sysclk,
-+ .playback = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .ops = {
-+ .probe = imx_ac97_probe,
-+ .remove = imx_ac97_shutdown,
-+ .trigger = imx_ssi1_trigger,
-+ .prepare = imx_ssi_ac97_prepare,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(imx_ssi_ac97_modes),
-+ .mode = imx_ssi_ac97_modes,},
-+};
-+
-+EXPORT_SYMBOL_GPL(imx_ssi_ac97_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("i.MX ASoC AC97 driver");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/imx/imx-i2s.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx-i2s.c
-@@ -0,0 +1,473 @@
-+/*
-+ * imx-ssi.c -- SSI driver for Freescale IMX
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Based on mxc-alsa-mc13783 (C) 2006 Freescale.
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 29th Aug 2006 Initial version.
-+ *
-+ */
-+
-+#define IMX_SSI_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J |\
-+ SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_DSP__A |\
-+ SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_CBS_CFS |\
-+ SND_SOC_DAIFMT_CBM_CFS | SND_SOC_DAIFMT_CBS_CFM |\
-+ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF)
-+
-+#define IMX_SSI_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define IMX_SSI_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | \
-+ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \
-+ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | \
-+ SNDRV_PCM_RATE_96000)
-+
-+#define IMX_SSI_BITS \
-+ (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
-+ SNDRV_PCM_FMTBIT_S24_LE)
-+
-+static struct snd_soc_dai_mode imx_ssi_pcm_modes[] = {
-+
-+ /* frame master and clock slave mode */
-+ {
-+ .fmt = IMX_SSI_DAIFMT | SND_SOC_DAIFMT_CBM_CFS,
-+ .tdm = SND_SOC_DAITDM_LRDW(0,0),
-+ .pcmfmt = IMX_SSI_BITS,
-+ .pcmrate = IMX_SSI_RATES,
-+ .pcmdir = IMX_SSI_DIR,
-+ .flags = SND_SOC_DAI_BFS_RCW,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSBW(1) | SND_SOC_FSBW(2),
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_out = {
-+ .name = "SSI1 PCM Stereo out",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = emi_2_per,
-+ .watermark_level = SDMA_TXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI1_STX0,
-+ .event_id = DMA_REQ_SSI1_TX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi1_pcm_stereo_in = {
-+ .name = "SSI1 PCM Stereo in",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_RXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI1_SRX0,
-+ .event_id = DMA_REQ_SSI1_RX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_out = {
-+ .name = "SSI2 PCM Stereo out",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_TXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI2_STX0,
-+ .event_id = DMA_REQ_SSI2_TX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+static imx_pcm_dma_params_t imx_ssi2_pcm_stereo_in = {
-+ .name = "SSI2 PCM Stereo in",
-+ .params = {
-+ .bd_number = 1,
-+ .transfer_type = per_2_emi,
-+ .watermark_level = SDMA_RXFIFO_WATERMARK,
-+ .word_size = TRANSFER_16BIT, // maybe add this in setup func
-+ .per_address = SSI2_SRX0,
-+ .event_id = DMA_REQ_SSI2_RX1,
-+ .peripheral_type = SSI,
-+ },
-+};
-+
-+
-+static int imx_ssi_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ if (!rtd->cpu_dai->active) {
-+
-+ }
-+
-+ return 0;
-+}
-+
-+static int imx_ssi1_hw_tx_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 bfs, div;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
-+
-+ SSI1_STCR = 0;
-+ SSI1_STCCR = 0;
-+
-+ /* DAI mode */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ SSI1_STCR |= SSI_STCR_TSCKP | SSI_STCR_TFSI |
-+ SSI_STCR_TEFS | SSI_STCR_TXBIT0;
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ SSI1_STCR |= SSI_STCR_TSCKP | SSI_STCR_TFSI | SSI_STCR_TXBIT0;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ SSI1_STCR |= SSI_STCR_TEFS; // data 1 bit after sync
-+ case SND_SOC_DAIFMT_DSP_A:
-+ SSI1_STCR |= SSI_STCR_TFSL; // frame is 1 bclk long
-+
-+ /* DAI clock inversion */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ SSI1_STCR |= SSI_STCR_TFSI | SSI_STCR_TSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ SSI1_STCR |= SSI_STCR_TSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ SSI1_STCR |= SSI_STCR_TFSI;
-+ break;
-+ }
-+ break;
-+ }
-+
-+ /* DAI data (word) size */
-+ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ SSI1_STCCR |= SSI_STCCR_WL(16);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ SSI1_STCCR |= SSI_STCCR_WL(20);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ SSI1_STCCR |= SSI_STCCR_WL(24);
-+ break;
-+ }
-+
-+ /* DAI clock master masks */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ SSI1_STCR |= SSI_STCR_TFDIR | SSI_STCR_TXDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ SSI1_STCR |= SSI_STCR_TFDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ SSI1_STCR |= SSI_STCR_TXDIR;
-+ break;
-+ }
-+
-+ /* DAI BCLK ratio to SYSCLK / MCLK */
-+ /* prescaler modulus - todo */
-+ switch (bfs) {
-+ case 2:
-+ break;
-+ case 4:
-+ break;
-+ case 8:
-+ break;
-+ case 16:
-+ break;
-+ }
-+
-+ /* TDM - todo, only fifo 0 atm */
-+ SSI1_STCR |= SSI_STCR_TFEN0;
-+ SSI1_STCCR |= SSI_STCCR_DC(params_channels(params));
-+
-+ return 0;
-+}
-+
-+static int imx_ssi1_hw_rx_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ u16 bfs, div;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->cpu_dai->dai_runtime.bfs);
-+
-+ SSI1_SRCR = 0;
-+ SSI1_SRCCR = 0;
-+
-+ /* DAI mode */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ SSI1_SRCR |= SSI_SRCR_RSCKP | SSI_SRCR_RFSI |
-+ SSI_STCR_REFS | SSI_STCR_RXBIT0;
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ SSI1_SRCR |= SSI_SRCR_RSCKP | SSI_SRCR_RFSI | SSI_SRCR_RXBIT0;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_B:
-+ SSI1_SRCR |= SSI_SRCR_REFS; // data 1 bit after sync
-+ case SND_SOC_DAIFMT_DSP_A:
-+ SSI1_SRCR |= SSI_SRCR_RFSL; // frame is 1 bclk long
-+
-+ /* DAI clock inversion */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_IB_IF:
-+ SSI1_SRCR |= SSI_SRCR_TFSI | SSI_SRCR_TSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ SSI1_SRCR |= SSI_SRCR_RSCKP;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ SSI1_SRCR |= SSI_SRCR_RFSI;
-+ break;
-+ }
-+ break;
-+ }
-+
-+ /* DAI data (word) size */
-+ switch(rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ SSI1_SRCCR |= SSI_SRCCR_WL(16);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ SSI1_SRCCR |= SSI_SRCCR_WL(20);
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ SSI1_SRCCR |= SSI_SRCCR_WL(24);
-+ break;
-+ }
-+
-+ /* DAI clock master masks */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK){
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ SSI1_SRCR |= SSI_SRCR_RFDIR | SSI_SRCR_RXDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFM:
-+ SSI1_SRCR |= SSI_SRCR_RFDIR;
-+ break;
-+ case SND_SOC_DAIFMT_CBM_CFS:
-+ SSI1_SRCR |= SSI_SRCR_RXDIR;
-+ break;
-+ }
-+
-+ /* DAI BCLK ratio to SYSCLK / MCLK */
-+ /* prescaler modulus - todo */
-+ switch (bfs) {
-+ case 2:
-+ break;
-+ case 4:
-+ break;
-+ case 8:
-+ break;
-+ case 16:
-+ break;
-+ }
-+
-+ /* TDM - todo, only fifo 0 atm */
-+ SSI1_SRCR |= SSI_SRCR_RFEN0;
-+ SSI1_SRCCR |= SSI_SRCCR_DC(params_channels(params));
-+
-+ return 0;
-+}
-+
-+static int imx_ssi1_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ /* clear register if not enabled */
-+ if(!(SSI1_SCR & SSI_SCR_SSIEN))
-+ SSI1_SCR = 0;
-+
-+ /* async */
-+ if (rtd->cpu_dai->flags & SND_SOC_DAI_ASYNC)
-+ SSI1_SCR |= SSI_SCR_SYN;
-+
-+ /* DAI mode */
-+ switch(rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ SSI1_SCR |= SSI_SCR_NET;
-+ break;
-+ }
-+
-+ /* TDM - to complete */
-+
-+ /* Tx/Rx config */
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ return imx_ssi1_hw_tx_params(substream, params);
-+ } else {
-+ return imx_ssi1_hw_rx_params(substream, params);
-+ }
-+}
-+
-+
-+
-+static int imx_ssi1_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ SSI1_SCR |= SSI_SCR_TE;
-+ SSI1_SIER |= SSI_SIER_TDMAE;
-+ } else {
-+ SSI1_SCR |= SSI_SCR_RE;
-+ SSI1_SIER |= SSI_SIER_RDMAE;
-+ }
-+ SSI1_SCR |= SSI_SCR_SSIEN;
-+
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSI1_SCR |= SSI_SCR_TE;
-+ else
-+ SSI1_SCR |= SSI_SCR_RE;
-+ break
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ SSI1_SCR &= ~SSI_SCR_TE;
-+ else
-+ SSI1_SCR &= ~SSI_SCR_RE;
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static void imx_ssi_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+
-+ /* shutdown SSI */
-+ if (!rtd->cpu_dai->active) {
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR &= ~SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR &= ~SSI_SCR_SSIEN;
-+ }
-+}
-+
-+#ifdef CONFIG_PM
-+static int imx_ssi_suspend(struct platform_device *dev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if(!dai->active)
-+ return 0;
-+
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR &= ~SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR &= ~SSI_SCR_SSIEN;
-+
-+ return 0;
-+}
-+
-+static int imx_ssi_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+ if(!dai->active)
-+ return 0;
-+
-+ if(rtd->cpu_dai->id == 0)
-+ SSI1_SCR |= SSI_SCR_SSIEN;
-+ else
-+ SSI2_SCR |= SSI_SCR_SSIEN;
-+
-+ return 0;
-+}
-+
-+#else
-+#define imx_ssi_suspend NULL
-+#define imx_ssi_resume NULL
-+#endif
-+
-+static unsigned int imx_ssi_config_pcm_sysclk(struct snd_soc_cpu_dai *iface,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ return clk;
-+}
-+
-+struct snd_soc_cpu_dai imx_ssi_pcm_dai = {
-+ .name = "imx-i2s-1",
-+ .id = 0,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = imx_ssi_suspend,
-+ .resume = imx_ssi_resume,
-+ .config_sysclk = imx_ssi_config_pcm_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = imx_ssi_startup,
-+ .shutdown = imx_ssi_shutdown,
-+ .trigger = imx_ssi1_trigger,
-+ .hw_params = imx_ssi1_pcm_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(imx_ssi_modes),
-+ .mode = imx_ssi_modes,},
-+},
-+{
-+ .name = "imx-i2s-2",
-+ .id = 1,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = imx_ssi_suspend,
-+ .resume = imx_ssi_resume,
-+ .config_sysclk = imx_ssi_config_pcm_sysclk,
-+ .playback = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 1,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = imx_ssi_startup,
-+ .shutdown = imx_ssi_shutdown,
-+ .trigger = imx_ssi1_trigger,
-+ .hw_params = imx_ssi1_pcm_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(imx_ssi_modes),
-+ .mode = imx_ssi_modes,},
-+};
-+
-+
-+EXPORT_SYMBOL_GPL(imx_ssi_i2s_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("i.MX ASoC I2S driver");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/include/linux/i2c-id.h
-===================================================================
---- linux-2.6.17/include/linux/i2c-id.h.orig 2006-11-25 00:15:33.571185017 +0100
-+++ linux-2.6.17/include/linux/i2c-id.h 2006-11-25 00:17:31.017877925 +0100
-@@ -113,6 +113,9 @@
- #define I2C_DRIVERID_PCF8563 83 /* Philips PCF8563 RTC */
- #define I2C_DRIVERID_RS5C372 84 /* Ricoh RS5C372 RTC */
-
-+#define I2C_DRIVERID_WM8731 89 /* Wolfson WM8731 audio codec */
-+#define I2C_DRIVERID_WM8750 90 /* Wolfson WM8750 audio codec */
-+
- #define I2C_DRIVERID_I2CDEV 900
- #define I2C_DRIVERID_ARP 902 /* SMBus ARP Client */
- #define I2C_DRIVERID_ALERT 903 /* SMBus Alert Responder Client */
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8976.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8976.c
-@@ -0,0 +1,953 @@
-+/*
-+ * wm8976.c -- WM8976 ALSA Soc Audio driver
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/moduleparam.h>
-+#include <linux/version.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/delay.h>
-+#include <linux/pm.h>
-+#include <linux/i2c.h>
-+#include <linux/platform_device.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <sound/soc-dapm.h>
-+#include <sound/initval.h>
-+
-+#include "wm8976.h"
-+
-+#define AUDIO_NAME "wm8976"
-+#define WM8976_VERSION "0.2"
-+
-+/*
-+ * Debug
-+ */
-+
-+#define WM8976_DEBUG 0
-+
-+#ifdef WM8976_DEBUG
-+#define dbg(format, arg...) \
-+ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
-+#else
-+#define dbg(format, arg...) do {} while (0)
-+#endif
-+#define err(format, arg...) \
-+ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
-+#define info(format, arg...) \
-+ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
-+#define warn(format, arg...) \
-+ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8976;
-+
-+/*
-+ * wm8976 register cache
-+ * We can't read the WM8976 register space when we are
-+ * using 2 wire for device control, so we cache them instead.
-+ */
-+static const u16 wm8976_reg[WM8976_CACHEREGNUM] = {
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0050, 0x0000, 0x0140, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x00ff,
-+ 0x00ff, 0x0000, 0x0100, 0x00ff,
-+ 0x00ff, 0x0000, 0x012c, 0x002c,
-+ 0x002c, 0x002c, 0x002c, 0x0000,
-+ 0x0032, 0x0000, 0x0000, 0x0000,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0038, 0x000b, 0x0032, 0x0000,
-+ 0x0008, 0x000c, 0x0093, 0x00e9,
-+ 0x0000, 0x0000, 0x0000, 0x0000,
-+ 0x0033, 0x0010, 0x0010, 0x0100,
-+ 0x0100, 0x0002, 0x0001, 0x0001,
-+ 0x0039, 0x0039, 0x0039, 0x0039,
-+ 0x0001, 0x0001,
-+};
-+
-+#define WM8976_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
-+ SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_NB_NF | \
-+ SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_IF)
-+
-+#define WM8976_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define WM8976_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000)
-+
-+#define WM8976_PCM_FORMATS \
-+ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
-+ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | \
-+ SNDRV_PCM_FORMAT_S32_LE)
-+
-+#define WM8976_BCLK \
-+ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | SND_SOC_FSBD(8) |\
-+ SND_SOC_FSBD(16) | SND_SOC_FSBD(32))
-+
-+static struct snd_soc_dai_mode wm8976_modes[] = {
-+ /* codec frame and clock master modes */
-+ {
-+ .fmt = WM8976_DAIFMT | SND_SOC_DAIFMT_CBM_CFM,
-+ .pcmfmt = WM8976_PCM_FORMATS,
-+ .pcmrate = WM8976_RATES,
-+ .pcmdir = WM8976_DIR,
-+ .flags = SND_SOC_DAI_BFS_DIV,
-+ .fs = 256,
-+ .bfs = WM8976_BCLK,
-+ },
-+
-+ /* codec frame and clock slave modes */
-+ {
-+ .fmt = WM8976_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = WM8976_PCM_FORMATS,
-+ .pcmrate = WM8976_RATES,
-+ .pcmdir = WM8976_DIR,
-+ .fs = SND_SOC_FS_ALL,
-+ .bfs = SND_SOC_FSB_ALL,
-+ },
-+};
-+
-+/*
-+ * read wm8976 register cache
-+ */
-+static inline unsigned int wm8976_read_reg_cache(struct snd_soc_codec *codec,
-+ unsigned int reg)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg == WM8976_RESET)
-+ return 0;
-+ if (reg >= WM8976_CACHEREGNUM)
-+ return -1;
-+ return cache[reg];
-+}
-+
-+/*
-+ * write wm8976 register cache
-+ */
-+static inline void wm8976_write_reg_cache(struct snd_soc_codec *codec,
-+ u16 reg, unsigned int value)
-+{
-+ u16 *cache = codec->reg_cache;
-+ if (reg >= WM8976_CACHEREGNUM)
-+ return;
-+ cache[reg] = value;
-+}
-+
-+/*
-+ * write to the WM8976 register space
-+ */
-+static int wm8976_write(struct snd_soc_codec *codec, unsigned int reg,
-+ unsigned int value)
-+{
-+ u8 data[2];
-+
-+ /* data is
-+ * D15..D9 WM8976 register offset
-+ * D8...D0 register data
-+ */
-+ data[0] = (reg << 1) | ((value >> 8) & 0x0001);
-+ data[1] = value & 0x00ff;
-+
-+ wm8976_write_reg_cache (codec, reg, value);
-+ if (codec->hw_write(codec->control_data, data, 2) == 2)
-+ return 0;
-+ else
-+ return -1;
-+}
-+
-+#define wm8976_reset(c) wm8976_write(c, WM8976_RESET, 0)
-+
-+static const char *wm8976_companding[] = {"Off", "NC", "u-law", "A-law" };
-+static const char *wm8976_deemp[] = {"None", "32kHz", "44.1kHz", "48kHz" };
-+static const char *wm8976_eqmode[] = {"Capture", "Playback" };
-+static const char *wm8976_bw[] = {"Narrow", "Wide" };
-+static const char *wm8976_eq1[] = {"80Hz", "105Hz", "135Hz", "175Hz" };
-+static const char *wm8976_eq2[] = {"230Hz", "300Hz", "385Hz", "500Hz" };
-+static const char *wm8976_eq3[] = {"650Hz", "850Hz", "1.1kHz", "1.4kHz" };
-+static const char *wm8976_eq4[] = {"1.8kHz", "2.4kHz", "3.2kHz", "4.1kHz" };
-+static const char *wm8976_eq5[] = {"5.3kHz", "6.9kHz", "9kHz", "11.7kHz" };
-+static const char *wm8976_alc[] =
-+ {"ALC both on", "ALC left only", "ALC right only", "Limiter" };
-+
-+static const struct soc_enum wm8976_enum[] = {
-+ SOC_ENUM_SINGLE(WM8976_COMP, 1, 4, wm8976_companding), /* adc */
-+ SOC_ENUM_SINGLE(WM8976_COMP, 3, 4, wm8976_companding), /* dac */
-+ SOC_ENUM_SINGLE(WM8976_DAC, 4, 4, wm8976_deemp),
-+ SOC_ENUM_SINGLE(WM8976_EQ1, 8, 2, wm8976_eqmode),
-+
-+ SOC_ENUM_SINGLE(WM8976_EQ1, 5, 4, wm8976_eq1),
-+ SOC_ENUM_SINGLE(WM8976_EQ2, 8, 2, wm8976_bw),
-+ SOC_ENUM_SINGLE(WM8976_EQ2, 5, 4, wm8976_eq2),
-+ SOC_ENUM_SINGLE(WM8976_EQ3, 8, 2, wm8976_bw),
-+
-+ SOC_ENUM_SINGLE(WM8976_EQ3, 5, 4, wm8976_eq3),
-+ SOC_ENUM_SINGLE(WM8976_EQ4, 8, 2, wm8976_bw),
-+ SOC_ENUM_SINGLE(WM8976_EQ4, 5, 4, wm8976_eq4),
-+ SOC_ENUM_SINGLE(WM8976_EQ5, 8, 2, wm8976_bw),
-+
-+ SOC_ENUM_SINGLE(WM8976_EQ5, 5, 4, wm8976_eq5),
-+ SOC_ENUM_SINGLE(WM8976_ALC3, 8, 2, wm8976_alc),
-+};
-+
-+static const struct snd_kcontrol_new wm8976_snd_controls[] = {
-+SOC_SINGLE("Digital Loopback Switch", WM8976_COMP, 0, 1, 0),
-+
-+SOC_ENUM("ADC Companding", wm8976_enum[0]),
-+SOC_ENUM("DAC Companding", wm8976_enum[1]),
-+
-+SOC_SINGLE("Jack Detection Enable", WM8976_JACK1, 6, 1, 0),
-+
-+SOC_DOUBLE("DAC Inversion Switch", WM8976_DAC, 0, 1, 1, 0),
-+
-+SOC_DOUBLE_R("Headphone Playback Volume", WM8976_DACVOLL, WM8976_DACVOLR, 0, 127, 0),
-+
-+SOC_SINGLE("High Pass Filter Switch", WM8976_ADC, 8, 1, 0),
-+SOC_SINGLE("High Pass Filter Switch", WM8976_ADC, 8, 1, 0),
-+SOC_SINGLE("High Pass Cut Off", WM8976_ADC, 4, 7, 0),
-+
-+SOC_DOUBLE("ADC Inversion Switch", WM8976_ADC, 0, 1, 1, 0),
-+
-+SOC_SINGLE("Capture Volume", WM8976_ADCVOL, 0, 127, 0),
-+
-+SOC_ENUM("Equaliser Function", wm8976_enum[3]),
-+SOC_ENUM("EQ1 Cut Off", wm8976_enum[4]),
-+SOC_SINGLE("EQ1 Volume", WM8976_EQ1, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ2 Bandwith", wm8976_enum[5]),
-+SOC_ENUM("EQ2 Cut Off", wm8976_enum[6]),
-+SOC_SINGLE("EQ2 Volume", WM8976_EQ2, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ3 Bandwith", wm8976_enum[7]),
-+SOC_ENUM("EQ3 Cut Off", wm8976_enum[8]),
-+SOC_SINGLE("EQ3 Volume", WM8976_EQ3, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ4 Bandwith", wm8976_enum[9]),
-+SOC_ENUM("EQ4 Cut Off", wm8976_enum[10]),
-+SOC_SINGLE("EQ4 Volume", WM8976_EQ4, 0, 31, 1),
-+
-+SOC_ENUM("Equaliser EQ5 Bandwith", wm8976_enum[11]),
-+SOC_ENUM("EQ5 Cut Off", wm8976_enum[12]),
-+SOC_SINGLE("EQ5 Volume", WM8976_EQ5, 0, 31, 1),
-+
-+SOC_SINGLE("DAC Playback Limiter Switch", WM8976_DACLIM1, 8, 1, 0),
-+SOC_SINGLE("DAC Playback Limiter Decay", WM8976_DACLIM1, 4, 15, 0),
-+SOC_SINGLE("DAC Playback Limiter Attack", WM8976_DACLIM1, 0, 15, 0),
-+
-+SOC_SINGLE("DAC Playback Limiter Threshold", WM8976_DACLIM2, 4, 7, 0),
-+SOC_SINGLE("DAC Playback Limiter Boost", WM8976_DACLIM2, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Enable Switch", WM8976_ALC1, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Max Gain", WM8976_ALC1, 3, 7, 0),
-+SOC_SINGLE("ALC Capture Min Gain", WM8976_ALC1, 0, 7, 0),
-+
-+SOC_SINGLE("ALC Capture ZC Switch", WM8976_ALC2, 8, 1, 0),
-+SOC_SINGLE("ALC Capture Hold", WM8976_ALC2, 4, 7, 0),
-+SOC_SINGLE("ALC Capture Target", WM8976_ALC2, 0, 15, 0),
-+
-+SOC_ENUM("ALC Capture Mode", wm8976_enum[13]),
-+SOC_SINGLE("ALC Capture Decay", WM8976_ALC3, 4, 15, 0),
-+SOC_SINGLE("ALC Capture Attack", WM8976_ALC3, 0, 15, 0),
-+
-+SOC_SINGLE("ALC Capture Noise Gate Switch", WM8976_NGATE, 3, 1, 0),
-+SOC_SINGLE("ALC Capture Noise Gate Threshold", WM8976_NGATE, 0, 7, 0),
-+
-+SOC_SINGLE("Capture PGA ZC Switch", WM8976_INPPGA, 7, 1, 0),
-+SOC_SINGLE("Capture PGA Volume", WM8976_INPPGA, 0, 63, 0),
-+
-+SOC_DOUBLE_R("Headphone Playback ZC Switch", WM8976_HPVOLL, WM8976_HPVOLR, 7, 1, 0),
-+SOC_DOUBLE_R("Headphone Playback Switch", WM8976_HPVOLL, WM8976_HPVOLR, 6, 1, 1),
-+SOC_DOUBLE_R("Headphone Playback Volume", WM8976_HPVOLL, WM8976_HPVOLR, 0, 63, 0),
-+
-+SOC_DOUBLE_R("Speaker Playback ZC Switch", WM8976_SPKVOLL, WM8976_SPKVOLR, 7, 1, 0),
-+SOC_DOUBLE_R("Speaker Playback Switch", WM8976_SPKVOLL, WM8976_SPKVOLR, 6, 1, 1),
-+SOC_DOUBLE_R("Speaker Playback Volume", WM8976_SPKVOLL, WM8976_SPKVOLR, 0, 63, 0),
-+
-+SOC_SINGLE("Capture Boost(+20dB)", WM8976_ADCBOOST, 8, 1, 0),
-+};
-+
-+/* add non dapm controls */
-+static int wm8976_add_controls(struct snd_soc_codec *codec)
-+{
-+ int err, i;
-+
-+ for (i = 0; i < ARRAY_SIZE(wm8976_snd_controls); i++) {
-+ err = snd_ctl_add(codec->card,
-+ snd_soc_cnew(&wm8976_snd_controls[i],codec, NULL));
-+ if (err < 0)
-+ return err;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Left Output Mixer */
-+static const snd_kcontrol_new_t wm8976_left_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8976_OUTPUT, 6, 1, 1),
-+SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8976_MIXL, 0, 1, 1),
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8976_MIXL, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8976_MIXL, 5, 1, 0),
-+};
-+
-+/* Right Output Mixer */
-+static const snd_kcontrol_new_t wm8976_right_mixer_controls[] = {
-+SOC_DAPM_SINGLE("Left PCM Playback Switch", WM8976_OUTPUT, 5, 1, 1),
-+SOC_DAPM_SINGLE("Right PCM Playback Switch", WM8976_MIXR, 0, 1, 1),
-+SOC_DAPM_SINGLE("Line Bypass Switch", WM8976_MIXR, 1, 1, 0),
-+SOC_DAPM_SINGLE("Aux Playback Switch", WM8976_MIXR, 5, 1, 0),
-+};
-+
-+/* Left AUX Input boost vol */
-+static const snd_kcontrol_new_t wm8976_laux_boost_controls =
-+SOC_DAPM_SINGLE("Aux Volume", WM8976_ADCBOOST, 0, 3, 0);
-+
-+/* Left Input boost vol */
-+static const snd_kcontrol_new_t wm8976_lmic_boost_controls =
-+SOC_DAPM_SINGLE("Input Volume", WM8976_ADCBOOST, 4, 3, 0);
-+
-+/* Left Aux In to PGA */
-+static const snd_kcontrol_new_t wm8976_laux_capture_boost_controls =
-+SOC_DAPM_SINGLE("Capture Switch", WM8976_ADCBOOST, 8, 1, 0);
-+
-+/* Left Input P In to PGA */
-+static const snd_kcontrol_new_t wm8976_lmicp_capture_boost_controls =
-+SOC_DAPM_SINGLE("Input P Capture Boost Switch", WM8976_INPUT, 0, 1, 0);
-+
-+/* Left Input N In to PGA */
-+static const snd_kcontrol_new_t wm8976_lmicn_capture_boost_controls =
-+SOC_DAPM_SINGLE("Input N Capture Boost Switch", WM8976_INPUT, 1, 1, 0);
-+
-+// TODO Widgets
-+static const struct snd_soc_dapm_widget wm8976_dapm_widgets[] = {
-+#if 0
-+//SND_SOC_DAPM_MUTE("Mono Mute", WM8976_MONOMIX, 6, 0),
-+//SND_SOC_DAPM_MUTE("Speaker Mute", WM8976_SPKMIX, 6, 0),
-+
-+SND_SOC_DAPM_MIXER("Speaker Mixer", WM8976_POWER3, 2, 0,
-+ &wm8976_speaker_mixer_controls[0],
-+ ARRAY_SIZE(wm8976_speaker_mixer_controls)),
-+SND_SOC_DAPM_MIXER("Mono Mixer", WM8976_POWER3, 3, 0,
-+ &wm8976_mono_mixer_controls[0],
-+ ARRAY_SIZE(wm8976_mono_mixer_controls)),
-+SND_SOC_DAPM_DAC("DAC", "HiFi Playback", WM8976_POWER3, 0, 0),
-+SND_SOC_DAPM_ADC("ADC", "HiFi Capture", WM8976_POWER3, 0, 0),
-+SND_SOC_DAPM_PGA("Aux Input", WM8976_POWER1, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkN Out", WM8976_POWER3, 5, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("SpkP Out", WM8976_POWER3, 6, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mono Out", WM8976_POWER3, 7, 0, NULL, 0),
-+SND_SOC_DAPM_PGA("Mic PGA", WM8976_POWER2, 2, 0, NULL, 0),
-+
-+SND_SOC_DAPM_PGA("Aux Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8976_aux_boost_controls, 1),
-+SND_SOC_DAPM_PGA("Mic Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8976_mic_boost_controls, 1),
-+SND_SOC_DAPM_SWITCH("Capture Boost", SND_SOC_NOPM, 0, 0,
-+ &wm8976_capture_boost_controls),
-+
-+SND_SOC_DAPM_MIXER("Boost Mixer", WM8976_POWER2, 4, 0, NULL, 0),
-+
-+SND_SOC_DAPM_MICBIAS("Mic Bias", WM8976_POWER1, 4, 0),
-+
-+SND_SOC_DAPM_INPUT("MICN"),
-+SND_SOC_DAPM_INPUT("MICP"),
-+SND_SOC_DAPM_INPUT("AUX"),
-+SND_SOC_DAPM_OUTPUT("MONOOUT"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTP"),
-+SND_SOC_DAPM_OUTPUT("SPKOUTN"),
-+#endif
-+};
-+
-+static const char *audio_map[][3] = {
-+ /* Mono output mixer */
-+ {"Mono Mixer", "PCM Playback Switch", "DAC"},
-+ {"Mono Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Mono Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Speaker output mixer */
-+ {"Speaker Mixer", "PCM Playback Switch", "DAC"},
-+ {"Speaker Mixer", "Aux Playback Switch", "Aux Input"},
-+ {"Speaker Mixer", "Line Bypass Switch", "Boost Mixer"},
-+
-+ /* Outputs */
-+ {"Mono Out", NULL, "Mono Mixer"},
-+ {"MONOOUT", NULL, "Mono Out"},
-+ {"SpkN Out", NULL, "Speaker Mixer"},
-+ {"SpkP Out", NULL, "Speaker Mixer"},
-+ {"SPKOUTN", NULL, "SpkN Out"},
-+ {"SPKOUTP", NULL, "SpkP Out"},
-+
-+ /* Boost Mixer */
-+ {"Boost Mixer", NULL, "ADC"},
-+ {"Capture Boost Switch", "Aux Capture Boost Switch", "AUX"},
-+ {"Aux Boost", "Aux Volume", "Boost Mixer"},
-+ {"Capture Boost", "Capture Switch", "Boost Mixer"},
-+ {"Mic Boost", "Mic Volume", "Boost Mixer"},
-+
-+ /* Inputs */
-+ {"MICP", NULL, "Mic Boost"},
-+ {"MICN", NULL, "Mic PGA"},
-+ {"Mic PGA", NULL, "Capture Boost"},
-+ {"AUX", NULL, "Aux Input"},
-+
-+ /* */
-+
-+ /* terminator */
-+ {NULL, NULL, NULL},
-+};
-+
-+static int wm8976_add_widgets(struct snd_soc_codec *codec)
-+{
-+ int i;
-+
-+ for(i = 0; i < ARRAY_SIZE(wm8976_dapm_widgets); i++) {
-+ snd_soc_dapm_new_control(codec, &wm8976_dapm_widgets[i]);
-+ }
-+
-+ /* set up audio path map */
-+ for(i = 0; audio_map[i][0] != NULL; i++) {
-+ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1],
-+ audio_map[i][2]);
-+ }
-+
-+ snd_soc_dapm_new_widgets(codec);
-+ return 0;
-+}
-+
-+struct pll_ {
-+ unsigned int in_hz, out_hz;
-+ unsigned int pre:4; /* prescale - 1 */
-+ unsigned int n:4;
-+ unsigned int k;
-+};
-+
-+struct pll_ pll[] = {
-+ {12000000, 11289600, 0, 7, 0x86c220},
-+ {12000000, 12288000, 0, 8, 0x3126e8},
-+ {13000000, 11289600, 0, 6, 0xf28bd4},
-+ {13000000, 12288000, 0, 7, 0x8fd525},
-+ {12288000, 11289600, 0, 7, 0x59999a},
-+ {11289600, 12288000, 0, 8, 0x80dee9},
-+ /* TODO: liam - add more entries */
-+};
-+
-+static int set_pll(struct snd_soc_codec *codec, unsigned int in,
-+ unsigned int out)
-+{
-+ int i;
-+ u16 reg;
-+
-+ if(out == 0) {
-+ reg = wm8976_read_reg_cache(codec, WM8976_POWER1);
-+ wm8976_write(codec, WM8976_POWER1, reg & 0x1df);
-+ return 0;
-+ }
-+
-+ for(i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (in == pll[i].in_hz && out == pll[i].out_hz) {
-+ wm8976_write(codec, WM8976_PLLN, (pll[i].pre << 4) | pll[i].n);
-+ wm8976_write(codec, WM8976_PLLK1, pll[i].k >> 18);
-+ wm8976_write(codec, WM8976_PLLK1, (pll[i].k >> 9) && 0x1ff);
-+ wm8976_write(codec, WM8976_PLLK1, pll[i].k && 0x1ff);
-+ reg = wm8976_read_reg_cache(codec, WM8976_POWER1);
-+ wm8976_write(codec, WM8976_POWER1, reg | 0x020);
-+ return 0;
-+ }
-+ }
-+ return -EINVAL;
-+}
-+
-+/* mclk dividers * 2 */
-+static unsigned char mclk_div[] = {2, 3, 4, 6, 8, 12, 16, 24};
-+
-+/* we need 256FS to drive the DAC's and ADC's */
-+static unsigned int wm8976_config_sysclk(struct snd_soc_codec_dai *dai,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ int i, j, best_clk = info->fs * info->rate;
-+
-+ /* can we run at this clk without the PLL ? */
-+ for (i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if ((best_clk >> 1) * mclk_div[i] == clk) {
-+ dai->pll_in = 0;
-+ dai->clk_div = mclk_div[i];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+
-+ /* now check for PLL support */
-+ for (i = 0; i < ARRAY_SIZE(pll); i++) {
-+ if (pll[i].in_hz == clk) {
-+ for (j = 0; j < ARRAY_SIZE(mclk_div); j++) {
-+ if (pll[i].out_hz == mclk_div[j] * (best_clk >> 1)) {
-+ dai->pll_in = clk;
-+ dai->pll_out = pll[i].out_hz;
-+ dai->clk_div = mclk_div[j];
-+ dai->mclk = best_clk;
-+ return dai->mclk;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* this clk is not supported */
-+ return 0;
-+}
-+
-+static int wm8976_pcm_prepare(snd_pcm_substream_t *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct snd_soc_codec_dai *dai = rtd->codec_dai;
-+ u16 iface = 0, bfs, clk = 0, adn;
-+ int fs = 48000 << 7, i;
-+
-+ bfs = SND_SOC_FSBD_REAL(rtd->codec_dai->dai_runtime.bfs);
-+ switch (bfs) {
-+ case 2:
-+ clk |= 0x1 << 2;
-+ break;
-+ case 4:
-+ clk |= 0x2 << 2;
-+ break;
-+ case 8:
-+ clk |= 0x3 << 2;
-+ break;
-+ case 16:
-+ clk |= 0x4 << 2;
-+ break;
-+ case 32:
-+ clk |= 0x5 << 2;
-+ break;
-+ }
-+
-+ /* set master/slave audio interface */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CLOCK_MASK) {
-+ case SND_SOC_DAIFMT_CBM_CFM:
-+ clk |= 0x0001;
-+ break;
-+ case SND_SOC_DAIFMT_CBS_CFS:
-+ break;
-+ }
-+
-+ /* interface format */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
-+ case SND_SOC_DAIFMT_I2S:
-+ iface |= 0x0010;
-+ break;
-+ case SND_SOC_DAIFMT_RIGHT_J:
-+ break;
-+ case SND_SOC_DAIFMT_LEFT_J:
-+ iface |= 0x0008;
-+ break;
-+ case SND_SOC_DAIFMT_DSP_A:
-+ iface |= 0x00018;
-+ break;
-+ }
-+
-+ /* bit size */
-+ switch (rtd->codec_dai->dai_runtime.pcmfmt) {
-+ case SNDRV_PCM_FMTBIT_S16_LE:
-+ break;
-+ case SNDRV_PCM_FMTBIT_S20_3LE:
-+ iface |= 0x0020;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S24_LE:
-+ iface |= 0x0040;
-+ break;
-+ case SNDRV_PCM_FMTBIT_S32_LE:
-+ iface |= 0x0060;
-+ break;
-+ }
-+
-+ /* clock inversion */
-+ switch (rtd->codec_dai->dai_runtime.fmt & SND_SOC_DAIFMT_INV_MASK) {
-+ case SND_SOC_DAIFMT_NB_NF:
-+ break;
-+ case SND_SOC_DAIFMT_IB_IF:
-+ iface |= 0x0180;
-+ break;
-+ case SND_SOC_DAIFMT_IB_NF:
-+ iface |= 0x0100;
-+ break;
-+ case SND_SOC_DAIFMT_NB_IF:
-+ iface |= 0x0080;
-+ break;
-+ }
-+
-+ /* filter coefficient */
-+ adn = wm8976_read_reg_cache(codec, WM8976_ADD) & 0x1f1;
-+ switch (rtd->codec_dai->dai_runtime.pcmrate) {
-+ case SNDRV_PCM_RATE_8000:
-+ adn |= 0x5 << 1;
-+ fs = 8000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_11025:
-+ adn |= 0x4 << 1;
-+ fs = 11025 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_16000:
-+ adn |= 0x3 << 1;
-+ fs = 16000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_22050:
-+ adn |= 0x2 << 1;
-+ fs = 22050 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_32000:
-+ adn |= 0x1 << 1;
-+ fs = 32000 << 7;
-+ break;
-+ case SNDRV_PCM_RATE_44100:
-+ fs = 44100 << 7;
-+ break;
-+ }
-+
-+ /* do we need to enable the PLL */
-+ if(dai->pll_in)
-+ set_pll(codec, dai->pll_in, dai->pll_out);
-+
-+ /* divide the clock to 256 fs */
-+ for(i = 0; i < ARRAY_SIZE(mclk_div); i++) {
-+ if (dai->clk_div == mclk_div[i]) {
-+ clk |= i << 5;
-+ clk &= 0xff;
-+ goto set;
-+ }
-+ }
-+
-+set:
-+ /* set iface */
-+ wm8976_write(codec, WM8976_IFACE, iface);
-+ wm8976_write(codec, WM8976_CLOCK, clk);
-+
-+ return 0;
-+}
-+
-+static int wm8976_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_device *socdev = rtd->socdev;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ set_pll(codec, 0, 0);
-+ return 0;
-+}
-+
-+static int wm8976_mute(struct snd_soc_codec *codec,
-+ struct snd_soc_codec_dai *dai, int mute)
-+{
-+ u16 mute_reg = wm8976_read_reg_cache(codec, WM8976_DAC) & 0xffbf;
-+ if(mute)
-+ wm8976_write(codec, WM8976_DAC, mute_reg | 0x40);
-+ else
-+ wm8976_write(codec, WM8976_DAC, mute_reg);
-+
-+ return 0;
-+}
-+
-+/* TODO: liam need to make this lower power with dapm */
-+static int wm8976_dapm_event(struct snd_soc_codec *codec, int event)
-+{
-+
-+ switch (event) {
-+ case SNDRV_CTL_POWER_D0: /* full On */
-+ /* vref/mid, clk and osc on, dac unmute, active */
-+ wm8976_write(codec, WM8976_POWER1, 0x1ff);
-+ wm8976_write(codec, WM8976_POWER2, 0x1ff);
-+ wm8976_write(codec, WM8976_POWER3, 0x1ff);
-+ break;
-+ case SNDRV_CTL_POWER_D1: /* partial On */
-+ case SNDRV_CTL_POWER_D2: /* partial On */
-+ break;
-+ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
-+ /* everything off except vref/vmid, dac mute, inactive */
-+
-+ break;
-+ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
-+ /* everything off, dac mute, inactive */
-+ wm8976_write(codec, WM8976_POWER1, 0x0);
-+ wm8976_write(codec, WM8976_POWER2, 0x0);
-+ wm8976_write(codec, WM8976_POWER3, 0x0);
-+ break;
-+ }
-+ codec->dapm_state = event;
-+ return 0;
-+}
-+
-+struct snd_soc_codec_dai wm8976_dai = {
-+ .name = "WM8976 HiFi",
-+ .playback = {
-+ .stream_name = "Playback",
-+ .channels_min = 1,
-+ .channels_max = 2,
-+ },
-+ .capture = {
-+ .stream_name = "Capture",
-+ .channels_min = 1,
-+ .channels_max = 1,
-+ },
-+ .config_sysclk = wm8976_config_sysclk,
-+ .digital_mute = wm8976_mute,
-+ .ops = {
-+ .prepare = wm8976_pcm_prepare,
-+ .hw_free = wm8976_hw_free,
-+ },
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(wm8976_modes),
-+ .mode = wm8976_modes,
-+ },
-+};
-+EXPORT_SYMBOL_GPL(wm8976_dai);
-+
-+static int wm8976_suspend(struct platform_device *pdev, pm_message_t state)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+ return 0;
-+}
-+
-+static int wm8976_resume(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int i;
-+ u8 data[2];
-+ u16 *cache = codec->reg_cache;
-+
-+ /* Sync reg_cache with the hardware */
-+ for (i = 0; i < ARRAY_SIZE(wm8976_reg); i++) {
-+ data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001);
-+ data[1] = cache[i] & 0x00ff;
-+ codec->hw_write(codec->control_data, data, 2);
-+ }
-+ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8976_dapm_event(codec, codec->suspend_dapm_state);
-+ return 0;
-+}
-+
-+/*
-+ * initialise the WM8976 driver
-+ * register the mixer and dsp interfaces with the kernel
-+ */
-+static int wm8976_init(struct snd_soc_device* socdev)
-+{
-+ struct snd_soc_codec *codec = socdev->codec;
-+ int ret = 0;
-+
-+ codec->name = "WM8976";
-+ codec->owner = THIS_MODULE;
-+ codec->read = wm8976_read_reg_cache;
-+ codec->write = wm8976_write;
-+ codec->dapm_event = wm8976_dapm_event;
-+ codec->dai = &wm8976_dai;
-+ codec->num_dai = 1;
-+ codec->reg_cache_size = ARRAY_SIZE(wm8976_reg);
-+ codec->reg_cache =
-+ kzalloc(sizeof(u16) * ARRAY_SIZE(wm8976_reg), GFP_KERNEL);
-+ if (codec->reg_cache == NULL)
-+ return -ENOMEM;
-+ memcpy(codec->reg_cache, wm8976_reg,
-+ sizeof(u16) * ARRAY_SIZE(wm8976_reg));
-+ codec->reg_cache_size = sizeof(u16) * ARRAY_SIZE(wm8976_reg);
-+
-+ wm8976_reset(codec);
-+
-+ /* register pcms */
-+ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
-+ if(ret < 0) {
-+ kfree(codec->reg_cache);
-+ return ret;
-+ }
-+
-+ /* power on device */
-+ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
-+ wm8976_add_controls(codec);
-+ wm8976_add_widgets(codec);
-+ ret = snd_soc_register_card(socdev);
-+ if(ret < 0) {
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+ }
-+
-+ return ret;
-+}
-+
-+static struct snd_soc_device *wm8976_socdev;
-+
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+
-+/*
-+ * WM8976 2 wire address is 0x1a
-+ */
-+#define I2C_DRIVERID_WM8976 0xfefe /* liam - need a proper id */
-+
-+static unsigned short normal_i2c[] = { 0, I2C_CLIENT_END };
-+
-+/* Magic definition of all other variables and things */
-+I2C_CLIENT_INSMOD;
-+
-+static struct i2c_driver wm8976_i2c_driver;
-+static struct i2c_client client_template;
-+
-+/* If the i2c layer weren't so broken, we could pass this kind of data
-+ around */
-+
-+static int wm8976_codec_probe(struct i2c_adapter *adap, int addr, int kind)
-+{
-+ struct snd_soc_device *socdev = wm8976_socdev;
-+ struct wm8976_setup_data *setup = socdev->codec_data;
-+ struct snd_soc_codec *codec = socdev->codec;
-+ struct i2c_client *i2c;
-+ int ret;
-+
-+ if (addr != setup->i2c_address)
-+ return -ENODEV;
-+
-+ client_template.adapter = adap;
-+ client_template.addr = addr;
-+
-+ i2c = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
-+ if (i2c == NULL){
-+ kfree(codec);
-+ return -ENOMEM;
-+ }
-+ memcpy(i2c, &client_template, sizeof(struct i2c_client));
-+
-+ i2c_set_clientdata(i2c, codec);
-+
-+ codec->control_data = i2c;
-+
-+ ret = i2c_attach_client(i2c);
-+ if(ret < 0) {
-+ err("failed to attach codec at addr %x\n", addr);
-+ goto err;
-+ }
-+
-+ ret = wm8976_init(socdev);
-+ if(ret < 0) {
-+ err("failed to initialise WM8976\n");
-+ goto err;
-+ }
-+ return ret;
-+
-+err:
-+ kfree(codec);
-+ kfree(i2c);
-+ return ret;
-+
-+}
-+
-+static int wm8976_i2c_detach(struct i2c_client *client)
-+{
-+ struct snd_soc_codec *codec = i2c_get_clientdata(client);
-+
-+ i2c_detach_client(client);
-+
-+ kfree(codec->reg_cache);
-+ kfree(client);
-+
-+ return 0;
-+}
-+
-+static int wm8976_i2c_attach(struct i2c_adapter *adap)
-+{
-+ return i2c_probe(adap, &addr_data, wm8976_codec_probe);
-+}
-+
-+/* corgi i2c codec control layer */
-+static struct i2c_driver wm8976_i2c_driver = {
-+ .driver = {
-+ .name = "WM8976 I2C Codec",
-+ .owner = THIS_MODULE,
-+ },
-+ .id = I2C_DRIVERID_WM8976,
-+ .attach_adapter = wm8976_i2c_attach,
-+ .detach_client = wm8976_i2c_detach,
-+ .command = NULL,
-+};
-+
-+static struct i2c_client client_template = {
-+ .name = "WM8976",
-+ .driver = &wm8976_i2c_driver,
-+};
-+#endif
-+
-+static int wm8976_probe(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct wm8976_setup_data *setup;
-+ struct snd_soc_codec *codec;
-+ int ret = 0;
-+
-+ info("WM8976 Audio Codec %s", WM8976_VERSION);
-+
-+ setup = socdev->codec_data;
-+ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
-+ if (codec == NULL)
-+ return -ENOMEM;
-+
-+ socdev->codec = codec;
-+ mutex_init(&codec->mutex);
-+ INIT_LIST_HEAD(&codec->dapm_widgets);
-+ INIT_LIST_HEAD(&codec->dapm_paths);
-+
-+ wm8976_socdev = socdev;
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ if (setup->i2c_address) {
-+ normal_i2c[0] = setup->i2c_address;
-+ codec->hw_write = (hw_write_t)i2c_master_send;
-+ ret = i2c_add_driver(&wm8976_i2c_driver);
-+ if (ret != 0)
-+ printk(KERN_ERR "can't add i2c driver");
-+ }
-+#else
-+ /* Add other interfaces here */
-+#endif
-+ return ret;
-+}
-+
-+/* power down chip */
-+static int wm8976_remove(struct platform_device *pdev)
-+{
-+ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
-+ struct snd_soc_codec *codec = socdev->codec;
-+
-+ if (codec->control_data)
-+ wm8976_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
-+
-+ snd_soc_free_pcms(socdev);
-+ snd_soc_dapm_free(socdev);
-+#if defined (CONFIG_I2C) || defined (CONFIG_I2C_MODULE)
-+ i2c_del_driver(&wm8976_i2c_driver);
-+#endif
-+ kfree(codec);
-+
-+ return 0;
-+}
-+
-+struct snd_soc_codec_device soc_codec_dev_wm8976 = {
-+ .probe = wm8976_probe,
-+ .remove = wm8976_remove,
-+ .suspend = wm8976_suspend,
-+ .resume = wm8976_resume,
-+};
-+
-+EXPORT_SYMBOL_GPL(soc_codec_dev_wm8976);
-+
-+MODULE_DESCRIPTION("ASoC WM8976 driver");
-+MODULE_AUTHOR("Graeme Gregory");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/codecs/wm8976.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/codecs/wm8976.h
-@@ -0,0 +1,73 @@
-+/*
-+ * wm8976.h -- WM8976 Soc Audio driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _WM8976_H
-+#define _WM8976_H
-+
-+/* WM8976 register space */
-+
-+#define WM8976_RESET 0x0
-+#define WM8976_POWER1 0x1
-+#define WM8976_POWER2 0x2
-+#define WM8976_POWER3 0x3
-+#define WM8976_IFACE 0x4
-+#define WM8976_COMP 0x5
-+#define WM8976_CLOCK 0x6
-+#define WM8976_ADD 0x7
-+#define WM8976_GPIO 0x8
-+#define WM8976_JACK1 0x9
-+#define WM8976_DAC 0xa
-+#define WM8976_DACVOLL 0xb
-+#define WM8976_DACVOLR 0xc
-+#define WM8976_JACK2 0xd
-+#define WM8976_ADC 0xe
-+#define WM8976_ADCVOL 0xf
-+#define WM8976_EQ1 0x12
-+#define WM8976_EQ2 0x13
-+#define WM8976_EQ3 0x14
-+#define WM8976_EQ4 0x15
-+#define WM8976_EQ5 0x16
-+#define WM8976_DACLIM1 0x18
-+#define WM8976_DACLIM2 0x19
-+#define WM8976_NOTCH1 0x1b
-+#define WM8976_NOTCH2 0x1c
-+#define WM8976_NOTCH3 0x1d
-+#define WM8976_NOTCH4 0x1e
-+#define WM8976_ALC1 0x20
-+#define WM8976_ALC2 0x21
-+#define WM8976_ALC3 0x22
-+#define WM8976_NGATE 0x23
-+#define WM8976_PLLN 0x24
-+#define WM8976_PLLK1 0x25
-+#define WM8976_PLLK2 0x26
-+#define WM8976_PLLK3 0x27
-+#define WM8976_3D 0x29
-+#define WM8976_BEEP 0x2b
-+#define WM8976_INPUT 0x2c
-+#define WM8976_INPPGA 0x2d
-+#define WM8976_ADCBOOST 0x2f
-+#define WM8976_OUTPUT 0x31
-+#define WM8976_MIXL 0x32
-+#define WM8976_MIXR 0x33
-+#define WM8976_HPVOLL 0x34
-+#define WM8976_HPVOLR 0x35
-+#define WM8976_SPKVOLL 0x36
-+#define WM8976_SPKVOLR 0x37
-+#define WM8976_OUT3MIX 0x38
-+#define WM8976_MONOMIX 0x39
-+
-+#define WM8976_CACHEREGNUM 58
-+
-+struct wm8976_setup_data {
-+ unsigned short i2c_address;
-+};
-+
-+extern struct snd_soc_codec_dai wm8976_dai;
-+extern struct snd_soc_codec_device soc_codec_dev_wm8976;
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.c
-@@ -0,0 +1,454 @@
-+/*
-+ * linux/sound/arm/mxc-pcm.c -- ALSA SoC interface for the Freescale i.MX CPU's
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Based on pxa2xx-pcm.c by Nicolas Pitre, (C) 2004 MontaVista Software, Inc.
-+ * and on mxc-alsa-mc13783 (C) 2006 Freescale.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Revision history
-+ * 29th Aug 2006 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/dma-mapping.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <asm/dma.h>
-+#include <asm/hardware.h>
-+
-+#include "imx-pcm.h"
-+
-+/* debug */
-+#define IMX_DEBUG 0
-+#if IMX_DEBUG
-+#define dbg(format, arg...) printk(format, ## arg)
-+#else
-+#define dbg(format, arg...)
-+#endif
-+
-+static const struct snd_pcm_hardware mxc_pcm_hardware = {
-+ .info = (SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_BLOCK_TRANSFER |
-+ SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_PAUSE |
-+ SNDRV_PCM_INFO_RESUME),
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE |
-+ SNDRV_PCM_FMTBIT_S24_LE,
-+ .buffer_bytes_max = 32 * 1024,
-+ .period_bytes_min = 64,
-+ .period_bytes_max = 8 * 1024,
-+ .periods_min = 2,
-+ .periods_max = 255,
-+ .fifo_size = 0,
-+};
-+
-+struct mxc_runtime_data {
-+ int dma_ch;
-+ struct mxc_pcm_dma_param *dma_params;
-+};
-+
-+/*!
-+ * This function stops the current dma transfert for playback
-+ * and clears the dma pointers.
-+ *
-+ * @param substream pointer to the structure of the current stream.
-+ *
-+ */
-+static void audio_stop_dma(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ unsigned int dma_size = frames_to_bytes(runtime, runtime->period_size);
-+ unsigned int offset dma_size * s->periods;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&prtd->dma_lock, flags);
-+
-+ dbg("MXC : audio_stop_dma active = 0\n");
-+ prtd->active = 0;
-+ prtd->period = 0;
-+ prtd->periods = 0;
-+
-+ /* this stops the dma channel and clears the buffer ptrs */
-+ mxc_dma_stop(prtd->dma_wchannel);
-+ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_TO_DEVICE);
-+ else
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_FROM_DEVICE);
-+
-+ spin_unlock_irqrestore(&prtd->dma_lock, flags);
-+}
-+
-+/*!
-+ * This function is called whenever a new audio block needs to be
-+ * transferred to mc13783. The function receives the address and the size
-+ * of the new block and start a new DMA transfer.
-+ *
-+ * @param substream pointer to the structure of the current stream.
-+ *
-+ */
-+static int dma_new_period(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ unsigned int dma_size;
-+ unsigned int offset;
-+ int ret=0;
-+ dma_request_t sdma_request;
-+
-+ if (prtd->active){
-+ memset(&sdma_request, 0, sizeof(dma_request_t));
-+ dma_size = frames_to_bytes(runtime, runtime->period_size);
-+ dbg("s->period (%x) runtime->periods (%d)\n",
-+ s->period,runtime->periods);
-+ dbg("runtime->period_size (%d) dma_size (%d)\n",
-+ (unsigned int)runtime->period_size,
-+ runtime->dma_bytes);
-+
-+ offset = dma_size * prtd->period;
-+ snd_assert(dma_size <= DMA_BUF_SIZE, );
-+ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
-+ sdma_request.sourceAddr = (char*)(dma_map_single(NULL,
-+ runtime->dma_area + offset, dma_size, DMA_TO_DEVICE));
-+ else
-+ sdma_request.destAddr = (char*)(dma_map_single(NULL,
-+ runtime->dma_area + offset, dma_size, DMA_FROM_DEVICE));
-+ sdma_request.count = dma_size;
-+
-+ dbg("MXC: Start DMA offset (%d) size (%d)\n", offset,
-+ runtime->dma_bytes);
-+
-+ mxc_dma_set_config(prtd->dma_wchannel, &sdma_request, 0);
-+ if((ret = mxc_dma_start(prtd->dma_wchannel)) < 0) {
-+ dbg("audio_process_dma: cannot queue DMA buffer\
-+ (%i)\n", ret);
-+ return err;
-+ }
-+ prtd->tx_spin = 1; /* FGA little trick to retrieve DMA pos */
-+ prtd->period++;
-+ prtd->period %= runtime->periods;
-+ }
-+ return ret;
-+}
-+
-+
-+/*!
-+ * This is a callback which will be called
-+ * when a TX transfer finishes. The call occurs
-+ * in interrupt context.
-+ *
-+ * @param dat pointer to the structure of the current stream.
-+ *
-+ */
-+static void audio_dma_irq(void *data)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_pcm_runtime *runtime;
-+ struct mxc_runtime_data *prtd;
-+ unsigned int dma_size;
-+ unsigned int previous_period;
-+ unsigned int offset;
-+
-+ substream = data;
-+ runtime = substream->runtime;
-+ prtd = runtime->private_data;
-+ previous_period = prtd->periods;
-+ dma_size = frames_to_bytes(runtime, runtime->period_size);
-+ offset = dma_size * previous_period;
-+
-+ prtd->tx_spin = 0;
-+ prtd->periods++;
-+ prtd->periods %= runtime->periods;
-+
-+ /*
-+ * Give back to the CPU the access to the non cached memory
-+ */
-+ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_TO_DEVICE);
-+ else
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_FROM_DEVICE);
-+ /*
-+ * If we are getting a callback for an active stream then we inform
-+ * the PCM middle layer we've finished a period
-+ */
-+ if (prtd->active)
-+ snd_pcm_period_elapsed(substream);
-+
-+ /*
-+ * Trig next DMA transfer
-+ */
-+ dma_new_period(substream);
-+}
-+
-+/*!
-+ * This function configures the hardware to allow audio
-+ * playback operations. It is called by ALSA framework.
-+ *
-+ * @param substream pointer to the structure of the current stream.
-+ *
-+ * @return 0 on success, -1 otherwise.
-+ */
-+static int
-+snd_mxc_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ int ret = 0;
-+ prtd->period = 0;
-+ prtd->periods = 0;
-+
-+ dma_channel_params params;
-+ int channel = 0; // passed in ?
-+
-+ if ((ret = mxc_request_dma(&channel, "ALSA TX SDMA") < 0)){
-+ dbg("error requesting a write dma channel\n");
-+ return ret;
-+ }
-+
-+ /* configure DMA params */
-+ memset(&params, 0, sizeof(dma_channel_params));
-+ params.bd_number = 1;
-+ params.arg = s;
-+ params.callback = callback;
-+ params.transfer_type = emi_2_per;
-+ params.watermark_level = SDMA_TXFIFO_WATERMARK;
-+ params.word_size = TRANSFER_16BIT;
-+ //dbg(KERN_ERR "activating connection SSI1 - SDMA\n");
-+ params.per_address = SSI1_BASE_ADDR;
-+ params.event_id = DMA_REQ_SSI1_TX1;
-+ params.peripheral_type = SSI;
-+
-+ /* set up chn with params */
-+ mxc_dma_setup_channel(channel, &params);
-+ s->dma_wchannel = channel;
-+
-+ return ret;
-+}
-+
-+static int mxc_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ int ret;
-+
-+ if((ret=snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
-+ return ret;
-+ runtime->dma_addr = virt_to_phys(runtime->dma_area);
-+
-+ return ret;
-+}
-+
-+static int mxc_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ return snd_pcm_lib_free_pages(substream);
-+}
-+
-+static int mxc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct mxc_runtime_data *prtd = substream->runtime->private_data;
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ prtd->tx_spin = 0;
-+ /* requested stream startup */
-+ prtd->active = 1;
-+ ret = dma_new_period(substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ /* requested stream shutdown */
-+ ret = audio_stop_dma(substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ prtd->active = 0;
-+ prtd->periods = 0;
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ prtd->active = 1;
-+ prtd->tx_spin = 0;
-+ ret = dma_new_period(substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ prtd->active = 0;
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ prtd->active = 1;
-+ if (prtd->old_offset) {
-+ prtd->tx_spin = 0;
-+ ret = dma_new_period(substream);
-+ }
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
-+static snd_pcm_uframes_t mxc_pcm_pointer(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ unsigned int offset = 0;
-+
-+ /* tx_spin value is used here to check if a transfert is active */
-+ if (prtd->tx_spin){
-+ offset = (runtime->period_size * (prtd->periods)) +
-+ (runtime->period_size >> 1);
-+ if (offset >= runtime->buffer_size)
-+ offset = runtime->period_size >> 1;
-+ } else {
-+ offset = (runtime->period_size * (s->periods));
-+ if (offset >= runtime->buffer_size)
-+ offset = 0;
-+ }
-+
-+ return offset;
-+}
-+
-+
-+static int mxc_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd;
-+ int ret;
-+
-+ snd_soc_set_runtime_hwparams(substream, &mxc_pcm_hardware);
-+
-+ if ((err = snd_pcm_hw_constraint_integer(runtime,
-+ SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
-+ return err;
-+ if ((err = snd_pcm_hw_constraint_list(runtime, 0,
-+ SNDRV_PCM_HW_PARAM_RATE, &hw_playback_rates)) < 0)
-+ return err;
-+ msleep(10); // liam - why
-+
-+ /* setup DMA controller for playback */
-+ if((err = configure_write_channel(&mxc_mc13783->s[SNDRV_PCM_STREAM_PLAYBACK],
-+ audio_dma_irq)) < 0 )
-+ return err;
-+
-+ if((prtd = kzalloc(sizeof(struct mxc_runtime_data), GFP_KERNEL)) == NULL) {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
-+
-+ runtime->private_data = prtd;
-+ return 0;
-+
-+ err1:
-+ kfree(prtd);
-+ out:
-+ return ret;
-+}
-+
-+static int mxc_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+
-+// mxc_mc13783_t *chip;
-+ audio_stream_t *s;
-+ device_data_t* device;
-+ int ssi;
-+
-+ //chip = snd_pcm_substream_chip(substream);
-+ s = &chip->s[substream->pstr->stream];
-+ device = &s->stream_device;
-+ ssi = device->ssi;
-+
-+ //disable_stereodac();
-+
-+ ssi_transmit_enable(ssi, false);
-+ ssi_interrupt_disable(ssi, ssi_tx_dma_interrupt_enable);
-+ ssi_tx_fifo_enable(ssi, ssi_fifo_0, false);
-+ ssi_enable(ssi, false);
-+
-+ chip->s[substream->pstr->stream].stream = NULL;
-+
-+ return 0;
-+}
-+
-+static int
-+mxc_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-+ runtime->dma_area,
-+ runtime->dma_addr,
-+ runtime->dma_bytes);
-+}
-+
-+struct snd_pcm_ops mxc_pcm_ops = {
-+ .open = mxc_pcm_open,
-+ .close = mxc_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = mxc_pcm_hw_params,
-+ .hw_free = mxc_pcm_hw_free,
-+ .prepare = mxc_pcm_prepare,
-+ .trigger = mxc_pcm_trigger,
-+ .pointer = mxc_pcm_pointer,
-+ .mmap = mxc_pcm_mmap,
-+};
-+
-+static u64 mxc_pcm_dmamask = 0xffffffff;
-+
-+int mxc_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
-+ struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &mxc_pcm_dmamask;
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = 0xffffffff;
-+
-+ if (dai->playback.channels_min) {
-+ ret = mxc_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto out;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = mxc_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto out;
-+ }
-+ out:
-+ return ret;
-+}
-+
-+struct snd_soc_platform mxc_soc_platform = {
-+ .name = "mxc-audio",
-+ .pcm_ops = &mxc_pcm_ops,
-+ .pcm_new = mxc_pcm_new,
-+ .pcm_free = mxc_pcm_free_dma_buffers,
-+};
-+
-+EXPORT_SYMBOL_GPL(mxc_soc_platform);
-+
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_DESCRIPTION("Freescale i.MX PCM DMA module");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx21-pcm.h
-@@ -0,0 +1,237 @@
-+/*
-+ * mxc-pcm.h :- ASoC platform header for Freescale i.MX
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _MXC_PCM_H
-+#define _MXC_PCM_H
-+
-+struct {
-+ char *name; /* stream identifier */
-+ dma_channel_params dma_params;
-+} mxc_pcm_dma_param;
-+
-+extern struct snd_soc_cpu_dai mxc_ssi_dai[3];
-+
-+/* platform data */
-+extern struct snd_soc_platform mxc_soc_platform;
-+extern struct snd_ac97_bus_ops mxc_ac97_ops;
-+
-+/* temp until imx-regs.h is up2date */
-+#define SSI1_STX0 __REG(IMX_SSI1_BASE + 0x00)
-+#define SSI1_STX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x00)
-+#define SSI1_STX1 __REG(IMX_SSI1_BASE + 0x04)
-+#define SSI1_STX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x04)
-+#define SSI1_SRX0 __REG(IMX_SSI1_BASE + 0x08)
-+#define SSI1_SRX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x08)
-+#define SSI1_SRX1 __REG(IMX_SSI1_BASE + 0x0c)
-+#define SSI1_SRX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x0c)
-+#define SSI1_SCR __REG(IMX_SSI1_BASE + 0x10)
-+#define SSI1_SISR __REG(IMX_SSI1_BASE + 0x14)
-+#define SSI1_SIER __REG(IMX_SSI1_BASE + 0x18)
-+#define SSI1_STCR __REG(IMX_SSI1_BASE + 0x1c)
-+#define SSI1_SRCR __REG(IMX_SSI1_BASE + 0x20)
-+#define SSI1_STCCR __REG(IMX_SSI1_BASE + 0x24)
-+#define SSI1_SRCCR __REG(IMX_SSI1_BASE + 0x28)
-+#define SSI1_SFCSR __REG(IMX_SSI1_BASE + 0x2c)
-+#define SSI1_STR __REG(IMX_SSI1_BASE + 0x30)
-+#define SSI1_SOR __REG(IMX_SSI1_BASE + 0x34)
-+#define SSI1_SACNT __REG(IMX_SSI1_BASE + 0x38)
-+#define SSI1_SACADD __REG(IMX_SSI1_BASE + 0x3c)
-+#define SSI1_SACDAT __REG(IMX_SSI1_BASE + 0x40)
-+#define SSI1_SATAG __REG(IMX_SSI1_BASE + 0x44)
-+#define SSI1_STMSK __REG(IMX_SSI1_BASE + 0x48)
-+#define SSI1_SRMSK __REG(IMX_SSI1_BASE + 0x4c)
-+
-+#define SSI2_STX0 __REG(IMX_SSI2_BASE + 0x00)
-+#define SSI2_STX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x00)
-+#define SSI2_STX1 __REG(IMX_SSI2_BASE + 0x04)
-+#define SSI2_STX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x04)
-+#define SSI2_SRX0 __REG(IMX_SSI2_BASE + 0x08)
-+#define SSI2_SRX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x08)
-+#define SSI2_SRX1 __REG(IMX_SSI2_BASE + 0x0c)
-+#define SSI2_SRX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x0c)
-+#define SSI2_SCR __REG(IMX_SSI2_BASE + 0x10)
-+#define SSI2_SISR __REG(IMX_SSI2_BASE + 0x14)
-+#define SSI2_SIER __REG(IMX_SSI2_BASE + 0x18)
-+#define SSI2_STCR __REG(IMX_SSI2_BASE + 0x1c)
-+#define SSI2_SRCR __REG(IMX_SSI2_BASE + 0x20)
-+#define SSI2_STCCR __REG(IMX_SSI2_BASE + 0x24)
-+#define SSI2_SRCCR __REG(IMX_SSI2_BASE + 0x28)
-+#define SSI2_SFCSR __REG(IMX_SSI2_BASE + 0x2c)
-+#define SSI2_STR __REG(IMX_SSI2_BASE + 0x30)
-+#define SSI2_SOR __REG(IMX_SSI2_BASE + 0x34)
-+#define SSI2_SACNT __REG(IMX_SSI2_BASE + 0x38)
-+#define SSI2_SACADD __REG(IMX_SSI2_BASE + 0x3c)
-+#define SSI2_SACDAT __REG(IMX_SSI2_BASE + 0x40)
-+#define SSI2_SATAG __REG(IMX_SSI2_BASE + 0x44)
-+#define SSI2_STMSK __REG(IMX_SSI2_BASE + 0x48)
-+#define SSI2_SRMSK __REG(IMX_SSI2_BASE + 0x4c)
-+
-+#define SSI_SCR_CLK_IST (1 << 9)
-+#define SSI_SCR_TCH_EN (1 << 8)
-+#define SSI_SCR_SYS_CLK_EN (1 << 7)
-+#define SSI_SCR_I2S_MODE_NORM (0 << 5)
-+#define SSI_SCR_I2S_MODE_MSTR (1 << 5)
-+#define SSI_SCR_I2S_MODE_SLAVE (2 << 5)
-+#define SSI_SCR_SYN (1 << 4)
-+#define SSI_SCR_NET (1 << 3)
-+#define SSI_SCR_RE (1 << 2)
-+#define SSI_SCR_TE (1 << 1)
-+#define SSI_SCR_SSIEN (1 << 0)
-+
-+#define SSI_SISR_CMDAU (1 << 18)
-+#define SSI_SISR_CMDDU (1 << 17)
-+#define SSI_SISR_RXT (1 << 16)
-+#define SSI_SISR_RDR1 (1 << 15)
-+#define SSI_SISR_RDR0 (1 << 14)
-+#define SSI_SISR_TDE1 (1 << 13)
-+#define SSI_SISR_TDE0 (1 << 12)
-+#define SSI_SISR_ROE1 (1 << 11)
-+#define SSI_SISR_ROE0 (1 << 10)
-+#define SSI_SISR_TUE1 (1 << 9)
-+#define SSI_SISR_TUE0 (1 << 8)
-+#define SSI_SISR_TFS (1 << 7)
-+#define SSI_SISR_RFS (1 << 6)
-+#define SSI_SISR_TLS (1 << 5)
-+#define SSI_SISR_RLS (1 << 4)
-+#define SSI_SISR_RFF1 (1 << 3)
-+#define SSI_SISR_RFF0 (1 << 2)
-+#define SSI_SISR_TFE1 (1 << 1)
-+#define SSI_SISR_TFE0 (1 << 0)
-+
-+#define SSI_SIER_RDMAE (1 << 22)
-+#define SSI_SIER_RIE (1 << 21)
-+#define SSI_SIER_TDMAE (1 << 20)
-+#define SSI_SIER_TIE (1 << 19)
-+#define SSI_SIER_CMDAU_EN (1 << 18)
-+#define SSI_SIER_CMDDU_EN (1 << 17)
-+#define SSI_SIER_RXT_EN (1 << 16)
-+#define SSI_SIER_RDR1_EN (1 << 15)
-+#define SSI_SIER_RDR0_EN (1 << 14)
-+#define SSI_SIER_TDE1_EN (1 << 13)
-+#define SSI_SIER_TDE0_EN (1 << 12)
-+#define SSI_SIER_ROE1_EN (1 << 11)
-+#define SSI_SIER_ROE0_EN (1 << 10)
-+#define SSI_SIER_TUE1_EN (1 << 9)
-+#define SSI_SIER_TUE0_EN (1 << 8)
-+#define SSI_SIER_TFS_EN (1 << 7)
-+#define SSI_SIER_RFS_EN (1 << 6)
-+#define SSI_SIER_TLS_EN (1 << 5)
-+#define SSI_SIER_RLS_EN (1 << 4)
-+#define SSI_SIER_RFF1_EN (1 << 3)
-+#define SSI_SIER_RFF0_EN (1 << 2)
-+#define SSI_SIER_TFE1_EN (1 << 1)
-+#define SSI_SIER_TFE0_EN (1 << 0)
-+
-+#define SSI_STCR_TXBIT0 (1 << 9)
-+#define SSI_STCR_TFEN1 (1 << 8)
-+#define SSI_STCR_TFEN0 (1 << 7)
-+#define SSI_STCR_TFDIR (1 << 6)
-+#define SSI_STCR_TXDIR (1 << 5)
-+#define SSI_STCR_TSHFD (1 << 4)
-+#define SSI_STCR_TSCKP (1 << 3)
-+#define SSI_STCR_TFSI (1 << 2)
-+#define SSI_STCR_TFSL (1 << 1)
-+#define SSI_STCR_TEFS (1 << 0)
-+
-+#define SSI_SRCR_RXBIT0 (1 << 9)
-+#define SSI_SRCR_RFEN1 (1 << 8)
-+#define SSI_SRCR_RFEN0 (1 << 7)
-+#define SSI_SRCR_RFDIR (1 << 6)
-+#define SSI_SRCR_RXDIR (1 << 5)
-+#define SSI_SRCR_RSHFD (1 << 4)
-+#define SSI_SRCR_RSCKP (1 << 3)
-+#define SSI_SRCR_RFSI (1 << 2)
-+#define SSI_SRCR_RFSL (1 << 1)
-+#define SSI_SRCR_REFS (1 << 0)
-+
-+#define SSI_STCCR_DIV2 (1 << 18)
-+#define SSI_STCCR_PSR (1 << 15)
-+#define SSI_STCCR_WL(x) ((((x) - 2) >> 1) << 13)
-+#define SSI_STCCR_DC(x) (((x) & 0x1f) << 8)
-+#define SSI_STCCR_PM(x) (((x) & 0xff) << 0)
-+
-+#define SSI_SRCCR_DIV2 (1 << 18)
-+#define SSI_SRCCR_PSR (1 << 15)
-+#define SSI_SRCCR_WL(x) ((((x) - 2) >> 1) << 13)
-+#define SSI_SRCCR_DC(x) (((x) & 0x1f) << 8)
-+#define SSI_SRCCR_PM(x) (((x) & 0xff) << 0)
-+
-+
-+#define SSI_SFCSR_RFCNT1(x) (((x) & 0xf) << 28)
-+#define SSI_SFCSR_TFCNT1(x) (((x) & 0xf) << 24)
-+#define SSI_SFCSR_RFWM1(x) (((x) & 0xf) << 20)
-+#define SSI_SFCSR_TFWM1(x) (((x) & 0xf) << 16)
-+#define SSI_SFCSR_RFCNT0(x) (((x) & 0xf) << 12)
-+#define SSI_SFCSR_TFCNT0(x) (((x) & 0xf) << 8)
-+#define SSI_SFCSR_RFWM0(x) (((x) & 0xf) << 4)
-+#define SSI_SFCSR_TFWM0(x) (((x) & 0xf) << 0)
-+
-+#define SSI_STR_TEST (1 << 15)
-+#define SSI_STR_RCK2TCK (1 << 14)
-+#define SSI_STR_RFS2TFS (1 << 13)
-+#define SSI_STR_RXSTATE(x) (((x) & 0xf) << 8)
-+#define SSI_STR_TXD2RXD (1 << 7)
-+#define SSI_STR_TCK2RCK (1 << 6)
-+#define SSI_STR_TFS2RFS (1 << 5)
-+#define SSI_STR_TXSTATE(x) (((x) & 0xf) << 0)
-+
-+#define SSI_SOR_CLKOFF (1 << 6)
-+#define SSI_SOR_RX_CLR (1 << 5)
-+#define SSI_SOR_TX_CLR (1 << 4)
-+#define SSI_SOR_INIT (1 << 3)
-+#define SSI_SOR_WAIT(x) (((x) & 0x3) << 1)
-+#define SSI_SOR_SYNRST (1 << 0)
-+
-+#define SSI_SACNT_FRDIV(x) (((x) & 0x3f) << 5)
-+#define SSI_SACNT_WR (x << 4)
-+#define SSI_SACNT_RD (x << 3)
-+#define SSI_SACNT_TIF (x << 2)
-+#define SSI_SACNT_FV (x << 1)
-+#define SSI_SACNT_A97EN (x << 0)
-+
-+
-+/* AUDMUX registers */
-+#define AUDMUX_HPCR1 __REG(IMX_AUDMUX_BASE + 0x00)
-+#define AUDMUX_HPCR2 __REG(IMX_AUDMUX_BASE + 0x04)
-+#define AUDMUX_HPCR3 __REG(IMX_AUDMUX_BASE + 0x08)
-+#define AUDMUX_PPCR1 __REG(IMX_AUDMUX_BASE + 0x10)
-+#define AUDMUX_PPCR2 __REG(IMX_AUDMUX_BASE + 0x14)
-+#define AUDMUX_PPCR3 __REG(IMX_AUDMUX_BASE + 0x18)
-+
-+#define AUDMUX_HPCR_TFSDIR (1 << 31)
-+#define AUDMUX_HPCR_TCLKDIR (1 << 30)
-+#define AUDMUX_HPCR_TFCSEL_TX (0 << 26)
-+#define AUDMUX_HPCR_TFCSEL_RX (8 << 26)
-+#define AUDMUX_HPCR_TFCSEL(x) (((x) & 0x7) << 26)
-+#define AUDMUX_HPCR_RFSDIR (1 << 25)
-+#define AUDMUX_HPCR_RCLKDIR (1 << 24)
-+#define AUDMUX_HPCR_RFCSEL_TX (0 << 20)
-+#define AUDMUX_HPCR_RFCSEL_RX (8 << 20)
-+#define AUDMUX_HPCR_RFCSEL(x) (((x) & 0x7) << 20)
-+#define AUDMUX_HPCR_RXDSEL(x) (((x) & 0x7) << 13)
-+#define AUDMUX_HPCR_SYN (1 << 12)
-+#define AUDMUX_HPCR_TXRXEN (1 << 10)
-+#define AUDMUX_HPCR_INMEN (1 << 8)
-+#define AUDMUX_HPCR_INMMASK(x) (((x) & 0xff) << 0)
-+
-+#define AUDMUX_PPCR_TFSDIR (1 << 31)
-+#define AUDMUX_PPCR_TCLKDIR (1 << 30)
-+#define AUDMUX_PPCR_TFCSEL_TX (0 << 26)
-+#define AUDMUX_PPCR_TFCSEL_RX (8 << 26)
-+#define AUDMUX_PPCR_TFCSEL(x) (((x) & 0x7) << 26)
-+#define AUDMUX_PPCR_RFSDIR (1 << 25)
-+#define AUDMUX_PPCR_RCLKDIR (1 << 24)
-+#define AUDMUX_PPCR_RFCSEL_TX (0 << 20)
-+#define AUDMUX_PPCR_RFCSEL_RX (8 << 20)
-+#define AUDMUX_PPCR_RFCSEL(x) (((x) & 0x7) << 20)
-+#define AUDMUX_PPCR_RXDSEL(x) (((x) & 0x7) << 13)
-+#define AUDMUX_PPCR_SYN (1 << 12)
-+#define AUDMUX_PPCR_TXRXEN (1 << 10)
-+
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.c
-@@ -0,0 +1,454 @@
-+/*
-+ * linux/sound/arm/mxc-pcm.c -- ALSA SoC interface for the Freescale i.MX CPU's
-+ *
-+ * Copyright 2006 Wolfson Microelectronics PLC.
-+ * Author: Liam Girdwood
-+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * Based on pxa2xx-pcm.c by Nicolas Pitre, (C) 2004 MontaVista Software, Inc.
-+ * and on mxc-alsa-mc13783 (C) 2006 Freescale.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Revision history
-+ * 29th Aug 2006 Initial version.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/dma-mapping.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+#include <asm/dma.h>
-+#include <asm/hardware.h>
-+
-+#include "imx-pcm.h"
-+
-+/* debug */
-+#define IMX_DEBUG 0
-+#if IMX_DEBUG
-+#define dbg(format, arg...) printk(format, ## arg)
-+#else
-+#define dbg(format, arg...)
-+#endif
-+
-+static const struct snd_pcm_hardware mxc_pcm_hardware = {
-+ .info = (SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_BLOCK_TRANSFER |
-+ SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_PAUSE |
-+ SNDRV_PCM_INFO_RESUME),
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE |
-+ SNDRV_PCM_FMTBIT_S24_LE,
-+ .buffer_bytes_max = 32 * 1024,
-+ .period_bytes_min = 64,
-+ .period_bytes_max = 8 * 1024,
-+ .periods_min = 2,
-+ .periods_max = 255,
-+ .fifo_size = 0,
-+};
-+
-+struct mxc_runtime_data {
-+ int dma_ch;
-+ struct mxc_pcm_dma_param *dma_params;
-+};
-+
-+/*!
-+ * This function stops the current dma transfert for playback
-+ * and clears the dma pointers.
-+ *
-+ * @param substream pointer to the structure of the current stream.
-+ *
-+ */
-+static void audio_stop_dma(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ unsigned int dma_size = frames_to_bytes(runtime, runtime->period_size);
-+ unsigned int offset dma_size * s->periods;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&prtd->dma_lock, flags);
-+
-+ dbg("MXC : audio_stop_dma active = 0\n");
-+ prtd->active = 0;
-+ prtd->period = 0;
-+ prtd->periods = 0;
-+
-+ /* this stops the dma channel and clears the buffer ptrs */
-+ mxc_dma_stop(prtd->dma_wchannel);
-+ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_TO_DEVICE);
-+ else
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_FROM_DEVICE);
-+
-+ spin_unlock_irqrestore(&prtd->dma_lock, flags);
-+}
-+
-+/*!
-+ * This function is called whenever a new audio block needs to be
-+ * transferred to mc13783. The function receives the address and the size
-+ * of the new block and start a new DMA transfer.
-+ *
-+ * @param substream pointer to the structure of the current stream.
-+ *
-+ */
-+static int dma_new_period(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ unsigned int dma_size;
-+ unsigned int offset;
-+ int ret=0;
-+ dma_request_t sdma_request;
-+
-+ if (prtd->active){
-+ memset(&sdma_request, 0, sizeof(dma_request_t));
-+ dma_size = frames_to_bytes(runtime, runtime->period_size);
-+ dbg("s->period (%x) runtime->periods (%d)\n",
-+ s->period,runtime->periods);
-+ dbg("runtime->period_size (%d) dma_size (%d)\n",
-+ (unsigned int)runtime->period_size,
-+ runtime->dma_bytes);
-+
-+ offset = dma_size * prtd->period;
-+ snd_assert(dma_size <= DMA_BUF_SIZE, );
-+ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
-+ sdma_request.sourceAddr = (char*)(dma_map_single(NULL,
-+ runtime->dma_area + offset, dma_size, DMA_TO_DEVICE));
-+ else
-+ sdma_request.destAddr = (char*)(dma_map_single(NULL,
-+ runtime->dma_area + offset, dma_size, DMA_FROM_DEVICE));
-+ sdma_request.count = dma_size;
-+
-+ dbg("MXC: Start DMA offset (%d) size (%d)\n", offset,
-+ runtime->dma_bytes);
-+
-+ mxc_dma_set_config(prtd->dma_wchannel, &sdma_request, 0);
-+ if((ret = mxc_dma_start(prtd->dma_wchannel)) < 0) {
-+ dbg("audio_process_dma: cannot queue DMA buffer\
-+ (%i)\n", ret);
-+ return err;
-+ }
-+ prtd->tx_spin = 1; /* FGA little trick to retrieve DMA pos */
-+ prtd->period++;
-+ prtd->period %= runtime->periods;
-+ }
-+ return ret;
-+}
-+
-+
-+/*!
-+ * This is a callback which will be called
-+ * when a TX transfer finishes. The call occurs
-+ * in interrupt context.
-+ *
-+ * @param dat pointer to the structure of the current stream.
-+ *
-+ */
-+static void audio_dma_irq(void *data)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_pcm_runtime *runtime;
-+ struct mxc_runtime_data *prtd;
-+ unsigned int dma_size;
-+ unsigned int previous_period;
-+ unsigned int offset;
-+
-+ substream = data;
-+ runtime = substream->runtime;
-+ prtd = runtime->private_data;
-+ previous_period = prtd->periods;
-+ dma_size = frames_to_bytes(runtime, runtime->period_size);
-+ offset = dma_size * previous_period;
-+
-+ prtd->tx_spin = 0;
-+ prtd->periods++;
-+ prtd->periods %= runtime->periods;
-+
-+ /*
-+ * Give back to the CPU the access to the non cached memory
-+ */
-+ if(substream == SNDRV_PCM_STREAM_PLAYBACK)
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_TO_DEVICE);
-+ else
-+ dma_unmap_single(NULL, runtime->dma_addr + offset, dma_size,
-+ DMA_FROM_DEVICE);
-+ /*
-+ * If we are getting a callback for an active stream then we inform
-+ * the PCM middle layer we've finished a period
-+ */
-+ if (prtd->active)
-+ snd_pcm_period_elapsed(substream);
-+
-+ /*
-+ * Trig next DMA transfer
-+ */
-+ dma_new_period(substream);
-+}
-+
-+/*!
-+ * This function configures the hardware to allow audio
-+ * playback operations. It is called by ALSA framework.
-+ *
-+ * @param substream pointer to the structure of the current stream.
-+ *
-+ * @return 0 on success, -1 otherwise.
-+ */
-+static int
-+snd_mxc_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ int ret = 0;
-+ prtd->period = 0;
-+ prtd->periods = 0;
-+
-+ dma_channel_params params;
-+ int channel = 0; // passed in ?
-+
-+ if ((ret = mxc_request_dma(&channel, "ALSA TX SDMA") < 0)){
-+ dbg("error requesting a write dma channel\n");
-+ return ret;
-+ }
-+
-+ /* configure DMA params */
-+ memset(&params, 0, sizeof(dma_channel_params));
-+ params.bd_number = 1;
-+ params.arg = s;
-+ params.callback = callback;
-+ params.transfer_type = emi_2_per;
-+ params.watermark_level = SDMA_TXFIFO_WATERMARK;
-+ params.word_size = TRANSFER_16BIT;
-+ //dbg(KERN_ERR "activating connection SSI1 - SDMA\n");
-+ params.per_address = SSI1_BASE_ADDR;
-+ params.event_id = DMA_REQ_SSI1_TX1;
-+ params.peripheral_type = SSI;
-+
-+ /* set up chn with params */
-+ mxc_dma_setup_channel(channel, &params);
-+ s->dma_wchannel = channel;
-+
-+ return ret;
-+}
-+
-+static int mxc_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ int ret;
-+
-+ if((ret=snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
-+ return ret;
-+ runtime->dma_addr = virt_to_phys(runtime->dma_area);
-+
-+ return ret;
-+}
-+
-+static int mxc_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ return snd_pcm_lib_free_pages(substream);
-+}
-+
-+static int mxc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct mxc_runtime_data *prtd = substream->runtime->private_data;
-+ int ret = 0;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ prtd->tx_spin = 0;
-+ /* requested stream startup */
-+ prtd->active = 1;
-+ ret = dma_new_period(substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ /* requested stream shutdown */
-+ ret = audio_stop_dma(substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ prtd->active = 0;
-+ prtd->periods = 0;
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ prtd->active = 1;
-+ prtd->tx_spin = 0;
-+ ret = dma_new_period(substream);
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ prtd->active = 0;
-+ break;
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ prtd->active = 1;
-+ if (prtd->old_offset) {
-+ prtd->tx_spin = 0;
-+ ret = dma_new_period(substream);
-+ }
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
-+static snd_pcm_uframes_t mxc_pcm_pointer(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+ unsigned int offset = 0;
-+
-+ /* tx_spin value is used here to check if a transfert is active */
-+ if (prtd->tx_spin){
-+ offset = (runtime->period_size * (prtd->periods)) +
-+ (runtime->period_size >> 1);
-+ if (offset >= runtime->buffer_size)
-+ offset = runtime->period_size >> 1;
-+ } else {
-+ offset = (runtime->period_size * (s->periods));
-+ if (offset >= runtime->buffer_size)
-+ offset = 0;
-+ }
-+
-+ return offset;
-+}
-+
-+
-+static int mxc_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd;
-+ int ret;
-+
-+ snd_soc_set_runtime_hwparams(substream, &mxc_pcm_hardware);
-+
-+ if ((err = snd_pcm_hw_constraint_integer(runtime,
-+ SNDRV_PCM_HW_PARAM_PERIODS)) < 0)
-+ return err;
-+ if ((err = snd_pcm_hw_constraint_list(runtime, 0,
-+ SNDRV_PCM_HW_PARAM_RATE, &hw_playback_rates)) < 0)
-+ return err;
-+ msleep(10); // liam - why
-+
-+ /* setup DMA controller for playback */
-+ if((err = configure_write_channel(&mxc_mc13783->s[SNDRV_PCM_STREAM_PLAYBACK],
-+ audio_dma_irq)) < 0 )
-+ return err;
-+
-+ if((prtd = kzalloc(sizeof(struct mxc_runtime_data), GFP_KERNEL)) == NULL) {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
-+
-+ runtime->private_data = prtd;
-+ return 0;
-+
-+ err1:
-+ kfree(prtd);
-+ out:
-+ return ret;
-+}
-+
-+static int mxc_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct mxc_runtime_data *prtd = runtime->private_data;
-+
-+// mxc_mc13783_t *chip;
-+ audio_stream_t *s;
-+ device_data_t* device;
-+ int ssi;
-+
-+ //chip = snd_pcm_substream_chip(substream);
-+ s = &chip->s[substream->pstr->stream];
-+ device = &s->stream_device;
-+ ssi = device->ssi;
-+
-+ //disable_stereodac();
-+
-+ ssi_transmit_enable(ssi, false);
-+ ssi_interrupt_disable(ssi, ssi_tx_dma_interrupt_enable);
-+ ssi_tx_fifo_enable(ssi, ssi_fifo_0, false);
-+ ssi_enable(ssi, false);
-+
-+ chip->s[substream->pstr->stream].stream = NULL;
-+
-+ return 0;
-+}
-+
-+static int
-+mxc_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-+ runtime->dma_area,
-+ runtime->dma_addr,
-+ runtime->dma_bytes);
-+}
-+
-+struct snd_pcm_ops mxc_pcm_ops = {
-+ .open = mxc_pcm_open,
-+ .close = mxc_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = mxc_pcm_hw_params,
-+ .hw_free = mxc_pcm_hw_free,
-+ .prepare = mxc_pcm_prepare,
-+ .trigger = mxc_pcm_trigger,
-+ .pointer = mxc_pcm_pointer,
-+ .mmap = mxc_pcm_mmap,
-+};
-+
-+static u64 mxc_pcm_dmamask = 0xffffffff;
-+
-+int mxc_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
-+ struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &mxc_pcm_dmamask;
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = 0xffffffff;
-+
-+ if (dai->playback.channels_min) {
-+ ret = mxc_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto out;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = mxc_pcm_preallocate_dma_buffer(pcm,
-+ SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto out;
-+ }
-+ out:
-+ return ret;
-+}
-+
-+struct snd_soc_platform mxc_soc_platform = {
-+ .name = "mxc-audio",
-+ .pcm_ops = &mxc_pcm_ops,
-+ .pcm_new = mxc_pcm_new,
-+ .pcm_free = mxc_pcm_free_dma_buffers,
-+};
-+
-+EXPORT_SYMBOL_GPL(mxc_soc_platform);
-+
-+MODULE_AUTHOR("Liam Girdwood");
-+MODULE_DESCRIPTION("Freescale i.MX PCM DMA module");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.h
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/imx/imx31-pcm.h
-@@ -0,0 +1,237 @@
-+/*
-+ * mxc-pcm.h :- ASoC platform header for Freescale i.MX
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#ifndef _MXC_PCM_H
-+#define _MXC_PCM_H
-+
-+struct {
-+ char *name; /* stream identifier */
-+ dma_channel_params dma_params;
-+} mxc_pcm_dma_param;
-+
-+extern struct snd_soc_cpu_dai mxc_ssi_dai[3];
-+
-+/* platform data */
-+extern struct snd_soc_platform mxc_soc_platform;
-+extern struct snd_ac97_bus_ops mxc_ac97_ops;
-+
-+/* temp until imx-regs.h is up2date */
-+#define SSI1_STX0 __REG(IMX_SSI1_BASE + 0x00)
-+#define SSI1_STX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x00)
-+#define SSI1_STX1 __REG(IMX_SSI1_BASE + 0x04)
-+#define SSI1_STX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x04)
-+#define SSI1_SRX0 __REG(IMX_SSI1_BASE + 0x08)
-+#define SSI1_SRX0_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x08)
-+#define SSI1_SRX1 __REG(IMX_SSI1_BASE + 0x0c)
-+#define SSI1_SRX1_PHYS __PHYS_REG(IMX_SSI1_BASE + 0x0c)
-+#define SSI1_SCR __REG(IMX_SSI1_BASE + 0x10)
-+#define SSI1_SISR __REG(IMX_SSI1_BASE + 0x14)
-+#define SSI1_SIER __REG(IMX_SSI1_BASE + 0x18)
-+#define SSI1_STCR __REG(IMX_SSI1_BASE + 0x1c)
-+#define SSI1_SRCR __REG(IMX_SSI1_BASE + 0x20)
-+#define SSI1_STCCR __REG(IMX_SSI1_BASE + 0x24)
-+#define SSI1_SRCCR __REG(IMX_SSI1_BASE + 0x28)
-+#define SSI1_SFCSR __REG(IMX_SSI1_BASE + 0x2c)
-+#define SSI1_STR __REG(IMX_SSI1_BASE + 0x30)
-+#define SSI1_SOR __REG(IMX_SSI1_BASE + 0x34)
-+#define SSI1_SACNT __REG(IMX_SSI1_BASE + 0x38)
-+#define SSI1_SACADD __REG(IMX_SSI1_BASE + 0x3c)
-+#define SSI1_SACDAT __REG(IMX_SSI1_BASE + 0x40)
-+#define SSI1_SATAG __REG(IMX_SSI1_BASE + 0x44)
-+#define SSI1_STMSK __REG(IMX_SSI1_BASE + 0x48)
-+#define SSI1_SRMSK __REG(IMX_SSI1_BASE + 0x4c)
-+
-+#define SSI2_STX0 __REG(IMX_SSI2_BASE + 0x00)
-+#define SSI2_STX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x00)
-+#define SSI2_STX1 __REG(IMX_SSI2_BASE + 0x04)
-+#define SSI2_STX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x04)
-+#define SSI2_SRX0 __REG(IMX_SSI2_BASE + 0x08)
-+#define SSI2_SRX0_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x08)
-+#define SSI2_SRX1 __REG(IMX_SSI2_BASE + 0x0c)
-+#define SSI2_SRX1_PHYS __PHYS_REG(IMX_SSI2_BASE + 0x0c)
-+#define SSI2_SCR __REG(IMX_SSI2_BASE + 0x10)
-+#define SSI2_SISR __REG(IMX_SSI2_BASE + 0x14)
-+#define SSI2_SIER __REG(IMX_SSI2_BASE + 0x18)
-+#define SSI2_STCR __REG(IMX_SSI2_BASE + 0x1c)
-+#define SSI2_SRCR __REG(IMX_SSI2_BASE + 0x20)
-+#define SSI2_STCCR __REG(IMX_SSI2_BASE + 0x24)
-+#define SSI2_SRCCR __REG(IMX_SSI2_BASE + 0x28)
-+#define SSI2_SFCSR __REG(IMX_SSI2_BASE + 0x2c)
-+#define SSI2_STR __REG(IMX_SSI2_BASE + 0x30)
-+#define SSI2_SOR __REG(IMX_SSI2_BASE + 0x34)
-+#define SSI2_SACNT __REG(IMX_SSI2_BASE + 0x38)
-+#define SSI2_SACADD __REG(IMX_SSI2_BASE + 0x3c)
-+#define SSI2_SACDAT __REG(IMX_SSI2_BASE + 0x40)
-+#define SSI2_SATAG __REG(IMX_SSI2_BASE + 0x44)
-+#define SSI2_STMSK __REG(IMX_SSI2_BASE + 0x48)
-+#define SSI2_SRMSK __REG(IMX_SSI2_BASE + 0x4c)
-+
-+#define SSI_SCR_CLK_IST (1 << 9)
-+#define SSI_SCR_TCH_EN (1 << 8)
-+#define SSI_SCR_SYS_CLK_EN (1 << 7)
-+#define SSI_SCR_I2S_MODE_NORM (0 << 5)
-+#define SSI_SCR_I2S_MODE_MSTR (1 << 5)
-+#define SSI_SCR_I2S_MODE_SLAVE (2 << 5)
-+#define SSI_SCR_SYN (1 << 4)
-+#define SSI_SCR_NET (1 << 3)
-+#define SSI_SCR_RE (1 << 2)
-+#define SSI_SCR_TE (1 << 1)
-+#define SSI_SCR_SSIEN (1 << 0)
-+
-+#define SSI_SISR_CMDAU (1 << 18)
-+#define SSI_SISR_CMDDU (1 << 17)
-+#define SSI_SISR_RXT (1 << 16)
-+#define SSI_SISR_RDR1 (1 << 15)
-+#define SSI_SISR_RDR0 (1 << 14)
-+#define SSI_SISR_TDE1 (1 << 13)
-+#define SSI_SISR_TDE0 (1 << 12)
-+#define SSI_SISR_ROE1 (1 << 11)
-+#define SSI_SISR_ROE0 (1 << 10)
-+#define SSI_SISR_TUE1 (1 << 9)
-+#define SSI_SISR_TUE0 (1 << 8)
-+#define SSI_SISR_TFS (1 << 7)
-+#define SSI_SISR_RFS (1 << 6)
-+#define SSI_SISR_TLS (1 << 5)
-+#define SSI_SISR_RLS (1 << 4)
-+#define SSI_SISR_RFF1 (1 << 3)
-+#define SSI_SISR_RFF0 (1 << 2)
-+#define SSI_SISR_TFE1 (1 << 1)
-+#define SSI_SISR_TFE0 (1 << 0)
-+
-+#define SSI_SIER_RDMAE (1 << 22)
-+#define SSI_SIER_RIE (1 << 21)
-+#define SSI_SIER_TDMAE (1 << 20)
-+#define SSI_SIER_TIE (1 << 19)
-+#define SSI_SIER_CMDAU_EN (1 << 18)
-+#define SSI_SIER_CMDDU_EN (1 << 17)
-+#define SSI_SIER_RXT_EN (1 << 16)
-+#define SSI_SIER_RDR1_EN (1 << 15)
-+#define SSI_SIER_RDR0_EN (1 << 14)
-+#define SSI_SIER_TDE1_EN (1 << 13)
-+#define SSI_SIER_TDE0_EN (1 << 12)
-+#define SSI_SIER_ROE1_EN (1 << 11)
-+#define SSI_SIER_ROE0_EN (1 << 10)
-+#define SSI_SIER_TUE1_EN (1 << 9)
-+#define SSI_SIER_TUE0_EN (1 << 8)
-+#define SSI_SIER_TFS_EN (1 << 7)
-+#define SSI_SIER_RFS_EN (1 << 6)
-+#define SSI_SIER_TLS_EN (1 << 5)
-+#define SSI_SIER_RLS_EN (1 << 4)
-+#define SSI_SIER_RFF1_EN (1 << 3)
-+#define SSI_SIER_RFF0_EN (1 << 2)
-+#define SSI_SIER_TFE1_EN (1 << 1)
-+#define SSI_SIER_TFE0_EN (1 << 0)
-+
-+#define SSI_STCR_TXBIT0 (1 << 9)
-+#define SSI_STCR_TFEN1 (1 << 8)
-+#define SSI_STCR_TFEN0 (1 << 7)
-+#define SSI_STCR_TFDIR (1 << 6)
-+#define SSI_STCR_TXDIR (1 << 5)
-+#define SSI_STCR_TSHFD (1 << 4)
-+#define SSI_STCR_TSCKP (1 << 3)
-+#define SSI_STCR_TFSI (1 << 2)
-+#define SSI_STCR_TFSL (1 << 1)
-+#define SSI_STCR_TEFS (1 << 0)
-+
-+#define SSI_SRCR_RXBIT0 (1 << 9)
-+#define SSI_SRCR_RFEN1 (1 << 8)
-+#define SSI_SRCR_RFEN0 (1 << 7)
-+#define SSI_SRCR_RFDIR (1 << 6)
-+#define SSI_SRCR_RXDIR (1 << 5)
-+#define SSI_SRCR_RSHFD (1 << 4)
-+#define SSI_SRCR_RSCKP (1 << 3)
-+#define SSI_SRCR_RFSI (1 << 2)
-+#define SSI_SRCR_RFSL (1 << 1)
-+#define SSI_SRCR_REFS (1 << 0)
-+
-+#define SSI_STCCR_DIV2 (1 << 18)
-+#define SSI_STCCR_PSR (1 << 15)
-+#define SSI_STCCR_WL(x) ((((x) - 2) >> 1) << 13)
-+#define SSI_STCCR_DC(x) (((x) & 0x1f) << 8)
-+#define SSI_STCCR_PM(x) (((x) & 0xff) << 0)
-+
-+#define SSI_SRCCR_DIV2 (1 << 18)
-+#define SSI_SRCCR_PSR (1 << 15)
-+#define SSI_SRCCR_WL(x) ((((x) - 2) >> 1) << 13)
-+#define SSI_SRCCR_DC(x) (((x) & 0x1f) << 8)
-+#define SSI_SRCCR_PM(x) (((x) & 0xff) << 0)
-+
-+
-+#define SSI_SFCSR_RFCNT1(x) (((x) & 0xf) << 28)
-+#define SSI_SFCSR_TFCNT1(x) (((x) & 0xf) << 24)
-+#define SSI_SFCSR_RFWM1(x) (((x) & 0xf) << 20)
-+#define SSI_SFCSR_TFWM1(x) (((x) & 0xf) << 16)
-+#define SSI_SFCSR_RFCNT0(x) (((x) & 0xf) << 12)
-+#define SSI_SFCSR_TFCNT0(x) (((x) & 0xf) << 8)
-+#define SSI_SFCSR_RFWM0(x) (((x) & 0xf) << 4)
-+#define SSI_SFCSR_TFWM0(x) (((x) & 0xf) << 0)
-+
-+#define SSI_STR_TEST (1 << 15)
-+#define SSI_STR_RCK2TCK (1 << 14)
-+#define SSI_STR_RFS2TFS (1 << 13)
-+#define SSI_STR_RXSTATE(x) (((x) & 0xf) << 8)
-+#define SSI_STR_TXD2RXD (1 << 7)
-+#define SSI_STR_TCK2RCK (1 << 6)
-+#define SSI_STR_TFS2RFS (1 << 5)
-+#define SSI_STR_TXSTATE(x) (((x) & 0xf) << 0)
-+
-+#define SSI_SOR_CLKOFF (1 << 6)
-+#define SSI_SOR_RX_CLR (1 << 5)
-+#define SSI_SOR_TX_CLR (1 << 4)
-+#define SSI_SOR_INIT (1 << 3)
-+#define SSI_SOR_WAIT(x) (((x) & 0x3) << 1)
-+#define SSI_SOR_SYNRST (1 << 0)
-+
-+#define SSI_SACNT_FRDIV(x) (((x) & 0x3f) << 5)
-+#define SSI_SACNT_WR (x << 4)
-+#define SSI_SACNT_RD (x << 3)
-+#define SSI_SACNT_TIF (x << 2)
-+#define SSI_SACNT_FV (x << 1)
-+#define SSI_SACNT_A97EN (x << 0)
-+
-+
-+/* AUDMUX registers */
-+#define AUDMUX_HPCR1 __REG(IMX_AUDMUX_BASE + 0x00)
-+#define AUDMUX_HPCR2 __REG(IMX_AUDMUX_BASE + 0x04)
-+#define AUDMUX_HPCR3 __REG(IMX_AUDMUX_BASE + 0x08)
-+#define AUDMUX_PPCR1 __REG(IMX_AUDMUX_BASE + 0x10)
-+#define AUDMUX_PPCR2 __REG(IMX_AUDMUX_BASE + 0x14)
-+#define AUDMUX_PPCR3 __REG(IMX_AUDMUX_BASE + 0x18)
-+
-+#define AUDMUX_HPCR_TFSDIR (1 << 31)
-+#define AUDMUX_HPCR_TCLKDIR (1 << 30)
-+#define AUDMUX_HPCR_TFCSEL_TX (0 << 26)
-+#define AUDMUX_HPCR_TFCSEL_RX (8 << 26)
-+#define AUDMUX_HPCR_TFCSEL(x) (((x) & 0x7) << 26)
-+#define AUDMUX_HPCR_RFSDIR (1 << 25)
-+#define AUDMUX_HPCR_RCLKDIR (1 << 24)
-+#define AUDMUX_HPCR_RFCSEL_TX (0 << 20)
-+#define AUDMUX_HPCR_RFCSEL_RX (8 << 20)
-+#define AUDMUX_HPCR_RFCSEL(x) (((x) & 0x7) << 20)
-+#define AUDMUX_HPCR_RXDSEL(x) (((x) & 0x7) << 13)
-+#define AUDMUX_HPCR_SYN (1 << 12)
-+#define AUDMUX_HPCR_TXRXEN (1 << 10)
-+#define AUDMUX_HPCR_INMEN (1 << 8)
-+#define AUDMUX_HPCR_INMMASK(x) (((x) & 0xff) << 0)
-+
-+#define AUDMUX_PPCR_TFSDIR (1 << 31)
-+#define AUDMUX_PPCR_TCLKDIR (1 << 30)
-+#define AUDMUX_PPCR_TFCSEL_TX (0 << 26)
-+#define AUDMUX_PPCR_TFCSEL_RX (8 << 26)
-+#define AUDMUX_PPCR_TFCSEL(x) (((x) & 0x7) << 26)
-+#define AUDMUX_PPCR_RFSDIR (1 << 25)
-+#define AUDMUX_PPCR_RCLKDIR (1 << 24)
-+#define AUDMUX_PPCR_RFCSEL_TX (0 << 20)
-+#define AUDMUX_PPCR_RFCSEL_RX (8 << 20)
-+#define AUDMUX_PPCR_RFCSEL(x) (((x) & 0x7) << 20)
-+#define AUDMUX_PPCR_RXDSEL(x) (((x) & 0x7) << 13)
-+#define AUDMUX_PPCR_SYN (1 << 12)
-+#define AUDMUX_PPCR_TXRXEN (1 << 10)
-+
-+
-+#endif
-Index: linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-i2s.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-i2s.c
-@@ -0,0 +1,271 @@
-+/*
-+ * s3c24xx-i2s.c -- ALSA Soc Audio Layer
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Graeme Gregory
-+ * graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 10th Nov 2006 Initial version.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/module.h>
-+#include <linux/device.h>
-+#include <linux/delay.h>
-+#include <linux/clk.h>
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/initval.h>
-+#include <sound/soc.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/io.h>
-+#include <asm/arch/regs-iis.h>
-+#include <asm/arch/regs-gpio.h>
-+#include <asm/arch/regs-clock.h>
-+#include <asm/arch/audio.h>
-+#include <asm/dma.h>
-+#include <asm/arch/dma.h>
-+
-+#include "s3c24xx-pcm.h"
-+
-+/* used to disable sysclk if external crystal is used */
-+static int extclk = 0;
-+module_param(extclk, int, 0);
-+MODULE_PARM_DESC(extclk, "set to 1 to disable s3c24XX i2s sysclk");
-+
-+#define S3C24XX_I2S_DAIFMT \
-+ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
-+
-+#define S3C24XX_I2S_DIR \
-+ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
-+
-+#define S3C24XX_I2S_RATES \
-+ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
-+ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
-+ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
-+
-+/* priv is divider */
-+static struct snd_soc_dai_mode s3c24xx_i2s_modes[] =
-+{
-+ /* s3c24xx I2S frame and clock master modes */
-+ {
-+ .fmt = S3C24XX_I2S_DAIFMT | SND_SOC_DAIFMT_CBS_CFS,
-+ .pcmfmt = SNDRV_PCM_FMTBIT_S16_LE,
-+ .pcmrate = SNDRV_PCM_RATE_44100,
-+ .pcmdir = S3C24XX_I2S_DIR,
-+ .flags = SND_SOC_DAI_BFS_RATE,
-+ .fs = 384,
-+ .bfs = 32,
-+ .priv = 0x00
-+ },
-+};
-+
-+static struct s3c2410_dma_client s3c24xx_dma_client_out = {
-+ .name = "I2S PCM Stereo out"
-+};
-+
-+static struct s3c2410_dma_client s3c24xx_dma_client_in = {
-+ .name = "I2S PCM Stereo in"
-+};
-+
-+static s3c24xx_pcm_dma_params_t s3c24xx_i2s_pcm_stereo_out = {
-+ .client = &s3c24xx_dma_client_out,
-+ .channel = DMACH_I2S_OUT,
-+ .dma_addr = S3C2410_PA_IIS+S3C2410_IISFIFO
-+};
-+
-+static s3c24xx_pcm_dma_params_t s3c24xx_i2s_pcm_stereo_in = {
-+ .client = &s3c24xx_dma_client_in,
-+ .channel = DMACH_I2S_IN,
-+ .dma_addr = S3C2410_PA_IIS+S3C2410_IISFIFO
-+};
-+
-+
-+struct s3c24xx_i2s_port {
-+ int master;
-+};
-+static struct s3c24xx_i2s_port s3c24xx_i2s;
-+
-+/* Empty for the s3c24xx platforms */
-+static int s3c24xx_i2s_startup(struct snd_pcm_substream *substream)
-+{
-+ return 0;
-+}
-+
-+static int s3c24xx_i2s_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ unsigned long iiscon;
-+ unsigned long iismod;
-+ unsigned long iisfcon;
-+
-+ s3c24xx_i2s.master = 0;
-+ if(rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_CBS_CFS)
-+ s3c24xx_i2s.master = 1;
-+
-+ /* Configure the I2S pins in correct mode */
-+ s3c2410_gpio_cfgpin(S3C2410_GPE0,S3C2410_GPE0_I2SLRCK);
-+ if (s3c24xx_i2s.master && !extclk){
-+ printk("Setting Clock Output as we are Master\n");
-+ s3c2410_gpio_cfgpin(S3C2410_GPE1,S3C2410_GPE1_I2SSCLK);
-+ }
-+ s3c2410_gpio_cfgpin(S3C2410_GPE2,S3C2410_GPE2_CDCLK);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE3,S3C2410_GPE3_I2SSDI);
-+ s3c2410_gpio_cfgpin(S3C2410_GPE4,S3C2410_GPE4_I2SSDO);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ {
-+ rtd->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_out;
-+ }
-+ else
-+ {
-+ rtd->cpu_dai->dma_data = &s3c24xx_i2s_pcm_stereo_in;
-+ }
-+
-+ /* Working copies of registers */
-+ iiscon=readl(S3C24XX_VA_IIS+S3C2410_IISCON);
-+ iismod=readl(S3C24XX_VA_IIS+S3C2410_IISMOD);
-+ iisfcon=readl(S3C24XX_VA_IIS+S3C2410_IISFCON);
-+ /* is port used by another stream */
-+ if (!(iiscon & S3C2410_IISCON_IISEN)) {
-+
-+ /* Clear the registers */
-+
-+ iismod |= S3C2410_IISMOD_32FS | S3C2410_IISMOD_384FS;
-+
-+ if (!s3c24xx_i2s.master)
-+ iismod |= S3C2410_IISMOD_SLAVE;
-+
-+ if (rtd->cpu_dai->dai_runtime.fmt & SND_SOC_DAIFMT_LEFT_J)
-+ iismod |= S3C2410_IISMOD_MSB;
-+ }
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ {
-+ iismod |= S3C2410_IISMOD_TXMODE;
-+ iiscon |= S3C2410_IISCON_TXDMAEN;
-+ iisfcon |= S3C2410_IISFCON_TXDMA | S3C2410_IISFCON_TXENABLE;
-+ }
-+ else
-+ {
-+ iismod |= S3C2410_IISMOD_RXMODE;
-+ iiscon |= S3C2410_IISCON_RXDMAEN;
-+ iisfcon |= S3C2410_IISFCON_RXDMA | S3C2410_IISFCON_RXENABLE;
-+ }
-+
-+ writel(iiscon, S3C24XX_VA_IIS+S3C2410_IISCON);
-+ writel(iismod, S3C24XX_VA_IIS+S3C2410_IISMOD);
-+ writel(iisfcon, S3C24XX_VA_IIS+S3C2410_IISFCON);
-+
-+ printk("IISCON: %lx IISMOD: %lx", iiscon, iismod);
-+
-+ return 0;
-+}
-+
-+static int s3c24xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ int ret = 0;
-+ unsigned long iiscon;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ /* Enable the IIS unit */
-+ iiscon = readl(S3C24XX_VA_IIS+S3C2410_IISCON);
-+ iiscon |= S3C2410_IISCON_IISEN;
-+ writel(iiscon, S3C24XX_VA_IIS+S3C2410_IISCON);
-+ break;
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static void s3c24xx_i2s_shutdown(struct snd_pcm_substream *substream)
-+{
-+ unsigned long iismod, iiscon;
-+
-+ iismod=readl(S3C24XX_VA_IIS+S3C2410_IISMOD);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ iismod &= ~S3C2410_IISMOD_TXMODE;
-+ } else {
-+ iismod &= ~S3C2410_IISMOD_RXMODE;
-+ }
-+
-+ writel(iismod,S3C24XX_VA_IIS+S3C2410_IISMOD);
-+
-+ iiscon=readl(S3C24XX_VA_IIS+S3C2410_IISCON);
-+
-+ if (iismod & ( S3C2410_IISMOD_TXMODE | S3C2410_IISMOD_RXMODE )) {
-+ iiscon &= ! S3C2410_IISCON_IISEN;
-+ writel(iiscon,S3C24XX_VA_IIS+S3C2410_IISCON);
-+ }
-+}
-+
-+#ifdef CONFIG_PM
-+static int s3c24xx_i2s_suspend(struct platform_device *dev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+}
-+
-+static int s3c24xx_i2s_resume(struct platform_device *pdev,
-+ struct snd_soc_cpu_dai *dai)
-+{
-+}
-+
-+#else
-+#define s3c24xx_i2s_suspend NULL
-+#define s3c24xx_i2s_resume NULL
-+#endif
-+
-+/* s3c24xx I2S sysclock is always 384 FS */
-+static unsigned int s3c24xx_i2s_config_sysclk(struct snd_soc_cpu_dai *iface,
-+ struct snd_soc_clock_info *info, unsigned int clk)
-+{
-+ return info->rate * 384;
-+}
-+
-+struct snd_soc_cpu_dai s3c24xx_i2s_dai = {
-+ .name = "s3c24xx-i2s",
-+ .id = 0,
-+ .type = SND_SOC_DAI_I2S,
-+ .suspend = s3c24xx_i2s_suspend,
-+ .resume = s3c24xx_i2s_resume,
-+ .config_sysclk = s3c24xx_i2s_config_sysclk,
-+ .playback = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .capture = {
-+ .channels_min = 2,
-+ .channels_max = 2,},
-+ .ops = {
-+ .startup = s3c24xx_i2s_startup,
-+ .shutdown = s3c24xx_i2s_shutdown,
-+ .trigger = s3c24xx_i2s_trigger,
-+ .hw_params = s3c24xx_i2s_hw_params,},
-+ .caps = {
-+ .num_modes = ARRAY_SIZE(s3c24xx_i2s_modes),
-+ .mode = s3c24xx_i2s_modes,},
-+};
-+
-+EXPORT_SYMBOL_GPL(s3c24xx_i2s_dai);
-+
-+/* Module information */
-+MODULE_AUTHOR("Graeme Gregory, graeme.gregory@wolfsonmicro.com, www.wolfsonmicro.com");
-+MODULE_DESCRIPTION("s3c24xx I2S SoC Interface");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-pcm.c
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/s3c24xx/s3c24xx-pcm.c
-@@ -0,0 +1,362 @@
-+/*
-+ * s3c24xx-pcm.c -- ALSA Soc Audio Layer
-+ *
-+ * Copyright 2005 Wolfson Microelectronics PLC.
-+ * Author: Graeme Gregory
-+ * graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ *
-+ * Revision history
-+ * 10th Nov 2006 Initial version.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
-+#include <linux/slab.h>
-+#include <linux/dma-mapping.h>
-+
-+#include <sound/driver.h>
-+#include <sound/core.h>
-+#include <sound/pcm.h>
-+#include <sound/pcm_params.h>
-+#include <sound/soc.h>
-+
-+#include <asm/dma.h>
-+#include <asm/io.h>
-+#include <asm/hardware.h>
-+#include <asm/arch/dma.h>
-+#include <asm/arch/audio.h>
-+
-+#include "s3c24xx-pcm.h"
-+
-+static const struct snd_pcm_hardware s3c24xx_pcm_hardware = {
-+ .info = SNDRV_PCM_INFO_MMAP |
-+ SNDRV_PCM_INFO_MMAP_VALID |
-+ SNDRV_PCM_INFO_INTERLEAVED |
-+ SNDRV_PCM_INFO_PAUSE |
-+ SNDRV_PCM_INFO_RESUME,
-+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
-+ .period_bytes_min = 32,
-+ .period_bytes_max = 8192,
-+ .periods_min = 1,
-+ .periods_max = 8192,
-+ .buffer_bytes_max = 256 * 1024,
-+ .fifo_size = 32,
-+};
-+
-+struct s3c24xx_runtime_data {
-+ dma_addr_t dma_buffer;
-+ dma_addr_t dma_buffer_end;
-+ size_t period_size;
-+ dma_addr_t period_ptr;
-+ s3c24xx_pcm_dma_params_t *params;
-+};
-+
-+/* Move the pointer onto the next period, dealing with wrap around.
-+ */
-+void static next_period(struct s3c24xx_runtime_data *prtd)
-+{
-+ prtd->period_ptr+=prtd->period_size;
-+ if(prtd->period_ptr>=prtd->dma_buffer_end)
-+ {
-+ prtd->period_ptr=prtd->dma_buffer;
-+ }
-+}
-+
-+void s3c24xx_audio_buffdone(struct s3c2410_dma_chan *channel,
-+ void *dev_id, int size,
-+ enum s3c2410_dma_buffresult result)
-+{
-+ struct snd_pcm_substream *substream = dev_id;
-+ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
-+
-+ if(result==S3C2410_RES_OK)
-+ {
-+ next_period(prtd);
-+ s3c2410_dma_enqueue(prtd->params->channel, substream, prtd->period_ptr, prtd->period_size);
-+ }
-+ snd_pcm_period_elapsed(substream);
-+
-+}
-+
-+static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct s3c24xx_runtime_data *prtd = runtime->private_data;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ s3c24xx_pcm_dma_params_t *dma = rtd->cpu_dai->dma_data;
-+ int ret;
-+
-+ printk("Entered s3c24xx hw_params\n");
-+
-+ snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
-+ runtime->dma_bytes = params_buffer_bytes(params);
-+
-+ prtd->params=dma;
-+ if(ret=s3c2410_dma_request(prtd->params->channel,
-+ prtd->params->client,NULL))
-+ {
-+ printk("Failed to get dma channel %d for %s\n",prtd->params->channel,
-+ prtd->params->client->name);
-+ return ret;
-+ }
-+
-+ //s3c2410_dma_setflags(prtd->params->channel,S3C2410_DMAF_AUTOSTART);
-+ if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ {
-+ s3c2410_dma_devconfig(prtd->params->channel, S3C2410_DMASRC_MEM,
-+ S3C2410_DISRCC_INC | S3C2410_DISRCC_APB,
-+ prtd->params->dma_addr);
-+ }
-+ else
-+ {
-+ s3c2410_dma_devconfig(prtd->params->channel, S3C2410_DMASRC_HW,
-+ S3C2410_DISRCC_INC | S3C2410_DISRCC_APB,
-+ prtd->params->dma_addr);
-+ }
-+
-+ s3c2410_dma_config(prtd->params->channel,2,S3C2410_DCON_HANDSHAKE);
-+
-+ s3c2410_dma_set_buffdone_fn(prtd->params->channel, s3c24xx_audio_buffdone);
-+
-+ prtd->dma_buffer = runtime->dma_addr;
-+ prtd->dma_buffer_end = runtime->dma_addr + runtime->dma_bytes;
-+ prtd->period_size = params_period_bytes(params);
-+
-+ return 0;
-+}
-+
-+static int s3c24xx_pcm_hw_free(struct snd_pcm_substream *substream)
-+{
-+ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
-+
-+ printk("Entered s3c24xx hw_free\n");
-+
-+ return 0;
-+}
-+
-+static int s3c24xx_pcm_prepare(struct snd_pcm_substream *substream)
-+{
-+ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
-+
-+ printk("Entered s3c24xx prepare\n");
-+
-+ /* Set the period that is to be queued in DMA */
-+ prtd->period_ptr = prtd->dma_buffer;
-+
-+ /* queue the first period */
-+ s3c2410_dma_enqueue(prtd->params->channel, substream, prtd->period_ptr, prtd->period_size);
-+
-+ /* Move to next period to be queued */
-+ next_period(prtd);
-+
-+ /* queue the second buffer */
-+ s3c2410_dma_enqueue(prtd->params->channel, substream, prtd->period_ptr, prtd->period_size);
-+
-+
-+ return 0;
-+}
-+
-+static int s3c24xx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
-+{
-+ struct s3c24xx_runtime_data *prtd = substream->runtime->private_data;
-+ int ret = 0;
-+
-+ printk("Entered s3c24xx trigger\n");
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_START);
-+ break;
-+
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ s3c2410_dma_ctrl(prtd->params->channel, S3C2410_DMAOP_STOP);
-+ break;
-+
-+ default:
-+ ret = -EINVAL;
-+ }
-+
-+ return ret;
-+}
-+
-+static snd_pcm_uframes_t s3c24xx_pcm_pointer(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct s3c24xx_runtime_data *prtd = runtime->private_data;
-+ dma_addr_t dst,src;
-+ snd_pcm_uframes_t x;
-+
-+ printk("Entered s3c24xx pointer\n");
-+
-+ s3c2410_dma_getposition(prtd->params->channel, &src, &dst);
-+
-+ printk("DMA Position: %lx, %lx\n", src, dst);
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ {
-+ x = bytes_to_frames(runtime, src - prtd->dma_buffer);
-+ }
-+ else
-+ {
-+ x = bytes_to_frames(runtime, dst - prtd->dma_buffer);
-+ }
-+
-+ if (x == runtime->buffer_size)
-+ x=0;
-+ return x;
-+
-+}
-+
-+static int s3c24xx_pcm_open(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct s3c24xx_runtime_data *prtd;
-+ int ret;
-+
-+ printk("Entered s3c24xx open\n");
-+
-+ snd_soc_set_runtime_hwparams(substream, &s3c24xx_pcm_hardware);
-+
-+ if((prtd = kzalloc(sizeof(struct s3c24xx_runtime_data), GFP_KERNEL)) == NULL)
-+ {
-+ ret = -ENOMEM;
-+ goto out;
-+ }
-+
-+ runtime->private_data = prtd;
-+ return 0;
-+
-+out:
-+ return ret;
-+}
-+
-+static int s3c24xx_pcm_close(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct s3c24xx_runtime_data *prtd = runtime->private_data;
-+
-+ printk("Entered s3c24xx close\n");
-+
-+ s3c2410_dma_free(prtd->params->channel, prtd->params->client);
-+
-+ return 0;
-+}
-+
-+static int
-+s3c24xx_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+
-+ printk("Entered s3c24xx mmap\n");
-+
-+ return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-+ runtime->dma_area,
-+ runtime->dma_addr,
-+ runtime->dma_bytes);
-+}
-+
-+struct snd_pcm_ops s3c24xx_pcm_ops = {
-+ .open = s3c24xx_pcm_open,
-+ .close = s3c24xx_pcm_close,
-+ .ioctl = snd_pcm_lib_ioctl,
-+ .hw_params = s3c24xx_pcm_hw_params,
-+ .hw_free = s3c24xx_pcm_hw_free,
-+ .prepare = s3c24xx_pcm_prepare,
-+ .trigger = s3c24xx_pcm_trigger,
-+ .pointer = s3c24xx_pcm_pointer,
-+ .mmap = s3c24xx_pcm_mmap,
-+};
-+
-+static int s3c24xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
-+{
-+ struct snd_pcm_substream *substream = pcm->streams[stream].substream;
-+ struct snd_dma_buffer *buf = &substream->dma_buffer;
-+ size_t size = s3c24xx_pcm_hardware.buffer_bytes_max;
-+
-+ printk("Entered s3c24xx preaccolate_dma_buffer\n");
-+
-+ buf->dev.type = SNDRV_DMA_TYPE_DEV;
-+ buf->dev.dev = pcm->card->dev;
-+ buf->private_data = NULL;
-+ buf->area = dma_alloc_writecombine(pcm->card->dev, size,
-+ &buf->addr, GFP_KERNEL);
-+ if (!buf->area)
-+ return -ENOMEM;
-+ buf->bytes = size;
-+ return 0;
-+}
-+
-+static void s3c24xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
-+{
-+ struct snd_pcm_substream *substream;
-+ struct snd_dma_buffer *buf;
-+ int stream;
-+
-+ printk("Entered s3c24xx free_dma_buffers\n");
-+
-+ for (stream = 0; stream < 2; stream++) {
-+ substream = pcm->streams[stream].substream;
-+ if (!substream)
-+ continue;
-+
-+ buf = &substream->dma_buffer;
-+ if (!buf->area)
-+ continue;
-+
-+ dma_free_writecombine(pcm->card->dev, buf->bytes,
-+ buf->area, buf->addr);
-+ buf->area = NULL;
-+ }
-+}
-+
-+static u64 s3c24xx_pcm_dmamask = 0xffffffff;
-+
-+int s3c24xx_pcm_new(struct snd_card *card, struct snd_soc_codec_dai *dai,
-+ struct snd_pcm *pcm)
-+{
-+ int ret = 0;
-+
-+ printk("Entered s3c24xx new\n");
-+
-+ if (!card->dev->dma_mask)
-+ card->dev->dma_mask = &s3c24xx_pcm_dmamask;
-+ if (!card->dev->coherent_dma_mask)
-+ card->dev->coherent_dma_mask = 0xffffffff;
-+
-+ if (dai->playback.channels_min) {
-+ ret = s3c24xx_pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_PLAYBACK);
-+ if (ret)
-+ goto out;
-+ }
-+
-+ if (dai->capture.channels_min) {
-+ ret = s3c24xx_pcm_preallocate_dma_buffer(pcm, SNDRV_PCM_STREAM_CAPTURE);
-+ if (ret)
-+ goto out;
-+ }
-+ out:
-+ return ret;
-+}
-+
-+struct snd_soc_platform s3c24xx_soc_platform = {
-+ .name = "s3c24xx-audio",
-+ .pcm_ops = &s3c24xx_pcm_ops,
-+ .pcm_new = s3c24xx_pcm_new,
-+ .pcm_free = s3c24xx_pcm_free_dma_buffers,
-+};
-+
-+EXPORT_SYMBOL_GPL(s3c24xx_soc_platform);
-+
-+MODULE_AUTHOR("Graeme Gregory");
-+MODULE_DESCRIPTION("Samsung S3C24XX PCM DMA module");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6-pxa-new/sound/soc/s3c24xx/Kconfig
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/s3c24xx/Kconfig
-@@ -0,0 +1,26 @@
-+menu "SoC Audio for the Atmel AT91"
-+
-+config SND_S3C24XX_SOC
-+ tristate "SoC Audio for the Samsung S3C24xx System-on-Chip"
-+ depends on ARCH_S3C2410 && SND
-+ select SND_PCM
-+ help
-+ Say Y or M if you want to add support for codecs attached to
-+ the Samsung S3C24xx.
-+
-+config SND_S3C24XX_SOC_I2S
-+ tristate
-+
-+config SND_S3C24XX_SOC_AC97
-+ tristate
-+
-+# graeme - add mach dep
-+config SND_S3C24XX_SOC_SMDK2440
-+ tristate "SoC I2S Audio support for SMDK2440"
-+ depends on SND_S3C24XX_SOC
-+ select SND_S3C24XX_SOC_I2S
-+ select SND_SOC_UDA1380
-+ help
-+ Say Y if you want to add support for SoC audio on
-+
-+endmenu
-Index: linux-2.6-pxa-new/sound/soc/s3c24xx/Makefile
-===================================================================
---- /dev/null
-+++ linux-2.6-pxa-new/sound/soc/s3c24xx/Makefile
-@@ -0,0 +1,11 @@
-+# S3C24xx Platform Support
-+snd-soc-s3c24xx-objs := s3c24xx-pcm.o
-+snd-soc-at91-i2s-objs := s3c24xx-i2s.o
-+
-+obj-$(CONFIG_SND_S3C24XX_SOC) += snd-soc-s3c24xx.o
-+obj-$(CONFIG_SND_S3C24XX_SOC_I2S) += snd-soc-s3c24xx-i2s.o
-+
-+# S3C24xx Machine Support
-+snd-soc-smdk2440-uda1380-objs := smdk2440_uda1380.o
-+
-+obj-$(CONFIG_SND_S3C24XX_SOC_SMDK2440) += snd-soc-smdk2440-uda1380.o
diff --git a/packages/linux/linux-rp-2.6.17/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.17/connectplus-remove-ide-HACK.patch
deleted file mode 100644
index 4414b21191..0000000000
--- a/packages/linux/linux-rp-2.6.17/connectplus-remove-ide-HACK.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: linux-2.6.13/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.13.orig/drivers/ide/legacy/ide-cs.c 2005-09-01 22:43:46.000000000 +0100
-+++ linux-2.6.13/drivers/ide/legacy/ide-cs.c 2005-09-01 22:45:46.000000000 +0100
-@@ -488,7 +488,6 @@
- PCMCIA_DEVICE_PROD_ID123("KODAK Picture Card ", "KODAK ", "V100K", 0x94a0d8f3, 0xe4fc3ea0, 0xe5e7eed4),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-- PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
- PCMCIA_DEVICE_NULL,
- };
- MODULE_DEVICE_TABLE(pcmcia, ide_ids);
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-akita b/packages/linux/linux-rp-2.6.17/defconfig-akita
deleted file mode 100644
index 249466ac87..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-akita
+++ /dev/null
@@ -1,1572 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-c7x0 b/packages/linux/linux-rp-2.6.17/defconfig-c7x0
deleted file mode 100644
index 1d702f60c0..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-c7x0
+++ /dev/null
@@ -1,1608 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Mon May 22 09:00:01 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-CONFIG_MACH_CORGI=y
-CONFIG_MACH_SHEPHERD=y
-CONFIG_MACH_HUSKY=y
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SHARP_C7xx=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_CORGI=y
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA is not set
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-CONFIG_FB_W100=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-CONFIG_SND_PXA2xx_SOC_CORGI=m
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-collie b/packages/linux/linux-rp-2.6.17/defconfig-collie
deleted file mode 100644
index f488d42d93..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-collie
+++ /dev/null
@@ -1,1641 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Tue Jul 4 16:35:35 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-
-#
-# Processor Features
-#
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_NODES_SHIFT=2
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable quiet"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_SA1100_FIR=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
-CONFIG_MTD_SHARP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SA1100=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_ARLAN is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-CONFIG_MCP=y
-CONFIG_MCP_SA11X0=y
-CONFIG_MCP_UCB1200=y
-# CONFIG_MCP_UCB1200_AUDIO is not set
-CONFIG_MCP_UCB1200_TS=m
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-# CONFIG_LEDS_LOCOMO is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_USB_DSBR is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_MAESTRO is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_FIRMWARE_EDID is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-CONFIG_USB_NET_CDC_SUBSET=m
-# CONFIG_USB_ALI_M5632 is not set
-# CONFIG_USB_AN2720 is not set
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_ANYDATA=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OMNINET is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-CONFIG_USB_GADGET_SA1100=y
-CONFIG_USB_SA1100=y
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-CONFIG_USB_FILE_STORAGE_TEST=y
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-hx2000 b/packages/linux/linux-rp-2.6.17/defconfig-hx2000
deleted file mode 100644
index ea56989b75..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-hx2000
+++ /dev/null
@@ -1,1028 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc1-git7
-# Sat Nov 19 23:13:51 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-# CONFIG_SWAP is not set
-# CONFIG_SYSVIPC is not set
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-CONFIG_MACH_HX2750=y
-CONFIG_PXA27x=y
-CONFIG_PXA_KEYS=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-CONFIG_ISA_DMA_API=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-# CONFIG_IEEE80211_CRYPT_CCMP is not set
-# CONFIG_IEEE80211_CRYPT_TKIP is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SHARP_SL is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_AIRO is not set
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_TSC2101=y
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_SA1100_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-CONFIG_MFD_TSC2101=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_HX2750=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_NFS_FS is not set
-# CONFIG_NFSD is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_SHA1 is not set
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-CONFIG_CRYPTO_CRC32C=y
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-poodle b/packages/linux/linux-rp-2.6.17/defconfig-poodle
deleted file mode 100644
index deacd170f2..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-poodle
+++ /dev/null
@@ -1,1655 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Jul 10 23:38:56 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-CONFIG_MACH_POODLE=y
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_USB_DSBR=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_MAINSTONE_BASEBAND is not set
-# CONFIG_SND_MAINSTONE_BLUETOOTH is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_POODLE=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-qemux86 b/packages/linux/linux-rp-2.6.17/defconfig-qemux86
deleted file mode 100644
index 6fe280985f..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-qemux86
+++ /dev/null
@@ -1,1562 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Oct 16 19:42:42 2006
-#
-CONFIG_X86_32=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_X86=y
-CONFIG_MMU=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-# CONFIG_IKCONFIG is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_VM86=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-CONFIG_M386=y
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_INTEL_USERCOPY=y
-# CONFIG_HPET_TIMER is not set
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-# CONFIG_REGPARM is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_HOTPLUG_CPU is not set
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-
-#
-# ACPI (Advanced Configuration and Power Interface) Support
-#
-CONFIG_ACPI=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_VIDEO=m
-# CONFIG_ACPI_HOTKEY is not set
-CONFIG_ACPI_FAN=y
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-CONFIG_ACPI_IBM=m
-# CONFIG_ACPI_IBM_DOCK is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-# CONFIG_ACPI_CONTAINER is not set
-
-#
-# APM (Advanced Power Management) BIOS Support
-#
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCI_MSI is not set
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_MISC=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-# CONFIG_IP_NF_CT_PROTO_SCTP is not set
-# CONFIG_IP_NF_FTP is not set
-# CONFIG_IP_NF_IRC is not set
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=y
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play support
-#
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_IVB is not set
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-CONFIG_SCSI_SATA=y
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-CONFIG_SCSI_ATA_PIIX=y
-# CONFIG_SCSI_SATA_MV is not set
-# CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_PDC_ADMA is not set
-# CONFIG_SCSI_SATA_QSTOR is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
-CONFIG_SCSI_SATA_SX4=m
-# CONFIG_SCSI_SATA_SIL is not set
-# CONFIG_SCSI_SATA_SIL24 is not set
-CONFIG_SCSI_SATA_SIS=m
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-# CONFIG_SCSI_SATA_VITESSE is not set
-CONFIG_SCSI_SATA_INTEL_COMBINED=y
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-CONFIG_IEEE1394=y
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-# CONFIG_IEEE1394_OUI_DB is not set
-# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
-# CONFIG_IEEE1394_EXPORT_FULL_API is not set
-
-#
-# Device Drivers
-#
-
-#
-# Texas Instruments PCILynx requires I2C
-#
-CONFIG_IEEE1394_OHCI1394=y
-
-#
-# Protocol Drivers
-#
-# CONFIG_IEEE1394_VIDEO1394 is not set
-# CONFIG_IEEE1394_SBP2 is not set
-# CONFIG_IEEE1394_ETH1394 is not set
-# CONFIG_IEEE1394_DV1394 is not set
-CONFIG_IEEE1394_RAWIO=y
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-CONFIG_NE2K_PCI=y
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=y
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-CONFIG_S2IO=m
-# CONFIG_S2IO_NAPI is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_TIPAR is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-CONFIG_AGP=y
-# CONFIG_AGP_ALI is not set
-# CONFIG_AGP_ATI is not set
-# CONFIG_AGP_AMD is not set
-# CONFIG_AGP_AMD64 is not set
-CONFIG_AGP_INTEL=y
-# CONFIG_AGP_NVIDIA is not set
-# CONFIG_AGP_SIS is not set
-# CONFIG_AGP_SWORKS is not set
-# CONFIG_AGP_VIA is not set
-# CONFIG_AGP_EFFICEON is not set
-CONFIG_DRM=y
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_MWAVE is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_IBM_ASM is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=y
-CONFIG_FB_VESA=y
-# CONFIG_FB_VESA_STD is not set
-CONFIG_FB_VESA_TNG=y
-CONFIG_FB_VESA_DEFAULT_MODE="640x480-32@60"
-CONFIG_VIDEO_SELECT=y
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-CONFIG_SND_AC97_BUS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=y
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_AIPTEK is not set
-CONFIG_USB_WACOM=y
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGETKIT is not set
-CONFIG_USB_PHIDGETSERVO=m
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# LED devices
-#
-# CONFIG_NEW_LEDS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-# CONFIG_EDAC is not set
-
-#
-# Real Time Clock
-#
-# CONFIG_RTC_CLASS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Instrumentation Support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=y
-# CONFIG_KPROBES is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=15
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_UNWIND_INFO is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_STACK_BACKTRACE_COLS=2
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-spitz b/packages/linux/linux-rp-2.6.17/defconfig-spitz
deleted file mode 100644
index 824fd57aaa..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-spitz
+++ /dev/null
@@ -1,1603 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sun Sep 3 23:29:17 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_IWMMXT=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rw fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-CONFIG_LOGO_OZ640_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-CONFIG_SND_AC97_BUS=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-
-#
-# SoC Audio for the Atmel AT91
-#
-
-#
-# SoC Audio for the Freescale i.MX
-#
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-tosa b/packages/linux/linux-rp-2.6.17/defconfig-tosa
deleted file mode 100644
index b2ac915e07..0000000000
--- a/packages/linux/linux-rp-2.6.17/defconfig-tosa
+++ /dev/null
@@ -1,1609 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5-git5
-# Tue Mar 14 09:05:26 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-CONFIG_MACH_TOSA=y
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-CONFIG_TOSHIBA_TC6393XB=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_TMIO=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-CONFIG_KEYBOARD_TOSA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_CORGI is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_WM97XX=y
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-CONFIG_TOUCHSCREEN_WM9712=y
-# CONFIG_TOUCHSCREEN_WM9713 is not set
-# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TOSA=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_W100 is not set
-CONFIG_FB_TMIO=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_BUS=y
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=y
-CONFIG_SND_PXA2xx_SOC_AC97=y
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_TOSA=y
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-CONFIG_SND_SOC_WM9712=y
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
diff --git a/packages/linux/linux-rp-2.6.17/hrw-pcmcia-ids-r5.patch b/packages/linux/linux-rp-2.6.17/hrw-pcmcia-ids-r5.patch
deleted file mode 100644
index b09acacadd..0000000000
--- a/packages/linux/linux-rp-2.6.17/hrw-pcmcia-ids-r5.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Few cards informations submitted by OpenZaurus users.
-
-Seagate 8GB microdrive:
- product info: "SEAGATE", "ST1"
- manfid 0x0111, 0x0000
-
-One CF card:
- product info: "SAMSUNG", "04/05/06", "", ""
- manfid : 0x0000, 0x0000
-
-Ridata 8GB Pro 150X Compact Flash Card:
- product info: "SMI VENDOR", "SMI PRODUCT", ""
- manfid: 0x000a, 0x0000
-
- product info: "M-Systems", "CF500", ""
- manfid: 0x000a, 0x0000
-
- product info: "TRANSCEND", "TS4GCF120", ""
- manfid: 0x000a, 0x0000
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
- drivers/ide/legacy/ide-cs.c | 5 +++++
- drivers/net/pcmcia/pcnet_cs.c | 2 ++
- 2 files changed, 7 insertions(+)
-
-Index: linux-2.6.18/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:51.000000000 +0000
-+++ linux-2.6.18/drivers/ide/legacy/ide-cs.c 2006-12-06 00:55:55.000000000 +0000
-@@ -398,12 +398,17 @@ static struct pcmcia_device_id ide_ids[]
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
- PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
- PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
-+ PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c),
- PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
- PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
- PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
-+ PCMCIA_DEVICE_PROD_ID12("SEAGATE", "ST1", 0x87c1b330, 0xe1f30883),
-+ PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "04/05/06", 0x43d74cb4, 0x6a22777d),
-+ PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6),
- PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
- PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443),
-+ PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8),
- PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-Index: linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c
-===================================================================
---- linux-2.6.18.orig/drivers/net/pcmcia/pcnet_cs.c 2006-09-20 04:42:06.000000000 +0100
-+++ linux-2.6.18/drivers/net/pcmcia/pcnet_cs.c 2006-12-06 00:57:27.000000000 +0000
-@@ -1770,6 +1770,8 @@ static struct pcmcia_device_id pcnet_ids
- PCMCIA_DEVICE_CIS_PROD_ID12("TAMARACK", "Ethernet", 0xcf434fba, 0x00b2e941, "tamarack.cis"),
- PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
- 0xb4be14e3, 0x43ac239b, 0x0877b627),
-+ PCMCIA_DEVICE_PROD_ID123("Ethernet", "CF Size PC Card", "1.0",
-+ 0x00b2e941, 0x43ac239b, 0x0877b627),
- PCMCIA_DEVICE_NULL
- };
- MODULE_DEVICE_TABLE(pcmcia, pcnet_ids);
diff --git a/packages/linux/linux-rp-2.6.17/orinoco-remove-all-which-are-in-hostap-HACK.patch b/packages/linux/linux-rp-2.6.17/orinoco-remove-all-which-are-in-hostap-HACK.patch
deleted file mode 100644
index 380349f809..0000000000
--- a/packages/linux/linux-rp-2.6.17/orinoco-remove-all-which-are-in-hostap-HACK.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-This patch should resolve problem when people get eth0 (orinoco_cs) instead of wlan0 (hostap_cs)
-with their WiFi cards.
-
-Patch will NEVER been accepted upstream.
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Index: linux/drivers/net/wireless/orinoco_cs.c
-===================================================================
---- linux.orig/drivers/net/wireless/orinoco_cs.c 2006-08-23 16:04:10.000000000 +0200
-+++ linux/drivers/net/wireless/orinoco_cs.c 2006-08-23 16:17:43.000000000 +0200
-@@ -453,33 +453,21 @@
- "Pavel Roskin <proski@gnu.org>, et al)";
-
- static struct pcmcia_device_id orinoco_cs_ids[] = {
-- PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), /* SonicWALL Long Range Wireless Card */
-- PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), /* Sohoware NCP110, Philips 802.11b */
- PCMCIA_DEVICE_MANF_CARD(0x0089, 0x0002), /* AnyPoint(TM) Wireless II PC Card */
-- PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), /* 3Com AirConnect PCI 777A */
-- PCMCIA_DEVICE_MANF_CARD(0x0126, 0x8000), /* PROXIM RangeLAN-DS/LAN PC CARD */
- PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002), /* Compaq WL100 11 Mbps Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), /* Lucent Orinoco and old Intersil */
- PCMCIA_DEVICE_MANF_CARD(0x016b, 0x0001), /* Ericsson WLAN Card C11 */
- PCMCIA_DEVICE_MANF_CARD(0x01eb, 0x080a), /* Nortel Networks eMobility 802.11 Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x01ff, 0x0008), /* Intermec MobileLAN 11Mbps 802.11b WLAN Card */
-- PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */
- PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */
- PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */
- PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */
-- PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */
-- PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */
-- PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0002), /* Compaq HNW-100 11 Mbps Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), /* Linksys WCF12 Wireless CompactFlash Card */
-- PCMCIA_DEVICE_MANF_CARD(0x02aa, 0x0002), /* ASUS SpaceLink WL-100 */
- PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x0002), /* SpeedStream SS1021 Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x14ea, 0xb001), /* PLANEX RoadLannerWave GW-NS11H */
-- PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), /* Airvast WN-100 */
- PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), /* Adaptec Ultra Wireless ANW-8030 */
- PCMCIA_DEVICE_MANF_CARD(0xc001, 0x0008), /* CONTEC FLEXSCAN/FX-DDS110-PCC */
- PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002), /* Conceptronic CON11Cpro, EMTAC A2424i */
-- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), /* Safeway 802.11b, ZCOMAX AirRunner/XI-300 */
-- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), /* D-Link DCF660, Sandisk Connect SDWCFB-000 */
- PCMCIA_DEVICE_PROD_ID12(" ", "IEEE 802.11 Wireless LAN/PC Card", 0x3b6e20c8, 0xefccafe9),
- PCMCIA_DEVICE_PROD_ID12("3Com", "3CRWE737A AirConnect Wireless LAN PC Card", 0x41240e5b, 0x56010af3),
- PCMCIA_DEVICE_PROD_ID12("ACTIONTEC", "PRISM Wireless LAN PC Card", 0x393089da, 0xa71e69d5),
-@@ -487,31 +475,25 @@
- PCMCIA_DEVICE_PROD_ID123("AIRVAST", "IEEE 802.11b Wireless PCMCIA Card", "HFA3863", 0xea569531, 0x4bcb9645, 0x355cb092),
- PCMCIA_DEVICE_PROD_ID12("Allied Telesyn", "AT-WCL452 Wireless PCMCIA Radio", 0x5cd01705, 0x4271660f),
- PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11b_PC_CARD_25", 0x78fc06ee, 0xdb9aa842),
-- PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11B_CF_CARD_25", 0x78fc06ee, 0x45a50c1e),
- PCMCIA_DEVICE_PROD_ID12("Avaya Communication", "Avaya Wireless PC Card", 0xd8a43b78, 0x0d341169),
- PCMCIA_DEVICE_PROD_ID12("BENQ", "AWL100 PCMCIA ADAPTER", 0x35dadc74, 0x01f7fedb),
- PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-PCM-L11G", 0x2decece3, 0xf57ca4b3),
-- PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-CF-S11G", 0x2decece3, 0x82067c18),
- PCMCIA_DEVICE_PROD_ID12("Cabletron", "RoamAbout 802.11 DS", 0x32d445f5, 0xedeffd90),
-- PCMCIA_DEVICE_PROD_ID12("Compaq", "WL200_11Mbps_Wireless_PCI_Card", 0x54f7c49c, 0x15a75e5b),
- PCMCIA_DEVICE_PROD_ID123("corega", "WL PCCL-11", "ISL37300P", 0x0a21501a, 0x59868926, 0xc9049a39),
- PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCC-11", 0x5261440f, 0xa6405584),
- PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCCA-11", 0x5261440f, 0xdf6115f9),
- PCMCIA_DEVICE_PROD_ID12("corega_K.K.", "Wireless_LAN_PCCB-11", 0x29e33311, 0xee7a27ae),
- PCMCIA_DEVICE_PROD_ID12("D", "Link DRC-650 11Mbps WLAN Card", 0x71b18589, 0xf144e3ac),
-- PCMCIA_DEVICE_PROD_ID12("D", "Link DWL-650 11Mbps WLAN Card", 0x71b18589, 0xb6f1b0ab),
- PCMCIA_DEVICE_PROD_ID12("D-Link Corporation", "D-Link DWL-650H 11Mbps WLAN Adapter", 0xef544d24, 0xcd8ea916),
- PCMCIA_DEVICE_PROD_ID12("Digital Data Communications", "WPC-0100", 0xfdd73470, 0xe0b6f146),
- PCMCIA_DEVICE_PROD_ID12("ELSA", "AirLancer MC-11", 0x4507a33a, 0xef54f0e3),
- PCMCIA_DEVICE_PROD_ID12("HyperLink", "Wireless PC Card 11Mbps", 0x56cc3f1a, 0x0bcf220c),
- PCMCIA_DEVICE_PROD_ID123("Instant Wireless ", " Network PC CARD", "Version 01.02", 0x11d901af, 0x6e9bd926, 0x4b74baa0),
- PCMCIA_DEVICE_PROD_ID12("Intel", "PRO/Wireless 2011 LAN PC Card", 0x816cc815, 0x07f58077),
-- PCMCIA_DEVICE_PROD_ID12("INTERSIL", "HFA384x/IEEE", 0x74c5e40d, 0xdb472a18),
- PCMCIA_DEVICE_PROD_ID12("INTERSIL", "I-GATE 11M PC Card / PC Card plus", 0x74c5e40d, 0x8304ff77),
- PCMCIA_DEVICE_PROD_ID12("Intersil", "PRISM 2_5 PCMCIA ADAPTER", 0x4b801a17, 0x6345a0bf),
- PCMCIA_DEVICE_PROD_ID123("Intersil", "PRISM Freedom PCMCIA Adapter", "ISL37100P", 0x4b801a17, 0xf222ec2d, 0x630d52b2),
- PCMCIA_DEVICE_PROD_ID12("LeArtery", "SYNCBYAIR 11Mbps Wireless LAN PC Card", 0x7e3b326a, 0x49893e92),
-- PCMCIA_DEVICE_PROD_ID12("Linksys", "Wireless CompactFlash Card", 0x0733cc81, 0x0c52f395),
- PCMCIA_DEVICE_PROD_ID12("Lucent Technologies", "WaveLAN/IEEE", 0x23eb9949, 0xc562e72a),
- PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11", 0x481e0094, 0x7360e410),
- PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11G", 0x481e0094, 0xf57ca4b3),
-@@ -529,10 +511,8 @@
- PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PCI CARD HARMONY 80211B", 0xc6536a5e, 0x9f494e26),
- PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "11Mbps WLAN Card", 0x43d74cb4, 0x579bd91b),
- PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2532W-B EliteConnect Wireless Adapter", 0xc4f8b18b, 0x196bd757),
-- PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2632W", 0xc4f8b18b, 0x474a1f2a),
- PCMCIA_DEVICE_PROD_ID12("Symbol Technologies", "LA4111 Spectrum24 Wireless LAN PC Card", 0x3f02b4d6, 0x3663cb0e),
- PCMCIA_DEVICE_PROD_ID123("The Linksys Group, Inc.", "Instant Wireless Network PC Card", "ISL37300P", 0xa5f472c2, 0x590eb502, 0xc9049a39),
-- PCMCIA_DEVICE_PROD_ID12("ZoomAir 11Mbps High", "Rate wireless Networking", 0x273fe3db, 0x32a1eaee),
- PCMCIA_DEVICE_NULL,
- };
- MODULE_DEVICE_TABLE(pcmcia, orinoco_cs_ids);
diff --git a/packages/linux/linux-rp-2.6.17/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.17/pxa-serial-hack.patch
deleted file mode 100644
index b3a7f786ea..0000000000
--- a/packages/linux/linux-rp-2.6.17/pxa-serial-hack.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-Index: linux-2.6.14/drivers/serial/8250.c
-===================================================================
---- linux-2.6.14.orig/drivers/serial/8250.c 2005-11-07 18:10:50.000000000 +0000
-+++ linux-2.6.14/drivers/serial/8250.c 2005-11-07 19:01:21.000000000 +0000
-@@ -2333,7 +2333,12 @@
- .devfs_name = "tts/",
- .dev_name = "ttyS",
- .major = TTY_MAJOR,
-+#ifdef CONFIG_SERIAL_PXA
-+ .minor = 64 + 3,
-+ .name_base = 3,
-+#else
- .minor = 64,
-+#endif
- .nr = UART_NR,
- .cons = SERIAL8250_CONSOLE,
- };
-Index: linux-2.6.14/drivers/serial/serial_core.c
-===================================================================
---- linux-2.6.14.orig/drivers/serial/serial_core.c 2005-11-07 18:10:50.000000000 +0000
-+++ linux-2.6.14/drivers/serial/serial_core.c 2005-11-07 19:01:21.000000000 +0000
-@@ -2126,6 +2126,7 @@
- normal->driver_name = drv->driver_name;
- normal->devfs_name = drv->devfs_name;
- normal->name = drv->dev_name;
-+ normal->name_base = drv->name_base;
- normal->major = drv->major;
- normal->minor_start = drv->minor;
- normal->type = TTY_DRIVER_TYPE_SERIAL;
-Index: linux-2.6.14/include/linux/serial_core.h
-===================================================================
---- linux-2.6.14.orig/include/linux/serial_core.h 2005-11-07 18:10:56.000000000 +0000
-+++ linux-2.6.14/include/linux/serial_core.h 2005-11-07 19:01:21.000000000 +0000
-@@ -322,6 +322,7 @@
- const char *driver_name;
- const char *dev_name;
- const char *devfs_name;
-+ int name_base;
- int major;
- int minor;
- int nr;
-Index: linux-2.6.14/drivers/serial/serial_cs.c
-===================================================================
---- linux-2.6.14.orig/drivers/serial/serial_cs.c 2005-10-28 01:02:08.000000000 +0100
-+++ linux-2.6.14/drivers/serial/serial_cs.c 2005-11-07 19:01:21.000000000 +0000
-@@ -294,7 +294,7 @@
- kio_addr_t iobase, int irq)
- {
- struct uart_port port;
-- int line;
-+ int line, linestart;
-
- memset(&port, 0, sizeof (struct uart_port));
- port.iobase = iobase;
-@@ -311,10 +311,16 @@
- return -EINVAL;
- }
-
-+#if CONFIG_SERIAL_PXA
-+ linestart = 3;
-+#else
-+ linestart = 0;
-+#endif
-+
- info->line[info->ndev] = line;
-- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
-+ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
- info->node[info->ndev].major = TTY_MAJOR;
-- info->node[info->ndev].minor = 0x40 + line;
-+ info->node[info->ndev].minor = 0x40 + line + linestart;
- if (info->ndev > 0)
- info->node[info->ndev - 1].next = &info->node[info->ndev];
- info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.17/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.17/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
deleted file mode 100644
index 18bf4268fc..0000000000
--- a/packages/linux/linux-rp-2.6.17/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-
-From: Petr Vandrovec <vandrove@vc.cvut.cz>
-
-Patch below adds support for using different prescaler than 16 for 16c950
-chips. This is needed for using Fujitsu-Siemens Connect2Air compact-flash
-card, which comes (apparently) with 806kHz clocks, and so you have to
-program prescaler for division by 7, and DLAB to 1, to get 115200Bd.
-
-To get card properly running you also have to add lines below to
-/etc/pcmcia/serial.opts so kernel knows that base speed is not 115200 but
-50400 (50400 * 16 = 806400; 806400 / 7 = 115200). As I've found no code
-specifying baud_rate in serial_cs, I assume that specifying it in
-serial.opts is right way to do this type of things.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER maximum possible
-baud rate passed to uart code was uartclk / 16 while correct value for
-these devices (and for 16c950) is uartclk / 4.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER devices with
-baud_rate 19200 or 9600 spd_cust did not work correctly. Not that such
-devices exist, but we should not ignore spd_cust, user probably knows why
-he asked for spd_cust.
-
-serial.opts:
-
-case "$MANFID-$FUNCID-$PRODID_1-$PRODID_2-$PRODID_3-$PRODID_4" in
-'0279,950b-2-GPRS Modem---')
- SERIAL_OPTS="baud_base 50400"
- ;;
-esac
-
-Cc: David Woodhouse <dwmw2@infradead.org>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
----
-
- drivers/serial/8250.c | 82 +++++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 64 insertions(+), 18 deletions(-)
-
-diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
---- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
-+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
-@@ -1653,24 +1653,58 @@ static void serial8250_shutdown(struct u
- serial_unlink_irq_chain(up);
- }
-
--static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
-+static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud,
-+ unsigned int *prescaler)
- {
-- unsigned int quot;
--
-- /*
-- * Handle magic divisors for baud rates above baud_base on
-- * SMSC SuperIO chips.
-+ /*
-+ * Use special handling only if user did not supply its own divider.
-+ * spd_cust is defined in terms of baud_base, so always use default
-+ * prescaler when spd_cust is requested.
- */
-- if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/4))
-- quot = 0x8001;
-- else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/8))
-- quot = 0x8002;
-- else
-- quot = uart_get_divisor(port, baud);
-
-- return quot;
-+ *prescaler = 16;
-+ if (baud != 38400 || (port->flags & UPF_SPD_MASK) != UPF_SPD_CUST) {
-+ unsigned int quot = port->uartclk / baud;
-+
-+ /*
-+ * Handle magic divisors for baud rates above baud_base on
-+ * SMSC SuperIO chips.
-+ */
-+ if (port->flags & UPF_MAGIC_MULTIPLIER) {
-+ if (quot == 4) {
-+ return 0x8001;
-+ } else if (quot == 8) {
-+ return 0x8002;
-+ }
-+ }
-+ if (port->type == PORT_16C950) {
-+ /*
-+ * This computes TCR value (4 to 16), not CPR value (which can
-+ * be between 1.000 and 31.875) - chip I have uses XTAL of
-+ * 806400Hz, and so a division by 7 is required to get 115200Bd.
-+ * I'm leaving CPR disabled for now, until someone will
-+ * hit even more exotic XTAL (it is needed to get 500kbps
-+ * or 1000kbps from 18.432MHz XTAL, but I have no device
-+ * which would benefit from doing that).
-+ *
-+ * If we can use divide by 16, use it. Otherwise look for
-+ * better prescaler, from 15 to 4. If quotient cannot
-+ * be divided by any integer value between 4 and 15, use 4.
-+ */
-+ if (quot & 0x0F) {
-+ unsigned int div;
-+
-+ for (div = 15; div > 4; div--) {
-+ if (quot % div == 0) {
-+ break;
-+ }
-+ }
-+ *prescaler = div;
-+ return quot / div;
-+ }
-+ }
-+ }
-+ return uart_get_divisor(port, baud);
- }
-
- static void
-@@ -1680,7 +1714,7 @@ serial8250_set_termios(struct uart_port
- struct uart_8250_port *up = (struct uart_8250_port *)port;
- unsigned char cval, fcr = 0;
- unsigned long flags;
-- unsigned int baud, quot;
-+ unsigned int baud, quot, prescaler;
-
- switch (termios->c_cflag & CSIZE) {
- case CS5:
-@@ -1712,8 +1746,13 @@ serial8250_set_termios(struct uart_port
- /*
- * Ask the core to calculate the divisor for us.
- */
-- baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-- quot = serial8250_get_divisor(port, baud);
-+
-+ if (port->type == PORT_16C950 || (port->flags & UPF_MAGIC_MULTIPLIER)) {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4);
-+ } else {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-+ }
-+ quot = serial8250_get_divisor(port, baud, &prescaler);
-
- /*
- * Oxford Semi 952 rev B workaround
-@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
- serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
-
- /*
-+ * Program prescaler for 16C950 chips.
-+ */
-+ if (up->port.type == PORT_16C950) {
-+ serial_icr_write(up, UART_TCR, prescaler == 16 ? 0 : prescaler);
-+ }
-+
-+ /*
- * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
- * is written without DLAB set, this mode will be disabled.
- */
-_
diff --git a/packages/linux/linux-rp-2.6.17/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.17/squashfs3.0-2.6.15.patch
deleted file mode 100644
index 6fec9eba03..0000000000
--- a/packages/linux/linux-rp-2.6.17/squashfs3.0-2.6.15.patch
+++ /dev/null
@@ -1,4174 +0,0 @@
-diff --new-file -urp linux-2.6.15/fs/Kconfig linux-2.6.15-squashfs3.0/fs/Kconfig
---- linux-2.6.15/fs/Kconfig 2006-03-01 22:37:27.000000000 +0000
-+++ linux-2.6.15-squashfs3.0/fs/Kconfig 2006-03-07 21:12:37.000000000 +0000
-@@ -1151,6 +1151,71 @@ config CRAMFS
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.0 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- help
-diff --new-file -urp linux-2.6.15/fs/Makefile linux-2.6.15-squashfs3.0/fs/Makefile
---- linux-2.6.15/fs/Makefile 2006-03-01 22:37:27.000000000 +0000
-+++ linux-2.6.15-squashfs3.0/fs/Makefile 2006-03-07 21:12:37.000000000 +0000
-@@ -55,6 +55,7 @@ obj-$(CONFIG_EXT3_FS) += ext3/ # Before
- obj-$(CONFIG_JBD) += jbd/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-diff --new-file -urp linux-2.6.15/fs/squashfs/inode.c linux-2.6.15-squashfs3.0/fs/squashfs/inode.c
---- linux-2.6.15/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/inode.c 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,2127 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_statfs(struct super_block *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static struct super_block *squashfs_get_sb(struct file_system_type *, int,
-+ const char *, void *);
-+
-+
-+static z_stream stream;
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k;
-+ char *c_buffer;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed)
-+ down(&msblk->read_data_mutex);
-+
-+ for (bytes = 0, k = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto block_release;
-+ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ /*
-+ * uncompress block
-+ */
-+ if (compressed) {
-+ int zlib_err;
-+
-+ stream.next_in = c_buffer;
-+ stream.avail_in = c_byte;
-+ stream.next_out = buffer;
-+ stream.avail_out = msblk->read_size;
-+
-+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
-+ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
-+ != Z_STREAM_END) || ((zlib_err =
-+ zlib_inflateEnd(&stream)) != Z_OK)) {
-+ ERROR("zlib_fs returned unexpected result 0x%x\n",
-+ zlib_err);
-+ bytes = 0;
-+ } else
-+ bytes = stream.total_out;
-+
-+ up(&msblk->read_data_mutex);
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+block_release:
-+ while (--b >= 0)
-+ brelse(bh[b]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ down(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ up(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ up(&msblk->block_cache_mutex);
-+
-+ if (!(msblk->block_cache[i].length =
-+ squashfs_read_data(s,
-+ msblk->block_cache[i].data,
-+ block, 0, &next_index))) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ goto out;
-+ }
-+
-+ down(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ up(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ up(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ up(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ down(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ up(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n, nf;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+
-+ while ( 1 ) {
-+ down(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ nf = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = nf;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ up(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ up(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ up(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ init_MUTEX(&msblk->read_data_mutex);
-+ init_MUTEX(&msblk->read_page_mutex);
-+ init_MUTEX(&msblk->block_cache_mutex);
-+ init_MUTEX(&msblk->fragment_mutex);
-+ init_MUTEX(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_data block */
-+ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
-+ SQUASHFS_METADATA_SIZE :
-+ sblk->block_size;
-+
-+ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_data block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+allocate_root:
-+ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
-+ goto failed_mount;
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->read_data);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct super_block *s, struct kstatfs *buf)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ up(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ up(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ down(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ up(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, available_bytes);
-+
-+ if (i == page->index) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+ } else if ((push_page =
-+ grab_cache_page_nowait(page->mapping, i))) {
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+ unlock_page(push_page);
-+ page_cache_release(push_page);
-+ }
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ up(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+
-+ down(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (bytes)
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ up(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ dirs_read++;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_data);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static struct super_block *squashfs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
-+ "Phillip Lougher\n");
-+
-+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ destroy_inodecache();
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+
-+ if ((err = register_filesystem(&squashfs_fs_type))) {
-+ vfree(stream.workspace);
-+ destroy_inodecache();
-+ }
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ vfree(stream.workspace);
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static kmem_cache_t * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, SLAB_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-+ SLAB_CTOR_CONSTRUCTOR)
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once, NULL);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ if (kmem_cache_destroy(squashfs_inode_cachep))
-+ printk(KERN_INFO "squashfs_inode_cache: not all structures "
-+ "were freed\n");
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-+MODULE_LICENSE("GPL");
-diff --new-file -urp linux-2.6.15/fs/squashfs/Makefile linux-2.6.15-squashfs3.0/fs/squashfs/Makefile
---- linux-2.6.15/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/Makefile 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-diff --new-file -urp linux-2.6.15/fs/squashfs/squashfs2_0.c linux-2.6.15-squashfs3.0/fs/squashfs/squashfs2_0.c
---- linux-2.6.15/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/squashfs2_0.c 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,758 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
-+ - sblk->inode_table_start, offset);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ i->i_blksize = PAGE_CACHE_SIZE;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-diff --new-file -urp linux-2.6.15/fs/squashfs/squashfs.h linux-2.6.15-squashfs3.0/fs/squashfs/squashfs.h
---- linux-2.6.15/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/fs/squashfs/squashfs.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,86 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct address_space_operations squashfs_symlink_aops;
-+extern struct address_space_operations squashfs_aops;
-+extern struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs.h
---- linux-2.6.15/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,911 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long unused;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int unused;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs_i.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_i.h
---- linux-2.6.15/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_i.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs_sb.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_sb.h
---- linux-2.6.15/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_sb.h 2006-03-07 21:12:37.000000000 +0000
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ unsigned int read_size;
-+ char *read_data;
-+ char *read_page;
-+ struct semaphore read_data_mutex;
-+ struct semaphore read_page_mutex;
-+ struct semaphore block_cache_mutex;
-+ struct semaphore fragment_mutex;
-+ struct semaphore meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-diff --new-file -urp linux-2.6.15/init/do_mounts_rd.c linux-2.6.15-squashfs3.0/init/do_mounts_rd.c
---- linux-2.6.15/init/do_mounts_rd.c 2006-03-01 22:37:27.000000000 +0000
-+++ linux-2.6.15-squashfs3.0/init/do_mounts_rd.c 2006-03-07 21:12:37.000000000 +0000
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-rp-2.6.17/tosa-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.17/tosa-lcdnoise-r0.patch
deleted file mode 100644
index cb014fb8bc..0000000000
--- a/packages/linux/linux-rp-2.6.17/tosa-lcdnoise-r0.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-Index: linux-tosa/arch/arm/mach-pxa/tosa.c
-===================================================================
---- linux-tosa.orig/arch/arm/mach-pxa/tosa.c 2006-08-29 16:52:59.000000000 +0100
-+++ linux-tosa/arch/arm/mach-pxa/tosa.c 2006-08-29 16:55:25.959706776 +0100
-@@ -2,6 +2,7 @@
- * Support for Sharp SL-C6000x PDAs
- * Model: (Tosa)
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on code written by Sharp/Lineo for 2.4 kernels
-@@ -46,6 +47,8 @@
- #include <asm/hardware/tmio.h>
- #include <asm/mach/sharpsl_param.h>
-
-+#include <linux/wm97xx.h>
-+
- #include "generic.h"
-
- /*
-@@ -428,6 +431,16 @@
- },
- };
-
-+
-+/*
-+ * Tosa Touchscreen device
-+ */
-+
-+static struct wm97xx_machinfo tosa_ts_machinfo = {
-+ .get_hsync_time = tosa_get_hsync_time,
-+ .wait_hsync = tosa_wait_hsync,
-+};
-+
- /*
- * Tosa Blueooth
- */
-@@ -457,6 +470,7 @@
- GPSR(TOSA_GPIO_ON_RESET) = GPIO_bit(TOSA_GPIO_ON_RESET);
-
- mdelay(1000);
-+ wm97xx_unset_machinfo();
- }
-
- static void tosa_restart(void)
-@@ -501,6 +515,8 @@
- platform_scoop_config = &tosa_pcmcia_config;
-
- platform_add_devices(devices, ARRAY_SIZE(devices));
-+
-+ wm97xx_set_machinfo(&tosa_ts_machinfo);
- }
-
- static void __init fixup_tosa(struct machine_desc *desc,
-Index: linux-tosa/arch/arm/mach-pxa/tosa_lcd.c
-===================================================================
---- linux-tosa.orig/arch/arm/mach-pxa/tosa_lcd.c 2006-08-29 16:52:59.000000000 +0100
-+++ linux-tosa/arch/arm/mach-pxa/tosa_lcd.c 2006-08-29 16:55:32.818664056 +0100
-@@ -1,6 +1,7 @@
- /*
- * LCD / Backlight control code for Sharp SL-6000x (tosa)
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * This program is free software; you can redistribute it and/or modify
-@@ -59,6 +60,8 @@
- static struct ssp_dev tosa_nssp_dev;
- static struct ssp_state tosa_nssp_state;
- static spinlock_t tosa_nssp_lock;
-+static int blanked;
-+static unsigned long hsync_time;
-
- static unsigned short normal_i2c[] = {
- DAC_BASE,
-@@ -130,6 +133,17 @@
- pxa_nssp_output(TG_GPOSR,0x02); /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */
- }
-
-+static unsigned long calc_hsync_time(const struct fb_videomode *mode) {
-+ /* The 25 and 44 'magic numbers' are from Sharp's 2.4 patches */
-+ if (mode->yres == 640) {
-+ return 25;
-+ }
-+ if (mode->yres == 320) {
-+ return 44;
-+ }
-+ return 0;
-+}
-+
- static void tosa_lcd_tg_on(struct device *dev, const struct fb_videomode *mode)
- {
- const int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR;
-@@ -154,6 +168,8 @@
- /* set common voltage */
- i2c_smbus_write_byte_data(tosa_i2c_dac, DAC_CH1, comadj);
-
-+ blanked = 0;
-+ hsync_time = calc_hsync_time(mode);
- }
-
- static void tosa_lcd_tg_off(struct device *dev)
-@@ -172,6 +188,8 @@
-
- /* L3V Off */
- reset_scoop_gpio( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC3693_L3V_ON);
-+
-+ blanked = 1;
- }
-
- static int tosa_detect_client(struct i2c_adapter* adapter, int address, int kind) {
-@@ -238,6 +256,23 @@
- return 0;
- }
-
-+unsigned long tosa_get_hsync_time(void)
-+{
-+/* This method should eventually contain the correct algorithm for calculating
-+ the hsync_time */
-+ if (blanked)
-+ return 0;
-+ else
-+ return hsync_time;
-+}
-+
-+void tosa_wait_hsync(void)
-+{
-+ /* Waits for a rising edge on the VGA line */
-+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) == 0);
-+ while((GPLR(TOSA_GPIO_VGA_LINE) & GPIO_bit(TOSA_GPIO_VGA_LINE)) != 0);
-+}
-+
- static struct i2c_driver tosa_driver={
- .id = TOSA_LCD_I2C_DEVICEID,
- .attach_adapter = tosa_attach_adapter,
-Index: linux-tosa/include/asm-arm/arch-pxa/tosa.h
-===================================================================
---- linux-tosa.orig/include/asm-arm/arch-pxa/tosa.h 2006-08-29 16:52:59.000000000 +0100
-+++ linux-tosa/include/asm-arm/arch-pxa/tosa.h 2006-08-29 16:55:12.442761664 +0100
-@@ -1,6 +1,7 @@
- /*
- * Hardware specific definitions for Sharp SL-C6000x series of PDAs
- *
-+ * Copyright (c) 2006 Wolfson Microelectronics PLC.
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on Sharp's 2.4 kernel patches
-@@ -187,4 +188,8 @@
- extern struct platform_device tosascoop_jc_device;
- extern struct platform_device tosascoop_device;
- extern struct platform_device tc6393_device;
-+
-+unsigned long tosa_get_hsync_time(void);
-+void tosa_wait_hsync(void);
-+
- #endif /* _ASM_ARCH_TOSA_H_ */
diff --git a/packages/linux/linux-rp-2.6.17/vesafb-tng-1.0-rc2-git-20060629.patch b/packages/linux/linux-rp-2.6.17/vesafb-tng-1.0-rc2-git-20060629.patch
deleted file mode 100644
index 188ce6094e..0000000000
--- a/packages/linux/linux-rp-2.6.17/vesafb-tng-1.0-rc2-git-20060629.patch
+++ /dev/null
@@ -1,3089 +0,0 @@
-# Patch generated against a6047eef1c465c38aacfbdab193161b3f0cd144
----
-# Documentation/fb/vesafb.txt | 250 ++++--
-# arch/i386/boot/video.S | 12
-# drivers/video/Kconfig | 56 +
-# drivers/video/Makefile | 6
-# drivers/video/fbmem.c | 1
-# drivers/video/modedb.c | 1
-# drivers/video/vesafb-thread.c | 727 +++++++++++++++++++
-# drivers/video/vesafb-tng.c | 1598 ++++++++++++++++++++++++++++++++++++++++++
-# include/linux/sched.h | 2
-# include/video/vesa.h | 150 +++
-# kernel/fork.c | 35
-# mm/memory.c | 1
-# mm/mmap.c | 1
-# 13 files changed, 2748 insertions(+), 92 deletions(-)
-#
---- linux-2.6.17.orig/Documentation/fb/vesafb.txt
-+++ linux-2.6.17/Documentation/fb/vesafb.txt
-@@ -2,16 +2,18 @@
- What is vesafb?
- ===============
-
--This is a generic driver for a graphic framebuffer on intel boxes.
-+Vesafb is a generic framebuffer driver for x86 and x86_64 boxes.
-
--The idea is simple: Turn on graphics mode at boot time with the help
--of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k
--(and other) ports do.
-+VESA BIOS Extensions Version 2.0 are required, because we need access to
-+a linear frame buffer. VBE 3.0 is required if you want to use modes with a
-+higher (than the standard 60 Hz) refresh rate.
-
--This means we decide at boot time whenever we want to run in text or
--graphics mode. Switching mode later on (in protected mode) is
--impossible; BIOS calls work in real mode only. VESA BIOS Extensions
--Version 2.0 are required, because we need a linear frame buffer.
-+The VESA framebuffer driver comes in two flavors - the standard 'vesafb'
-+and 'vesafb-tng'. Vesafb-tng is available only on 32-bit x86 due to the
-+technology it uses (vm86). Vesafb-tng has more features than vesafb
-+(adjusting the refresh rate on VBE 3.0 compliant boards, switching the
-+video mode without rebooting, selecting a mode by providing its
-+modedb name, and more).
-
- Advantages:
-
-@@ -29,26 +31,35 @@ Disadvantages:
- How to use it?
- ==============
-
--Switching modes is done using the vga=... boot parameter. Read
--Documentation/svga.txt for details.
-+If you are running a 32-bit x86 system and you decide to use vesafb-tng,
-+you can either compile the driver into the kernel or use it as a module.
-+The graphics mode you want to use is in both cases specified using the
-+standard modedb format.
-
--You should compile in both vgacon (for text mode) and vesafb (for
--graphics mode). Which of them takes over the console depends on
--whenever the specified mode is text or graphics.
-+If your system doesn't support vm86 calls, things get a little more tricky.
-+Since on such systems you can't do BIOS calls from protected mode in which
-+kernel runs, you have to decide at boot time whenever you want to run in text
-+or in graphics mode. Switching mode later on is impossible. Switching modes
-+is done using the vga=... boot parameter. Read Documentation/svga.txt for
-+details. Below is a more detailed description of what to do on systems using
-+the standard vesafb driver.
-
--The graphic modes are NOT in the list which you get if you boot with
--vga=ask and hit return. The mode you wish to use is derived from the
--VESA mode number. Here are those VESA mode numbers:
-+You should compile in both vgacon (for text mode) and vesafb (for graphics
-+mode). Which of them takes over the console depends on whenever the
-+specified mode is text or graphics.
-+
-+The graphic modes are NOT in the list which you get if you boot with vga=ask
-+and hit return. The mode you wish to use is derived from the VESA mode number.
-+Here are those VESA mode numbers:
-
- | 640x480 800x600 1024x768 1280x1024
- ----+-------------------------------------
--256 | 0x101 0x103 0x105 0x107
--32k | 0x110 0x113 0x116 0x119
--64k | 0x111 0x114 0x117 0x11A
--16M | 0x112 0x115 0x118 0x11B
-+256 | 0x101 0x103 0x105 0x107
-+32k | 0x110 0x113 0x116 0x119
-+64k | 0x111 0x114 0x117 0x11A
-+16M | 0x112 0x115 0x118 0x11B
-
--The video mode number of the Linux kernel is the VESA mode number plus
--0x200.
-+The video mode number of the Linux kernel is the VESA mode number plus 0x200.
-
- Linux_kernel_mode_number = VESA_mode_number + 0x200
-
-@@ -56,15 +67,15 @@ So the table for the Kernel mode numbers
-
- | 640x480 800x600 1024x768 1280x1024
- ----+-------------------------------------
--256 | 0x301 0x303 0x305 0x307
--32k | 0x310 0x313 0x316 0x319
--64k | 0x311 0x314 0x317 0x31A
--16M | 0x312 0x315 0x318 0x31B
-+256 | 0x301 0x303 0x305 0x307
-+32k | 0x310 0x313 0x316 0x319
-+64k | 0x311 0x314 0x317 0x31A
-+16M | 0x312 0x315 0x318 0x31B
-
--To enable one of those modes you have to specify "vga=ask" in the
--lilo.conf file and rerun LILO. Then you can type in the desired
--mode at the "vga=ask" prompt. For example if you like to use
--1024x768x256 colors you have to say "305" at this prompt.
-+To enable one of those modes you have to specify "vga=ask" in the lilo.conf
-+file and rerun LILO. Then you can type in the desired mode at the "vga=ask"
-+prompt. For example if you like to use 1024x768x256 colors you have to say
-+"305" at this prompt.
-
- If this does not work, this might be because your BIOS does not support
- linear framebuffers or because it does not support this mode at all.
-@@ -72,11 +83,12 @@ Even if your board does, it might be the
- Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a
- "bad mode number" message if something goes wrong.
-
--1. Note: LILO cannot handle hex, for booting directly with
-+1. Note: LILO cannot handle hex, for booting directly with
- "vga=mode-number" you have to transform the numbers to decimal.
- 2. Note: Some newer versions of LILO appear to work with those hex values,
- if you set the 0x in front of the numbers.
-
-+
- X11
- ===
-
-@@ -84,98 +96,164 @@ XF68_FBDev should work just fine, but it
- another (accelerated) X-Server like XF86_SVGA might or might not work.
- It depends on X-Server and graphics board.
-
--The X-Server must restore the video mode correctly, else you end up
-+The X-Server must restore the video mode correctly, or else you end up
- with a broken console (and vesafb cannot do anything about this).
-+With vesafb-tng chances are that the console will be restored properly
-+even if the X server messes up the video mode.
-
-
- Refresh rates
- =============
-
--There is no way to change the vesafb video mode and/or timings after
--booting linux. If you are not happy with the 60 Hz refresh rate, you
--have these options:
-+With VBE 3.0 compatible BIOSes and vesafb-tng it is possible to change
-+the refresh rate either at boot time (by specifying the @<rr> part of
-+the mode name) or later, using the fbset utility.
-
-- * configure and load the DOS-Tools for your the graphics board (if
-- available) and boot linux with loadlin.
-- * use a native driver (matroxfb/atyfb) instead if vesafb. If none
-+If you want to use the default BIOS refresh rate while switching modes
-+on a running system, set pixclock to 0.
-+
-+With VBE 2.0 there is no way to change the mode timings after booting
-+Linux. If you are not happy with the 60 Hz refresh rate, you have
-+the following options:
-+
-+ * Configure and load the DOS tools for your the graphics board (if
-+ available) and boot Linux with loadlin.
-+ * Use a native driver (matroxfb/atyfb) instead of vesafb. If none
- is available, write a new one!
-- * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0
-- support nor the specs, so I have not checked this yet.
-+ * Use a BIOS editor to change the default refresh rate (such an
-+ editor does exist at least for ATI Radeon BIOSes).
-+ * If you're running a non-vm86 and VBE 3.0 compatible system, you can
-+ use a kernel patch (vesafb-rrc) to hard-code some mode timings in
-+ the kernel and use these while setting the video mode at boot time.
-+
-+Note that there are some boards (nVidia 59**, 57** and newer models)
-+claiming that their Video BIOS is VBE 3.0 compliant, while ignoring the
-+CRTC values provided by software such as vesafb-tng. You'll not be able
-+to adjust the refresh rate if you're using one of these boards.
-
-
- Configuration
- =============
-
--The VESA BIOS provides protected mode interface for changing
--some parameters. vesafb can use it for palette changes and
--to pan the display. It is turned off by default because it
--seems not to work with some BIOS versions, but there are options
--to turn it on.
-+The VESA BIOS provides protected mode interface for changing some parameters.
-+vesafb can use it for palette changes and to pan the display. It is turned
-+off by default because it seems not to work with some BIOS versions, but
-+there are options to turn it on.
-
--You can pass options to vesafb using "video=vesafb:option" on
--the kernel command line. Multiple options should be separated
--by comma, like this: "video=vesafb:ypan,invers"
-+You can pass options to vesafb using "video=vesafb:option" on the kernel
-+command line. Multiple options should be separated by a comma, like this:
-+"video=vesafb:ypan,1024x768-32@85"
-
--Accepted options:
-+Note that vesafb-tng still uses the "video=vesafb:option" format of the
-+kernel command line video parameter. "video=vesafb-tng:xxx" is incorrect.
-
--invers no comment...
-+Accepted options (both vesafb and vesafb-tng):
-
--ypan enable display panning using the VESA protected mode
-- interface. The visible screen is just a window of the
-- video memory, console scrolling is done by changing the
-- start of the window.
-- pro: * scrolling (fullscreen) is fast, because there is
-- no need to copy around data.
-- * You'll get scrollback (the Shift-PgUp thing),
-- the video memory can be used as scrollback buffer
-- kontra: * scrolling only parts of the screen causes some
-- ugly flicker effects (boot logo flickers for
-- example).
-+ypan Enable display panning using the VESA protected mode interface
-+ The visible screen is just a window of the video memory,
-+ console scrolling is done by changing the start of the window.
-+ pro: * scrolling (fullscreen) is fast, because there is
-+ no need to copy around data.
-+ * you'll get scrollback (the Shift-PgUp thing),
-+ the video memory can be used as scrollback buffer
-+ con: * scrolling only parts of the screen causes some
-+ ugly flicker effects (boot logo flickers for
-+ example).
-
--ywrap Same as ypan, but assumes your gfx board can wrap-around
-- the video memory (i.e. starts reading from top if it
-- reaches the end of video memory). Faster than ypan.
-+ywrap Same as ypan, but assumes your gfx board can wrap-around the video
-+ memory (i.e. starts reading from top if it reaches the end of
-+ video memory). Faster than ypan.
-
--redraw scroll by redrawing the affected part of the screen, this
-- is the safe (and slow) default.
-+redraw Scroll by redrawing the affected part of the screen, this is the
-+ safe (and slow) default.
-
-+vgapal Use the standard VGA registers for palette changes.
-
--vgapal Use the standard vga registers for palette changes.
-- This is the default.
--pmipal Use the protected mode interface for palette changes.
-+pmipal Use the protected mode interface for palette changes.
-+ This is the default is the protected mode interface is available.
-
--mtrr:n setup memory type range registers for the vesafb framebuffer
-- where n:
-- 0 - disabled (equivalent to nomtrr) (default)
-- 1 - uncachable
-- 2 - write-back
-- 3 - write-combining
-- 4 - write-through
-+mtrr:n Setup memory type range registers for the vesafb framebuffer
-+ where n:
-+ 0 - disabled (equivalent to nomtrr) (default)
-+ 1 - uncachable
-+ 2 - write-back
-+ 3 - write-combining
-+ 4 - write-through
-
-- If you see the following in dmesg, choose the type that matches the
-- old one. In this example, use "mtrr:2".
-+ If you see the following in dmesg, choose the type that matches
-+ the old one. In this example, use "mtrr:2".
- ...
- mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
- ...
-
--nomtrr disable mtrr
-+nomtrr Do not use memory type range registers for vesafb.
-
- vremap:n
- remap 'n' MiB of video RAM. If 0 or not specified, remap memory
-- according to video mode. (2.5.66 patch/idea by Antonino Daplas
-- reversed to give override possibility (allocate more fb memory
-- than the kernel would) to 2.4 by tmb@iki.fi)
-+ according to video mode. (2.5.66 patch/idea by Antonino Daplas
-+ reversed to give override possibility (allocate more fb memory
-+ than the kernel would) to 2.4 by tmb@iki.fi)
-
- vtotal:n
- if the video BIOS of your card incorrectly determines the total
- amount of video RAM, use this option to override the BIOS (in MiB).
-
--Have fun!
-+Options accepted only by vesafb-tng:
-
-- Gerd
-+<mode> The mode you want to set, in the standard modedb format. Refer to
-+ modedb.txt for a detailed description. If you specify a mode that is
-+ not supported by your board's BIOS, vesafb-tng will attempt to set a
-+ similar mode. The list of supported modes can be found in
-+ /proc/fbx/modes, where x is the framebuffer number (usually 0).
-+ When vesafb-tng is compiled as a module, the mode string should be
-+ provided as a value of the parameter 'mode'.
-+
-+vbemode:x
-+ Force the use of VBE mode x. The mode will only be set if it's
-+ found in the VBE-provided list of supported modes.
-+ NOTE: The mode number 'x' should be specified in VESA mode number
-+ notation, not the Linux kernel one (eg. 257 instead of 769).
-+ HINT: If you use this option because normal <mode> parameter does
-+ not work for you and you use a X server, you'll probably want to
-+ set the 'nocrtc' option to ensure that the video mode is properly
-+ restored after console <-> X switches.
-+
-+nocrtc Do not use CRTC timings while setting the video mode. This option
-+ makes sence only with VBE 3.0 compliant systems. Use it if you have
-+ problems with modes set in the standard way. Note that using this
-+ option means that any refresh rate adjustments will be ignored
-+ and the refresh rate will stay at your BIOS default (60 Hz).
-+
-+noedid Do not try to fetch and use EDID-provided modes.
-+
-+noblank Disable hardware blanking.
-+
-+gtf Force the use of VESA's GTF (Generalized Timing Formula). Specifying
-+ this will cause vesafb to skip its internal modedb and EDID-modedb
-+ and jump straight to the GTF part of the code (normally used only if
-+ everything else failed). This can be useful if you want to get as
-+ much as possible from your graphics board but your BIOS doesn't
-+ support modes with the refresh rates you require. Note that you may
-+ need to specify the maxhf, maxvf and maxclk parameters if they are not
-+ provided by the EDID block.
-+
-+Additionally, the following parameters may be provided. They all override the
-+EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
-+the correct values for maxhf, maxvf and maxclk for your hardware.
-+
-+maxhf:n Maximum horizontal frequency (in kHz).
-+maxvf:n Maximum vertical frequency (in Hz).
-+maxclk:n Maximum pixel clock (in MHz).
-+
-+Have fun!
-
- --
-+Original document for the vesafb driver by
- Gerd Knorr <kraxel@goldbach.in-berlin.de>
-
--Minor (mostly typo) changes
--by Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
-+Minor (mostly typo) changes by
-+Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
-+
-+Extended documentation for vm86, VBE 3.0 and vesafb-tng by
-+Michal Januszewski <spock@gentoo.org>
-+
---- linux-2.6.17.orig/arch/i386/boot/video.S
-+++ linux-2.6.17/arch/i386/boot/video.S
-@@ -165,10 +165,12 @@ basret: ret
- # parameters in the default 80x25 mode -- these are set directly,
- # because some very obscure BIOSes supply insane values.
- mode_params:
-+#ifdef CONFIG_FB_VESA_STD
- #ifdef CONFIG_VIDEO_SELECT
- cmpb $0, graphic_mode
- jnz mopar_gr
- #endif
-+#endif
- movb $0x03, %ah # Read cursor position
- xorb %bh, %bh
- int $0x10
-@@ -201,6 +203,7 @@ mopar2: movb %al, %fs:(PARAM_VIDEO_LINES
- ret
-
- #ifdef CONFIG_VIDEO_SELECT
-+#ifdef CONFIG_FB_VESA_STD
- # Fetching of VESA frame buffer parameters
- mopar_gr:
- leaw modelist+1024, %di
-@@ -283,6 +286,7 @@ dac_done:
- movw %es, %fs:(PARAM_VESAPM_SEG)
- movw %di, %fs:(PARAM_VESAPM_OFF)
- no_pm: ret
-+#endif
-
- # The video mode menu
- mode_menu:
-@@ -497,10 +501,12 @@ mode_set:
-
- cmpb $VIDEO_FIRST_V7>>8, %ah
- jz setv7
--
-+
-+#ifdef CONFIG_FB_VESA_STD
- cmpb $VIDEO_FIRST_VESA>>8, %ah
- jnc check_vesa
--
-+#endif
-+
- orb %ah, %ah
- jz setmenu
-
-@@ -572,6 +578,7 @@ setr1: lodsw
- movw -4(%si), %ax # Fetch mode ID
- jmp _m_s
-
-+#ifdef CONFIG_FB_VESA_STD
- check_vesa:
- leaw modelist+1024, %di
- subb $VIDEO_FIRST_VESA>>8, %bh
-@@ -605,6 +612,7 @@ check_vesa:
- ret
-
- _setbad: jmp setbad # Ugly...
-+#endif
-
- # Recalculate vertical display end registers -- this fixes various
- # inconsistencies of extended modes on many adapters. Called when
---- linux-2.6.17.orig/drivers/video/Kconfig
-+++ linux-2.6.17/drivers/video/Kconfig
-@@ -472,8 +472,22 @@ config FB_TGA
- cards. Say Y if you have one of those.
-
- config FB_VESA
-- bool "VESA VGA graphics support"
-- depends on (FB = y) && X86
-+ tristate "VESA VGA graphics support"
-+ depends on (FB = y) && (X86 || X86_64)
-+ help
-+ This is the frame buffer device driver for generic VESA 2.0
-+ compliant graphic cards. The older VESA 1.2 cards are not supported.
-+ You will get a boot time penguin logo at no additional cost. Please
-+ read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
-+
-+choice
-+ prompt "VESA driver type"
-+ depends on FB_VESA
-+ default FB_VESA_STD if X86_64
-+ default FB_VESA_TNG if X86
-+
-+config FB_VESA_STD
-+ bool "vesafb"
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
- select FB_CFB_IMAGEBLIT
-@@ -481,7 +495,43 @@ config FB_VESA
- This is the frame buffer device driver for generic VESA 2.0
- compliant graphic cards. The older VESA 1.2 cards are not supported.
- You will get a boot time penguin logo at no additional cost. Please
-- read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
-+ read <file:Documentation/fb/vesafb.txt>. Choose this driver if you
-+ are experiencing problems with vesafb-tng or if you own a 64-bit system.
-+
-+ Note that this driver cannot be compiled as a module.
-+
-+config FB_VESA_TNG
-+ bool "vesafb-tng"
-+ depends on !X86_64
-+ select FB_MODE_HELPERS
-+ select FB_CFB_FILLRECT
-+ select FB_CFB_COPYAREA
-+ select FB_CFB_IMAGEBLIT
-+ help
-+ This is the frame buffer device driver for generic VESA 2.0
-+ compliant graphic cards. It is capable of taking advantage of
-+ VBE 3.0 features. With this driver you will be able to adjust
-+ the refresh rate (VBE 3.0 compliant boards only) and change
-+ the graphic mode on-the-fly.
-+
-+ You will also get a boot time penguin logo at no additional cost. Please
-+ read <file:Documentation/fb/vesafb.txt>.
-+
-+endchoice
-+
-+config FB_VESA_DEFAULT_MODE
-+ string "VESA default mode"
-+ depends on FB_VESA_TNG
-+ default "640x480@60"
-+ help
-+ This option is used to determine the default mode vesafb is
-+ supposed to switch to in case no mode is provided as a kernel
-+ command line parameter.
-+
-+config VIDEO_SELECT
-+ bool
-+ depends on FB_VESA
-+ default y
-
- config VIDEO_SELECT
- bool
---- linux-2.6.17.orig/drivers/video/Makefile
-+++ linux-2.6.17/drivers/video/Makefile
-@@ -97,7 +97,11 @@ obj-$(CONFIG_FB_IMX) += imx
- obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
-
- # Platform or fallback drivers go here
--obj-$(CONFIG_FB_VESA) += vesafb.o
-+ifeq ($(CONFIG_FB_VESA_STD),y)
-+ obj-y += vesafb.o
-+else
-+ obj-$(CONFIG_FB_VESA) += vesafb-thread.o vesafb-tng.o
-+endif
- obj-$(CONFIG_FB_VGA16) += vga16fb.o vgastate.o
- obj-$(CONFIG_FB_OF) += offb.o
-
---- linux-2.6.17.orig/drivers/video/fbmem.c
-+++ linux-2.6.17/drivers/video/fbmem.c
-@@ -1438,6 +1438,7 @@ fbmem_init(void)
- printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
- fb_class = NULL;
- }
-+
- return 0;
- }
-
---- linux-2.6.17.orig/drivers/video/modedb.c
-+++ linux-2.6.17/drivers/video/modedb.c
-@@ -671,6 +671,7 @@ void fb_var_to_videomode(struct fb_video
- {
- u32 pixclock, hfreq, htotal, vtotal;
-
-+ mode->refresh = 0;
- mode->name = NULL;
- mode->xres = var->xres;
- mode->yres = var->yres;
---- /dev/null
-+++ linux-2.6.17/drivers/video/vesafb-thread.c
-@@ -0,0 +1,727 @@
-+/*
-+ * Framebuffer driver for VBE 2.0+ compliant graphic boards.
-+ * Kernel thread and vm86 routines.
-+ *
-+ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/slab.h>
-+#include <linux/workqueue.h>
-+#include <linux/completion.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/mm.h>
-+#include <linux/delay.h>
-+#include <linux/signal.h>
-+#include <linux/suspend.h>
-+#include <linux/unistd.h>
-+#include <video/vesa.h>
-+#include <video/edid.h>
-+#include <asm/mman.h>
-+#include <asm/page.h>
-+#include <asm/vm86.h>
-+#include <asm/thread_info.h>
-+#include <asm/uaccess.h>
-+#include <asm/mmu_context.h>
-+#include "edid.h"
-+
-+#ifdef MODULE
-+int errno;
-+#endif
-+
-+static DECLARE_COMPLETION(vesafb_th_completion);
-+static DECLARE_MUTEX(vesafb_task_list_sem);
-+static LIST_HEAD(vesafb_task_list);
-+static DECLARE_WAIT_QUEUE_HEAD(vesafb_wait);
-+
-+static struct vm86_struct vm86;
-+static int vesafb_pid = 0;
-+
-+_syscall3(int,ioperm,unsigned long, a, unsigned long, b, unsigned long, c);
-+_syscall1(int,vm86old,struct vm86_struct __user*, v86);
-+
-+#define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
-+#define VM86_PUSHW(x) \
-+do { \
-+ vm86.regs.esp -= 2; \
-+ *(u16*)(STACK_ADDR + vm86.regs.esp) = x; \
-+} while(0);
-+
-+/* Stack, the return code and buffers will be put into
-+ * one contiguous memory chunk:
-+ *
-+ * [ STACK | RET_CODE | BUFFER ]
-+ *
-+ * Some video BIOSes (sis6326) try to store data somewhere
-+ * in 0x7000-0x7fff, so we zeromap more memory to be safe.
-+ */
-+#define IVTBDA_SIZE PAGE_SIZE
-+#define RET_CODE_SIZE 0x0010
-+#define STACK_SIZE 0x0500
-+#define BUFFER_SIZE 0x10000
-+
-+/* The amount of memory that will be allocated should be a multiple
-+ * of PAGE_SIZE. */
-+#define __MEM_SIZE (RET_CODE_SIZE + STACK_SIZE + BUFFER_SIZE)
-+#define REAL_MEM_SIZE (((__MEM_SIZE / PAGE_SIZE) + 1) * PAGE_SIZE)
-+
-+#define IVTBDA_ADDR 0x00000
-+#define STACK_ADDR (IVTBDA_ADDR + IVTBDA_SIZE)
-+#define RET_CODE_ADDR (STACK_ADDR + STACK_SIZE)
-+#define BUF_ADDR (RET_CODE_ADDR + RET_CODE_SIZE)
-+
-+#define FLAG_D (1 << 10)
-+
-+/* Segment prefix opcodes */
-+enum {
-+ P_CS = 0x2e,
-+ P_SS = 0x36,
-+ P_DS = 0x3e,
-+ P_ES = 0x26,
-+ P_FS = 0x64,
-+ P_GS = 0x65
-+};
-+
-+/* Emulated vm86 ins instruction */
-+static void vm86_ins(int size)
-+{
-+ u32 edx, edi;
-+ edx = vm86.regs.edx & 0xffff;
-+ edi = (vm86.regs.edi & 0xffff) + (u32)(vm86.regs.es << 4);
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("std\n");
-+ else
-+ asm volatile ("cld\n");
-+
-+ switch (size) {
-+ case 4:
-+ asm volatile ("insl\n" : "=D" (edi) : "d" (edx), "0" (edi));
-+ break;
-+ case 2:
-+ asm volatile ("insw\n" : "=D" (edi) : "d" (edx), "0" (edi));
-+ break;
-+ case 1:
-+ asm volatile ("insb\n" : "=D" (edi) : "d" (edx), "0" (edi));
-+ break;
-+ }
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("cld\n");
-+
-+ edi -= (u32)(vm86.regs.es << 4);
-+
-+ vm86.regs.edi &= 0xffff0000;
-+ vm86.regs.edi |= edi & 0xffff;
-+}
-+
-+static void vm86_rep_ins(int size)
-+{
-+ u16 cx = vm86.regs.ecx;
-+ while (cx--)
-+ vm86_ins(size);
-+
-+ vm86.regs.ecx &= 0xffff0000;
-+}
-+
-+/* Emulated vm86 outs instruction */
-+static void vm86_outs(int size, int segment)
-+{
-+ u32 edx, esi, base;
-+
-+ edx = vm86.regs.edx & 0xffff;
-+ esi = vm86.regs.esi & 0xffff;
-+
-+ switch (segment) {
-+ case P_CS: base = vm86.regs.cs; break;
-+ case P_SS: base = vm86.regs.ss; break;
-+ case P_ES: base = vm86.regs.es; break;
-+ case P_FS: base = vm86.regs.fs; break;
-+ case P_GS: base = vm86.regs.gs; break;
-+ default: base = vm86.regs.ds; break;
-+ }
-+
-+ esi += base << 4;
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("std\n");
-+ else
-+ asm volatile ("cld\n");
-+
-+ switch (size) {
-+ case 4:
-+ asm volatile ("outsl\n" : "=S" (esi) : "d" (edx), "0" (esi));
-+ break;
-+ case 2:
-+ asm volatile ("outsw\n" : "=S" (esi) : "d" (edx), "0" (esi));
-+ break;
-+ case 1:
-+ asm volatile ("outsb\n" : "=S" (esi) : "d" (edx), "0" (esi));
-+ break;
-+ }
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("cld");
-+
-+ esi -= base << 4;
-+ vm86.regs.esi &= 0xffff0000;
-+ vm86.regs.esi |= (esi & 0xffff);
-+}
-+
-+static void vm86_rep_outs(int size, int segment)
-+{
-+ u16 cx = vm86.regs.ecx;
-+ while (cx--)
-+ vm86_outs(size, segment);
-+
-+ vm86.regs.ecx &= 0xffff0000;
-+}
-+
-+static int vm86_do_unknown(void)
-+{
-+ u8 data32 = 0, segment = P_DS, rep = 0;
-+ u8 *instr;
-+ int ret = 0, i = 0;
-+
-+ instr = (u8*)((vm86.regs.cs << 4) + vm86.regs.eip);
-+
-+ while (1) {
-+ switch(instr[i]) {
-+ case 0x66: /* operand size prefix */
-+ data32 = 1 - data32;
-+ i++;
-+ break;
-+ case 0xf2: /* repnz */
-+ case 0xf3: /* rep */
-+ rep = 1;
-+ i++;
-+ break;
-+ case P_CS: /* segment prefix */
-+ case P_SS:
-+ case P_DS:
-+ case P_ES:
-+ case P_FS:
-+ case P_GS:
-+ segment = instr[i];
-+ i++;
-+ break;
-+ case 0xf0: /* LOCK - ignored */
-+ case 0x67: /* address size prefix - ignored */
-+ i++;
-+ break;
-+ case 0x6c: /* insb */
-+ if (rep)
-+ vm86_rep_ins(1);
-+ else
-+ vm86_ins(1);
-+ i++;
-+ goto out;
-+ case 0x6d: /* insw / insd */
-+ if (rep) {
-+ if (data32)
-+ vm86_rep_ins(4);
-+ else
-+ vm86_rep_ins(2);
-+ } else {
-+ if (data32)
-+ vm86_ins(4);
-+ else
-+ vm86_ins(2);
-+ }
-+ i++;
-+ goto out;
-+ case 0x6e: /* outsb */
-+ if (rep)
-+ vm86_rep_outs(1, segment);
-+ else
-+ vm86_outs(1, segment);
-+ i++;
-+ goto out;
-+ case 0x6f: /* outsw / outsd */
-+ if (rep) {
-+ if (data32)
-+ vm86_rep_outs(4, segment);
-+ else
-+ vm86_rep_outs(2, segment);
-+ } else {
-+ if (data32)
-+ vm86_outs(4, segment);
-+ else
-+ vm86_outs(2, segment);
-+ }
-+ i++;
-+ goto out;
-+ case 0xe4: /* inb xx */
-+ asm volatile (
-+ "inb %w1, %b0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (instr[i+1]), "0" (vm86.regs.eax));
-+ i += 2;
-+ goto out;
-+ case 0xe5: /* inw xx / ind xx */
-+ if (data32) {
-+ asm volatile (
-+ "inl %w1, %0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (instr[i+1]),
-+ "0" (vm86.regs.eax));
-+ } else {
-+ asm volatile (
-+ "inw %w1, %w0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (instr[i+1]),
-+ "0" (vm86.regs.eax));
-+ }
-+ i += 2;
-+ goto out;
-+
-+ case 0xec: /* inb dx */
-+ asm volatile (
-+ "inb %w1, %b0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (vm86.regs.edx), "0" (vm86.regs.eax));
-+ i++;
-+ goto out;
-+ case 0xed: /* inw dx / ind dx */
-+ if (data32) {
-+ asm volatile (
-+ "inl %w1, %0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (vm86.regs.edx));
-+ } else {
-+ asm volatile (
-+ "inw %w1, %w0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (vm86.regs.edx));
-+ }
-+ i++;
-+ goto out;
-+ case 0xe6: /* outb xx */
-+ asm volatile (
-+ "outb %b0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax), "d" (instr[i+1]));
-+ i += 2;
-+ goto out;
-+ case 0xe7: /* outw xx / outd xx */
-+ if (data32) {
-+ asm volatile (
-+ "outl %0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (instr[i+1]));
-+ } else {
-+ asm volatile (
-+ "outw %w0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (instr[i+1]));
-+ }
-+ i += 2;
-+ goto out;
-+ case 0xee: /* outb dx */
-+ asm volatile (
-+ "outb %b0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax), "d" (vm86.regs.edx));
-+ i++;
-+ goto out;
-+ case 0xef: /* outw dx / outd dx */
-+ if (data32) {
-+ asm volatile (
-+ "outl %0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (vm86.regs.edx));
-+ } else {
-+ asm volatile (
-+ "outw %w0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (vm86.regs.edx));
-+ }
-+ i++;
-+ goto out;
-+ default:
-+ printk(KERN_ERR "vesafb: BUG, opcode 0x%x emulation "
-+ "not supported (EIP: 0x%lx)\n",
-+ instr[i], (u32)(vm86.regs.cs << 4) +
-+ vm86.regs.eip);
-+ ret = 1;
-+ goto out;
-+ }
-+ }
-+out: vm86.regs.eip += i;
-+ return ret;
-+}
-+
-+void vesafb_do_vm86(struct vm86_regs *regs)
-+{
-+ unsigned int ret;
-+ u8 *retcode = (void*)RET_CODE_ADDR;
-+
-+ memset(&vm86,0,sizeof(vm86));
-+ memcpy(&vm86.regs, regs, sizeof(struct vm86_regs));
-+
-+ /* The return code */
-+ retcode[0] = 0xcd; /* int opcode */
-+ retcode[1] = 0xff; /* int number (255) */
-+
-+ /* We use int 0xff to get back to protected mode */
-+ memset(&vm86.int_revectored, 0, sizeof(vm86.int_revectored));
-+ ((unsigned char *)&vm86.int_revectored)[0xff / 8] |= (1 << (0xff % 8));
-+
-+ /*
-+ * We want to call int 0x10, so we set:
-+ * CS = 0x42 = 0x10 * 4 + 2
-+ * IP = 0x40 = 0x10 * 4
-+ * and SS:ESP. It's up to the caller to set the rest of the registers.
-+ */
-+ vm86.regs.eflags = DEFAULT_VM86_FLAGS;
-+ vm86.regs.cs = *(unsigned short *)0x42;
-+ vm86.regs.eip = *(unsigned short *)0x40;
-+ vm86.regs.ss = (STACK_ADDR >> 4);
-+ vm86.regs.esp = ((STACK_ADDR & 0x0000f) + STACK_SIZE);
-+
-+ /* These will be fetched off the stack when we come to an iret in the
-+ * int's 0x10 code. */
-+ VM86_PUSHW(DEFAULT_VM86_FLAGS);
-+ VM86_PUSHW((RET_CODE_ADDR >> 4)); /* return code segment */
-+ VM86_PUSHW((RET_CODE_ADDR & 0x0000f)); /* return code offset */
-+
-+ while(1) {
-+ ret = vm86old(&vm86);
-+
-+ if (VM86_TYPE(ret) == VM86_INTx) {
-+ int vint = VM86_ARG(ret);
-+
-+ /* If exit from vm86 was caused by int 0xff, then
-+ * we're done.. */
-+ if (vint == 0xff)
-+ goto out;
-+
-+ /* .. otherwise, we have to call the int handler
-+ * manually */
-+ VM86_PUSHW(vm86.regs.eflags);
-+ VM86_PUSHW(vm86.regs.cs);
-+ VM86_PUSHW(vm86.regs.eip);
-+
-+ vm86.regs.cs = *(u16 *)((vint << 2) + 2);
-+ vm86.regs.eip = *(u16 *)(vint << 2);
-+ vm86.regs.eflags &= ~(VIF_MASK | TF_MASK);
-+ } else if (VM86_TYPE(ret) == VM86_UNKNOWN) {
-+ if (vm86_do_unknown())
-+ goto out;
-+ } else {
-+ printk(KERN_ERR "vesafb: BUG, returned from "
-+ "vm86 with %x (EIP: 0x%lx)\n",
-+ ret, (u32)(vm86.regs.cs << 4) +
-+ vm86.regs.eip);
-+ goto out;
-+ }
-+ }
-+
-+out: /* copy the registers' state back to the caller's struct */
-+ memcpy(regs, &vm86.regs, sizeof(struct vm86_regs));
-+}
-+
-+static int vesafb_remap_pfn_range(unsigned long start, unsigned long end,
-+ unsigned long pgoff, unsigned long prot,
-+ int type)
-+{
-+ struct vm_area_struct *vma;
-+ struct mm_struct *mm = current->mm;
-+ int ret = 0;
-+
-+ vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
-+ if (!vma)
-+ return -ENOMEM;
-+ memset(vma, 0, sizeof(*vma));
-+ down_write(&mm->mmap_sem);
-+ vma->vm_mm = mm;
-+ vma->vm_start = start;
-+ vma->vm_end = end;
-+ vma->vm_flags = VM_READ | VM_WRITE | VM_EXEC;
-+ vma->vm_flags |= mm->def_flags;
-+ vma->vm_page_prot.pgprot = prot;
-+ vma->vm_pgoff = pgoff;
-+
-+ if ((ret = insert_vm_struct(mm, vma))) {
-+ up_write(&mm->mmap_sem);
-+ kmem_cache_free(vm_area_cachep, vma);
-+ return ret;
-+ }
-+
-+ if (type) {
-+ ret = zeromap_page_range(vma,
-+ vma->vm_start,
-+ vma->vm_end - vma->vm_start,
-+ vma->vm_page_prot);
-+ } else {
-+ vma->vm_flags |= VM_SHARED;
-+ ret = remap_pfn_range(vma,
-+ vma->vm_start,
-+ vma->vm_pgoff,
-+ vma->vm_end - vma->vm_start,
-+ vma->vm_page_prot);
-+ }
-+ up_write(&mm->mmap_sem);
-+ return ret;
-+}
-+
-+static inline int vesafb_init_mem(void)
-+{
-+ int ret = 0;
-+
-+ /* The memory chunks we're remapping here should be multiples
-+ * of PAGE_SIZE. */
-+ ret += vesafb_remap_pfn_range(0x00000, IVTBDA_SIZE, 0,
-+ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
-+ ret += vesafb_remap_pfn_range(IVTBDA_SIZE, REAL_MEM_SIZE, 0,
-+ PROT_READ | PROT_EXEC | PROT_WRITE, 1);
-+ ret += vesafb_remap_pfn_range(0x9f000, 0x100000,
-+ 0x9f000 >> PAGE_SHIFT,
-+ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
-+ if (ret)
-+ printk(KERN_ERR "vesafb thread: memory remapping failed\n");
-+
-+ return ret;
-+}
-+
-+#define vesafb_get_string(str) \
-+{ \
-+ /* The address is in the form ssssoooo, where oooo = offset, \
-+ * ssss = segment */ \
-+ addr = ((p_vbe(tsk->buf)->str & 0xffff0000) >> 12) + \
-+ (p_vbe(tsk->buf)->str & 0x0000ffff); \
-+ \
-+ /* The data is in ROM which is shared between processes, so we \
-+ * just translate the real mode address into one visible from \
-+ * kernel space */ \
-+ if (addr >= 0xa0000) { \
-+ p_vbe(tsk->buf)->str = (u32) __va(addr); \
-+ \
-+ /* The data is in the buffer, we just have to convert the \
-+ * address so that it points into the buffer user provided. */ \
-+ } else if (addr > BUF_ADDR && addr < BUF_ADDR + \
-+ sizeof(struct vesafb_vbe_ib)) { \
-+ addr -= BUF_ADDR; \
-+ p_vbe(tsk->buf)->str = (u32) (tsk->buf + addr); \
-+ \
-+ /* This should never happen: someone was insane enough to put \
-+ * the data somewhere in RAM.. */ \
-+ } else { \
-+ p_vbe(tsk->buf)->str = (u32) ""; \
-+ } \
-+}
-+
-+void vesafb_handle_getvbeib(struct vesafb_task *tsk)
-+{
-+ int addr, res;
-+
-+ tsk->regs.es = (BUF_ADDR >> 4);
-+ tsk->regs.edi = (BUF_ADDR & 0x000f);
-+ strncpy(p_vbe(BUF_ADDR)->vbe_signature, "VBE2", 4);
-+
-+ vesafb_do_vm86(&tsk->regs);
-+ memcpy(tsk->buf, (void*)(BUF_ADDR), sizeof(struct vesafb_vbe_ib));
-+
-+ /* The OEM fields were not defined prior to VBE 2.0 */
-+ if (p_vbe(tsk->buf)->vbe_version >= 0x200) {
-+ vesafb_get_string(oem_string_ptr);
-+ vesafb_get_string(oem_vendor_name_ptr);
-+ vesafb_get_string(oem_product_name_ptr);
-+ vesafb_get_string(oem_product_rev_ptr);
-+ }
-+
-+ /* This is basically the same as vesafb_get_string() */
-+ addr = ((p_vbe(tsk->buf)->mode_list_ptr & 0xffff0000) >> 12) +
-+ (p_vbe(tsk->buf)->mode_list_ptr & 0x0000ffff);
-+
-+ if (addr >= 0xa0000) {
-+ p_vbe(tsk->buf)->mode_list_ptr = (u32) __va(addr);
-+ } else if (addr > BUF_ADDR && addr < BUF_ADDR +
-+ sizeof(struct vesafb_vbe_ib)) {
-+ addr -= BUF_ADDR;
-+ p_vbe(tsk->buf)->mode_list_ptr = (u32) (tsk->buf + addr);
-+ } else {
-+ res = 0;
-+ printk(KERN_WARNING "vesafb: warning, copying modelist "
-+ "from somewhere in RAM!\n");
-+ while (*(u16*)(addr+res) != 0xffff &&
-+ res < (sizeof(p_vbe(tsk->buf)->reserved) - 2)) {
-+ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) =
-+ *(u16*)(addr+res);
-+ res += 2;
-+ }
-+ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) = 0xffff;
-+ }
-+}
-+
-+int vesafb_handle_tasks(void)
-+{
-+ struct vesafb_task *tsk;
-+ struct list_head *curr, *next;
-+ int ret = 0;
-+
-+ down(&vesafb_task_list_sem);
-+ list_for_each_safe(curr, next, &vesafb_task_list) {
-+ tsk = list_entry(curr, struct vesafb_task, node);
-+
-+ if (tsk->flags & TF_EXIT) {
-+ ret = 1;
-+ goto task_done;
-+ }
-+ if (tsk->flags & TF_GETVBEIB) {
-+ vesafb_handle_getvbeib(tsk);
-+ goto task_done;
-+ }
-+ /* Do we need to store a pointer to the buffer in ES:EDI? */
-+ if (tsk->flags & TF_BUF_DI) {
-+ tsk->regs.es = (BUF_ADDR >> 4);
-+ tsk->regs.edi = (BUF_ADDR & 0x000f);
-+ }
-+ /* Sometimes the pointer has to be in ES:EBX. */
-+ if (tsk->flags & TF_BUF_BX) {
-+ tsk->regs.es = (BUF_ADDR >> 4);
-+ tsk->regs.ebx = (BUF_ADDR & 0x000f);
-+ }
-+ if (tsk->flags & (TF_BUF_DI | TF_BUF_BX))
-+ memcpy((void*)BUF_ADDR, tsk->buf, tsk->buf_len);
-+
-+ vesafb_do_vm86(&tsk->regs);
-+
-+ if (tsk->flags & TF_RETURN_BUF)
-+ memcpy(tsk->buf, (void*)BUF_ADDR, tsk->buf_len);
-+
-+task_done: list_del(curr);
-+ complete(&tsk->done);
-+ }
-+
-+ /* If we're going to kill this thread, don't allow any elements
-+ * to be added to the task list. */
-+ if (!ret)
-+ up(&vesafb_task_list_sem);
-+
-+ return ret;
-+}
-+
-+/*
-+ * This 'hybrid' thread serves as a backend for vesafb-tng, handling all vm86
-+ * calls. It is started as a kernel thread. It then creates its own mm struct,
-+ * thus separating itself from any userspace processes. At this moment, it
-+ * stops being a kernel thread (kernel threads have mm = NULL) and becomes
-+ * a 'hybrid' thread -- one that has full access to kernel space, yet runs
-+ * with its own address space.
-+ *
-+ * This is necessary because in order to make vm86 calls some parts of the
-+ * first 1MB of RAM have to be setup to mimic the real mode. These are:
-+ * - interrupt vector table [0x00000-0x003ff]
-+ * - BIOS data area [0x00400-0x004ff]
-+ * - Extended BIOS data area [0x9fc00-0x9ffff]
-+ * - the video RAM [0xa0000-0xbffff]
-+ * - video BIOS [0xc0000-0xcffff]
-+ * - motherboard BIOS [0xf0000-0xfffff]
-+ */
-+int vesafb_thread(void *unused)
-+{
-+ int err = 0;
-+
-+ set_fs(KERNEL_DS);
-+ daemonize("vesafb");
-+
-+ if (set_new_mm()) {
-+ err = -ENOMEM;
-+ goto thr_end;
-+ }
-+ if (vesafb_init_mem()) {
-+ err = -ENOMEM;
-+ goto thr_end;
-+ }
-+
-+ DPRINTK("started vesafb thread\n");
-+
-+ /* Having an IO bitmap makes things faster as we avoid GPFs
-+ * when running vm86 code. We can live if it fails, though,
-+ * so don't bother checking for errors. */
-+ ioperm(0,1024,1);
-+ set_user_nice(current, -10);
-+
-+ complete(&vesafb_th_completion);
-+
-+ while (1) {
-+ if (vesafb_handle_tasks())
-+ break;
-+ wait_event_interruptible(vesafb_wait,
-+ !list_empty(&vesafb_task_list));
-+ try_to_freeze();
-+ }
-+
-+out: DPRINTK("exiting the vesafb thread\n");
-+ vesafb_pid = -1;
-+
-+ /* Now that all callers know this thread is no longer running
-+ * (pid < 0), allow them to continue. */
-+ up(&vesafb_task_list_sem);
-+ return err;
-+thr_end:
-+ down(&vesafb_task_list_sem);
-+ complete(&vesafb_th_completion);
-+ goto out;
-+}
-+
-+int vesafb_queue_task(struct vesafb_task *tsk)
-+{
-+ down(&vesafb_task_list_sem);
-+ if (vesafb_pid < 0)
-+ return -1;
-+ list_add_tail(&tsk->node, &vesafb_task_list);
-+ up(&vesafb_task_list_sem);
-+ wake_up(&vesafb_wait);
-+ return 0;
-+}
-+
-+int vesafb_wait_for_thread(void)
-+{
-+ /* PID 0 means that the thread is still initializing. */
-+ if (vesafb_pid < 0)
-+ return -1;
-+ wait_for_completion(&vesafb_th_completion);
-+ return 0;
-+}
-+
-+int __init vesafb_init_thread(void)
-+{
-+ vesafb_pid = kernel_thread(vesafb_thread,NULL,0);
-+ return 0;
-+}
-+
-+#ifdef MODULE
-+void __exit vesafb_kill_thread(void)
-+{
-+ struct vesafb_task *tsk;
-+ if (vesafb_pid <= 0)
-+ return;
-+
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ return;
-+ tsk->flags |= TF_EXIT;
-+ vesafb_queue_task(tsk);
-+ vesafb_wait_for_task(tsk);
-+ kfree(tsk);
-+ return;
-+}
-+module_exit(vesafb_kill_thread);
-+#endif
-+module_init(vesafb_init_thread);
-+
-+EXPORT_SYMBOL_GPL(vesafb_queue_task);
-+EXPORT_SYMBOL_GPL(vesafb_wait_for_thread);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Michal Januszewski");
-+
---- /dev/null
-+++ linux-2.6.17/drivers/video/vesafb-tng.c
-@@ -0,0 +1,1598 @@
-+/*
-+ * Framebuffer driver for VBE 2.0+ compliant graphic boards
-+ *
-+ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
-+ * Based upon vesafb code by Gerd Knorr <kraxel@goldbach.in-berlin.de>
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/tty.h>
-+#include <linux/delay.h>
-+#include <linux/fb.h>
-+#include <linux/ioport.h>
-+#include <linux/init.h>
-+#include <linux/proc_fs.h>
-+#include <linux/completion.h>
-+#include <linux/platform_device.h>
-+#include <video/edid.h>
-+#include <video/vesa.h>
-+#include <video/vga.h>
-+#include <asm/io.h>
-+#include <asm/mtrr.h>
-+#include <asm/page.h>
-+#include <asm/pgtable.h>
-+#include "edid.h"
-+
-+#define dac_reg (0x3c8)
-+#define dac_val (0x3c9)
-+
-+#define VESAFB_NEED_EXACT_RES 1
-+#define VESAFB_NEED_EXACT_DEPTH 2
-+
-+/* --------------------------------------------------------------------- */
-+
-+static struct fb_var_screeninfo vesafb_defined __initdata = {
-+ .activate = FB_ACTIVATE_NOW,
-+ .height = 0,
-+ .width = 0,
-+ .right_margin = 32,
-+ .upper_margin = 16,
-+ .lower_margin = 4,
-+ .vsync_len = 4,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+};
-+
-+static struct fb_fix_screeninfo vesafb_fix __initdata = {
-+ .id = "VESA VGA",
-+ .type = FB_TYPE_PACKED_PIXELS,
-+ .accel = FB_ACCEL_NONE,
-+};
-+
-+static int mtrr = 0; /* disable mtrr by default */
-+static int blank = 1; /* enable blanking by default */
-+static int ypan = 0; /* 0 - nothing, 1 - ypan, 2 - ywrap */
-+static int pmi_setpal = 1; /* pmi for palette changes */
-+static u16 *pmi_base = NULL; /* protected mode interface location */
-+static void (*pmi_start)(void) = NULL;
-+static void (*pmi_pal)(void) = NULL;
-+static struct vesafb_vbe_ib vbe_ib;
-+static struct vesafb_mode_ib *vbe_modes;
-+static int vbe_modes_cnt = 0;
-+static struct fb_info *vesafb_info = NULL;
-+static int nocrtc = 0; /* ignore CRTC settings */
-+static int noedid __initdata = 0; /* don't try DDC transfers */
-+static int vram_remap __initdata = 0; /* set amount of memory to be used */
-+static int vram_total __initdata = 0; /* set total amount of memory */
-+static u16 maxclk __initdata = 0; /* maximum pixel clock */
-+static u16 maxvf __initdata = 0; /* maximum vertical frequency */
-+static u16 maxhf __initdata = 0; /* maximum horizontal frequency */
-+static int gtf __initdata = 0; /* forces use of the GTF */
-+static char *mode_option __initdata = NULL;
-+static u16 vbemode __initdata = 0;
-+
-+/* --------------------------------------------------------------------- */
-+
-+static int vesafb_find_vbe_mode(int xres, int yres, int depth,
-+ unsigned char flags)
-+{
-+ int i, match = -1, h = 0, d = 0x7fffffff;
-+
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ h = abs(vbe_modes[i].x_res - xres) +
-+ abs(vbe_modes[i].y_res - yres) +
-+ abs(depth - vbe_modes[i].depth);
-+ if (h == 0)
-+ return i;
-+ if (h < d || (h == d && vbe_modes[i].depth > depth)) {
-+ d = h;
-+ match = i;
-+ }
-+ }
-+ i = 1;
-+
-+ if (flags & VESAFB_NEED_EXACT_DEPTH && vbe_modes[match].depth != depth)
-+ i = 0;
-+ if (flags & VESAFB_NEED_EXACT_RES && d > 24)
-+ i = 0;
-+ if (i != 0)
-+ return match;
-+ else
-+ return -1;
-+}
-+
-+static int vesafb_pan_display(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ int offset;
-+
-+ offset = (var->yoffset * info->fix.line_length + var->xoffset) / 4;
-+
-+ /* It turns out it's not the best idea to do panning via vm86,
-+ * so we only allow it if we have a PMI. */
-+ if (pmi_start) {
-+ __asm__ __volatile__(
-+ "call *(%%edi)"
-+ : /* no return value */
-+ : "a" (0x4f07), /* EAX */
-+ "b" (0), /* EBX */
-+ "c" (offset), /* ECX */
-+ "d" (offset >> 16), /* EDX */
-+ "D" (&pmi_start)); /* EDI */
-+ }
-+ return 0;
-+}
-+
-+static int vesafb_blank(int blank, struct fb_info *info)
-+{
-+ struct vesafb_task *tsk;
-+ int err = 1;
-+
-+ if (vbe_ib.capabilities & VBE_CAP_VGACOMPAT) {
-+ int loop = 10000;
-+ u8 seq = 0, crtc17 = 0;
-+
-+ if (blank == FB_BLANK_POWERDOWN) {
-+ seq = 0x20;
-+ crtc17 = 0x00;
-+ err = 0;
-+ } else {
-+ seq = 0x00;
-+ crtc17 = 0x80;
-+ err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
-+ }
-+
-+ vga_wseq(NULL, 0x00, 0x01);
-+ seq |= vga_rseq(NULL, 0x01) & ~0x20;
-+ vga_wseq(NULL, 0x00, seq);
-+
-+ crtc17 |= vga_rcrt(NULL, 0x17) & ~0x80;
-+ while (loop--);
-+ vga_wcrt(NULL, 0x17, crtc17);
-+ vga_wseq(NULL, 0x00, 0x03);
-+ } else {
-+ vesafb_create_task (tsk);
-+ if (!tsk)
-+ return -ENOMEM;
-+ tsk->regs.eax = 0x4f10;
-+ switch (blank) {
-+ case FB_BLANK_UNBLANK:
-+ tsk->regs.ebx = 0x0001;
-+ break;
-+ case FB_BLANK_NORMAL:
-+ tsk->regs.ebx = 0x0101; /* standby */
-+ break;
-+ case FB_BLANK_POWERDOWN:
-+ tsk->regs.ebx = 0x0401; /* powerdown */
-+ break;
-+ default:
-+ goto out;
-+ }
-+ tsk->flags = TF_CALL;
-+ if (!vesafb_queue_task (tsk))
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) == 0x004f)
-+ err = 0;
-+out: kfree(tsk);
-+ }
-+ return err;
-+}
-+
-+static int vesafb_setpalette(struct vesafb_pal_entry *entries, int count,
-+ int start, struct fb_info *info)
-+{
-+ struct vesafb_task *tsk;
-+ int i = ((struct vesafb_par*)info->par)->mode_idx;
-+ int ret = 0;
-+
-+ /* We support palette modifications for 8 bpp modes only, so
-+ * there can never be more than 256 entries. */
-+ if (start + count > 256)
-+ return -EINVAL;
-+
-+ /* Use VGA registers if mode is VGA-compatible. */
-+ if (i >= 0 && i < vbe_modes_cnt &&
-+ vbe_modes[i].mode_attr & VBE_MODE_VGACOMPAT) {
-+ for (i = 0; i < count; i++) {
-+ outb_p(start + i, dac_reg);
-+ outb_p(entries[i].red, dac_val);
-+ outb_p(entries[i].green, dac_val);
-+ outb_p(entries[i].blue, dac_val);
-+ }
-+ } else if (pmi_setpal) {
-+ __asm__ __volatile__(
-+ "call *(%%esi)"
-+ : /* no return value */
-+ : "a" (0x4f09), /* EAX */
-+ "b" (0), /* EBX */
-+ "c" (count), /* ECX */
-+ "d" (start), /* EDX */
-+ "D" (entries), /* EDI */
-+ "S" (&pmi_pal)); /* ESI */
-+ } else {
-+ vesafb_create_task (tsk);
-+ if (!tsk)
-+ return -ENOMEM;
-+ tsk->regs.eax = 0x4f09;
-+ tsk->regs.ebx = 0x0;
-+ tsk->regs.ecx = count;
-+ tsk->regs.edx = start;
-+ tsk->buf = entries;
-+ tsk->buf_len = sizeof(struct vesafb_pal_entry) * count;
-+ tsk->flags = TF_CALL | TF_BUF_DI;
-+
-+ if (!vesafb_queue_task (tsk))
-+ vesafb_wait_for_task(tsk);
-+ if ((tsk->regs.eax & 0xffff) != 0x004f)
-+ ret = 1;
-+ kfree(tsk);
-+ }
-+ return ret;
-+}
-+
-+static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
-+ unsigned blue, unsigned transp,
-+ struct fb_info *info)
-+{
-+ struct vesafb_pal_entry entry;
-+ int shift = 16 - info->var.green.length;
-+ int ret = 0;
-+
-+ if (regno >= info->cmap.len)
-+ return -EINVAL;
-+
-+ if (info->var.bits_per_pixel == 8) {
-+ entry.red = red >> shift;
-+ entry.green = green >> shift;
-+ entry.blue = blue >> shift;
-+ entry.pad = 0;
-+
-+ ret = vesafb_setpalette(&entry, 1, regno, info);
-+ } else if (regno < 16) {
-+ switch (info->var.bits_per_pixel) {
-+ case 16:
-+ if (info->var.red.offset == 10) {
-+ /* 1:5:5:5 */
-+ ((u32*) (info->pseudo_palette))[regno] =
-+ ((red & 0xf800) >> 1) |
-+ ((green & 0xf800) >> 6) |
-+ ((blue & 0xf800) >> 11);
-+ } else {
-+ /* 0:5:6:5 */
-+ ((u32*) (info->pseudo_palette))[regno] =
-+ ((red & 0xf800) ) |
-+ ((green & 0xfc00) >> 5) |
-+ ((blue & 0xf800) >> 11);
-+ }
-+ break;
-+
-+ case 24:
-+ case 32:
-+ red >>= 8;
-+ green >>= 8;
-+ blue >>= 8;
-+ ((u32 *)(info->pseudo_palette))[regno] =
-+ (red << info->var.red.offset) |
-+ (green << info->var.green.offset) |
-+ (blue << info->var.blue.offset);
-+ break;
-+ }
-+ }
-+ return ret;
-+}
-+
-+static int vesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
-+{
-+ struct vesafb_pal_entry *entries;
-+ int shift = 16 - info->var.green.length;
-+ int i, ret = 0;
-+
-+ if (info->var.bits_per_pixel == 8) {
-+ if (cmap->start + cmap->len > info->cmap.start +
-+ info->cmap.len || cmap->start < info->cmap.start)
-+ return -EINVAL;
-+
-+ entries = vmalloc(sizeof(struct vesafb_pal_entry) * cmap->len);
-+ if (!entries)
-+ return -ENOMEM;
-+ for (i = 0; i < cmap->len; i++) {
-+ entries[i].red = cmap->red[i] >> shift;
-+ entries[i].green = cmap->green[i] >> shift;
-+ entries[i].blue = cmap->blue[i] >> shift;
-+ entries[i].pad = 0;
-+ }
-+ ret = vesafb_setpalette(entries, cmap->len, cmap->start, info);
-+ vfree(entries);
-+ } else {
-+ /* For modes with bpp > 8, we only set the pseudo palette in
-+ * the fb_info struct. We rely on vesafb_setcolreg to do all
-+ * sanity checking. */
-+ for (i = 0; i < cmap->len; i++) {
-+ ret += vesafb_setcolreg(cmap->start + i, cmap->red[i],
-+ cmap->green[i], cmap->blue[i],
-+ 0, info);
-+ }
-+ }
-+ return ret;
-+}
-+
-+static int vesafb_set_par(struct fb_info *info)
-+{
-+ struct vesafb_par *par = (struct vesafb_par *) info->par;
-+ struct vesafb_task *tsk;
-+ struct vesafb_crtc_ib *crtc = NULL;
-+ struct vesafb_mode_ib *mode = NULL;
-+ int i, err = 0, depth = info->var.bits_per_pixel;
-+
-+ if (depth > 8 && depth != 32)
-+ depth = info->var.red.length + info->var.green.length +
-+ info->var.blue.length;
-+
-+ i = vesafb_find_vbe_mode(info->var.xres, info->var.yres, depth,
-+ VESAFB_NEED_EXACT_RES |
-+ VESAFB_NEED_EXACT_DEPTH);
-+ if (i >= 0)
-+ mode = &vbe_modes[i];
-+ else
-+ return -EINVAL;
-+
-+ vesafb_create_task (tsk);
-+ if (!tsk)
-+ return -ENOMEM;
-+ tsk->regs.eax = 0x4f02;
-+ tsk->regs.ebx = mode->mode_id | 0x4000; /* use LFB */
-+ tsk->flags = TF_CALL;
-+
-+ if (vbe_ib.vbe_version >= 0x0300 && !nocrtc &&
-+ info->var.pixclock != 0) {
-+ tsk->regs.ebx |= 0x0800; /* use CRTC data */
-+ tsk->flags |= TF_BUF_DI;
-+ crtc = kmalloc(sizeof(struct vesafb_crtc_ib), GFP_KERNEL);
-+ if (!crtc) {
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+ crtc->horiz_start = info->var.xres + info->var.right_margin;
-+ crtc->horiz_end = crtc->horiz_start + info->var.hsync_len;
-+ crtc->horiz_total = crtc->horiz_end + info->var.left_margin;
-+
-+ crtc->vert_start = info->var.yres + info->var.lower_margin;
-+ crtc->vert_end = crtc->vert_start + info->var.vsync_len;
-+ crtc->vert_total = crtc->vert_end + info->var.upper_margin;
-+
-+ crtc->pixel_clock = PICOS2KHZ(info->var.pixclock) * 1000;
-+ crtc->refresh_rate = (u16)(100 * (crtc->pixel_clock /
-+ (crtc->vert_total * crtc->horiz_total)));
-+ crtc->flags = 0;
-+
-+ if (info->var.vmode & FB_VMODE_DOUBLE)
-+ crtc->flags |= 0x1;
-+ if (info->var.vmode & FB_VMODE_INTERLACED)
-+ crtc->flags |= 0x2;
-+ if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
-+ crtc->flags |= 0x4;
-+ if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
-+ crtc->flags |= 0x8;
-+ memcpy(&par->crtc, crtc, sizeof(struct vesafb_crtc_ib));
-+ } else
-+ memset(&par->crtc, 0, sizeof(struct vesafb_crtc_ib));
-+
-+ tsk->buf = (void*)crtc;
-+ tsk->buf_len = sizeof(struct vesafb_crtc_ib);
-+
-+ if (vesafb_queue_task (tsk)) {
-+ err = -EINVAL;
-+ goto out;
-+ }
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_ERR "vesafb: mode switch failed (eax: 0x%lx)\n",
-+ tsk->regs.eax);
-+ err = -EINVAL;
-+ goto out;
-+ }
-+ par->mode_idx = i;
-+
-+ /* For 8bpp modes, always try to set the DAC to 8 bits. */
-+ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC &&
-+ mode->bits_per_pixel <= 8) {
-+ vesafb_reset_task(tsk);
-+ tsk->flags = TF_CALL;
-+ tsk->regs.eax = 0x4f08;
-+ tsk->regs.ebx = 0x0800;
-+
-+ if (!vesafb_queue_task (tsk))
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f ||
-+ ((tsk->regs.ebx & 0xff00) >> 8) != 8) {
-+ /* We've failed to set the DAC palette format -
-+ * time to correct var. */
-+ info->var.red.length = 6;
-+ info->var.green.length = 6;
-+ info->var.blue.length = 6;
-+ }
-+ }
-+
-+ info->fix.visual = (info->var.bits_per_pixel == 8) ?
-+ FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
-+ info->fix.line_length = mode->bytes_per_scan_line;
-+
-+ DPRINTK("set new mode %dx%d-%d (0x%x)\n",
-+ info->var.xres, info->var.yres, info->var.bits_per_pixel,
-+ mode->mode_id);
-+
-+out: if (crtc != NULL)
-+ kfree(crtc);
-+ kfree(tsk);
-+
-+ return err;
-+}
-+
-+static void vesafb_setup_var(struct fb_var_screeninfo *var, struct fb_info *info,
-+ struct vesafb_mode_ib *mode)
-+{
-+ var->xres = mode->x_res;
-+ var->yres = mode->y_res;
-+ var->xres_virtual = mode->x_res;
-+ var->yres_virtual = (ypan) ?
-+ info->fix.smem_len / mode->bytes_per_scan_line :
-+ mode->y_res;
-+ var->xoffset = 0;
-+ var->yoffset = 0;
-+ var->bits_per_pixel = mode->bits_per_pixel;
-+
-+ if (var->bits_per_pixel == 15)
-+ var->bits_per_pixel = 16;
-+
-+ if (var->bits_per_pixel > 8) {
-+ var->red.offset = mode->red_off;
-+ var->red.length = mode->red_len;
-+ var->green.offset = mode->green_off;
-+ var->green.length = mode->green_len;
-+ var->blue.offset = mode->blue_off;
-+ var->blue.length = mode->blue_len;
-+ var->transp.offset = mode->rsvd_off;
-+ var->transp.length = mode->rsvd_len;
-+
-+ DPRINTK("directcolor: size=%d:%d:%d:%d, shift=%d:%d:%d:%d\n",
-+ mode->rsvd_len,
-+ mode->red_len,
-+ mode->green_len,
-+ mode->blue_len,
-+ mode->rsvd_off,
-+ mode->red_off,
-+ mode->green_off,
-+ mode->blue_off);
-+ } else {
-+ var->red.offset = 0;
-+ var->green.offset = 0;
-+ var->blue.offset = 0;
-+ var->transp.offset = 0;
-+
-+ /* We're assuming that we can switch the DAC to 8 bits. If
-+ * this proves to be incorrect, we'll update the fields
-+ * later in set_par(). */
-+ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC) {
-+ var->red.length = 8;
-+ var->green.length = 8;
-+ var->blue.length = 8;
-+ var->transp.length = 0;
-+ } else {
-+ var->red.length = 6;
-+ var->green.length = 6;
-+ var->blue.length = 6;
-+ var->transp.length = 0;
-+ }
-+ }
-+}
-+
-+static void inline vesafb_check_limits(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ struct fb_videomode *mode;
-+
-+ if (!var->pixclock)
-+ return;
-+ if (vbe_ib.vbe_version < 0x0300) {
-+ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, var, info);
-+ return;
-+ }
-+ if (!fb_validate_mode(var, info))
-+ return;
-+ mode = fb_find_best_mode(var, &info->modelist);
-+ if (mode) {
-+ DPRINTK("find_best_mode: %d %d @ %d (vmode: %d)\n",
-+ mode->xres, mode->yres, mode->refresh, mode->vmode);
-+ if (mode->xres == var->xres && mode->yres == var->yres &&
-+ !(mode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))) {
-+ fb_videomode_to_var(var, mode);
-+ return;
-+ }
-+ }
-+ if (info->monspecs.gtf && !fb_get_mode(FB_MAXTIMINGS, 0, var, info))
-+ return;
-+ /* Use default refresh rate */
-+ var->pixclock = 0;
-+}
-+
-+static int vesafb_check_var(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ int match = -1;
-+ int depth = var->red.length + var->green.length + var->blue.length;
-+
-+ /* Various apps will use bits_per_pixel to set the color depth,
-+ * which is theoretically incorrect, but which we'll try to handle
-+ * here. */
-+ if (depth == 0 || abs(depth - var->bits_per_pixel) >= 8)
-+ depth = var->bits_per_pixel;
-+ match = vesafb_find_vbe_mode(var->xres, var->yres, depth,
-+ VESAFB_NEED_EXACT_RES);
-+
-+ if (match == -1) {
-+ DPRINTK("vesafb: mode %dx%d-%d not found\n", var->xres,
-+ var->yres, depth);
-+ return -EINVAL;
-+ }
-+
-+ vesafb_setup_var(var, info, &vbe_modes[match]);
-+ DPRINTK("found mode 0x%x (%dx%d-%dbpp)\n",
-+ vbe_modes[match].mode_id, vbe_modes[match].x_res,
-+ vbe_modes[match].y_res, vbe_modes[match].depth);
-+
-+ /* Check whether we have remapped enough memory for this mode. */
-+ if (var->yres * vbe_modes[match].bytes_per_scan_line >
-+ info->fix.smem_len) {
-+ return -EINVAL;
-+ }
-+
-+ if ((var->vmode & FB_VMODE_DOUBLE) &&
-+ !(vbe_modes[match].mode_attr & 0x100))
-+ var->vmode &= ~FB_VMODE_DOUBLE;
-+ if ((var->vmode & FB_VMODE_INTERLACED) &&
-+ !(vbe_modes[match].mode_attr & 0x200))
-+ var->vmode &= ~FB_VMODE_INTERLACED;
-+ vesafb_check_limits(var, info);
-+ return 0;
-+}
-+
-+static int vesafb_open(struct fb_info *info, int user)
-+{
-+ struct vesafb_task *tsk = NULL;
-+ struct vesafb_par *par = info->par;
-+ int cnt = atomic_read(&par->ref_count);
-+
-+ if (!cnt) {
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ goto out;
-+
-+ /* Get the VBE state buffer size. We want all available
-+ * hardware state data (CL = 0x0f). */
-+ tsk->regs.eax = 0x4f04;
-+ tsk->regs.ecx = 0x000f;
-+ tsk->regs.edx = 0x0000;
-+ tsk->flags = TF_CALL;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto out;
-+
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_WARNING "vesafb: VBE state buffer size "
-+ "cannot be determined (eax: 0x%lx)\n",
-+ tsk->regs.eax);
-+ goto out;
-+ }
-+
-+ par->vbe_state_size = 64 * (tsk->regs.ebx & 0xffff);
-+ par->vbe_state = kzalloc(par->vbe_state_size, GFP_KERNEL);
-+ if (!par->vbe_state)
-+ goto out;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f04;
-+ tsk->regs.ecx = 0x000f;
-+ tsk->regs.edx = 0x0001;
-+ tsk->flags = TF_CALL | TF_BUF_BX | TF_RETURN_BUF;
-+ tsk->buf = (void*)(par->vbe_state);
-+ tsk->buf_len = par->vbe_state_size;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto getstate_failed;
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_WARNING "vesafb: VBE get state call "
-+ "failed (eax: 0x%lx)\n", tsk->regs.eax);
-+ goto getstate_failed;
-+ }
-+ }
-+out:
-+ atomic_inc(&par->ref_count);
-+ if (tsk)
-+ kfree(tsk);
-+ return 0;
-+
-+getstate_failed:
-+ kfree(par->vbe_state);
-+ par->vbe_state = NULL;
-+ par->vbe_state_size = 0;
-+ goto out;
-+}
-+
-+static int vesafb_release(struct fb_info *info, int user)
-+{
-+ struct vesafb_task *tsk = NULL;
-+ struct vesafb_par *par = info->par;
-+ int cnt = atomic_read(&par->ref_count);
-+
-+ if (!cnt)
-+ return -EINVAL;
-+
-+ if (cnt == 1 && par->vbe_state && par->vbe_state_size) {
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ goto out;
-+
-+ tsk->regs.eax = 0x0003;
-+ tsk->regs.ebx = 0x0000;
-+ tsk->flags = TF_CALL;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto out;
-+
-+ vesafb_wait_for_task(tsk);
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f04;
-+ tsk->regs.ecx = 0x000f;
-+ tsk->regs.edx = 0x0002;
-+ tsk->buf = (void*)(par->vbe_state);
-+ tsk->buf_len = par->vbe_state_size;
-+ tsk->flags = TF_CALL | TF_BUF_BX;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto out;
-+
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f)
-+ printk(KERN_WARNING "vesafb: VBE state restore call "
-+ "failed (eax: 0x%lx)\n",
-+ tsk->regs.eax);
-+ }
-+out:
-+ atomic_dec(&par->ref_count);
-+ if (tsk)
-+ kfree(tsk);
-+ return 0;
-+}
-+
-+static int __init vesafb_probe(struct platform_device *device);
-+
-+static struct fb_ops vesafb_ops = {
-+ .owner = THIS_MODULE,
-+ .fb_open = vesafb_open,
-+ .fb_release = vesafb_release,
-+ .fb_setcolreg = vesafb_setcolreg,
-+ .fb_setcmap = vesafb_setcmap,
-+ .fb_pan_display = vesafb_pan_display,
-+ .fb_blank = vesafb_blank,
-+ .fb_fillrect = cfb_fillrect,
-+ .fb_copyarea = cfb_copyarea,
-+ .fb_imageblit = cfb_imageblit,
-+ .fb_check_var = vesafb_check_var,
-+ .fb_set_par = vesafb_set_par
-+};
-+
-+static struct platform_driver vesafb_driver = {
-+ .probe = vesafb_probe,
-+ .driver = {
-+ .name = "vesafb",
-+ },
-+};
-+
-+static struct platform_device *vesafb_device;
-+
-+#ifndef MODULE
-+int __init vesafb_setup(char *options)
-+{
-+ char *this_opt;
-+
-+ if (!options || !*options)
-+ return 0;
-+
-+ DPRINTK("options %s\n",options);
-+
-+ while ((this_opt = strsep(&options, ",")) != NULL) {
-+ if (!*this_opt) continue;
-+
-+ DPRINTK("this_opt: %s\n",this_opt);
-+
-+ if (! strcmp(this_opt, "redraw"))
-+ ypan=0;
-+ else if (! strcmp(this_opt, "ypan"))
-+ ypan=1;
-+ else if (! strcmp(this_opt, "ywrap"))
-+ ypan=2;
-+ else if (! strcmp(this_opt, "vgapal"))
-+ pmi_setpal=0;
-+ else if (! strcmp(this_opt, "pmipal"))
-+ pmi_setpal=1;
-+ else if (! strncmp(this_opt, "mtrr:", 5))
-+ mtrr = simple_strtoul(this_opt+5, NULL, 0);
-+ else if (! strcmp(this_opt, "nomtrr"))
-+ mtrr=0;
-+ else if (! strcmp(this_opt, "nocrtc"))
-+ nocrtc=1;
-+ else if (! strcmp(this_opt, "noedid"))
-+ noedid=1;
-+ else if (! strcmp(this_opt, "noblank"))
-+ blank=0;
-+ else if (! strcmp(this_opt, "gtf"))
-+ gtf=1;
-+ else if (! strncmp(this_opt, "vtotal:", 7))
-+ vram_total = simple_strtoul(this_opt + 7, NULL, 0);
-+ else if (! strncmp(this_opt, "vremap:", 7))
-+ vram_remap = simple_strtoul(this_opt + 7, NULL, 0);
-+ else if (! strncmp(this_opt, "maxhf:", 6))
-+ maxhf = simple_strtoul(this_opt + 6, NULL, 0);
-+ else if (! strncmp(this_opt, "maxvf:", 6))
-+ maxvf = simple_strtoul(this_opt + 6, NULL, 0);
-+ else if (! strncmp(this_opt, "maxclk:", 7))
-+ maxclk = simple_strtoul(this_opt + 7, NULL, 0);
-+ else if (! strncmp(this_opt, "vbemode:", 8))
-+ vbemode = simple_strtoul(this_opt + 8, NULL,0);
-+ else if (this_opt[0] >= '0' && this_opt[0] <= '9') {
-+ DPRINTK("mode_option: %s\n",this_opt);
-+ mode_option = this_opt;
-+ } else {
-+ printk(KERN_WARNING
-+ "vesafb: unrecognized option %s\n", this_opt);
-+ }
-+ }
-+
-+ return 0;
-+}
-+#endif /* !MODULE */
-+
-+static int vesafb_read_proc_modes(char *buf, char **start, off_t offset,
-+ int len, int *eof, void *private)
-+{
-+ int clen = 0, i;
-+
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ clen += sprintf(buf + clen, "%dx%d-%d\n", vbe_modes[i].x_res,
-+ vbe_modes[i].y_res, vbe_modes[i].depth);
-+ }
-+ *start = buf + offset;
-+
-+ if (clen > offset) {
-+ clen -= offset;
-+ } else {
-+ clen = 0;
-+ }
-+ return clen;
-+}
-+
-+static int vesafb_read_proc_vbe_info(char *buf, char **start, off_t offset,
-+ int len, int *eof, void *private)
-+{
-+ int clen = 0;
-+
-+ clen += sprintf(buf + clen, "Version: %d.%d\n",
-+ ((vbe_ib.vbe_version & 0xff00) >> 8),
-+ vbe_ib.vbe_version & 0xff);
-+ clen += sprintf(buf + clen, "Vendor: %s\n",
-+ (char*)vbe_ib.oem_vendor_name_ptr);
-+ clen += sprintf(buf + clen, "Product: %s\n",
-+ (char*)vbe_ib.oem_product_name_ptr);
-+ clen += sprintf(buf + clen, "OEM rev: %s\n",
-+ (char*)vbe_ib.oem_product_rev_ptr);
-+ clen += sprintf(buf + clen, "OEM string: %s\n",
-+ (char*)vbe_ib.oem_string_ptr);
-+
-+ *start = buf + offset;
-+
-+ if (clen > offset) {
-+ clen -= offset;
-+ } else {
-+ clen = 0;
-+ }
-+ return clen;
-+}
-+
-+static int __init inline vesafb_vbe_getinfo(struct vesafb_task *tsk)
-+{
-+ tsk->regs.eax = 0x4f00;
-+ tsk->flags = TF_CALL | TF_GETVBEIB;
-+ tsk->buf = &vbe_ib;
-+ tsk->buf_len = sizeof(vbe_ib);
-+ if (vesafb_queue_task (tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+
-+ if (vbe_ib.vbe_version < 0x0200) {
-+ printk(KERN_ERR "vesafb: Sorry, pre-VBE 2.0 cards are "
-+ "not supported.\n");
-+ return -EINVAL;
-+ }
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_ERR "vesafb: Getting mode info block failed "
-+ "(eax=0x%x)\n", (u32)tsk->regs.eax);
-+ return -EINVAL;
-+ }
-+
-+ printk(KERN_INFO "vesafb: %s, %s, %s (OEM: %s)\n",
-+ (char*)vbe_ib.oem_vendor_name_ptr,
-+ (char*)vbe_ib.oem_product_name_ptr,
-+ (char*)vbe_ib.oem_product_rev_ptr,
-+ (char*)vbe_ib.oem_string_ptr);
-+
-+ printk(KERN_INFO "vesafb: VBE version: %d.%d\n",
-+ ((vbe_ib.vbe_version & 0xff00) >> 8),
-+ vbe_ib.vbe_version & 0xff);
-+ return 0;
-+}
-+
-+static int __init inline vesafb_vbe_getmodes(struct vesafb_task *tsk)
-+{
-+ u16 *mode = 0;
-+ int off = 0;
-+
-+ /* Count available modes. */
-+ mode = (u16*)vbe_ib.mode_list_ptr;
-+ while (*mode != 0xffff) {
-+ vbe_modes_cnt++;
-+ mode++;
-+ }
-+
-+ vbe_modes = kmalloc(sizeof(struct vesafb_mode_ib)*
-+ vbe_modes_cnt, GFP_KERNEL);
-+ if (!vbe_modes)
-+ return -ENOMEM;
-+
-+ /* Get mode info for all available modes. */
-+ mode = (u16*)vbe_ib.mode_list_ptr;
-+
-+ while (*mode != 0xffff) {
-+ struct vesafb_mode_ib *mib;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f01;
-+ tsk->regs.ecx = (u32) *mode;
-+ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
-+ tsk->buf = vbe_modes+off;
-+ tsk->buf_len = sizeof(struct vesafb_mode_ib);
-+ if (vesafb_queue_task(tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+ mib = p_mode(tsk->buf);
-+ mib->mode_id = *mode;
-+
-+ /* We only want modes that are supported with the currennt
-+ * hardware configuration (D0), color (D3), graphics (D4)
-+ * and that have support for the LFB (D7). */
-+ if ((mib->mode_attr & 0x99) == 0x99 &&
-+ mib->bits_per_pixel >= 8) {
-+ off++;
-+ } else {
-+ vbe_modes_cnt--;
-+ }
-+ mode++;
-+ mib->depth = mib->red_len + mib->green_len + mib->blue_len;
-+ /* Handle 8bpp modes and modes with broken color component
-+ * lengths. */
-+ if (mib->depth == 0 ||
-+ (mib->depth == 24 && mib->bits_per_pixel == 32))
-+ mib->depth = mib->bits_per_pixel;
-+ }
-+
-+ return 0;
-+}
-+
-+static int __init inline vesafb_vbe_getpmi(struct vesafb_task *tsk)
-+{
-+ int i;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f0a;
-+ tsk->regs.ebx = 0x0;
-+ tsk->flags = TF_CALL;
-+ if (vesafb_queue_task(tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f || tsk->regs.es < 0xc000) {
-+ pmi_setpal = ypan = 0;
-+ } else {
-+ pmi_base = (u16*)phys_to_virt(((u32)tsk->regs.es << 4) +
-+ tsk->regs.edi);
-+ pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
-+ pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
-+ printk(KERN_INFO "vesafb: protected mode interface info at "
-+ "%04x:%04x\n",
-+ (u16)tsk->regs.es, (u16)tsk->regs.edi);
-+ printk(KERN_INFO "vesafb: pmi: set display start = %p, "
-+ "set palette = %p\n", pmi_start, pmi_pal);
-+
-+ if (pmi_base[3]) {
-+ printk(KERN_INFO "vesafb: pmi: ports = ");
-+ for (i = pmi_base[3]/2; pmi_base[i] != 0xffff; i++)
-+ printk("%x ",pmi_base[i]);
-+ printk("\n");
-+
-+ /*
-+ * memory areas not supported (yet?)
-+ *
-+ * Rules are: we have to set up a descriptor for the
-+ * requested memory area and pass it in the ES register
-+ * to the BIOS function.
-+ */
-+ if (pmi_base[i] != 0xffff) {
-+ printk(KERN_INFO "vesafb: can't handle memory "
-+ "requests, pmi disabled\n");
-+ ypan = pmi_setpal = 0;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int __init inline vesafb_vbe_getedid(struct vesafb_task *tsk,
-+ struct fb_info *info)
-+{
-+ int res = 0;
-+
-+ if (noedid || vbe_ib.vbe_version < 0x0300)
-+ return -EINVAL;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f15;
-+ tsk->regs.ebx = 0;
-+ tsk->regs.ecx = 0;
-+ if (vesafb_queue_task(tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f)
-+ return -EINVAL;
-+
-+ if ((tsk->regs.ebx & 0x3) == 3) {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware supports both "
-+ "DDC1 and DDC2 transfers\n");
-+ } else if ((tsk->regs.ebx & 0x3) == 2) {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC2 "
-+ "transfers\n");
-+ } else if ((tsk->regs.ebx & 0x3) == 1) {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC1 "
-+ "transfers\n");
-+ } else {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware doesn't support "
-+ "DDC transfers\n");
-+ return -EINVAL;
-+ }
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f15;
-+ tsk->regs.ebx = 1;
-+ tsk->regs.ecx = tsk->regs.edx = 0;
-+ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
-+ tsk->buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
-+ tsk->buf_len = EDID_LENGTH;
-+
-+ if (vesafb_queue_task(tsk)) {
-+ res = -EINVAL;
-+ goto out;
-+ }
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) == 0x004f) {
-+ fb_edid_to_monspecs(tsk->buf, &info->monspecs);
-+ fb_videomode_to_modelist(info->monspecs.modedb,
-+ info->monspecs.modedb_len, &info->modelist);
-+ if (info->monspecs.vfmax && info->monspecs.hfmax) {
-+ /* If the maximum pixel clock wasn't specified in
-+ * the EDID block, set it to 300 MHz. */
-+ if (info->monspecs.dclkmax == 0)
-+ info->monspecs.dclkmax = 300 * 1000000;
-+ info->monspecs.gtf = 1;
-+ } else {
-+ res = -EINVAL;
-+ }
-+ }
-+
-+out: kfree(tsk->buf);
-+ return res;
-+}
-+
-+static void __init inline vesafb_vbe_getmonspecs(struct vesafb_task *tsk,
-+ struct fb_info *info)
-+{
-+ struct fb_var_screeninfo var;
-+ int i;
-+ memset(&info->monspecs, 0, sizeof(struct fb_monspecs));
-+
-+ /* If we didn't get all necessary data from the EDID block,
-+ * mark it as incompatible with the GTF. */
-+ if (vesafb_vbe_getedid(tsk, info))
-+ info->monspecs.gtf = 0;
-+
-+ /* Kernel command line overrides. */
-+ if (maxclk)
-+ info->monspecs.dclkmax = maxclk * 1000000;
-+ if (maxvf)
-+ info->monspecs.vfmax = maxvf;
-+ if (maxhf)
-+ info->monspecs.hfmax = maxhf * 1000;
-+
-+ /* In case DDC transfers are not supported the user can provide
-+ * monitor limits manually. Lower limits are set to "safe" values. */
-+ if (info->monspecs.gtf == 0 && maxclk && maxvf && maxhf) {
-+ info->monspecs.dclkmin = 0;
-+ info->monspecs.vfmin = 60;
-+ info->monspecs.hfmin = 29000;
-+ info->monspecs.gtf = 1;
-+ }
-+
-+ if (info->monspecs.gtf) {
-+ printk(KERN_INFO
-+ "vesafb: monitor limits: vf = %d Hz, hf = %d kHz, "
-+ "clk = %d MHz\n", info->monspecs.vfmax,
-+ (int)(info->monspecs.hfmax / 1000),
-+ (int)(info->monspecs.dclkmax / 1000000));
-+ /* Add valid VESA video modes to our modelist. */
-+ for (i = 0; i < VESA_MODEDB_SIZE; i++) {
-+ fb_videomode_to_var(&var, (struct fb_videomode *)
-+ &vesa_modes[i]);
-+ if (!fb_validate_mode(&var, info))
-+ fb_add_videomode((struct fb_videomode *)
-+ &vesa_modes[i],
-+ &info->modelist);
-+ }
-+ } else {
-+ /* Add all VESA video modes to our modelist. */
-+ fb_videomode_to_modelist((struct fb_videomode *)vesa_modes,
-+ VESA_MODEDB_SIZE, &info->modelist);
-+ printk(KERN_INFO "vesafb: no monitor limits have been set\n");
-+ }
-+ return;
-+}
-+
-+static int __init inline vesafb_vbe_init(struct fb_info *info)
-+{
-+ struct vesafb_task *tsk;
-+ int res = 0;
-+
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ return -EINVAL;
-+ if ((res = vesafb_vbe_getinfo(tsk)) != 0)
-+ goto out;
-+ if ((res = vesafb_vbe_getmodes(tsk)) != 0)
-+ goto out;
-+ if (pmi_setpal || ypan)
-+ vesafb_vbe_getpmi(tsk);
-+
-+ INIT_LIST_HEAD(&info->modelist);
-+ vesafb_vbe_getmonspecs(tsk, info);
-+
-+out: kfree(tsk);
-+ return res;
-+}
-+
-+static int __init decode_mode(u32 *xres, u32 *yres, u32 *bpp, u32 *refresh)
-+{
-+ int len = strlen(mode_option), i, err = 0;
-+ u8 res_specified = 0, bpp_specified = 0, refresh_specified = 0,
-+ yres_specified = 0;
-+
-+ for (i = len-1; i >= 0; i--) {
-+ switch (mode_option[i]) {
-+ case '@':
-+ len = i;
-+ if (!refresh_specified && !bpp_specified &&
-+ !yres_specified) {
-+ *refresh = simple_strtoul(&mode_option[i+1],
-+ NULL, 0);
-+ refresh_specified = 1;
-+ } else
-+ goto out;
-+ break;
-+ case '-':
-+ len = i;
-+ if (!bpp_specified && !yres_specified) {
-+ *bpp = simple_strtoul(&mode_option[i+1],
-+ NULL, 0);
-+ bpp_specified = 1;
-+ } else
-+ goto out;
-+ break;
-+ case 'x':
-+ if (!yres_specified) {
-+ *yres = simple_strtoul(&mode_option[i+1],
-+ NULL, 0);
-+ yres_specified = 1;
-+ } else
-+ goto out;
-+ break;
-+ case '0'...'9':
-+ break;
-+ default:
-+ goto out;
-+ }
-+ }
-+
-+ if (i < 0 && yres_specified) {
-+ *xres = simple_strtoul(mode_option, NULL, 0);
-+ res_specified = 1;
-+ }
-+
-+out: if (!res_specified || !yres_specified) {
-+ printk(KERN_ERR "vesafb: invalid resolution, "
-+ "%s not specified\n",
-+ (!res_specified) ? "width" : "height");
-+ err = -EINVAL;
-+ }
-+
-+ return err;
-+}
-+
-+static int __init vesafb_init_set_mode(struct fb_info *info)
-+{
-+ struct fb_videomode *fbmode;
-+ struct fb_videomode mode;
-+ int i, modeid, refresh = 0;
-+ u8 refresh_specified = 0;
-+
-+ if (!mode_option)
-+ mode_option = CONFIG_FB_VESA_DEFAULT_MODE;
-+
-+ if (vbemode > 0) {
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ if (vbe_modes[i].mode_id == vbemode) {
-+ info->var.vmode = FB_VMODE_NONINTERLACED;
-+ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
-+ vesafb_setup_var(&info->var, info,
-+ &vbe_modes[i]);
-+ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON,
-+ 60, &info->var, info);
-+ /* With pixclock set to 0, the default BIOS
-+ * timings will be used in set_par(). */
-+ info->var.pixclock = 0;
-+ modeid = i;
-+ goto out;
-+ }
-+ }
-+ printk(KERN_INFO "specified VBE mode %d not found\n",
-+ vbemode);
-+ vbemode = 0;
-+ }
-+
-+ /* Decode the mode specified on the kernel command line. We save
-+ * the depth into bits_per_pixel, which is wrong, but will work
-+ * anyway. */
-+ if (decode_mode(&info->var.xres, &info->var.yres,
-+ &info->var.bits_per_pixel, &refresh))
-+ return -EINVAL;
-+ if (refresh)
-+ refresh_specified = 1;
-+ else
-+ refresh = 60;
-+
-+ /* Look for a matching VBE mode. We can live if an exact match
-+ * cannot be found. */
-+ modeid = vesafb_find_vbe_mode(info->var.xres, info->var.yres,
-+ info->var.bits_per_pixel, 0);
-+
-+ if (modeid == -1) {
-+ return -EINVAL;
-+ } else {
-+ info->var.vmode = FB_VMODE_NONINTERLACED;
-+ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
-+ vesafb_setup_var(&info->var, info, &vbe_modes[modeid]);
-+ }
-+ if (vbe_ib.vbe_version < 0x0300) {
-+ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60,
-+ &info->var, info);
-+ goto out;
-+ }
-+ if (!gtf) {
-+ struct fb_videomode tmode;
-+
-+ if (refresh_specified) {
-+ fb_var_to_videomode(&tmode, &info->var);
-+ tmode.refresh = refresh;
-+ fbmode = fb_find_nearest_mode(&tmode,
-+ &info->modelist);
-+ } else
-+ fbmode = fb_find_best_mode(&info->var,
-+ &info->modelist);
-+
-+ if (fbmode->xres == info->var.xres &&
-+ fbmode->yres == info->var.yres &&
-+ !(fbmode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))
-+ && (!refresh_specified ||
-+ abs(refresh - fbmode->refresh) <= 5)) {
-+ fb_videomode_to_var(&info->var, fbmode);
-+ return modeid;
-+ }
-+ }
-+ i = FB_MAXTIMINGS;
-+ if (!info->monspecs.gtf)
-+ i = FB_IGNOREMON | FB_VSYNCTIMINGS;
-+ else if (refresh_specified)
-+ i = FB_VSYNCTIMINGS;
-+ if (!fb_get_mode(i, refresh, &info->var, info))
-+ goto out;
-+ if (info->monspecs.gtf &&
-+ !fb_get_mode(FB_MAXTIMINGS, 0, &info->var, info))
-+ goto out;
-+ /* Use default refresh rate */
-+ printk(KERN_WARNING "vesafb: using default BIOS refresh rate\n");
-+ info->var.pixclock = 0;
-+
-+out:
-+ fb_var_to_videomode(&mode, &info->var);
-+ fb_add_videomode(&mode, &info->modelist);
-+ return modeid;
-+}
-+
-+static int __init vesafb_probe(struct platform_device *dev)
-+{
-+ char entry[16];
-+ struct fb_info *info;
-+ struct vesafb_mode_ib *mode = NULL;
-+ int err = 0, i, h;
-+ unsigned int size_vmode;
-+ unsigned int size_remap;
-+ unsigned int size_total;
-+
-+ vesafb_info = info = framebuffer_alloc(sizeof(struct vesafb_par) +
-+ sizeof(u32) * 256, &dev->dev);
-+ if (!info)
-+ return -ENOMEM;
-+
-+ if (vesafb_wait_for_thread()) {
-+ printk(KERN_ERR "vesafb: vesafb thread not running\n");
-+ framebuffer_release(info);
-+ return -EINVAL;
-+ }
-+
-+ if (vesafb_vbe_init(info)) {
-+ printk(KERN_ERR "vesafb: vbe_init failed\n");
-+ err = -EINVAL;
-+ goto out;
-+ }
-+
-+ vesafb_fix.ypanstep = ypan ? 1 : 0;
-+ vesafb_fix.ywrapstep = (ypan>1) ? 1 : 0;
-+
-+ info->pseudo_palette = ((u8*)info->par + sizeof(struct vesafb_par));
-+ info->fbops = &vesafb_ops;
-+ info->var = vesafb_defined;
-+ info->fix = vesafb_fix;
-+
-+ if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
-+ err = -ENXIO;
-+ goto out;
-+ }
-+
-+ i = vesafb_init_set_mode(info);
-+ if (i < 0) {
-+ err = -EINVAL;
-+ goto out_cmap;
-+ } else
-+ mode = &vbe_modes[i];
-+
-+ /* Disable blanking if the user requested so. */
-+ if (!blank) {
-+ info->fbops->fb_blank = NULL;
-+ }
-+
-+ /* Find out how much IO memory is required for the mode with
-+ * the highest resolution. */
-+ size_remap = 0;
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ h = vbe_modes[i].bytes_per_scan_line * vbe_modes[i].y_res;
-+ if (h > size_remap)
-+ size_remap = h;
-+ }
-+ size_remap *= 2;
-+
-+ /* size_vmode -- that is the amount of memory needed for the
-+ * used video mode, i.e. the minimum amount of
-+ * memory we need. */
-+ if (mode != NULL) {
-+ size_vmode = info->var.yres * mode->bytes_per_scan_line;
-+ } else {
-+ size_vmode = info->var.yres * info->var.xres *
-+ ((info->var.bits_per_pixel + 7) >> 3);
-+ }
-+
-+ /* size_total -- all video memory we have. Used for mtrr
-+ * entries, ressource allocation and bounds
-+ * checking. */
-+ size_total = vbe_ib.total_memory * 65536;
-+ if (vram_total)
-+ size_total = vram_total * 1024 * 1024;
-+ if (size_total < size_vmode)
-+ size_total = size_vmode;
-+ ((struct vesafb_par*)(info->par))->mem_total = size_total;
-+
-+ /* size_remap -- the amount of video memory we are going to
-+ * use for vesafb. With modern cards it is no
-+ * option to simply use size_total as th
-+ * wastes plenty of kernel address space. */
-+ if (vram_remap)
-+ size_remap = vram_remap * 1024 * 1024;
-+ if (size_remap < size_vmode)
-+ size_remap = size_vmode;
-+ if (size_remap > size_total)
-+ size_remap = size_total;
-+
-+ info->fix.smem_len = size_remap;
-+ info->fix.smem_start = mode->phys_base_ptr;
-+
-+ /* We have to set it here, because when setup_var() was called,
-+ * smem_len wasn't defined yet. */
-+ info->var.yres_virtual = info->fix.smem_len /
-+ mode->bytes_per_scan_line;
-+
-+ if (ypan && info->var.yres_virtual > info->var.yres) {
-+ printk(KERN_INFO "vesafb: scrolling: %s "
-+ "using protected mode interface, "
-+ "yres_virtual=%d\n",
-+ (ypan > 1) ? "ywrap" : "ypan",info->var.yres_virtual);
-+ } else {
-+ printk(KERN_INFO "vesafb: scrolling: redraw\n");
-+ info->var.yres_virtual = info->var.yres;
-+ ypan = 0;
-+ }
-+
-+ info->flags = FBINFO_FLAG_DEFAULT |
-+ (ypan) ? FBINFO_HWACCEL_YPAN : 0;
-+
-+ if (!ypan)
-+ info->fbops->fb_pan_display = NULL;
-+
-+ if (!request_mem_region(info->fix.smem_start, size_total, "vesafb")) {
-+ printk(KERN_WARNING "vesafb: cannot reserve video memory at "
-+ "0x%lx\n", info->fix.smem_start);
-+ /* We cannot make this fatal. Sometimes this comes from magic
-+ spaces our resource handlers simply don't know about. */
-+ }
-+
-+ info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len);
-+
-+ if (!info->screen_base) {
-+ printk(KERN_ERR
-+ "vesafb: abort, cannot ioremap video memory "
-+ "0x%x @ 0x%lx\n",
-+ info->fix.smem_len, info->fix.smem_start);
-+ err = -EIO;
-+ goto out_mem;
-+ }
-+
-+ /* Request failure does not faze us, as vgacon probably has this
-+ region already (FIXME) */
-+ request_region(0x3c0, 32, "vesafb");
-+
-+#ifdef CONFIG_MTRR
-+ if (mtrr && !(info->fix.smem_start & (PAGE_SIZE - 1))) {
-+ int temp_size = size_total;
-+ unsigned int type = 0;
-+
-+ switch (mtrr) {
-+ case 1:
-+ type = MTRR_TYPE_UNCACHABLE;
-+ break;
-+ case 2:
-+ type = MTRR_TYPE_WRBACK;
-+ break;
-+ case 3:
-+ type = MTRR_TYPE_WRCOMB;
-+ break;
-+ case 4:
-+ type = MTRR_TYPE_WRTHROUGH;
-+ break;
-+ default:
-+ type = 0;
-+ break;
-+ }
-+
-+ if (type) {
-+ int rc;
-+
-+ /* Find the largest power-of-two */
-+ while (temp_size & (temp_size - 1))
-+ temp_size &= (temp_size - 1);
-+
-+ /* Try and find a power of two to add */
-+ do {
-+ rc = mtrr_add(info->fix.smem_start,
-+ temp_size, type, 1);
-+ temp_size >>= 1;
-+ } while (temp_size >= PAGE_SIZE && rc == -EINVAL);
-+ }
-+ }
-+#endif /* CONFIG_MTRR */
-+
-+ if (register_framebuffer(info) < 0) {
-+ printk(KERN_ERR
-+ "vesafb: failed to register framebuffer device\n");
-+ err = -EINVAL;
-+ goto out_mem;
-+ }
-+
-+ printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, "
-+ "using %dk, total %dk\n", info->fix.smem_start,
-+ info->screen_base, size_remap/1024, size_total/1024);
-+ printk(KERN_INFO "fb%d: %s frame buffer device\n", info->node,
-+ info->fix.id);
-+
-+ sprintf(entry, "fb%d", info->node);
-+ proc_mkdir(entry, 0);
-+
-+ sprintf(entry, "fb%d/modes", info->node);
-+ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_modes, NULL);
-+
-+ sprintf(entry, "fb%d/vbe_info", info->node);
-+ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_vbe_info, NULL);
-+ return 0;
-+
-+out_mem:
-+ release_mem_region(info->fix.smem_start, size_total);
-+ if (!list_empty(&info->modelist))
-+ fb_destroy_modelist(&info->modelist);
-+ fb_destroy_modedb(info->monspecs.modedb);
-+out_cmap:
-+ fb_dealloc_cmap(&info->cmap);
-+out:
-+ framebuffer_release(info);
-+ vesafb_info = NULL;
-+ kfree(vbe_modes);
-+ vbe_modes = NULL;
-+ return err;
-+}
-+
-+int __init vesafb_init(void)
-+{
-+ int ret;
-+#ifndef MODULE
-+ char *option = NULL;
-+
-+ if (fb_get_options("vesafb", &option))
-+ return -ENODEV;
-+ vesafb_setup(option);
-+#endif
-+ ret = platform_driver_register(&vesafb_driver);
-+
-+ if (!ret) {
-+ vesafb_device = platform_device_alloc("vesafb", 0);
-+
-+ if (vesafb_device)
-+ ret = platform_device_add(vesafb_device);
-+ else
-+ ret = -ENOMEM;
-+
-+ if (ret) {
-+ platform_device_put(vesafb_device);
-+ platform_driver_unregister(&vesafb_driver);
-+ }
-+ }
-+ return ret;
-+}
-+
-+module_init(vesafb_init);
-+
-+#ifdef MODULE
-+void __exit vesafb_exit(void)
-+{
-+ char entry[16];
-+
-+ if (vesafb_info)
-+ unregister_framebuffer(vesafb_info);
-+
-+ platform_device_unregister(vesafb_device);
-+ platform_driver_unregister(&vesafb_driver);
-+
-+ if (vesafb_info) {
-+ struct vesafb_par *par = (struct vesafb_par*)vesafb_info->par;
-+
-+ sprintf(entry, "fb%d/modes", vesafb_info->node);
-+ remove_proc_entry(entry, NULL);
-+
-+ sprintf(entry, "fb%d/vbe_info", vesafb_info->node);
-+ remove_proc_entry(entry, NULL);
-+
-+ sprintf(entry, "fb%d", vesafb_info->node);
-+ remove_proc_entry(entry, NULL);
-+
-+ iounmap(vesafb_info->screen_base);
-+ release_mem_region(vesafb_info->fix.smem_start,
-+ par->mem_total);
-+ fb_dealloc_cmap(&vesafb_info->cmap);
-+ if (!list_empty(&vesafb_info->modelist))
-+ fb_destroy_modelist(&vesafb_info->modelist);
-+ fb_destroy_modedb(vesafb_info->monspecs.modedb);
-+ framebuffer_release(vesafb_info);
-+ }
-+
-+ if (vbe_modes != NULL)
-+ kfree(vbe_modes);
-+}
-+
-+module_exit(vesafb_exit);
-+
-+static inline int param_get_scroll(char *buffer, struct kernel_param *kp)
-+{
-+ return 0;
-+}
-+static inline int param_set_scroll(const char *val, struct kernel_param *kp)
-+{
-+ ypan = 0;
-+
-+ if (! strcmp(val, "redraw"))
-+ ypan = 0;
-+ else if (! strcmp(val, "ypan"))
-+ ypan = 1;
-+ else if (! strcmp(val, "ywrap"))
-+ ypan = 2;
-+
-+ return 0;
-+}
-+
-+#define param_check_scroll(name, p) __param_check(name, p, void);
-+
-+module_param_named(scroll, ypan, scroll, 0);
-+MODULE_PARM_DESC(scroll,"Scrolling mode, set to 'redraw', 'ypan' or 'ywrap'");
-+module_param_named(vgapal, pmi_setpal, invbool, 0);
-+MODULE_PARM_DESC(vgapal,"bool: set palette using VGA registers");
-+module_param_named(pmipal, pmi_setpal, bool, 0);
-+MODULE_PARM_DESC(pmipal,"bool: set palette using PMI calls");
-+module_param_named(nomtrr, mtrr, invbool, 0);
-+MODULE_PARM_DESC(nomtrr,"bool: disable use of MTRR registers");
-+module_param(blank, bool, 1);
-+MODULE_PARM_DESC(blank,"bool: enable hardware blanking");
-+module_param(nocrtc, bool, 0);
-+MODULE_PARM_DESC(nocrtc,"bool: ignore CRTC timings when setting modes");
-+module_param(noedid, bool, 0);
-+MODULE_PARM_DESC(noedid,"bool: ignore EDID-provided monitor limits "
-+ "when setting modes");
-+module_param(gtf, bool, 0);
-+MODULE_PARM_DESC(gtf,"bool: force use of VESA GTF to calculate mode timings");
-+module_param(vram_remap, uint, 0);
-+MODULE_PARM_DESC(vram_remap,"Set amount of video memory to be used [MiB]");
-+module_param(vram_total, uint, 0);
-+MODULE_PARM_DESC(vram_total,"Set total amount of video memoery [MiB]");
-+module_param(maxclk, ushort, 0);
-+MODULE_PARM_DESC(maxclk,"Maximum pixelclock [MHz], overrides EDID data");
-+module_param(maxhf, ushort, 0);
-+MODULE_PARM_DESC(maxhf,"Maximum horizontal frequency [kHz], "
-+ "overrides EDID data");
-+module_param(maxvf, ushort, 0);
-+MODULE_PARM_DESC(maxvf,"Maximum vertical frequency [Hz], "
-+ "overrides EDID data");
-+module_param_named(mode, mode_option, charp, 0);
-+MODULE_PARM_DESC(mode, "Specify resolution as "
-+ "\"<xres>x<yres>[-<bpp>][@<refresh>]\"");
-+module_param(vbemode, ushort, 0);
-+MODULE_PARM_DESC(vbemode,"VBE mode number to set, overrides 'mode' setting");
-+
-+#endif /* MODULE */
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Michal Januszewski");
-+MODULE_DESCRIPTION("Framebuffer driver for VBE2.0+ compliant graphics boards");
-+
---- linux-2.6.17.orig/include/linux/sched.h
-+++ linux-2.6.17/include/linux/sched.h
-@@ -1159,6 +1159,8 @@ extern void mmput(struct mm_struct *);
- extern struct mm_struct *get_task_mm(struct task_struct *task);
- /* Remove the current tasks stale references to the old mm_struct */
- extern void mm_release(struct task_struct *, struct mm_struct *);
-+/* Create a new mm for a kernel thread */
-+extern int set_new_mm(void);
-
- extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
- extern void flush_thread(void);
---- /dev/null
-+++ linux-2.6.17/include/video/vesa.h
-@@ -0,0 +1,150 @@
-+#if 0
-+#define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , \
-+ ## args)
-+#else
-+#define DPRINTK(fmt, args...)
-+#endif
-+
-+#define p_crtc(arg) ((struct vesafb_crtc_ib*)(arg))
-+#define p_vbe(arg) ((struct vesafb_vbe_ib*)(arg))
-+#define p_mode(arg) ((struct vesafb_mode_ib*)(arg))
-+
-+struct vesafb_task {
-+ u8 flags;
-+ void *buf;
-+ int buf_len;
-+ struct vm86_regs regs;
-+ struct list_head node;
-+ struct completion done;
-+};
-+
-+/* Vesafb task flags and masks */
-+#define TF_CALL 0x00
-+#define TF_EXIT 0x01
-+#define TF_GETVBEIB 0x02
-+#define TF_BUF_DI 0x04
-+#define TF_BUF_BX 0x08
-+#define TF_RETURN_BUF 0x10
-+
-+/* Macros and functions for manipulating vesafb tasks */
-+#define vesafb_create_task(task) \
-+do { \
-+ task = kmalloc(sizeof(struct vesafb_task), GFP_ATOMIC); \
-+ if (task) \
-+ memset(task, 0, sizeof(struct vesafb_task)); \
-+ init_completion(&task->done); \
-+} while (0)
-+
-+#define vesafb_wait_for_task(task) wait_for_completion(&task->done);
-+#define vesafb_reset_task(task) init_completion(&task->done);
-+int vesafb_queue_task(struct vesafb_task *task);
-+
-+/* Functions for controlling the vesafb thread */
-+int vesafb_wait_for_thread(void);
-+
-+#define VBE_CAP_CAN_SWITCH_DAC 0x01
-+#define VBE_CAP_VGACOMPAT 0x02
-+
-+/* This struct is 512 bytes long */
-+struct vesafb_vbe_ib {
-+ char vbe_signature[4];
-+ u16 vbe_version;
-+ u32 oem_string_ptr;
-+ u32 capabilities;
-+ u32 mode_list_ptr;
-+ u16 total_memory;
-+ u16 oem_software_rev;
-+ u32 oem_vendor_name_ptr;
-+ u32 oem_product_name_ptr;
-+ u32 oem_product_rev_ptr;
-+ u8 reserved[222];
-+ char oem_data[256];
-+} __attribute__ ((packed));
-+
-+struct vesafb_crtc_ib {
-+ u16 horiz_total;
-+ u16 horiz_start;
-+ u16 horiz_end;
-+ u16 vert_total;
-+ u16 vert_start;
-+ u16 vert_end;
-+ u8 flags;
-+ u32 pixel_clock;
-+ u16 refresh_rate;
-+ u8 reserved[40];
-+} __attribute__ ((packed));
-+
-+#define VBE_MODE_VGACOMPAT 0x20
-+
-+struct vesafb_mode_ib {
-+ /* for all VBE revisions */
-+ u16 mode_attr;
-+ u8 winA_attr;
-+ u8 winB_attr;
-+ u16 win_granularity;
-+ u16 win_size;
-+ u16 winA_seg;
-+ u16 winB_seg;
-+ u32 win_func_ptr;
-+ u16 bytes_per_scan_line;
-+
-+ /* for VBE 1.2+ */
-+ u16 x_res;
-+ u16 y_res;
-+ u8 x_char_size;
-+ u8 y_char_size;
-+ u8 planes;
-+ u8 bits_per_pixel;
-+ u8 banks;
-+ u8 memory_model;
-+ u8 bank_size;
-+ u8 image_pages;
-+ u8 reserved1;
-+
-+ /* Direct color fields for direct/6 and YUV/7 memory models. */
-+ /* Offsets are bit positions of lsb in the mask. */
-+ u8 red_len;
-+ u8 red_off;
-+ u8 green_len;
-+ u8 green_off;
-+ u8 blue_len;
-+ u8 blue_off;
-+ u8 rsvd_len;
-+ u8 rsvd_off;
-+ u8 direct_color_info; /* direct color mode attributes */
-+
-+ /* for VBE 2.0+ */
-+ u32 phys_base_ptr;
-+ u8 reserved2[6];
-+
-+ /* for VBE 3.0+ */
-+ u16 lin_bytes_per_scan_line;
-+ u8 bnk_image_pages;
-+ u8 lin_image_pages;
-+ u8 lin_red_len;
-+ u8 lin_red_off;
-+ u8 lin_green_len;
-+ u8 lin_green_off;
-+ u8 lin_blue_len;
-+ u8 lin_blue_off;
-+ u8 lin_rsvd_len;
-+ u8 lin_rsvd_off;
-+ u32 max_pixel_clock;
-+ u16 mode_id;
-+ u8 depth;
-+} __attribute__ ((packed));
-+
-+struct vesafb_pal_entry {
-+ u_char blue, green, red, pad;
-+} __attribute__ ((packed));
-+
-+struct vesafb_par {
-+ u8 *vbe_state;
-+ int vbe_state_size;
-+ atomic_t ref_count;
-+
-+ u32 mem_total;
-+ int mode_idx;
-+ struct vesafb_crtc_ib crtc;
-+};
-+
---- linux-2.6.17.orig/kernel/fork.c
-+++ linux-2.6.17/kernel/fork.c
-@@ -97,6 +97,7 @@ kmem_cache_t *fs_cachep;
-
- /* SLAB cache for vm_area_struct structures */
- kmem_cache_t *vm_area_cachep;
-+EXPORT_SYMBOL_GPL(vm_area_cachep);
-
- /* SLAB cache for mm_struct structures (tsk->mm) */
- static kmem_cache_t *mm_cachep;
-@@ -383,6 +384,40 @@ void mmput(struct mm_struct *mm)
- EXPORT_SYMBOL_GPL(mmput);
-
- /**
-+ * set_new_mm - allocate, init and activate a new mm for a kernel thread
-+ */
-+int set_new_mm(void)
-+{
-+ struct mm_struct *mm;
-+ struct task_struct *tsk = current;
-+ struct mm_struct *active_mm;
-+
-+ mm = mm_alloc();
-+ if (!mm)
-+ goto fail_nomem;
-+ if (init_new_context(current,mm))
-+ goto fail_nocontext;
-+
-+ task_lock(tsk);
-+ tsk->flags |= PF_BORROWED_MM;
-+ active_mm = tsk->active_mm;
-+ current->mm = mm;
-+ current->active_mm = mm;
-+ activate_mm(active_mm, mm);
-+ task_unlock(current);
-+
-+ /* Drop the previous active_mm */
-+ mmdrop(active_mm);
-+ return 0;
-+
-+fail_nocontext:
-+ mmdrop(mm);
-+fail_nomem:
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(set_new_mm);
-+
-+/**
- * get_task_mm - acquire a reference to the task's mm
- *
- * Returns %NULL if the task has no mm. Checks PF_BORROWED_MM (meaning
---- linux-2.6.17.orig/mm/memory.c
-+++ linux-2.6.17/mm/memory.c
-@@ -1162,6 +1162,7 @@ int zeromap_page_range(struct vm_area_st
- } while (pgd++, addr = next, addr != end);
- return err;
- }
-+EXPORT_SYMBOL_GPL(zeromap_page_range);
-
- pte_t * fastcall get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl)
- {
---- linux-2.6.17.orig/mm/mmap.c
-+++ linux-2.6.17/mm/mmap.c
-@@ -1996,6 +1996,7 @@ int insert_vm_struct(struct mm_struct *
- vma_link(mm, vma, prev, rb_link, rb_parent);
- return 0;
- }
-+EXPORT_SYMBOL_GPL(insert_vm_struct);
-
- /*
- * Copy the vma structure to a new location in the same mm,
diff --git a/packages/linux/linux-rp-2.6.17/wm9712-reset-loop-r2.patch b/packages/linux/linux-rp-2.6.17/wm9712-reset-loop-r2.patch
deleted file mode 100644
index 96919b6b02..0000000000
--- a/packages/linux/linux-rp-2.6.17/wm9712-reset-loop-r2.patch
+++ /dev/null
@@ -1,44 +0,0 @@
- sound/soc/codecs/wm9712.c | 28 ++++++++++++++++++----------
- 1 file changed, 18 insertions(+), 10 deletions(-)
-
-Index: linux-2.6.18/sound/soc/codecs/wm9712.c
-===================================================================
---- linux-2.6.18.orig/sound/soc/codecs/wm9712.c 2006-12-05 23:25:33.000000000 +0000
-+++ linux-2.6.18/sound/soc/codecs/wm9712.c 2006-12-05 23:27:20.000000000 +0000
-@@ -618,18 +618,26 @@ static int wm9712_dapm_event(struct snd_
-
- static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
- {
-- if (try_warm && soc_ac97_ops.warm_reset) {
-- soc_ac97_ops.warm_reset(codec->ac97);
-- if (!(ac97_read(codec, 0) & 0x8000))
-- return 1;
-- }
-+ int retry = 3;
-+
-+ while (retry--)
-+ {
-+ if(try_warm && soc_ac97_ops.warm_reset) {
-+ soc_ac97_ops.warm_reset(codec->ac97);
-+ if(ac97_read(codec, 0) & 0x8000)
-+ continue;
-+ else
-+ return 1;
-+ }
-
-- soc_ac97_ops.reset(codec->ac97);
-- if (ac97_read(codec, 0) & 0x8000)
-- goto err;
-- return 0;
-+ soc_ac97_ops.reset(codec->ac97);
-+ if(ac97_read(codec, 0) & 0x8000)
-+ continue;
-+ else
-+ return 0;
-+
-+ }
-
--err:
- printk(KERN_ERR "WM9712 AC97 reset failed\n");
- return -EIO;
- }
diff --git a/packages/linux/linux-rp-2.6.17/wm9712-suspend-cold-res-r2.patch b/packages/linux/linux-rp-2.6.17/wm9712-suspend-cold-res-r2.patch
deleted file mode 100644
index e91e54f963..0000000000
--- a/packages/linux/linux-rp-2.6.17/wm9712-suspend-cold-res-r2.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- sound/soc/codecs/wm9712.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: linux-2.6.18/sound/soc/codecs/wm9712.c
-===================================================================
---- linux-2.6.18.orig/sound/soc/codecs/wm9712.c 2006-12-05 23:19:53.000000000 +0000
-+++ linux-2.6.18/sound/soc/codecs/wm9712.c 2006-12-05 23:22:04.000000000 +0000
-@@ -651,7 +651,7 @@ static int wm9712_soc_resume(struct plat
- int i, ret;
- u16 *cache = codec->reg_cache;
-
-- ret = wm9712_reset(codec, 1);
-+ ret = wm9712_reset(codec, 0);
- if (ret < 0){
- printk(KERN_ERR "could not reset AC97 codec\n");
- return ret;
diff --git a/packages/linux/linux-rp-2.6.17/wm97xx-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.17/wm97xx-lcdnoise-r0.patch
deleted file mode 100644
index 191de3af22..0000000000
--- a/packages/linux/linux-rp-2.6.17/wm97xx-lcdnoise-r0.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-Index: linux-tosa/drivers/input/touchscreen/wm9712.c
-===================================================================
---- linux-tosa.orig/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:50.923275896 +0100
-@@ -1,7 +1,7 @@
- /*
- * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs.
- *
-- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
- * Author: Liam Girdwood
- * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
- * Parts Copyright : Ian Molton <spyro@f2s.com>
-@@ -13,6 +13,12 @@
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
-+ * Revision history
-+ * 4th Jul 2005 Initial version.
-+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
-+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
-+ * touchscreen interference.
-+ *
- */
-
- #include <linux/module.h>
-@@ -28,6 +34,10 @@
- #define WM9705_VERSION "0.60"
- #define DEFAULT_PRESSURE 0xb0c0
-
-+#define CCNT(a) asm volatile ("mrc p14, 0, %0, C1, C1, 0" : "=r"(a))
-+#define CCNT_ON() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
-+#define CCNT_OFF() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
-+
- /*
- * Debug
- */
-@@ -243,6 +253,36 @@
- return wm->dig[2] & WM9712_PDEN;
- }
-
-+
-+#ifdef CONFIG_MACH_TOSA
-+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
-+ * before sampling the Y axis of the touchscreen */
-+static inline void wm9712_lcd_sync_on(struct wm97xx* wm, int adcsel) {
-+ unsigned long timer1 = 0, timer2 = 0, wait_time = 0;
-+ if (adcsel == WM97XX_ADCSEL_Y) {
-+ wait_time = wm97xx_calc_lcd_waittime(wm);
-+
-+ CCNT_ON();
-+
-+ if (wait_time) {
-+ /* wait for LCD rising edge */
-+ wm_machinfo->wait_hsync();
-+ /* get clock */
-+ CCNT(timer1);
-+ CCNT(timer2);
-+
-+ while ((timer2 - timer1) < wait_time) {
-+ CCNT(timer2);
-+ }
-+ }
-+ }
-+}
-+
-+static inline void wm9712_lcd_sync_off(void) {
-+ CCNT_OFF();
-+}
-+#endif
-+
- /*
- * Read a sample from the WM9712 adc in polling mode.
- */
-@@ -260,6 +300,9 @@
- /* set up digitiser */
- if (adcsel & 0x8000)
- adcsel = ((adcsel & 0x7fff) + 3) << 12;
-+ #ifdef CONFIG_MACH_TOSA
-+ wm9712_lcd_sync_on(wm, adcsel);
-+ #endif
- wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay));
-
- /* wait 3 AC97 time slots + delay for conversion */
-@@ -282,6 +325,10 @@
-
- *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
-
-+ #ifdef CONFIG_MACH_TOSA
-+ wm9712_lcd_sync_off();
-+ #endif
-+
- /* check we have correct sample */
- if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) {
- dbg ("adc wrong sample, read %x got %x", adcsel,
-@@ -303,11 +350,12 @@
- static int wm9712_poll_touch(struct wm97xx* wm, struct wm97xx_data *data)
- {
- int rc;
--
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID)
- return rc;
-+
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID)
- return rc;
-+
- if (pil && !five_wire) {
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID)
- return rc;
-Index: linux-tosa/drivers/input/touchscreen/wm97xx-core.c
-===================================================================
---- linux-tosa.orig/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:50.924275744 +0100
-@@ -2,7 +2,7 @@
- * wm97xx-core.c -- Touch screen driver core for Wolfson WM9705, WM9712
- * and WM9713 AC97 Codecs.
- *
-- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
- * Author: Liam Girdwood
- * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
- * Parts Copyright : Ian Molton <spyro@f2s.com>
-@@ -67,6 +67,9 @@
- * GPIOs) and 2.6 power management.
- * 29th Nov 2004 Added WM9713 support.
- * 4th Jul 2005 Moved codec specific code out to seperate files.
-+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
-+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
-+ * touchscreen interference.
- */
-
- #include <linux/module.h>
-@@ -94,6 +97,7 @@
- static DECLARE_MUTEX(gpio_sem);
- static LIST_HEAD(wm97xx_misc_list);
- static struct wm97xx* wm_codec = NULL;
-+struct wm97xx_machinfo *wm_machinfo;
-
- /*
- * WM97xx - enable/disable AUX ADC sysfs
-@@ -832,6 +836,23 @@
- mdev->remove(wm_codec);
- }
-
-+#ifdef CONFIG_MACH_TOSA
-+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
-+ * before sampling the Y axis of the touchscreen */
-+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm) {
-+ unsigned long hsync_time = wm_machinfo->get_hsync_time();
-+ return hsync_time;
-+}
-+
-+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo) {
-+ wm_machinfo = machinfo;
-+}
-+
-+void wm97xx_unset_machinfo() {
-+ wm_machinfo = NULL;
-+}
-+#endif
-+
- static struct device_driver wm97xx_driver = {
- .name = "ac97",
- .bus = &ac97_bus_type,
-@@ -861,6 +882,9 @@
- EXPORT_SYMBOL_GPL(wm97xx_reg_write);
- EXPORT_SYMBOL_GPL(wm97xx_register_misc_dev);
- EXPORT_SYMBOL_GPL(wm97xx_unregister_misc_dev);
-+EXPORT_SYMBOL_GPL(wm97xx_calc_lcd_waittime);
-+EXPORT_SYMBOL_GPL(wm97xx_set_machinfo);
-+EXPORT_SYMBOL_GPL(wm97xx_unset_machinfo);
-
- module_init(wm97xx_init);
- module_exit(wm97xx_exit);
-Index: linux-tosa/include/linux/wm97xx.h
-===================================================================
---- linux-tosa.orig/include/linux/wm97xx.h 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/include/linux/wm97xx.h 2006-08-29 16:52:50.924275744 +0100
-@@ -207,6 +207,7 @@
-
- struct wm97xx;
- extern struct wm97xx_codec_drv wm97xx_codec;
-+extern struct wm97xx_machinfo *wm_machinfo;
-
- /*
- * Codec driver interface - allows mapping to WM9705/12/13 and newer codecs
-@@ -253,6 +254,11 @@
- struct list_head list;
- };
-
-+struct wm97xx_machinfo {
-+ unsigned long (*get_hsync_time)(void);
-+ void (*wait_hsync)(void);
-+};
-+
- int wm97xx_register_misc_dev(struct wm97xx_misc_dev* mdev);
- void wm97xx_unregister_misc_dev(struct wm97xx_misc_dev* mdev);
-
-@@ -281,4 +287,9 @@
- int wm97xx_acc_startup(struct wm97xx* wm);
- void wm97xx_acc_shutdown(struct wm97xx* wm);
-
-+
-+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm);
-+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo);
-+void wm97xx_unset_machinfo(void);
-+
- #endif
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-c7x0 b/packages/linux/linux-rp-2.6.20/defconfig-c7x0
index 452e0a669c..3ac91adcc0 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-c7x0
+++ b/packages/linux/linux-rp-2.6.20/defconfig-c7x0
@@ -1494,7 +1494,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-collie b/packages/linux/linux-rp-2.6.20/defconfig-collie
index 422ed94df3..c161dd564b 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-collie
+++ b/packages/linux/linux-rp-2.6.20/defconfig-collie
@@ -1457,7 +1457,7 @@ CONFIG_RTC_DRV_SA1100=y
CONFIG_EXT2_FS=m
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
+CONFIG_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-poodle b/packages/linux/linux-rp-2.6.20/defconfig-poodle
index 13616c08f1..a2dba2d7d5 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-poodle
+++ b/packages/linux/linux-rp-2.6.20/defconfig-poodle
@@ -1404,7 +1404,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-tosa b/packages/linux/linux-rp-2.6.20/defconfig-tosa
index 4360f7a179..90527cf2e9 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-tosa
+++ b/packages/linux/linux-rp-2.6.20/defconfig-tosa
@@ -1360,7 +1360,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
diff --git a/packages/linux/linux-rp-2.6.21/connectplus-prevent-oops-HACK.patch b/packages/linux/linux-rp-2.6.21/connectplus-prevent-oops-HACK.patch
deleted file mode 100644
index b5439c62e7..0000000000
--- a/packages/linux/linux-rp-2.6.21/connectplus-prevent-oops-HACK.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: linux-2.6.21/drivers/net/wireless/hostap/hostap_hw.c
-===================================================================
---- linux-2.6.21.orig/drivers/net/wireless/hostap/hostap_hw.c 2007-07-07 12:45:39.000000000 +0100
-+++ linux-2.6.21/drivers/net/wireless/hostap/hostap_hw.c 2007-07-07 12:47:30.000000000 +0100
-@@ -2666,6 +2666,12 @@
- iface = netdev_priv(dev);
- local = iface->local;
-
-+ if(dev->base_addr == 0)
-+ {
-+ printk(KERN_DEBUG "%s: IRQ before base_addr set\n", dev->name);
-+ return IRQ_HANDLED;
-+ }
-+
- prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0);
-
- if (local->func->card_present && !local->func->card_present(local)) {
diff --git a/packages/linux/linux-rp-2.6.21/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.21/connectplus-remove-ide-HACK.patch
deleted file mode 100644
index 4414b21191..0000000000
--- a/packages/linux/linux-rp-2.6.21/connectplus-remove-ide-HACK.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: linux-2.6.13/drivers/ide/legacy/ide-cs.c
-===================================================================
---- linux-2.6.13.orig/drivers/ide/legacy/ide-cs.c 2005-09-01 22:43:46.000000000 +0100
-+++ linux-2.6.13/drivers/ide/legacy/ide-cs.c 2005-09-01 22:45:46.000000000 +0100
-@@ -488,7 +488,6 @@
- PCMCIA_DEVICE_PROD_ID123("KODAK Picture Card ", "KODAK ", "V100K", 0x94a0d8f3, 0xe4fc3ea0, 0xe5e7eed4),
- PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
- PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
-- PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
- PCMCIA_DEVICE_NULL,
- };
- MODULE_DEVICE_TABLE(pcmcia, ide_ids);
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-akita b/packages/linux/linux-rp-2.6.21/defconfig-akita
deleted file mode 100644
index cc4cc782db..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-akita
+++ /dev/null
@@ -1,1744 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20
-# Thu Mar 29 12:24:24 2007
-#
-CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable quiet"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-# CONFIG_TIFM_CORE is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-# CONFIG_FB_PXA_OVERLAY is not set
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-
-#
-# Soc Platforms
-#
-CONFIG_SND_PXA2xx_SOC=m
-CONFIG_SND_PXA2xx_SOC_I2S=m
-CONFIG_SND_PXA2xx_SOC_SPITZ=m
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_SPITZ=m
-# CONFIG_SND_PXA2XX_SOC_MAGICIAN is not set
-
-#
-# SoC Audio for the Atmel AT91
-#
-
-#
-# SoC Audio for the Freescale i.MX
-#
-
-#
-# SoC Audio for the Samsung S3C24XX
-#
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8711 is not set
-# CONFIG_SND_SOC_WM8510 is not set
-# CONFIG_SND_SOC_WM8731 is not set
-CONFIG_SND_SOC_WM8750=m
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8956 is not set
-# CONFIG_SND_SOC_WM8960 is not set
-# CONFIG_SND_SOC_WM8976 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM8980 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-
-#
-# HID Devices
-#
-CONFIG_HID=y
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_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 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=m
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=m
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_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_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_RWSEMS is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_LZO=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
-CONFIG_SHARPSL_RC=m
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-bootcdx86 b/packages/linux/linux-rp-2.6.21/defconfig-bootcdx86
deleted file mode 100644
index d439d89813..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-bootcdx86
+++ /dev/null
@@ -1,1606 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Mon Jun 11 12:01:43 2007
-#
-CONFIG_X86_32=y
-CONFIG_GENERIC_TIME=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_X86=y
-CONFIG_MMU=y
-CONFIG_ZONE_DMA=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_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=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-# CONFIG_IKCONFIG is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-
-#
-# Processor type and features
-#
-CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-# CONFIG_PARAVIRT is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-CONFIG_MPENTIUMII=y
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_POPAD_OK=y
-CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_GOOD_APIC=y
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_TSC=y
-CONFIG_HPET_TIMER=y
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-CONFIG_VM86=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_RELOCATABLE is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-# CONFIG_HOTPLUG_CPU is not set
-# CONFIG_COMPAT_VDSO is not set
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-
-#
-# ACPI (Advanced Configuration and Power Interface) Support
-#
-CONFIG_ACPI=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-# CONFIG_ACPI_IBM is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-# CONFIG_ACPI_CONTAINER is not set
-
-#
-# APM (Advanced Power Management) BIOS Support
-#
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_PCIEAER=y
-CONFIG_PCI_MSI=y
-CONFIG_HT_IRQ=y
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-CONFIG_K8_NB=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=65536
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# Misc devices
-#
-# CONFIG_IBM_ASM is not set
-# CONFIG_SGI_IOC4 is not set
-# CONFIG_TIFM_CORE is not set
-# CONFIG_SONY_LAPTOP is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_HPTIOP is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_STEX is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_SRP is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Macintosh device drivers
-#
-# CONFIG_MAC_EMUMOUSEBTN is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-CONFIG_NET_VENDOR_3COM=y
-# CONFIG_EL1 is not set
-# CONFIG_EL2 is not set
-# CONFIG_ELPLUS is not set
-# CONFIG_EL16 is not set
-# CONFIG_EL3 is not set
-# CONFIG_3C515 is not set
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
-CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-# CONFIG_NET_VENDOR_RACAL is not set
-
-#
-# Tulip family network device support
-#
-CONFIG_NET_TULIP=y
-# CONFIG_DE2104X is not set
-CONFIG_TULIP=m
-CONFIG_TULIP_MWI=y
-CONFIG_TULIP_MMIO=y
-CONFIG_TULIP_NAPI=y
-CONFIG_TULIP_NAPI_HW_MITIGATION=y
-CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_AT1700=m
-CONFIG_DEPCA=m
-CONFIG_HP100=m
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_PCNET32_NAPI=y
-CONFIG_AMD8111_ETH=m
-CONFIG_AMD8111E_NAPI=y
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_ADAPTEC_STARFIRE_NAPI=y
-CONFIG_AC3200=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_FORCEDETH=m
-CONFIG_FORCEDETH_NAPI=y
-CONFIG_CS89x0=m
-CONFIG_DGRS=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=y
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-CONFIG_8139TOO_PIO=y
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SUNDANCE=m
-CONFIG_SUNDANCE_MMIO=y
-CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-CONFIG_VIA_RHINE_MMIO=y
-CONFIG_VIA_RHINE_NAPI=y
-CONFIG_SC92031=m
-
-#
-# Ethernet (1000 Mbit)
-#
-CONFIG_ACENIC=m
-CONFIG_ACENIC_OMIT_TIGON_I=y
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000_NAPI=y
-# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_R8169_NAPI=y
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-CONFIG_SKY2=m
-CONFIG_SK98LIN=m
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-# CONFIG_MYRI10GE is not set
-# CONFIG_NETXEN_NIC is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-CONFIG_AGP=m
-CONFIG_AGP_ALI=m
-CONFIG_AGP_ATI=m
-CONFIG_AGP_AMD=m
-CONFIG_AGP_AMD64=m
-CONFIG_AGP_INTEL=m
-CONFIG_AGP_NVIDIA=m
-CONFIG_AGP_SIS=m
-CONFIG_AGP_SWORKS=m
-CONFIG_AGP_VIA=m
-CONFIG_AGP_EFFICEON=m
-# CONFIG_DRM is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_MWAVE is not set
-# CONFIG_PC8736x_GPIO is not set
-# CONFIG_NSC_GPIO is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=y
-CONFIG_FB_VESA=y
-# CONFIG_FB_VESA_STD is not set
-CONFIG_FB_VESA_TNG=y
-CONFIG_FB_VESA_DEFAULT_MODE="640x480-16@60"
-CONFIG_VIDEO_SELECT=y
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_S3 is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-CONFIG_SND_AC97_POWER_SAVE=y
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=y
-
-#
-# HID Devices
-#
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-CONFIG_USB_SUSPEND=y
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_AIPTEK is not set
-CONFIG_USB_WACOM=y
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-# CONFIG_USB_GTCO is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_BERRY_CHARGE is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# LED devices
-#
-# CONFIG_NEW_LEDS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-# CONFIG_EDAC is not set
-
-#
-# Real Time Clock
-#
-# CONFIG_RTC_CLASS is not set
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
-# Auxiliary Display support
-#
-
-#
-# Virtualization
-#
-# CONFIG_KVM is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT4DEV_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_NFS_FS is not set
-# CONFIG_NFSD is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf-8"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Instrumentation Support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=y
-# CONFIG_KPROBES is not set
-
-#
-# Kernel hacking
-#
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=15
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_MANAGER=m
-# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-# CONFIG_CRYPTO_MD5 is not set
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_DES is not set
-# CONFIG_CRYPTO_FCRYPT is not set
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_TWOFISH_586 is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_AES_586 is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
-# CONFIG_CRYPTO_ARC4 is not set
-# CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_ANUBIS is not set
-# CONFIG_CRYPTO_DEFLATE is not set
-# CONFIG_CRYPTO_LZO is not set
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_CAMELLIA is not set
-# CONFIG_CRYPTO_TEST is not set
-
-#
-# Hardware crypto devices
-#
-CONFIG_CRYPTO_DEV_PADLOCK=m
-CONFIG_CRYPTO_DEV_PADLOCK_AES=m
-CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-CONFIG_CRYPTO_DEV_GEODE=m
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_AUDIT_GENERIC=y
-# CONFIG_LZO is not set
-CONFIG_ZLIB_INFLATE=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-c7x0 b/packages/linux/linux-rp-2.6.21/defconfig-c7x0
deleted file mode 100644
index 1ff275cee5..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-c7x0
+++ /dev/null
@@ -1,1787 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20
-# Thu Mar 29 13:32:11 2007
-#
-CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-CONFIG_MACH_CORGI=y
-CONFIG_MACH_SHEPHERD=y
-CONFIG_MACH_HUSKY=y
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-CONFIG_PXA_SHARP_C7xx=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_IWMMXT is not set
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable quiet"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_CPU_FREQ_PXA25x=y
-CONFIG_KEXEC=y
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-CONFIG_KEYBOARD_CORGI=y
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-# CONFIG_TIFM_CORE is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA 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
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-CONFIG_USB_DSBR=m
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB=y
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_MBX is not set
-CONFIG_FB_W100=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_CORGI=m
-# CONFIG_SND_PXA2XX_SOC_MAGICIAN is not set
-
-#
-# SoC Audio for the Atmel AT91
-#
-
-#
-# SoC Audio for the Freescale i.MX
-#
-
-#
-# SoC Audio for the Samsung S3C24XX
-#
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8711 is not set
-# CONFIG_SND_SOC_WM8510 is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8956 is not set
-# CONFIG_SND_SOC_WM8960 is not set
-# CONFIG_SND_SOC_WM8976 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM8980 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-
-#
-# HID Devices
-#
-CONFIG_HID=y
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_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 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT4DEV_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_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_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_TIMER_STATS=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_RWSEMS is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_LZO=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-collie b/packages/linux/linux-rp-2.6.21/defconfig-collie
deleted file mode 100644
index 422ed94df3..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-collie
+++ /dev/null
@@ -1,1739 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20.4
-# Fri Apr 6 23:20:59 2007
-#
-CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
-CONFIG_MMU=y
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-# CONFIG_ELF_CORE is not set
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PNX4008 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-CONFIG_SA1100_COLLIE=y
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-# CONFIG_I82365 is not set
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_NODES_SHIFT=2
-CONFIG_SELECT_MEMORY_MODEL=y
-# CONFIG_FLATMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM_MANUAL=y
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-# CONFIG_DONGLE is not set
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_SA1100_FIR=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
-CONFIG_MTD_SHARP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SA1100=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=m
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=m
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=m
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=m
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_ARLAN is not set
-# CONFIG_WAVELAN is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_LOCOMO=m
-
-#
-# SPI Protocol Masters
-#
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-# CONFIG_TIFM_CORE is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-CONFIG_MCP=y
-CONFIG_MCP_SA11X0=y
-CONFIG_MCP_UCB1200=y
-CONFIG_MCP_UCB1200_TS=m
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=m
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_CADET is not set
-# CONFIG_RADIO_RTRACK is not set
-# CONFIG_RADIO_RTRACK2 is not set
-# CONFIG_RADIO_AZTECH is not set
-# CONFIG_RADIO_GEMTEK is not set
-# CONFIG_RADIO_SF16FMI is not set
-# CONFIG_RADIO_SF16FMR2 is not set
-# CONFIG_RADIO_TERRATEC is not set
-# CONFIG_RADIO_TRUST is not set
-# CONFIG_RADIO_TYPHOON is not set
-# CONFIG_RADIO_ZOLTRIX is not set
-# CONFIG_USB_DSBR is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_FIRMWARE_EDID=y
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# HID Devices
-#
-CONFIG_HID=m
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_MCS7830 is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-CONFIG_USB_NET_CDC_SUBSET=m
-# CONFIG_USB_ALI_M5632 is not set
-# CONFIG_USB_AN2720 is not set
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-CONFIG_USB_SERIAL_AIRPRIME=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-# CONFIG_USB_SERIAL_OMNINET is not set
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET 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 support
-#
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-CONFIG_MMC_BLOCK=m
-# CONFIG_MMC_TIFM_SD is not set
-CONFIG_MMC_SPI=m
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_EXT4DEV_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_RWSEMS is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=m
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_LRW is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_TWOFISH_COMMON=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_LZO=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-poodle b/packages/linux/linux-rp-2.6.21/defconfig-poodle
deleted file mode 100644
index fa7b83df77..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-poodle
+++ /dev/null
@@ -1,1657 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Jul 10 23:38:56 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-CONFIG_MACH_POODLE=y
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-# CONFIG_MACH_TOSA is not set
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_LOCOMO=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-CONFIG_I2C_ALGOBIT=y
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_VIVI is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_EM28XX is not set
-CONFIG_USB_DSBR=m
-CONFIG_VIDEO_USBVIDEO=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_MAINSTONE_BASEBAND is not set
-# CONFIG_SND_MAINSTONE_BLUETOOTH is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_POODLE=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_TIMER_STATS=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-qemuarm b/packages/linux/linux-rp-2.6.21/defconfig-qemuarm
deleted file mode 100644
index 35cf3f5b17..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-qemuarm
+++ /dev/null
@@ -1,1194 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sat Aug 26 22:45:02 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_VECTORS_BASE=0xffff0000
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-# CONFIG_BLK_DEV_IO_TRACE is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-CONFIG_ARCH_VERSATILE=y
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Versatile platform type
-#
-CONFIG_ARCH_VERSATILE_PB=y
-# CONFIG_MACH_VERSATILE_AB is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_ARM926T=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5TJ=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_COPY_V4WB=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_ICACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
-# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-# CONFIG_KEXEC is not set
-CONFIG_ARM_VIC=y
-CONFIG_ICST307=y
-
-#
-# Bus support
-#
-CONFIG_ARM_AMBA=y
-CONFIG_PCI=y
-# CONFIG_PCI_DEBUG is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_HZ=100
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_VFP=y
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_APM is not set
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_GEOMETRY is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=51200
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-CONFIG_SCSI_SPI_ATTRS=y
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-# CONFIG_SCSI_DPT_I2O is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-CONFIG_SCSI_SYM53C8XX_2=y
-CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
-CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
-CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
-CONFIG_SCSI_SYM53C8XX_MMIO=y
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_SMC91X=y
-# CONFIG_DM9000 is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_PCI is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-# CONFIG_S2IO is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_UINPUT is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-# CONFIG_LEDS_CLASS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-# CONFIG_LEDS_TRIGGERS is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_ARMCLCD=y
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-# CONFIG_USB_STORAGE is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-CONFIG_USB_WACOM=y
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-# CONFIG_NFSD_TCP is not set
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=y
-# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_TIMER_STATS=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-qemux86 b/packages/linux/linux-rp-2.6.21/defconfig-qemux86
deleted file mode 100644
index 0d26596d78..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-qemux86
+++ /dev/null
@@ -1,1568 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Oct 16 19:42:42 2006
-#
-CONFIG_X86_32=y
-CONFIG_SEMAPHORE_SLEEPERS=y
-CONFIG_X86=y
-CONFIG_MMU=y
-CONFIG_GENERIC_ISA_DMA=y
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_DMI=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
-# CONFIG_IKCONFIG is not set
-# CONFIG_CPUSETS is not set
-# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_VM86=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# Processor type and features
-#
-CONFIG_SMP=y
-CONFIG_X86_PC=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_NUMAQ is not set
-# CONFIG_X86_SUMMIT is not set
-# CONFIG_X86_BIGSMP is not set
-# CONFIG_X86_VISWS is not set
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_ES7000 is not set
-CONFIG_M386=y
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M686 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MGEODEGX1 is not set
-# CONFIG_MGEODE_LX is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MVIAC3_2 is not set
-CONFIG_X86_GENERIC=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_X86_PPRO_FENCE=y
-CONFIG_X86_F00F_BUG=y
-CONFIG_X86_INTEL_USERCOPY=y
-# CONFIG_HPET_TIMER is not set
-CONFIG_NR_CPUS=8
-CONFIG_SCHED_SMT=y
-CONFIG_SCHED_MC=y
-CONFIG_PREEMPT_NONE=y
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
-CONFIG_PREEMPT_BKL=y
-CONFIG_X86_LOCAL_APIC=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_MCE=y
-CONFIG_X86_MCE_NONFATAL=y
-CONFIG_X86_MCE_P4THERMAL=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_MICROCODE is not set
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_CPUID is not set
-
-#
-# Firmware Drivers
-#
-# CONFIG_EDD is not set
-# CONFIG_DELL_RBU is not set
-# CONFIG_DCDBAS is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-CONFIG_PAGE_OFFSET=0xC0000000
-CONFIG_ARCH_FLATMEM_ENABLE=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_MATH_EMULATION is not set
-CONFIG_MTRR=y
-# CONFIG_EFI is not set
-CONFIG_IRQBALANCE=y
-# CONFIG_REGPARM is not set
-CONFIG_SECCOMP=y
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
-# CONFIG_KEXEC is not set
-CONFIG_PHYSICAL_START=0x100000
-# CONFIG_HOTPLUG_CPU is not set
-
-#
-# Power management options (ACPI, APM)
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-
-#
-# ACPI (Advanced Configuration and Power Interface) Support
-#
-CONFIG_ACPI=y
-CONFIG_ACPI_AC=y
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BUTTON=y
-CONFIG_ACPI_VIDEO=m
-# CONFIG_ACPI_HOTKEY is not set
-CONFIG_ACPI_FAN=y
-CONFIG_ACPI_PROCESSOR=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_ASUS is not set
-CONFIG_ACPI_IBM=m
-# CONFIG_ACPI_IBM_DOCK is not set
-# CONFIG_ACPI_TOSHIBA is not set
-CONFIG_ACPI_BLACKLIST_YEAR=0
-# CONFIG_ACPI_DEBUG is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_X86_PM_TIMER=y
-# CONFIG_ACPI_CONTAINER is not set
-
-#
-# APM (Advanced Power Management) BIOS Support
-#
-# CONFIG_APM is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
-#
-CONFIG_PCI=y
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-# CONFIG_PCI_GODIRECT is not set
-CONFIG_PCI_GOANY=y
-CONFIG_PCI_BIOS=y
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_MMCONFIG=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCI_MSI is not set
-CONFIG_ISA_DMA_API=y
-CONFIG_ISA=y
-# CONFIG_EISA is not set
-# CONFIG_MCA is not set
-# CONFIG_SCx200 is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# PCI Hotplug Support
-#
-# CONFIG_HOTPLUG_PCI is not set
-
-#
-# Executable file formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_MISC=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=y
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-# CONFIG_IP_NF_CT_PROTO_SCTP is not set
-# CONFIG_IP_NF_FTP is not set
-# CONFIG_IP_NF_IRC is not set
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=y
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
-# CONFIG_PARPORT_GSC is not set
-# CONFIG_PARPORT_1284 is not set
-
-#
-# Plug and Play support
-#
-CONFIG_PNP=y
-# CONFIG_PNP_DEBUG is not set
-
-#
-# Protocols
-#
-# CONFIG_ISAPNP is not set
-# CONFIG_PNPBIOS is not set
-CONFIG_PNPACPI=y
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SX8 is not set
-# CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=51200
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-CONFIG_BLK_DEV_CMD640=y
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-# CONFIG_BLK_DEV_IDEPNP is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_IDEPCI_SHARE_IRQ=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-CONFIG_BLK_DEV_RZ1000=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_IDEDMA_ONLYDISK is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_CS5535 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-CONFIG_BLK_DEV_PIIX=y
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_IDEDMA_IVB is not set
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
-# CONFIG_BLK_DEV_SR is not set
-CONFIG_CHR_DEV_SG=y
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_AIC7XXX_OLD is not set
-# CONFIG_SCSI_AIC79XX is not set
-CONFIG_SCSI_DPT_I2O=m
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-CONFIG_SCSI_SATA=y
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-CONFIG_SCSI_ATA_PIIX=y
-# CONFIG_SCSI_SATA_MV is not set
-# CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_PDC_ADMA is not set
-# CONFIG_SCSI_SATA_QSTOR is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
-CONFIG_SCSI_SATA_SX4=m
-# CONFIG_SCSI_SATA_SIL is not set
-# CONFIG_SCSI_SATA_SIL24 is not set
-CONFIG_SCSI_SATA_SIS=m
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-# CONFIG_SCSI_SATA_VITESSE is not set
-CONFIG_SCSI_SATA_INTEL_COMBINED=y
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_GDTH is not set
-# CONFIG_SCSI_GENERIC_NCR5380 is not set
-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_PPA is not set
-# CONFIG_SCSI_IMM is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-CONFIG_SCSI_IPR=m
-# CONFIG_SCSI_IPR_TRACE is not set
-# CONFIG_SCSI_IPR_DUMP is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-# CONFIG_FUSION_SPI is not set
-# CONFIG_FUSION_FC is not set
-# CONFIG_FUSION_SAS is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-CONFIG_IEEE1394=y
-
-#
-# Subsystem Options
-#
-# CONFIG_IEEE1394_VERBOSEDEBUG is not set
-# CONFIG_IEEE1394_OUI_DB is not set
-# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
-# CONFIG_IEEE1394_EXPORT_FULL_API is not set
-
-#
-# Device Drivers
-#
-
-#
-# Texas Instruments PCILynx requires I2C
-#
-CONFIG_IEEE1394_OHCI1394=y
-
-#
-# Protocol Drivers
-#
-# CONFIG_IEEE1394_VIDEO1394 is not set
-# CONFIG_IEEE1394_SBP2 is not set
-# CONFIG_IEEE1394_ETH1394 is not set
-# CONFIG_IEEE1394_DV1394 is not set
-CONFIG_IEEE1394_RAWIO=y
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=m
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-CONFIG_NET_ISA=y
-# CONFIG_E2100 is not set
-# CONFIG_EWRK3 is not set
-# CONFIG_EEXPRESS is not set
-# CONFIG_EEXPRESS_PRO is not set
-# CONFIG_HPLAN_PLUS is not set
-# CONFIG_HPLAN is not set
-# CONFIG_LP486E is not set
-# CONFIG_ETH16I is not set
-CONFIG_NE2000=y
-# CONFIG_ZNET is not set
-# CONFIG_SEEQ8005 is not set
-CONFIG_NET_PCI=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_B44 is not set
-# CONFIG_FORCEDETH is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEPRO100 is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-CONFIG_NE2K_PCI=y
-# CONFIG_8139CP is not set
-CONFIG_8139TOO=y
-CONFIG_8139TOO_PIO=y
-# CONFIG_8139TOO_TUNE_TWISTER is not set
-# CONFIG_8139TOO_8129 is not set
-# CONFIG_8139_OLD_RX_RESET is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_VIA_VELOCITY is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2 is not set
-
-#
-# Ethernet (10000 Mbit)
-#
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_IXGB is not set
-CONFIG_S2IO=m
-# CONFIG_S2IO_NAPI is not set
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PLIP is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_FC is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Telephony Support
-#
-# CONFIG_PHONE is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-# CONFIG_SERIO_PARKBD is not set
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_CONSOLE is not set
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_CORE=y
-# CONFIG_SERIAL_JSM is not set
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_PRINTER=y
-# CONFIG_LP_CONSOLE is not set
-# CONFIG_PPDEV is not set
-# CONFIG_TIPAR is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-# CONFIG_SONYPI is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-CONFIG_AGP=y
-# CONFIG_AGP_ALI is not set
-# CONFIG_AGP_ATI is not set
-# CONFIG_AGP_AMD is not set
-# CONFIG_AGP_AMD64 is not set
-CONFIG_AGP_INTEL=y
-# CONFIG_AGP_NVIDIA is not set
-# CONFIG_AGP_SIS is not set
-# CONFIG_AGP_SWORKS is not set
-# CONFIG_AGP_VIA is not set
-# CONFIG_AGP_EFFICEON is not set
-CONFIG_DRM=y
-# CONFIG_DRM_TDFX is not set
-# CONFIG_DRM_R128 is not set
-# CONFIG_DRM_RADEON is not set
-# CONFIG_DRM_I810 is not set
-# CONFIG_DRM_I830 is not set
-# CONFIG_DRM_I915 is not set
-# CONFIG_DRM_MGA is not set
-# CONFIG_DRM_SIS is not set
-# CONFIG_DRM_VIA is not set
-# CONFIG_DRM_SAVAGE is not set
-# CONFIG_MWAVE is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HPET is not set
-# CONFIG_HANGCHECK_TIMER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-CONFIG_HWMON=y
-# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_HDAPS is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_IBM_ASM is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-CONFIG_FB_FIRMWARE_EDID=y
-CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_CIRRUS is not set
-# CONFIG_FB_PM2 is not set
-# CONFIG_FB_CYBER2000 is not set
-# CONFIG_FB_ARC is not set
-# CONFIG_FB_ASILIANT is not set
-# CONFIG_FB_IMSTT is not set
-CONFIG_FB_VGA16=y
-CONFIG_FB_VESA=y
-# CONFIG_FB_VESA_STD is not set
-CONFIG_FB_VESA_TNG=y
-CONFIG_FB_VESA_DEFAULT_MODE="640x480-32@60"
-CONFIG_VIDEO_SELECT=y
-# CONFIG_FB_HGA is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_NVIDIA is not set
-# CONFIG_FB_RIVA is not set
-# CONFIG_FB_I810 is not set
-# CONFIG_FB_INTEL is not set
-# CONFIG_FB_MATROX is not set
-# CONFIG_FB_RADEON is not set
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_ATY is not set
-# CONFIG_FB_SAVAGE is not set
-# CONFIG_FB_SIS is not set
-# CONFIG_FB_NEOMAGIC is not set
-# CONFIG_FB_KYRO is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VOODOO1 is not set
-# CONFIG_FB_CYBLA is not set
-# CONFIG_FB_TRIDENT is not set
-# CONFIG_FB_GEODE is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-CONFIG_VGA_CONSOLE=y
-# CONFIG_VGACON_SOFT_SCROLLBACK is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_PCM_OSS_PLUGINS=y
-CONFIG_SND_SEQUENCER_OSS=y
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=y
-CONFIG_SND_AC97_BUS=y
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ISA devices
-#
-# CONFIG_SND_ADLIB is not set
-# CONFIG_SND_AD1816A is not set
-# CONFIG_SND_AD1848 is not set
-# CONFIG_SND_ALS100 is not set
-# CONFIG_SND_AZT2320 is not set
-# CONFIG_SND_CMI8330 is not set
-# CONFIG_SND_CS4231 is not set
-# CONFIG_SND_CS4232 is not set
-# CONFIG_SND_CS4236 is not set
-# CONFIG_SND_DT019X is not set
-# CONFIG_SND_ES968 is not set
-# CONFIG_SND_ES1688 is not set
-# CONFIG_SND_ES18XX is not set
-# CONFIG_SND_GUSCLASSIC is not set
-# CONFIG_SND_GUSEXTREME is not set
-# CONFIG_SND_GUSMAX is not set
-# CONFIG_SND_INTERWAVE is not set
-# CONFIG_SND_INTERWAVE_STB is not set
-# CONFIG_SND_OPL3SA2 is not set
-# CONFIG_SND_OPTI92X_AD1848 is not set
-# CONFIG_SND_OPTI92X_CS4231 is not set
-# CONFIG_SND_OPTI93X is not set
-# CONFIG_SND_MIRO is not set
-# CONFIG_SND_SB8 is not set
-# CONFIG_SND_SB16 is not set
-# CONFIG_SND_SBAWE is not set
-# CONFIG_SND_SGALAXY is not set
-# CONFIG_SND_SSCAPE is not set
-# CONFIG_SND_WAVEFRONT is not set
-
-#
-# PCI devices
-#
-# CONFIG_SND_AD1889 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALS4000 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-CONFIG_SND_INTEL8X0=y
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_USX2Y is not set
-
-#
-# SoC audio support
-#
-# CONFIG_SND_SOC is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_SPLIT_ISO is not set
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-CONFIG_USB_PRINTER=y
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=y
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=y
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-# CONFIG_USB_AIPTEK is not set
-CONFIG_USB_WACOM=y
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-# CONFIG_USB_USS720 is not set
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGETKIT is not set
-CONFIG_USB_PHIDGETSERVO=m
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_SISUSBVGA is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# LED devices
-#
-# CONFIG_NEW_LEDS is not set
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
-# InfiniBand support
-#
-# CONFIG_INFINIBAND is not set
-
-#
-# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
-#
-# CONFIG_EDAC is not set
-
-#
-# Real Time Clock
-#
-# CONFIG_RTC_CLASS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-# CONFIG_EXT3_FS_POSIX_ACL is not set
-# CONFIG_EXT3_FS_SECURITY is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
-CONFIG_UDF_FS=y
-CONFIG_UDF_NLS=y
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_KCORE=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLBFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_SQUASHFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
-# CONFIG_NFSD_V3 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_EXPORTFS=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-CONFIG_NLS_ISO8859_1=y
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Instrumentation Support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=y
-# CONFIG_KPROBES is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=15
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_FS is not set
-# CONFIG_UNWIND_INFO is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_STACK_BACKTRACE_COLS=2
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_MPPARSE=y
-CONFIG_DOUBLEFAULT=y
-CONFIG_TIMER_STATS=y
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_GENERIC_PENDING_IRQ=y
-CONFIG_X86_SMP=y
-CONFIG_X86_HT=y
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_TRAMPOLINE=y
-CONFIG_KTIME_SCALAR=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-spitz b/packages/linux/linux-rp-2.6.21/defconfig-spitz
deleted file mode 100644
index ce9b90066b..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-spitz
+++ /dev/null
@@ -1,1781 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Sat Jun 30 20:16:08 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_PROBE=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-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=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_SYSFS_DEPRECATED=y
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_AT91 is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_EP93XX is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_NETX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_TRIZEPS4 is not set
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_PXA_SHARPSL_25x is not set
-CONFIG_PXA_SHARPSL_27x=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_SPITZ=y
-CONFIG_MACH_BORZOI=y
-CONFIG_PXA27x=y
-CONFIG_PXA_SHARP_Cxx00=y
-CONFIG_PXA_SSP=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw fbcon=rotate:1 dyntick=enable quiet"
-# CONFIG_XIP_KERNEL is not set
-CONFIG_KEXEC=y
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
-# CONFIG_XFRM_MIGRATE is not set
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-# CONFIG_IPV6_MIP6 is not set
-CONFIG_INET6_XFRM_TUNNEL=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_TRANSPORT=m
-CONFIG_INET6_XFRM_MODE_TUNNEL=m
-CONFIG_INET6_XFRM_MODE_BEET=m
-# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
-CONFIG_IPV6_SIT=m
-CONFIG_IPV6_TUNNEL=m
-# CONFIG_IPV6_MULTIPLE_TABLES is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_QUEUE=m
-# 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
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-# CONFIG_MCS_FIR is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-# CONFIG_IEEE80211_SOFTMAC is not set
-CONFIG_WIRELESS_EXT=y
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_ECC_SMC is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# 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 is not set
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-# CONFIG_SCSI_TGT is not set
-# CONFIG_SCSI_NETLINK is not set
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-# CONFIG_SCSI_SCAN_ASYNC is not set
-
-#
-# SCSI Transports
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-# CONFIG_DM_DEBUG is not set
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-# CONFIG_SMC911X is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_CORGI is not set
-CONFIG_KEYBOARD_SPITZ=y
-# CONFIG_KEYBOARD_GPIO is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_CORGI=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=m
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-CONFIG_LEDS_SPITZ=y
-# CONFIG_LEDS_TOSA is not set
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-
-#
-# V4L USB devices
-#
-# CONFIG_VIDEO_PVRUSB2 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_USBVISION is not set
-# CONFIG_USB_VICAM is not set
-# CONFIG_USB_IBMCAM is not set
-# CONFIG_USB_KONICAWC is not set
-# CONFIG_USB_QUICKCAM_MESSENGER is not set
-# CONFIG_USB_ET61X251 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_USB_W9968CF is not set
-# CONFIG_USB_OV511 is not set
-# CONFIG_USB_SE401 is not set
-# CONFIG_USB_SN9C102 is not set
-# CONFIG_USB_STV680 is not set
-# CONFIG_USB_ZC0301 is not set
-# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_USB_DSBR is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
-
-#
-# Graphics support
-#
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-CONFIG_FB_PXA_OVERLAY=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_W100 is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=m
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-CONFIG_SND_SEQUENCER=m
-# CONFIG_SND_SEQ_DUMMY is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_PCM_OSS_PLUGINS=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-CONFIG_SND_VERBOSE_PROCFS=y
-CONFIG_SND_VERBOSE_PRINTK=y
-CONFIG_SND_DEBUG=y
-# CONFIG_SND_DEBUG_DETECT is not set
-# CONFIG_SND_PCM_XRUN_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_CODEC=m
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_VIRMIDI is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-CONFIG_SND_PXA2XX_PCM=m
-CONFIG_SND_PXA2XX_AC97=m
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-# CONFIG_SND_VXPOCKET is not set
-# CONFIG_SND_PDAUDIOCF is not set
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=m
-
-#
-# SoC Platforms
-#
-
-#
-# SoC Audio for the Atmel AT91
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2XX_SOC=m
-CONFIG_SND_PXA2XX_SOC_I2S=m
-CONFIG_SND_PXA2XX_SOC_SPITZ=m
-CONFIG_SND_SOC_WM8750=m
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
-
-#
-# HID Devices
-#
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-# CONFIG_USB_GTCO is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET_MII=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_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 is not set
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRCABLE is not set
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ARK3116 is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-# CONFIG_USB_SERIAL_FUNSOFT is not set
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-# CONFIG_USB_SERIAL_MOS7720 is not set
-# CONFIG_USB_SERIAL_MOS7840 is not set
-# CONFIG_USB_SERIAL_NAVMAN is not set
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-# CONFIG_USB_SERIAL_DEBUG is not set
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-# CONFIG_USB_BERRY_CHARGE is not set
-CONFIG_USB_LED=m
-# CONFIG_USB_CYPRESS_CY7C63 is not set
-CONFIG_USB_CYTHERM=m
-# CONFIG_USB_PHIDGET is not set
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_FTDI_ELAN is not set
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=m
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-# CONFIG_USB_MIDI_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_V3020 is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
-# CONFIG_GFS2_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_LZO=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_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_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-CONFIG_NFSD_V4=y
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_WEAK_PW_HASH is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_DEBUG2 is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-CONFIG_PROFILING=y
-CONFIG_OPROFILE=m
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SHIRQ is not set
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
-# 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_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING 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
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_MANAGER=y
-CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_XCBC is not set
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_PCBC=m
-# CONFIG_CRYPTO_LRW 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
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_LZO is not set
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_CAMELLIA is not set
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_LZO=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_SHARPSL_RC=m \ No newline at end of file
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-tosa b/packages/linux/linux-rp-2.6.21/defconfig-tosa
deleted file mode 100644
index 392acf47e9..0000000000
--- a/packages/linux/linux-rp-2.6.21/defconfig-tosa
+++ /dev/null
@@ -1,1613 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5-git5
-# Tue Mar 14 09:05:26 2006
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EMBEDDED=y
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-CONFIG_ARCH_PXA=y
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-CONFIG_PXA_SHARPSL=y
-# CONFIG_MACH_HX2750 is not set
-CONFIG_PXA_SHARPSL_25x=y
-# CONFIG_PXA_SHARPSL_27x is not set
-# CONFIG_MACH_POODLE is not set
-# CONFIG_MACH_CORGI is not set
-# CONFIG_MACH_SHEPHERD is not set
-# CONFIG_MACH_HUSKY is not set
-CONFIG_MACH_TOSA=y
-CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
-CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
-CONFIG_SHARP_SCOOP=y
-CONFIG_TOSHIBA_TC6393XB=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-CONFIG_PCMCIA_LOAD_CIS=y
-CONFIG_PCMCIA_IOCTL=y
-
-#
-# PC-card bridges
-#
-CONFIG_PCMCIA_PXA2XX=y
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=m
-CONFIG_CPU_FREQ_GOV_USERSPACE=m
-CONFIG_CPU_FREQ_GOV_ONDEMAND=m
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
-CONFIG_CPU_FREQ_PXA25x=y
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
-# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-CONFIG_IPV6=m
-# CONFIG_IPV6_PRIVACY is not set
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_INET6_TUNNEL=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# Core Netfilter Configuration
-#
-# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-CONFIG_IP_NF_QUEUE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-# CONFIG_IRDA_ULTRA is not set
-
-#
-# IrDA options
-#
-# CONFIG_IRDA_CACHE_LAST_LSAP is not set
-# CONFIG_IRDA_FAST_RR is not set
-# CONFIG_IRDA_DEBUG is not set
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-# CONFIG_IRTTY_SIR is not set
-
-#
-# Dongle support
-#
-
-#
-# Old SIR device drivers
-#
-# CONFIG_IRPORT_SIR is not set
-
-#
-# Old Serial dongle support
-#
-
-#
-# FIR device drivers
-#
-# CONFIG_USB_IRDA is not set
-# CONFIG_SIGMATEL_FIR is not set
-CONFIG_PXA_FICP=m
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-CONFIG_BT_HCIUSB=m
-# CONFIG_BT_HCIUSB_SCO is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-CONFIG_IEEE80211_CRYPT_TKIP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=y
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_SHARP_SL=y
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_VERIFY_WRITE=y
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_TMIO=y
-CONFIG_MTD_NAND_IDS=y
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-# CONFIG_CDROM_PKTCDVD is not set
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=m
-CONFIG_SCSI_PROC_FS=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=m
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=m
-# CONFIG_CHR_DEV_SCH is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-CONFIG_SCSI_MULTI_LUN=y
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI Transport Attributes
-#
-# CONFIG_SCSI_SPI_ATTRS is not set
-# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
-# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
-
-#
-# PHY device support
-#
-# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
-# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_CORGI is not set
-# CONFIG_KEYBOARD_SPITZ is not set
-CONFIG_KEYBOARD_TOSA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_CORGI is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_WM97XX=y
-# CONFIG_TOUCHSCREEN_WM9705 is not set
-CONFIG_TOUCHSCREEN_WM9712=y
-# CONFIG_TOUCHSCREEN_WM9713 is not set
-# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_CARDMAN_4000 is not set
-# CONFIG_CARDMAN_4040 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-# CONFIG_SPI is not set
-# CONFIG_SPI_MASTER is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# Multi-Function Devices
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TOSA=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
-CONFIG_VIDEO_V4L2=y
-
-#
-# Video For Linux
-#
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_EM28XX is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_PXA is not set
-# CONFIG_FB_W100 is not set
-CONFIG_FB_TMIO=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
-CONFIG_SND_HWDEP=m
-CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_DYNAMIC_MINORS is not set
-CONFIG_SND_SUPPORT_OLD_API=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-CONFIG_SND_AC97_BUS=y
-CONFIG_SND_DUMMY=m
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-CONFIG_SND_USB_AUDIO=m
-
-#
-# PCMCIA devices
-#
-
-#
-# SoC audio support
-#
-CONFIG_SND_SOC=y
-
-#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=y
-CONFIG_SND_PXA2xx_SOC_AC97=y
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_TOSA=y
-
-#
-# Soc Codecs
-#
-# CONFIG_SND_SOC_AC97_CODEC is not set
-# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-CONFIG_SND_SOC_WM9712=y
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-
-#
-# USB Device Class drivers
-#
-# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-CONFIG_USB_STORAGE=m
-# CONFIG_USB_STORAGE_DEBUG is not set
-# CONFIG_USB_STORAGE_DATAFAB is not set
-# CONFIG_USB_STORAGE_FREECOM is not set
-# CONFIG_USB_STORAGE_ISD200 is not set
-# CONFIG_USB_STORAGE_DPCM is not set
-# CONFIG_USB_STORAGE_USBAT is not set
-# CONFIG_USB_STORAGE_SDDR09 is not set
-# CONFIG_USB_STORAGE_SDDR55 is not set
-# CONFIG_USB_STORAGE_JUMPSHOT is not set
-# CONFIG_USB_STORAGE_ALAUDA is not set
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-CONFIG_USB_MTOUCH=m
-# CONFIG_USB_ITMTOUCH is not set
-CONFIG_USB_EGALAX=m
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-
-#
-# USB Multimedia devices
-#
-CONFIG_USB_DABUSB=m
-CONFIG_USB_VICAM=m
-CONFIG_USB_DSBR=m
-# CONFIG_USB_ET61X251 is not set
-CONFIG_USB_IBMCAM=m
-CONFIG_USB_KONICAWC=m
-CONFIG_USB_OV511=m
-CONFIG_USB_SE401=m
-CONFIG_USB_SN9C102=m
-CONFIG_USB_STV680=m
-# CONFIG_USB_PWC is not set
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-# CONFIG_USB_NET_ZAURUS is not set
-# CONFIG_USB_ZD1201 is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
-CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_WHITEHEAT is not set
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_HP4X is not set
-CONFIG_USB_SERIAL_SAFE=m
-# CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_XIRCOM=m
-# CONFIG_USB_SERIAL_OPTION is not set
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EZUSB=y
-
-#
-# USB Miscellaneous drivers
-#
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_AUERSWALD=m
-CONFIG_USB_RIO500=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TEST is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_PXA2XX=y
-CONFIG_USB_PXA2XX=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_ETH_RNDIS=y
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_FILE_STORAGE=m
-# CONFIG_USB_FILE_STORAGE_TEST is not set
-CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_OCFS2_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-CONFIG_FUSE_FS=m
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
-# CONFIG_CONFIGFS_FS is not set
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-CONFIG_CRAMFS=m
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_SMB_NLS_REMOTE="cp437"
-CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
-# CONFIG_CIFS_XATTR is not set
-# CONFIG_CIFS_EXPERIMENTAL is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_TIMER_STATS=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_FORCED_INLINING is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_GENERIC_ALLOCATOR=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.21/hostap-monitor-mode.patch b/packages/linux/linux-rp-2.6.21/hostap-monitor-mode.patch
deleted file mode 100644
index 641fd19e50..0000000000
--- a/packages/linux/linux-rp-2.6.21/hostap-monitor-mode.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-This is a patch that I've been maintaining for a few years, and I'd
-really like to see it added to the mainstream zaurus kernel so I can
-finally stop distributing my own.
-
-This patch only effects the card while in monitor mode, and does not
-cause any known stability issues.
-
-http://patches.aircrack-ng.org/hostap-kernel-2.6.18.patch
-
-Rick Farina (Zero_Chaos)
-
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:30:18.000000000 -0400
-@@ -69,6 +69,9 @@
- iface = netdev_priv(dev);
- local = iface->local;
-
-+ if (local->iw_mode == IW_MODE_MONITOR)
-+ goto xmit;
-+
- if (skb->len < ETH_HLEN) {
- printk(KERN_DEBUG "%s: hostap_data_start_xmit: short skb "
- "(len=%d)\n", dev->name, skb->len);
-@@ -234,6 +237,7 @@
- memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN);
- }
-
-+xmit:
- iface->stats.tx_packets++;
- iface->stats.tx_bytes += skb->len;
-
-@@ -404,8 +408,6 @@
- }
-
- if (skb->len < 24) {
-- printk(KERN_DEBUG "%s: hostap_master_start_xmit: short skb "
-- "(len=%d)\n", dev->name, skb->len);
- ret = 0;
- iface->stats.tx_dropped++;
- goto fail;
-Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.orig
-Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.rej
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:30:18.000000000 -0400
-@@ -1005,6 +1005,35 @@
- return fid;
- }
-
-+static int prism2_monitor_enable(struct net_device *dev)
-+{
-+ if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE, 5)) {
-+ printk(KERN_DEBUG "Port type setting for monitor mode "
-+ "failed\n");
-+ return -EOPNOTSUPP;
-+ }
-+
-+ if (hfa384x_cmd(dev, HFA384X_CMDCODE_TEST | (0x0a << 8),
-+ 0, NULL, NULL)) {
-+ printk(KERN_DEBUG "Could not enter testmode 0x0a\n");
-+ return -EOPNOTSUPP;
-+ }
-+
-+ if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
-+ HFA384X_WEPFLAGS_PRIVACYINVOKED |
-+ HFA384X_WEPFLAGS_HOSTENCRYPT |
-+ HFA384X_WEPFLAGS_HOSTDECRYPT)) {
-+ printk(KERN_DEBUG "WEP flags setting failed\n");
-+ return -EOPNOTSUPP;
-+ }
-+
-+ if (hostap_set_word(dev, HFA384X_RID_PROMISCUOUSMODE, 1)) {
-+ printk(KERN_DEBUG "Could not set promiscuous mode\n");
-+ return -EOPNOTSUPP;
-+ }
-+
-+ return 0;
-+}
-
- static int prism2_reset_port(struct net_device *dev)
- {
-@@ -1031,6 +1060,10 @@
- "port\n", dev->name);
- }
-
-+ if (local->iw_mode == IW_MODE_MONITOR)
-+ /* force mode 0x0a after port 0 reset */
-+ return prism2_monitor_enable(dev);
-+
- /* It looks like at least some STA firmware versions reset
- * fragmentation threshold back to 2346 after enable command. Restore
- * the configured value, if it differs from this default. */
-@@ -1466,6 +1499,10 @@
- return 1;
- }
-
-+ if (local->iw_mode == IW_MODE_MONITOR)
-+ /* force mode 0x0a after port 0 reset */
-+ prism2_monitor_enable(dev);
-+
- local->hw_ready = 1;
- local->hw_reset_tries = 0;
- local->hw_resetting = 0;
-@@ -3156,6 +3193,7 @@
- local->func->hw_config = prism2_hw_config;
- local->func->hw_reset = prism2_hw_reset;
- local->func->hw_shutdown = prism2_hw_shutdown;
-+ local->func->monitor_enable = prism2_monitor_enable;
- local->func->reset_port = prism2_reset_port;
- local->func->schedule_reset = prism2_schedule_reset;
- #ifdef PRISM2_DOWNLOAD_SUPPORT
-Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_hw.c.orig
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:30:18.000000000 -0400
-@@ -1104,33 +1104,7 @@
-
- printk(KERN_DEBUG "Enabling monitor mode\n");
- hostap_monitor_set_type(local);
--
-- if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE,
-- HFA384X_PORTTYPE_PSEUDO_IBSS)) {
-- printk(KERN_DEBUG "Port type setting for monitor mode "
-- "failed\n");
-- return -EOPNOTSUPP;
-- }
--
-- /* Host decrypt is needed to get the IV and ICV fields;
-- * however, monitor mode seems to remove WEP flag from frame
-- * control field */
-- if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
-- HFA384X_WEPFLAGS_HOSTENCRYPT |
-- HFA384X_WEPFLAGS_HOSTDECRYPT)) {
-- printk(KERN_DEBUG "WEP flags setting failed\n");
-- return -EOPNOTSUPP;
-- }
--
-- if (local->func->reset_port(dev) ||
-- local->func->cmd(dev, HFA384X_CMDCODE_TEST |
-- (HFA384X_TEST_MONITOR << 8),
-- 0, NULL, NULL)) {
-- printk(KERN_DEBUG "Setting monitor mode failed\n");
-- return -EOPNOTSUPP;
-- }
--
-- return 0;
-+ return local->func->reset_port(dev);
- }
-
-
-@@ -1199,7 +1173,7 @@
- local->iw_mode = *mode;
-
- if (local->iw_mode == IW_MODE_MONITOR)
-- hostap_monitor_mode_enable(local);
-+ return hostap_monitor_mode_enable(local);
- else if (local->iw_mode == IW_MODE_MASTER && !local->host_encrypt &&
- !local->fw_encrypt_ok) {
- printk(KERN_DEBUG "%s: defaulting to host-based encryption as "
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:30:18.000000000 -0400
-@@ -331,7 +331,7 @@
- if (local->iw_mode == IW_MODE_REPEAT)
- return HFA384X_PORTTYPE_WDS;
- if (local->iw_mode == IW_MODE_MONITOR)
-- return HFA384X_PORTTYPE_PSEUDO_IBSS;
-+ return 5; /*HFA384X_PORTTYPE_PSEUDO_IBSS;*/
- return HFA384X_PORTTYPE_HOSTAP;
- }
-
-Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_main.c.orig
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:30:18.000000000 -0400
-@@ -48,6 +48,8 @@
- { 0x1260, 0x3873, PCI_ANY_ID, PCI_ANY_ID },
- /* Samsung MagicLAN SWL-2210P */
- { 0x167d, 0xa000, PCI_ANY_ID, PCI_ANY_ID },
-+ /* NETGEAR MA311 */
-+ { 0x1385, 0x3872, PCI_ANY_ID, PCI_ANY_ID },
- { 0 }
- };
-
-Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_pci.c.orig
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:30:18.000000000 -0400
-@@ -101,6 +101,7 @@
- { 0xc250, 0x0002 } /* EMTAC A2424i */,
- { 0xd601, 0x0002 } /* Z-Com XI300 */,
- { 0xd601, 0x0005 } /* Zcomax XI-325H 200mW */,
-+ { 0xd601, 0x0010 } /* Zcomax XI-325H 100mW */,
- { 0, 0}
- };
-
-Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_plx.c.orig
-diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h
---- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:26:27.000000000 -0400
-+++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:30:18.000000000 -0400
-@@ -575,6 +575,7 @@
- int (*hw_config)(struct net_device *dev, int initial);
- void (*hw_reset)(struct net_device *dev);
- void (*hw_shutdown)(struct net_device *dev, int no_disable);
-+ int (*monitor_enable)(struct net_device *dev);
- int (*reset_port)(struct net_device *dev);
- void (*schedule_reset)(local_info_t *local);
- int (*download)(local_info_t *local,
diff --git a/packages/linux/linux-rp-2.6.21/orinoco-remove-all-which-are-in-hostap-HACK.patch b/packages/linux/linux-rp-2.6.21/orinoco-remove-all-which-are-in-hostap-HACK.patch
deleted file mode 100644
index 380349f809..0000000000
--- a/packages/linux/linux-rp-2.6.21/orinoco-remove-all-which-are-in-hostap-HACK.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-This patch should resolve problem when people get eth0 (orinoco_cs) instead of wlan0 (hostap_cs)
-with their WiFi cards.
-
-Patch will NEVER been accepted upstream.
-
-Signed-off-by: Marcin Juszkiewicz <openembedded@hrw.one.pl>
-
-Index: linux/drivers/net/wireless/orinoco_cs.c
-===================================================================
---- linux.orig/drivers/net/wireless/orinoco_cs.c 2006-08-23 16:04:10.000000000 +0200
-+++ linux/drivers/net/wireless/orinoco_cs.c 2006-08-23 16:17:43.000000000 +0200
-@@ -453,33 +453,21 @@
- "Pavel Roskin <proski@gnu.org>, et al)";
-
- static struct pcmcia_device_id orinoco_cs_ids[] = {
-- PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), /* SonicWALL Long Range Wireless Card */
-- PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), /* Sohoware NCP110, Philips 802.11b */
- PCMCIA_DEVICE_MANF_CARD(0x0089, 0x0002), /* AnyPoint(TM) Wireless II PC Card */
-- PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), /* 3Com AirConnect PCI 777A */
-- PCMCIA_DEVICE_MANF_CARD(0x0126, 0x8000), /* PROXIM RangeLAN-DS/LAN PC CARD */
- PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002), /* Compaq WL100 11 Mbps Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), /* Lucent Orinoco and old Intersil */
- PCMCIA_DEVICE_MANF_CARD(0x016b, 0x0001), /* Ericsson WLAN Card C11 */
- PCMCIA_DEVICE_MANF_CARD(0x01eb, 0x080a), /* Nortel Networks eMobility 802.11 Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x01ff, 0x0008), /* Intermec MobileLAN 11Mbps 802.11b WLAN Card */
-- PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), /* Samsung SWL2000-N 11Mb/s WLAN Card */
- PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */
- PCMCIA_DEVICE_MANF_CARD(0x0268, 0x0001), /* ARtem Onair */
- PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0305), /* Buffalo WLI-PCM-S11 */
-- PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), /* Linksys WPC11 Version 2.5 */
-- PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), /* Linksys WPC11 Version 3 */
-- PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0002), /* Compaq HNW-100 11 Mbps Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), /* Linksys WCF12 Wireless CompactFlash Card */
-- PCMCIA_DEVICE_MANF_CARD(0x02aa, 0x0002), /* ASUS SpaceLink WL-100 */
- PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x0002), /* SpeedStream SS1021 Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x14ea, 0xb001), /* PLANEX RoadLannerWave GW-NS11H */
-- PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), /* Airvast WN-100 */
- PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), /* Adaptec Ultra Wireless ANW-8030 */
- PCMCIA_DEVICE_MANF_CARD(0xc001, 0x0008), /* CONTEC FLEXSCAN/FX-DDS110-PCC */
- PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002), /* Conceptronic CON11Cpro, EMTAC A2424i */
-- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), /* Safeway 802.11b, ZCOMAX AirRunner/XI-300 */
-- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), /* D-Link DCF660, Sandisk Connect SDWCFB-000 */
- PCMCIA_DEVICE_PROD_ID12(" ", "IEEE 802.11 Wireless LAN/PC Card", 0x3b6e20c8, 0xefccafe9),
- PCMCIA_DEVICE_PROD_ID12("3Com", "3CRWE737A AirConnect Wireless LAN PC Card", 0x41240e5b, 0x56010af3),
- PCMCIA_DEVICE_PROD_ID12("ACTIONTEC", "PRISM Wireless LAN PC Card", 0x393089da, 0xa71e69d5),
-@@ -487,31 +475,25 @@
- PCMCIA_DEVICE_PROD_ID123("AIRVAST", "IEEE 802.11b Wireless PCMCIA Card", "HFA3863", 0xea569531, 0x4bcb9645, 0x355cb092),
- PCMCIA_DEVICE_PROD_ID12("Allied Telesyn", "AT-WCL452 Wireless PCMCIA Radio", 0x5cd01705, 0x4271660f),
- PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11b_PC_CARD_25", 0x78fc06ee, 0xdb9aa842),
-- PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11B_CF_CARD_25", 0x78fc06ee, 0x45a50c1e),
- PCMCIA_DEVICE_PROD_ID12("Avaya Communication", "Avaya Wireless PC Card", 0xd8a43b78, 0x0d341169),
- PCMCIA_DEVICE_PROD_ID12("BENQ", "AWL100 PCMCIA ADAPTER", 0x35dadc74, 0x01f7fedb),
- PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-PCM-L11G", 0x2decece3, 0xf57ca4b3),
-- PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-CF-S11G", 0x2decece3, 0x82067c18),
- PCMCIA_DEVICE_PROD_ID12("Cabletron", "RoamAbout 802.11 DS", 0x32d445f5, 0xedeffd90),
-- PCMCIA_DEVICE_PROD_ID12("Compaq", "WL200_11Mbps_Wireless_PCI_Card", 0x54f7c49c, 0x15a75e5b),
- PCMCIA_DEVICE_PROD_ID123("corega", "WL PCCL-11", "ISL37300P", 0x0a21501a, 0x59868926, 0xc9049a39),
- PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCC-11", 0x5261440f, 0xa6405584),
- PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCCA-11", 0x5261440f, 0xdf6115f9),
- PCMCIA_DEVICE_PROD_ID12("corega_K.K.", "Wireless_LAN_PCCB-11", 0x29e33311, 0xee7a27ae),
- PCMCIA_DEVICE_PROD_ID12("D", "Link DRC-650 11Mbps WLAN Card", 0x71b18589, 0xf144e3ac),
-- PCMCIA_DEVICE_PROD_ID12("D", "Link DWL-650 11Mbps WLAN Card", 0x71b18589, 0xb6f1b0ab),
- PCMCIA_DEVICE_PROD_ID12("D-Link Corporation", "D-Link DWL-650H 11Mbps WLAN Adapter", 0xef544d24, 0xcd8ea916),
- PCMCIA_DEVICE_PROD_ID12("Digital Data Communications", "WPC-0100", 0xfdd73470, 0xe0b6f146),
- PCMCIA_DEVICE_PROD_ID12("ELSA", "AirLancer MC-11", 0x4507a33a, 0xef54f0e3),
- PCMCIA_DEVICE_PROD_ID12("HyperLink", "Wireless PC Card 11Mbps", 0x56cc3f1a, 0x0bcf220c),
- PCMCIA_DEVICE_PROD_ID123("Instant Wireless ", " Network PC CARD", "Version 01.02", 0x11d901af, 0x6e9bd926, 0x4b74baa0),
- PCMCIA_DEVICE_PROD_ID12("Intel", "PRO/Wireless 2011 LAN PC Card", 0x816cc815, 0x07f58077),
-- PCMCIA_DEVICE_PROD_ID12("INTERSIL", "HFA384x/IEEE", 0x74c5e40d, 0xdb472a18),
- PCMCIA_DEVICE_PROD_ID12("INTERSIL", "I-GATE 11M PC Card / PC Card plus", 0x74c5e40d, 0x8304ff77),
- PCMCIA_DEVICE_PROD_ID12("Intersil", "PRISM 2_5 PCMCIA ADAPTER", 0x4b801a17, 0x6345a0bf),
- PCMCIA_DEVICE_PROD_ID123("Intersil", "PRISM Freedom PCMCIA Adapter", "ISL37100P", 0x4b801a17, 0xf222ec2d, 0x630d52b2),
- PCMCIA_DEVICE_PROD_ID12("LeArtery", "SYNCBYAIR 11Mbps Wireless LAN PC Card", 0x7e3b326a, 0x49893e92),
-- PCMCIA_DEVICE_PROD_ID12("Linksys", "Wireless CompactFlash Card", 0x0733cc81, 0x0c52f395),
- PCMCIA_DEVICE_PROD_ID12("Lucent Technologies", "WaveLAN/IEEE", 0x23eb9949, 0xc562e72a),
- PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11", 0x481e0094, 0x7360e410),
- PCMCIA_DEVICE_PROD_ID12("MELCO", "WLI-PCM-L11G", 0x481e0094, 0xf57ca4b3),
-@@ -529,10 +511,8 @@
- PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PCI CARD HARMONY 80211B", 0xc6536a5e, 0x9f494e26),
- PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "11Mbps WLAN Card", 0x43d74cb4, 0x579bd91b),
- PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2532W-B EliteConnect Wireless Adapter", 0xc4f8b18b, 0x196bd757),
-- PCMCIA_DEVICE_PROD_ID12("SMC", "SMC2632W", 0xc4f8b18b, 0x474a1f2a),
- PCMCIA_DEVICE_PROD_ID12("Symbol Technologies", "LA4111 Spectrum24 Wireless LAN PC Card", 0x3f02b4d6, 0x3663cb0e),
- PCMCIA_DEVICE_PROD_ID123("The Linksys Group, Inc.", "Instant Wireless Network PC Card", "ISL37300P", 0xa5f472c2, 0x590eb502, 0xc9049a39),
-- PCMCIA_DEVICE_PROD_ID12("ZoomAir 11Mbps High", "Rate wireless Networking", 0x273fe3db, 0x32a1eaee),
- PCMCIA_DEVICE_NULL,
- };
- MODULE_DEVICE_TABLE(pcmcia, orinoco_cs_ids);
diff --git a/packages/linux/linux-rp-2.6.21/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.21/pxa-serial-hack.patch
deleted file mode 100644
index bf20f46a05..0000000000
--- a/packages/linux/linux-rp-2.6.21/pxa-serial-hack.patch
+++ /dev/null
@@ -1,90 +0,0 @@
----
- drivers/serial/8250.c | 5 +++++
- drivers/serial/serial_core.c | 1 +
- drivers/serial/serial_cs.c | 12 +++++++++---
- include/linux/serial_core.h | 1 +
- 4 files changed, 16 insertions(+), 3 deletions(-)
-
-Index: linux-2.6.20/drivers/serial/8250.c
-===================================================================
---- linux-2.6.20.orig/drivers/serial/8250.c 2007-04-27 13:37:26.000000000 +0100
-+++ linux-2.6.20/drivers/serial/8250.c 2007-04-27 13:38:16.000000000 +0100
-@@ -2429,7 +2429,12 @@
- .driver_name = "serial",
- .dev_name = "ttyS",
- .major = TTY_MAJOR,
-+#ifdef CONFIG_SERIAL_PXA
-+ .minor = 64 + 4,
-+ .name_base = 4,
-+#else
- .minor = 64,
-+#endif
- .nr = UART_NR,
- .cons = SERIAL8250_CONSOLE,
- };
-Index: linux-2.6.20/drivers/serial/serial_core.c
-===================================================================
---- linux-2.6.20.orig/drivers/serial/serial_core.c 2007-02-04 18:44:54.000000000 +0000
-+++ linux-2.6.20/drivers/serial/serial_core.c 2007-04-27 13:39:39.000000000 +0100
-@@ -2068,7 +2068,8 @@
- printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n",
- port->dev ? port->dev->bus_id : "",
- port->dev ? ": " : "",
-- drv->dev_name, port->line, address, port->irq, uart_type(port));
-+ drv->dev_name, port->line + drv->name_base, address, port->irq,
-+ uart_type(port));
- }
-
- static void
-@@ -2183,6 +2184,7 @@
- normal->owner = drv->owner;
- normal->driver_name = drv->driver_name;
- normal->name = drv->dev_name;
-+ normal->name_base = drv->name_base;
- normal->major = drv->major;
- normal->minor_start = drv->minor;
- normal->type = TTY_DRIVER_TYPE_SERIAL;
-Index: linux-2.6.20/include/linux/serial_core.h
-===================================================================
---- linux-2.6.20.orig/include/linux/serial_core.h 2007-02-04 18:44:54.000000000 +0000
-+++ linux-2.6.20/include/linux/serial_core.h 2007-04-27 13:37:27.000000000 +0100
-@@ -341,6 +341,7 @@
- struct module *owner;
- const char *driver_name;
- const char *dev_name;
-+ int name_base;
- int major;
- int minor;
- int nr;
-Index: linux-2.6.20/drivers/serial/serial_cs.c
-===================================================================
---- linux-2.6.20.orig/drivers/serial/serial_cs.c 2007-02-04 18:44:54.000000000 +0000
-+++ linux-2.6.20/drivers/serial/serial_cs.c 2007-04-27 13:40:34.000000000 +0100
-@@ -390,7 +390,7 @@
- kio_addr_t iobase, int irq)
- {
- struct uart_port port;
-- int line;
-+ int line, linestart;
-
- memset(&port, 0, sizeof (struct uart_port));
- port.iobase = iobase;
-@@ -411,10 +411,16 @@
- return -EINVAL;
- }
-
-+#if CONFIG_SERIAL_PXA
-+ linestart = 4;
-+#else
-+ linestart = 0;
-+#endif
-+
- info->line[info->ndev] = line;
-- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
-+ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
- info->node[info->ndev].major = TTY_MAJOR;
-- info->node[info->ndev].minor = 0x40 + line;
-+ info->node[info->ndev].minor = 0x40 + line + linestart;
- if (info->ndev > 0)
- info->node[info->ndev - 1].next = &info->node[info->ndev];
- info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.21/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.21/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
deleted file mode 100644
index 18bf4268fc..0000000000
--- a/packages/linux/linux-rp-2.6.21/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-
-From: Petr Vandrovec <vandrove@vc.cvut.cz>
-
-Patch below adds support for using different prescaler than 16 for 16c950
-chips. This is needed for using Fujitsu-Siemens Connect2Air compact-flash
-card, which comes (apparently) with 806kHz clocks, and so you have to
-program prescaler for division by 7, and DLAB to 1, to get 115200Bd.
-
-To get card properly running you also have to add lines below to
-/etc/pcmcia/serial.opts so kernel knows that base speed is not 115200 but
-50400 (50400 * 16 = 806400; 806400 / 7 = 115200). As I've found no code
-specifying baud_rate in serial_cs, I assume that specifying it in
-serial.opts is right way to do this type of things.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER maximum possible
-baud rate passed to uart code was uartclk / 16 while correct value for
-these devices (and for 16c950) is uartclk / 4.
-
-Patch also fixes problem that for UPF_MAGIC_MULTIPLIER devices with
-baud_rate 19200 or 9600 spd_cust did not work correctly. Not that such
-devices exist, but we should not ignore spd_cust, user probably knows why
-he asked for spd_cust.
-
-serial.opts:
-
-case "$MANFID-$FUNCID-$PRODID_1-$PRODID_2-$PRODID_3-$PRODID_4" in
-'0279,950b-2-GPRS Modem---')
- SERIAL_OPTS="baud_base 50400"
- ;;
-esac
-
-Cc: David Woodhouse <dwmw2@infradead.org>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
----
-
- drivers/serial/8250.c | 82 +++++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 64 insertions(+), 18 deletions(-)
-
-diff -puN drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver drivers/serial/8250.c
---- devel/drivers/serial/8250.c~serial-add-support-for-non-standard-xtals-to-16c950-driver 2005-09-12 03:34:57.000000000 -0700
-+++ devel-akpm/drivers/serial/8250.c 2005-09-12 03:34:57.000000000 -0700
-@@ -1653,24 +1653,58 @@ static void serial8250_shutdown(struct u
- serial_unlink_irq_chain(up);
- }
-
--static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
-+static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud,
-+ unsigned int *prescaler)
- {
-- unsigned int quot;
--
-- /*
-- * Handle magic divisors for baud rates above baud_base on
-- * SMSC SuperIO chips.
-+ /*
-+ * Use special handling only if user did not supply its own divider.
-+ * spd_cust is defined in terms of baud_base, so always use default
-+ * prescaler when spd_cust is requested.
- */
-- if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/4))
-- quot = 0x8001;
-- else if ((port->flags & UPF_MAGIC_MULTIPLIER) &&
-- baud == (port->uartclk/8))
-- quot = 0x8002;
-- else
-- quot = uart_get_divisor(port, baud);
-
-- return quot;
-+ *prescaler = 16;
-+ if (baud != 38400 || (port->flags & UPF_SPD_MASK) != UPF_SPD_CUST) {
-+ unsigned int quot = port->uartclk / baud;
-+
-+ /*
-+ * Handle magic divisors for baud rates above baud_base on
-+ * SMSC SuperIO chips.
-+ */
-+ if (port->flags & UPF_MAGIC_MULTIPLIER) {
-+ if (quot == 4) {
-+ return 0x8001;
-+ } else if (quot == 8) {
-+ return 0x8002;
-+ }
-+ }
-+ if (port->type == PORT_16C950) {
-+ /*
-+ * This computes TCR value (4 to 16), not CPR value (which can
-+ * be between 1.000 and 31.875) - chip I have uses XTAL of
-+ * 806400Hz, and so a division by 7 is required to get 115200Bd.
-+ * I'm leaving CPR disabled for now, until someone will
-+ * hit even more exotic XTAL (it is needed to get 500kbps
-+ * or 1000kbps from 18.432MHz XTAL, but I have no device
-+ * which would benefit from doing that).
-+ *
-+ * If we can use divide by 16, use it. Otherwise look for
-+ * better prescaler, from 15 to 4. If quotient cannot
-+ * be divided by any integer value between 4 and 15, use 4.
-+ */
-+ if (quot & 0x0F) {
-+ unsigned int div;
-+
-+ for (div = 15; div > 4; div--) {
-+ if (quot % div == 0) {
-+ break;
-+ }
-+ }
-+ *prescaler = div;
-+ return quot / div;
-+ }
-+ }
-+ }
-+ return uart_get_divisor(port, baud);
- }
-
- static void
-@@ -1680,7 +1714,7 @@ serial8250_set_termios(struct uart_port
- struct uart_8250_port *up = (struct uart_8250_port *)port;
- unsigned char cval, fcr = 0;
- unsigned long flags;
-- unsigned int baud, quot;
-+ unsigned int baud, quot, prescaler;
-
- switch (termios->c_cflag & CSIZE) {
- case CS5:
-@@ -1712,8 +1746,13 @@ serial8250_set_termios(struct uart_port
- /*
- * Ask the core to calculate the divisor for us.
- */
-- baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-- quot = serial8250_get_divisor(port, baud);
-+
-+ if (port->type == PORT_16C950 || (port->flags & UPF_MAGIC_MULTIPLIER)) {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4);
-+ } else {
-+ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
-+ }
-+ quot = serial8250_get_divisor(port, baud, &prescaler);
-
- /*
- * Oxford Semi 952 rev B workaround
-@@ -1817,6 +1856,13 @@ serial8250_set_termios(struct uart_port
- serial_outp(up, UART_DLM, quot >> 8); /* MS of divisor */
-
- /*
-+ * Program prescaler for 16C950 chips.
-+ */
-+ if (up->port.type == PORT_16C950) {
-+ serial_icr_write(up, UART_TCR, prescaler == 16 ? 0 : prescaler);
-+ }
-+
-+ /*
- * LCR DLAB must be set to enable 64-byte FIFO mode. If the FCR
- * is written without DLAB set, this mode will be disabled.
- */
-_
diff --git a/packages/linux/linux-rp-2.6.21/sharpsl-rc-r1.patch b/packages/linux/linux-rp-2.6.21/sharpsl-rc-r1.patch
deleted file mode 100644
index da83fdf5eb..0000000000
--- a/packages/linux/linux-rp-2.6.21/sharpsl-rc-r1.patch
+++ /dev/null
@@ -1,519 +0,0 @@
-Index: linux-2.6.20/arch/arm/mach-pxa/spitz.c
-===================================================================
---- linux-2.6.20.orig/arch/arm/mach-pxa/spitz.c
-+++ linux-2.6.20/arch/arm/mach-pxa/spitz.c
-@@ -244,6 +244,13 @@ static struct platform_device spitzkbd_d
- .id = -1,
- };
-
-+/*
-+ * Spitz Remote Control Device
-+ */
-+static struct platform_device sharpsl_rc_device = {
-+ .name = "sharpsl-remote-control",
-+ .id = -1,
-+};
-
- /*
- * Spitz LEDs
-@@ -476,6 +483,7 @@ static struct platform_device *devices[]
- &spitzscoop_device,
- &spitzssp_device,
- &spitzkbd_device,
-+ &sharpsl_rc_device,
- &spitzts_device,
- &spitzbl_device,
- &spitzled_device,
-Index: linux-2.6.20/drivers/input/keyboard/Kconfig
-===================================================================
---- linux-2.6.20.orig/drivers/input/keyboard/Kconfig
-+++ linux-2.6.20/drivers/input/keyboard/Kconfig
-@@ -154,6 +154,17 @@ config KEYBOARD_SPITZ
- To compile this driver as a module, choose M here: the
- module will be called spitzkbd.
-
-+config SHARPSL_RC
-+ tristate "Sharp SL-Cxx00 Remote Control"
-+ depends on PXA_SHARPSL
-+ default y
-+ help
-+ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
-+ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called sharpsl_rc.
-+
- config KEYBOARD_AMIGA
- tristate "Amiga keyboard"
- depends on AMIGA
-Index: linux-2.6.20/drivers/input/keyboard/Makefile
-===================================================================
---- linux-2.6.20.orig/drivers/input/keyboard/Makefile
-+++ linux-2.6.20/drivers/input/keyboard/Makefile
-@@ -14,6 +14,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
- obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
- obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
- obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
-+obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
- obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
- obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
- obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
-Index: linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
-===================================================================
---- /dev/null
-+++ linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
-@@ -0,0 +1,291 @@
-+/*
-+ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
-+ *
-+ * Copyright (c) 2004-2005 Richard Purdie
-+ *
-+ * Based on corgikbd.c and Sharp's RC driver
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#define DEBUG 1
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/interrupt.h>
-+#include <linux/jiffies.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+
-+#ifdef CONFIG_MACH_SPITZ
-+#include <asm/arch/spitz.h>
-+#endif
-+#ifdef CONFIG_MACH_CORGI
-+#include <asm/arch/corgi.h>
-+#endif
-+
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/hardware/scoop.h>
-+#include <asm/arch/sharpsl.h>
-+#include <asm/hardware/sharpsl_pm.h>
-+
-+#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
-+
-+struct remote_control_key {
-+ unsigned char min;
-+ unsigned char max;
-+ unsigned char key;
-+};
-+
-+#ifdef CONFIG_MACH_SPITZ
-+#define REMOTE_AKIN_PULLUP SPITZ_SCP2_AKIN_PULLUP
-+#define REMOTE_SCOOP_DEVICE spitzscoop2_device
-+#define REMOTE_GPIO_INT SPITZ_GPIO_AK_INT
-+#define REMOTE_IRQ_INT SPITZ_IRQ_GPIO_AK_INT
-+static struct remote_control_key remote_keys[] = {
-+ { 25, 35, KEY_STOPCD},
-+ { 55, 65, KEY_PLAYPAUSE},
-+ { 85, 95, KEY_NEXTSONG},
-+ { 115, 125, KEY_VOLUMEUP},
-+ { 145, 155, KEY_PREVIOUSSONG},
-+ { 180, 190, KEY_MUTE},
-+ { 215, 225, KEY_VOLUMEDOWN},
-+};
-+#endif
-+#ifdef CONFIG_MACH_CORGI
-+#define REMOTE_AKIN_PULLUP CORGI_SCP_AKIN_PULLUP
-+#define REMOTE_SCOOP_DEVICE corgiscoop_device
-+#define REMOTE_GPIO_INT CORGI_GPIO_AK_INT
-+#define REMOTE_IRQ_INT CORGI_IRQ_GPIO_AK_INT
-+static struct remote_control_key remote_keys[] = {
-+ //These need to be fixed for the CE-RH1's values
-+ { 25, 35, KEY_STOPCD},
-+ { 55, 65, KEY_PLAYPAUSE},
-+ { 85, 95, KEY_NEXTSONG},
-+ { 115, 125, KEY_VOLUMEUP},
-+ { 145, 155, KEY_PREVIOUSSONG},
-+ { 180, 190, KEY_MUTE},
-+ { 215, 225, KEY_VOLUMEDOWN},
-+};
-+#endif
-+
-+#define RELEASE_HI 230
-+#define MAX_EARPHONE 6
-+#define RC_POLL_MS 10
-+#define RC_FINISH_MS 500
-+#define WAIT_STATE 3
-+#define NOISE_THRESHOLD 100
-+
-+struct sharpsl_rc {
-+ struct input_dev *input;
-+ struct device *dev;
-+
-+ spinlock_t lock;
-+ struct timer_list rctimer;
-+ struct timer_list rctimer_finish;
-+
-+ unsigned int handling_press;
-+ unsigned int noise;
-+ unsigned int state;
-+ unsigned int last_key;
-+};
-+
-+static int get_remocon_raw(void)
-+{
-+ int i, val;
-+
-+ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
-+ for (i = 0; i < ARRAY_SIZE(remote_keys); ++i) {
-+ if (val >= remote_keys[i].min
-+ && val <= remote_keys[i].max) {
-+ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, remote_keys[i].key);
-+ return remote_keys[i].key;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ struct sharpsl_rc *data = dev_id;
-+ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
-+ if (!data->handling_press) {
-+ DPRINTK("handling interrupt");
-+ data->handling_press = 1;
-+ data->noise = 0;
-+ data->state = 0;
-+ data->last_key = 0;
-+
-+ reset_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
-+
-+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
-+ }
-+ return IRQ_HANDLED;
-+}
-+
-+static void sharpsl_rc_timer_callback(unsigned long dataPtr)
-+{
-+ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
-+ int timer = 1;
-+ int key = get_remocon_raw();
-+ DPRINTK("timer callback, key: %d", key);
-+
-+ //wait for value to stabilize
-+ if (data->state < WAIT_STATE) {
-+ if (data->last_key != key) {
-+ ++data->noise;
-+ if (data->noise > NOISE_THRESHOLD) {
-+ DPRINTK("too much noise, bailing");
-+ timer = 0;
-+ }
-+ data->state = 0;
-+ } else {
-+ ++data->state;
-+ }
-+ data->last_key = key;
-+
-+ //stable value, send event
-+ } else if (data->state == WAIT_STATE) {
-+ data->noise = 0;
-+ //non-key returned, skip the rest of the states and bail now
-+ if (data->last_key == 0) {
-+ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
-+ timer = 0;
-+ //send button press
-+ } else {
-+ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
-+ input_report_key(data->input, data->last_key, 1);
-+ }
-+ ++data->state;
-+
-+ //wait until key is released
-+ } else if (data->state < WAIT_STATE * 2) {
-+ if (key == data->last_key
-+ && data->noise < NOISE_THRESHOLD) {
-+ data->state = WAIT_STATE + 1;
-+ ++data->noise;
-+ } else {
-+ ++data->state;
-+ }
-+ //key is released, send event
-+ } else {
-+ //send button release
-+ DPRINTK("release key %d", data->last_key);
-+ input_report_key(data->input, data->last_key, 0);
-+ timer = 0;
-+ }
-+ if (timer) {
-+ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
-+ } else {
-+ set_scoop_gpio(&REMOTE_SCOOP_DEVICE.dev, REMOTE_AKIN_PULLUP);
-+ data->handling_press = 0;
-+ }
-+}
-+
-+static int __init sharpsl_rc_probe(struct platform_device *pdev)
-+{
-+ struct sharpsl_rc *sharpsl_rc;
-+ struct input_dev *input_dev;
-+ int i, ret;
-+
-+ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
-+
-+ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
-+ input_dev = input_allocate_device();
-+ if (!sharpsl_rc || !input_dev) {
-+ kfree(sharpsl_rc);
-+ input_free_device(input_dev);
-+ return -ENOMEM;
-+ }
-+
-+ platform_set_drvdata(pdev, sharpsl_rc);
-+
-+ sharpsl_rc->dev = &pdev->dev;
-+ sharpsl_rc->input = input_dev;
-+ spin_lock_init(&sharpsl_rc->lock);
-+
-+ /* Init Remote Control Timer */
-+ init_timer(&sharpsl_rc->rctimer);
-+ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
-+ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
-+
-+ input_dev->name = "Sharp Remote Control CE-RHX";
-+ input_dev->phys = "sharpsl_rc/input0";
-+ input_dev->id.bustype = BUS_HOST;
-+ input_dev->id.vendor = 0x0001;
-+ input_dev->id.product = 0x0001;
-+ input_dev->id.version = 0x0100;
-+ input_dev->cdev.dev = &pdev->dev;
-+ input_dev->private = sharpsl_rc;
-+
-+ input_dev->evbit[0] = BIT(EV_KEY);
-+
-+ for (i = 0; i <= ARRAY_SIZE(remote_keys); i++)
-+ set_bit(remote_keys[i].key, input_dev->keybit);
-+
-+ input_register_device(sharpsl_rc->input);
-+
-+ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
-+ ret = request_irq(REMOTE_IRQ_INT,
-+ sharpsl_rc_interrupt,
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
-+ "sharpsl_rc",
-+ sharpsl_rc);
-+ if (ret < 0) {
-+ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
-+ kfree(sharpsl_rc);
-+ input_free_device(input_dev);
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int sharpsl_rc_remove(struct platform_device *pdev)
-+{
-+ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
-+
-+ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
-+
-+ free_irq(REMOTE_IRQ_INT, sharpsl_rc);
-+ del_timer_sync(&sharpsl_rc->rctimer);
-+ input_unregister_device(sharpsl_rc->input);
-+ kfree(sharpsl_rc);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver sharpsl_rc_driver = {
-+ .probe = sharpsl_rc_probe,
-+ .remove = sharpsl_rc_remove,
-+ .suspend = NULL,
-+ .resume = NULL,
-+ .driver = {
-+ .name = "sharpsl-remote-control",
-+ },
-+};
-+
-+static int __devinit sharpsl_rc_init(void)
-+{
-+ printk("sharpsl_rc_init\n");
-+ return platform_driver_register(&sharpsl_rc_driver);
-+}
-+
-+static void __exit sharpsl_rc_exit(void)
-+{
-+ printk("sharpsl_rc_exit\n");
-+ platform_driver_unregister(&sharpsl_rc_driver);
-+}
-+
-+module_init(sharpsl_rc_init);
-+module_exit(sharpsl_rc_exit);
-+
-+MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
-+MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
-+MODULE_DESCRIPTION("SharpSL Remote Control Driver");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6.20/drivers/input/keyboard/spitzkbd.c
-===================================================================
---- linux-2.6.20.orig/drivers/input/keyboard/spitzkbd.c
-+++ linux-2.6.20/drivers/input/keyboard/spitzkbd.c
-@@ -19,6 +19,7 @@
- #include <linux/jiffies.h>
- #include <linux/module.h>
- #include <linux/slab.h>
-+#include <linux/kmod.h>
-
- #include <asm/arch/spitz.h>
- #include <asm/arch/hardware.h>
-@@ -279,13 +280,21 @@ static irqreturn_t spitzkbd_hinge_isr(in
- static int sharpsl_hinge_state;
- static int hinge_count;
-
-+void spitzkbd_handle_sharpsl_rc(void *arg) {
-+ request_module("sharpsl_rc");
-+}
-+
-+DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
-+
- static void spitzkbd_hinge_timer(unsigned long data)
- {
- struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
- unsigned long state;
- unsigned long flags;
-+ unsigned int headphone, remote;
-
- state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
-+ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
- state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
- if (state != sharpsl_hinge_state) {
- hinge_count = 0;
-@@ -299,9 +308,18 @@ static void spitzkbd_hinge_timer(unsigne
-
- input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
- input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
-- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
-+
-+ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
-+ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
-+
-+ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
-+ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
- input_sync(spitzkbd_data->input);
-
-+ if (remote) {
-+ schedule_work(&spitzkbd_work);
-+ }
-+
- spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
- } else {
- mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
-@@ -394,6 +412,7 @@ static int __init spitzkbd_probe(struct
- set_bit(SW_LID, input_dev->swbit);
- set_bit(SW_TABLET_MODE, input_dev->swbit);
- set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
-+ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
-
- err = input_register_device(input_dev);
- if (err)
-@@ -431,9 +450,12 @@ static int __init spitzkbd_probe(struct
- request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
- IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
- "Spitzkbd SWB", spitzkbd);
-- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
-+ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
- IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
- "Spitzkbd HP", spitzkbd);
-+ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
-+ "Spitzkbd HP Type", spitzkbd);
-
- return 0;
-
-@@ -454,6 +476,7 @@ static int spitzkbd_remove(struct platfo
- free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
- free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
- free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
-+ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
- free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
-
- del_timer_sync(&spitzkbd->htimer);
-Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
-===================================================================
---- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl.h
-+++ linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
-@@ -50,15 +50,10 @@ void spitz_wait_hsync(void);
-
- #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
-
--/* MAX1111 Channel Definitions */
--#define MAX1111_BATT_VOLT 4u
--#define MAX1111_BATT_TEMP 2u
--#define MAX1111_ACIN_VOLT 6u
--
- extern struct battery_thresh spitz_battery_levels_acin[];
- extern struct battery_thresh spitz_battery_levels_noac[];
- void sharpsl_pm_pxa_init(void);
- void sharpsl_pm_pxa_remove(void);
--int sharpsl_pm_pxa_read_max1111(int channel);
-+
-
-
-Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
-===================================================================
---- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl_pm.c
-+++ linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
-@@ -135,6 +135,8 @@ int sharpsl_pm_pxa_read_max1111(int chan
- | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
- }
-
-+EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
-+
- void sharpsl_pm_pxa_init(void)
- {
- pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
-Index: linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
-===================================================================
---- linux-2.6.20.orig/include/asm-arm/hardware/sharpsl_pm.h
-+++ linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
-@@ -104,3 +104,10 @@ irqreturn_t sharpsl_ac_isr(int irq, void
- irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
- irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
-
-+/* MAX1111 Channel Definitions */
-+#define MAX1111_REMCOM 0u
-+#define MAX1111_BATT_VOLT 4u
-+#define MAX1111_BATT_TEMP 2u
-+#define MAX1111_ACIN_VOLT 6u
-+
-+int sharpsl_pm_pxa_read_max1111(int channel);
-Index: linux-2.6.20/include/linux/input.h
-===================================================================
---- linux-2.6.20.orig/include/linux/input.h
-+++ linux-2.6.20/include/linux/input.h
-@@ -602,6 +602,7 @@ struct input_absinfo {
- #define SW_LID 0x00 /* set = lid shut */
- #define SW_TABLET_MODE 0x01 /* set = tablet mode */
- #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
-+#define SW_REMOTE_INSERT 0x04 /* set = remote */
- #define SW_MAX 0x0f
-
- /*
-Index: linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
-===================================================================
---- linux-2.6.20.orig/arch/arm/mach-pxa/spitz_pm.c
-+++ linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
-@@ -161,6 +161,13 @@ static int spitz_should_wakeup(unsigned
- if (resume_on_alarm && (PEDR & PWER_RTC))
- is_resume |= PWER_RTC;
-
-+ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
-+
-+ //remote/headphone interrupt, wakeup
-+ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
-+ is_resume |= PWER_RTC;
-+ }
-+
- dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
- return is_resume;
- }
diff --git a/packages/linux/linux-rp-2.6.21/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.21/squashfs3.0-2.6.15.patch
deleted file mode 100644
index 405d4ec124..0000000000
--- a/packages/linux/linux-rp-2.6.21/squashfs3.0-2.6.15.patch
+++ /dev/null
@@ -1,4191 +0,0 @@
- fs/Kconfig | 65 +
- fs/Makefile | 1
- fs/squashfs/Makefile | 7
- fs/squashfs/inode.c | 2124 +++++++++++++++++++++++++++++++++++++++++
- fs/squashfs/squashfs.h | 86 +
- fs/squashfs/squashfs2_0.c | 757 ++++++++++++++
- include/linux/squashfs_fs.h | 911 +++++++++++++++++
- include/linux/squashfs_fs_i.h | 45
- include/linux/squashfs_fs_sb.h | 74 +
- init/do_mounts_rd.c | 13
- 10 files changed, 4083 insertions(+)
-
-Index: git/fs/Kconfig
-===================================================================
---- git.orig/fs/Kconfig 2006-10-31 16:09:22.000000000 +0000
-+++ git/fs/Kconfig 2006-10-31 21:26:45.000000000 +0000
-@@ -1407,6 +1407,71 @@ config CRAMFS
-
- If unsure, say N.
-
-+config SQUASHFS
-+ tristate "SquashFS 3.0 - Squashed file system support"
-+ select ZLIB_INFLATE
-+ help
-+ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
-+ System). Squashfs is a highly compressed read-only filesystem for Linux.
-+ It uses zlib compression to compress both files, inodes and directories.
-+ Inodes in the system are very small and all blocks are packed to minimise
-+ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
-+ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
-+ uid/gid information, hard links and timestamps.
-+
-+ Squashfs is intended for general read-only filesystem use, for archival
-+ use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+ systems where low overhead is needed. Further information and filesystem tools
-+ are available from http://squashfs.sourceforge.net.
-+
-+ If you want to compile this as a module ( = code which can be
-+ inserted in and removed from the running kernel whenever you want),
-+ say M here and read <file:Documentation/modules.txt>. The module
-+ will be called squashfs. Note that the root file system (the one
-+ containing the directory /) cannot be compiled as a module.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_EMBEDDED
-+
-+ bool "Additional options for memory-constrained systems"
-+ depends on SQUASHFS
-+ default n
-+ help
-+ Saying Y here allows you to specify cache sizes and how Squashfs
-+ allocates memory. This is only intended for memory constrained
-+ systems.
-+
-+ If unsure, say N.
-+
-+config SQUASHFS_FRAGMENT_CACHE_SIZE
-+ int "Number of fragments cached" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default "3"
-+ help
-+ By default SquashFS caches the last 3 fragments read from
-+ the filesystem. Increasing this amount may mean SquashFS
-+ has to re-read fragments less often from disk, at the expense
-+ of extra system memory. Decreasing this amount will mean
-+ SquashFS uses less memory at the expense of extra reads from disk.
-+
-+ Note there must be at least one cached fragment. Anything
-+ much more than three will probably not make much difference.
-+
-+config SQUASHFS_VMALLOC
-+ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+ depends on SQUASHFS
-+ default n
-+ help
-+ By default SquashFS uses kmalloc to obtain fragment cache memory.
-+ Kmalloc memory is the standard kernel allocator, but it can fail
-+ on memory constrained systems. Because of the way Vmalloc works,
-+ Vmalloc can succeed when kmalloc fails. Specifying this option
-+ will make SquashFS always use Vmalloc to allocate the
-+ fragment cache memory.
-+
-+ If unsure, say N.
-+
- config VXFS_FS
- tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
- depends on BLOCK
-Index: git/fs/Makefile
-===================================================================
---- git.orig/fs/Makefile 2006-10-31 16:09:22.000000000 +0000
-+++ git/fs/Makefile 2006-10-31 21:26:45.000000000 +0000
-@@ -67,6 +67,7 @@ obj-$(CONFIG_JBD) += jbd/
- obj-$(CONFIG_JBD2) += jbd2/
- obj-$(CONFIG_EXT2_FS) += ext2/
- obj-$(CONFIG_CRAMFS) += cramfs/
-+obj-$(CONFIG_SQUASHFS) += squashfs/
- obj-$(CONFIG_RAMFS) += ramfs/
- obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
- obj-$(CONFIG_CODA_FS) += coda/
-Index: git/fs/squashfs/inode.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/inode.c 2006-11-01 18:01:32.000000000 +0000
-@@ -0,0 +1,2124 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * inode.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+
-+static void squashfs_put_super(struct super_block *);
-+static int squashfs_statfs(struct dentry *, struct kstatfs *);
-+static int squashfs_symlink_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
-+static int squashfs_readdir(struct file *, void *, filldir_t);
-+static struct inode *squashfs_alloc_inode(struct super_block *sb);
-+static void squashfs_destroy_inode(struct inode *inode);
-+static int init_inodecache(void);
-+static void destroy_inodecache(void);
-+static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
-+ struct nameidata *);
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize);
-+static int squashfs_get_sb(struct file_system_type *, int,
-+ const char *, void *, struct vfsmount *);
-+
-+
-+static z_stream stream;
-+
-+static struct file_system_type squashfs_fs_type = {
-+ .owner = THIS_MODULE,
-+ .name = "squashfs",
-+ .get_sb = squashfs_get_sb,
-+ .kill_sb = kill_block_super,
-+ .fs_flags = FS_REQUIRES_DEV
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static struct super_operations squashfs_ops = {
-+ .alloc_inode = squashfs_alloc_inode,
-+ .destroy_inode = squashfs_destroy_inode,
-+ .statfs = squashfs_statfs,
-+ .put_super = squashfs_put_super,
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
-+ .readpage = squashfs_symlink_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops = {
-+ .readpage = squashfs_readpage
-+};
-+
-+SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
-+ .readpage = squashfs_readpage4K
-+};
-+
-+static struct file_operations squashfs_dir_ops = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir
-+};
-+
-+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
-+ .lookup = squashfs_lookup
-+};
-+
-+
-+static struct buffer_head *get_block_length(struct super_block *s,
-+ int *cur_index, int *offset, int *c_byte)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned short temp;
-+ struct buffer_head *bh;
-+
-+ if (!(bh = sb_bread(s, *cur_index)))
-+ goto out;
-+
-+ if (msblk->devblksize - *offset == 1) {
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ else
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ if (msblk->swap)
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ bh->b_data);
-+ else
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ bh->b_data);
-+ *c_byte = temp;
-+ *offset = 1;
-+ } else {
-+ if (msblk->swap) {
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ } else {
-+ ((unsigned char *) &temp)[0] = *((unsigned char *)
-+ (bh->b_data + *offset));
-+ ((unsigned char *) &temp)[1] = *((unsigned char *)
-+ (bh->b_data + *offset + 1));
-+ }
-+ *c_byte = temp;
-+ *offset += 2;
-+ }
-+
-+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
-+ if (*offset == msblk->devblksize) {
-+ brelse(bh);
-+ if (!(bh = sb_bread(s, ++(*cur_index))))
-+ goto out;
-+ *offset = 0;
-+ }
-+ if (*((unsigned char *) (bh->b_data + *offset)) !=
-+ SQUASHFS_MARKER_BYTE) {
-+ ERROR("Metadata block marker corrupt @ %x\n",
-+ *cur_index);
-+ brelse(bh);
-+ goto out;
-+ }
-+ (*offset)++;
-+ }
-+ return bh;
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+ msblk->devblksize_log2) + 2];
-+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
-+ unsigned int cur_index = index >> msblk->devblksize_log2;
-+ int bytes, avail_bytes, b = 0, k;
-+ char *c_buffer;
-+ unsigned int compressed;
-+ unsigned int c_byte = length;
-+
-+ if (c_byte) {
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ if (!(bh[0] = sb_getblk(s, cur_index)))
-+ goto block_release;
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b, bh);
-+ } else {
-+ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+ &c_byte)))
-+ goto read_failure;
-+
-+ bytes = msblk->devblksize - offset;
-+ compressed = SQUASHFS_COMPRESSED(c_byte);
-+ c_buffer = compressed ? msblk->read_data : buffer;
-+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
-+
-+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
-+ ? "" : "un", (unsigned int) c_byte);
-+
-+ for (b = 1; bytes < c_byte; b++) {
-+ if (!(bh[b] = sb_getblk(s, ++cur_index)))
-+ goto block_release;
-+ bytes += msblk->devblksize;
-+ }
-+ ll_rw_block(READ, b - 1, bh + 1);
-+ }
-+
-+ if (compressed)
-+ down(&msblk->read_data_mutex);
-+
-+ for (bytes = 0, k = 0; k < b; k++) {
-+ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
-+ msblk->devblksize - offset :
-+ c_byte - bytes;
-+ wait_on_buffer(bh[k]);
-+ if (!buffer_uptodate(bh[k]))
-+ goto block_release;
-+ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
-+ bytes += avail_bytes;
-+ offset = 0;
-+ brelse(bh[k]);
-+ }
-+
-+ /*
-+ * uncompress block
-+ */
-+ if (compressed) {
-+ int zlib_err;
-+
-+ stream.next_in = c_buffer;
-+ stream.avail_in = c_byte;
-+ stream.next_out = buffer;
-+ stream.avail_out = msblk->read_size;
-+
-+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
-+ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
-+ != Z_STREAM_END) || ((zlib_err =
-+ zlib_inflateEnd(&stream)) != Z_OK)) {
-+ ERROR("zlib_fs returned unexpected result 0x%x\n",
-+ zlib_err);
-+ bytes = 0;
-+ } else
-+ bytes = stream.total_out;
-+
-+ up(&msblk->read_data_mutex);
-+ }
-+
-+ if (next_index)
-+ *next_index = index + c_byte + (length ? 0 :
-+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
-+ ? 3 : 2));
-+ return bytes;
-+
-+block_release:
-+ while (--b >= 0)
-+ brelse(bh[b]);
-+
-+read_failure:
-+ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ int n, i, bytes, return_length = length;
-+ long long next_index;
-+
-+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
-+
-+ while ( 1 ) {
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (msblk->block_cache[i].block == block)
-+ break;
-+
-+ down(&msblk->block_cache_mutex);
-+
-+ if (i == SQUASHFS_CACHED_BLKS) {
-+ /* read inode header block */
-+ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
-+ n ; n --, i = (i + 1) %
-+ SQUASHFS_CACHED_BLKS)
-+ if (msblk->block_cache[i].block !=
-+ SQUASHFS_USED_BLK)
-+ break;
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->waitq, &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->block_cache_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->waitq, &wait);
-+ continue;
-+ }
-+ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
-+
-+ if (msblk->block_cache[i].block ==
-+ SQUASHFS_INVALID_BLK) {
-+ if (!(msblk->block_cache[i].data =
-+ kmalloc(SQUASHFS_METADATA_SIZE,
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate cache"
-+ "block\n");
-+ up(&msblk->block_cache_mutex);
-+ goto out;
-+ }
-+ }
-+
-+ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
-+ up(&msblk->block_cache_mutex);
-+
-+ if (!(msblk->block_cache[i].length =
-+ squashfs_read_data(s,
-+ msblk->block_cache[i].data,
-+ block, 0, &next_index))) {
-+ ERROR("Unable to read cache block [%llx:%x]\n",
-+ block, offset);
-+ goto out;
-+ }
-+
-+ down(&msblk->block_cache_mutex);
-+ wake_up(&msblk->waitq);
-+ msblk->block_cache[i].block = block;
-+ msblk->block_cache[i].next_index = next_index;
-+ TRACE("Read cache block [%llx:%x]\n", block, offset);
-+ }
-+
-+ if (msblk->block_cache[i].block != block) {
-+ up(&msblk->block_cache_mutex);
-+ continue;
-+ }
-+
-+ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
-+ if (buffer)
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, length);
-+ if (msblk->block_cache[i].length - offset == length) {
-+ *next_block = msblk->block_cache[i].next_index;
-+ *next_offset = 0;
-+ } else {
-+ *next_block = block;
-+ *next_offset = offset + length;
-+ }
-+ up(&msblk->block_cache_mutex);
-+ goto finish;
-+ } else {
-+ if (buffer) {
-+ memcpy(buffer, msblk->block_cache[i].data +
-+ offset, bytes);
-+ buffer += bytes;
-+ }
-+ block = msblk->block_cache[i].next_index;
-+ up(&msblk->block_cache_mutex);
-+ length -= bytes;
-+ offset = 0;
-+ }
-+ }
-+
-+finish:
-+ return return_length;
-+out:
-+ return 0;
-+}
-+
-+
-+static int get_fragment_location(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
-+ struct squashfs_fragment_entry fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment)
-+{
-+ down(&msblk->fragment_mutex);
-+ fragment->locked --;
-+ wake_up(&msblk->fragment_wait_queue);
-+ up(&msblk->fragment_mutex);
-+}
-+
-+
-+SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length)
-+{
-+ int i, n, nf;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+
-+ while ( 1 ) {
-+ down(&msblk->fragment_mutex);
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
-+ msblk->fragment[i].block != start_block; i++);
-+
-+ if (i == SQUASHFS_CACHED_FRAGMENTS) {
-+ nf = (msblk->next_fragment + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS;
-+ for (i = msblk->next_fragment, n =
-+ SQUASHFS_CACHED_FRAGMENTS; n &&
-+ msblk->fragment[i].locked; n--, i = (i + 1) %
-+ SQUASHFS_CACHED_FRAGMENTS);
-+
-+ if (n == 0) {
-+ wait_queue_t wait;
-+
-+ init_waitqueue_entry(&wait, current);
-+ add_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ set_current_state(TASK_UNINTERRUPTIBLE);
-+ up(&msblk->fragment_mutex);
-+ schedule();
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&msblk->fragment_wait_queue,
-+ &wait);
-+ continue;
-+ }
-+ msblk->next_fragment = nf;
-+
-+ if (msblk->fragment[i].data == NULL)
-+ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
-+ (SQUASHFS_FILE_MAX_SIZE))) {
-+ ERROR("Failed to allocate fragment "
-+ "cache block\n");
-+ up(&msblk->fragment_mutex);
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].locked = 1;
-+ up(&msblk->fragment_mutex);
-+
-+ if (!(msblk->fragment[i].length = squashfs_read_data(s,
-+ msblk->fragment[i].data,
-+ start_block, length, NULL))) {
-+ ERROR("Unable to read fragment cache block "
-+ "[%llx]\n", start_block);
-+ msblk->fragment[i].locked = 0;
-+ goto out;
-+ }
-+
-+ msblk->fragment[i].block = start_block;
-+ TRACE("New fragment %d, start block %lld, locked %d\n",
-+ i, msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ msblk->fragment[i].locked++;
-+ up(&msblk->fragment_mutex);
-+ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
-+ msblk->fragment[i].block,
-+ msblk->fragment[i].locked);
-+ break;
-+ }
-+
-+ return &msblk->fragment[i];
-+
-+out:
-+ return NULL;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header *inodeb)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = inodeb->inode_number;
-+ i->i_mtime.tv_sec = inodeb->mtime;
-+ i->i_atime.tv_sec = inodeb->mtime;
-+ i->i_ctime.tv_sec = inodeb->mtime;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header id, sid;
-+ struct squashfs_base_inode_header *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_reg_inode_header *inodep = &id.reg;
-+ struct squashfs_reg_inode_header *sinodep = &sid.reg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = 1;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_LREG_TYPE: {
-+ unsigned int frag_size;
-+ long long frag_blk;
-+ struct squashfs_lreg_inode_header *inodep = &id.lreg;
-+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %llx, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header *inodep = &id.dir;
-+ struct squashfs_dir_inode_header *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops;
-+ i->i_fop = &squashfs_dir_ops;
-+ i->i_mode |= S_IFDIR;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header *inodep = &id.dev;
-+ struct squashfs_dev_inode_header *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ struct squashfs_ipc_inode_header *inodep = &id.ipc;
-+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_nlink = inodep->nlink;
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int read_fragment_index_table(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ /* Allocate fragment index table */
-+ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ long long fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
-+ &msblk->fragment_index[i], 1);
-+ msblk->fragment_index[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget;
-+ msblk->read_blocklist = read_blocklist;
-+ msblk->read_fragment_index_table = read_fragment_index_table;
-+
-+ if (sblk->s_major == 1) {
-+ if (!squashfs_1_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 1.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if (sblk->s_major == 2) {
-+ if (!squashfs_2_0_supported(msblk)) {
-+ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
-+ "are unsupported\n");
-+ SERROR("Please recompile with "
-+ "Squashfs 2.0 support enabled\n");
-+ return 0;
-+ }
-+ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
-+ SQUASHFS_MINOR) {
-+ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
-+ "filesystem\n", sblk->s_major, sblk->s_minor);
-+ SERROR("Please update your kernel\n");
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int squashfs_fill_super(struct super_block *s, void *data, int silent)
-+{
-+ struct squashfs_sb_info *msblk;
-+ struct squashfs_super_block *sblk;
-+ int i;
-+ char b[BDEVNAME_SIZE];
-+ struct inode *root;
-+
-+ TRACE("Entered squashfs_read_superblock\n");
-+
-+ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
-+ GFP_KERNEL))) {
-+ ERROR("Failed to allocate superblock\n");
-+ goto failure;
-+ }
-+ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
-+ msblk = s->s_fs_info;
-+ sblk = &msblk->sblk;
-+
-+ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
-+ msblk->devblksize_log2 = ffz(~msblk->devblksize);
-+
-+ init_MUTEX(&msblk->read_data_mutex);
-+ init_MUTEX(&msblk->read_page_mutex);
-+ init_MUTEX(&msblk->block_cache_mutex);
-+ init_MUTEX(&msblk->fragment_mutex);
-+ init_MUTEX(&msblk->meta_index_mutex);
-+
-+ init_waitqueue_head(&msblk->waitq);
-+ init_waitqueue_head(&msblk->fragment_wait_queue);
-+
-+ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
-+ sizeof(struct squashfs_super_block) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ SERROR("unable to read superblock\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Check it is a SQUASHFS superblock */
-+ msblk->swap = 0;
-+ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
-+ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
-+ struct squashfs_super_block ssblk;
-+
-+ WARNING("Mounting a different endian SQUASHFS "
-+ "filesystem on %s\n", bdevname(s->s_bdev, b));
-+
-+ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
-+ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
-+ msblk->swap = 1;
-+ } else {
-+ SERROR("Can't find a SQUASHFS superblock on %s\n",
-+ bdevname(s->s_bdev, b));
-+ goto failed_mount;
-+ }
-+ }
-+
-+ /* Check the MAJOR & MINOR versions */
-+ if(!supported_squashfs_filesystem(msblk, silent))
-+ goto failed_mount;
-+
-+ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
-+ TRACE("Inodes are %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_INODES
-+ (sblk->flags) ? "un" : "");
-+ TRACE("Data is %scompressed\n",
-+ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
-+ ? "un" : "");
-+ TRACE("Check data is %s present in the filesystem\n",
-+ SQUASHFS_CHECK_DATA(sblk->flags) ?
-+ "" : "not");
-+ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
-+ TRACE("Block size %d\n", sblk->block_size);
-+ TRACE("Number of inodes %d\n", sblk->inodes);
-+ if (sblk->s_major > 1)
-+ TRACE("Number of fragments %d\n", sblk->fragments);
-+ TRACE("Number of uids %d\n", sblk->no_uids);
-+ TRACE("Number of gids %d\n", sblk->no_guids);
-+ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
-+ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
-+ if (sblk->s_major > 1)
-+ TRACE("sblk->fragment_table_start %llx\n",
-+ sblk->fragment_table_start);
-+ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
-+
-+ s->s_flags |= MS_RDONLY;
-+ s->s_op = &squashfs_ops;
-+
-+ /* Init inode_table block pointer array */
-+ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
-+ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
-+
-+ msblk->next_cache = 0;
-+
-+ /* Allocate read_data block */
-+ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
-+ SQUASHFS_METADATA_SIZE :
-+ sblk->block_size;
-+
-+ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_data block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate read_page block */
-+ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
-+ ERROR("Failed to allocate read_page block\n");
-+ goto failed_mount;
-+ }
-+
-+ /* Allocate uid and gid tables */
-+ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ goto failed_mount;
-+ }
-+ msblk->guid = msblk->uid + sblk->no_uids;
-+
-+ if (msblk->swap) {
-+ unsigned int suid[sblk->no_uids + sblk->no_guids];
-+
-+ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
-+ sblk->no_guids), (sizeof(unsigned int) * 8));
-+ } else
-+ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
-+ ((sblk->no_uids + sblk->no_guids) *
-+ sizeof(unsigned int)) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read uid/gid table\n");
-+ goto failed_mount;
-+ }
-+
-+
-+ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
-+ goto allocate_root;
-+
-+ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
-+ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
-+ ERROR("Failed to allocate fragment block cache\n");
-+ goto failed_mount;
-+ }
-+
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
-+ msblk->fragment[i].locked = 0;
-+ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
-+ msblk->fragment[i].data = NULL;
-+ }
-+
-+ msblk->next_fragment = 0;
-+
-+ /* Allocate fragment index table */
-+ if (msblk->read_fragment_index_table(s) == 0)
-+ goto failed_mount;
-+
-+allocate_root:
-+ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
-+ goto failed_mount;
-+
-+ if ((s->s_root = d_alloc_root(root)) == NULL) {
-+ ERROR("Root inode create failed\n");
-+ iput(root);
-+ goto failed_mount;
-+ }
-+
-+ TRACE("Leaving squashfs_read_super\n");
-+ return 0;
-+
-+failed_mount:
-+ kfree(msblk->fragment_index);
-+ kfree(msblk->fragment);
-+ kfree(msblk->uid);
-+ kfree(msblk->read_page);
-+ kfree(msblk->read_data);
-+ kfree(msblk->block_cache);
-+ kfree(msblk->fragment_index_2);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ return -EINVAL;
-+
-+failure:
-+ return -ENOMEM;
-+}
-+
-+
-+static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
-+{
-+ struct super_block *s = dentry->d_sb;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ TRACE("Entered squashfs_statfs\n");
-+
-+ buf->f_type = SQUASHFS_MAGIC;
-+ buf->f_bsize = sblk->block_size;
-+ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
-+ buf->f_bfree = buf->f_bavail = 0;
-+ buf->f_files = sblk->inodes;
-+ buf->f_ffree = 0;
-+ buf->f_namelen = SQUASHFS_NAME_LEN;
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_symlink_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
-+ long long block = SQUASHFS_I(inode)->start_block;
-+ int offset = SQUASHFS_I(inode)->offset;
-+ void *pageaddr = kmap(page);
-+
-+ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
-+ "%llx, offset %x\n", page->index,
-+ SQUASHFS_I(inode)->start_block,
-+ SQUASHFS_I(inode)->offset);
-+
-+ for (length = 0; length < index; length += bytes) {
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
-+ block, offset, PAGE_CACHE_SIZE, &block,
-+ &offset))) {
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
-+ offset);
-+ goto skip_read;
-+ }
-+ }
-+
-+ if (length != index) {
-+ ERROR("(squashfs_symlink_readpage) length != index\n");
-+ bytes = 0;
-+ goto skip_read;
-+ }
-+
-+ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
-+ i_size_read(inode) - length;
-+
-+ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
-+ offset, bytes, &block, &offset)))
-+ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
-+{
-+ struct meta_index *meta = NULL;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
-+
-+ if(msblk->meta_index == NULL)
-+ goto not_allocated;
-+
-+ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
-+ if (msblk->meta_index[i].inode_number == inode->i_ino &&
-+ msblk->meta_index[i].offset >= offset &&
-+ msblk->meta_index[i].offset <= index &&
-+ msblk->meta_index[i].locked == 0) {
-+ TRACE("locate_meta_index: entry %d, offset %d\n", i,
-+ msblk->meta_index[i].offset);
-+ meta = &msblk->meta_index[i];
-+ offset = meta->offset;
-+ }
-+
-+ if (meta)
-+ meta->locked = 1;
-+
-+not_allocated:
-+ up(&msblk->meta_index_mutex);
-+
-+ return meta;
-+}
-+
-+
-+struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct meta_index *meta = NULL;
-+ int i;
-+
-+ down(&msblk->meta_index_mutex);
-+
-+ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
-+
-+ if(msblk->meta_index == NULL) {
-+ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
-+ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
-+ ERROR("Failed to allocate meta_index\n");
-+ goto failed;
-+ }
-+ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
-+ msblk->meta_index[i].inode_number = 0;
-+ msblk->meta_index[i].locked = 0;
-+ }
-+ msblk->next_meta_index = 0;
-+ }
-+
-+ for(i = SQUASHFS_META_NUMBER; i &&
-+ msblk->meta_index[msblk->next_meta_index].locked; i --)
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ if(i == 0) {
-+ TRACE("empty_meta_index: failed!\n");
-+ goto failed;
-+ }
-+
-+ TRACE("empty_meta_index: returned meta entry %d, %p\n",
-+ msblk->next_meta_index,
-+ &msblk->meta_index[msblk->next_meta_index]);
-+
-+ meta = &msblk->meta_index[msblk->next_meta_index];
-+ msblk->next_meta_index = (msblk->next_meta_index + 1) %
-+ SQUASHFS_META_NUMBER;
-+
-+ meta->inode_number = inode->i_ino;
-+ meta->offset = offset;
-+ meta->skip = skip;
-+ meta->entries = 0;
-+ meta->locked = 1;
-+
-+failed:
-+ up(&msblk->meta_index_mutex);
-+ return meta;
-+}
-+
-+
-+void release_meta_index(struct inode *inode, struct meta_index *meta)
-+{
-+ meta->locked = 0;
-+}
-+
-+
-+static int read_block_index(struct super_block *s, int blocks, char *block_list,
-+ long long *start_block, int *offset)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ unsigned int *block_listp;
-+ int block = 0;
-+
-+ if (msblk->swap) {
-+ char sblock_list[blocks << 2];
-+
-+ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
-+ ((unsigned int *)sblock_list), blocks);
-+ } else
-+ if (!squashfs_get_cached_block(s, block_list, *start_block,
-+ *offset, blocks << 2, start_block, offset)) {
-+ ERROR("Unable to read block list [%llx:%x]\n",
-+ *start_block, *offset);
-+ goto failure;
-+ }
-+
-+ for (block_listp = (unsigned int *) block_list; blocks;
-+ block_listp++, blocks --)
-+ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
-+
-+ return block;
-+
-+failure:
-+ return -1;
-+}
-+
-+
-+#define SIZE 256
-+
-+static inline int calculate_skip(int blocks) {
-+ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
-+ return skip >= 7 ? 7 : skip + 1;
-+}
-+
-+
-+static int get_meta_index(struct inode *inode, int index,
-+ long long *index_block, int *index_offset,
-+ long long *data_block, char *block_list)
-+{
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
-+ int offset = 0;
-+ struct meta_index *meta;
-+ struct meta_entry *meta_entry;
-+ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
-+ int cur_offset = SQUASHFS_I(inode)->offset;
-+ long long cur_data_block = SQUASHFS_I(inode)->start_block;
-+ int i;
-+
-+ index /= SQUASHFS_META_INDEXES * skip;
-+
-+ while ( offset < index ) {
-+ meta = locate_meta_index(inode, index, offset + 1);
-+
-+ if (meta == NULL) {
-+ if ((meta = empty_meta_index(inode, offset + 1,
-+ skip)) == NULL)
-+ goto all_done;
-+ } else {
-+ offset = index < meta->offset + meta->entries ? index :
-+ meta->offset + meta->entries - 1;
-+ meta_entry = &meta->meta_entry[offset - meta->offset];
-+ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
-+ cur_offset = meta_entry->offset;
-+ cur_data_block = meta_entry->data_block;
-+ TRACE("get_meta_index: offset %d, meta->offset %d, "
-+ "meta->entries %d\n", offset, meta->offset,
-+ meta->entries);
-+ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
-+ " data_block 0x%llx\n", cur_index_block,
-+ cur_offset, cur_data_block);
-+ }
-+
-+ for (i = meta->offset + meta->entries; i <= index &&
-+ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
-+ int blocks = skip * SQUASHFS_META_INDEXES;
-+
-+ while (blocks) {
-+ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
-+ blocks;
-+ int res = read_block_index(inode->i_sb, block,
-+ block_list, &cur_index_block,
-+ &cur_offset);
-+
-+ if (res == -1)
-+ goto failed;
-+
-+ cur_data_block += res;
-+ blocks -= block;
-+ }
-+
-+ meta_entry = &meta->meta_entry[i - meta->offset];
-+ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
-+ meta_entry->offset = cur_offset;
-+ meta_entry->data_block = cur_data_block;
-+ meta->entries ++;
-+ offset ++;
-+ }
-+
-+ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
-+ meta->offset, meta->entries);
-+
-+ release_meta_index(inode, meta);
-+ }
-+
-+all_done:
-+ *index_block = cur_index_block;
-+ *index_offset = cur_offset;
-+ *data_block = cur_data_block;
-+
-+ return offset * SQUASHFS_META_INDEXES * skip;
-+
-+failed:
-+ release_meta_index(inode, meta);
-+ return -1;
-+}
-+
-+
-+static long long read_blocklist(struct inode *inode, int index,
-+ int readahead_blks, char *block_list,
-+ unsigned short **block_p, unsigned int *bsize)
-+{
-+ long long block_ptr;
-+ int offset;
-+ long long block;
-+ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
-+ block_list);
-+
-+ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
-+ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
-+ block);
-+
-+ if(res == -1)
-+ goto failure;
-+
-+ index -= res;
-+
-+ while ( index ) {
-+ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
-+ int res = read_block_index(inode->i_sb, blocks, block_list,
-+ &block_ptr, &offset);
-+ if (res == -1)
-+ goto failure;
-+ block += res;
-+ index -= blocks;
-+ }
-+
-+ if (read_block_index(inode->i_sb, 1, block_list,
-+ &block_ptr, &offset) == -1)
-+ goto failure;
-+ *bsize = *((unsigned int *) block_list);
-+
-+ return block;
-+
-+failure:
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
-+ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
-+ void *pageaddr;
-+ struct squashfs_fragment_cache *fragment = NULL;
-+ char *data_ptr = msblk->read_page;
-+
-+ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
-+ int start_index = page->index & ~mask;
-+ int end_index = start_index | mask;
-+
-+ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT))
-+ goto skip_read;
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ if ((block = (msblk->read_blocklist)(inode, index, 1,
-+ block_list, NULL, &bsize)) == 0)
-+ goto skip_read;
-+
-+ down(&msblk->read_page_mutex);
-+
-+ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
-+ block, bsize, NULL))) {
-+ ERROR("Unable to read page, block %llx, size %x\n", block,
-+ bsize);
-+ up(&msblk->read_page_mutex);
-+ goto skip_read;
-+ }
-+ } else {
-+ if ((fragment = get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)->u.s1.fragment_size))
-+ == NULL) {
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ (int) SQUASHFS_I(inode)->
-+ u.s1.fragment_size);
-+ goto skip_read;
-+ }
-+ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
-+ (i_size_read(inode) & (sblk->block_size
-+ - 1));
-+ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
-+ data_ptr = fragment->data;
-+ }
-+
-+ for (i = start_index; i <= end_index && byte_offset < bytes;
-+ i++, byte_offset += PAGE_CACHE_SIZE) {
-+ struct page *push_page;
-+ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
-+ PAGE_CACHE_SIZE : bytes - byte_offset;
-+
-+ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
-+ bytes, i, byte_offset, available_bytes);
-+
-+ if (i == page->index) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+ } else if ((push_page =
-+ grab_cache_page_nowait(page->mapping, i))) {
-+ pageaddr = kmap_atomic(push_page, KM_USER0);
-+
-+ memcpy(pageaddr, data_ptr + byte_offset,
-+ available_bytes);
-+ memset(pageaddr + available_bytes, 0,
-+ PAGE_CACHE_SIZE - available_bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(push_page);
-+ SetPageUptodate(push_page);
-+ unlock_page(push_page);
-+ page_cache_release(push_page);
-+ }
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || index < (i_size_read(inode) >>
-+ sblk->block_log))
-+ up(&msblk->read_page_mutex);
-+ else
-+ release_cached_fragment(msblk, fragment);
-+
-+ return 0;
-+
-+skip_read:
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int squashfs_readpage4K(struct file *file, struct page *page)
-+{
-+ struct inode *inode = page->mapping->host;
-+ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned char block_list[SIZE];
-+ long long block;
-+ unsigned int bsize, bytes = 0;
-+ void *pageaddr;
-+
-+ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
-+ page->index,
-+ SQUASHFS_I(inode)->start_block);
-+
-+ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
-+ PAGE_CACHE_SHIFT)) {
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ goto skip_read;
-+ }
-+
-+ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
-+ || page->index < (i_size_read(inode) >>
-+ sblk->block_log)) {
-+ block = (msblk->read_blocklist)(inode, page->index, 1,
-+ block_list, NULL, &bsize);
-+
-+ down(&msblk->read_page_mutex);
-+ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
-+ bsize, NULL);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (bytes)
-+ memcpy(pageaddr, msblk->read_page, bytes);
-+ else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ block, bsize);
-+ up(&msblk->read_page_mutex);
-+ } else {
-+ struct squashfs_fragment_cache *fragment =
-+ get_cached_fragment(inode->i_sb,
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block,
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ pageaddr = kmap_atomic(page, KM_USER0);
-+ if (fragment) {
-+ bytes = i_size_read(inode) & (sblk->block_size - 1);
-+ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
-+ u.s1.fragment_offset, bytes);
-+ release_cached_fragment(msblk, fragment);
-+ } else
-+ ERROR("Unable to read page, block %llx, size %x\n",
-+ SQUASHFS_I(inode)->
-+ u.s1.fragment_start_block, (int)
-+ SQUASHFS_I(inode)-> u.s1.fragment_size);
-+ }
-+
-+skip_read:
-+ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
-+ kunmap_atomic(pageaddr, KM_USER0);
-+ flush_dcache_page(page);
-+ SetPageUptodate(page);
-+ unlock_page(page);
-+
-+ return 0;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ f_pos =- 3;
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length + 3;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length + 3;
-+}
-+
-+
-+static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
-+
-+ while(file->f_pos < 3) {
-+ char *name;
-+ int size, i_ino;
-+
-+ if(file->f_pos == 0) {
-+ name = ".";
-+ size = 1;
-+ i_ino = i->i_ino;
-+ } else {
-+ name = "..";
-+ size = 2;
-+ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
-+ }
-+ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
-+ (unsigned int) dirent, name, size, (int)
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]);
-+
-+ if (filldir(dirent, name, size,
-+ file->f_pos, i_ino,
-+ squashfs_filetype_table[1]) < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos += size;
-+ dirs_read++;
-+ }
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos,
-+ dirh.inode_number + dire->inode_number,
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %d\n", name,
-+ dirh.start_block, dire->offset,
-+ dirh.inode_number + dire->inode_number);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+static void squashfs_put_super(struct super_block *s)
-+{
-+ int i;
-+
-+ if (s->s_fs_info) {
-+ struct squashfs_sb_info *sbi = s->s_fs_info;
-+ if (sbi->block_cache)
-+ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
-+ if (sbi->block_cache[i].block !=
-+ SQUASHFS_INVALID_BLK)
-+ kfree(sbi->block_cache[i].data);
-+ if (sbi->fragment)
-+ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
-+ SQUASHFS_FREE(sbi->fragment[i].data);
-+ kfree(sbi->fragment);
-+ kfree(sbi->block_cache);
-+ kfree(sbi->read_data);
-+ kfree(sbi->read_page);
-+ kfree(sbi->uid);
-+ kfree(sbi->fragment_index);
-+ kfree(sbi->fragment_index_2);
-+ kfree(sbi->meta_index);
-+ kfree(s->s_fs_info);
-+ s->s_fs_info = NULL;
-+ }
-+}
-+
-+
-+static int squashfs_get_sb(struct file_system_type *fs_type,
-+ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
-+{
-+ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, mnt);
-+}
-+
-+
-+static int __init init_squashfs_fs(void)
-+{
-+ int err = init_inodecache();
-+ if (err)
-+ goto out;
-+
-+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
-+ "Phillip Lougher\n");
-+
-+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
-+ ERROR("Failed to allocate zlib workspace\n");
-+ destroy_inodecache();
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+
-+ if ((err = register_filesystem(&squashfs_fs_type))) {
-+ vfree(stream.workspace);
-+ destroy_inodecache();
-+ }
-+
-+out:
-+ return err;
-+}
-+
-+
-+static void __exit exit_squashfs_fs(void)
-+{
-+ vfree(stream.workspace);
-+ unregister_filesystem(&squashfs_fs_type);
-+ destroy_inodecache();
-+}
-+
-+
-+static kmem_cache_t * squashfs_inode_cachep;
-+
-+
-+static struct inode *squashfs_alloc_inode(struct super_block *sb)
-+{
-+ struct squashfs_inode_info *ei;
-+ ei = kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
-+ if (!ei)
-+ return NULL;
-+ return &ei->vfs_inode;
-+}
-+
-+
-+static void squashfs_destroy_inode(struct inode *inode)
-+{
-+ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
-+}
-+
-+
-+static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
-+{
-+ struct squashfs_inode_info *ei = foo;
-+
-+ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
-+ SLAB_CTOR_CONSTRUCTOR)
-+ inode_init_once(&ei->vfs_inode);
-+}
-+
-+
-+static int __init init_inodecache(void)
-+{
-+ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
-+ sizeof(struct squashfs_inode_info),
-+ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
-+ init_once, NULL);
-+ if (squashfs_inode_cachep == NULL)
-+ return -ENOMEM;
-+ return 0;
-+}
-+
-+
-+static void destroy_inodecache(void)
-+{
-+ kmem_cache_destroy(squashfs_inode_cachep);
-+}
-+
-+
-+module_init(init_squashfs_fs);
-+module_exit(exit_squashfs_fs);
-+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
-+MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
-Index: git/fs/squashfs/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/Makefile 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,7 @@
-+#
-+# Makefile for the linux squashfs routines.
-+#
-+
-+obj-$(CONFIG_SQUASHFS) += squashfs.o
-+squashfs-y += inode.o
-+squashfs-y += squashfs2_0.o
-Index: git/fs/squashfs/squashfs2_0.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/squashfs2_0.c 2006-11-01 18:01:49.000000000 +0000
-@@ -0,0 +1,757 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs2_0.c
-+ */
-+
-+#include <linux/types.h>
-+#include <linux/squashfs_fs.h>
-+#include <linux/module.h>
-+#include <linux/errno.h>
-+#include <linux/slab.h>
-+#include <linux/fs.h>
-+#include <linux/smp_lock.h>
-+#include <linux/slab.h>
-+#include <linux/squashfs_fs_sb.h>
-+#include <linux/squashfs_fs_i.h>
-+#include <linux/buffer_head.h>
-+#include <linux/vfs.h>
-+#include <linux/init.h>
-+#include <linux/dcache.h>
-+#include <linux/wait.h>
-+#include <linux/zlib.h>
-+#include <linux/blkdev.h>
-+#include <linux/vmalloc.h>
-+#include <asm/uaccess.h>
-+#include <asm/semaphore.h>
-+
-+#include "squashfs.h"
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
-+static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
-+ struct nameidata *);
-+
-+static struct file_operations squashfs_dir_ops_2 = {
-+ .read = generic_read_dir,
-+ .readdir = squashfs_readdir_2
-+};
-+
-+static struct inode_operations squashfs_dir_inode_ops_2 = {
-+ .lookup = squashfs_lookup_2
-+};
-+
-+static unsigned char squashfs_filetype_table[] = {
-+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
-+};
-+
-+static int read_fragment_index_table_2(struct super_block *s)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments), GFP_KERNEL))) {
-+ ERROR("Failed to allocate uid/gid table\n");
-+ return 0;
-+ }
-+
-+ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
-+ !squashfs_read_data(s, (char *)
-+ msblk->fragment_index_2,
-+ sblk->fragment_table_start,
-+ SQUASHFS_FRAGMENT_INDEX_BYTES_2
-+ (sblk->fragments) |
-+ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
-+ ERROR("unable to read fragment index table\n");
-+ return 0;
-+ }
-+
-+ if (msblk->swap) {
-+ int i;
-+ unsigned int fragment;
-+
-+ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
-+ i++) {
-+ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
-+ &msblk->fragment_index_2[i], 1);
-+ msblk->fragment_index_2[i] = fragment;
-+ }
-+ }
-+
-+ return 1;
-+}
-+
-+
-+static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
-+ long long *fragment_start_block,
-+ unsigned int *fragment_size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ long long start_block =
-+ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
-+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
-+ struct squashfs_fragment_entry_2 fragment_entry;
-+
-+ if (msblk->swap) {
-+ struct squashfs_fragment_entry_2 sfragment_entry;
-+
-+ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
-+ start_block, offset,
-+ sizeof(sfragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
-+ start_block, offset,
-+ sizeof(fragment_entry), &start_block,
-+ &offset))
-+ goto out;
-+
-+ *fragment_start_block = fragment_entry.start_block;
-+ *fragment_size = fragment_entry.size;
-+
-+ return 1;
-+
-+out:
-+ return 0;
-+}
-+
-+
-+static struct inode *squashfs_new_inode(struct super_block *s,
-+ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ struct inode *i = new_inode(s);
-+
-+ if (i) {
-+ i->i_ino = ino;
-+ i->i_mtime.tv_sec = sblk->mkfs_time;
-+ i->i_atime.tv_sec = sblk->mkfs_time;
-+ i->i_ctime.tv_sec = sblk->mkfs_time;
-+ i->i_uid = msblk->uid[inodeb->uid];
-+ i->i_mode = inodeb->mode;
-+ i->i_nlink = 1;
-+ i->i_size = 0;
-+ if (inodeb->guid == SQUASHFS_GUIDS)
-+ i->i_gid = i->i_uid;
-+ else
-+ i->i_gid = msblk->guid[inodeb->guid];
-+ }
-+
-+ return i;
-+}
-+
-+
-+static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
-+{
-+ struct inode *i;
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
-+ sblk->inode_table_start;
-+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
-+ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
-+ - sblk->inode_table_start, offset);
-+ long long next_block;
-+ unsigned int next_offset;
-+ union squashfs_inode_header_2 id, sid;
-+ struct squashfs_base_inode_header_2 *inodeb = &id.base,
-+ *sinodeb = &sid.base;
-+
-+ TRACE("Entered squashfs_iget\n");
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
-+ offset, sizeof(*sinodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
-+ sizeof(*sinodeb));
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
-+ offset, sizeof(*inodeb), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ switch(inodeb->inode_type) {
-+ case SQUASHFS_FILE_TYPE: {
-+ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
-+ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
-+ long long frag_blk;
-+ unsigned int frag_size;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ frag_blk = SQUASHFS_INVALID_BLK;
-+ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
-+ !get_fragment_location_2(s,
-+ inodep->fragment, &frag_blk, &frag_size))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_fop = &generic_ro_fops;
-+ i->i_mode |= S_IFREG;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
-+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
-+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
-+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+ if (sblk->block_size > 4096)
-+ i->i_data.a_ops = &squashfs_aops;
-+ else
-+ i->i_data.a_ops = &squashfs_aops_4K;
-+
-+ TRACE("File inode %x:%x, start_block %x, "
-+ "block_list_start %llx, offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, next_block,
-+ next_offset);
-+ break;
-+ }
-+ case SQUASHFS_DIR_TYPE: {
-+ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
-+ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Directory inode %x:%x, start_block %x, offset "
-+ "%x\n", SQUASHFS_INODE_BLK(inode),
-+ offset, inodep->start_block,
-+ inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_LDIR_TYPE: {
-+ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
-+ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->file_size;
-+ i->i_op = &squashfs_dir_inode_ops_2;
-+ i->i_fop = &squashfs_dir_ops_2;
-+ i->i_mode |= S_IFDIR;
-+ i->i_mtime.tv_sec = inodep->mtime;
-+ i->i_atime.tv_sec = inodep->mtime;
-+ i->i_ctime.tv_sec = inodep->mtime;
-+ SQUASHFS_I(i)->start_block = inodep->start_block;
-+ SQUASHFS_I(i)->offset = inodep->offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
-+ SQUASHFS_I(i)->u.s2.directory_index_offset =
-+ next_offset;
-+ SQUASHFS_I(i)->u.s2.directory_index_count =
-+ inodep->i_count;
-+ SQUASHFS_I(i)->u.s2.parent_inode = 0;
-+
-+ TRACE("Long directory inode %x:%x, start_block %x, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->start_block, inodep->offset);
-+ break;
-+ }
-+ case SQUASHFS_SYMLINK_TYPE: {
-+ struct squashfs_symlink_inode_header_2 *inodep =
-+ &id.symlink;
-+ struct squashfs_symlink_inode_header_2 *sinodep =
-+ &sid.symlink;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
-+ sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_size = inodep->symlink_size;
-+ i->i_op = &page_symlink_inode_operations;
-+ i->i_data.a_ops = &squashfs_symlink_aops;
-+ i->i_mode |= S_IFLNK;
-+ SQUASHFS_I(i)->start_block = next_block;
-+ SQUASHFS_I(i)->offset = next_offset;
-+
-+ TRACE("Symbolic link inode %x:%x, start_block %llx, "
-+ "offset %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ next_block, next_offset);
-+ break;
-+ }
-+ case SQUASHFS_BLKDEV_TYPE:
-+ case SQUASHFS_CHRDEV_TYPE: {
-+ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
-+ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
-+
-+ if (msblk->swap) {
-+ if (!squashfs_get_cached_block(s, (char *)
-+ sinodep, block, offset,
-+ sizeof(*sinodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
-+ } else
-+ if (!squashfs_get_cached_block(s, (char *)
-+ inodep, block, offset,
-+ sizeof(*inodep), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type ==
-+ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
-+ S_IFBLK;
-+ init_special_inode(i, i->i_mode,
-+ old_decode_dev(inodep->rdev));
-+
-+ TRACE("Device inode %x:%x, rdev %x\n",
-+ SQUASHFS_INODE_BLK(inode), offset,
-+ inodep->rdev);
-+ break;
-+ }
-+ case SQUASHFS_FIFO_TYPE:
-+ case SQUASHFS_SOCKET_TYPE: {
-+ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
-+ goto failed_read1;
-+
-+ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
-+ ? S_IFIFO : S_IFSOCK;
-+ init_special_inode(i, i->i_mode, 0);
-+ break;
-+ }
-+ default:
-+ ERROR("Unknown inode type %d in squashfs_iget!\n",
-+ inodeb->inode_type);
-+ goto failed_read1;
-+ }
-+
-+ insert_inode_hash(i);
-+ return i;
-+
-+failed_read:
-+ ERROR("Unable to read inode [%x:%x]\n", block, offset);
-+
-+failed_read1:
-+ return NULL;
-+}
-+
-+
-+static int get_dir_index_using_offset(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ long long f_pos)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ struct squashfs_dir_index_2 index;
-+
-+ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
-+ i_count, (unsigned int) f_pos);
-+
-+ if (f_pos == 0)
-+ goto finish;
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) &index,
-+ index_start, index_offset,
-+ sizeof(index), &index_start,
-+ &index_offset);
-+
-+ if (index.index > f_pos)
-+ break;
-+
-+ squashfs_get_cached_block(s, NULL, index_start, index_offset,
-+ index.size + 1, &index_start,
-+ &index_offset);
-+
-+ length = index.index;
-+ *next_block = index.start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+
-+finish:
-+ return length;
-+}
-+
-+
-+static int get_dir_index_using_name(struct super_block *s, long long
-+ *next_block, unsigned int *next_offset,
-+ long long index_start,
-+ unsigned int index_offset, int i_count,
-+ const char *name, int size)
-+{
-+ struct squashfs_sb_info *msblk = s->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ int i, length = 0;
-+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
-+ char str[SQUASHFS_NAME_LEN + 1];
-+
-+ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
-+
-+ strncpy(str, name, size);
-+ str[size] = '\0';
-+
-+ for (i = 0; i < i_count; i++) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_index_2 sindex;
-+ squashfs_get_cached_block(s, (char *) &sindex,
-+ index_start, index_offset,
-+ sizeof(sindex), &index_start,
-+ &index_offset);
-+ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
-+ } else
-+ squashfs_get_cached_block(s, (char *) index,
-+ index_start, index_offset,
-+ sizeof(struct squashfs_dir_index_2),
-+ &index_start, &index_offset);
-+
-+ squashfs_get_cached_block(s, index->name, index_start,
-+ index_offset, index->size + 1,
-+ &index_start, &index_offset);
-+
-+ index->name[index->size + 1] = '\0';
-+
-+ if (strcmp(index->name, str) > 0)
-+ break;
-+
-+ length = index->index;
-+ *next_block = index->start_block + sblk->directory_table_start;
-+ }
-+
-+ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
-+ return length;
-+}
-+
-+
-+static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
-+{
-+ struct inode *i = file->f_dentry->d_inode;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+
-+ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
-+
-+ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count,
-+ file->f_pos);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block, next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block, next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset,
-+ dire->size + 1, &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (file->f_pos >= length)
-+ continue;
-+
-+ dire->name[dire->size + 1] = '\0';
-+
-+ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
-+ (unsigned int) dirent, dire->name,
-+ dire->size + 1, (int) file->f_pos,
-+ dirh.start_block, dire->offset,
-+ squashfs_filetype_table[dire->type]);
-+
-+ if (filldir(dirent, dire->name, dire->size + 1,
-+ file->f_pos, SQUASHFS_MK_VFS_INODE(
-+ dirh.start_block, dire->offset),
-+ squashfs_filetype_table[dire->type])
-+ < 0) {
-+ TRACE("Filldir returned less than 0\n");
-+ goto finish;
-+ }
-+ file->f_pos = length;
-+ dirs_read++;
-+ }
-+ }
-+
-+finish:
-+ return dirs_read;
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ return 0;
-+}
-+
-+
-+static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
-+ struct nameidata *nd)
-+{
-+ const unsigned char *name = dentry->d_name.name;
-+ int len = dentry->d_name.len;
-+ struct inode *inode = NULL;
-+ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+ long long next_block = SQUASHFS_I(i)->start_block +
-+ sblk->directory_table_start;
-+ int next_offset = SQUASHFS_I(i)->offset, length = 0,
-+ dir_count;
-+ struct squashfs_dir_header_2 dirh;
-+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
-+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
-+ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
-+
-+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
-+
-+ if (len > SQUASHFS_NAME_LEN)
-+ goto exit_loop;
-+
-+ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_start,
-+ SQUASHFS_I(i)->u.s2.directory_index_offset,
-+ SQUASHFS_I(i)->u.s2.directory_index_count, name,
-+ len);
-+
-+ while (length < i_size_read(i)) {
-+ /* read directory header */
-+ if (msblk->swap) {
-+ struct squashfs_dir_header_2 sdirh;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
-+ next_block, next_offset, sizeof(sdirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdirh);
-+ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
-+ next_block, next_offset, sizeof(dirh),
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(dirh);
-+ }
-+
-+ dir_count = dirh.count + 1;
-+ while (dir_count--) {
-+ if (msblk->swap) {
-+ struct squashfs_dir_entry_2 sdire;
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ &sdire, next_block,next_offset,
-+ sizeof(sdire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(sdire);
-+ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
-+ } else {
-+ if (!squashfs_get_cached_block(i->i_sb, (char *)
-+ dire, next_block,next_offset,
-+ sizeof(*dire), &next_block,
-+ &next_offset))
-+ goto failed_read;
-+
-+ length += sizeof(*dire);
-+ }
-+
-+ if (!squashfs_get_cached_block(i->i_sb, dire->name,
-+ next_block, next_offset, dire->size + 1,
-+ &next_block, &next_offset))
-+ goto failed_read;
-+
-+ length += dire->size + 1;
-+
-+ if (sorted && name[0] < dire->name[0])
-+ goto exit_loop;
-+
-+ if ((len == dire->size + 1) && !strncmp(name,
-+ dire->name, len)) {
-+ squashfs_inode_t ino =
-+ SQUASHFS_MKINODE(dirh.start_block,
-+ dire->offset);
-+
-+ TRACE("calling squashfs_iget for directory "
-+ "entry %s, inode %x:%x, %lld\n", name,
-+ dirh.start_block, dire->offset, ino);
-+
-+ inode = (msblk->iget)(i->i_sb, ino);
-+
-+ goto exit_loop;
-+ }
-+ }
-+ }
-+
-+exit_loop:
-+ d_add(dentry, inode);
-+ return ERR_PTR(0);
-+
-+failed_read:
-+ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
-+ next_offset);
-+ goto exit_loop;
-+}
-+
-+
-+int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ struct squashfs_super_block *sblk = &msblk->sblk;
-+
-+ msblk->iget = squashfs_iget_2;
-+ msblk->read_fragment_index_table = read_fragment_index_table_2;
-+
-+ sblk->bytes_used = sblk->bytes_used_2;
-+ sblk->uid_start = sblk->uid_start_2;
-+ sblk->guid_start = sblk->guid_start_2;
-+ sblk->inode_table_start = sblk->inode_table_start_2;
-+ sblk->directory_table_start = sblk->directory_table_start_2;
-+ sblk->fragment_table_start = sblk->fragment_table_start_2;
-+
-+ return 1;
-+}
-Index: git/fs/squashfs/squashfs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/fs/squashfs/squashfs.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,86 @@
-+/*
-+ * Squashfs - a compressed read only filesystem for Linux
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs.h
-+ */
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+#endif
-+
-+#ifdef SQUASHFS_TRACE
-+#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
-+#else
-+#define TRACE(s, args...) {}
-+#endif
-+
-+#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
-+
-+#define SERROR(s, args...) do { \
-+ if (!silent) \
-+ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
-+ } while(0)
-+
-+#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
-+
-+static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
-+{
-+ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
-+}
-+
-+#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
-+#define SQSH_EXTERN
-+extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
-+ long long index, unsigned int length,
-+ long long *next_index);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
-+ long long block, unsigned int offset,
-+ int length, long long *next_block,
-+ unsigned int *next_offset);
-+extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
-+ squashfs_fragment_cache *fragment);
-+extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
-+ *s, long long start_block,
-+ int length);
-+extern struct address_space_operations squashfs_symlink_aops;
-+extern struct address_space_operations squashfs_aops;
-+extern struct address_space_operations squashfs_aops_4K;
-+extern struct inode_operations squashfs_dir_inode_ops;
-+#else
-+#define SQSH_EXTERN static
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
-+#else
-+static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
-+{
-+ return 0;
-+}
-+#endif
-Index: git/include/linux/squashfs_fs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/linux/squashfs_fs.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,911 @@
-+#ifndef SQUASHFS_FS
-+#define SQUASHFS_FS
-+
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs.h
-+ */
-+
-+#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a) vmalloc(a)
-+#define SQUASHFS_FREE(a) vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a) kfree(a)
-+#endif
-+#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
-+#define SQUASHFS_MAJOR 3
-+#define SQUASHFS_MINOR 0
-+#define SQUASHFS_MAGIC 0x73717368
-+#define SQUASHFS_MAGIC_SWAP 0x68737173
-+#define SQUASHFS_START 0
-+
-+/* size of metadata (inode and directory) blocks */
-+#define SQUASHFS_METADATA_SIZE 8192
-+#define SQUASHFS_METADATA_LOG 13
-+
-+/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE 65536
-+#define SQUASHFS_FILE_LOG 16
-+
-+#define SQUASHFS_FILE_MAX_SIZE 65536
-+
-+/* Max number of uids and gids */
-+#define SQUASHFS_UIDS 256
-+#define SQUASHFS_GUIDS 255
-+
-+/* Max length of filename (not 255) */
-+#define SQUASHFS_NAME_LEN 256
-+
-+#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
-+#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
-+#define SQUASHFS_INVALID_BLK ((long long) -1)
-+#define SQUASHFS_USED_BLK ((long long) -2)
-+
-+/* Filesystem flags */
-+#define SQUASHFS_NOI 0
-+#define SQUASHFS_NOD 1
-+#define SQUASHFS_CHECK 2
-+#define SQUASHFS_NOF 3
-+#define SQUASHFS_NO_FRAG 4
-+#define SQUASHFS_ALWAYS_FRAG 5
-+#define SQUASHFS_DUPLICATE 6
-+
-+#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
-+
-+#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOI)
-+
-+#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOD)
-+
-+#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NOF)
-+
-+#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_NO_FRAG)
-+
-+#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_ALWAYS_FRAG)
-+
-+#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_DUPLICATE)
-+
-+#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
-+ SQUASHFS_CHECK)
-+
-+#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
-+ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
-+ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
-+ (duplicate_checking << 6))
-+
-+/* Max number of types and file types */
-+#define SQUASHFS_DIR_TYPE 1
-+#define SQUASHFS_FILE_TYPE 2
-+#define SQUASHFS_SYMLINK_TYPE 3
-+#define SQUASHFS_BLKDEV_TYPE 4
-+#define SQUASHFS_CHRDEV_TYPE 5
-+#define SQUASHFS_FIFO_TYPE 6
-+#define SQUASHFS_SOCKET_TYPE 7
-+#define SQUASHFS_LDIR_TYPE 8
-+#define SQUASHFS_LREG_TYPE 9
-+
-+/* 1.0 filesystem type definitions */
-+#define SQUASHFS_TYPES 5
-+#define SQUASHFS_IPC_TYPE 0
-+
-+/* Flag whether block is compressed or uncompressed, bit is set if block is
-+ * uncompressed */
-+#define SQUASHFS_COMPRESSED_BIT (1 << 15)
-+
-+#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
-+ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
-+
-+#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
-+
-+#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
-+
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
-+
-+#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
-+
-+/*
-+ * Inode number ops. Inodes consist of a compressed block number, and an
-+ * uncompressed offset within that block
-+ */
-+#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
-+
-+#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
-+
-+#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
-+ << 16) + (B)))
-+
-+/* Compute 32 bit VFS inode number from squashfs inode number */
-+#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
-+ ((b) >> 2) + 1))
-+/* XXX */
-+
-+/* Translate between VFS mode and squashfs mode */
-+#define SQUASHFS_MODE(a) ((a) & 0xfff)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
-+
-+#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
-+ sizeof(long long))
-+
-+/* cached data constants for filesystem */
-+#define SQUASHFS_CACHED_BLKS 8
-+
-+#define SQUASHFS_MAX_FILE_SIZE_LOG 64
-+
-+#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
-+ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
-+
-+#define SQUASHFS_MARKER_BYTE 0xff
-+
-+/* meta index cache */
-+#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
-+#define SQUASHFS_META_ENTRIES 31
-+#define SQUASHFS_META_NUMBER 8
-+#define SQUASHFS_SLOTS 4
-+
-+struct meta_entry {
-+ long long data_block;
-+ unsigned int index_block;
-+ unsigned short offset;
-+ unsigned short pad;
-+};
-+
-+struct meta_index {
-+ unsigned int inode_number;
-+ unsigned int offset;
-+ unsigned short entries;
-+ unsigned short skip;
-+ unsigned short locked;
-+ unsigned short pad;
-+ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
-+};
-+
-+
-+/*
-+ * definitions for structures on disk
-+ */
-+
-+typedef long long squashfs_block_t;
-+typedef long long squashfs_inode_t;
-+
-+struct squashfs_super_block {
-+ unsigned int s_magic;
-+ unsigned int inodes;
-+ unsigned int bytes_used_2;
-+ unsigned int uid_start_2;
-+ unsigned int guid_start_2;
-+ unsigned int inode_table_start_2;
-+ unsigned int directory_table_start_2;
-+ unsigned int s_major:16;
-+ unsigned int s_minor:16;
-+ unsigned int block_size_1:16;
-+ unsigned int block_log:16;
-+ unsigned int flags:8;
-+ unsigned int no_uids:8;
-+ unsigned int no_guids:8;
-+ unsigned int mkfs_time /* time of filesystem creation */;
-+ squashfs_inode_t root_inode;
-+ unsigned int block_size;
-+ unsigned int fragments;
-+ unsigned int fragment_table_start_2;
-+ long long bytes_used;
-+ long long uid_start;
-+ long long guid_start;
-+ long long inode_table_start;
-+ long long directory_table_start;
-+ long long fragment_table_start;
-+ long long unused;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_index {
-+ unsigned int index;
-+ unsigned int start_block;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_BASE_INODE_HEADER \
-+ unsigned int inode_type:4; \
-+ unsigned int mode:12; \
-+ unsigned int uid:8; \
-+ unsigned int guid:8; \
-+ unsigned int mtime; \
-+ unsigned int inode_number;
-+
-+struct squashfs_base_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_lreg_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ squashfs_block_t start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ long long file_size;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int parent_inode;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header {
-+ SQUASHFS_BASE_INODE_HEADER;
-+ unsigned int nlink;
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int start_block;
-+ unsigned int i_count:16;
-+ unsigned int parent_inode;
-+ struct squashfs_dir_index index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header {
-+ struct squashfs_base_inode_header base;
-+ struct squashfs_dev_inode_header dev;
-+ struct squashfs_symlink_inode_header symlink;
-+ struct squashfs_reg_inode_header reg;
-+ struct squashfs_lreg_inode_header lreg;
-+ struct squashfs_dir_inode_header dir;
-+ struct squashfs_ldir_inode_header ldir;
-+ struct squashfs_ipc_inode_header ipc;
-+};
-+
-+struct squashfs_dir_entry {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ int inode_number:16;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_header {
-+ unsigned int count:8;
-+ unsigned int start_block;
-+ unsigned int inode_number;
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry {
-+ long long start_block;
-+ unsigned int size;
-+ unsigned int unused;
-+} __attribute__ ((packed));
-+
-+extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
-+extern int squashfs_uncompress_init(void);
-+extern int squashfs_uncompress_exit(void);
-+
-+/*
-+ * macros to convert each packed bitfield structure from little endian to big
-+ * endian and vice versa. These are needed when creating or using a filesystem
-+ * on a machine with different byte ordering to the target architecture.
-+ *
-+ */
-+
-+#define SQUASHFS_SWAP_START \
-+ int bits;\
-+ int b_pos;\
-+ unsigned long long val;\
-+ unsigned char *s;\
-+ unsigned char *d;
-+
-+#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
-+ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
-+ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
-+ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
-+ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
-+ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
-+ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
-+ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
-+ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
-+ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
-+ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
-+ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
-+ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
-+ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
-+ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
-+ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
-+ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
-+ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
-+ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
-+ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header))\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dev_inode_header)); \
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_reg_inode_header));\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_lreg_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
-+ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_dir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header));\
-+ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
-+ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
-+ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
-+ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
-+ SQUASHFS_SWAP((s)->size, d, 64, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 2);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 16)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_INTS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 4);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 32)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ 64)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
-+}
-+
-+#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
-+ int entry;\
-+ int bit_position;\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, n * bits / 8);\
-+ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
-+ bits)\
-+ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
-+
-+#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
-+
-+struct squashfs_base_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int type:4;
-+ unsigned int offset:4;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_1 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:4; /* index into uid table */
-+ unsigned int guid:4; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
-+ SQUASHFS_SWAP((s)->guid, d, 20, 4);
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_ipc_inode_header_1));\
-+ SQUASHFS_SWAP((s)->type, d, 24, 4);\
-+ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
-+}
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_1));\
-+ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_1));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_1));\
-+ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_1));\
-+ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
-+
-+struct squashfs_dir_index_2 {
-+ unsigned int index:27;
-+ unsigned int start_block:29;
-+ unsigned char size;
-+ unsigned char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_base_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_ipc_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+} __attribute__ ((packed));
-+
-+struct squashfs_dev_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short rdev;
-+} __attribute__ ((packed));
-+
-+struct squashfs_symlink_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned short symlink_size;
-+ char symlink[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_reg_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int mtime;
-+ unsigned int start_block;
-+ unsigned int fragment;
-+ unsigned int offset;
-+ unsigned int file_size:32;
-+ unsigned short block_list[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:19;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_ldir_inode_header_2 {
-+ unsigned int inode_type:4;
-+ unsigned int mode:12; /* protection */
-+ unsigned int uid:8; /* index into uid table */
-+ unsigned int guid:8; /* index into guid table */
-+ unsigned int file_size:27;
-+ unsigned int offset:13;
-+ unsigned int mtime;
-+ unsigned int start_block:24;
-+ unsigned int i_count:16;
-+ struct squashfs_dir_index_2 index[0];
-+} __attribute__ ((packed));
-+
-+union squashfs_inode_header_2 {
-+ struct squashfs_base_inode_header_2 base;
-+ struct squashfs_dev_inode_header_2 dev;
-+ struct squashfs_symlink_inode_header_2 symlink;
-+ struct squashfs_reg_inode_header_2 reg;
-+ struct squashfs_dir_inode_header_2 dir;
-+ struct squashfs_ldir_inode_header_2 ldir;
-+ struct squashfs_ipc_inode_header_2 ipc;
-+};
-+
-+struct squashfs_dir_header_2 {
-+ unsigned int count:8;
-+ unsigned int start_block:24;
-+} __attribute__ ((packed));
-+
-+struct squashfs_dir_entry_2 {
-+ unsigned int offset:13;
-+ unsigned int type:3;
-+ unsigned int size:8;
-+ char name[0];
-+} __attribute__ ((packed));
-+
-+struct squashfs_fragment_entry_2 {
-+ unsigned int start_block;
-+ unsigned int size;
-+} __attribute__ ((packed));
-+
-+#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+ SQUASHFS_MEMSET(s, d, n);\
-+ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
-+ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
-+ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
-+ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
-+
-+#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
-+}
-+
-+#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
-+ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
-+
-+#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dev_inode_header_2)); \
-+ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_symlink_inode_header_2));\
-+ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_reg_inode_header_2));\
-+ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
-+ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
-+ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_dir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
-+ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
-+ sizeof(struct squashfs_ldir_inode_header_2));\
-+ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
-+ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
-+ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
-+ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
-+ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
-+ SQUASHFS_SWAP((s)->index, d, 0, 27);\
-+ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
-+ SQUASHFS_SWAP((s)->size, d, 56, 8);\
-+}
-+#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
-+ SQUASHFS_SWAP((s)->count, d, 0, 8);\
-+ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
-+}
-+
-+#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
-+ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
-+ SQUASHFS_SWAP((s)->type, d, 13, 3);\
-+ SQUASHFS_SWAP((s)->size, d, 16, 8);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
-+ SQUASHFS_SWAP_START\
-+ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
-+ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
-+ SQUASHFS_SWAP((s)->size, d, 32, 32);\
-+}
-+
-+#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
-+
-+/* fragment and fragment table defines */
-+#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
-+
-+#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
-+ SQUASHFS_METADATA_SIZE - 1) / \
-+ SQUASHFS_METADATA_SIZE)
-+
-+#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
-+ sizeof(int))
-+
-+#endif
-+
-+#ifdef __KERNEL__
-+
-+/*
-+ * macros used to swap each structure entry, taking into account
-+ * bitfields and different bitfield placing conventions on differing
-+ * architectures
-+ */
-+
-+#include <asm/byteorder.h>
-+
-+#ifdef __BIG_ENDIAN
-+ /* convert from little endian to big endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, b_pos)
-+#else
-+ /* convert from big endian to little endian */
-+#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
-+ tbits, 64 - tbits - b_pos)
-+#endif
-+
-+#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
-+ b_pos = pos % 8;\
-+ val = 0;\
-+ s = (unsigned char *)p + (pos / 8);\
-+ d = ((unsigned char *) &val) + 7;\
-+ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
-+ *d-- = *s++;\
-+ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
-+}
-+
-+#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
-+
-+#endif
-+#endif
-Index: git/include/linux/squashfs_fs_i.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/linux/squashfs_fs_i.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,45 @@
-+#ifndef SQUASHFS_FS_I
-+#define SQUASHFS_FS_I
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_i.h
-+ */
-+
-+struct squashfs_inode_info {
-+ long long start_block;
-+ unsigned int offset;
-+ union {
-+ struct {
-+ long long fragment_start_block;
-+ unsigned int fragment_size;
-+ unsigned int fragment_offset;
-+ long long block_list_start;
-+ } s1;
-+ struct {
-+ long long directory_index_start;
-+ unsigned int directory_index_offset;
-+ unsigned int directory_index_count;
-+ unsigned int parent_inode;
-+ } s2;
-+ } u;
-+ struct inode vfs_inode;
-+};
-+#endif
-Index: git/include/linux/squashfs_fs_sb.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/linux/squashfs_fs_sb.h 2006-10-31 21:26:45.000000000 +0000
-@@ -0,0 +1,74 @@
-+#ifndef SQUASHFS_FS_SB
-+#define SQUASHFS_FS_SB
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2002, 2003, 2004, 2005, 2006
-+ * Phillip Lougher <phillip@lougher.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * squashfs_fs_sb.h
-+ */
-+
-+#include <linux/squashfs_fs.h>
-+
-+struct squashfs_cache {
-+ long long block;
-+ int length;
-+ long long next_index;
-+ char *data;
-+};
-+
-+struct squashfs_fragment_cache {
-+ long long block;
-+ int length;
-+ unsigned int locked;
-+ char *data;
-+};
-+
-+struct squashfs_sb_info {
-+ struct squashfs_super_block sblk;
-+ int devblksize;
-+ int devblksize_log2;
-+ int swap;
-+ struct squashfs_cache *block_cache;
-+ struct squashfs_fragment_cache *fragment;
-+ int next_cache;
-+ int next_fragment;
-+ int next_meta_index;
-+ unsigned int *uid;
-+ unsigned int *guid;
-+ long long *fragment_index;
-+ unsigned int *fragment_index_2;
-+ unsigned int read_size;
-+ char *read_data;
-+ char *read_page;
-+ struct semaphore read_data_mutex;
-+ struct semaphore read_page_mutex;
-+ struct semaphore block_cache_mutex;
-+ struct semaphore fragment_mutex;
-+ struct semaphore meta_index_mutex;
-+ wait_queue_head_t waitq;
-+ wait_queue_head_t fragment_wait_queue;
-+ struct meta_index *meta_index;
-+ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
-+ inode);
-+ long long (*read_blocklist)(struct inode *inode, int \
-+ index, int readahead_blks, char *block_list, \
-+ unsigned short **block_p, unsigned int *bsize);
-+ int (*read_fragment_index_table)(struct super_block *s);
-+};
-+#endif
-Index: git/init/do_mounts_rd.c
-===================================================================
---- git.orig/init/do_mounts_rd.c 2006-10-31 16:09:47.000000000 +0000
-+++ git/init/do_mounts_rd.c 2006-10-31 21:26:45.000000000 +0000
-@@ -5,6 +5,7 @@
- #include <linux/ext2_fs.h>
- #include <linux/romfs_fs.h>
- #include <linux/cramfs_fs.h>
-+#include <linux/squashfs_fs.h>
- #include <linux/initrd.h>
- #include <linux/string.h>
-
-@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
- * numbers could not be found.
- *
- * We currently check for the following magic numbers:
-+ * squashfs
- * minix
- * ext2
- * romfs
-@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
- struct ext2_super_block *ext2sb;
- struct romfs_super_block *romfsb;
- struct cramfs_super *cramfsb;
-+ struct squashfs_super_block *squashfsb;
- int nblocks = -1;
- unsigned char *buf;
-
-@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
- ext2sb = (struct ext2_super_block *) buf;
- romfsb = (struct romfs_super_block *) buf;
- cramfsb = (struct cramfs_super *) buf;
-+ squashfsb = (struct squashfs_super_block *) buf;
- memset(buf, 0xe5, size);
-
- /*
-@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
- goto done;
- }
-
-+ /* squashfs is at block zero too */
-+ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
-+ printk(KERN_NOTICE
-+ "RAMDISK: squashfs filesystem found at block %d\n",
-+ start_block);
-+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
-+ goto done;
-+ }
-+
- /*
- * Read block 1 to test for minix and ext2 superblock
- */
diff --git a/packages/linux/linux-rp-2.6.21/vesafb-tng-1.0-rc2-2.6.20-rc2.patch b/packages/linux/linux-rp-2.6.21/vesafb-tng-1.0-rc2-2.6.20-rc2.patch
deleted file mode 100644
index b1b0fc3549..0000000000
--- a/packages/linux/linux-rp-2.6.21/vesafb-tng-1.0-rc2-2.6.20-rc2.patch
+++ /dev/null
@@ -1,3141 +0,0 @@
-diff --git a/Documentation/fb/vesafb.txt b/Documentation/fb/vesafb.txt
-index ee277dd..93d6e6e 100644
---- a/Documentation/fb/vesafb.txt
-+++ b/Documentation/fb/vesafb.txt
-@@ -2,16 +2,18 @@
- What is vesafb?
- ===============
-
--This is a generic driver for a graphic framebuffer on intel boxes.
-+Vesafb is a generic framebuffer driver for x86 and x86_64 boxes.
-
--The idea is simple: Turn on graphics mode at boot time with the help
--of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k
--(and other) ports do.
-+VESA BIOS Extensions Version 2.0 are required, because we need access to
-+a linear frame buffer. VBE 3.0 is required if you want to use modes with a
-+higher (than the standard 60 Hz) refresh rate.
-
--This means we decide at boot time whenever we want to run in text or
--graphics mode. Switching mode later on (in protected mode) is
--impossible; BIOS calls work in real mode only. VESA BIOS Extensions
--Version 2.0 are required, because we need a linear frame buffer.
-+The VESA framebuffer driver comes in two flavors - the standard 'vesafb'
-+and 'vesafb-tng'. Vesafb-tng is available only on 32-bit x86 due to the
-+technology it uses (vm86). Vesafb-tng has more features than vesafb
-+(adjusting the refresh rate on VBE 3.0 compliant boards, switching the
-+video mode without rebooting, selecting a mode by providing its
-+modedb name, and more).
-
- Advantages:
-
-@@ -29,26 +31,35 @@ Disadvantages:
- How to use it?
- ==============
-
--Switching modes is done using the vga=... boot parameter. Read
--Documentation/svga.txt for details.
-+If you are running a 32-bit x86 system and you decide to use vesafb-tng,
-+you can either compile the driver into the kernel or use it as a module.
-+The graphics mode you want to use is in both cases specified using the
-+standard modedb format.
-
--You should compile in both vgacon (for text mode) and vesafb (for
--graphics mode). Which of them takes over the console depends on
--whenever the specified mode is text or graphics.
-+If your system doesn't support vm86 calls, things get a little more tricky.
-+Since on such systems you can't do BIOS calls from protected mode in which
-+kernel runs, you have to decide at boot time whenever you want to run in text
-+or in graphics mode. Switching mode later on is impossible. Switching modes
-+is done using the vga=... boot parameter. Read Documentation/svga.txt for
-+details. Below is a more detailed description of what to do on systems using
-+the standard vesafb driver.
-
--The graphic modes are NOT in the list which you get if you boot with
--vga=ask and hit return. The mode you wish to use is derived from the
--VESA mode number. Here are those VESA mode numbers:
-+You should compile in both vgacon (for text mode) and vesafb (for graphics
-+mode). Which of them takes over the console depends on whenever the
-+specified mode is text or graphics.
-+
-+The graphic modes are NOT in the list which you get if you boot with vga=ask
-+and hit return. The mode you wish to use is derived from the VESA mode number.
-+Here are those VESA mode numbers:
-
- | 640x480 800x600 1024x768 1280x1024
- ----+-------------------------------------
--256 | 0x101 0x103 0x105 0x107
--32k | 0x110 0x113 0x116 0x119
--64k | 0x111 0x114 0x117 0x11A
--16M | 0x112 0x115 0x118 0x11B
-+256 | 0x101 0x103 0x105 0x107
-+32k | 0x110 0x113 0x116 0x119
-+64k | 0x111 0x114 0x117 0x11A
-+16M | 0x112 0x115 0x118 0x11B
-
--The video mode number of the Linux kernel is the VESA mode number plus
--0x200.
-+The video mode number of the Linux kernel is the VESA mode number plus 0x200.
-
- Linux_kernel_mode_number = VESA_mode_number + 0x200
-
-@@ -56,15 +67,15 @@ So the table for the Kernel mode numbers are:
-
- | 640x480 800x600 1024x768 1280x1024
- ----+-------------------------------------
--256 | 0x301 0x303 0x305 0x307
--32k | 0x310 0x313 0x316 0x319
--64k | 0x311 0x314 0x317 0x31A
--16M | 0x312 0x315 0x318 0x31B
-+256 | 0x301 0x303 0x305 0x307
-+32k | 0x310 0x313 0x316 0x319
-+64k | 0x311 0x314 0x317 0x31A
-+16M | 0x312 0x315 0x318 0x31B
-
--To enable one of those modes you have to specify "vga=ask" in the
--lilo.conf file and rerun LILO. Then you can type in the desired
--mode at the "vga=ask" prompt. For example if you like to use
--1024x768x256 colors you have to say "305" at this prompt.
-+To enable one of those modes you have to specify "vga=ask" in the lilo.conf
-+file and rerun LILO. Then you can type in the desired mode at the "vga=ask"
-+prompt. For example if you like to use 1024x768x256 colors you have to say
-+"305" at this prompt.
-
- If this does not work, this might be because your BIOS does not support
- linear framebuffers or because it does not support this mode at all.
-@@ -72,11 +83,12 @@ Even if your board does, it might be the BIOS which does not. VESA BIOS
- Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a
- "bad mode number" message if something goes wrong.
-
--1. Note: LILO cannot handle hex, for booting directly with
-+1. Note: LILO cannot handle hex, for booting directly with
- "vga=mode-number" you have to transform the numbers to decimal.
- 2. Note: Some newer versions of LILO appear to work with those hex values,
- if you set the 0x in front of the numbers.
-
-+
- X11
- ===
-
-@@ -84,98 +96,164 @@ XF68_FBDev should work just fine, but it is non-accelerated. Running
- another (accelerated) X-Server like XF86_SVGA might or might not work.
- It depends on X-Server and graphics board.
-
--The X-Server must restore the video mode correctly, else you end up
-+The X-Server must restore the video mode correctly, or else you end up
- with a broken console (and vesafb cannot do anything about this).
-+With vesafb-tng chances are that the console will be restored properly
-+even if the X server messes up the video mode.
-
-
- Refresh rates
- =============
-
--There is no way to change the vesafb video mode and/or timings after
--booting linux. If you are not happy with the 60 Hz refresh rate, you
--have these options:
-+With VBE 3.0 compatible BIOSes and vesafb-tng it is possible to change
-+the refresh rate either at boot time (by specifying the @<rr> part of
-+the mode name) or later, using the fbset utility.
-+
-+If you want to use the default BIOS refresh rate while switching modes
-+on a running system, set pixclock to 0.
-
-- * configure and load the DOS-Tools for your the graphics board (if
-- available) and boot linux with loadlin.
-- * use a native driver (matroxfb/atyfb) instead if vesafb. If none
-+With VBE 2.0 there is no way to change the mode timings after booting
-+Linux. If you are not happy with the 60 Hz refresh rate, you have
-+the following options:
-+
-+ * Configure and load the DOS tools for your the graphics board (if
-+ available) and boot Linux with loadlin.
-+ * Use a native driver (matroxfb/atyfb) instead of vesafb. If none
- is available, write a new one!
-- * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0
-- support nor the specs, so I have not checked this yet.
-+ * Use a BIOS editor to change the default refresh rate (such an
-+ editor does exist at least for ATI Radeon BIOSes).
-+ * If you're running a non-vm86 and VBE 3.0 compatible system, you can
-+ use a kernel patch (vesafb-rrc) to hard-code some mode timings in
-+ the kernel and use these while setting the video mode at boot time.
-+
-+Note that there are some boards (nVidia 59**, 57** and newer models)
-+claiming that their Video BIOS is VBE 3.0 compliant, while ignoring the
-+CRTC values provided by software such as vesafb-tng. You'll not be able
-+to adjust the refresh rate if you're using one of these boards.
-
-
- Configuration
- =============
-
--The VESA BIOS provides protected mode interface for changing
--some parameters. vesafb can use it for palette changes and
--to pan the display. It is turned off by default because it
--seems not to work with some BIOS versions, but there are options
--to turn it on.
--
--You can pass options to vesafb using "video=vesafb:option" on
--the kernel command line. Multiple options should be separated
--by comma, like this: "video=vesafb:ypan,invers"
--
--Accepted options:
--
--invers no comment...
--
--ypan enable display panning using the VESA protected mode
-- interface. The visible screen is just a window of the
-- video memory, console scrolling is done by changing the
-- start of the window.
-- pro: * scrolling (fullscreen) is fast, because there is
-- no need to copy around data.
-- * You'll get scrollback (the Shift-PgUp thing),
-- the video memory can be used as scrollback buffer
-- kontra: * scrolling only parts of the screen causes some
-- ugly flicker effects (boot logo flickers for
-- example).
--
--ywrap Same as ypan, but assumes your gfx board can wrap-around
-- the video memory (i.e. starts reading from top if it
-- reaches the end of video memory). Faster than ypan.
--
--redraw scroll by redrawing the affected part of the screen, this
-- is the safe (and slow) default.
--
--
--vgapal Use the standard vga registers for palette changes.
-- This is the default.
--pmipal Use the protected mode interface for palette changes.
--
--mtrr:n setup memory type range registers for the vesafb framebuffer
-- where n:
-- 0 - disabled (equivalent to nomtrr) (default)
-- 1 - uncachable
-- 2 - write-back
-- 3 - write-combining
-- 4 - write-through
--
-- If you see the following in dmesg, choose the type that matches the
-- old one. In this example, use "mtrr:2".
-+The VESA BIOS provides protected mode interface for changing some parameters.
-+vesafb can use it for palette changes and to pan the display. It is turned
-+off by default because it seems not to work with some BIOS versions, but
-+there are options to turn it on.
-+
-+You can pass options to vesafb using "video=vesafb:option" on the kernel
-+command line. Multiple options should be separated by a comma, like this:
-+"video=vesafb:ypan,1024x768-32@85"
-+
-+Note that vesafb-tng still uses the "video=vesafb:option" format of the
-+kernel command line video parameter. "video=vesafb-tng:xxx" is incorrect.
-+
-+Accepted options (both vesafb and vesafb-tng):
-+
-+ypan Enable display panning using the VESA protected mode interface
-+ The visible screen is just a window of the video memory,
-+ console scrolling is done by changing the start of the window.
-+ pro: * scrolling (fullscreen) is fast, because there is
-+ no need to copy around data.
-+ * you'll get scrollback (the Shift-PgUp thing),
-+ the video memory can be used as scrollback buffer
-+ con: * scrolling only parts of the screen causes some
-+ ugly flicker effects (boot logo flickers for
-+ example).
-+
-+ywrap Same as ypan, but assumes your gfx board can wrap-around the video
-+ memory (i.e. starts reading from top if it reaches the end of
-+ video memory). Faster than ypan.
-+
-+redraw Scroll by redrawing the affected part of the screen, this is the
-+ safe (and slow) default.
-+
-+vgapal Use the standard VGA registers for palette changes.
-+
-+pmipal Use the protected mode interface for palette changes.
-+ This is the default is the protected mode interface is available.
-+
-+mtrr:n Setup memory type range registers for the vesafb framebuffer
-+ where n:
-+ 0 - disabled (equivalent to nomtrr) (default)
-+ 1 - uncachable
-+ 2 - write-back
-+ 3 - write-combining
-+ 4 - write-through
-+
-+ If you see the following in dmesg, choose the type that matches
-+ the old one. In this example, use "mtrr:2".
- ...
- mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
- ...
-
--nomtrr disable mtrr
-+nomtrr Do not use memory type range registers for vesafb.
-
- vremap:n
- remap 'n' MiB of video RAM. If 0 or not specified, remap memory
-- according to video mode. (2.5.66 patch/idea by Antonino Daplas
-- reversed to give override possibility (allocate more fb memory
-- than the kernel would) to 2.4 by tmb@iki.fi)
-+ according to video mode. (2.5.66 patch/idea by Antonino Daplas
-+ reversed to give override possibility (allocate more fb memory
-+ than the kernel would) to 2.4 by tmb@iki.fi)
-
- vtotal:n
- if the video BIOS of your card incorrectly determines the total
- amount of video RAM, use this option to override the BIOS (in MiB).
-
--Have fun!
-+Options accepted only by vesafb-tng:
-+
-+<mode> The mode you want to set, in the standard modedb format. Refer to
-+ modedb.txt for a detailed description. If you specify a mode that is
-+ not supported by your board's BIOS, vesafb-tng will attempt to set a
-+ similar mode. The list of supported modes can be found in
-+ /proc/fbx/modes, where x is the framebuffer number (usually 0).
-+ When vesafb-tng is compiled as a module, the mode string should be
-+ provided as a value of the parameter 'mode'.
-+
-+vbemode:x
-+ Force the use of VBE mode x. The mode will only be set if it's
-+ found in the VBE-provided list of supported modes.
-+ NOTE: The mode number 'x' should be specified in VESA mode number
-+ notation, not the Linux kernel one (eg. 257 instead of 769).
-+ HINT: If you use this option because normal <mode> parameter does
-+ not work for you and you use a X server, you'll probably want to
-+ set the 'nocrtc' option to ensure that the video mode is properly
-+ restored after console <-> X switches.
-+
-+nocrtc Do not use CRTC timings while setting the video mode. This option
-+ makes sence only with VBE 3.0 compliant systems. Use it if you have
-+ problems with modes set in the standard way. Note that using this
-+ option means that any refresh rate adjustments will be ignored
-+ and the refresh rate will stay at your BIOS default (60 Hz).
-+
-+noedid Do not try to fetch and use EDID-provided modes.
-+
-+noblank Disable hardware blanking.
-+
-+gtf Force the use of VESA's GTF (Generalized Timing Formula). Specifying
-+ this will cause vesafb to skip its internal modedb and EDID-modedb
-+ and jump straight to the GTF part of the code (normally used only if
-+ everything else failed). This can be useful if you want to get as
-+ much as possible from your graphics board but your BIOS doesn't
-+ support modes with the refresh rates you require. Note that you may
-+ need to specify the maxhf, maxvf and maxclk parameters if they are not
-+ provided by the EDID block.
-+
-+Additionally, the following parameters may be provided. They all override the
-+EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
-+the correct values for maxhf, maxvf and maxclk for your hardware.
-+
-+maxhf:n Maximum horizontal frequency (in kHz).
-+maxvf:n Maximum vertical frequency (in Hz).
-+maxclk:n Maximum pixel clock (in MHz).
-
-- Gerd
-+Have fun!
-
- --
-+Original document for the vesafb driver by
- Gerd Knorr <kraxel@goldbach.in-berlin.de>
-
--Minor (mostly typo) changes
--by Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
-+Minor (mostly typo) changes by
-+Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
-+
-+Extended documentation for vm86, VBE 3.0 and vesafb-tng by
-+Michal Januszewski <spock@gentoo.org>
-+
-diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S
-index 2c5b5cc..2c2d4b5 100644
---- a/arch/i386/boot/video.S
-+++ b/arch/i386/boot/video.S
-@@ -163,10 +163,12 @@ basret: ret
- # parameters in the default 80x25 mode -- these are set directly,
- # because some very obscure BIOSes supply insane values.
- mode_params:
-+#ifdef CONFIG_FB_VESA_STD
- #ifdef CONFIG_VIDEO_SELECT
- cmpb $0, graphic_mode
- jnz mopar_gr
- #endif
-+#endif
- movb $0x03, %ah # Read cursor position
- xorb %bh, %bh
- int $0x10
-@@ -199,6 +201,7 @@ mopar2: movb %al, %fs:(PARAM_VIDEO_LINES)
- ret
-
- #ifdef CONFIG_VIDEO_SELECT
-+#ifdef CONFIG_FB_VESA_STD
- # Fetching of VESA frame buffer parameters
- mopar_gr:
- leaw modelist+1024, %di
-@@ -281,6 +284,7 @@ dac_done:
- movw %es, %fs:(PARAM_VESAPM_SEG)
- movw %di, %fs:(PARAM_VESAPM_OFF)
- no_pm: ret
-+#endif
-
- # The video mode menu
- mode_menu:
-@@ -495,10 +499,12 @@ mode_set:
-
- cmpb $VIDEO_FIRST_V7>>8, %ah
- jz setv7
--
-+
-+#ifdef CONFIG_FB_VESA_STD
- cmpb $VIDEO_FIRST_VESA>>8, %ah
- jnc check_vesa
--
-+#endif
-+
- orb %ah, %ah
- jz setmenu
-
-@@ -570,6 +576,7 @@ setr1: lodsw
- movw -4(%si), %ax # Fetch mode ID
- jmp _m_s
-
-+#ifdef CONFIG_FB_VESA_STD
- check_vesa:
- leaw modelist+1024, %di
- subb $VIDEO_FIRST_VESA>>8, %bh
-@@ -603,6 +610,7 @@ check_vesa:
- ret
-
- _setbad: jmp setbad # Ugly...
-+#endif
-
- # Recalculate vertical display end registers -- this fixes various
- # inconsistencies of extended modes on many adapters. Called when
-diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
-index 1393523..8a05f95 100644
---- a/drivers/char/sysrq.c
-+++ b/drivers/char/sysrq.c
-@@ -240,7 +240,7 @@ static void send_sig_all(int sig)
- struct task_struct *p;
-
- for_each_process(p) {
-- if (p->mm && !is_init(p))
-+ if (p->mm && !is_init(p) && !(p->flags & PF_BORROWED_MM))
- /* Not swapper, init nor kernel thread */
- force_sig(sig, p);
- }
-diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
-index 4e83f01..ae122fd 100644
---- a/drivers/video/Kconfig
-+++ b/drivers/video/Kconfig
-@@ -547,8 +547,22 @@ config FB_TGA
- cards. Say Y if you have one of those.
-
- config FB_VESA
-- bool "VESA VGA graphics support"
-- depends on (FB = y) && X86
-+ tristate "VESA VGA graphics support"
-+ depends on (FB = y) && (X86 || X86_64)
-+ help
-+ This is the frame buffer device driver for generic VESA 2.0
-+ compliant graphic cards. The older VESA 1.2 cards are not supported.
-+ You will get a boot time penguin logo at no additional cost. Please
-+ read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
-+
-+choice
-+ prompt "VESA driver type"
-+ depends on FB_VESA
-+ default FB_VESA_STD if X86_64
-+ default FB_VESA_TNG if X86
-+
-+config FB_VESA_STD
-+ bool "vesafb"
- select FB_CFB_FILLRECT
- select FB_CFB_COPYAREA
- select FB_CFB_IMAGEBLIT
-@@ -557,7 +571,43 @@ config FB_VESA
- This is the frame buffer device driver for generic VESA 2.0
- compliant graphic cards. The older VESA 1.2 cards are not supported.
- You will get a boot time penguin logo at no additional cost. Please
-- read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
-+ read <file:Documentation/fb/vesafb.txt>. Choose this driver if you
-+ are experiencing problems with vesafb-tng or if you own a 64-bit system.
-+
-+ Note that this driver cannot be compiled as a module.
-+
-+config FB_VESA_TNG
-+ bool "vesafb-tng"
-+ depends on !X86_64
-+ select FB_MODE_HELPERS
-+ select FB_CFB_FILLRECT
-+ select FB_CFB_COPYAREA
-+ select FB_CFB_IMAGEBLIT
-+ help
-+ This is an enhanced generic frame buffer device driver for
-+ VBE 2.0 compliant graphic cards. It can take advantage of VBE 3.0
-+ features (refresh rate adjustment) when these are available.
-+ The driver also makes it possible to change the video mode
-+ on the fly and to switch back to text mode when it's unloaded.
-+
-+ If the driver is compiled as a module, the module will be called
-+ vesafb-tng.
-+
-+endchoice
-+
-+config FB_VESA_DEFAULT_MODE
-+ string "VESA default mode"
-+ depends on FB_VESA_TNG
-+ default "640x480@60"
-+ help
-+ This option is used to determine the default mode vesafb is
-+ supposed to switch to in case no mode is provided as a kernel
-+ command line parameter.
-+
-+config VIDEO_SELECT
-+ bool
-+ depends on FB_VESA
-+ default y
-
- config FB_IMAC
- bool "Intel-based Macintosh Framebuffer Support"
-diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index 309a26d..e57b0e7 100644
---- a/drivers/video/Makefile
-+++ b/drivers/video/Makefile
-@@ -102,7 +102,11 @@ obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
- obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o
-
- # Platform or fallback drivers go here
--obj-$(CONFIG_FB_VESA) += vesafb.o
-+ifeq ($(CONFIG_FB_VESA_STD),y)
-+ obj-y += vesafb.o
-+else
-+ obj-$(CONFIG_FB_VESA) += vesafb-thread.o vesafb-tng.o
-+endif
- obj-$(CONFIG_FB_IMAC) += imacfb.o
- obj-$(CONFIG_FB_VGA16) += vga16fb.o vgastate.o
- obj-$(CONFIG_FB_OF) += offb.o
-diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index 3cfea31..bfb39cc 100644
---- a/drivers/video/fbmem.c
-+++ b/drivers/video/fbmem.c
-@@ -1408,6 +1408,7 @@ fbmem_init(void)
- printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
- fb_class = NULL;
- }
-+
- return 0;
- }
-
-diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
-index 5df41f6..f838a53 100644
---- a/drivers/video/modedb.c
-+++ b/drivers/video/modedb.c
-@@ -674,6 +674,7 @@ void fb_var_to_videomode(struct fb_videomode *mode,
- {
- u32 pixclock, hfreq, htotal, vtotal;
-
-+ mode->refresh = 0;
- mode->name = NULL;
- mode->xres = var->xres;
- mode->yres = var->yres;
-@@ -1025,3 +1026,4 @@ EXPORT_SYMBOL(fb_find_best_mode);
- EXPORT_SYMBOL(fb_find_nearest_mode);
- EXPORT_SYMBOL(fb_videomode_to_modelist);
- EXPORT_SYMBOL(fb_find_mode);
-+EXPORT_SYMBOL(fb_destroy_modelist);
-diff --git a/drivers/video/vesafb-thread.c b/drivers/video/vesafb-thread.c
-new file mode 100644
-index 0000000..543e202
---- /dev/null
-+++ b/drivers/video/vesafb-thread.c
-@@ -0,0 +1,751 @@
-+/*
-+ * Framebuffer driver for VBE 2.0+ compliant graphic boards.
-+ * Kernel thread and vm86 routines.
-+ *
-+ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
-+ *
-+ */
-+
-+#include <linux/workqueue.h>
-+#include <linux/completion.h>
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/mm.h>
-+#include <linux/delay.h>
-+#include <linux/signal.h>
-+#include <linux/freezer.h>
-+#include <linux/suspend.h>
-+#include <linux/unistd.h>
-+#include <video/vesa.h>
-+#include <video/edid.h>
-+#include <asm/mman.h>
-+#include <asm/page.h>
-+#include <asm/vm86.h>
-+#include <asm/thread_info.h>
-+#include <asm/uaccess.h>
-+#include <asm/mmu_context.h>
-+#include "edid.h"
-+
-+static int errno;
-+
-+static DECLARE_COMPLETION(vesafb_th_completion);
-+static DECLARE_MUTEX(vesafb_task_list_sem);
-+static LIST_HEAD(vesafb_task_list);
-+static DECLARE_WAIT_QUEUE_HEAD(vesafb_wait);
-+
-+static struct vm86_struct vm86;
-+static int vesafb_pid = 0;
-+
-+#define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
-+#define VM86_PUSHW(x) \
-+do { \
-+ vm86.regs.esp -= 2; \
-+ *(u16*)(STACK_ADDR + vm86.regs.esp) = x; \
-+} while(0);
-+
-+/* Stack, the return code and buffers will be put into
-+ * one contiguous memory chunk:
-+ *
-+ * [ STACK | RET_CODE | BUFFER ]
-+ *
-+ * Some video BIOSes (sis6326) try to store data somewhere
-+ * in 0x7000-0x7fff, so we zeromap more memory to be safe.
-+ */
-+#define IVTBDA_SIZE PAGE_SIZE
-+#define RET_CODE_SIZE 0x0010
-+#define STACK_SIZE 0x0500
-+#define BUFFER_SIZE 0x10000
-+
-+/* The amount of memory that will be allocated should be a multiple
-+ * of PAGE_SIZE. */
-+#define __MEM_SIZE (RET_CODE_SIZE + STACK_SIZE + BUFFER_SIZE)
-+#define REAL_MEM_SIZE (((__MEM_SIZE / PAGE_SIZE) + 1) * PAGE_SIZE)
-+
-+#define IVTBDA_ADDR 0x00000
-+#define STACK_ADDR (IVTBDA_ADDR + IVTBDA_SIZE)
-+#define RET_CODE_ADDR (STACK_ADDR + STACK_SIZE)
-+#define BUF_ADDR (RET_CODE_ADDR + RET_CODE_SIZE)
-+
-+#define FLAG_D (1 << 10)
-+
-+/* Syscalls used by the vesafb thread */
-+static int vm86old(struct vm86_struct __user* v86)
-+{
-+ long res;
-+ __asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
-+ : "=a" (res)
-+ : "0" (__NR_vm86old), "ri" ((long)(v86)) : "memory");
-+
-+ if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
-+ errno = -res;
-+ res = -1;
-+ }
-+ return (int)res;
-+}
-+
-+static int ioperm(unsigned long a, unsigned long b, unsigned long c)
-+{
-+ long res;
-+ __asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
-+ : "=a" (res)
-+ : "0" (__NR_ioperm), "ri" ((long)(a)), "c" ((long)(b)),
-+ "d" ((long)(c)) : "memory");
-+
-+ if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
-+ errno = -res;
-+ res = -1;
-+ }
-+ return (int)res;
-+}
-+
-+/* Segment prefix opcodes */
-+enum {
-+ P_CS = 0x2e,
-+ P_SS = 0x36,
-+ P_DS = 0x3e,
-+ P_ES = 0x26,
-+ P_FS = 0x64,
-+ P_GS = 0x65
-+};
-+
-+/* Emulated vm86 ins instruction */
-+static void vm86_ins(int size)
-+{
-+ u32 edx, edi;
-+ edx = vm86.regs.edx & 0xffff;
-+ edi = (vm86.regs.edi & 0xffff) + (u32)(vm86.regs.es << 4);
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("std\n");
-+ else
-+ asm volatile ("cld\n");
-+
-+ switch (size) {
-+ case 4:
-+ asm volatile ("insl\n" : "=D" (edi) : "d" (edx), "0" (edi));
-+ break;
-+ case 2:
-+ asm volatile ("insw\n" : "=D" (edi) : "d" (edx), "0" (edi));
-+ break;
-+ case 1:
-+ asm volatile ("insb\n" : "=D" (edi) : "d" (edx), "0" (edi));
-+ break;
-+ }
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("cld\n");
-+
-+ edi -= (u32)(vm86.regs.es << 4);
-+
-+ vm86.regs.edi &= 0xffff0000;
-+ vm86.regs.edi |= edi & 0xffff;
-+}
-+
-+static void vm86_rep_ins(int size)
-+{
-+ u16 cx = vm86.regs.ecx;
-+ while (cx--)
-+ vm86_ins(size);
-+
-+ vm86.regs.ecx &= 0xffff0000;
-+}
-+
-+/* Emulated vm86 outs instruction */
-+static void vm86_outs(int size, int segment)
-+{
-+ u32 edx, esi, base;
-+
-+ edx = vm86.regs.edx & 0xffff;
-+ esi = vm86.regs.esi & 0xffff;
-+
-+ switch (segment) {
-+ case P_CS: base = vm86.regs.cs; break;
-+ case P_SS: base = vm86.regs.ss; break;
-+ case P_ES: base = vm86.regs.es; break;
-+ case P_FS: base = vm86.regs.fs; break;
-+ case P_GS: base = vm86.regs.gs; break;
-+ default: base = vm86.regs.ds; break;
-+ }
-+
-+ esi += base << 4;
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("std\n");
-+ else
-+ asm volatile ("cld\n");
-+
-+ switch (size) {
-+ case 4:
-+ asm volatile ("outsl\n" : "=S" (esi) : "d" (edx), "0" (esi));
-+ break;
-+ case 2:
-+ asm volatile ("outsw\n" : "=S" (esi) : "d" (edx), "0" (esi));
-+ break;
-+ case 1:
-+ asm volatile ("outsb\n" : "=S" (esi) : "d" (edx), "0" (esi));
-+ break;
-+ }
-+
-+ if (vm86.regs.eflags & FLAG_D)
-+ asm volatile ("cld");
-+
-+ esi -= base << 4;
-+ vm86.regs.esi &= 0xffff0000;
-+ vm86.regs.esi |= (esi & 0xffff);
-+}
-+
-+static void vm86_rep_outs(int size, int segment)
-+{
-+ u16 cx = vm86.regs.ecx;
-+ while (cx--)
-+ vm86_outs(size, segment);
-+
-+ vm86.regs.ecx &= 0xffff0000;
-+}
-+
-+static int vm86_do_unknown(void)
-+{
-+ u8 data32 = 0, segment = P_DS, rep = 0;
-+ u8 *instr;
-+ int ret = 0, i = 0;
-+
-+ instr = (u8*)((vm86.regs.cs << 4) + vm86.regs.eip);
-+
-+ while (1) {
-+ switch(instr[i]) {
-+ case 0x66: /* operand size prefix */
-+ data32 = 1 - data32;
-+ i++;
-+ break;
-+ case 0xf2: /* repnz */
-+ case 0xf3: /* rep */
-+ rep = 1;
-+ i++;
-+ break;
-+ case P_CS: /* segment prefix */
-+ case P_SS:
-+ case P_DS:
-+ case P_ES:
-+ case P_FS:
-+ case P_GS:
-+ segment = instr[i];
-+ i++;
-+ break;
-+ case 0xf0: /* LOCK - ignored */
-+ case 0x67: /* address size prefix - ignored */
-+ i++;
-+ break;
-+ case 0x6c: /* insb */
-+ if (rep)
-+ vm86_rep_ins(1);
-+ else
-+ vm86_ins(1);
-+ i++;
-+ goto out;
-+ case 0x6d: /* insw / insd */
-+ if (rep) {
-+ if (data32)
-+ vm86_rep_ins(4);
-+ else
-+ vm86_rep_ins(2);
-+ } else {
-+ if (data32)
-+ vm86_ins(4);
-+ else
-+ vm86_ins(2);
-+ }
-+ i++;
-+ goto out;
-+ case 0x6e: /* outsb */
-+ if (rep)
-+ vm86_rep_outs(1, segment);
-+ else
-+ vm86_outs(1, segment);
-+ i++;
-+ goto out;
-+ case 0x6f: /* outsw / outsd */
-+ if (rep) {
-+ if (data32)
-+ vm86_rep_outs(4, segment);
-+ else
-+ vm86_rep_outs(2, segment);
-+ } else {
-+ if (data32)
-+ vm86_outs(4, segment);
-+ else
-+ vm86_outs(2, segment);
-+ }
-+ i++;
-+ goto out;
-+ case 0xe4: /* inb xx */
-+ asm volatile (
-+ "inb %w1, %b0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (instr[i+1]), "0" (vm86.regs.eax));
-+ i += 2;
-+ goto out;
-+ case 0xe5: /* inw xx / ind xx */
-+ if (data32) {
-+ asm volatile (
-+ "inl %w1, %0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (instr[i+1]),
-+ "0" (vm86.regs.eax));
-+ } else {
-+ asm volatile (
-+ "inw %w1, %w0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (instr[i+1]),
-+ "0" (vm86.regs.eax));
-+ }
-+ i += 2;
-+ goto out;
-+
-+ case 0xec: /* inb dx */
-+ asm volatile (
-+ "inb %w1, %b0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (vm86.regs.edx), "0" (vm86.regs.eax));
-+ i++;
-+ goto out;
-+ case 0xed: /* inw dx / ind dx */
-+ if (data32) {
-+ asm volatile (
-+ "inl %w1, %0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (vm86.regs.edx));
-+ } else {
-+ asm volatile (
-+ "inw %w1, %w0"
-+ : "=a" (vm86.regs.eax)
-+ : "d" (vm86.regs.edx));
-+ }
-+ i++;
-+ goto out;
-+ case 0xe6: /* outb xx */
-+ asm volatile (
-+ "outb %b0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax), "d" (instr[i+1]));
-+ i += 2;
-+ goto out;
-+ case 0xe7: /* outw xx / outd xx */
-+ if (data32) {
-+ asm volatile (
-+ "outl %0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (instr[i+1]));
-+ } else {
-+ asm volatile (
-+ "outw %w0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (instr[i+1]));
-+ }
-+ i += 2;
-+ goto out;
-+ case 0xee: /* outb dx */
-+ asm volatile (
-+ "outb %b0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax), "d" (vm86.regs.edx));
-+ i++;
-+ goto out;
-+ case 0xef: /* outw dx / outd dx */
-+ if (data32) {
-+ asm volatile (
-+ "outl %0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (vm86.regs.edx));
-+ } else {
-+ asm volatile (
-+ "outw %w0, %w1"
-+ : /* no return value */
-+ : "a" (vm86.regs.eax),
-+ "d" (vm86.regs.edx));
-+ }
-+ i++;
-+ goto out;
-+ default:
-+ printk(KERN_ERR "vesafb: BUG, opcode 0x%x emulation "
-+ "not supported (EIP: 0x%lx)\n",
-+ instr[i], (u32)(vm86.regs.cs << 4) +
-+ vm86.regs.eip);
-+ ret = 1;
-+ goto out;
-+ }
-+ }
-+out: vm86.regs.eip += i;
-+ return ret;
-+}
-+
-+void vesafb_do_vm86(struct vm86_regs *regs)
-+{
-+ unsigned int ret;
-+ u8 *retcode = (void*)RET_CODE_ADDR;
-+
-+ memset(&vm86,0,sizeof(vm86));
-+ memcpy(&vm86.regs, regs, sizeof(struct vm86_regs));
-+
-+ /* The return code */
-+ retcode[0] = 0xcd; /* int opcode */
-+ retcode[1] = 0xff; /* int number (255) */
-+
-+ /* We use int 0xff to get back to protected mode */
-+ memset(&vm86.int_revectored, 0, sizeof(vm86.int_revectored));
-+ ((unsigned char *)&vm86.int_revectored)[0xff / 8] |= (1 << (0xff % 8));
-+
-+ /*
-+ * We want to call int 0x10, so we set:
-+ * CS = 0x42 = 0x10 * 4 + 2
-+ * IP = 0x40 = 0x10 * 4
-+ * and SS:ESP. It's up to the caller to set the rest of the registers.
-+ */
-+ vm86.regs.eflags = DEFAULT_VM86_FLAGS;
-+ vm86.regs.cs = *(unsigned short *)0x42;
-+ vm86.regs.eip = *(unsigned short *)0x40;
-+ vm86.regs.ss = (STACK_ADDR >> 4);
-+ vm86.regs.esp = ((STACK_ADDR & 0x0000f) + STACK_SIZE);
-+
-+ /* These will be fetched off the stack when we come to an iret in the
-+ * int's 0x10 code. */
-+ VM86_PUSHW(DEFAULT_VM86_FLAGS);
-+ VM86_PUSHW((RET_CODE_ADDR >> 4)); /* return code segment */
-+ VM86_PUSHW((RET_CODE_ADDR & 0x0000f)); /* return code offset */
-+
-+ while(1) {
-+ ret = vm86old(&vm86);
-+
-+ if (VM86_TYPE(ret) == VM86_INTx) {
-+ int vint = VM86_ARG(ret);
-+
-+ /* If exit from vm86 was caused by int 0xff, then
-+ * we're done.. */
-+ if (vint == 0xff)
-+ goto out;
-+
-+ /* .. otherwise, we have to call the int handler
-+ * manually */
-+ VM86_PUSHW(vm86.regs.eflags);
-+ VM86_PUSHW(vm86.regs.cs);
-+ VM86_PUSHW(vm86.regs.eip);
-+
-+ vm86.regs.cs = *(u16 *)((vint << 2) + 2);
-+ vm86.regs.eip = *(u16 *)(vint << 2);
-+ vm86.regs.eflags &= ~(VIF_MASK | TF_MASK);
-+ } else if (VM86_TYPE(ret) == VM86_UNKNOWN) {
-+ if (vm86_do_unknown())
-+ goto out;
-+ } else {
-+ printk(KERN_ERR "vesafb: BUG, returned from "
-+ "vm86 with %x (EIP: 0x%lx)\n",
-+ ret, (u32)(vm86.regs.cs << 4) +
-+ vm86.regs.eip);
-+ goto out;
-+ }
-+ }
-+
-+out: /* copy the registers' state back to the caller's struct */
-+ memcpy(regs, &vm86.regs, sizeof(struct vm86_regs));
-+}
-+
-+static int vesafb_remap_pfn_range(unsigned long start, unsigned long end,
-+ unsigned long pgoff, unsigned long prot,
-+ int type)
-+{
-+ struct vm_area_struct *vma;
-+ struct mm_struct *mm = current->mm;
-+ int ret = 0;
-+
-+ vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
-+ if (!vma)
-+ return -ENOMEM;
-+ memset(vma, 0, sizeof(*vma));
-+ down_write(&mm->mmap_sem);
-+ vma->vm_mm = mm;
-+ vma->vm_start = start;
-+ vma->vm_end = end;
-+ vma->vm_flags = VM_READ | VM_WRITE | VM_EXEC;
-+ vma->vm_flags |= mm->def_flags;
-+ vma->vm_page_prot.pgprot = prot;
-+ vma->vm_pgoff = pgoff;
-+
-+ if ((ret = insert_vm_struct(mm, vma))) {
-+ up_write(&mm->mmap_sem);
-+ kmem_cache_free(vm_area_cachep, vma);
-+ return ret;
-+ }
-+
-+ if (type) {
-+ ret = zeromap_page_range(vma,
-+ vma->vm_start,
-+ vma->vm_end - vma->vm_start,
-+ vma->vm_page_prot);
-+ } else {
-+ vma->vm_flags |= VM_SHARED;
-+ ret = remap_pfn_range(vma,
-+ vma->vm_start,
-+ vma->vm_pgoff,
-+ vma->vm_end - vma->vm_start,
-+ vma->vm_page_prot);
-+ }
-+ up_write(&mm->mmap_sem);
-+ return ret;
-+}
-+
-+static inline int vesafb_init_mem(void)
-+{
-+ int ret = 0;
-+
-+ /* The memory chunks we're remapping here should be multiples
-+ * of PAGE_SIZE. */
-+ ret += vesafb_remap_pfn_range(0x00000, IVTBDA_SIZE, 0,
-+ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
-+ ret += vesafb_remap_pfn_range(IVTBDA_SIZE, REAL_MEM_SIZE, 0,
-+ PROT_READ | PROT_EXEC | PROT_WRITE, 1);
-+ ret += vesafb_remap_pfn_range(0x9f000, 0x100000,
-+ 0x9f000 >> PAGE_SHIFT,
-+ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
-+ if (ret)
-+ printk(KERN_ERR "vesafb thread: memory remapping failed\n");
-+
-+ return ret;
-+}
-+
-+#define vesafb_get_string(str) \
-+{ \
-+ /* The address is in the form ssssoooo, where oooo = offset, \
-+ * ssss = segment */ \
-+ addr = ((p_vbe(tsk->buf)->str & 0xffff0000) >> 12) + \
-+ (p_vbe(tsk->buf)->str & 0x0000ffff); \
-+ \
-+ /* The data is in ROM which is shared between processes, so we \
-+ * just translate the real mode address into one visible from \
-+ * kernel space */ \
-+ if (addr >= 0xa0000) { \
-+ p_vbe(tsk->buf)->str = (u32) __va(addr); \
-+ \
-+ /* The data is in the buffer, we just have to convert the \
-+ * address so that it points into the buffer user provided. */ \
-+ } else if (addr > BUF_ADDR && addr < BUF_ADDR + \
-+ sizeof(struct vesafb_vbe_ib)) { \
-+ addr -= BUF_ADDR; \
-+ p_vbe(tsk->buf)->str = (u32) (tsk->buf + addr); \
-+ \
-+ /* This should never happen: someone was insane enough to put \
-+ * the data somewhere in RAM.. */ \
-+ } else { \
-+ p_vbe(tsk->buf)->str = (u32) ""; \
-+ } \
-+}
-+
-+void vesafb_handle_getvbeib(struct vesafb_task *tsk)
-+{
-+ int addr, res;
-+
-+ tsk->regs.es = (BUF_ADDR >> 4);
-+ tsk->regs.edi = (BUF_ADDR & 0x000f);
-+ strncpy(p_vbe(BUF_ADDR)->vbe_signature, "VBE2", 4);
-+
-+ vesafb_do_vm86(&tsk->regs);
-+ memcpy(tsk->buf, (void*)(BUF_ADDR), sizeof(struct vesafb_vbe_ib));
-+
-+ /* The OEM fields were not defined prior to VBE 2.0 */
-+ if (p_vbe(tsk->buf)->vbe_version >= 0x200) {
-+ vesafb_get_string(oem_string_ptr);
-+ vesafb_get_string(oem_vendor_name_ptr);
-+ vesafb_get_string(oem_product_name_ptr);
-+ vesafb_get_string(oem_product_rev_ptr);
-+ }
-+
-+ /* This is basically the same as vesafb_get_string() */
-+ addr = ((p_vbe(tsk->buf)->mode_list_ptr & 0xffff0000) >> 12) +
-+ (p_vbe(tsk->buf)->mode_list_ptr & 0x0000ffff);
-+
-+ if (addr >= 0xa0000) {
-+ p_vbe(tsk->buf)->mode_list_ptr = (u32) __va(addr);
-+ } else if (addr > BUF_ADDR && addr < BUF_ADDR +
-+ sizeof(struct vesafb_vbe_ib)) {
-+ addr -= BUF_ADDR;
-+ p_vbe(tsk->buf)->mode_list_ptr = (u32) (tsk->buf + addr);
-+ } else {
-+ res = 0;
-+ printk(KERN_WARNING "vesafb: warning, copying modelist "
-+ "from somewhere in RAM!\n");
-+ while (*(u16*)(addr+res) != 0xffff &&
-+ res < (sizeof(p_vbe(tsk->buf)->reserved) - 2)) {
-+ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) =
-+ *(u16*)(addr+res);
-+ res += 2;
-+ }
-+ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) = 0xffff;
-+ }
-+}
-+
-+int vesafb_handle_tasks(void)
-+{
-+ struct vesafb_task *tsk;
-+ struct list_head *curr, *next;
-+ int ret = 0;
-+
-+ down(&vesafb_task_list_sem);
-+ list_for_each_safe(curr, next, &vesafb_task_list) {
-+ tsk = list_entry(curr, struct vesafb_task, node);
-+
-+ if (tsk->flags & TF_EXIT) {
-+ ret = 1;
-+ goto task_done;
-+ }
-+ if (tsk->flags & TF_GETVBEIB) {
-+ vesafb_handle_getvbeib(tsk);
-+ goto task_done;
-+ }
-+ /* Do we need to store a pointer to the buffer in ES:EDI? */
-+ if (tsk->flags & TF_BUF_DI) {
-+ tsk->regs.es = (BUF_ADDR >> 4);
-+ tsk->regs.edi = (BUF_ADDR & 0x000f);
-+ }
-+ /* Sometimes the pointer has to be in ES:EBX. */
-+ if (tsk->flags & TF_BUF_BX) {
-+ tsk->regs.es = (BUF_ADDR >> 4);
-+ tsk->regs.ebx = (BUF_ADDR & 0x000f);
-+ }
-+ if (tsk->flags & (TF_BUF_DI | TF_BUF_BX))
-+ memcpy((void*)BUF_ADDR, tsk->buf, tsk->buf_len);
-+
-+ vesafb_do_vm86(&tsk->regs);
-+
-+ if (tsk->flags & TF_RETURN_BUF)
-+ memcpy(tsk->buf, (void*)BUF_ADDR, tsk->buf_len);
-+
-+task_done: list_del(curr);
-+ complete(&tsk->done);
-+ }
-+
-+ /* If we're going to kill this thread, don't allow any elements
-+ * to be added to the task list. */
-+ if (!ret)
-+ up(&vesafb_task_list_sem);
-+
-+ return ret;
-+}
-+
-+/*
-+ * This 'hybrid' thread serves as a backend for vesafb-tng, handling all vm86
-+ * calls. It is started as a kernel thread. It then creates its own mm struct,
-+ * thus separating itself from any userspace processes. At this moment, it
-+ * stops being a kernel thread (kernel threads have mm = NULL) and becomes
-+ * a 'hybrid' thread -- one that has full access to kernel space, yet runs
-+ * with its own address space.
-+ *
-+ * This is necessary because in order to make vm86 calls some parts of the
-+ * first 1MB of RAM have to be setup to mimic the real mode. These are:
-+ * - interrupt vector table [0x00000-0x003ff]
-+ * - BIOS data area [0x00400-0x004ff]
-+ * - Extended BIOS data area [0x9fc00-0x9ffff]
-+ * - the video RAM [0xa0000-0xbffff]
-+ * - video BIOS [0xc0000-0xcffff]
-+ * - motherboard BIOS [0xf0000-0xfffff]
-+ */
-+int vesafb_thread(void *unused)
-+{
-+ int err = 0;
-+
-+ set_fs(KERNEL_DS);
-+ daemonize("vesafb");
-+
-+ if (set_new_mm()) {
-+ err = -ENOMEM;
-+ goto thr_end;
-+ }
-+ if (vesafb_init_mem()) {
-+ err = -ENOMEM;
-+ goto thr_end;
-+ }
-+
-+ DPRINTK("started vesafb thread\n");
-+
-+ /* Having an IO bitmap makes things faster as we avoid GPFs
-+ * when running vm86 code. We can live if it fails, though,
-+ * so don't bother checking for errors. */
-+ ioperm(0,1024,1);
-+ set_user_nice(current, -10);
-+
-+ complete(&vesafb_th_completion);
-+
-+ while (1) {
-+ if (vesafb_handle_tasks())
-+ break;
-+ wait_event_interruptible(vesafb_wait,
-+ !list_empty(&vesafb_task_list));
-+ try_to_freeze();
-+ }
-+
-+out: DPRINTK("exiting the vesafb thread\n");
-+ vesafb_pid = -1;
-+
-+ /* Now that all callers know this thread is no longer running
-+ * (pid < 0), allow them to continue. */
-+ up(&vesafb_task_list_sem);
-+ return err;
-+thr_end:
-+ down(&vesafb_task_list_sem);
-+ complete(&vesafb_th_completion);
-+ goto out;
-+}
-+
-+int vesafb_queue_task(struct vesafb_task *tsk)
-+{
-+ down(&vesafb_task_list_sem);
-+ if (vesafb_pid < 0)
-+ return -1;
-+ list_add_tail(&tsk->node, &vesafb_task_list);
-+ up(&vesafb_task_list_sem);
-+ wake_up(&vesafb_wait);
-+ return 0;
-+}
-+
-+int vesafb_wait_for_thread(void)
-+{
-+ /* PID 0 means that the thread is still initializing. */
-+ if (vesafb_pid < 0)
-+ return -1;
-+ wait_for_completion(&vesafb_th_completion);
-+ return 0;
-+}
-+
-+int __init vesafb_init_thread(void)
-+{
-+ vesafb_pid = kernel_thread(vesafb_thread,NULL,0);
-+ return 0;
-+}
-+
-+#ifdef MODULE
-+void __exit vesafb_kill_thread(void)
-+{
-+ struct vesafb_task *tsk;
-+ if (vesafb_pid <= 0)
-+ return;
-+
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ return;
-+ tsk->flags |= TF_EXIT;
-+ vesafb_queue_task(tsk);
-+ vesafb_wait_for_task(tsk);
-+ kfree(tsk);
-+ return;
-+}
-+module_exit(vesafb_kill_thread);
-+#endif
-+module_init(vesafb_init_thread);
-+
-+EXPORT_SYMBOL_GPL(vesafb_queue_task);
-+EXPORT_SYMBOL_GPL(vesafb_wait_for_thread);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Michal Januszewski");
-+
-diff --git a/drivers/video/vesafb-tng.c b/drivers/video/vesafb-tng.c
-new file mode 100644
-index 0000000..b4d4394
---- /dev/null
-+++ b/drivers/video/vesafb-tng.c
-@@ -0,0 +1,1586 @@
-+/*
-+ * Framebuffer driver for VBE 2.0+ compliant graphic boards
-+ *
-+ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
-+ * Based upon vesafb code by Gerd Knorr <kraxel@goldbach.in-berlin.de>
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/errno.h>
-+#include <linux/string.h>
-+#include <linux/mm.h>
-+#include <linux/tty.h>
-+#include <linux/delay.h>
-+#include <linux/fb.h>
-+#include <linux/ioport.h>
-+#include <linux/init.h>
-+#include <linux/proc_fs.h>
-+#include <linux/completion.h>
-+#include <linux/platform_device.h>
-+#include <video/edid.h>
-+#include <video/vesa.h>
-+#include <video/vga.h>
-+#include <asm/io.h>
-+#include <asm/mtrr.h>
-+#include <asm/page.h>
-+#include <asm/pgtable.h>
-+#include "edid.h"
-+
-+#define dac_reg (0x3c8)
-+#define dac_val (0x3c9)
-+
-+#define VESAFB_NEED_EXACT_RES 1
-+#define VESAFB_NEED_EXACT_DEPTH 2
-+
-+/* --------------------------------------------------------------------- */
-+
-+static struct fb_var_screeninfo vesafb_defined __initdata = {
-+ .activate = FB_ACTIVATE_NOW,
-+ .height = 0,
-+ .width = 0,
-+ .right_margin = 32,
-+ .upper_margin = 16,
-+ .lower_margin = 4,
-+ .vsync_len = 4,
-+ .vmode = FB_VMODE_NONINTERLACED,
-+};
-+
-+static struct fb_fix_screeninfo vesafb_fix __initdata = {
-+ .id = "VESA VGA",
-+ .type = FB_TYPE_PACKED_PIXELS,
-+ .accel = FB_ACCEL_NONE,
-+};
-+
-+static int mtrr = 0; /* disable mtrr by default */
-+static int blank = 1; /* enable blanking by default */
-+static int ypan = 0; /* 0 - nothing, 1 - ypan, 2 - ywrap */
-+static int pmi_setpal = 1; /* pmi for palette changes */
-+static u16 *pmi_base = NULL; /* protected mode interface location */
-+static void (*pmi_start)(void) = NULL;
-+static void (*pmi_pal)(void) = NULL;
-+static struct vesafb_vbe_ib vbe_ib;
-+static struct vesafb_mode_ib *vbe_modes;
-+static int vbe_modes_cnt = 0;
-+static struct fb_info *vesafb_info = NULL;
-+static int nocrtc = 0; /* ignore CRTC settings */
-+static int noedid __initdata = 0; /* don't try DDC transfers */
-+static int vram_remap __initdata = 0; /* set amount of memory to be used */
-+static int vram_total __initdata = 0; /* set total amount of memory */
-+static u16 maxclk __initdata = 0; /* maximum pixel clock */
-+static u16 maxvf __initdata = 0; /* maximum vertical frequency */
-+static u16 maxhf __initdata = 0; /* maximum horizontal frequency */
-+static int gtf __initdata = 0; /* forces use of the GTF */
-+static char *mode_option __initdata = NULL;
-+static u16 vbemode __initdata = 0;
-+
-+/* --------------------------------------------------------------------- */
-+
-+static int vesafb_find_vbe_mode(int xres, int yres, int depth,
-+ unsigned char flags)
-+{
-+ int i, match = -1, h = 0, d = 0x7fffffff;
-+
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ h = abs(vbe_modes[i].x_res - xres) +
-+ abs(vbe_modes[i].y_res - yres) +
-+ abs(depth - vbe_modes[i].depth);
-+ if (h == 0)
-+ return i;
-+ if (h < d || (h == d && vbe_modes[i].depth > depth)) {
-+ d = h;
-+ match = i;
-+ }
-+ }
-+ i = 1;
-+
-+ if (flags & VESAFB_NEED_EXACT_DEPTH && vbe_modes[match].depth != depth)
-+ i = 0;
-+ if (flags & VESAFB_NEED_EXACT_RES && d > 24)
-+ i = 0;
-+ if (i != 0)
-+ return match;
-+ else
-+ return -1;
-+}
-+
-+static int vesafb_pan_display(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ int offset;
-+
-+ offset = (var->yoffset * info->fix.line_length + var->xoffset) / 4;
-+
-+ /* It turns out it's not the best idea to do panning via vm86,
-+ * so we only allow it if we have a PMI. */
-+ if (pmi_start) {
-+ __asm__ __volatile__(
-+ "call *(%%edi)"
-+ : /* no return value */
-+ : "a" (0x4f07), /* EAX */
-+ "b" (0), /* EBX */
-+ "c" (offset), /* ECX */
-+ "d" (offset >> 16), /* EDX */
-+ "D" (&pmi_start)); /* EDI */
-+ }
-+ return 0;
-+}
-+
-+static int vesafb_blank(int blank, struct fb_info *info)
-+{
-+ struct vesafb_task *tsk;
-+ int err = 1;
-+
-+ if (vbe_ib.capabilities & VBE_CAP_VGACOMPAT) {
-+ int loop = 10000;
-+ u8 seq = 0, crtc17 = 0;
-+
-+ if (blank == FB_BLANK_POWERDOWN) {
-+ seq = 0x20;
-+ crtc17 = 0x00;
-+ err = 0;
-+ } else {
-+ seq = 0x00;
-+ crtc17 = 0x80;
-+ err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
-+ }
-+
-+ vga_wseq(NULL, 0x00, 0x01);
-+ seq |= vga_rseq(NULL, 0x01) & ~0x20;
-+ vga_wseq(NULL, 0x00, seq);
-+
-+ crtc17 |= vga_rcrt(NULL, 0x17) & ~0x80;
-+ while (loop--);
-+ vga_wcrt(NULL, 0x17, crtc17);
-+ vga_wseq(NULL, 0x00, 0x03);
-+ } else {
-+ vesafb_create_task (tsk);
-+ if (!tsk)
-+ return -ENOMEM;
-+ tsk->regs.eax = 0x4f10;
-+ switch (blank) {
-+ case FB_BLANK_UNBLANK:
-+ tsk->regs.ebx = 0x0001;
-+ break;
-+ case FB_BLANK_NORMAL:
-+ tsk->regs.ebx = 0x0101; /* standby */
-+ break;
-+ case FB_BLANK_POWERDOWN:
-+ tsk->regs.ebx = 0x0401; /* powerdown */
-+ break;
-+ default:
-+ goto out;
-+ }
-+ tsk->flags = TF_CALL;
-+ if (!vesafb_queue_task (tsk))
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) == 0x004f)
-+ err = 0;
-+out: kfree(tsk);
-+ }
-+ return err;
-+}
-+
-+static int vesafb_setpalette(struct vesafb_pal_entry *entries, int count,
-+ int start, struct fb_info *info)
-+{
-+ struct vesafb_task *tsk;
-+ int i = ((struct vesafb_par*)info->par)->mode_idx;
-+ int ret = 0;
-+
-+ /* We support palette modifications for 8 bpp modes only, so
-+ * there can never be more than 256 entries. */
-+ if (start + count > 256)
-+ return -EINVAL;
-+
-+ /* Use VGA registers if mode is VGA-compatible. */
-+ if (i >= 0 && i < vbe_modes_cnt &&
-+ vbe_modes[i].mode_attr & VBE_MODE_VGACOMPAT) {
-+ for (i = 0; i < count; i++) {
-+ outb_p(start + i, dac_reg);
-+ outb_p(entries[i].red, dac_val);
-+ outb_p(entries[i].green, dac_val);
-+ outb_p(entries[i].blue, dac_val);
-+ }
-+ } else if (pmi_setpal) {
-+ __asm__ __volatile__(
-+ "call *(%%esi)"
-+ : /* no return value */
-+ : "a" (0x4f09), /* EAX */
-+ "b" (0), /* EBX */
-+ "c" (count), /* ECX */
-+ "d" (start), /* EDX */
-+ "D" (entries), /* EDI */
-+ "S" (&pmi_pal)); /* ESI */
-+ } else {
-+ vesafb_create_task (tsk);
-+ if (!tsk)
-+ return -ENOMEM;
-+ tsk->regs.eax = 0x4f09;
-+ tsk->regs.ebx = 0x0;
-+ tsk->regs.ecx = count;
-+ tsk->regs.edx = start;
-+ tsk->buf = entries;
-+ tsk->buf_len = sizeof(struct vesafb_pal_entry) * count;
-+ tsk->flags = TF_CALL | TF_BUF_DI;
-+
-+ if (!vesafb_queue_task (tsk))
-+ vesafb_wait_for_task(tsk);
-+ if ((tsk->regs.eax & 0xffff) != 0x004f)
-+ ret = 1;
-+ kfree(tsk);
-+ }
-+ return ret;
-+}
-+
-+static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
-+ unsigned blue, unsigned transp,
-+ struct fb_info *info)
-+{
-+ struct vesafb_pal_entry entry;
-+ int shift = 16 - info->var.green.length;
-+ int ret = 0;
-+
-+ if (regno >= info->cmap.len)
-+ return -EINVAL;
-+
-+ if (info->var.bits_per_pixel == 8) {
-+ entry.red = red >> shift;
-+ entry.green = green >> shift;
-+ entry.blue = blue >> shift;
-+ entry.pad = 0;
-+
-+ ret = vesafb_setpalette(&entry, 1, regno, info);
-+ } else if (regno < 16) {
-+ switch (info->var.bits_per_pixel) {
-+ case 16:
-+ if (info->var.red.offset == 10) {
-+ /* 1:5:5:5 */
-+ ((u32*) (info->pseudo_palette))[regno] =
-+ ((red & 0xf800) >> 1) |
-+ ((green & 0xf800) >> 6) |
-+ ((blue & 0xf800) >> 11);
-+ } else {
-+ /* 0:5:6:5 */
-+ ((u32*) (info->pseudo_palette))[regno] =
-+ ((red & 0xf800) ) |
-+ ((green & 0xfc00) >> 5) |
-+ ((blue & 0xf800) >> 11);
-+ }
-+ break;
-+
-+ case 24:
-+ case 32:
-+ red >>= 8;
-+ green >>= 8;
-+ blue >>= 8;
-+ ((u32 *)(info->pseudo_palette))[regno] =
-+ (red << info->var.red.offset) |
-+ (green << info->var.green.offset) |
-+ (blue << info->var.blue.offset);
-+ break;
-+ }
-+ }
-+ return ret;
-+}
-+
-+static int vesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
-+{
-+ struct vesafb_pal_entry *entries;
-+ int shift = 16 - info->var.green.length;
-+ int i, ret = 0;
-+
-+ if (info->var.bits_per_pixel == 8) {
-+ if (cmap->start + cmap->len > info->cmap.start +
-+ info->cmap.len || cmap->start < info->cmap.start)
-+ return -EINVAL;
-+
-+ entries = vmalloc(sizeof(struct vesafb_pal_entry) * cmap->len);
-+ if (!entries)
-+ return -ENOMEM;
-+ for (i = 0; i < cmap->len; i++) {
-+ entries[i].red = cmap->red[i] >> shift;
-+ entries[i].green = cmap->green[i] >> shift;
-+ entries[i].blue = cmap->blue[i] >> shift;
-+ entries[i].pad = 0;
-+ }
-+ ret = vesafb_setpalette(entries, cmap->len, cmap->start, info);
-+ vfree(entries);
-+ } else {
-+ /* For modes with bpp > 8, we only set the pseudo palette in
-+ * the fb_info struct. We rely on vesafb_setcolreg to do all
-+ * sanity checking. */
-+ for (i = 0; i < cmap->len; i++) {
-+ ret += vesafb_setcolreg(cmap->start + i, cmap->red[i],
-+ cmap->green[i], cmap->blue[i],
-+ 0, info);
-+ }
-+ }
-+ return ret;
-+}
-+
-+static int vesafb_set_par(struct fb_info *info)
-+{
-+ struct vesafb_par *par = (struct vesafb_par *) info->par;
-+ struct vesafb_task *tsk;
-+ struct vesafb_crtc_ib *crtc = NULL;
-+ struct vesafb_mode_ib *mode = NULL;
-+ int i, err = 0, depth = info->var.bits_per_pixel;
-+
-+ if (depth > 8 && depth != 32)
-+ depth = info->var.red.length + info->var.green.length +
-+ info->var.blue.length;
-+
-+ i = vesafb_find_vbe_mode(info->var.xres, info->var.yres, depth,
-+ VESAFB_NEED_EXACT_RES |
-+ VESAFB_NEED_EXACT_DEPTH);
-+ if (i >= 0)
-+ mode = &vbe_modes[i];
-+ else
-+ return -EINVAL;
-+
-+ vesafb_create_task (tsk);
-+ if (!tsk)
-+ return -ENOMEM;
-+ tsk->regs.eax = 0x4f02;
-+ tsk->regs.ebx = mode->mode_id | 0x4000; /* use LFB */
-+ tsk->flags = TF_CALL;
-+
-+ if (vbe_ib.vbe_version >= 0x0300 && !nocrtc &&
-+ info->var.pixclock != 0) {
-+ tsk->regs.ebx |= 0x0800; /* use CRTC data */
-+ tsk->flags |= TF_BUF_DI;
-+ crtc = kmalloc(sizeof(struct vesafb_crtc_ib), GFP_KERNEL);
-+ if (!crtc) {
-+ err = -ENOMEM;
-+ goto out;
-+ }
-+ crtc->horiz_start = info->var.xres + info->var.right_margin;
-+ crtc->horiz_end = crtc->horiz_start + info->var.hsync_len;
-+ crtc->horiz_total = crtc->horiz_end + info->var.left_margin;
-+
-+ crtc->vert_start = info->var.yres + info->var.lower_margin;
-+ crtc->vert_end = crtc->vert_start + info->var.vsync_len;
-+ crtc->vert_total = crtc->vert_end + info->var.upper_margin;
-+
-+ crtc->pixel_clock = PICOS2KHZ(info->var.pixclock) * 1000;
-+ crtc->refresh_rate = (u16)(100 * (crtc->pixel_clock /
-+ (crtc->vert_total * crtc->horiz_total)));
-+ crtc->flags = 0;
-+
-+ if (info->var.vmode & FB_VMODE_DOUBLE)
-+ crtc->flags |= 0x1;
-+ if (info->var.vmode & FB_VMODE_INTERLACED)
-+ crtc->flags |= 0x2;
-+ if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
-+ crtc->flags |= 0x4;
-+ if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
-+ crtc->flags |= 0x8;
-+ memcpy(&par->crtc, crtc, sizeof(struct vesafb_crtc_ib));
-+ } else
-+ memset(&par->crtc, 0, sizeof(struct vesafb_crtc_ib));
-+
-+ tsk->buf = (void*)crtc;
-+ tsk->buf_len = sizeof(struct vesafb_crtc_ib);
-+
-+ if (vesafb_queue_task (tsk)) {
-+ err = -EINVAL;
-+ goto out;
-+ }
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_ERR "vesafb: mode switch failed (eax: 0x%lx)\n",
-+ tsk->regs.eax);
-+ err = -EINVAL;
-+ goto out;
-+ }
-+ par->mode_idx = i;
-+
-+ /* For 8bpp modes, always try to set the DAC to 8 bits. */
-+ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC &&
-+ mode->bits_per_pixel <= 8) {
-+ vesafb_reset_task(tsk);
-+ tsk->flags = TF_CALL;
-+ tsk->regs.eax = 0x4f08;
-+ tsk->regs.ebx = 0x0800;
-+
-+ if (!vesafb_queue_task (tsk))
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f ||
-+ ((tsk->regs.ebx & 0xff00) >> 8) != 8) {
-+ /* We've failed to set the DAC palette format -
-+ * time to correct var. */
-+ info->var.red.length = 6;
-+ info->var.green.length = 6;
-+ info->var.blue.length = 6;
-+ }
-+ }
-+
-+ info->fix.visual = (info->var.bits_per_pixel == 8) ?
-+ FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
-+ info->fix.line_length = mode->bytes_per_scan_line;
-+
-+ DPRINTK("set new mode %dx%d-%d (0x%x)\n",
-+ info->var.xres, info->var.yres, info->var.bits_per_pixel,
-+ mode->mode_id);
-+
-+out: if (crtc != NULL)
-+ kfree(crtc);
-+ kfree(tsk);
-+
-+ return err;
-+}
-+
-+static void vesafb_setup_var(struct fb_var_screeninfo *var, struct fb_info *info,
-+ struct vesafb_mode_ib *mode)
-+{
-+ var->xres = mode->x_res;
-+ var->yres = mode->y_res;
-+ var->xres_virtual = mode->x_res;
-+ var->yres_virtual = (ypan) ?
-+ info->fix.smem_len / mode->bytes_per_scan_line :
-+ mode->y_res;
-+ var->xoffset = 0;
-+ var->yoffset = 0;
-+ var->bits_per_pixel = mode->bits_per_pixel;
-+
-+ if (var->bits_per_pixel == 15)
-+ var->bits_per_pixel = 16;
-+
-+ if (var->bits_per_pixel > 8) {
-+ var->red.offset = mode->red_off;
-+ var->red.length = mode->red_len;
-+ var->green.offset = mode->green_off;
-+ var->green.length = mode->green_len;
-+ var->blue.offset = mode->blue_off;
-+ var->blue.length = mode->blue_len;
-+ var->transp.offset = mode->rsvd_off;
-+ var->transp.length = mode->rsvd_len;
-+
-+ DPRINTK("directcolor: size=%d:%d:%d:%d, shift=%d:%d:%d:%d\n",
-+ mode->rsvd_len,
-+ mode->red_len,
-+ mode->green_len,
-+ mode->blue_len,
-+ mode->rsvd_off,
-+ mode->red_off,
-+ mode->green_off,
-+ mode->blue_off);
-+ } else {
-+ var->red.offset = 0;
-+ var->green.offset = 0;
-+ var->blue.offset = 0;
-+ var->transp.offset = 0;
-+
-+ /* We're assuming that we can switch the DAC to 8 bits. If
-+ * this proves to be incorrect, we'll update the fields
-+ * later in set_par(). */
-+ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC) {
-+ var->red.length = 8;
-+ var->green.length = 8;
-+ var->blue.length = 8;
-+ var->transp.length = 0;
-+ } else {
-+ var->red.length = 6;
-+ var->green.length = 6;
-+ var->blue.length = 6;
-+ var->transp.length = 0;
-+ }
-+ }
-+}
-+
-+static void inline vesafb_check_limits(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ struct fb_videomode *mode;
-+
-+ if (!var->pixclock)
-+ return;
-+ if (vbe_ib.vbe_version < 0x0300) {
-+ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, var, info);
-+ return;
-+ }
-+ if (!fb_validate_mode(var, info))
-+ return;
-+ mode = fb_find_best_mode(var, &info->modelist);
-+ if (mode) {
-+ DPRINTK("find_best_mode: %d %d @ %d (vmode: %d)\n",
-+ mode->xres, mode->yres, mode->refresh, mode->vmode);
-+ if (mode->xres == var->xres && mode->yres == var->yres &&
-+ !(mode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))) {
-+ fb_videomode_to_var(var, mode);
-+ return;
-+ }
-+ }
-+ if (info->monspecs.gtf && !fb_get_mode(FB_MAXTIMINGS, 0, var, info))
-+ return;
-+ /* Use default refresh rate */
-+ var->pixclock = 0;
-+}
-+
-+static int vesafb_check_var(struct fb_var_screeninfo *var,
-+ struct fb_info *info)
-+{
-+ int match = -1;
-+ int depth = var->red.length + var->green.length + var->blue.length;
-+
-+ /* Various apps will use bits_per_pixel to set the color depth,
-+ * which is theoretically incorrect, but which we'll try to handle
-+ * here. */
-+ if (depth == 0 || abs(depth - var->bits_per_pixel) >= 8)
-+ depth = var->bits_per_pixel;
-+ match = vesafb_find_vbe_mode(var->xres, var->yres, depth,
-+ VESAFB_NEED_EXACT_RES);
-+
-+ if (match == -1) {
-+ DPRINTK("vesafb: mode %dx%d-%d not found\n", var->xres,
-+ var->yres, depth);
-+ return -EINVAL;
-+ }
-+
-+ vesafb_setup_var(var, info, &vbe_modes[match]);
-+ DPRINTK("found mode 0x%x (%dx%d-%dbpp)\n",
-+ vbe_modes[match].mode_id, vbe_modes[match].x_res,
-+ vbe_modes[match].y_res, vbe_modes[match].depth);
-+
-+ /* Check whether we have remapped enough memory for this mode. */
-+ if (var->yres * vbe_modes[match].bytes_per_scan_line >
-+ info->fix.smem_len) {
-+ return -EINVAL;
-+ }
-+
-+ if ((var->vmode & FB_VMODE_DOUBLE) &&
-+ !(vbe_modes[match].mode_attr & 0x100))
-+ var->vmode &= ~FB_VMODE_DOUBLE;
-+ if ((var->vmode & FB_VMODE_INTERLACED) &&
-+ !(vbe_modes[match].mode_attr & 0x200))
-+ var->vmode &= ~FB_VMODE_INTERLACED;
-+ vesafb_check_limits(var, info);
-+ return 0;
-+}
-+
-+static int vesafb_open(struct fb_info *info, int user)
-+{
-+ struct vesafb_task *tsk = NULL;
-+ struct vesafb_par *par = info->par;
-+ int cnt = atomic_read(&par->ref_count);
-+
-+ if (!cnt) {
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ goto out;
-+
-+ /* Get the VBE state buffer size. We want all available
-+ * hardware state data (CL = 0x0f). */
-+ tsk->regs.eax = 0x4f04;
-+ tsk->regs.ecx = 0x000f;
-+ tsk->regs.edx = 0x0000;
-+ tsk->flags = TF_CALL;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto out;
-+
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_WARNING "vesafb: VBE state buffer size "
-+ "cannot be determined (eax: 0x%lx)\n",
-+ tsk->regs.eax);
-+ goto out;
-+ }
-+
-+ par->vbe_state_size = 64 * (tsk->regs.ebx & 0xffff);
-+ par->vbe_state = kzalloc(par->vbe_state_size, GFP_KERNEL);
-+ if (!par->vbe_state)
-+ goto out;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f04;
-+ tsk->regs.ecx = 0x000f;
-+ tsk->regs.edx = 0x0001;
-+ tsk->flags = TF_CALL | TF_BUF_BX | TF_RETURN_BUF;
-+ tsk->buf = (void*)(par->vbe_state);
-+ tsk->buf_len = par->vbe_state_size;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto getstate_failed;
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_WARNING "vesafb: VBE get state call "
-+ "failed (eax: 0x%lx)\n", tsk->regs.eax);
-+ goto getstate_failed;
-+ }
-+ }
-+out:
-+ atomic_inc(&par->ref_count);
-+ if (tsk)
-+ kfree(tsk);
-+ return 0;
-+
-+getstate_failed:
-+ kfree(par->vbe_state);
-+ par->vbe_state = NULL;
-+ par->vbe_state_size = 0;
-+ goto out;
-+}
-+
-+static int vesafb_release(struct fb_info *info, int user)
-+{
-+ struct vesafb_task *tsk = NULL;
-+ struct vesafb_par *par = info->par;
-+ int cnt = atomic_read(&par->ref_count);
-+
-+ if (!cnt)
-+ return -EINVAL;
-+
-+ if (cnt == 1 && par->vbe_state && par->vbe_state_size) {
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ goto out;
-+
-+ tsk->regs.eax = 0x0003;
-+ tsk->regs.ebx = 0x0000;
-+ tsk->flags = TF_CALL;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto out;
-+
-+ vesafb_wait_for_task(tsk);
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f04;
-+ tsk->regs.ecx = 0x000f;
-+ tsk->regs.edx = 0x0002;
-+ tsk->buf = (void*)(par->vbe_state);
-+ tsk->buf_len = par->vbe_state_size;
-+ tsk->flags = TF_CALL | TF_BUF_BX;
-+
-+ if (vesafb_queue_task(tsk))
-+ goto out;
-+
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f)
-+ printk(KERN_WARNING "vesafb: VBE state restore call "
-+ "failed (eax: 0x%lx)\n",
-+ tsk->regs.eax);
-+ }
-+out:
-+ atomic_dec(&par->ref_count);
-+ if (tsk)
-+ kfree(tsk);
-+ return 0;
-+}
-+
-+static int __init vesafb_probe(struct platform_device *device);
-+
-+static struct fb_ops vesafb_ops = {
-+ .owner = THIS_MODULE,
-+ .fb_open = vesafb_open,
-+ .fb_release = vesafb_release,
-+ .fb_setcolreg = vesafb_setcolreg,
-+ .fb_setcmap = vesafb_setcmap,
-+ .fb_pan_display = vesafb_pan_display,
-+ .fb_blank = vesafb_blank,
-+ .fb_fillrect = cfb_fillrect,
-+ .fb_copyarea = cfb_copyarea,
-+ .fb_imageblit = cfb_imageblit,
-+ .fb_check_var = vesafb_check_var,
-+ .fb_set_par = vesafb_set_par
-+};
-+
-+static struct platform_driver vesafb_driver = {
-+ .probe = vesafb_probe,
-+ .driver = {
-+ .name = "vesafb",
-+ },
-+};
-+
-+static struct platform_device *vesafb_device;
-+
-+#ifndef MODULE
-+int __init vesafb_setup(char *options)
-+{
-+ char *this_opt;
-+
-+ if (!options || !*options)
-+ return 0;
-+
-+ DPRINTK("options %s\n",options);
-+
-+ while ((this_opt = strsep(&options, ",")) != NULL) {
-+ if (!*this_opt) continue;
-+
-+ DPRINTK("this_opt: %s\n",this_opt);
-+
-+ if (! strcmp(this_opt, "redraw"))
-+ ypan=0;
-+ else if (! strcmp(this_opt, "ypan"))
-+ ypan=1;
-+ else if (! strcmp(this_opt, "ywrap"))
-+ ypan=2;
-+ else if (! strcmp(this_opt, "vgapal"))
-+ pmi_setpal=0;
-+ else if (! strcmp(this_opt, "pmipal"))
-+ pmi_setpal=1;
-+ else if (! strncmp(this_opt, "mtrr:", 5))
-+ mtrr = simple_strtoul(this_opt+5, NULL, 0);
-+ else if (! strcmp(this_opt, "nomtrr"))
-+ mtrr=0;
-+ else if (! strcmp(this_opt, "nocrtc"))
-+ nocrtc=1;
-+ else if (! strcmp(this_opt, "noedid"))
-+ noedid=1;
-+ else if (! strcmp(this_opt, "noblank"))
-+ blank=0;
-+ else if (! strcmp(this_opt, "gtf"))
-+ gtf=1;
-+ else if (! strncmp(this_opt, "vtotal:", 7))
-+ vram_total = simple_strtoul(this_opt + 7, NULL, 0);
-+ else if (! strncmp(this_opt, "vremap:", 7))
-+ vram_remap = simple_strtoul(this_opt + 7, NULL, 0);
-+ else if (! strncmp(this_opt, "maxhf:", 6))
-+ maxhf = simple_strtoul(this_opt + 6, NULL, 0);
-+ else if (! strncmp(this_opt, "maxvf:", 6))
-+ maxvf = simple_strtoul(this_opt + 6, NULL, 0);
-+ else if (! strncmp(this_opt, "maxclk:", 7))
-+ maxclk = simple_strtoul(this_opt + 7, NULL, 0);
-+ else if (! strncmp(this_opt, "vbemode:", 8))
-+ vbemode = simple_strtoul(this_opt + 8, NULL,0);
-+ else if (this_opt[0] >= '0' && this_opt[0] <= '9') {
-+ DPRINTK("mode_option: %s\n",this_opt);
-+ mode_option = this_opt;
-+ } else {
-+ printk(KERN_WARNING
-+ "vesafb: unrecognized option %s\n", this_opt);
-+ }
-+ }
-+
-+ return 0;
-+}
-+#endif /* !MODULE */
-+
-+static int vesafb_read_proc_modes(char *buf, char **start, off_t offset,
-+ int len, int *eof, void *private)
-+{
-+ int clen = 0, i;
-+
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ clen += min(snprintf(buf + clen, len - clen, "%dx%d-%d\n", vbe_modes[i].x_res,
-+ vbe_modes[i].y_res, vbe_modes[i].depth), len - clen);
-+ }
-+ *eof = 1;
-+ return clen;
-+}
-+
-+static int vesafb_read_proc_vbe_info(char *buf, char **start, off_t offset,
-+ int len, int *eof, void *private)
-+{
-+ int clen = 0;
-+
-+ clen += min(snprintf(buf + clen, len, "Version: %d.%d\n",
-+ ((vbe_ib.vbe_version & 0xff00) >> 8),
-+ vbe_ib.vbe_version & 0xff), len);
-+ clen += min(snprintf(buf + clen, len - clen, "Vendor: %s\n",
-+ (char*)vbe_ib.oem_vendor_name_ptr), len - clen);
-+ clen += min(snprintf(buf + clen, len - clen, "Product: %s\n",
-+ (char*)vbe_ib.oem_product_name_ptr), len - clen);
-+ clen += min(snprintf(buf + clen, len - clen, "OEM rev: %s\n",
-+ (char*)vbe_ib.oem_product_rev_ptr), len - clen);
-+ clen += min(snprintf(buf + clen, len - clen, "OEM string: %s\n",
-+ (char*)vbe_ib.oem_string_ptr), len - clen);
-+
-+ *eof = 1;
-+ return clen;
-+}
-+
-+static int __init inline vesafb_vbe_getinfo(struct vesafb_task *tsk)
-+{
-+ tsk->regs.eax = 0x4f00;
-+ tsk->flags = TF_CALL | TF_GETVBEIB;
-+ tsk->buf = &vbe_ib;
-+ tsk->buf_len = sizeof(vbe_ib);
-+ if (vesafb_queue_task (tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+
-+ if (vbe_ib.vbe_version < 0x0200) {
-+ printk(KERN_ERR "vesafb: Sorry, pre-VBE 2.0 cards are "
-+ "not supported.\n");
-+ return -EINVAL;
-+ }
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f) {
-+ printk(KERN_ERR "vesafb: Getting mode info block failed "
-+ "(eax=0x%x)\n", (u32)tsk->regs.eax);
-+ return -EINVAL;
-+ }
-+
-+ printk(KERN_INFO "vesafb: %s, %s, %s (OEM: %s)\n",
-+ (char*)vbe_ib.oem_vendor_name_ptr,
-+ (char*)vbe_ib.oem_product_name_ptr,
-+ (char*)vbe_ib.oem_product_rev_ptr,
-+ (char*)vbe_ib.oem_string_ptr);
-+
-+ printk(KERN_INFO "vesafb: VBE version: %d.%d\n",
-+ ((vbe_ib.vbe_version & 0xff00) >> 8),
-+ vbe_ib.vbe_version & 0xff);
-+ return 0;
-+}
-+
-+static int __init inline vesafb_vbe_getmodes(struct vesafb_task *tsk)
-+{
-+ u16 *mode = 0;
-+ int off = 0;
-+
-+ /* Count available modes. */
-+ mode = (u16*)vbe_ib.mode_list_ptr;
-+ while (*mode != 0xffff) {
-+ vbe_modes_cnt++;
-+ mode++;
-+ }
-+
-+ vbe_modes = kmalloc(sizeof(struct vesafb_mode_ib)*
-+ vbe_modes_cnt, GFP_KERNEL);
-+ if (!vbe_modes)
-+ return -ENOMEM;
-+
-+ /* Get mode info for all available modes. */
-+ mode = (u16*)vbe_ib.mode_list_ptr;
-+
-+ while (*mode != 0xffff) {
-+ struct vesafb_mode_ib *mib;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f01;
-+ tsk->regs.ecx = (u32) *mode;
-+ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
-+ tsk->buf = vbe_modes+off;
-+ tsk->buf_len = sizeof(struct vesafb_mode_ib);
-+ if (vesafb_queue_task(tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+ mib = p_mode(tsk->buf);
-+ mib->mode_id = *mode;
-+
-+ /* We only want modes that are supported with the currennt
-+ * hardware configuration (D0), color (D3), graphics (D4)
-+ * and that have support for the LFB (D7). */
-+ if ((mib->mode_attr & 0x99) == 0x99 &&
-+ mib->bits_per_pixel >= 8) {
-+ off++;
-+ } else {
-+ vbe_modes_cnt--;
-+ }
-+ mode++;
-+ mib->depth = mib->red_len + mib->green_len + mib->blue_len;
-+ /* Handle 8bpp modes and modes with broken color component
-+ * lengths. */
-+ if (mib->depth == 0 ||
-+ (mib->depth == 24 && mib->bits_per_pixel == 32))
-+ mib->depth = mib->bits_per_pixel;
-+ }
-+
-+ return 0;
-+}
-+
-+static int __init inline vesafb_vbe_getpmi(struct vesafb_task *tsk)
-+{
-+ int i;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f0a;
-+ tsk->regs.ebx = 0x0;
-+ tsk->flags = TF_CALL;
-+ if (vesafb_queue_task(tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f || tsk->regs.es < 0xc000) {
-+ pmi_setpal = ypan = 0;
-+ } else {
-+ pmi_base = (u16*)phys_to_virt(((u32)tsk->regs.es << 4) +
-+ tsk->regs.edi);
-+ pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
-+ pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
-+ printk(KERN_INFO "vesafb: protected mode interface info at "
-+ "%04x:%04x\n",
-+ (u16)tsk->regs.es, (u16)tsk->regs.edi);
-+ printk(KERN_INFO "vesafb: pmi: set display start = %p, "
-+ "set palette = %p\n", pmi_start, pmi_pal);
-+
-+ if (pmi_base[3]) {
-+ printk(KERN_INFO "vesafb: pmi: ports = ");
-+ for (i = pmi_base[3]/2; pmi_base[i] != 0xffff; i++)
-+ printk("%x ",pmi_base[i]);
-+ printk("\n");
-+
-+ /*
-+ * memory areas not supported (yet?)
-+ *
-+ * Rules are: we have to set up a descriptor for the
-+ * requested memory area and pass it in the ES register
-+ * to the BIOS function.
-+ */
-+ if (pmi_base[i] != 0xffff) {
-+ printk(KERN_INFO "vesafb: can't handle memory "
-+ "requests, pmi disabled\n");
-+ ypan = pmi_setpal = 0;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int __init inline vesafb_vbe_getedid(struct vesafb_task *tsk,
-+ struct fb_info *info)
-+{
-+ int res = 0;
-+
-+ if (noedid || vbe_ib.vbe_version < 0x0300)
-+ return -EINVAL;
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f15;
-+ tsk->regs.ebx = 0;
-+ tsk->regs.ecx = 0;
-+ if (vesafb_queue_task(tsk))
-+ return -EINVAL;
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) != 0x004f)
-+ return -EINVAL;
-+
-+ if ((tsk->regs.ebx & 0x3) == 3) {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware supports both "
-+ "DDC1 and DDC2 transfers\n");
-+ } else if ((tsk->regs.ebx & 0x3) == 2) {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC2 "
-+ "transfers\n");
-+ } else if ((tsk->regs.ebx & 0x3) == 1) {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC1 "
-+ "transfers\n");
-+ } else {
-+ printk(KERN_INFO "vesafb: VBIOS/hardware doesn't support "
-+ "DDC transfers\n");
-+ return -EINVAL;
-+ }
-+
-+ vesafb_reset_task(tsk);
-+ tsk->regs.eax = 0x4f15;
-+ tsk->regs.ebx = 1;
-+ tsk->regs.ecx = tsk->regs.edx = 0;
-+ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
-+ tsk->buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
-+ tsk->buf_len = EDID_LENGTH;
-+
-+ if (vesafb_queue_task(tsk)) {
-+ res = -EINVAL;
-+ goto out;
-+ }
-+ vesafb_wait_for_task(tsk);
-+
-+ if ((tsk->regs.eax & 0xffff) == 0x004f) {
-+ fb_edid_to_monspecs(tsk->buf, &info->monspecs);
-+ fb_videomode_to_modelist(info->monspecs.modedb,
-+ info->monspecs.modedb_len, &info->modelist);
-+ if (info->monspecs.vfmax && info->monspecs.hfmax) {
-+ /* If the maximum pixel clock wasn't specified in
-+ * the EDID block, set it to 300 MHz. */
-+ if (info->monspecs.dclkmax == 0)
-+ info->monspecs.dclkmax = 300 * 1000000;
-+ info->monspecs.gtf = 1;
-+ } else {
-+ res = -EINVAL;
-+ }
-+ }
-+
-+out: kfree(tsk->buf);
-+ return res;
-+}
-+
-+static void __init inline vesafb_vbe_getmonspecs(struct vesafb_task *tsk,
-+ struct fb_info *info)
-+{
-+ struct fb_var_screeninfo var;
-+ int i;
-+ memset(&info->monspecs, 0, sizeof(struct fb_monspecs));
-+
-+ /* If we didn't get all necessary data from the EDID block,
-+ * mark it as incompatible with the GTF. */
-+ if (vesafb_vbe_getedid(tsk, info))
-+ info->monspecs.gtf = 0;
-+
-+ /* Kernel command line overrides. */
-+ if (maxclk)
-+ info->monspecs.dclkmax = maxclk * 1000000;
-+ if (maxvf)
-+ info->monspecs.vfmax = maxvf;
-+ if (maxhf)
-+ info->monspecs.hfmax = maxhf * 1000;
-+
-+ /* In case DDC transfers are not supported the user can provide
-+ * monitor limits manually. Lower limits are set to "safe" values. */
-+ if (info->monspecs.gtf == 0 && maxclk && maxvf && maxhf) {
-+ info->monspecs.dclkmin = 0;
-+ info->monspecs.vfmin = 60;
-+ info->monspecs.hfmin = 29000;
-+ info->monspecs.gtf = 1;
-+ }
-+
-+ if (info->monspecs.gtf) {
-+ printk(KERN_INFO
-+ "vesafb: monitor limits: vf = %d Hz, hf = %d kHz, "
-+ "clk = %d MHz\n", info->monspecs.vfmax,
-+ (int)(info->monspecs.hfmax / 1000),
-+ (int)(info->monspecs.dclkmax / 1000000));
-+ /* Add valid VESA video modes to our modelist. */
-+ for (i = 0; i < VESA_MODEDB_SIZE; i++) {
-+ fb_videomode_to_var(&var, (struct fb_videomode *)
-+ &vesa_modes[i]);
-+ if (!fb_validate_mode(&var, info))
-+ fb_add_videomode((struct fb_videomode *)
-+ &vesa_modes[i],
-+ &info->modelist);
-+ }
-+ } else {
-+ /* Add all VESA video modes to our modelist. */
-+ fb_videomode_to_modelist((struct fb_videomode *)vesa_modes,
-+ VESA_MODEDB_SIZE, &info->modelist);
-+ printk(KERN_INFO "vesafb: no monitor limits have been set\n");
-+ }
-+ return;
-+}
-+
-+static int __init inline vesafb_vbe_init(struct fb_info *info)
-+{
-+ struct vesafb_task *tsk;
-+ int res = 0;
-+
-+ vesafb_create_task(tsk);
-+ if (!tsk)
-+ return -EINVAL;
-+ if ((res = vesafb_vbe_getinfo(tsk)) != 0)
-+ goto out;
-+ if ((res = vesafb_vbe_getmodes(tsk)) != 0)
-+ goto out;
-+ if (pmi_setpal || ypan)
-+ vesafb_vbe_getpmi(tsk);
-+
-+ INIT_LIST_HEAD(&info->modelist);
-+ vesafb_vbe_getmonspecs(tsk, info);
-+
-+out: kfree(tsk);
-+ return res;
-+}
-+
-+static int __init decode_mode(u32 *xres, u32 *yres, u32 *bpp, u32 *refresh)
-+{
-+ int len = strlen(mode_option), i, err = 0;
-+ u8 res_specified = 0, bpp_specified = 0, refresh_specified = 0,
-+ yres_specified = 0;
-+
-+ for (i = len-1; i >= 0; i--) {
-+ switch (mode_option[i]) {
-+ case '@':
-+ len = i;
-+ if (!refresh_specified && !bpp_specified &&
-+ !yres_specified) {
-+ *refresh = simple_strtoul(&mode_option[i+1],
-+ NULL, 0);
-+ refresh_specified = 1;
-+ } else
-+ goto out;
-+ break;
-+ case '-':
-+ len = i;
-+ if (!bpp_specified && !yres_specified) {
-+ *bpp = simple_strtoul(&mode_option[i+1],
-+ NULL, 0);
-+ bpp_specified = 1;
-+ } else
-+ goto out;
-+ break;
-+ case 'x':
-+ if (!yres_specified) {
-+ *yres = simple_strtoul(&mode_option[i+1],
-+ NULL, 0);
-+ yres_specified = 1;
-+ } else
-+ goto out;
-+ break;
-+ case '0'...'9':
-+ break;
-+ default:
-+ goto out;
-+ }
-+ }
-+
-+ if (i < 0 && yres_specified) {
-+ *xres = simple_strtoul(mode_option, NULL, 0);
-+ res_specified = 1;
-+ }
-+
-+out: if (!res_specified || !yres_specified) {
-+ printk(KERN_ERR "vesafb: invalid resolution, "
-+ "%s not specified\n",
-+ (!res_specified) ? "width" : "height");
-+ err = -EINVAL;
-+ }
-+
-+ return err;
-+}
-+
-+static int __init vesafb_init_set_mode(struct fb_info *info)
-+{
-+ struct fb_videomode *fbmode;
-+ struct fb_videomode mode;
-+ int i, modeid, refresh = 0;
-+ u8 refresh_specified = 0;
-+
-+ if (!mode_option)
-+ mode_option = CONFIG_FB_VESA_DEFAULT_MODE;
-+
-+ if (vbemode > 0) {
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ if (vbe_modes[i].mode_id == vbemode) {
-+ info->var.vmode = FB_VMODE_NONINTERLACED;
-+ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
-+ vesafb_setup_var(&info->var, info,
-+ &vbe_modes[i]);
-+ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON,
-+ 60, &info->var, info);
-+ /* With pixclock set to 0, the default BIOS
-+ * timings will be used in set_par(). */
-+ info->var.pixclock = 0;
-+ modeid = i;
-+ goto out;
-+ }
-+ }
-+ printk(KERN_INFO "specified VBE mode %d not found\n",
-+ vbemode);
-+ vbemode = 0;
-+ }
-+
-+ /* Decode the mode specified on the kernel command line. We save
-+ * the depth into bits_per_pixel, which is wrong, but will work
-+ * anyway. */
-+ if (decode_mode(&info->var.xres, &info->var.yres,
-+ &info->var.bits_per_pixel, &refresh))
-+ return -EINVAL;
-+ if (refresh)
-+ refresh_specified = 1;
-+ else
-+ refresh = 60;
-+
-+ /* Look for a matching VBE mode. We can live if an exact match
-+ * cannot be found. */
-+ modeid = vesafb_find_vbe_mode(info->var.xres, info->var.yres,
-+ info->var.bits_per_pixel, 0);
-+
-+ if (modeid == -1) {
-+ return -EINVAL;
-+ } else {
-+ info->var.vmode = FB_VMODE_NONINTERLACED;
-+ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
-+ vesafb_setup_var(&info->var, info, &vbe_modes[modeid]);
-+ }
-+ if (vbe_ib.vbe_version < 0x0300) {
-+ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60,
-+ &info->var, info);
-+ goto out;
-+ }
-+ if (!gtf) {
-+ struct fb_videomode tmode;
-+
-+ if (refresh_specified) {
-+ fb_var_to_videomode(&tmode, &info->var);
-+ tmode.refresh = refresh;
-+ fbmode = fb_find_nearest_mode(&tmode,
-+ &info->modelist);
-+ } else
-+ fbmode = fb_find_best_mode(&info->var,
-+ &info->modelist);
-+
-+ if (fbmode->xres == info->var.xres &&
-+ fbmode->yres == info->var.yres &&
-+ !(fbmode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))
-+ && (!refresh_specified ||
-+ abs(refresh - fbmode->refresh) <= 5)) {
-+ fb_videomode_to_var(&info->var, fbmode);
-+ return modeid;
-+ }
-+ }
-+ i = FB_MAXTIMINGS;
-+ if (!info->monspecs.gtf)
-+ i = FB_IGNOREMON | FB_VSYNCTIMINGS;
-+ else if (refresh_specified)
-+ i = FB_VSYNCTIMINGS;
-+ if (!fb_get_mode(i, refresh, &info->var, info))
-+ goto out;
-+ if (info->monspecs.gtf &&
-+ !fb_get_mode(FB_MAXTIMINGS, 0, &info->var, info))
-+ goto out;
-+ /* Use default refresh rate */
-+ printk(KERN_WARNING "vesafb: using default BIOS refresh rate\n");
-+ info->var.pixclock = 0;
-+
-+out:
-+ fb_var_to_videomode(&mode, &info->var);
-+ fb_add_videomode(&mode, &info->modelist);
-+ return modeid;
-+}
-+
-+static int __init vesafb_probe(struct platform_device *dev)
-+{
-+ char entry[16];
-+ struct fb_info *info;
-+ struct vesafb_mode_ib *mode = NULL;
-+ int err = 0, i, h;
-+ unsigned int size_vmode;
-+ unsigned int size_remap;
-+ unsigned int size_total;
-+
-+ vesafb_info = info = framebuffer_alloc(sizeof(struct vesafb_par) +
-+ sizeof(u32) * 256, &dev->dev);
-+ if (!info)
-+ return -ENOMEM;
-+
-+ if (vesafb_wait_for_thread()) {
-+ printk(KERN_ERR "vesafb: vesafb thread not running\n");
-+ framebuffer_release(info);
-+ return -EINVAL;
-+ }
-+
-+ if (vesafb_vbe_init(info)) {
-+ printk(KERN_ERR "vesafb: vbe_init failed\n");
-+ err = -EINVAL;
-+ goto out;
-+ }
-+
-+ vesafb_fix.ypanstep = ypan ? 1 : 0;
-+ vesafb_fix.ywrapstep = (ypan>1) ? 1 : 0;
-+
-+ info->pseudo_palette = ((u8*)info->par + sizeof(struct vesafb_par));
-+ info->fbops = &vesafb_ops;
-+ info->var = vesafb_defined;
-+ info->fix = vesafb_fix;
-+
-+ if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
-+ err = -ENXIO;
-+ goto out;
-+ }
-+
-+ i = vesafb_init_set_mode(info);
-+ if (i < 0) {
-+ err = -EINVAL;
-+ goto out_cmap;
-+ } else
-+ mode = &vbe_modes[i];
-+
-+ /* Disable blanking if the user requested so. */
-+ if (!blank) {
-+ info->fbops->fb_blank = NULL;
-+ }
-+
-+ /* Find out how much IO memory is required for the mode with
-+ * the highest resolution. */
-+ size_remap = 0;
-+ for (i = 0; i < vbe_modes_cnt; i++) {
-+ h = vbe_modes[i].bytes_per_scan_line * vbe_modes[i].y_res;
-+ if (h > size_remap)
-+ size_remap = h;
-+ }
-+ size_remap *= 2;
-+
-+ /* size_vmode -- that is the amount of memory needed for the
-+ * used video mode, i.e. the minimum amount of
-+ * memory we need. */
-+ if (mode != NULL) {
-+ size_vmode = info->var.yres * mode->bytes_per_scan_line;
-+ } else {
-+ size_vmode = info->var.yres * info->var.xres *
-+ ((info->var.bits_per_pixel + 7) >> 3);
-+ }
-+
-+ /* size_total -- all video memory we have. Used for mtrr
-+ * entries, ressource allocation and bounds
-+ * checking. */
-+ size_total = vbe_ib.total_memory * 65536;
-+ if (vram_total)
-+ size_total = vram_total * 1024 * 1024;
-+ if (size_total < size_vmode)
-+ size_total = size_vmode;
-+ ((struct vesafb_par*)(info->par))->mem_total = size_total;
-+
-+ /* size_remap -- the amount of video memory we are going to
-+ * use for vesafb. With modern cards it is no
-+ * option to simply use size_total as th
-+ * wastes plenty of kernel address space. */
-+ if (vram_remap)
-+ size_remap = vram_remap * 1024 * 1024;
-+ if (size_remap < size_vmode)
-+ size_remap = size_vmode;
-+ if (size_remap > size_total)
-+ size_remap = size_total;
-+
-+ info->fix.smem_len = size_remap;
-+ info->fix.smem_start = mode->phys_base_ptr;
-+
-+ /* We have to set it here, because when setup_var() was called,
-+ * smem_len wasn't defined yet. */
-+ info->var.yres_virtual = info->fix.smem_len /
-+ mode->bytes_per_scan_line;
-+
-+ if (ypan && info->var.yres_virtual > info->var.yres) {
-+ printk(KERN_INFO "vesafb: scrolling: %s "
-+ "using protected mode interface, "
-+ "yres_virtual=%d\n",
-+ (ypan > 1) ? "ywrap" : "ypan",info->var.yres_virtual);
-+ } else {
-+ printk(KERN_INFO "vesafb: scrolling: redraw\n");
-+ info->var.yres_virtual = info->var.yres;
-+ ypan = 0;
-+ }
-+
-+ info->flags = FBINFO_FLAG_DEFAULT |
-+ (ypan) ? FBINFO_HWACCEL_YPAN : 0;
-+
-+ if (!ypan)
-+ info->fbops->fb_pan_display = NULL;
-+
-+ if (!request_mem_region(info->fix.smem_start, size_total, "vesafb")) {
-+ printk(KERN_WARNING "vesafb: cannot reserve video memory at "
-+ "0x%lx\n", info->fix.smem_start);
-+ /* We cannot make this fatal. Sometimes this comes from magic
-+ spaces our resource handlers simply don't know about. */
-+ }
-+
-+ info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len);
-+
-+ if (!info->screen_base) {
-+ printk(KERN_ERR
-+ "vesafb: abort, cannot ioremap video memory "
-+ "0x%x @ 0x%lx\n",
-+ info->fix.smem_len, info->fix.smem_start);
-+ err = -EIO;
-+ goto out_mem;
-+ }
-+
-+ /* Request failure does not faze us, as vgacon probably has this
-+ region already (FIXME) */
-+ request_region(0x3c0, 32, "vesafb");
-+
-+#ifdef CONFIG_MTRR
-+ if (mtrr && !(info->fix.smem_start & (PAGE_SIZE - 1))) {
-+ int temp_size = size_total;
-+ unsigned int type = 0;
-+
-+ switch (mtrr) {
-+ case 1:
-+ type = MTRR_TYPE_UNCACHABLE;
-+ break;
-+ case 2:
-+ type = MTRR_TYPE_WRBACK;
-+ break;
-+ case 3:
-+ type = MTRR_TYPE_WRCOMB;
-+ break;
-+ case 4:
-+ type = MTRR_TYPE_WRTHROUGH;
-+ break;
-+ default:
-+ type = 0;
-+ break;
-+ }
-+
-+ if (type) {
-+ int rc;
-+
-+ /* Find the largest power-of-two */
-+ while (temp_size & (temp_size - 1))
-+ temp_size &= (temp_size - 1);
-+
-+ /* Try and find a power of two to add */
-+ do {
-+ rc = mtrr_add(info->fix.smem_start,
-+ temp_size, type, 1);
-+ temp_size >>= 1;
-+ } while (temp_size >= PAGE_SIZE && rc == -EINVAL);
-+ }
-+ }
-+#endif /* CONFIG_MTRR */
-+
-+ if (register_framebuffer(info) < 0) {
-+ printk(KERN_ERR
-+ "vesafb: failed to register framebuffer device\n");
-+ err = -EINVAL;
-+ goto out_mem;
-+ }
-+
-+ printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, "
-+ "using %dk, total %dk\n", info->fix.smem_start,
-+ info->screen_base, size_remap/1024, size_total/1024);
-+ printk(KERN_INFO "fb%d: %s frame buffer device\n", info->node,
-+ info->fix.id);
-+
-+ sprintf(entry, "fb%d", info->node);
-+ proc_mkdir(entry, 0);
-+
-+ sprintf(entry, "fb%d/modes", info->node);
-+ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_modes, NULL);
-+
-+ sprintf(entry, "fb%d/vbe_info", info->node);
-+ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_vbe_info, NULL);
-+ return 0;
-+
-+out_mem:
-+ release_mem_region(info->fix.smem_start, size_total);
-+ if (!list_empty(&info->modelist))
-+ fb_destroy_modelist(&info->modelist);
-+ fb_destroy_modedb(info->monspecs.modedb);
-+out_cmap:
-+ fb_dealloc_cmap(&info->cmap);
-+out:
-+ framebuffer_release(info);
-+ vesafb_info = NULL;
-+ kfree(vbe_modes);
-+ vbe_modes = NULL;
-+ return err;
-+}
-+
-+int __init vesafb_init(void)
-+{
-+ int ret;
-+#ifndef MODULE
-+ char *option = NULL;
-+
-+ if (fb_get_options("vesafb", &option))
-+ return -ENODEV;
-+ vesafb_setup(option);
-+#endif
-+ ret = platform_driver_register(&vesafb_driver);
-+
-+ if (!ret) {
-+ vesafb_device = platform_device_alloc("vesafb", 0);
-+
-+ if (vesafb_device)
-+ ret = platform_device_add(vesafb_device);
-+ else
-+ ret = -ENOMEM;
-+
-+ if (ret) {
-+ platform_device_put(vesafb_device);
-+ platform_driver_unregister(&vesafb_driver);
-+ }
-+ }
-+ return ret;
-+}
-+
-+module_init(vesafb_init);
-+
-+#ifdef MODULE
-+void __exit vesafb_exit(void)
-+{
-+ char entry[16];
-+
-+ if (vesafb_info)
-+ unregister_framebuffer(vesafb_info);
-+
-+ platform_device_unregister(vesafb_device);
-+ platform_driver_unregister(&vesafb_driver);
-+
-+ if (vesafb_info) {
-+ struct vesafb_par *par = (struct vesafb_par*)vesafb_info->par;
-+
-+ sprintf(entry, "fb%d/modes", vesafb_info->node);
-+ remove_proc_entry(entry, NULL);
-+
-+ sprintf(entry, "fb%d/vbe_info", vesafb_info->node);
-+ remove_proc_entry(entry, NULL);
-+
-+ sprintf(entry, "fb%d", vesafb_info->node);
-+ remove_proc_entry(entry, NULL);
-+
-+ iounmap(vesafb_info->screen_base);
-+ release_mem_region(vesafb_info->fix.smem_start,
-+ par->mem_total);
-+ fb_dealloc_cmap(&vesafb_info->cmap);
-+ if (!list_empty(&vesafb_info->modelist))
-+ fb_destroy_modelist(&vesafb_info->modelist);
-+ fb_destroy_modedb(vesafb_info->monspecs.modedb);
-+ framebuffer_release(vesafb_info);
-+ }
-+
-+ if (vbe_modes != NULL)
-+ kfree(vbe_modes);
-+}
-+
-+module_exit(vesafb_exit);
-+
-+static inline int param_get_scroll(char *buffer, struct kernel_param *kp)
-+{
-+ return 0;
-+}
-+static inline int param_set_scroll(const char *val, struct kernel_param *kp)
-+{
-+ ypan = 0;
-+
-+ if (! strcmp(val, "redraw"))
-+ ypan = 0;
-+ else if (! strcmp(val, "ypan"))
-+ ypan = 1;
-+ else if (! strcmp(val, "ywrap"))
-+ ypan = 2;
-+
-+ return 0;
-+}
-+
-+#define param_check_scroll(name, p) __param_check(name, p, void);
-+
-+module_param_named(scroll, ypan, scroll, 0);
-+MODULE_PARM_DESC(scroll,"Scrolling mode, set to 'redraw', 'ypan' or 'ywrap'");
-+module_param_named(vgapal, pmi_setpal, invbool, 0);
-+MODULE_PARM_DESC(vgapal,"bool: set palette using VGA registers");
-+module_param_named(pmipal, pmi_setpal, bool, 0);
-+MODULE_PARM_DESC(pmipal,"bool: set palette using PMI calls");
-+module_param(mtrr, uint, 0);
-+MODULE_PARM_DESC(mtrr,"Memory Type Range Registers setting. Use 0 to disable.");
-+module_param(blank, bool, 1);
-+MODULE_PARM_DESC(blank,"bool: enable hardware blanking");
-+module_param(nocrtc, bool, 0);
-+MODULE_PARM_DESC(nocrtc,"bool: ignore CRTC timings when setting modes");
-+module_param(noedid, bool, 0);
-+MODULE_PARM_DESC(noedid,"bool: ignore EDID-provided monitor limits "
-+ "when setting modes");
-+module_param(gtf, bool, 0);
-+MODULE_PARM_DESC(gtf,"bool: force use of VESA GTF to calculate mode timings");
-+module_param(vram_remap, uint, 0);
-+MODULE_PARM_DESC(vram_remap,"Set amount of video memory to be used [MiB]");
-+module_param(vram_total, uint, 0);
-+MODULE_PARM_DESC(vram_total,"Set total amount of video memoery [MiB]");
-+module_param(maxclk, ushort, 0);
-+MODULE_PARM_DESC(maxclk,"Maximum pixelclock [MHz], overrides EDID data");
-+module_param(maxhf, ushort, 0);
-+MODULE_PARM_DESC(maxhf,"Maximum horizontal frequency [kHz], "
-+ "overrides EDID data");
-+module_param(maxvf, ushort, 0);
-+MODULE_PARM_DESC(maxvf,"Maximum vertical frequency [Hz], "
-+ "overrides EDID data");
-+module_param_named(mode, mode_option, charp, 0);
-+MODULE_PARM_DESC(mode, "Specify resolution as "
-+ "\"<xres>x<yres>[-<bpp>][@<refresh>]\"");
-+module_param(vbemode, ushort, 0);
-+MODULE_PARM_DESC(vbemode,"VBE mode number to set, overrides 'mode' setting");
-+
-+#endif /* MODULE */
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Michal Januszewski");
-+MODULE_DESCRIPTION("Framebuffer driver for VBE2.0+ compliant graphics boards");
-+
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 4463735..7283e48 100644
---- a/include/linux/sched.h
-+++ b/include/linux/sched.h
-@@ -1390,6 +1390,8 @@ extern void mmput(struct mm_struct *);
- extern struct mm_struct *get_task_mm(struct task_struct *task);
- /* Remove the current tasks stale references to the old mm_struct */
- extern void mm_release(struct task_struct *, struct mm_struct *);
-+/* Create a new mm for a kernel thread */
-+extern int set_new_mm(void);
-
- extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
- extern void flush_thread(void);
-diff --git a/include/video/vesa.h b/include/video/vesa.h
-new file mode 100644
-index 0000000..bb5abcf
---- /dev/null
-+++ b/include/video/vesa.h
-@@ -0,0 +1,150 @@
-+#if 0
-+#define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , \
-+ ## args)
-+#else
-+#define DPRINTK(fmt, args...)
-+#endif
-+
-+#define p_crtc(arg) ((struct vesafb_crtc_ib*)(arg))
-+#define p_vbe(arg) ((struct vesafb_vbe_ib*)(arg))
-+#define p_mode(arg) ((struct vesafb_mode_ib*)(arg))
-+
-+struct vesafb_task {
-+ u8 flags;
-+ void *buf;
-+ int buf_len;
-+ struct vm86_regs regs;
-+ struct list_head node;
-+ struct completion done;
-+};
-+
-+/* Vesafb task flags and masks */
-+#define TF_CALL 0x00
-+#define TF_EXIT 0x01
-+#define TF_GETVBEIB 0x02
-+#define TF_BUF_DI 0x04
-+#define TF_BUF_BX 0x08
-+#define TF_RETURN_BUF 0x10
-+
-+/* Macros and functions for manipulating vesafb tasks */
-+#define vesafb_create_task(task) \
-+do { \
-+ task = kmalloc(sizeof(struct vesafb_task), GFP_ATOMIC); \
-+ if (task) \
-+ memset(task, 0, sizeof(struct vesafb_task)); \
-+ init_completion(&task->done); \
-+} while (0)
-+
-+#define vesafb_wait_for_task(task) wait_for_completion(&task->done);
-+#define vesafb_reset_task(task) init_completion(&task->done);
-+int vesafb_queue_task(struct vesafb_task *task);
-+
-+/* Functions for controlling the vesafb thread */
-+int vesafb_wait_for_thread(void);
-+
-+#define VBE_CAP_CAN_SWITCH_DAC 0x01
-+#define VBE_CAP_VGACOMPAT 0x02
-+
-+/* This struct is 512 bytes long */
-+struct vesafb_vbe_ib {
-+ char vbe_signature[4];
-+ u16 vbe_version;
-+ u32 oem_string_ptr;
-+ u32 capabilities;
-+ u32 mode_list_ptr;
-+ u16 total_memory;
-+ u16 oem_software_rev;
-+ u32 oem_vendor_name_ptr;
-+ u32 oem_product_name_ptr;
-+ u32 oem_product_rev_ptr;
-+ u8 reserved[222];
-+ char oem_data[256];
-+} __attribute__ ((packed));
-+
-+struct vesafb_crtc_ib {
-+ u16 horiz_total;
-+ u16 horiz_start;
-+ u16 horiz_end;
-+ u16 vert_total;
-+ u16 vert_start;
-+ u16 vert_end;
-+ u8 flags;
-+ u32 pixel_clock;
-+ u16 refresh_rate;
-+ u8 reserved[40];
-+} __attribute__ ((packed));
-+
-+#define VBE_MODE_VGACOMPAT 0x20
-+
-+struct vesafb_mode_ib {
-+ /* for all VBE revisions */
-+ u16 mode_attr;
-+ u8 winA_attr;
-+ u8 winB_attr;
-+ u16 win_granularity;
-+ u16 win_size;
-+ u16 winA_seg;
-+ u16 winB_seg;
-+ u32 win_func_ptr;
-+ u16 bytes_per_scan_line;
-+
-+ /* for VBE 1.2+ */
-+ u16 x_res;
-+ u16 y_res;
-+ u8 x_char_size;
-+ u8 y_char_size;
-+ u8 planes;
-+ u8 bits_per_pixel;
-+ u8 banks;
-+ u8 memory_model;
-+ u8 bank_size;
-+ u8 image_pages;
-+ u8 reserved1;
-+
-+ /* Direct color fields for direct/6 and YUV/7 memory models. */
-+ /* Offsets are bit positions of lsb in the mask. */
-+ u8 red_len;
-+ u8 red_off;
-+ u8 green_len;
-+ u8 green_off;
-+ u8 blue_len;
-+ u8 blue_off;
-+ u8 rsvd_len;
-+ u8 rsvd_off;
-+ u8 direct_color_info; /* direct color mode attributes */
-+
-+ /* for VBE 2.0+ */
-+ u32 phys_base_ptr;
-+ u8 reserved2[6];
-+
-+ /* for VBE 3.0+ */
-+ u16 lin_bytes_per_scan_line;
-+ u8 bnk_image_pages;
-+ u8 lin_image_pages;
-+ u8 lin_red_len;
-+ u8 lin_red_off;
-+ u8 lin_green_len;
-+ u8 lin_green_off;
-+ u8 lin_blue_len;
-+ u8 lin_blue_off;
-+ u8 lin_rsvd_len;
-+ u8 lin_rsvd_off;
-+ u32 max_pixel_clock;
-+ u16 mode_id;
-+ u8 depth;
-+} __attribute__ ((packed));
-+
-+struct vesafb_pal_entry {
-+ u_char blue, green, red, pad;
-+} __attribute__ ((packed));
-+
-+struct vesafb_par {
-+ u8 *vbe_state;
-+ int vbe_state_size;
-+ atomic_t ref_count;
-+
-+ u32 mem_total;
-+ int mode_idx;
-+ struct vesafb_crtc_ib crtc;
-+};
-+
-diff --git a/kernel/fork.c b/kernel/fork.c
-index fc723e5..dc8f93b 100644
---- a/kernel/fork.c
-+++ b/kernel/fork.c
-@@ -100,6 +100,7 @@ struct kmem_cache *fs_cachep;
-
- /* SLAB cache for vm_area_struct structures */
- struct kmem_cache *vm_area_cachep;
-+EXPORT_SYMBOL_GPL(vm_area_cachep);
-
- /* SLAB cache for mm_struct structures (tsk->mm) */
- static struct kmem_cache *mm_cachep;
-@@ -399,6 +400,40 @@ void mmput(struct mm_struct *mm)
- EXPORT_SYMBOL_GPL(mmput);
-
- /**
-+ * set_new_mm - allocate, init and activate a new mm for a kernel thread
-+ */
-+int set_new_mm(void)
-+{
-+ struct mm_struct *mm;
-+ struct task_struct *tsk = current;
-+ struct mm_struct *active_mm;
-+
-+ mm = mm_alloc();
-+ if (!mm)
-+ goto fail_nomem;
-+ if (init_new_context(current,mm))
-+ goto fail_nocontext;
-+
-+ task_lock(tsk);
-+ tsk->flags |= PF_BORROWED_MM;
-+ active_mm = tsk->active_mm;
-+ current->mm = mm;
-+ current->active_mm = mm;
-+ activate_mm(active_mm, mm);
-+ task_unlock(current);
-+
-+ /* Drop the previous active_mm */
-+ mmdrop(active_mm);
-+ return 0;
-+
-+fail_nocontext:
-+ mmdrop(mm);
-+fail_nomem:
-+ return -EINVAL;
-+}
-+EXPORT_SYMBOL_GPL(set_new_mm);
-+
-+/**
- * get_task_mm - acquire a reference to the task's mm
- *
- * Returns %NULL if the task has no mm. Checks PF_BORROWED_MM (meaning
-diff --git a/mm/memory.c b/mm/memory.c
-index 563792f..a9519ea 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -1193,6 +1193,7 @@ int zeromap_page_range(struct vm_area_struct *vma,
- } while (pgd++, addr = next, addr != end);
- return err;
- }
-+EXPORT_SYMBOL_GPL(zeromap_page_range);
-
- pte_t * fastcall get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl)
- {
-diff --git a/mm/mmap.c b/mm/mmap.c
-index 9717337..6fa5b1c 100644
---- a/mm/mmap.c
-+++ b/mm/mmap.c
-@@ -2024,6 +2024,7 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
- vma_link(mm, vma, prev, rb_link, rb_parent);
- return 0;
- }
-+EXPORT_SYMBOL_GPL(insert_vm_struct);
-
- /*
- * Copy the vma structure to a new location in the same mm,
diff --git a/packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch
deleted file mode 100644
index 191de3af22..0000000000
--- a/packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-Index: linux-tosa/drivers/input/touchscreen/wm9712.c
-===================================================================
---- linux-tosa.orig/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/drivers/input/touchscreen/wm9712.c 2006-08-29 16:52:50.923275896 +0100
-@@ -1,7 +1,7 @@
- /*
- * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs.
- *
-- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
- * Author: Liam Girdwood
- * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
- * Parts Copyright : Ian Molton <spyro@f2s.com>
-@@ -13,6 +13,12 @@
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
-+ * Revision history
-+ * 4th Jul 2005 Initial version.
-+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
-+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
-+ * touchscreen interference.
-+ *
- */
-
- #include <linux/module.h>
-@@ -28,6 +34,10 @@
- #define WM9705_VERSION "0.60"
- #define DEFAULT_PRESSURE 0xb0c0
-
-+#define CCNT(a) asm volatile ("mrc p14, 0, %0, C1, C1, 0" : "=r"(a))
-+#define CCNT_ON() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
-+#define CCNT_OFF() asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(1))
-+
- /*
- * Debug
- */
-@@ -243,6 +253,36 @@
- return wm->dig[2] & WM9712_PDEN;
- }
-
-+
-+#ifdef CONFIG_MACH_TOSA
-+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
-+ * before sampling the Y axis of the touchscreen */
-+static inline void wm9712_lcd_sync_on(struct wm97xx* wm, int adcsel) {
-+ unsigned long timer1 = 0, timer2 = 0, wait_time = 0;
-+ if (adcsel == WM97XX_ADCSEL_Y) {
-+ wait_time = wm97xx_calc_lcd_waittime(wm);
-+
-+ CCNT_ON();
-+
-+ if (wait_time) {
-+ /* wait for LCD rising edge */
-+ wm_machinfo->wait_hsync();
-+ /* get clock */
-+ CCNT(timer1);
-+ CCNT(timer2);
-+
-+ while ((timer2 - timer1) < wait_time) {
-+ CCNT(timer2);
-+ }
-+ }
-+ }
-+}
-+
-+static inline void wm9712_lcd_sync_off(void) {
-+ CCNT_OFF();
-+}
-+#endif
-+
- /*
- * Read a sample from the WM9712 adc in polling mode.
- */
-@@ -260,6 +300,9 @@
- /* set up digitiser */
- if (adcsel & 0x8000)
- adcsel = ((adcsel & 0x7fff) + 3) << 12;
-+ #ifdef CONFIG_MACH_TOSA
-+ wm9712_lcd_sync_on(wm, adcsel);
-+ #endif
- wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay));
-
- /* wait 3 AC97 time slots + delay for conversion */
-@@ -282,6 +325,10 @@
-
- *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD);
-
-+ #ifdef CONFIG_MACH_TOSA
-+ wm9712_lcd_sync_off();
-+ #endif
-+
- /* check we have correct sample */
- if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) {
- dbg ("adc wrong sample, read %x got %x", adcsel,
-@@ -303,11 +350,12 @@
- static int wm9712_poll_touch(struct wm97xx* wm, struct wm97xx_data *data)
- {
- int rc;
--
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID)
- return rc;
-+
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID)
- return rc;
-+
- if (pil && !five_wire) {
- if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID)
- return rc;
-Index: linux-tosa/drivers/input/touchscreen/wm97xx-core.c
-===================================================================
---- linux-tosa.orig/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/drivers/input/touchscreen/wm97xx-core.c 2006-08-29 16:52:50.924275744 +0100
-@@ -2,7 +2,7 @@
- * wm97xx-core.c -- Touch screen driver core for Wolfson WM9705, WM9712
- * and WM9713 AC97 Codecs.
- *
-- * Copyright 2003, 2004, 2005 Wolfson Microelectronics PLC.
-+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC.
- * Author: Liam Girdwood
- * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com
- * Parts Copyright : Ian Molton <spyro@f2s.com>
-@@ -67,6 +67,9 @@
- * GPIOs) and 2.6 power management.
- * 29th Nov 2004 Added WM9713 support.
- * 4th Jul 2005 Moved codec specific code out to seperate files.
-+ * 29th Aug 2006 Mike Arthur <mike@mikearthur.co.uk>
-+ * Added fixes for Sharp SL-6000 (Tosa) LCD noise causing
-+ * touchscreen interference.
- */
-
- #include <linux/module.h>
-@@ -94,6 +97,7 @@
- static DECLARE_MUTEX(gpio_sem);
- static LIST_HEAD(wm97xx_misc_list);
- static struct wm97xx* wm_codec = NULL;
-+struct wm97xx_machinfo *wm_machinfo;
-
- /*
- * WM97xx - enable/disable AUX ADC sysfs
-@@ -832,6 +836,23 @@
- mdev->remove(wm_codec);
- }
-
-+#ifdef CONFIG_MACH_TOSA
-+/* On the Sharp SL-6000 (Tosa), due to a noisy LCD, we need to perform a wait
-+ * before sampling the Y axis of the touchscreen */
-+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm) {
-+ unsigned long hsync_time = wm_machinfo->get_hsync_time();
-+ return hsync_time;
-+}
-+
-+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo) {
-+ wm_machinfo = machinfo;
-+}
-+
-+void wm97xx_unset_machinfo() {
-+ wm_machinfo = NULL;
-+}
-+#endif
-+
- static struct device_driver wm97xx_driver = {
- .name = "ac97",
- .bus = &ac97_bus_type,
-@@ -861,6 +882,9 @@
- EXPORT_SYMBOL_GPL(wm97xx_reg_write);
- EXPORT_SYMBOL_GPL(wm97xx_register_misc_dev);
- EXPORT_SYMBOL_GPL(wm97xx_unregister_misc_dev);
-+EXPORT_SYMBOL_GPL(wm97xx_calc_lcd_waittime);
-+EXPORT_SYMBOL_GPL(wm97xx_set_machinfo);
-+EXPORT_SYMBOL_GPL(wm97xx_unset_machinfo);
-
- module_init(wm97xx_init);
- module_exit(wm97xx_exit);
-Index: linux-tosa/include/linux/wm97xx.h
-===================================================================
---- linux-tosa.orig/include/linux/wm97xx.h 2006-08-29 16:52:36.008543280 +0100
-+++ linux-tosa/include/linux/wm97xx.h 2006-08-29 16:52:50.924275744 +0100
-@@ -207,6 +207,7 @@
-
- struct wm97xx;
- extern struct wm97xx_codec_drv wm97xx_codec;
-+extern struct wm97xx_machinfo *wm_machinfo;
-
- /*
- * Codec driver interface - allows mapping to WM9705/12/13 and newer codecs
-@@ -253,6 +254,11 @@
- struct list_head list;
- };
-
-+struct wm97xx_machinfo {
-+ unsigned long (*get_hsync_time)(void);
-+ void (*wait_hsync)(void);
-+};
-+
- int wm97xx_register_misc_dev(struct wm97xx_misc_dev* mdev);
- void wm97xx_unregister_misc_dev(struct wm97xx_misc_dev* mdev);
-
-@@ -281,4 +287,9 @@
- int wm97xx_acc_startup(struct wm97xx* wm);
- void wm97xx_acc_shutdown(struct wm97xx* wm);
-
-+
-+unsigned long wm97xx_calc_lcd_waittime(struct wm97xx *wm);
-+void wm97xx_set_machinfo(struct wm97xx_machinfo *machinfo);
-+void wm97xx_unset_machinfo(void);
-+
- #endif
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-collie b/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-collie
index 49d9596b92..eac257683a 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-rc0+git/defconfig-collie
@@ -1,12 +1,18 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20.4
-# Fri Apr 6 23:20:59 2007
+# Linux kernel version: 2.6.23-git9
+# Fri Jan 11 16:13:34 2008
#
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
@@ -15,36 +21,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"
#
-# Code maturity level options
+# General setup
#
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=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
+# CONFIG_USER_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
@@ -59,32 +65,29 @@ 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_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
-# CONFIG_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
@@ -116,13 +119,16 @@ 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_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
@@ -130,6 +136,7 @@ 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
#
@@ -151,6 +158,14 @@ CONFIG_SA1100_COLLIE=y
# CONFIG_SA1100_SSP is not set
#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
# Processor Type
#
CONFIG_CPU_32=y
@@ -168,21 +183,25 @@ 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=y
+CONFIG_PCCARD=m
# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
+CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_PCMCIA_IOCTL=y
@@ -191,11 +210,12 @@ CONFIG_PCMCIA_IOCTL=y
#
# CONFIG_I82365 is not set
# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=y
+CONFIG_PCMCIA_SA1100=m
#
# Kernel Features
#
+# CONFIG_TICK_ONESHOT is not set
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
@@ -212,6 +232,9 @@ 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
@@ -220,6 +243,7 @@ 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
@@ -253,8 +277,10 @@ CONFIG_BINFMT_MISC=m
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
#
# Networking
@@ -264,13 +290,13 @@ CONFIG_NET=y
#
# Networking options
#
-# CONFIG_NETDEBUG is not set
CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
+CONFIG_UNIX=m
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
@@ -285,24 +311,22 @@ 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 is not set
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+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
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
@@ -325,31 +349,23 @@ 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
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
+# CONFIG_IP6_NF_IPTABLES is not set
# 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
@@ -403,6 +419,9 @@ 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
@@ -445,13 +464,22 @@ 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_WIRELESS_EXT=y
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
#
# Device Drivers
@@ -460,20 +488,14 @@ CONFIG_WIRELESS_EXT=y
#
# 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
@@ -493,6 +515,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
@@ -512,7 +535,6 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_RAM is not set
CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
-CONFIG_MTD_OBSOLETE_CHIPS=y
CONFIG_MTD_SHARP=y
#
@@ -539,43 +561,26 @@ CONFIG_MTD_SA1100=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
#
-# Parallel port support
+# UBI - Unsorted block images
#
+# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
# CONFIG_PNP is not set
-
-#
-# Block devices
-#
+CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
CONFIG_IDE=m
CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=m
@@ -592,15 +597,29 @@ 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
-# CONFIG_IDE_CHIPSETS 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_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set
#
@@ -608,6 +627,7 @@ CONFIG_BLK_DEV_IDECS=m
#
# 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
@@ -630,6 +650,7 @@ 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
@@ -637,15 +658,13 @@ CONFIG_SCSI_MULTI_LUN=y
# 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_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
# 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
@@ -658,24 +677,8 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
# 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
@@ -686,44 +689,21 @@ CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_DELAY 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
-
-#
-# ARCnet devices
-#
+# CONFIG_VETH is not set
# 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
@@ -733,64 +713,47 @@ 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
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
+# CONFIG_B44 is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
# CONFIG_TR is not set
#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
+# Wireless LAN
#
-# 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
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 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
+# 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_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
@@ -800,10 +763,6 @@ 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
@@ -814,16 +773,13 @@ 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
#
@@ -831,19 +787,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=y
+CONFIG_INPUT_MOUSEDEV=m
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640
# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
+CONFIG_INPUT_POWER=m
#
# Input Device Drivers
@@ -852,12 +808,14 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
+CONFIG_KEYBOARD_LOCOMO=m
# 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
@@ -894,15 +852,7 @@ 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
@@ -916,16 +866,10 @@ 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
-
-#
-# I2C support
-#
+CONFIG_DEVPORT=y
CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
#
@@ -939,9 +883,13 @@ CONFIG_I2C=m
# 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
#
@@ -949,11 +897,13 @@ CONFIG_I2C=m
#
# 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
@@ -975,22 +925,23 @@ CONFIG_SPI_LOCOMO=m
#
# SPI Protocol Masters
#
-
-#
-# Dallas's 1-wire bus
-#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
#
-# Hardware Monitoring support
+# Sonics Silicon Backplane
#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
#
-# Misc devices
+# Multifunction device drivers
#
-# CONFIG_TIFM_CORE is not set
+# CONFIG_MFD_SM501 is not set
#
# Multimedia Capabilities Port drivers
@@ -998,59 +949,31 @@ CONFIG_SPI_LOCOMO=m
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
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
+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_PMS is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
-
-#
-# V4L USB devices
-#
+CONFIG_V4L_USB_DRIVERS=y
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_VIDEO_USBVISION is not set
@@ -1067,10 +990,8 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
# CONFIG_USB_STV680 is not set
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set
-
-#
-# Radio Adapters
-#
+# 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
@@ -1083,25 +1004,46 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=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
#
-# Digital Video Broadcasting Devices
+# Graphics support
#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
+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
#
-# Graphics support
+# Display device support
#
-CONFIG_FIRMWARE_EDID=y
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=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
@@ -1113,6 +1055,7 @@ 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
@@ -1125,17 +1068,7 @@ 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
@@ -1175,6 +1108,7 @@ CONFIG_SND_DUMMY=m
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
#
# PCMCIA devices
@@ -1183,23 +1117,37 @@ CONFIG_SND_DUMMY=m
# CONFIG_SND_PDAUDIOCF is not set
#
-# SoC audio support
+# 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
+# CONFIG_HIDRAW is not set
#
-# HID Devices
+# USB Input Devices
#
-CONFIG_HID=m
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
#
-# USB support
+# USB HID Boot Protocol drivers
#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -1210,9 +1158,10 @@ CONFIG_USB=m
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
+CONFIG_USB_DEVICE_CLASS=y
# 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
#
@@ -1221,6 +1170,7 @@ CONFIG_USB_DEVICEFS=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
@@ -1250,60 +1200,10 @@ 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
#
@@ -1319,6 +1219,7 @@ 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
@@ -1354,6 +1255,7 @@ 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
@@ -1376,6 +1278,7 @@ 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
@@ -1385,6 +1288,7 @@ 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
#
@@ -1395,36 +1299,39 @@ CONFIG_USB_EZUSB=y
# USB Gadget Support
#
# CONFIG_USB_GADGET 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
+CONFIG_MMC=m
+CONFIG_MMC_DEBUG=y
+# CONFIG_MMC_UNSAFE_RESUME is not set
#
-# MMC/SD Card support
+# MMC/SD Card Drivers
#
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
CONFIG_MMC_BLOCK=m
-# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
CONFIG_MMC_SPI=m
-CONFIG_MMC_UNSAFE_RESUME=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=m
+#
+# LED drivers
+#
+CONFIG_LEDS_LOCOMO=m
+# CONFIG_LEDS_GPIO is not set
#
-# Real Time Clock
+# LED Triggers
#
+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=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
+CONFIG_RTC_CLASS=m
#
# RTC interfaces
@@ -1433,27 +1340,57 @@ 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
#
-# RTC drivers
+# I2C RTC drivers
#
-# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_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
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# 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
+#
+CONFIG_RTC_DRV_SA1100=m
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
# File systems
#
CONFIG_EXT2_FS=m
@@ -1518,11 +1455,13 @@ 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=y
+# CONFIG_JFFS2_LZO is not set
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=m
@@ -1550,6 +1489,7 @@ 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
@@ -1564,7 +1504,6 @@ 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
@@ -1586,13 +1525,14 @@ 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=y
+CONFIG_NLS=m
CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
@@ -1616,7 +1556,7 @@ CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
@@ -1645,22 +1585,26 @@ CONFIG_NLS_UTF8=m
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_MAGIC_SYSRQ=y
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
# 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_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
@@ -1671,6 +1615,7 @@ CONFIG_DETECT_SOFTLOCKUP=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
@@ -1680,15 +1625,11 @@ CONFIG_DEBUG_ERRORS=y
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI=m
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER=m
CONFIG_CRYPTO_HMAC=m
# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
@@ -1702,8 +1643,12 @@ 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
@@ -1715,15 +1660,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
-
-#
-# Hardware crypto devices
-#
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_HW=y
#
# Library routines
@@ -1731,11 +1676,13 @@ CONFIG_CRYPTO_TEST=m
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_IOMAP_COPY=y
-# CONFIG_SHARPSL_RC is not set
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-akita b/packages/linux/linux-rp-2.6.23/defconfig-akita
index 7d9adaf0e3..78ede10b56 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-akita
+++ b/packages/linux/linux-rp-2.6.23/defconfig-akita
@@ -244,6 +244,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable quiet"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -346,14 +347,59 @@ 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
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT 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
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
@@ -1114,7 +1160,7 @@ CONFIG_SND_SOC_WM8750=m
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
+CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
#
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-bootcdx86 b/packages/linux/linux-rp-2.6.23/defconfig-bootcdx86
index 833f72ac9e..23ae307b14 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-bootcdx86
+++ b/packages/linux/linux-rp-2.6.23/defconfig-bootcdx86
@@ -217,7 +217,8 @@ CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
@@ -348,7 +349,69 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# 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_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
#
# DCCP Configuration (EXPERIMENTAL)
@@ -1367,7 +1430,7 @@ CONFIG_USB_WACOM=y
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_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
@@ -1435,7 +1498,7 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
-# CONFIG_NFS_FS is not set
+CONFIG_NFS_FS=y
# CONFIG_NFSD is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-c7x0 b/packages/linux/linux-rp-2.6.23/defconfig-c7x0
index bd11500398..e937b3b13c 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-c7x0
+++ b/packages/linux/linux-rp-2.6.23/defconfig-c7x0
@@ -246,6 +246,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
#
@@ -360,14 +361,59 @@ 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
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT 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
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
@@ -1395,7 +1441,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-collie b/packages/linux/linux-rp-2.6.23/defconfig-collie
index 49d9596b92..fb3fbbcdbd 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-collie
+++ b/packages/linux/linux-rp-2.6.23/defconfig-collie
@@ -222,6 +222,7 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -325,12 +326,60 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NETFILTER_XTABLES is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
@@ -1459,7 +1508,7 @@ CONFIG_RTC_DRV_SA1100=y
CONFIG_EXT2_FS=m
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
-# CONFIG_EXT3_FS is not set
+CONFIG_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-htcuniversal b/packages/linux/linux-rp-2.6.23/defconfig-htcuniversal
index 2b02621499..90147e15f7 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-htcuniversal
+++ b/packages/linux/linux-rp-2.6.23/defconfig-htcuniversal
@@ -241,6 +241,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -337,28 +338,59 @@ 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
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-# 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
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# QoS and/or fair queueing
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-hx2000 b/packages/linux/linux-rp-2.6.23/defconfig-hx2000
index ee05db4e5a..bb4bbaf145 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-hx2000
+++ b/packages/linux/linux-rp-2.6.23/defconfig-hx2000
@@ -210,7 +210,8 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -288,7 +289,69 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# 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_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
#
# DCCP Configuration (EXPERIMENTAL)
@@ -844,7 +907,7 @@ CONFIG_BACKLIGHT_HX2750=y
#
# HID Devices
#
-CONFIG_HID=y
+CONFIG_HID=m
#
# USB support
@@ -907,7 +970,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
@@ -986,7 +1049,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
#
# Network File Systems
#
-# CONFIG_NFS_FS is not set
+CONFIG_NFS_FS=m
# CONFIG_NFSD is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-poodle b/packages/linux/linux-rp-2.6.23/defconfig-poodle
index 387b5e9bff..7c2480f1ac 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-poodle
+++ b/packages/linux/linux-rp-2.6.23/defconfig-poodle
@@ -1,42 +1,59 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Mon Jul 10 23:38:56 2006
+# Linux kernel version: 2.6.23
+# Fri Dec 28 17:28:59 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_ARCH_MTD_XIP=y
CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
-# Code maturity level options
+# General setup
#
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_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
+# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -46,27 +63,29 @@ CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
-# CONFIG_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
@@ -84,31 +103,39 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
#
# Intel PXA2xx Implementations
@@ -118,7 +145,10 @@ CONFIG_ARCH_PXA=y
# CONFIG_MACH_MAINSTONE is not set
# CONFIG_ARCH_PXA_IDP is not set
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_PXA_SHARPSL_25x=y
# CONFIG_PXA_SHARPSL_27x is not set
CONFIG_MACH_POODLE=y
@@ -127,8 +157,16 @@ CONFIG_MACH_POODLE=y
# CONFIG_MACH_HUSKY is not set
# CONFIG_MACH_TOSA is not set
CONFIG_PXA25x=y
-# CONFIG_PXA_KEYS is not set
CONFIG_PXA_SSP=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
#
# Processor Type
@@ -139,13 +177,17 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
CONFIG_SHARP_LOCOMO=y
CONFIG_SHARP_PARAM=y
CONFIG_SHARPSL_PM=y
@@ -154,6 +196,8 @@ CONFIG_SHARP_SCOOP=y
#
# Bus support
#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
#
# PCCARD (PCMCIA/CardBus) support
@@ -172,10 +216,13 @@ CONFIG_PCMCIA_PXA2XX=y
#
# 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_NO_IDLE_HZ=y
CONFIG_HZ=100
-# CONFIG_AEABI is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -185,6 +232,10 @@ 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
#
@@ -194,6 +245,9 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+CONFIG_CPU_FREQ_PXA25x=y
#
# CPU Frequency scaling
@@ -210,7 +264,6 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_PXA25x=y
#
# Floating point emulation
@@ -229,7 +282,6 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m
-# CONFIG_ARTHUR is not set
#
# Power management options
@@ -237,7 +289,10 @@ CONFIG_BINFMT_MISC=m
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND_UP_POSSIBLE=y
+CONFIG_SUSPEND=y
+CONFIG_APM_EMULATION=y
#
# Networking
@@ -247,12 +302,13 @@ CONFIG_NET=y
#
# Networking options
#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
+CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -267,25 +323,35 @@ 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 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_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
-
-#
-# IP: Virtual Server Configuration
-#
+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
@@ -293,43 +359,69 @@ CONFIG_NETFILTER=y
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
# CONFIG_IP6_NF_QUEUE is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
+# CONFIG_IP6_NF_IPTABLES is not set
# 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
@@ -340,7 +432,6 @@ CONFIG_IP_NF_QUEUE=m
# 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
@@ -383,6 +474,7 @@ CONFIG_IRCOMM=m
#
# Dongle support
#
+# CONFIG_KINGSUN_DONGLE is not set
#
# Old SIR device drivers
@@ -399,6 +491,7 @@ CONFIG_IRCOMM=m
# CONFIG_USB_IRDA is not set
# CONFIG_SIGMATEL_FIR is not set
CONFIG_PXA_FICP=m
+# CONFIG_MCS_FIR is not set
CONFIG_BT=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
@@ -425,13 +518,22 @@ 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_WIRELESS_EXT=y
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
#
# Device Drivers
@@ -444,15 +546,9 @@ CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
-
-#
-# Memory Technology Devices (MTD)
-#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_CONCAT is not set
@@ -465,11 +561,13 @@ CONFIG_MTD_CMDLINE_PARTS=y
# User Modules And Translation Layers
#
CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
#
# RAM/ROM/Flash chip drivers
@@ -489,12 +587,12 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_RAM is not set
CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
#
# Mapping drivers for chip access
#
CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
CONFIG_MTD_SHARP_SL=y
# CONFIG_MTD_PLATRAM is not set
@@ -512,49 +610,34 @@ CONFIG_MTD_SHARP_SL=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=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_H1900 is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
CONFIG_MTD_NAND_SHARPSL=y
# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
+# CONFIG_MTD_NAND_PLATFORM is not set
# CONFIG_MTD_ONENAND is not set
#
-# Parallel port support
+# UBI - Unsorted block images
#
+# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
+CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -569,14 +652,15 @@ CONFIG_BLK_DEV_IDECS=y
# 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=y
+# CONFIG_IDEPCI_PCIBUS_ORDER is not set
# CONFIG_IDE_ARM is not set
# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set
#
@@ -584,6 +668,9 @@ CONFIG_IDE_GENERIC=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
#
@@ -603,130 +690,88 @@ CONFIG_CHR_DEV_SG=m
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 Transport Attributes
+# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
-
-#
-# SCSI low-level drivers
-#
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DEBUG is not set
-
-#
-# PCMCIA SCSI adapter support
-#
-# CONFIG_PCMCIA_AHA152X is not set
-# CONFIG_PCMCIA_FDOMAIN is not set
-# CONFIG_PCMCIA_NINJA_SCSI is not set
-# CONFIG_PCMCIA_QLOGIC is not set
-# CONFIG_PCMCIA_SYM53C500 is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
+# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
+# CONFIG_ATA is not set
CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
+# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_DELAY 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
-
-#
-# 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_SMC91X is not set
# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
+# Wireless LAN
#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
+# CONFIG_LIBERTAS is not set
CONFIG_HERMES=m
# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
CONFIG_PCMCIA_HERMES=m
CONFIG_PCMCIA_SPECTRUM=m
# CONFIG_AIRO_CS is not set
# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_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
+# USB Network Adapters
#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
CONFIG_NET_PCMCIA=y
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not set
@@ -736,10 +781,6 @@ 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
@@ -750,21 +791,21 @@ 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
#
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
@@ -789,17 +830,31 @@ CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_LOCOMO=y
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_CORGI is not set
# CONFIG_KEYBOARD_SPITZ 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=y
CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
# CONFIG_TOUCHSCREEN_GUNZE is not set
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
CONFIG_INPUT_UINPUT=m
#
@@ -814,6 +869,7 @@ CONFIG_INPUT_UINPUT=m
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
#
@@ -834,42 +890,22 @@ CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
-
-#
-# IPMI
-#
# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
-# Ftape, the floppy tape device driver
-#
-
-#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
# CONFIG_CARDMAN_4000 is not set
# CONFIG_CARDMAN_4040 is not set
# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
#
@@ -882,22 +918,28 @@ CONFIG_I2C_ALGOBIT=y
#
# I2C Hardware Bus support
#
+# CONFIG_I2C_GPIO is not set
CONFIG_I2C_PXA=y
# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
+# CONFIG_I2C_TINY_USB is not set
#
# Miscellaneous I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_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
@@ -908,29 +950,22 @@ CONFIG_I2C_PXA=y
#
# 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_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
#
-# Misc devices
+# 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
#
-
-#
-# LED devices
-#
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
@@ -939,6 +974,7 @@ CONFIG_LEDS_CLASS=y
#
CONFIG_LEDS_LOCOMO=y
# CONFIG_LEDS_TOSA is not set
+# CONFIG_LEDS_GPIO is not set
#
# LED Triggers
@@ -946,6 +982,7 @@ CONFIG_LEDS_LOCOMO=y
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
#
# Multimedia devices
@@ -954,79 +991,82 @@ CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
-# CONFIG_VIDEO_VIVI is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-
-#
-# Encoders and Decoders
-#
-# CONFIG_VIDEO_MSP3400 is not set
-# CONFIG_VIDEO_CS53L32A is not set
-# CONFIG_VIDEO_WM8775 is not set
-# CONFIG_VIDEO_WM8739 is not set
-# CONFIG_VIDEO_CX25840 is not set
-# CONFIG_VIDEO_SAA711X is not set
-# CONFIG_VIDEO_SAA7127 is not set
-# CONFIG_VIDEO_UPD64031A is not set
-# CONFIG_VIDEO_UPD64083 is not set
-
-#
-# V4L USB devices
-#
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
-CONFIG_USB_DSBR=m
+# CONFIG_VIDEO_USBVISION is not set
CONFIG_VIDEO_USBVIDEO=m
CONFIG_USB_VICAM=m
CONFIG_USB_IBMCAM=m
CONFIG_USB_KONICAWC=m
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
CONFIG_USB_OV511=m
CONFIG_USB_SE401=m
CONFIG_USB_SN9C102=m
CONFIG_USB_STV680=m
-# CONFIG_USB_W9968CF is not set
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+CONFIG_USB_DSBR=m
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+CONFIG_USB_DABUSB=m
#
-# Radio Adapters
-#
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
+# Graphics support
#
-# CONFIG_DVB is not set
-CONFIG_USB_DABUSB=m
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
#
-# Graphics support
+# Display device support
#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=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_FIRMWARE_EDID=y
+# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_OVERLAY is not set
# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
# CONFIG_FB_W100 is not set
# CONFIG_FB_VIRTUAL is not set
@@ -1036,6 +1076,7 @@ CONFIG_FB_PXA=y
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
@@ -1048,25 +1089,14 @@ CONFIG_FONT_MINI_4x6=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_OHAND_CLUT224 is not set
-CONFIG_LOGO_OZ240_CLUT224=y
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
# CONFIG_LOGO_OZ480_CLUT224 is not set
# CONFIG_LOGO_OZ640_CLUT224 is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
#
# Sound
@@ -1107,6 +1137,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
#
# PCMCIA devices
@@ -1115,54 +1146,40 @@ CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_PDAUDIOCF is not set
#
-# SoC audio support
+# System on Chip audio support
#
CONFIG_SND_SOC=m
+CONFIG_SND_PXA2XX_SOC=m
+CONFIG_SND_PXA2XX_SOC_I2S=m
+CONFIG_SND_PXA2XX_SOC_POODLE=m
#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-CONFIG_SND_PXA2xx_SOC=m
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8731 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8974 is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
-# CONFIG_SND_MAINSTONE_BASEBAND is not set
-# CONFIG_SND_MAINSTONE_BLUETOOTH is not set
-# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
-# CONFIG_SND_PXA2xx_SOC_CORGI is not set
-# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
-CONFIG_SND_PXA2xx_SOC_POODLE=m
-# CONFIG_SND_PXA2xx_SOC_TOSA is not set
-
-#
-# Soc Codecs
+# SoC Audio support for SuperH
#
-# CONFIG_SND_SOC_AC97_CODEC is not set
CONFIG_SND_SOC_WM8731=m
-# CONFIG_SND_SOC_WM8750 is not set
-# CONFIG_SND_SOC_WM8753 is not set
-# CONFIG_SND_SOC_WM8772 is not set
-# CONFIG_SND_SOC_WM8971 is not set
-# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM9713 is not set
-# CONFIG_SND_SOC_WM9712 is not set
-# CONFIG_SND_SOC_UDA1380 is not set
-# CONFIG_SND_SOC_AK4535 is not set
#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
+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 is not set
#
-# USB support
+# 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 is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -1173,9 +1190,10 @@ CONFIG_USB=m
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_BANDWIDTH is not set
+CONFIG_USB_DEVICE_CLASS=y
# 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
#
@@ -1184,6 +1202,7 @@ CONFIG_USB_DEVICEFS=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
@@ -1209,58 +1228,14 @@ CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set
#
-# USB Input Devices
-#
-CONFIG_USB_HID=m
-CONFIG_USB_HIDINPUT=y
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB_AIPTEK=m
-CONFIG_USB_WACOM=m
-# CONFIG_USB_ACECAD is not set
-CONFIG_USB_KBTAB=m
-CONFIG_USB_POWERMATE=m
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-CONFIG_USB_XPAD=m
-CONFIG_USB_ATI_REMOTE=m
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-# CONFIG_USB_NET_GL620A is not set
-CONFIG_USB_NET_NET1080=m
-# CONFIG_USB_NET_PLUSB is not set
-# CONFIG_USB_NET_RNDIS_HOST is not set
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_USB_NET_ZAURUS=m
-# CONFIG_USB_ZD1201 is not set
CONFIG_USB_MON=y
#
@@ -1272,8 +1247,8 @@ CONFIG_USB_MON=y
#
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_AIRPRIME is not set
-# CONFIG_USB_SERIAL_ANYDATA is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_WHITEHEAT is not set
@@ -1307,15 +1282,21 @@ CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_HP4X is not set
CONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
CONFIG_USB_EZUSB=y
#
@@ -1323,16 +1304,22 @@ CONFIG_USB_EZUSB=y
#
CONFIG_USB_EMI62=m
CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
CONFIG_USB_AUERSWALD=m
CONFIG_USB_RIO500=m
CONFIG_USB_LEGOTOWER=m
CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_PHIDGET is not set
CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
#
@@ -1343,16 +1330,21 @@ CONFIG_USB_IDMOUSE=m
# USB Gadget Support
#
CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
CONFIG_USB_GADGET_PXA2XX=y
CONFIG_USB_PXA2XX=y
# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_M66592 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_S3C2410 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
@@ -1363,24 +1355,26 @@ CONFIG_USB_GADGETFS=m
CONFIG_USB_FILE_STORAGE=m
# CONFIG_USB_FILE_STORAGE_TEST is not set
CONFIG_USB_G_SERIAL=m
-
-#
-# MMC/SD Card support
-#
+# CONFIG_USB_MIDI_GADGET is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
CONFIG_MMC_UNSAFE_RESUME=y
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
#
-# Real Time Clock
+# MMC/SD Host Controller Drivers
#
+CONFIG_MMC_PXA=y
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
@@ -1388,17 +1382,54 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
#
-# RTC drivers
+# I2C 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_PCF8563 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
+# 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_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_M48T59 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
@@ -1406,15 +1437,24 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
# CONFIG_REISERFS_FS 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
@@ -1441,8 +1481,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# Pseudo filesystems
#
CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1457,18 +1499,21 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SYSFS is not set
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
CONFIG_JFFS2_RTIME=y
CONFIG_JFFS2_RUBIN=y
# CONFIG_JFFS2_CMODE_NONE is not set
CONFIG_JFFS2_CMODE_PRIORITY=y
# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -1494,6 +1539,7 @@ 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
@@ -1501,12 +1547,13 @@ CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="cp437"
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
#
# Partition Types
@@ -1528,6 +1575,7 @@ 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
@@ -1574,6 +1622,11 @@ CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
CONFIG_PROFILING=y
@@ -1583,28 +1636,38 @@ CONFIG_OPROFILE=m
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_SHIRQ is not set
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHED_DEBUG is not set
# CONFIG_SCHEDSTATS is not set
+CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_DEBUG_MUTEXES 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_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
-# CONFIG_UNWIND_INFO is not set
# 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_WAITQ is not set
CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_LL is not set
@@ -1613,12 +1676,13 @@ CONFIG_DEBUG_ERRORS=y
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
CONFIG_CRYPTO=y
-CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_HMAC=m
+# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
@@ -1627,9 +1691,17 @@ CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_WP512=m
# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_LRW 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
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
@@ -1639,21 +1711,28 @@ CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_LZO=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
+CONFIG_CRYPTO_HW=y
#
# Library routines
#
+CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=y
# CONFIG_CRC16 is not set
+# 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_SHARPSL_RC is not set
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-qemuarm b/packages/linux/linux-rp-2.6.23/defconfig-qemuarm
index 35cf3f5b17..d4970059aa 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-qemuarm
+++ b/packages/linux/linux-rp-2.6.23/defconfig-qemuarm
@@ -134,7 +134,8 @@ CONFIG_ARM_THUMB=y
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
CONFIG_ARM_VIC=y
CONFIG_ICST307=y
@@ -245,7 +246,69 @@ CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
#
# DCCP Configuration (EXPERIMENTAL)
@@ -974,7 +1037,7 @@ CONFIG_RTC_INTF_DEV=y
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_EXT3_FS=m
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-qemux86 b/packages/linux/linux-rp-2.6.23/defconfig-qemux86
index e9eb83e2dd..bc3f9cce0d 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-qemux86
+++ b/packages/linux/linux-rp-2.6.23/defconfig-qemux86
@@ -177,7 +177,8 @@ CONFIG_SECCOMP=y
CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
CONFIG_PHYSICAL_START=0x100000
# CONFIG_HOTPLUG_CPU is not set
@@ -308,24 +309,61 @@ CONFIG_NETFILTER=y
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
-CONFIG_IP_NF_CONNTRACK=y
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-# CONFIG_IP_NF_CT_PROTO_SCTP is not set
-# CONFIG_IP_NF_FTP is not set
-# CONFIG_IP_NF_IRC is not set
-# CONFIG_IP_NF_NETBIOS_NS is not set
-# CONFIG_IP_NF_TFTP is not set
-# CONFIG_IP_NF_AMANDA is not set
-# CONFIG_IP_NF_PPTP is not set
-# CONFIG_IP_NF_H323 is not set
-CONFIG_IP_NF_QUEUE=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# DCCP Configuration (EXPERIMENTAL)
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-spitz b/packages/linux/linux-rp-2.6.23/defconfig-spitz
index 8e044e6a14..74d7f828a0 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-spitz
+++ b/packages/linux/linux-rp-2.6.23/defconfig-spitz
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-rc4
-# Tue Aug 28 22:32:38 2007
+# Linux kernel version: 2.6.23
+# Thu Dec 27 17:03:44 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -66,7 +66,6 @@ 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
@@ -149,6 +148,7 @@ 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_PXA_SHARPSL_25x is not set
CONFIG_PXA_SHARPSL_27x=y
CONFIG_MACH_AKITA=y
@@ -244,6 +244,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw fbcon=rotate:1 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -275,6 +276,7 @@ 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
@@ -345,14 +347,59 @@ 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
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT 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
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
@@ -493,7 +540,6 @@ CONFIG_MTD=m
# 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
#
@@ -502,6 +548,7 @@ CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLKDEVS=m
CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -524,7 +571,7 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_RAM is not set
-CONFIG_MTD_ROM=y
+CONFIG_MTD_ROM=m
# CONFIG_MTD_ABSENT is not set
#
@@ -549,14 +596,14 @@ CONFIG_MTD_SHARP_SL=y
# 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=m
CONFIG_MTD_NAND_VERIFY_WRITE=y
# CONFIG_MTD_NAND_ECC_SMC is not set
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=y
+CONFIG_MTD_NAND_IDS=m
# CONFIG_MTD_NAND_DISKONCHIP is not set
-CONFIG_MTD_NAND_SHARPSL=y
+CONFIG_MTD_NAND_SHARPSL=m
# CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM is not set
# CONFIG_MTD_ONENAND is not set
@@ -893,6 +940,7 @@ CONFIG_I2C_PXA=y
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# 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
@@ -901,6 +949,8 @@ CONFIG_MISC_DEVICES=y
# 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
@@ -1110,7 +1160,7 @@ CONFIG_SND_SOC_WM8750=m
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
+CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
#
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-tosa b/packages/linux/linux-rp-2.6.23/defconfig-tosa
index d3dc74bcc0..f80caf7d16 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-tosa
+++ b/packages/linux/linux-rp-2.6.23/defconfig-tosa
@@ -143,6 +143,7 @@ CONFIG_CPU_TLB_V4WBI=y
CONFIG_ARM_THUMB=y
CONFIG_XSCALE_PMU=y
CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
CONFIG_SHARP_PARAM=y
CONFIG_SHARPSL_PM=y
CONFIG_SHARP_SCOOP=y
@@ -288,23 +289,64 @@ CONFIG_NETFILTER=y
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK is not set
-# CONFIG_NETFILTER_XTABLES is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
#
# IP: Netfilter Configuration
#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-# CONFIG_IP_NF_NETBIOS_NS is not set
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-# CONFIG_IP_NF_PPTP is not set
CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
@@ -1105,8 +1147,10 @@ CONFIG_SND_SOC_WM9712=y
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
CONFIG_HID=m
+
#
# USB support
#
@@ -1366,7 +1410,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
diff --git a/packages/linux/linux-rp-2.6.23/defconfig-zylonite b/packages/linux/linux-rp-2.6.23/defconfig-zylonite
index 0321704a1f..13fd6e3886 100644
--- a/packages/linux/linux-rp-2.6.23/defconfig-zylonite
+++ b/packages/linux/linux-rp-2.6.23/defconfig-zylonite
@@ -232,7 +232,8 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,38400 root=/dev/mtdblock2 rootfstype=jffs2 mem=64M dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
#
# CPU Frequency scaling
@@ -307,7 +308,69 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# 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_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NF_CONNTRACK is not set
+CONFIG_NETFILTER_XTABLES=m
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
@@ -962,7 +1025,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
#
# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
-CONFIG_HID=y
+CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
#
@@ -1173,7 +1236,7 @@ CONFIG_RTC_DRV_SA1100=y
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_EXT3_FS=m
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
diff --git a/packages/linux/linux-rp-2.6.23/hrw-add-wcf11-to-hostap.patch b/packages/linux/linux-rp-2.6.23/hrw-add-wcf11-to-hostap.patch
new file mode 100644
index 0000000000..5ee8b2042c
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23/hrw-add-wcf11-to-hostap.patch
@@ -0,0 +1,31 @@
+From: Marcin Juszkiewicz <openembedded@haerwu.biz>
+
+Linksys WCF11 submitted by Ångström user.
+
+"The Linksys Group, Inc.", "Wireless Network CF Card", "ISL37300P", "RevA",
+0xa5f472c2, 0x9c05598d, 0xc9049a39, 0x57a66194
+manfid: 0x0274, 0x3301
+
+Signed-off-by: Marcin Juszkiewicz <openembedded@haerwu.biz>
+Acked-by: Pavel Roskin <proski@gnu.org>
+
+---
+ drivers/net/wireless/hostap/hostap_cs.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- linux-2.6.23.orig/drivers/net/wireless/hostap/hostap_cs.c
++++ linux-2.6.23/drivers/net/wireless/hostap/hostap_cs.c
+@@ -887,10 +887,13 @@ static struct pcmcia_device_id hostap_cs
+ "Ver. 1.00",
+ 0x5cd01705, 0x4271660f, 0x9d08ee12),
+ PCMCIA_DEVICE_PROD_ID123(
+ "corega", "WL PCCL-11", "ISL37300P",
+ 0xa21501a, 0x59868926, 0xc9049a39),
++ PCMCIA_DEVICE_PROD_ID123(
++ "The Linksys Group, Inc.", "Wireless Network CF Card", "ISL37300P",
++ 0xa5f472c2, 0x9c05598d, 0xc9049a39),
+ PCMCIA_DEVICE_NULL
+ };
+ MODULE_DEVICE_TABLE(pcmcia, hostap_cs_ids);
+
+
diff --git a/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch b/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
index 034acc7b8e..9b8434a0bc 100644
--- a/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
+++ b/packages/linux/linux-rp-2.6.23/tmio-ohci-r9.patch
@@ -3,8 +3,8 @@ Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.23/drivers/usb/host/ohci-tmio.c 2007-11-13 01:35:13.049455112 +0300
-@@ -0,0 +1,417 @@
++++ linux-2.6.23/drivers/usb/host/ohci-tmio.c 2007-11-14 16:58:47.637707413 +0300
+@@ -0,0 +1,530 @@
+/*
+ * OHCI HCD(Host Controller Driver) for USB.
+ *
@@ -53,6 +53,14 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+/*-------------------------------------------------------------------------*/
+
++#define MAX_TMIO_USB_PORTS 2
++static bool default_tmio_ports[MAX_TMIO_USB_PORTS];
++module_param_array(default_tmio_ports, bool, NULL, 0644);
++MODULE_PARM_DESC(default_tmio_ports,
++ "disable specified TC6393 usb ports (default: all enabled)");
++
++/*-------------------------------------------------------------------------*/
++
+/*
+ * USB Host Controller Configuration Register
+ */
@@ -87,8 +95,8 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+struct {
+ unsigned gcken:1; /* D0 */
+ unsigned ckrnen:1; /* D1 */
-+ unsigned uspw1:1; /* D2 USB Port 1 Power Disable */
-+ unsigned uspw2:1; /* D3 USB Port 2 Power Disable */
++ unsigned uspw0:1; /* D2 USB Port 1 Power Disable */
++ unsigned uspw1:1; /* D3 USB Port 2 Power Disable */
+ unsigned x00:4;
+ unsigned pmee:1; /* D8 */
+ unsigned x01:6;
@@ -100,6 +108,7 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+struct tmio_hcd {
+ struct tmio_uhccr __iomem *ccr;
++ bool disabled_ports[MAX_TMIO_USB_PORTS];
+};
+
+#define hcd_to_tmio(hcd) ((struct tmio_hcd *)(hcd_to_ohci(hcd) + 1))
@@ -107,6 +116,39 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+/*-------------------------------------------------------------------------*/
+
++struct indexed_device_attribute{
++ struct device_attribute dev_attr;
++ int index;
++};
++#define to_indexed_dev_attr(_dev_attr) \
++ container_of(_dev_attr, struct indexed_device_attribute, dev_attr)
++
++#define INDEXED_ATTR(_name, _mode, _show, _store, _index) \
++ { .dev_attr = __ATTR(_name ## _index, _mode, _show, _store), \
++ .index = _index }
++
++#define INDEXED_DEVICE_ATTR(_name, _mode, _show, _store, _index) \
++struct indexed_device_attribute dev_attr_##_name ## _index \
++ = INDEXED_ATTR(_name, _mode, _show, _store, _index)
++
++/*-------------------------------------------------------------------------*/
++
++
++static void tmio_fill_pm(struct tmio_hcd *tmio, union tmio_uhccr_pm *pm)
++{
++ pm->raw = 0;
++
++ pm->pmee = 1;
++ pm->pmes = 1;
++ pm->gcken = 1;
++ pm->ckrnen = 1;
++
++ if (tmio->disabled_ports[0])
++ pm->uspw0 = 1;
++ if (tmio->disabled_ports[1])
++ pm->uspw1 = 1;
++}
++
+static void tmio_stop_hc(struct device *dev)
+{
+ struct tmio_device *tdev = dev_to_tdev(dev);
@@ -117,8 +159,8 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+
+ pm.gcken = 1;
+ pm.ckrnen = 1;
++ pm.uspw0 = 1;
+ pm.uspw1 = 1;
-+ pm.uspw2 = 1;
+
+ iowrite8(0, &ccr->intc);
+ iowrite8(0, &ccr->ilme);
@@ -139,10 +181,7 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ union tmio_uhccr_pm pm = {0};
+ unsigned long base = hcd->rsrc_start;
+
-+ pm.pmes = 1;
-+ pm.pmee = 1;
-+ pm.ckrnen = 1;
-+ pm.gcken = 1;
++ tmio_fill_pm(tmio, &pm);
+
+ tdev->ops->clock(dev, 1);
+ tdev->ops->function(dev, 1);
@@ -157,6 +196,54 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ ioread8(&ccr->revid), hcd->rsrc_start, hcd->irq);
+}
+
++static ssize_t tmio_disabled_port_show(struct device *dev,
++ struct device_attribute *attr,
++ char *buf)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
++ int index = to_indexed_dev_attr(attr)->index;
++ return snprintf(buf, PAGE_SIZE, "%c",
++ tmio->disabled_ports[index]? 'Y': 'N');
++}
++
++static ssize_t tmio_disabled_port_store(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ struct usb_hcd *hcd = dev_get_drvdata(dev);
++ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
++ struct tmio_uhccr __iomem *ccr = tmio->ccr;
++ union tmio_uhccr_pm pm = {0};
++ int index = to_indexed_dev_attr(attr)->index;
++
++ if (!count)
++ return -EINVAL;
++
++ switch (buf[0]) {
++ case 'y': case 'Y': case '1':
++ tmio->disabled_ports[index] = true;
++ break;
++ case 'n': case 'N': case '0':
++ tmio->disabled_ports[index] = false;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ tmio_fill_pm(tmio, &pm);
++
++ iowrite16(pm.raw, &ccr->pm);
++
++ return 1;
++}
++
++
++static INDEXED_DEVICE_ATTR(disabled_usb_port, S_IRUGO | S_IWUSR,
++ tmio_disabled_port_show, tmio_disabled_port_store, 0);
++static INDEXED_DEVICE_ATTR(disabled_usb_port, S_IRUGO | S_IWUSR,
++ tmio_disabled_port_show, tmio_disabled_port_store, 1);
++
+static int usb_hcd_tmio_probe(const struct hc_driver *driver,
+ struct device *dev)
+{
@@ -195,6 +282,9 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ hcd->rsrc_len = regs->end - regs->start + 1;
+
+ tmio = hcd_to_tmio(hcd);
++ memcpy(tmio->disabled_ports,
++ default_tmio_ports,
++ sizeof(default_tmio_ports));
+
+ tmio->ccr = ioremap(config->start, config->end - config->start + 1);
+ if (!tmio->ccr) {
@@ -224,11 +314,23 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ ohci = hcd_to_ohci(hcd);
+ ohci_hcd_init(ohci);
+
++ retval = device_create_file(dev,
++ &dev_attr_disabled_usb_port0.dev_attr);
++ retval |= device_create_file(dev,
++ &dev_attr_disabled_usb_port1.dev_attr);
++
++ if (retval)
++ goto err_create_file;
++
+ retval = usb_add_hcd(hcd, irq->start, IRQF_DISABLED);
+
+ if (retval == 0)
+ return retval;
+
++err_create_file:
++ device_remove_file(dev, &dev_attr_disabled_usb_port1.dev_attr);
++ device_remove_file(dev, &dev_attr_disabled_usb_port0.dev_attr);
++
+ tmio_stop_hc(dev);
+
+ dmabounce_unregister_dev(dev);
@@ -256,6 +358,8 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+ struct tmio_hcd *tmio = hcd_to_tmio(hcd);
+
+ usb_remove_hcd(hcd);
++ device_remove_file(dev, &dev_attr_disabled_usb_port1.dev_attr);
++ device_remove_file(dev, &dev_attr_disabled_usb_port0.dev_attr);
+ tmio_stop_hc(dev);
+ dmabounce_unregister_dev(dev);
+ dma_release_declared_memory(dev);
@@ -343,13 +447,22 @@ Index: linux-2.6.23/drivers/usb/host/ohci-tmio.c
+static int ohci_hcd_tmio_drv_probe(struct device *dev)
+{
+ struct resource *sram = tmio_resource_mem(dev);
++ int retval;
+
+ dev->dma_mask = &dma_mask;
+ dev->coherent_dma_mask = DMA_32BIT_MASK;
+
++ /* FIXME: move dmabounce checkers to tc6393 core? */
+ dmabounce_register_checker(tmio_dmabounce_check, sram);
+
-+ return usb_hcd_tmio_probe(&ohci_tmio_hc_driver, dev);
++ retval = usb_hcd_tmio_probe(&ohci_tmio_hc_driver, dev);
++
++ if (retval == 0)
++ return retval;
++
++ dmabounce_remove_checker(tmio_dmabounce_check, sram);
++
++ return retval;
+}
+
+static int ohci_hcd_tmio_drv_remove(struct device *dev)
@@ -437,7 +550,7 @@ Index: linux-2.6.23/drivers/usb/host/Kconfig
Index: linux-2.6.23/drivers/usb/host/ohci-hcd.c
===================================================================
--- linux-2.6.23.orig/drivers/usb/host/ohci-hcd.c 2007-11-12 13:46:52.894560883 +0300
-+++ linux-2.6.23/drivers/usb/host/ohci-hcd.c 2007-11-13 01:03:53.950798640 +0300
++++ linux-2.6.23/drivers/usb/host/ohci-hcd.c 2007-11-14 16:44:32.788069355 +0300
@@ -915,6 +915,10 @@
#define PLATFORM_DRIVER usb_hcd_pnx4008_driver
#endif
diff --git a/packages/linux/linux-rp.inc b/packages/linux/linux-rp.inc
index 0f81bd4221..ab6cfd38af 100644
--- a/packages/linux/linux-rp.inc
+++ b/packages/linux/linux-rp.inc
@@ -4,7 +4,7 @@ LICENSE = "GPL"
inherit kernel
-DEPENDS_collie += "bc-native"
+DEPENDS_append_collie = " bc-native"
RPROVIDES_kernel-base += "hostap-modules"
DOSRC = "http://www.do13.de/openzaurus/patches"
@@ -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"
diff --git a/packages/linux/linux-rp_2.6.16.bb b/packages/linux/linux-rp_2.6.16.bb
deleted file mode 100644
index e49e9e2366..0000000000
--- a/packages/linux/linux-rp_2.6.16.bb
+++ /dev/null
@@ -1,156 +0,0 @@
-require linux-rp.inc
-
-PR = "r48"
-
-# Handy URLs
-# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
-# http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 \
-# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.15-rc1.bz2;patch=1 \
-# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.15-rc2-git1.bz2;patch=1 \
-# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \
-# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1 \
-
-# Patches submitted upstream are towards top of this list
-# Hacks should clearly named and at the bottom
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
- file://rmk-mmc1.patch;patch=1;status=merged \
- file://rmk-mmc2.patch;patch=1;status=merged \
- ${RPSRC}/led_core-r15.patch;patch=1;status=merged \
- ${RPSRC}/led_triggers-r14.patch;patch=1;status=merged \
- ${RPSRC}/led_trig_timer-r8.patch;patch=1;status=merged \
- ${RPSRC}/led_trig_sharpsl_pm-r5.patch;patch=1;status=merged \
- ${RPSRC}/led_zaurus-r10.patch;patch=1;status=merged \
- ${RPSRC}/led_locomo-r7.patch;patch=1;status=merged \
- ${RPSRC}/led_ixp4xx-r2.patch;patch=1;status=merged \
- ${RPSRC}/led_tosa-r5.patch;patch=1;status=merged \
- ${RPSRC}/led_ide-r6.patch;patch=1;status=merged \
- ${RPSRC}/led_nand-r3.patch;patch=1;status=merged \
- ${RPSRC}/ide_end_request-r1.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-library-functions.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-arm-cleanup-r1.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-class.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-class-fix.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-class-fix-2.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-i2c-cleanup-r1.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-sysfs-interface.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-proc-interface.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-dev-interface.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-x1205-driver.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-test-device-driver.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-ds1672-driver.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-pcf8563-driver.patch;patch=1;status=merged \
- ${RPSRC}/rtc-subsystem-rs5c372-driver.patch;patch=1;status=merged \
- ${RPSRC}/rtc_class_pxa-r2.patch;patch=1;status=merged \
- ${RPSRC}/rmk_pxa_mmc_timeout-r0.patch;patch=1;status=merged \
- ${RPSRC}/integrator_rtc-r0.patch;patch=1;status=merged \
- ${RPSRC}/zaurus_keyboard_tweak-r3.patch;patch=1;status=merged \
- ${RPSRC}/arm_eabi_enum_fix-r0.patch;patch=1;status=merged \
- ${RPSRC}/pxafb_tweaks-r0.patch;patch=1;status=merged \
- ${RPSRC}/spitz_kbd_fix-r0.patch;patch=1;status=merged \
- ${RPSRC}/fbmem_fix-r1.patch;patch=1;status=merged \
- ${RPSRC}/scoop_linkage-r0.patch;patch=1;status=merged \
- ${RPSRC}/ssp_cleanup-r0.patch;patch=1;status=merged \
- ${RPSRC}/misc_fix1-r0.patch;patch=1;status=merged \
- ${RPSRC}/corgi_bl_cleanup-r3.patch;patch=1;status=merged \
- ${RPSRC}/corgi_bl_generic-r3.patch;patch=1;status=merged \
- ${RPSRC}/w100_accel1-r0.patch;patch=1;status=merged \
- ${RPSRC}/poodle_memsize-r0.patch;patch=1;status=merged \
- ${RPSRC}/led_class_kconfig-r0.patch;patch=1;status=merged \
- ${RPSRC}/led_maintainer-r0.patch;patch=1;status=merged \
- ${RPSRC}/led_sysfs_fix-r0.patch;patch=1;status=merged \
- ${RPSRC}/backlight_sysfs_fix-r0.patch;patch=1;status=merged \
- ${RPSRC}/pxaohci_pwrlimit-r0.patch;patch=1;status=merged \
- ${RPSRC}/mmc_oops_fix-r1.patch;patch=1;status=merged \
- ${RPSRC}/zlib_inflate-r3.patch;patch=1;status=merged \
- ${RPSRC}/logo_rotate_fix-r1.patch;patch=1;status=merged \
- ${RPSRC}/poodle_partsize-r0.patch;patch=1;status=merged \
- ${RPSRC}/jffs2_longfilename-r1.patch;patch=1;status=merged \
- file://00-hostap.patch;patch=1;status=merged \
- file://10-pcnet.patch;patch=1;status=merged \
- ${RPSRC}/alsa/asoc-v0.10rc4.patch;patch=1 \
- file://maxpower-message.patch;patch=1;status=backported \
- ${RPSRC}/asoc_fixups-r0.patch;patch=1 \
- ${RPSRC}/hx2750_base-r24.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r5.patch;patch=1 \
- ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
- ${RPSRC}/pxa_keys-r5.patch;patch=1 \
- ${RPSRC}/tsc2101-r12.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r3.patch;patch=1 \
- ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
- ${RPSRC}/input_power-r4.patch;patch=1 \
- ${RPSRC}/pxa25x_cpufreq-r0.patch;patch=1 \
- ${RPSRC}/collie_frontlight-r1.patch;patch=1;status=merged \
- ${RPSRC}/zaurus_reboot-r0.patch;patch=1;status=merged \
- ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
- ${RPSRC}/pm_changes-r1.patch;patch=1 \
- ${RPSRC}/sharpsl_pm-do-r2.patch;patch=1;status=merged \
- ${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
- ${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
- ${RPSRC}/kexec-arm-r2a.patch;patch=1 \
- file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
- file://hrw-pcmcia-ids-r5.patch;patch=1 \
- file://locomo-kbd-hotkeys.patch;patch=1 \
- file://locomo-sysrq+keyrepeat.patch;patch=1 \
- file://locomo-lcd-def-bightness.patch;patch=1 \
- ${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
- file://add-oz-release-string.patch;patch=1;status=unmergable \
- ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
- ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
- ${RPSRC}/integrator_rgb-r0.patch;patch=1;status=hack \
- ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
- ${RPSRC}/poodle_ts_hack-r0.patch;patch=1;status=hack \
- file://pxa-serial-hack.patch;patch=1;status=hack \
- file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
- file://squashfs3.0-2.6.15.patch;patch=1;status=external \
- file://defconfig-c7x0 \
- file://defconfig-hx2000 \
- file://defconfig-collie \
- file://defconfig-poodle \
- file://defconfig-akita \
- file://defconfig-spitz \
- file://defconfig-qemuarm \
- file://defconfig-tosa "
-
-# Add this to enable pm debug code (useful with a serial lead)
-# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
-
-# Disabled until I find the reason this gives issues with cdc_subset
-# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
-
-# These patches would really help collie/poodle but we
-# need someone to maintain them
-# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
-# (Pavel Machek's git tree has updated versions of this?)
-# Also parts were recently committed to mainline by rmk (drivers/mfd/)
-# ${JLSRC}/zaurus-base-2.6.11.diff.gz;patch=1
-# (This is mostly in mainline now?)
-# ${JLSRC}/zaurus-local-2.6.11.diff.gz;patch=1 \
-# ${JLSRC}/zaurus-leds-2.6.11.diff.gz;patch=1 \
-
-SRC_URI_append_tosa = "\
- ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
- ${CHSRC}/tmio-core-r4.patch;patch=1 \
- ${CHSRC}/tmio-tc6393-r5.patch;patch=1 \
- ${CHSRC}/tmio-nand-r5.patch;patch=1 \
- ${CHSRC}/tmio-ohci-r3.patch;patch=1 \
- ${CHSRC}/tmio-fb-r6.patch;patch=1 \
- ${DOSRC}/tosa-keyboard-r14.patch;patch=1 \
- ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
- ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
- ${DOSRC}/tosa-power-r15.patch;patch=1 \
- ${DOSRC}/tosa-tmio-lcd-r7.patch;patch=1 \
- ${DOSRC}/tosa-bluetooth-r6.patch;patch=1 \
- ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
- ${DOSRC}/wm9712-suspend-cold-res-r0.patch;patch=1 \
- ${DOSRC}/sharpsl-pm-postresume-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
- ${DOSRC}/wm9712-reset-loop-r0.patch;patch=1 \
- ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
-
-SRC_URI_append_poodle = "\
- ${RPSRC}/rp_poodle_hacks-r0.patch;patch=1"
-
-S = "${WORKDIR}/linux-2.6.16"
diff --git a/packages/linux/linux-rp_2.6.17.bb b/packages/linux/linux-rp_2.6.17.bb
deleted file mode 100644
index de898b3f11..0000000000
--- a/packages/linux/linux-rp_2.6.17.bb
+++ /dev/null
@@ -1,127 +0,0 @@
-require linux-rp.inc
-
-PR = "r38"
-
-DEFAULT_PREFERENCE_poodle = "99"
-
-# Handy URLs
-# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
-# http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 \
-# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.15-rc1.bz2;patch=1 \
-# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.15-rc2-git1.bz2;patch=1 \
-# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \
-# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1 \
-
-# Patches submitted upstream are towards top of this list
-# Hacks should clearly named and at the bottom
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \
- ${RPSRC}/poodle_partsize-r0.patch;patch=1;status=merged \
- ${RPSRC}/jffs2_longfilename-r1.patch;patch=1;status=merged \
- ${RPSRC}/locomo_led_default_trigger-r0.patch;patch=1;status=merged \
- ${RPSRC}/zaurus_reboot-r3.patch;patch=1;status=merged \
- ${RPSRC}/poodle_mmcsd_fix-r0.patch;patch=1;status=merged \
- ${RPSRC}/poodle_ssp-r1.patch;patch=1;status=merged \
- ${RPSRC}/sharpsl_pm-do-r2.patch;patch=1;status=merged \
- ${RPSRC}/zlib_inflate-r3.patch;patch=1;status=merged \
- ${RPSRC}/logo_rotate_fix-r1.patch;patch=1;status=merged \
- ${RPSRC}/collie_frontlight-r6.patch;patch=1;status=merged \
- ${RPSRC}/input_modalias_fix-r0.patch;patch=1;status=merged \
- ${RPSRC}/spectrumcs_fix-r0.patch;patch=1 \
- file://00-hostap.patch;patch=1;status=merged \
- file://10-pcnet.patch;patch=1;status=merged \
- file://asoc-v0.12.4_2.6.17.patch;patch=1 \
- ${RPSRC}/hx2750_base-r27.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r7.patch;patch=1 \
- ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
- ${RPSRC}/pxa_keys-r5.patch;patch=1 \
- ${RPSRC}/tsc2101-r12.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r4.patch;patch=1 \
- ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
- ${RPSRC}/input_power-r5.patch;patch=1 \
- ${RPSRC}/pxa25x_cpufreq-r0.patch;patch=1 \
- ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
- ${RPSRC}/pm_changes-r1.patch;patch=1 \
- ${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
- ${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
- ${RPSRC}/kexec-arm-r3a.patch;patch=1 \
- ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
- ${RPSRC}/poodle_pm-r3.patch;patch=1 \
- ${RPSRC}/pxafb_changeres-r0.patch;patch=1 \
- ${RPSRC}/poodle_audio-r7.patch;patch=1 \
- ${RPSRC}/pxa27x_overlay-r2.patch;patch=1 \
- ${RPSRC}/w100_extaccel-r0.patch;patch=1 \
- ${RPSRC}/xscale_cache_workaround-r1.patch;patch=1 \
- file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
- file://hrw-pcmcia-ids-r5.patch;patch=1 \
- ${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
- file://add-oz-release-string.patch;patch=1;status=unmergable \
- ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
- ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
- ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
- ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
- file://pxa-serial-hack.patch;patch=1;status=hack \
- file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
- file://orinoco-remove-all-which-are-in-hostap-HACK.patch;patch=1;status=unmergable-hack \
- file://squashfs3.0-2.6.15.patch;patch=1;status=external \
- file://vesafb-tng-1.0-rc2-git-20060629.patch;patch=1;status=external \
- file://defconfig-c7x0 \
- file://defconfig-hx2000 \
- file://defconfig-collie \
- file://defconfig-poodle \
- file://defconfig-akita \
- file://defconfig-spitz \
- file://defconfig-qemuarm \
- file://defconfig-qemux86 \
- file://defconfig-tosa "
-
-# Add this to enable pm debug code (useful with a serial lead)
-# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
-
-# Disabled until I find the reason this gives issues with cdc_subset
-# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
-
-# http://tglx.de/projects/armirq/2.6.17-rc3/patch-2.6.17-rc3-armirq4.patch;patch=1 \
-# ${RPSRC}/../pxa27x_overlay-r0.patch;patch=1 \
-
-# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
-# (Pavel Machek's git tree has updated versions of this?)
-# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
-
-# These patches are extracted from Pavel Machek's git tree
-# (diff against vanilla kernel)
-SRC_URI_append_collie = "\
- ${DOSRC}/collie/mtd-sharp-flash-hack-r0.patch;patch=1 \
- ${DOSRC}/collie/collie-r0.patch;patch=1 \
- ${DOSRC}/collie/locomolcd-backlight-r0.patch;patch=1 \
- ${DOSRC}/collie/ucb1x00-touch-audio-r0.patch;patch=1 \
- ${DOSRC}/collie/collie-mcp-r0.patch;patch=1 \
- ${DOSRC}/collie/sa1100-udc-r0.patch;patch=1 \
-# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
- "
-
-SRC_URI_append_tosa = "\
- ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
- ${CHSRC}/tmio-core-r4.patch;patch=1 \
- ${DOSRC}/temp/tmio-tc6393-r6.patch;patch=1 \
- ${CHSRC}/tmio-nand-r5.patch;patch=1 \
- ${DOSRC}/temp/tmio-ohci-r4.patch;patch=1 \
- ${CHSRC}/tmio-fb-r6.patch;patch=1 \
- ${DOSRC}/tosa-keyboard-r17.patch;patch=1 \
- ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
- ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
- ${DOSRC}/tosa-power-r17.patch;patch=1 \
- ${DOSRC}/tosa-tmio-lcd-r8.patch;patch=1 \
- ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
- ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
- file://wm9712-suspend-cold-res-r2.patch;patch=1 \
- ${DOSRC}/sharpsl-pm-postresume-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
- file://wm9712-reset-loop-r2.patch;patch=1 \
- file://tosa-lcdnoise-r0.patch;patch=1 \
- file://wm97xx-lcdnoise-r0.patch;patch=1 "
-# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
-
-S = "${WORKDIR}/linux-2.6.17"
diff --git a/packages/linux/linux-rp_2.6.20.bb b/packages/linux/linux-rp_2.6.20.bb
index 60305488ca..e5cb03d4eb 100644
--- a/packages/linux/linux-rp_2.6.20.bb
+++ b/packages/linux/linux-rp_2.6.20.bb
@@ -1,8 +1,9 @@
require linux-rp.inc
-PR = "r19"
+PR = "r20"
DEFAULT_PREFERENCE_poodle = "-99"
+DEFAULT_PREFERENCE_collie = "1"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
diff --git a/packages/linux/linux-rp_2.6.21.bb b/packages/linux/linux-rp_2.6.21.bb
deleted file mode 100644
index d239b2aa32..0000000000
--- a/packages/linux/linux-rp_2.6.21.bb
+++ /dev/null
@@ -1,119 +0,0 @@
-require linux-rp.inc
-
-PR = "r12"
-
-DEFAULT_PREFERENCE_poodle = "-99"
-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
-
-# 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.21.tar.bz2 \
- ${RPSRC}/lzo_kernel-r0.patch;patch=1 \
- ${RPSRC}/lzo_jffs2-r0.patch;patch=1 \
- ${RPSRC}/lzo_crypto-r1.patch;patch=1 \
- ${RPSRC}/lzo_jffs2_lzomode-r0.patch;patch=1 \
- ${RPSRC}/lzo_jffs2_sysfs-r0.patch;patch=1 \
- ${RPSRC}/hx2750_base-r28.patch;patch=1 \
- ${RPSRC}/hx2750_bl-r9.patch;patch=1 \
- ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
- ${RPSRC}/pxa_keys-r7.patch;patch=1 \
- ${RPSRC}/tsc2101-r16.patch;patch=1 \
- ${RPSRC}/hx2750_test1-r6.patch;patch=1 \
- ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
- ${RPSRC}/input_power-r7.patch;patch=1 \
- ${RPSRC}/pxa25x_cpufreq-r2.patch;patch=1 \
- ${RPSRC}/sharpsl_pm_fixes1-r0.patch;patch=1 \
- ${RPSRC}/pm_changes-r1.patch;patch=1 \
- ${RPSRC}/usb_add_epalloc-r3.patch;patch=1 \
- ${RPSRC}/usb_pxa27x_udc-r4.patch;patch=1 \
- ${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
- ${RPSRC}/poodle_pm-r4.patch;patch=1 \
- ${RPSRC}/pxa27x_overlay-r5.patch;patch=1 \
- ${RPSRC}/w100_extaccel-r0.patch;patch=1 \
- ${RPSRC}/asoc_fix_typo-r0.patch;patch=1 \
- ${RPSRC}/qemuarm_scsi_fix-r0.patch;patch=1 \
- file://hostap-monitor-mode.patch;patch=1 \
- file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
- ${RPSRC}/logo_oh-r0.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/logo_oz-r2.patch.bz2;patch=1;status=unmergable \
- ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
- ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
- ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
- ${RPSRC}/integrator_rgb-r1.patch;patch=1;status=hack \
- ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1;status=hack \
- file://pxa-serial-hack.patch;patch=1;status=hack \
- file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
- file://connectplus-prevent-oops-HACK.patch;patch=1;status=hack \
- file://squashfs3.0-2.6.15.patch;patch=1;status=external \
- file://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
- file://sharpsl-rc-r1.patch;patch=1 \
- file://defconfig-c7x0 \
- file://defconfig-hx2000 \
- file://defconfig-collie \
- file://defconfig-poodle \
- file://defconfig-akita \
- file://defconfig-spitz \
- file://defconfig-qemuarm \
- file://defconfig-qemux86 \
- file://defconfig-bootcdx86 \
- file://defconfig-tosa "
-
-# Add this to enable pm debug code (useful with a serial lead)
-# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
-
-# Disabled until I find the reason this gives issues with cdc_subset
-# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
-
-# Is anything out of this still needed? Parts were commited to mainline by rmk (drivers/mfd/)
-# (Pavel Machek's git tree has updated versions of this?)
-# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
-
-SRC_URI_append_collie = "\
- ${TKSRC}/mtd-sharp-flash-hack-r2.patch;patch=1 \
- ${TKSRC}/ucb1x00-touch-audio-r1.patch;patch=1 \
- ${TKSRC}/mcp-sa11x0-r0.patch;patch=1 \
- ${TKSRC}/sa1100-udc-r2.patch;patch=1 \
- ${TKSRC}/mmc_spi-r4.patch;patch=1 \
- ${TKSRC}/locomo-r0.patch;patch=1 \
- ${TKSRC}/collie-kexec.patch;patch=1 \
- ${TKSRC}/locomo_spi-r4.patch;patch=1 \
- ${TKSRC}/sharpsl_pm-r2.patch;patch=1 \
- ${TKSRC}/collie_pm-r2.patch;patch=1 \
- ${TKSRC}/locomokeyb_suspendkey-2.patch;patch=1 \
- ${TKSRC}/pcmcia_suspend.patch;patch=1 \
- ${TKSRC}/ucb1x00_suspend.patch;patch=1 \
-"
-
-SRC_URI_append_tosa = "\
- ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
- ${CHSRC}/tmio-core-r4.patch;patch=1 \
- file://tmio-tc6393-r8.patch;patch=1 \
- file://tmio-nand-r7.patch;patch=1 \
- file://tmio-ohci-r6.patch;patch=1 \
- ${CHSRC}/tmio-fb-r6.patch;patch=1 \
- file://tosa-keyboard-r18.patch;patch=1 \
- ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
- ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
- ${DOSRC}/tosa-power-r17.patch;patch=1 \
- file://tosa-tmio-lcd-r10.patch;patch=1 \
- ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
- ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
- file://wm9712-suspend-cold-res-r2.patch;patch=1 \
- file://sharpsl-pm-postresume-r1.patch;patch=1 \
- ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
- ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
- file://wm9712-reset-loop-r2.patch;patch=1 \
- file://tosa-lcdnoise-r1.patch;patch=1 \
- file://wm97xx-lcdnoise-r0.patch;patch=1 "
-# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
-
-S = "${WORKDIR}/linux-2.6.21"
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-rc0+git.bb
index 93ffe19b6e..3260e6750c 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-rc0+git.bb
@@ -1,8 +1,9 @@
require linux-rp.inc
-PR = "r1"
+PR = "r2"
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
@@ -83,13 +84,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 = "\
- ${DOSRC}/collie/mtd-sharp-flash-hack-r0.patch;patch=1 \
- ${DOSRC}/collie/collie-r0.patch;patch=1 \
- ${DOSRC}/collie/locomolcd-backlight-r0.patch;patch=1 \
- ${DOSRC}/collie/ucb1x00-touch-audio-r0.patch;patch=1 \
- file://collie-mcp-r1.patch;patch=1 \
- ${DOSRC}/collie/sa1100-udc-r0.patch;patch=1 \
-# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
+ ${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 53625791a7..24a8192b5b 100644
--- a/packages/linux/linux-rp_2.6.23.bb
+++ b/packages/linux/linux-rp_2.6.23.bb
@@ -1,23 +1,20 @@
require linux-rp.inc
-PR = "r10"
-
-DEFAULT_PREFERENCE_qemuarm = "-1"
-DEFAULT_PREFERENCE_qemux86 = "-1"
-DEFAULT_PREFERENCE_poodle = "-99"
+PR = "r21"
# 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 \
+SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
+ file://hrw-add-wcf11-to-hostap.patch;patch=1;status=pending \
${RPSRC}/lzo_jffs2-r3.patch;patch=1 \
${RPSRC}/lzo_crypto-r2.patch;patch=1 \
${RPSRC}/lzo_jffs2_lzomode-r1.patch;patch=1 \
@@ -39,6 +36,12 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
${RPSRC}/pxa27x_overlay-r6.patch;patch=1 \
${RPSRC}/w100_extaccel-r1.patch;patch=1 \
${RPSRC}/w100_extmem-r1.patch;patch=1 \
+ ${RPSRC}/spitzkbd_fix-r0.patch;patch=1 \
+ ${RPSRC}/export_atags-r0.patch;patch=1 \
+ ${RPSRC}/pxa25x_suspend_fixes-r0.patch;patch=1 \
+ ${RPSRC}/poodle_lcd_hack-r0.patch;patch=1 \
+ ${RPSRC}/poodle_asoc_fix-r1.patch;patch=1 \
+ ${RPSRC}/locomo_led_fix-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 \
@@ -72,7 +75,6 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
# FIXMEs before made default
# ${RPSRC}/mmcsd_no_scr_check-r1.patch;patch=1;status=hack
-
# Add this to enable pm debug code (useful with a serial lead)
# ${RPSRC}/sharpsl_pm_debug-r0.patch;patch=1
@@ -95,9 +97,10 @@ SRC_URI_append_collie = "\
# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
"
+SRC_URI_append_poodle = "\
+ ${RPSRC}/poodle_serial_vcc-r0.patch;patch=1 \
+"
-# wm97xx-lg13-r0.patch, tosa-power-r18.patch and tosa-bluetooth-r8.patch
-# were adapted from $(DOSRC) to apply cleanly
SRC_URI_append_tosa = "\
${CHSRC}/tmio-core-r4.patch;patch=1 \
file://tmio-tc6393-r8.patch;patch=1 \
diff --git a/packages/linux/linux-sequoia_2.6.21.bb b/packages/linux/linux-sequoia_2.6.21.bb
index 1fa520e914..49c7878ca2 100644
--- a/packages/linux/linux-sequoia_2.6.21.bb
+++ b/packages/linux/linux-sequoia_2.6.21.bb
@@ -31,12 +31,12 @@ do_stage_append () {
#need ppc platforms includes + friends in order for external kernel modules to compile as headers a$
install -d ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/ppc ${STAGING_KERNEL_DIR}/arch/
- cp -a arch/powerpc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/ppc ${STAGING_KERNEL_DIR}/arch/
+ cp -pPR arch/powerpc ${STAGING_KERNEL_DIR}/arch/
install -d ${STAGING_KERNEL_DIR}/include/asm
- cp -a include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
- cp -a include/asm-ppc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-powerpc ${STAGING_KERNEL_DIR}/include/
+ cp -pPR include/asm-ppc ${STAGING_KERNEL_DIR}/include/
}
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+2.6.23-rc3.bb b/packages/linux/linux_2.6.22+2.6.23-rc3.bb
index 618b6bf44a..47c3564087 100644
--- a/packages/linux/linux_2.6.22+2.6.23-rc3.bb
+++ b/packages/linux/linux_2.6.22+2.6.23-rc3.bb
@@ -1,7 +1,6 @@
require linux.inc
DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_alix = "1"
DEFAULT_PREFERENCE_at91sam9263ek = "1"
BASE_KERNEL_VERSION = "2.6.22"
@@ -19,9 +18,6 @@ SRC_URI_append_kb9202 = " http://maxim.org.za/AT91RM9200/2.6/2.6.23-rc3-at91.pat
"
SRC_URI_append_at91sam9263ek = " http://maxim.org.za/AT91RM9200/2.6/2.6.23-rc3-at91.patch.gz;patch=1 \
"
-SRC_URI_append_alix = "file://geode-mfgpt-support-for-geode-class-machines.patch;patch=1 \
- file://geode-mfgpt-clock-event-device-support.patch;patch=1"
-
S = "${WORKDIR}/linux-${BASE_KERNEL_VERSION}"
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+2.6.24-rc5.bb b/packages/linux/linux_2.6.23+2.6.24-rc5.bb
index 05779d5071..20ee7d0508 100644
--- a/packages/linux/linux_2.6.23+2.6.24-rc5.bb
+++ b/packages/linux/linux_2.6.23+2.6.24-rc5.bb
@@ -2,8 +2,9 @@ require linux.inc
# Mark archs/machines that this kernel supports
DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_alix = "1"
-PR = "r0"
+PR = "r3"
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-rc5.bz2;patch=1 \
@@ -19,9 +20,14 @@ SRC_URI_append_cm-x270 = "\
file://0004-cm-x270-nand-simplify-name.patch;patch=1 \
file://0005-cmx270-pci.patch;patch=1"
+SRC_URI_append_gesbc-9302 = "file://0001-gesbc-nand.patch;patch=1"
+
CMDLINE_cm-x270 = "console=${CMX270_CONSOLE_SERIAL_PORT},38400 monitor=8 bpp=16 mem=64M mtdparts=physmap-flash.0:256k(boot)ro,0x180000(kernel),-(root);cm-x270-nand:64m(app),-(data) rdinit=/sbin/init root=mtd3 rootfstype=jffs2"
+CMDLINE_gesbc-9302 = "console=ttyAM0 root=/dev/ram"
+
FILES_kernel-image_cm-x270 = ""
+FILES_kernel-image_gesbc-9302 = ""
python do_compulab_image() {
import os
diff --git a/packages/linux/linux_2.6.23+2.6.24-rc6.bb b/packages/linux/linux_2.6.23+2.6.24-rc6.bb
new file mode 100644
index 0000000000..73100b62c3
--- /dev/null
+++ b/packages/linux/linux_2.6.23+2.6.24-rc6.bb
@@ -0,0 +1,32 @@
+require linux.inc
+
+# Mark archs/machines that this kernel supports
+DEFAULT_PREFERENCE = "-1"
+
+PR = "r0"
+
+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 \
+ file://defconfig \
+ "
+
+S = "${WORKDIR}/linux-2.6.23"
+
+SRC_URI_append_at91sam9260ek = "\
+ file://0001-2.6.23-at91.patch;patch=1 \
+ "
+CMDLINE_at91sam9260ek = "mem=64M console=ttyS0,115200 root=/dev/mtdblock0 rw rootfstype=jffs2"
+
+FILES_kernel-image_at91sam9260ek = ""
+
+do_devicetree_image() {
+ if test -n "${DEVICETREE}" ; then
+ dtc -I dts -O dtb -o ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb ${DEVICETREE}
+
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+ fi
+}
+
+addtask devicetree_image after do_deploy before do_package
diff --git a/packages/linux/linux_2.6.23.bb b/packages/linux/linux_2.6.23.bb
index a35799b75a..aaa9e22f47 100644
--- a/packages/linux/linux_2.6.23.bb
+++ b/packages/linux/linux_2.6.23.bb
@@ -9,13 +9,20 @@ DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
DEPENDS_append_mpc8313e-rdb = " dtc-native"
DEPENDS_append_mpc8323e-rdb = " dtc-native"
-PR = "r8"
+PR = "r9"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
file://binutils-buildid-arm.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"
+# 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 \
file://0002-cm-x270-match-type.patch;patch=1 \
@@ -88,3 +95,4 @@ do_devicetree_image() {
addtask compulab_image after do_deploy before do_package
addtask devicetree_image after do_deploy before do_package
+
diff --git a/packages/linux/mainstone-kernel/flash-unlock.patch b/packages/linux/mainstone-kernel/flash-unlock.patch
new file mode 100644
index 0000000000..31f3f38e34
--- /dev/null
+++ b/packages/linux/mainstone-kernel/flash-unlock.patch
@@ -0,0 +1,14 @@
+--- drivers/mtd/maps/mainstone-flash.c~ 2008-01-05 01:15:54.000000000 +0100
++++ drivers/mtd/maps/mainstone-flash.c 2008-01-05 01:15:54.000000000 +0100
+@@ -125,6 +125,11 @@
+ continue;
+ }
+ mymtds[i]->owner = THIS_MODULE;
++
++ /* Unlock the flash device. */
++ if (mymtds[i]->unlock)
++ mymtds[i]->unlock(mymtds[i], 0, mymtds[i]->size);
++
+
+ ret = parse_mtd_partitions(mymtds[i], probes,
+ &parsed_parts[i], 0);
diff --git a/packages/linux/mainstone-kernel/mainstone/.mtn2git_empty b/packages/linux/mainstone-kernel/mainstone/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/mainstone-kernel/mainstone/.mtn2git_empty
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-hx2000 b/packages/linux/mainstone-kernel/mainstone/defconfig
index b962caa27c..e421081233 100644
--- a/packages/linux/linux-rp-2.6.21/defconfig-hx2000
+++ b/packages/linux/mainstone-kernel/mainstone/defconfig
@@ -1,18 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20-rc2
-# Mon Jan 1 01:49:04 2007
+# Linux kernel version: 2.6.18
+# Sun Jan 6 00:54:23 2008
#
CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_MTD_XIP=y
@@ -24,7 +20,6 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
@@ -32,23 +27,19 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
-CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
+# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
+CONFIG_SYSCTL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -75,28 +66,25 @@ CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
+CONFIG_KMOD=y
#
# Block layer
#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=m
-CONFIG_IOSCHED_CFQ=m
-CONFIG_DEFAULT_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_DEFAULT_IOSCHED="cfq"
#
# System Type
@@ -115,9 +103,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP3XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
@@ -136,14 +122,12 @@ CONFIG_ARCH_PXA=y
#
# CONFIG_ARCH_LUBBOCK is not set
# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
+CONFIG_MACH_MAINSTONE=y
# CONFIG_ARCH_PXA_IDP is not set
# CONFIG_PXA_SHARPSL is not set
# CONFIG_MACH_TRIZEPS4 is not set
-CONFIG_MACH_HX2750=y
CONFIG_PXA27x=y
-CONFIG_PXA_SSP=y
-CONFIG_PXA_KEYS=y
+CONFIG_IWMMXT=y
#
# Processor Type
@@ -154,15 +138,11 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-CONFIG_IWMMXT=y
+# CONFIG_ARM_THUMB is not set
CONFIG_XSCALE_PMU=y
#
@@ -172,21 +152,21 @@ CONFIG_XSCALE_PMU=y
#
# PCCARD (PCMCIA/CardBus) support
#
-CONFIG_PCCARD=y
+CONFIG_PCCARD=m
# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
+CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_PCMCIA_IOCTL=y
#
# PC-card bridges
#
-CONFIG_PCMCIA_PXA2XX=y
+CONFIG_PCMCIA_PXA2XX=m
#
# Kernel Features
#
-CONFIG_PREEMPT=y
+# CONFIG_PREEMPT is not set
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
@@ -201,6 +181,9 @@ CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_RESOURCES_64BIT is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
CONFIG_ALIGNMENT_TRAP=y
#
@@ -208,14 +191,8 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
+CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mem=64M console=ttyS0 debug "
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
#
# Floating point emulation
@@ -239,10 +216,8 @@ CONFIG_BINFMT_ELF=y
# Power management options
#
CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-CONFIG_PM_DEBUG=y
-# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
CONFIG_APM=y
#
@@ -254,22 +229,23 @@ CONFIG_NET=y
# Networking options
#
# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
+# CONFIG_PACKET is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
-# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
+# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
@@ -277,13 +253,10 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_TUNNEL is not set
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_CUBIC=y
-CONFIG_DEFAULT_TCP_CONG="cubic"
-# CONFIG_TCP_MD5SIG is not set
+CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
@@ -326,14 +299,75 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+# CONFIG_IRCOMM is not set
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_PXA_FICP is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO is not set
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
# CONFIG_IEEE80211_CRYPT_CCMP is not set
-# CONFIG_IEEE80211_CRYPT_TKIP is not set
-# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
CONFIG_WIRELESS_EXT=y
#
@@ -344,8 +378,8 @@ CONFIG_WIRELESS_EXT=y
# Generic Driver Options
#
CONFIG_STANDALONE=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_FW_LOADER=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_SYS_HYPERVISOR is not set
@@ -359,10 +393,13 @@ CONFIG_FW_LOADER=y
#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
+# CONFIG_MTD_CONCAT is not set
CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
# CONFIG_MTD_AFS_PARTS is not set
#
@@ -374,7 +411,6 @@ CONFIG_MTD_BLOCK=y
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
#
# RAM/ROM/Flash chip drivers
@@ -393,7 +429,7 @@ 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_I1 is not set
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
@@ -413,6 +449,7 @@ CONFIG_MTD_CFI_UTIL=y
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_MAINSTONE=y
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
# CONFIG_MTD_PLATRAM is not set
@@ -455,13 +492,11 @@ CONFIG_MTD_CFI_UTIL=y
# 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_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -470,7 +505,6 @@ CONFIG_BLK_DEV_INITRD=y
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
-CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -479,16 +513,17 @@ CONFIG_BLK_DEV_IDE=y
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECS=y
+CONFIG_BLK_DEV_IDECS=m
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
#
# IDE chipset support/bugfixes
#
-CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_GENERIC is not set
# CONFIG_IDE_ARM is not set
# CONFIG_BLK_DEV_IDEDMA is not set
# CONFIG_IDEDMA_AUTO is not set
@@ -498,13 +533,49 @@ CONFIG_IDE_GENERIC=y
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
+# SCSI support type (disk, tape, CD-ROM)
#
-# CONFIG_ATA is not set
+# CONFIG_BLK_DEV_SD is not set
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
#
# Multi-device support (RAID and LVM)
@@ -531,7 +602,7 @@ CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-CONFIG_TUN=m
+# CONFIG_TUN is not set
#
# PHY device support
@@ -542,8 +613,8 @@ CONFIG_TUN=m
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
-# CONFIG_SMC91X is not set
+CONFIG_MII=y
+CONFIG_SMC91X=y
# CONFIG_DM9000 is not set
# CONFIG_SMC911X is not set
@@ -562,68 +633,27 @@ CONFIG_MII=m
#
# Wireless LAN (non-hamradio)
#
-CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_PCMCIA_WAVELAN is not set
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_PCMCIA_HERMES=m
-CONFIG_PCMCIA_SPECTRUM=m
-# CONFIG_AIRO_CS is not set
-# CONFIG_PCMCIA_WL3501 is not set
-CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
-CONFIG_HOSTAP_CS=m
-CONFIG_NET_WIRELESS=y
+# CONFIG_NET_RADIO is not set
#
# PCMCIA network device support
#
-CONFIG_NET_PCMCIA=y
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=m
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_NET_PCMCIA is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
CONFIG_PPP=m
-# CONFIG_PPP_MULTILINK is not set
-# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
-CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -638,43 +668,40 @@ CONFIG_SLHC=m
# Input device support
#
CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=y
#
# Input Device Drivers
#
-# CONFIG_INPUT_KEYBOARD is not set
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-# CONFIG_TOUCHSCREEN_PENMOUNT is not set
-# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
-# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_UCB1400 is not set
-CONFIG_TOUCHSCREEN_TSC2101=y
+# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
-# CONFIG_SERIO is not set
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
#
@@ -699,7 +726,8 @@ CONFIG_SERIAL_PXA_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
-# CONFIG_LEGACY_PTYS is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=16
#
# IPMI
@@ -710,12 +738,16 @@ CONFIG_UNIX98_PTYS=y
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
+# Ftape, the floppy tape device driver
+#
+
+#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
@@ -727,6 +759,7 @@ CONFIG_HW_RANDOM=m
# TPM devices
#
# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -742,23 +775,19 @@ CONFIG_HW_RANDOM=m
#
# Dallas's 1-wire bus
#
-# CONFIG_W1 is not set
#
# Hardware Monitoring support
#
-# CONFIG_HWMON is not set
+CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Misc devices
#
-# CONFIG_TIFM_CORE is not set
-
-#
-# Multi-Function Devices
-#
-CONFIG_MFD_TSC2101=y
#
# LED devices
@@ -776,15 +805,14 @@ CONFIG_MFD_TSC2101=y
#
# Multimedia devices
#
-CONFIG_VIDEO_DEV=m
-CONFIG_VIDEO_V4L1=y
-CONFIG_VIDEO_V4L1_COMPAT=y
+# CONFIG_VIDEO_DEV is not set
CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
#
# Graphics support
@@ -800,9 +828,6 @@ CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
-CONFIG_FB_PXA_LCD_QVGA=y
-# CONFIG_FB_PXA_LCD_VGA is not set
-# CONFIG_FB_PXA_OVERLAY is not set
# CONFIG_FB_PXA_PARAMETERS is not set
# CONFIG_FB_MBX is not set
# CONFIG_FB_VIRTUAL is not set
@@ -821,20 +846,12 @@ CONFIG_FONT_8x16=y
#
# Logo configuration
#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_OHAND_CLUT224=y
-# CONFIG_LOGO_OZ240_CLUT224 is not set
-# CONFIG_LOGO_OZ480_CLUT224 is not set
-# CONFIG_LOGO_OZ640_CLUT224 is not set
+# CONFIG_LOGO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_HX2750=y
#
# Sound
@@ -842,35 +859,161 @@ CONFIG_BACKLIGHT_HX2750=y
# CONFIG_SOUND is not set
#
-# HID Devices
-#
-CONFIG_HID=y
-
-#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET 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_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
# USB Gadget Support
#
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+CONFIG_USB_GADGET_DUMMY_HCD=y
+CONFIG_USB_DUMMY_HCD=m
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+# CONFIG_USB_G_SERIAL is not set
#
# MMC/SD Card support
#
-CONFIG_MMC=y
+CONFIG_MMC=m
# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
#
# Real Time Clock
@@ -879,7 +1022,6 @@ 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
@@ -906,12 +1048,10 @@ 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
@@ -932,9 +1072,9 @@ CONFIG_DNOTIFY=y
#
# DOS/FAT/NT Filesystems
#
-CONFIG_FAT_FS=y
-# CONFIG_MSDOS_FS is not set
-CONFIG_VFAT_FS=y
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set
@@ -943,10 +1083,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# Pseudo filesystems
#
CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -961,20 +1099,17 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_SUMMARY is not set
+CONFIG_JFFS2_SUMMARY=y
# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=y
-CONFIG_SQUASHFS=m
-# CONFIG_SQUASHFS_EMBEDDED is not set
-CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-# CONFIG_SQUASHFS_VMALLOC is not set
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -984,8 +1119,17 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
#
# Network File Systems
#
-# CONFIG_NFS_FS is not set
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
@@ -996,30 +1140,15 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
#
# 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_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_KARMA_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
#
# Native Language Support
#
CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
@@ -1056,12 +1185,7 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
+# CONFIG_NLS_UTF8 is not set
#
# Profiling support
@@ -1072,18 +1196,13 @@ CONFIG_NLS_UTF8=y
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=y
-# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
-# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_TIMER_STATS=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
@@ -1092,14 +1211,16 @@ CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
-# CONFIG_DEBUG_USER 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
@@ -1114,23 +1235,15 @@ CONFIG_DEBUG_LL=y
# Cryptographic options
#
CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=m
-CONFIG_CRYPTO_MANAGER=m
# CONFIG_CRYPTO_HMAC is not set
-# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
-# CONFIG_CRYPTO_SHA1 is not set
+CONFIG_CRYPTO_SHA1=m
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
-# CONFIG_CRYPTO_GF128MUL is not set
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
@@ -1142,9 +1255,9 @@ CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
-CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
-CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_TEST is not set
#
@@ -1154,13 +1267,10 @@ CONFIG_CRYPTO_CRC32C=y
#
# Library routines
#
-CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
-CONFIG_LIBCRC32C=y
+# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
-# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/mainstone-kernel/mainstone_defconfig b/packages/linux/mainstone-kernel/mainstone_defconfig
index a1c7d97cf8..41abfbfeac 100644
--- a/packages/linux/mainstone-kernel/mainstone_defconfig
+++ b/packages/linux/mainstone-kernel/mainstone_defconfig
@@ -1,74 +1,113 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.11
-# Sat Mar 5 10:39:38 2005
+# Linux kernel version: 2.6.18
+# Wed Dec 19 15:51:05 2007
#
CONFIG_ARM=y
CONFIG_MMU=y
-CONFIG_UID16=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODULE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_BLK_DEV_IO_TRACE is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
#
# System Type
#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_IOP3XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -76,17 +115,16 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
#
# Intel PXA2xx Implementations
#
# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
CONFIG_MACH_MAINSTONE=y
# CONFIG_ARCH_PXA_IDP is not set
# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA27x=y
CONFIG_IWMMXT=y
@@ -99,7 +137,6 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_MINICACHE=y
#
# Processor Features
@@ -108,59 +145,255 @@ CONFIG_CPU_MINICACHE=y
CONFIG_XSCALE_PMU=y
#
-# General setup
+# Bus support
#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-# CONFIG_XIP_KERNEL is not set
#
# PCCARD (PCMCIA/CardBus) support
#
-# CONFIG_PCCARD is not set
+CONFIG_PCCARD=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=m
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
#
# PC-card bridges
#
+CONFIG_PCMCIA_PXA2XX=m
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mem=64M"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
#
-# At least one math emulation must be selected
+# At least one emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+# CONFIG_PACKET is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+# CONFIG_IRLAN is not set
+# CONFIG_IRNET is not set
+# CONFIG_IRCOMM is not set
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+# CONFIG_PXA_FICP is not set
+# CONFIG_MCS_FIR is not set
+CONFIG_BT=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO is not set
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIDTL1 is not set
+# CONFIG_BT_HCIBT3C is not set
+# CONFIG_BT_HCIBLUECARD is not set
+# CONFIG_BT_HCIBTUART is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
+CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_PM is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="root=/dev/nfs ip=dhcp console=ttyS0,115200 mem=64M"
-CONFIG_LEDS=y
-CONFIG_LEDS_TIMER=y
-CONFIG_LEDS_CPU=y
-CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_SYS_HYPERVISOR is not set
#
-# Parallel port support
+# Connector - unified userspace <-> kernelspace linker
#
-# CONFIG_PARPORT is not set
+# CONFIG_CONNECTOR is not set
#
# Memory Technology Devices (MTD)
#
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_REDBOOT_PARTS=y
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
@@ -176,6 +409,7 @@ CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
#
# RAM/ROM/Flash chip drivers
@@ -198,6 +432,7 @@ CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
@@ -205,6 +440,7 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_XIP is not set
#
@@ -212,9 +448,10 @@ CONFIG_MTD_CFI_UTIL=y
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_MAINSTONE=y
# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
#
# Self-contained MTD device drivers
@@ -222,7 +459,6 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
@@ -238,180 +474,189 @@ CONFIG_MTD_CFI_UTIL=y
# 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_DEV_COW_COMMON is not set
-# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_INITRAMFS_SOURCE=""
+CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
#
-# IO Schedulers
+# ATA/ATAPI/MFM/RLL support
#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_ATA_OVER_ETH is not set
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
#
-# Multi-device support (RAID and LVM)
+# Please see Documentation/ide.txt for help/info on IDE drives
#
-# CONFIG_MD is not set
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
#
-# Networking support
+# IDE chipset support/bugfixes
#
-CONFIG_NET=y
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
#
-# Networking options
+# SCSI device support
#
-# CONFIG_PACKET is not set
-# CONFIG_NETLINK_DEV is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=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_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-# CONFIG_IPV6 is not set
-# CONFIG_NETFILTER is not set
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
#
-# SCTP Configuration (EXPERIMENTAL)
+# SCSI support type (disk, tape, CD-ROM)
#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
+# CONFIG_BLK_DEV_SD is not set
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
#
-# QoS and/or fair queueing
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
-# CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
#
-# Network testing
+# SCSI Transport Attributes
#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+# 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
#
-# Ethernet (10 or 100Mbit)
+# SCSI low-level drivers
#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-CONFIG_SMC91X=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
#
-# Ethernet (1000 Mbit)
+# 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
#
-# Ethernet (10000 Mbit)
+# Multi-device support (RAID and LVM)
#
+# CONFIG_MD is not set
#
-# Token Ring devices
+# Fusion MPT device support
#
+# CONFIG_FUSION is not set
#
-# Wireless LAN (non-hamradio)
+# IEEE 1394 (FireWire) support
#
-# CONFIG_NET_RADIO is not set
#
-# Wan interfaces
+# I2O device support
#
-# 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
#
-# ATA/ATAPI/MFM/RLL support
+# Network device support
#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
#
-# Please see Documentation/ide.txt for help/info on IDE drives
+# PHY device support
#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_IDE_TASK_IOCTL is not set
+# CONFIG_PHYLIB is not set
#
-# IDE chipset support/bugfixes
+# Ethernet (10 or 100Mbit)
#
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
#
-# SCSI device support
+# Ethernet (1000 Mbit)
#
-# CONFIG_SCSI is not set
#
-# Fusion MPT device support
+# Ethernet (10000 Mbit)
#
#
-# IEEE 1394 (FireWire) support
+# Token Ring devices
#
#
-# I2O device support
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
#
# ISDN subsystem
@@ -436,17 +681,6 @@ CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-CONFIG_SERIO=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_CT82C710 is not set
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-
-#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
@@ -461,11 +695,21 @@ CONFIG_KEYBOARD_ATKBD=y
# CONFIG_INPUT_MISC is not set
#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
@@ -482,7 +726,7 @@ CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_LEGACY_PTY_COUNT=16
#
# IPMI
@@ -493,52 +737,333 @@ CONFIG_LEGACY_PTY_COUNT=256
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
# 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_DRM is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
# CONFIG_RAW_DRIVER is not set
#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
# I2C support
#
# CONFIG_I2C is not set
#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET 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_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+CONFIG_USB_GADGET_DUMMY_HCD=y
+CONFIG_USB_DUMMY_HCD=m
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+# CONFIG_USB_G_SERIAL is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_PXA=m
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
-
-#
-# XFS support
-#
+# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
@@ -560,11 +1085,10 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
@@ -579,13 +1103,14 @@ CONFIG_RAMFS=y
# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_JFFS2_FS_NOR_ECC is not set
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
-# CONFIG_CRAMFS is not set
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -602,6 +1127,7 @@ CONFIG_NFS_FS=y
# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
+CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -610,6 +1136,7 @@ CONFIG_SUNRPC=y
# 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
@@ -667,77 +1194,32 @@ CONFIG_NLS_ISO8859_1=y
# CONFIG_PROFILING is not set
#
-# Graphics support
-#
-CONFIG_FB=y
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_PXA=y
-# CONFIG_FB_PXA_PARAMETERS is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# Misc devices
-#
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
-#
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
# Kernel hacking
#
-CONFIG_DEBUG_KERNEL=y
+# CONFIG_PRINTK_TIME is not set
CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
CONFIG_FRAME_POINTER=y
+# CONFIG_UNWIND_INFO is not set
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_WAITQ is not set
CONFIG_DEBUG_ERRORS=y
@@ -753,7 +1235,31 @@ CONFIG_DEBUG_LL=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
#
# Hardware crypto devices
@@ -762,8 +1268,10 @@ CONFIG_DEBUG_LL=y
#
# Library routines
#
-# CONFIG_CRC_CCITT is not set
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/packages/linux/mainstone-kernel_2.6.18.bb b/packages/linux/mainstone-kernel_2.6.18.bb
index f487e1f38a..290bb5911d 100644
--- a/packages/linux/mainstone-kernel_2.6.18.bb
+++ b/packages/linux/mainstone-kernel_2.6.18.bb
@@ -1,37 +1,24 @@
+require linux.inc
+
SECTION = "kernel"
DESCRIPTION = "Linux kernel for the Mainstone (PXA270 ref design)"
LICENSE = "GPL"
-PR = "r0"
+PR = "r2"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 \
- file://mainstone_defconfig"
+ file://flash-unlock.patch;patch=1;pnum=0 \
+ file://defconfig"
S = "${WORKDIR}/linux-2.6.18"
COMPATIBLE_HOST = 'arm.*-linux'
-inherit kernel
-inherit package
-
ARCH = "arm"
-#CMDLINE_CONSOLE ?= "ttyS0,115200n8"
+
+CMDLINE_CONSOLE ?= "ttyS0,115200n8"
#CMDLINE_ROOT = "root=/dev/slug rootfstype=ext2,jffs2 initrd=0x01000000,10M mem=32M@0x00000000"
-#CMDLINE_ROOT = "root=/dev/mtdblock4 rootfstype=jffs2 mem=32M@0x00000000"
#CMDLINE_ROOT = "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000"
-#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
-
-do_configure_prepend() {
- install -m 0644 ${WORKDIR}/${MACHINE}_defconfig ${S}/.config
-# echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_build after do_compile
+CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mem=64M"
+CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
COMPATIBLE_MACHINE = "mainstone"
diff --git a/packages/matchbox-applet-startup-monitor/files/.mtn2git_empty b/packages/matchbox-applet-startup-monitor/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/matchbox-applet-startup-monitor/files/.mtn2git_empty
diff --git a/packages/matchbox-applet-startup-monitor/files/85mb-applet-startup-monitor b/packages/matchbox-applet-startup-monitor/files/85mb-applet-startup-monitor
new file mode 100755
index 0000000000..2fb859650f
--- /dev/null
+++ b/packages/matchbox-applet-startup-monitor/files/85mb-applet-startup-monitor
@@ -0,0 +1,2 @@
+#!/bin/sh
+mb-applet-startup-monitor &
diff --git a/packages/matchbox-applet-startup-monitor/matchbox-applet-startup-monitor_0.1.bb b/packages/matchbox-applet-startup-monitor/matchbox-applet-startup-monitor_0.1.bb
index e95665041e..0f32409333 100644
--- a/packages/matchbox-applet-startup-monitor/matchbox-applet-startup-monitor_0.1.bb
+++ b/packages/matchbox-applet-startup-monitor/matchbox-applet-startup-monitor_0.1.bb
@@ -3,12 +3,15 @@ LICENSE = "GPL"
DEPENDS = "libmatchbox startup-notification"
SECTION = "x11/wm"
-PR = "r1"
+PR = "r5"
-SRC_URI = "http://projects.o-hand.com/matchbox/sources/mb-applet-startup-monitor/${PV}/mb-applet-startup-monitor-${PV}.tar.gz"
+SRC_URI = "http://projects.o-hand.com/matchbox/sources/mb-applet-startup-monitor/${PV}/mb-applet-startup-monitor-${PV}.tar.gz \
+ file://85mb-applet-startup-monitor"
S = "${WORKDIR}/mb-applet-startup-monitor-${PV}"
inherit autotools pkgconfig
-FILES_${PN} = "${bindir}/* ${datadir}/applications ${datadir}/pixmaps"
-
+do_install_append() {
+ install -d ${D}${sysconfdir}/X11/Xsession.d
+ install -m 0755 ${WORKDIR}/85mb-applet-startup-monitor ${D}${sysconfdir}/X11/Xsession.d/
+}
diff --git a/packages/meta/external-toolchain.bb b/packages/meta/external-toolchain.bb
index 4e830435c4..69f16b10df 100644
--- a/packages/meta/external-toolchain.bb
+++ b/packages/meta/external-toolchain.bb
@@ -30,21 +30,21 @@ do_stage() {
install -d ${STAGING_DIR}/pkgdata/
install -d ${STAGING_DIR_TARGET}/shlibs/
- cp -ar ${prefix}/pkgdata/* ${STAGING_DIR}/pkgdata/
- cp -ar ${prefix}/${TARGET_SYS}/shlibs/* ${STAGING_DIR_TARGET}/shlibs/
+ cp -pPRr ${prefix}/pkgdata/* ${STAGING_DIR}/pkgdata/
+ cp -pPRr ${prefix}/${TARGET_SYS}/shlibs/* ${STAGING_DIR_TARGET}/shlibs/
if [ -d ${prefix}/ipk ]; then
install -d ${DEPLOY_DIR_IPK}/
- cp -ar ${prefix}/ipk/* ${DEPLOY_DIR_IPK}/
+ cp -pPRr ${prefix}/ipk/* ${DEPLOY_DIR_IPK}/
fi
if [ -d ${prefix}/deb ]; then
install -d ${DEPLOY_DIR_DEB}/
- cp -ar ${prefix}/deb/* ${DEPLOY_DIR_DEB}/
+ cp -pPRr ${prefix}/deb/* ${DEPLOY_DIR_DEB}/
fi
if [ -d ${prefix}/pstage -a "x${DEPLOY_DIR_PSTAGE}" != "x" ]; then
install -d ${DEPLOY_DIR_PSTAGE}/
- cp -ar ${prefix}/pstage/* ${DEPLOY_DIR_PSTAGE}/
+ cp -pPRr ${prefix}/pstage/* ${DEPLOY_DIR_PSTAGE}/
fi
}
diff --git a/packages/meta/meta-nas-server.bb b/packages/meta/meta-nas-server.bb
new file mode 100644
index 0000000000..3deb44c2bd
--- /dev/null
+++ b/packages/meta/meta-nas-server.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Meta-package for a network attached storage server"
+LICENSE = "MIT"
+PR = "r0"
+
+RDEPENDS = "\
+ task-nas-server-everything \
+ "
+
+inherit meta
+
diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb
index c007899afd..04e4425a3b 100644
--- a/packages/meta/slugos-packages.bb
+++ b/packages/meta/slugos-packages.bb
@@ -5,7 +5,7 @@
DESCRIPTION = "Packages that are compatible with the SlugOS firmware"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r43"
+PR = "r44"
CONFLICTS = "db3"
COMPATIBLE_MACHINE = "nslu2"
@@ -194,6 +194,7 @@ SLUGOS_PACKAGES = "\
sudo \
sysfsutils \
tar \
+ tcpdump \
thttpd \
tiff \
tzdata \
@@ -250,6 +251,8 @@ SLUGOS_EXTRA_PACKAGES ?= ""
DEPENDS = "\
slugos-image \
slugos-native \
+ task-nas-server-everything \
+ task-proper-tools \
${SLUGOS_PACKAGES} \
${SLUGOS_EXTRA_PACKAGES} \
package-index \
diff --git a/packages/meta/unslung-binary-kernel-packages.bb b/packages/meta/unslung-binary-kernel-packages.bb
deleted file mode 100644
index eb95b847fd..0000000000
--- a/packages/meta/unslung-binary-kernel-packages.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Packages that are compatible with the Unslung binary kernel firmware"
-LICENSE = "MIT"
-PR = "r2"
-COMPATIBLE_MACHINE = "nslu2"
-
-ALLOW_EMPTY = "1"
-PACKAGES = "${PN}"
-
-inherit meta
-
-UNSLUNG_PACKAGES = "\
- "
-
-BROKEN_PACKAGES = "\
- "
-
-DEPENDS = 'unslung-image \
- ${UNSLUNG_PACKAGES} \
- package-index'
diff --git a/packages/mgetty/mgetty_1.1.30.bb b/packages/mgetty/mgetty_1.1.30.bb
index 2760b4717e..43c870fc30 100644
--- a/packages/mgetty/mgetty_1.1.30.bb
+++ b/packages/mgetty/mgetty_1.1.30.bb
@@ -61,7 +61,7 @@ do_compile () {
-DVARRUNDIR=\"/var/run\" \
-DAWK=\"awk\" \
-DPERL=\""${bindir}/perl -w"\" -DTKPERL=\"${bindir}/tkperl\" \
- -DECHO=\""echo -e"\" \
+ -DECHO=\""printf"\" \
-DSHELL=\"/bin/bash\" \
-o mksed mksed.c
./mksed >sedscript
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/mkbot/mkbot_0.3.bb b/packages/mkbot/mkbot_0.3.bb
index 195d74ca52..92df433e45 100644
--- a/packages/mkbot/mkbot_0.3.bb
+++ b/packages/mkbot/mkbot_0.3.bb
@@ -8,6 +8,6 @@ SECTION = "network"
SRC_URI = "http://files.fredemmott.co.uk/mkbot-${PV}.tar.bz2"
S = "${WORKDIR}/MKbot-0.3"
-inherit qmake qt4x11
+inherit qt4x11
#FIXME: lacks packaging
diff --git a/packages/mtd/mtd-utils_1.0.0+git.bb b/packages/mtd/mtd-utils_1.0.0+git.bb
index 33f95853f6..d4e67f3aae 100644
--- a/packages/mtd/mtd-utils_1.0.0+git.bb
+++ b/packages/mtd/mtd-utils_1.0.0+git.bb
@@ -3,7 +3,7 @@ SECTION = "base"
DEPENDS = "zlib lzo"
HOMEPAGE = "http://www.linux-mtd.infradead.org/"
LICENSE = "GPLv2"
-PR = "r6"
+PR = "r7"
# This is the default package, thus we lock to a specific git version so
# upstream changes will not break builds.
@@ -40,3 +40,7 @@ do_install () {
install -m 0755 $binary ${D}${bindir}
done
}
+
+PACKAGES =+ "mkfs-jffs mkfs-jffs2"
+FILES_mkfs-jffs = "${bindir}/mkfs.jffs"
+FILES_mkfs-jffs2 = "${bindir}/mkfs.jffs2"
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/files/navit.desktop b/packages/navit/files/navit.desktop
new file mode 100644
index 0000000000..52aae31fce
--- /dev/null
+++ b/packages/navit/files/navit.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Navit
+Comment=GPS Navigation
+Exec=navit
+Icon=openmoko-terminal
+Terminal=false
+Type=Application
+Categories=GTK;Application;Utilities;
+MimeType=text/x-vcard;
+SingleInstance=true
+StartupNotify=true
diff --git a/packages/navit/files/navit.launcher b/packages/navit/files/navit.launcher
new file mode 100644
index 0000000000..b95aadb878
--- /dev/null
+++ b/packages/navit/files/navit.launcher
@@ -0,0 +1,30 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: navit.launcher
+# Date: 20080105 (YMD)
+#
+#################################################################################
+#
+# 20080105 - v0.0.1 - Initial release
+
+# On devices with low memory (< 512Mb?) Navit will segfault on start.
+# This can be worked around by doing
+# "echo 1 > /proc/sys/vm/overcommit_memory"
+
+if test "`cat /proc/meminfo | grep ^MemTotal | awk '{print $2}'`" -lt "500000"
+then
+ if test "$USER" = "root"
+ then
+ echo "Enabling low-mem workaround..."
+ echo 1 > /proc/sys/vm/overcommit_memory
+ else
+ echo "I need root-privs to enable the low-mem workaround!"
+ fi
+fi
+
+navit.real $*
+
+
diff --git a/packages/navit/files/navit.xml-so.patch b/packages/navit/files/navit.xml-so.patch
new file mode 100644
index 0000000000..c374756447
--- /dev/null
+++ b/packages/navit/files/navit.xml-so.patch
@@ -0,0 +1,13 @@
+--- navit-0.0.3/src/navit.xml.orig 2008-01-01 15:24:43.000000000 +0000
++++ navit-0.0.3/src/navit.xml 2008-01-01 15:25:01.000000000 +0000
+@@ -1,8 +1,8 @@
+ <?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE navit SYSTEM "navit.dtd">
+ <plugins>
+- <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}lib*.so"/>
+- <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libgraphics_null.so" active="no" />
++ <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}lib*.so.0"/>
++ <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libgraphics_null.so.0" active="no" />
+ </plugins>
+ <debug name="navit:do_draw" level="0" />
+ <!--
diff --git a/packages/navit/navit.inc b/packages/navit/navit.inc
new file mode 100644
index 0000000000..06e3a72664
--- /dev/null
+++ b/packages/navit/navit.inc
@@ -0,0 +1,27 @@
+DESCRIPTION = "Navit is a car navigation system with routing engine."
+LICENSE = "GPL"
+DEPENDS = "glib-2.0 gtk+"
+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.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
+}
diff --git a/packages/navit/navit_0.0.1.bb b/packages/navit/navit_0.0.1.bb
deleted file mode 100644
index 2db71a3e87..0000000000
--- a/packages/navit/navit_0.0.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "Navit is a car navigation system with routing engine."
-LICENSE = "GPL"
-DEPENDS = "glib-2.0 gtk+"
-PR = "r2"
-
-inherit autotools
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
- file://compile-fix.patch;patch=1"
-
-EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --enable-avoid-unaligned --enable-avoid-float"
-
-FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
diff --git a/packages/navit/navit_0.0.2.bb b/packages/navit/navit_0.0.2.bb
deleted file mode 100644
index ce34ee835b..0000000000
--- a/packages/navit/navit_0.0.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "Navit is a car navigation system with routing engine."
-LICENSE = "GPL"
-DEPENDS = "glib-2.0 gtk+"
-PR = "r0"
-
-inherit autotools
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
- file://compile-fix.patch;patch=1"
-
-EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --enable-avoid-unaligned --enable-avoid-float"
-
-FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
diff --git a/packages/navit/navit_0.0.3.bb b/packages/navit/navit_0.0.3.bb
new file mode 100644
index 0000000000..a926528faf
--- /dev/null
+++ b/packages/navit/navit_0.0.3.bb
@@ -0,0 +1,5 @@
+require navit.inc
+
+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 8f158d4f79..014e7d3a53 100644
--- a/packages/navit/navit_cvs.bb
+++ b/packages/navit/navit_cvs.bb
@@ -1,19 +1,11 @@
-DESCRIPTION = "Navit is a car navigation system with routing engine."
-LICENSE = "GPL"
-DEPENDS = "glib-2.0 gtk+"
-PV = "0.0.2+cvs${SRCDATE}"
-PR = "r0"
+require navit.inc
-inherit autotools
-S = "${WORKDIR}/navit"
+PV = "0.0.3+cvs${SRCDATE}"
+PR = "r4"
-SRC_URI = "cvs://anonymous@navit.cvs.sourceforge.net/cvsroot/navit;module=navit \
- "
+S = "${WORKDIR}/navit"
-EXTRA_OECONF = "--disable-binding-python --disable-gui-sdl --disable-samplemap --enable-avoid-float --enable-avoid-unaligned"
-#--enable-shared
+SRC_URI = "cvs://anonymous@navit.cvs.sourceforge.net/cvsroot/navit;module=navit"
EXTRA_AUTORECONF = " -I m4"
-FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
-
diff --git a/packages/ncurses/ncurses.inc b/packages/ncurses/ncurses.inc
index 027f037ee5..81e59543f2 100644
--- a/packages/ncurses/ncurses.inc
+++ b/packages/ncurses/ncurses.inc
@@ -1,23 +1,15 @@
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"
+PR = "r1"
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 +80,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/netbase/netbase/interfaces b/packages/netbase/netbase/interfaces
index ca449168a9..c615642e35 100644
--- a/packages/netbase/netbase/interfaces
+++ b/packages/netbase/netbase/interfaces
@@ -29,14 +29,23 @@ iface wlan0 inet dhcp
# wireless-mode managed
#
# A WPA1 or WPA2 encrypted connection locked to a specific access point.
-# The WLAN cards firmware is updated temporarily to allow WPA
-# connections. Your card may or may not need the update.
+# This is the best option for non-roaming, single-network usage.
+# Note that your card may require a firmware update to use WPA.
+# Some distributions install a temporary volatile firmware update on ifup.
#
#iface wlan0 inet dhcp
# wpa-essid some-essid
# wpa-psk My-PlainText-Password
-# pre-up iwpriv wlan0 reset 1
-# pre-up prism2_srec -r wlan0 /etc/pcmcia/rf010804.hex
+#
+# A WPA1 or WPA2 encrypted connection using an external configuration file
+# for wpa-supplicant. This is the way to go if you need to configure multiple
+# networks with different keys and / or WPA settings and roaming support.
+#
+# iface wlan0 inet dhcp
+# wpa-conf /etc/wpa_supplicant.conf
+# wpa-driver hostap
+
+
iface atml0 inet dhcp
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/netbase/netbase_4.21.bb b/packages/netbase/netbase_4.21.bb
index 82464d82c6..1f2837a8c1 100644
--- a/packages/netbase/netbase_4.21.bb
+++ b/packages/netbase/netbase_4.21.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This package provides the necessary \
infrastructure for basic TCP/IP based networking."
SECTION = "base"
LICENSE = "GPL"
-PR = "r25"
+PR = "r26"
inherit update-rc.d
diff --git a/packages/nonworking/imkit/imkit_0.4.5.bb b/packages/nonworking/imkit/imkit_0.4.5.bb
index a07e2c4849..04b65c066f 100644
--- a/packages/nonworking/imkit/imkit_0.4.5.bb
+++ b/packages/nonworking/imkit/imkit_0.4.5.bb
@@ -16,5 +16,5 @@ PARALLEL_MAKE = ""
QMAKE_PROFILES = "imkit.pro"
do_configure_prepend() {
- echo -e "TEMPLATE=subdirs\nSUBDIRS=libimkit impls/anthy\n" > imkit.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=libimkit impls/anthy\n" > imkit.pro
}
diff --git a/packages/nslu2-binary-only/unslung-rootfs/NOTES b/packages/nslu2-binary-only/unslung-rootfs/NOTES
index 34d319d656..801ebd918c 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/NOTES
+++ b/packages/nslu2-binary-only/unslung-rootfs/NOTES
@@ -553,3 +553,21 @@ Replaced Linksys busybox with slingbox entirely.
Modified "unsling" script to use tar instead of find and cpio; removed
obsolete and untested unsling utilities (eg: resling).
+
+Replace mkfs.ext3 with a script in order to fix an obscure formatting bug
+with the Linksys GUI.
+
+Increased the bootup delay from 5 seconds to 15 seconds in linuxrc;
+required by some large disks which require additional time to become ready.
+Touching "/.fastdisk" on the flash filesystem will revert to the original
+5 second delay, which is useful to retain reasonably boot times.
+
+Added the bootdisk mechanism: at initial boot time, partitions mounted
+on the HDD mountpoints are scanned for a special directory structure
+containing startup script, which are executed. This facilitates easy
+customization of the boot for debugging purposes, or even automated
+installation and configuration processes.
+
+6.10:
+
+Second beta release.
diff --git a/packages/nslu2-binary-only/unslung-rootfs/README b/packages/nslu2-binary-only/unslung-rootfs/README
index 27dddeafbf..b5f5a23190 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/README
+++ b/packages/nslu2-binary-only/unslung-rootfs/README
@@ -1,370 +1,177 @@
-Unslung-6.x Family Release README INSTALLATION
-
-You must follow the steps in this README *exactly*. Do not skip any steps, and
-do not skip ahead thinking you know what you are doing and that therefore you
-don't need to follow instructions step by step.
+ Unslung-6.10 README
If at any time you have any questions concerning the installation or operation
of Unslung firmware, your first port of call should be the NSLU2-Linux wiki at:
- http://www.nslu2-linux.org
+ http://www.nslu2-linux.org
-If you are looking for further Unslung notes - including ipkg usage, diversion
-script details, or ChangeLog information, please consult the associated Unslung
-NOTES file.
+Additional information, including ChangeLog information can be found in the
+associated Unslung NOTES file as well as on the NSLU2-Linux wiki.
-------------------------------------------------------------------------------
There are three parts to completing the installation of the Unslung firmware:
- 1 - PRE-INSTALLATION CONSIDERATIONS
- 2 - FIRMWARE INSTALLATION DETAILS
- 3 - UNSLINGING DETAILS
-
-
-PRE-INSTALLATION CONSIDERATIONS
-
-1) You *must* test telnet Redboot access first before you flash the Unslung
- firmware. Failure to do so will mean you get no sympathy at all if you
- can't access Redboot when you need to recover from a bad flash. See
-
- http://www.nslu2-linux.org/wiki/HowTo/TelnetIntoRedBoot
-
- - Redboot is the bootloader that runs when the device is first started,
- loading things into memory and starting Linux. By testing your
- ability to telnet into Redboot, you are ensuring that if you injure
- your NSLU2 with a bad flash you should be able to follow the "How
- To Recover From A Bad Flash" instructions at
-
- http://www.nslu2-linux.org/wiki/HowTo/RecoverFromABadFlash
-
-2) If you want to install any packages, then you must have an external USB
- disk drive or an external USB flash disk. It is possible to make changes
- to the root filesystem in the internal flash storage, but the space is
- very limited. In fact, just running the "ipkg update" operation on an
- NSLU2 which does not have an external storage device of some sort attached
- will most likely render the NSLU2 unusable due to filling up its internal
- flash memory (if this happens then you will need to follow the recovery
- instructions in the previous step.) So unless you are an expert, use
- an external storage device. The remainder of these instructions assume
- that you have a suitable external disk or flash disk that you will be
- using for this purpose.
-
- A few words on selecting which port to use:
-
- Completely contrary to previous versions of Unslung, the preferred port
- for the Unslung external disk as of Unslung 6.x is often port 2. This
- will free up the far-more-flexible port number 1 for other uses.
-
- However, this "feature" (part of the Linksys R63 firmware) may cause some
- small consternation for users upgrading from earlier versions of Unslung.
- But in general, swapping the drives between the two ports will likely be
- the least painful solution. The basic challenge faced by upgraders is
- that *something* must change: if the drive remains in port 1, then it will
- remain mounted at "/share/hdd/..." but the drive nomenclature will change
- from "/dev/sda" to "/dev/sdb". On the other hand, if the drive is moved
- to port 2, then it will remain "/dev/sda" but it will then be mounted at
- "/share/flash/...". What difference this might make depends on each
- individual configuration; check the wiki for possible assistance for your
- particular configuration.
-
- For new users, the following guidelines can help:
- - if you have only a single drive that will be formatted by the NSLU2,
- use port 2.
- - if you have a single drive that will be formatted by the NSLU2, and
- all other drives or flash devices will be either FAT or NTFS, use
- port 2.
- - if you have two drives, and both will be formatted by the NSLU2, then
- unsling to the drive in port 1.
-
- If you unsling to port 2, and later add a drive in port 1 that will
- be formatted by the NSLU2, it will work as expected -- however, the
- drive to be added MUST be formatted by the unslung NSLU2 in question,
- and once formatted, the drive must NOT be removed. (The Linksys code
- will move it's "conf" datafiles to the drive in port 1 during the
- format operation, and thus will become dependent upon the presence of
- both drives for proper operation.)
-
-3) The external disk that you use as the target for package installation must
- be (or have previously been) formatted by the NSLU2.
-
- Since this point qualifies as a "frequently asked question", it is
- worth some clarification here. It is only possible to unsling to
- a disk that has been formatted by the NSLU2 - you cannot unsling to a
- FAT or NTFS disk. In fact, it is not sufficient to format the disk
- using another UNIX system -- in order to be recognized as a "Formatted
- (ext3)" disk by the NSLU2, and hence be suitable for unslinging, the
- disk must be specifically partitioned, formatted, and the partitions
- must contain a specific set of configuration files created by the
- NSLU2. So the simple rule is that if the NSLU2 web interface "Disk"
- page does not list the disk as "Formatted (ext3)", you will be unable
- to unsling to that disk.
-
- For upgrading users, it is possible to upgrade from all previous Unslung
- versions without reformatting your disk -- but not necessarily recommended.
- See the wiki article for recommended upgrade strategies:
-
- http://www.nslu2-linux.org/wiki/Unslung/UpgradingToUnslung6
-
- The unsling script will not touch anything in /unslung or /opt on your
- disk, so make sure all your file modifications are in those directories,
- as you were warned in the README file in all previous Unslung versions :-)
-
-4) If you want to use a flash disk as the target for package installation,
- ensure that it is at least 256MB, and formatted as above via the
- Linksys web interface.
+ 1 - PRE-INSTALLATION CONSIDERATIONS
+ 2 - FIRMWARE INSTALLATION DETAILS
+ 3 - UNSLINGING DETAILS
+
+1) PRE-INSTALLATION CONSIDERATIONS
-5) Please verify that any disks you are going to connect to the NSLU2 are
- recognized and working properly *before* updating your firmware (including
- any shares and data you had previously stored.) If not, DO NOT CONTINUE.
- You may want to check out "How To Troubleshoot A Drive Missing Condition"
- at:
-
- http://www.nslu2-linux.org/wiki/HowTo/TroubleshootADriveMissingCondition
-
- - The only exception to this, of course, are those enclosures that the
- stock firmware does not support, but the Unslung firmware does
- support.
-
-6) If you are upgrading your firmware, you should make a configuration backup
- via the Linksys web interface. The configuration backup can be found
- under "Administration", "Advanced", and then "Backup." The top section of
- that webpage is titled "Config Backup" and "Download" should be used to
- save your NSLU2 Users, Groups and Shares setup to a disk file.
-
-
-FIRMWARE INSTALLATION DETAILS
-
-1) Shutdown the NSLU2, and remove any disks that you may have plugged into the
- NSLU2. Power back up the NSLU2.
-
- - Firmware upgrades must always be performed with *no* hard disks or flash
- disks attached. This CANNOT be emphasized enough. Are you sure you
- unplugged the disks before powering up? If so, you may continue.
-
-2) Access the Web interface. Note that you should use the username "admin" and
- password "admin" for the web interface at this point (as no disks are
- attached, the default username and password is the only way to access the
- Management web pages).
-
- 2-a) If you are installing Unslung 6.x onto an NSLU2 unit with Linksys
- standard firmware already installed, flash unslung-6.x.bin as you
- normally would flash new firmware (using the web interface
- "Upgrade Firmware" page). See your NSLU2 user manual for details
- if you don't know how to do this.
-
- - During firmware flashing, the top LED - Ready/Status - flashes
- red and green (approximately 5 minutes, but can be much longer).
-
- - The NSLU2 will reboot after the flashing is complete.
-
- 2-b) If you are installing Unslung 6.x onto an NSLU2 unit with an
- existing version of nslu2-linux.org firmware already installed,
- you must first put the NSLU2 into RedBoot Upgrade Mode.
-
- - The NSLU2 should still be powered off at this point. If not,
- shut it down again before proceeding.
+a) You *must* confirm that you can enter "upgrade mode" using the Reset Button
+method. This is necessary because once you install Unslung, you will be unable
+to use the web GUI to reflash the device; the Reset Button technique will be
+required to install new firmware, upgrade, or recover from a bad flash:
- - Using a paper clip, push and hold in the reset button which is
- located on the back of the NSLU2 near the power socket.
+ http://www.nslu2-linux.org/wiki/HowTo/UseTheResetButtonToEnterUpgradeMode
- - While holding in the reset button, press and release the power
- button.
+To upload the firmware, use either the Sercomm Update Utility (for Windows
+users) or the UpSlug2 Utility (for Linux and MacOS X users):
- - Watch the Ready/Status LED, and as soon as it turns red quickly
- release the reset button.
+ http://www.nslu2-linux.org/wiki/Main/SercommFirmwareUpdater
+ http://www.nslu2-linux.org/wiki/Main/UpSlug2
+ http://www.nslu2-linux.org/wiki/Main/UpSlug2onOSX
- - You should now be in upgrade mode which is indicated by the
- Ready/Status LED alternating between red and green.
+b) You must have an external USB disk drive or an external USB flash device.
+There are a number of considerations to take into account in selecting the size
+and type of external device as well as which of the two USB ports to use:
- - Use either the Linux UpSlug2 tool or the Windows SerComm Upgrade
- tool to upload the new firmware - you can find download links at
- http://www.nslu2-linux.org/wiki/HowTo/InstallUnslungFirmware
+ http://www.nslu2-linux.org/wiki/Unslung/StorageBasics
+ http://www.nslu2-linux.org/wiki/Unslung/WhichUSBPortforUnslung6
- - During firmware flashing, the top LED - Ready/Status - flashes
- red and green (approximately 5 minutes, but can be much longer).
+It is important to make sure that the device you intend to use is functional
+with the standard Linksys firmware before you attempt to use it with Unslung.
- - The NSLU2 will reboot after the flashing is complete.
+c) Review any known issues and errata:
-3) Shutdown the NSLU2 (again), attach disk(s), and power it back up.
+ http://www.nslu2-linux.org/wiki/Unslung/KnownProblems
-4) Verify your NSLU2 is working normally again at this point in the web
- interface. In particular, you should ensure that all your disks are still
- recognized as they were before you updated the firmware (including any
- shares and data you had previously stored.) If not, DO NOT CONTINUE.
- You may want to check out "How To Troubleshoot A Drive Missing Condition"
- at:
+(Hint: read the wiki pages carefully to determine the firmware release to which
+they apply; many of the pages contain information pertaining to older versions
+of Unslung, or even to other firmware entirely.)
- http://www.nslu2-linux.org/wiki/HowTo/TroubleshootADriveMissingCondition
+2) FIRMWARE INSTALLATION DETAILS
- - If you are not "unslinging", you can stop at this point. *HOWEVER!*,
- the only reason for not unslinging would be in the case of a re-flash
- of the SAME firmware. Even if this is a point firmware upgrade, you
- will need to unsling.
+The installation process is simple, but each step is important. The most
+common problems reported are a result of skipping one of the steps in this
+process, so be careful. In particular, having a disk or flash device plugged
+in when it shouldn't be can mean the difference between success and failure.
- ***** If you do not choose to do the unslinging procedure described below,
- DO NOT install packages unless you are SURE you know what you are
- doing! "Bricking" your NSLU2 by not unslinging and then running ipkg
- is not just a possibility, it is a certainty.
+a) Preparation
-5) Shutdown the NSLU2 and unplug *ALL* attached disks.
+- Install either the Sercomm (Windows) or the UpSlug2 (Linux and MacOS X)
+ utilities on the system you'll be using to upload the firmware.
- - You must NOT have any disk plugged into the NSLU2 when you reboot to
- perform the next part of installation - the "Unslinging".
+- Access the Linksys web GUI, and record your network settings.
+- Shutdown the NSLU2 and unplug all USB cables and devices.
-'UNSLINGING' DETAILS
+b) Flashing the New Firmware
-"Unslinging" is the process of copying the root filesystem of your NSLU2 onto
-an external disk, and configuring that external disk for installation of
-packages. Basically it's a script (stored in /sbin/unsling) which copies all
-the files from the internal jffs2 filesystem onto the external disk and tells
-the internal firmware to load the root filesystem from the external disk when
-booting in the future.
+- Enter upgrade mode, using the Reset Button technique.
-To run the unsling-script you have to be logged in as root (with a telnet
-session).
+- Use either the Sercomm or UpSlug2 Utility to upload the new firmware.
-NOTE: There are two root passwords. One is saved in an internal database file
-called /usr/local/passwd (we know this one - it's "uNSLUng" and used when you
-boot without a attached harddisk) the other is stored in an external file called
-/share/hdd/conf/passwd (we don't know this one - it's used when you boot with a
-external harddisk attached). Later in the process you can change both of
-them. That means: Everytime you boot WITHOUT an attached harddisk you gain
-root-access with the "uNSLUng" password. If you boot WITH an attached harddisk,
-you won't have access until you change the file /share/hdd/conf/passwd.
+c) Verifying the New Firmware
-NOTE about the NOTE: New in Unslung 6.x is that by default the "unsling"
-script will prompt for a new password. This new password will become the
-new password used whenever the NSLU2 is booted without it's disk (replacing
-the "uNSLUng" password), and it will also be the new root password used when
-the NSLU2 boots up with it's disk. If you are upgrading, or wish to preserve
-your passwords just the way they are, use the "-nopw" option with the unsling
-script.
+- The NSLU2 will restart itself after the firmware in installed.
-1) Power up the NSLU2 without any disks connected.
+- Access the Linksys web GUI. The new firmware version will be displayed on
+ the "Home" screen.
- - This only has to be done when you update the firmware.
+3) 'UNSLINGING' DETAILS
- ***** To reiterate, you should not have a disk plugged in at this stage.
- If you powered up your NSLU2 with a disk attached, shutdown the
- NSLU2, unplug the disks, and power up again.
+"Unslinging" is the process of copying the firmware to an external disk, and
+configuring that external disk for installation of packages. In order to
+perform this operation, you need to log in to the NSLU2 using telnet, and you
+need a suitable external disk or flash device.
-2) Enable telnet by going to the NSLU2's web interface and clicking on the
- "Manage Telnet" link (right-hand side), then on the "Enable/Disable
- NSLU2 telnet Service" page, click on the "Enable" button to turn on
- the telnet service.
+This procedure is made a bit more complicated because the behavior of the NSLU2
+can change depending on the presence of an external disk. Specifically, when
+an external storage device is plugged in, the NSLU2 will switch over to using
+the passwords and configuration information stored on that external disk, if
+possible. Since we don't know the root password originally written to that
+device, you must be very careful to perform the following steps in precisely
+the specified order, or you'll lock yourself out of your own device.
- (You can browse directly to the enable/disable telnet page in your
- browser: "http://192.168.1.77/Management/telnet.cgi".)
+a) Gain Telnet Access
- - Note that you should use the username "admin" and password "admin" for
- the web interface at this point (as no disks are attached, the
- default username and password is the only way to access the
- Management web pages).
+- Power up the NSLU2 without any disks connected.
- - Make sure you have **** NO DISKS ATTACHED AT THIS TIME ****
+- Enable telnet by going to the NSLU2's web GUI and clicking on the "Manage
+ Telnet" link (right-hand side), then on the "Enable" button to turn on the
+ telnet service.
- - If you plug a disk in before you complete the telnet connection, then
- the NSLU2 will pick up the Linksys password from the disk, and you
- will not be able to telnet into it. So don't have any disks attached
- at this point.
+- Use your telnet utility to telnet into the NSLU2, and log in using the
+ username root and password uNSLUng (upper/lower case is significant).
- - Make sure you have **** NO DISKS ATTACHED AT THIS TIME ****
+- Do not logout before you go to the next step, or you'll have to start this
+ step over again.
-3) OK, now that you don't have any disks attached, you can proceed and telnet
- into the NSLU2 using the username root and password uNSLUng.
+b) Gain Access to the External Storage
-4) Identify which drive you wish you "unsling", and plug it in. Wait a minute
- or two while the disk is mounted. Check the web interface to make sure
- that the disk has been recognized by the Linksys software.
+- Identify the drive or flash device to which you will be unslinging, and plug
+ it in to the desired USB port.
- - If the disk has not been previously formatted on the NSLU2, then now is
- the time to do that. Make sure that the drive is recognized in the
- web interface.
+- Wait for a minute or two while the disk is mounted.
- Be patient - it might take several minutes for the NSLU2 to recognize
- the hardware, mount the partitions, and verify that the drive is correctly
- configured to be considered "Formatted". Do not continue if the drive
- is not marked as "Formatted (ext3)" in the NSLU2 web interface.
+- Check the web GUI to make sure that the disk has been recognized by the
+ Linksys software
-5) In the telnet session, run "/sbin/unsling disk2".
- (If you've decided to unsling to a device connected to port 1, you'll run
- "/sbin/unsling disk1", of course.)
+- If the disk has not been previously formatted on the NSLU2, then now is the
+ time to do that.
- - Once you "unsling" to an external disk on a particular port (Disk 1 or
- Disk 2), it is important that you keep that disk continually plugged
- into that same port whenever the NSLU2 is turned on.
+- Be patient - it might take several minutes for the NSLU2 to recognize the
+ hardware, mount the partitions, and verify that the drive is correctly
+ configured to be considered "Formatted".
- ***** By default, unsling WILL prompt you for a new root password, and it
- will change the password on your disk as well. If this is NOT what
- you wish it to do, use the "-nopw" flag with the "unsling" command:
- "/sbin/unsling -nopw disk2" for example.
-
- For more information on changing passwords and all the places where
- the NSLU2 stores passwords, please see the following wiki article:
+- Do not continue if the drive is not marked as "Formatted (ext3)" in the
+ NSLU2 web GUI.
- http://www.nslu2-linux.org/wiki/HowTo/ChangePasswordsFromTheCommandLine
+c) Unsling
-6) (For those upgrading from Unslung 3.x only)
- If you wish to migrate your packages from the old Unslung 3.x location in
- the /share/hdd/conf (disk1) or /share/flash/conf (disk2) partitions to the
- new Unslung 4.x, 5.x and 6.x location on the data partition, then run:
- "/sbin/slingover disk1" (if your packages were previously on disk1 and you
- ran "/sbin/unsling disk1" in step 5) or "/sbin/slingover disk2" (if your
- packages were previously on disk2 and you ran "/sbin/unsling disk2" in
- step 5).
+- In the telnet session, run "unsling disk2" if your device is on the USB port
+ labeled "DISK 2", or "unsling disk1" if it's on the port marked "DISK 1".
- - If your packages were not stored in /share/hdd/conf or /share/flash/conf
- (e.g. you had previously moved your packages from the conf partition
- to the data partition), then all bets are off and you will need to
- read the /sbin/slingover script and perform the appropriate steps
- manually.
+- When prompted, enter a new root password - this password will replace the
+ uNSLUng password.
-7) Reboot.
+- When the unsling is complete, reboot the NSLU2.
- ***** DO NOT RUN ipkg BEFORE YOU REBOOT AND CONFIRM EXTERNAL ROOTFS *****
+d) Confirm That Your NSLU2 is Unslung:
- - If you were to run ipkg when the root filesystem is loaded from the
- internal jffs2 filesystem, then you would fill the flash and cause
- your NSLU2 to no longer boot and require reflashing to recover.
+- Once rebooted, open the NSLU2 web GUI in your browser.
-8) Confirm that your NSLU2 is unslung:
+- Confirm that the text at the bottom of the page reads "uNSLUng status:
+ Unslung to disk2, /dev/sda1" (your devices may vary, of course).
- You can verify that your NSLU2 is unslung by checking the NSLU2 web admin
- GUI - you are unslung if the text at the bottom reads something like:
- "uNSLUng status: Unslung to disk2, /dev/sda1"
+- Click the "Manage Telnet" link, and enable telnet as before.
- Also, when you login to the NSLU2, the login message printed will clearly
- indicate if you are unslung, or if something went awry and you are still
- running on the internal flash.
+- Telnet to the NSLU2, and login using the root user and the new password you
+ gave when unslinging.
- If your NSLU2 does not indicate that it is Unslung, rather it says that it
- is running from internal flash, then the first thing to check is:
- - Did you miss step 7 above (reboot)?
+- Confirm that the login message states that you are running in Unslung mode.
-9) Verify that you can log into the NSLU2 by going to the web GUI "Manage Telnet"
- page, enable the telnet service, then telnet in as the root user, with the
- password you entered when you performed the "unsling" operation.
+e) Updating Package Lists and Installing Optware Packages
-Make sure you add an entry to the "The Unslung 6.x" table in the Yahoo group.
-Just use the next free integer for your Unslung number.
+(This is, strictly speaking, optional - but we expect that you installed this
+firmware so that you could add additional software.)
-http://groups.yahoo.com/group/nslu2-linux/database?method=reportRows&tbl=12
+- Telnet into the NSLU2.
+- Check that your NSLU2 can reach the internet by pinging www.nslu2-linux.org.
+ (if it fails, check your NSLU2 network settings (on the web GUI pages), or
+ check your router or network configuration to correct this problem.)
-If you make no further changes, your NSLU2 will continue to operate normally.
-But to customize things, you'll be downloading packages and adding stuff to the
-/unslung directory using diversion scripts.
+- Enter the command "ipkg update" to update the list of software packages
+ ("optware") available for Unslung.
-http://www.nslu2-linux.org/wiki/Unslung/Packages
-http://www.nslu2-linux.org/wiki/Unslung/DiversionScripts
+- Install the "openssh" package with the command "ipkg install openssh".
-(One of the first packages you should consider installing is the OpenSSH
-package, which will provide you a secure and more usable replacement for the
-standard telnet service on the NSLU2.)
+-------------------------------------------------------------------------------
-Read the NOTES file (normally in /opt/doc/NOTES on your unslung NSLU2) to expand
-the capabilities of your Unslung NSLU2!
+Congratulations! Your NSLU2 is unslung, and ready to do more than you'd
+imagine such a small device could ever do. Enjoy! If you find the Unslung
+firmware useful, you may wish to make a donation to help support the project:
-Enjoy!
+ http://www.nslu2-linux.org/wiki/Main/Donate
diff --git a/packages/nslu2-binary-only/unslung-rootfs/linuxrc b/packages/nslu2-binary-only/unslung-rootfs/linuxrc
index 77185b9443..1500779280 100755
--- a/packages/nslu2-binary-only/unslung-rootfs/linuxrc
+++ b/packages/nslu2-binary-only/unslung-rootfs/linuxrc
@@ -41,9 +41,13 @@ if ( ! [ -f /.nodisk ] ) ; then
[ -e /.sdb1root -a -f /proc/hdd_sdb ] && cnt=0
cnt=`expr $cnt - 1`
done
- echo
+ /bin/echo
- /bin/sleep 5
+ if [ -e /.fastdisk ] ; then
+ /bin/sleep 5
+ else
+ /bin/sleep 15
+ fi
mounted=
diff --git a/packages/nslu2-binary-only/unslung-rootfs/telnet.htm b/packages/nslu2-binary-only/unslung-rootfs/telnet.htm
index 7807f228a2..c1d339777a 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/telnet.htm
+++ b/packages/nslu2-binary-only/unslung-rootfs/telnet.htm
@@ -22,7 +22,7 @@
</CENTER>
<HR>
<P>NOTICE: The telnet service is inherently not secure. Among other security concerns, the login id and passwords you enter will be sent in plaintext across the network. In order to provide a slightly higher degree of security, the service will not be automatically restarted upon reboot. However, if you do not intend to reboot soon, it is recommended that you use this page to disable the service as soon as it is no longer needed.</P>
- <P>A better solution than telnet for network terminal access to the NSLU2 is to use an SSH package, such as "openssh" or "dropbear". These packages are secure, and will not require any special steps to enable once installed. Openssh can be installed using the standard "ipkg" mechanism: "ipkg install openssh".</P>
+ <P>A better solution than telnet for network terminal access to the NSLU2 is to use an SSH package, such as "openssh". This package is secure, will remove the need to use a web browser to enable access, and is less prone to inadvertent disabling than telnet. Openssh can be installed using the standard "ipkg" mechanism: "ipkg install openssh". No additional configuration is required; the installer will perform all the necessary configuration to setup openssh as a telnet replacement. <B>You are strongly encouraged to install openssh as soon as possible.</B></P>
<HR>
<CENTER>
<P><A HREF="/index.cgi">Back</A></P>
diff --git a/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm b/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm
index 2301a89c0f..39c65b2e7c 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm
+++ b/packages/nslu2-binary-only/unslung-rootfs/upgrade.htm
@@ -95,7 +95,12 @@
<tr>
<td colspan="2" align="left" class="smsg">
NOTE: You cannot use this upgrade page to install new firmware on Unslung.
-You must use the Redboot mechanism in order to install new firmware instead.
+Instead, use the "reset button" method to enter upgrade mode, and use either
+the "sercomm" or the "upslug2" utility to perform the reflash operation. See
+<a href="http://www.nslu2-linux.org/wiki/HowTo/UseTheResetButtonToEnterUpgradeMode">
+"How To Use The Reset Button To Enter Upgrade Mode"</a>, and
+<a href="http://www.nslu2-linux.org/wiki/HowTo/RecoverFromABadFlash">
+"How To Recover From A Bad Flash"</a> if you need more information.
</td>
</tr>
</table></div> </td>
diff --git a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
index 23b240debc..8b9ccaa8ba 100644
--- a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
+++ b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
@@ -1,7 +1,7 @@
SECTION = "base"
COMPATIBLE_MACHINE = "nslu2"
-PR = "r19"
+PR = "r22"
DEPENDS = "nslu2-linksys-libs nslu2-linksys-sambacodepages"
diff --git a/packages/ntpclient/ntpclient_2007_365.bb b/packages/ntpclient/ntpclient_2007_365.bb
new file mode 100644
index 0000000000..b892f384e7
--- /dev/null
+++ b/packages/ntpclient/ntpclient_2007_365.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "NTP (RFC-1305) client for unix-alike computers"
+HOMEPAGE = "http://doolittle.icarus.com/ntpclient"
+AUTHOR = "Larry Doolittle <larry@doolittle.boa.org>"
+RDEPENDS = "busybox"
+SECTION = "admin"
+LICENSE = "GPLv2"
+PR = "r0"
+# The ntpclient package uses version numbers that include an underscore :(
+PV = "2007_365"
+# ntpclient unpacks into a directory that doesn't include version info :(
+S = "${WORKDIR}/${PN}-2007"
+
+SRC_URI = "http://doolittle.icarus.com/ntpclient/ntpclient_${PV}.tar.gz \
+ file://init"
+
+INITSCRIPT_NAME = "ntpclient"
+INITSCRIPT_PARAMS = "defaults 65"
+inherit update-rc.d
+
+LDFLAGS += " -lrt "
+
+do_compile() {
+ oe_runmake ntpclient
+ oe_runmake adjtimex
+}
+
+do_install () {
+ # Install the binary and tools
+ install -D -m 0755 ${S}/ntpclient ${D}${base_sbindir}/ntpclient
+ install -D -m 0755 ${S}/adjtimex ${D}${base_sbindir}/adjtimex
+ install -D -m 0755 ${S}/rate.awk ${D}${sbindir}/ntpclient-drift-rate.awk
+ install -D -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ntpclient
+}
+
diff --git a/packages/nunome/nunome_1.0.2.bb b/packages/nunome/nunome_1.0.2.bb
index 044ed1358c..4dd1519536 100644
--- a/packages/nunome/nunome_1.0.2.bb
+++ b/packages/nunome/nunome_1.0.2.bb
@@ -20,11 +20,11 @@ PARALLEL_MAKE = ""
do_configure_prepend() {
sed -i -e 's,/opt/QtPalmtop/bin/,${bindir}/,g' "${S}/ui/nunome.h"
sed -i -e 's,/opt/QtPalmtop/,${palmtopdir}/,g' "${S}/ui/nunome.h"
- echo -e "TEMPLATE=subdirs\nSUBDIRS=Nnmlib server ui dicman ui" >nunome.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=Nnmlib server ui dicman ui\n" >nunome.pro
pushd Nnmlib && qmake -project -t lib && popd
- pushd server && qmake -project && echo -e "LIBS+=-lNnmlib\nTARGET=server.bin" >> server.pro && popd
- pushd dicman && qmake -project && echo -e "LIBS+=-lnunome -lNnmlib\nTARGET=dicman.bin" >> dicman.pro && popd
- pushd ui && qmake -project -t lib && echo -e "LIBS+=-lNnmlib\nTARGET=nunome" >> ui.pro && popd
+ pushd server && qmake -project && printf "LIBS+=-lNnmlib\nTARGET=server.bin\n" >> server.pro && popd
+ pushd dicman && qmake -project && printf "LIBS+=-lnunome -lNnmlib\nTARGET=dicman.bin\n" >> dicman.pro && popd
+ pushd ui && qmake -project -t lib && printf "LIBS+=-lNnmlib\nTARGET=nunome\n" >> ui.pro && popd
find . -name "moc*"|xargs rm -f
find . -name "Makefile"|xargs rm -f
}
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
new file mode 100644
index 0000000000..3b56c8657d
--- /dev/null
+++ b/packages/octave/octave_3.0.0.bb
@@ -0,0 +1,27 @@
+require octave.inc
+
+SRC_URI = "ftp://ftp.octave.org/pub/octave/${PN}-${PV}.tar.gz \
+ file://configure.patch;patch=1"
+
+PR = "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.so.*"
+FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft*"
+FILES_libcruft-dbg += "${libdir}/${PN}-${PV}/.debug/libcruft*"
+
+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.so.*"
+FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp*"
+FILES_liboctinterp-dbg += "${libdir}/${PN}-${PV}/.debug/liboctinterp*"
+
+# octave-oct provides subroutines in .oct file format
+FILES_${PN}-oct = "${libexecdir}/${PN}/${PV}/oct/${TARGET_SYS}/*.oct"
+
+FILES_${PN}-dbg += "${libexecdir}/${PN}/${PV}/oct/${TARGET_SYS}/.debug"
diff --git a/packages/openjade/openjade-1.3.2/oj-native-libosp-fix.patch b/packages/openjade/openjade-1.3.2/oj-native-libosp-fix.patch
new file mode 100644
index 0000000000..c82320b7fd
--- /dev/null
+++ b/packages/openjade/openjade-1.3.2/oj-native-libosp-fix.patch
@@ -0,0 +1,12 @@
+Index: openjade-1.3.2/Makefile.prog.in
+===================================================================
+--- openjade-1.3.2.orig/Makefile.prog.in 2007-12-21 14:48:00.000000000 +0100
++++ openjade-1.3.2/Makefile.prog.in 2007-12-21 14:50:12.000000000 +0100
+@@ -13,6 +13,7 @@
+ ALL_LIBS = $(XLIBS) $(LIBS)
+ Makefile.lt:
+ echo 'LT_LIBS='`echo $(ALL_LIBS)|sed 's/\.a/.la/g'` >Makefile.lt
++ sed -i -e "s|libosp.la|libosp.so|" Makefile.lt
+
+ PROG:=$(shell echo "$(PROG)" | sed '@program_transform_name@')
+
diff --git a/packages/openjade/openjade-native_1.3.2.bb b/packages/openjade/openjade-native_1.3.2.bb
index 5f5815a8b1..11a3ca8525 100644
--- a/packages/openjade/openjade-native_1.3.2.bb
+++ b/packages/openjade/openjade-native_1.3.2.bb
@@ -2,7 +2,8 @@ SECTION = "unknown"
DEPENDS = "opensp-native sgml-common-native"
LICENSE = "MIT"
SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/openjade-${PV}.tar.gz \
- file://configure.patch;patch=1"
+ file://configure.patch;patch=1 \
+ file://oj-native-libosp-fix.patch;patch=1;pnum=1"
S = "${WORKDIR}/openjade-${PV}"
inherit autotools native
@@ -11,7 +12,9 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/openjade-${PV}"
PACKAGES = ""
EXTRA_OECONF = "--enable-spincludedir=${STAGING_INCDIR}/OpenSP \
- --enable-splibdir=${STAGING_LIBDIR}"
+ --enable-splibdir=${STAGING_LIBDIR} \
+ --enable-default-catalog=${sysconfdir}/sgml/catalog \
+ --enable-default-search-path=${datadir}/sgml"
acpaths = "-I ${S}/config"
CFLAGS_prepend = "-I${S}/include"
@@ -22,8 +25,22 @@ do_configure () {
}
do_stage () {
- install -m 0755 ${S}/jade/.libs/openjade ${STAGING_BINDIR}/openjade
+ # 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_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 -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
+
+ install-catalog --add ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/openjade-${PV}.cat
}
diff --git a/packages/openmoko-apps/openmoko-gps_0.0.1+svnr9.bb b/packages/openmoko-apps/openmoko-gps_0.0.1+svnr9.bb
new file mode 100644
index 0000000000..b85411db3c
--- /dev/null
+++ b/packages/openmoko-apps/openmoko-gps_0.0.1+svnr9.bb
@@ -0,0 +1,33 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: openmoko-gps_svn.bb
+# Date: 20080101 (YMD)
+
+DESCRIPTION = "A tiny GPS output parser for the OpenMoko platform."
+HOMEPAGE = "http://forge.bearstech.com/trac/wiki/OpenMokoGPS"
+SECTION = "base"
+LICENSE = "GPL"
+
+RDEPENDS = "python-pygtk"
+
+PR = "r0"
+
+######################################################################################
+
+SRC_URI = "svn://forge.bearstech.com/bearforge/openmoko;module=gps;rev=9"
+
+S = "${WORKDIR}/gps"
+
+do_install() {
+ install -d ${D}/usr/bin
+ install -d ${D}/usr/share/applications/
+ install -d ${D}/usr/share/pixmaps/
+
+ install -m 0755 ${S}/gps_reader.py ${D}/usr/bin
+ install -m 0644 ${S}/openmoko-gps.desktop ${D}/usr/share/applications/
+ install -m 0644 ${S}/*.png ${D}/usr/share/pixmaps/
+}
diff --git a/packages/openmoko2/openmoko-dialer2_svn.bb b/packages/openmoko2/openmoko-dialer2_svn.bb
index 171815ef18..3378e43503 100644
--- a/packages/openmoko2/openmoko-dialer2_svn.bb
+++ b/packages/openmoko2/openmoko-dialer2_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "The OpenMoko Dialer"
SECTION = "openmoko/pim"
-DEPENDS = "libjana libmokogsmd2 libmokoui2 libmokojournal2 pulseaudio libnotify"
+DEPENDS = "libgsmd libjana libmokoui2 libmokojournal2 pulseaudio libnotify"
PV = "0.1.0+svnr${SRCREV}"
PR = "r6"
PE = "1"
diff --git a/packages/openmoko2/openmoko-messages2_svn.bb b/packages/openmoko2/openmoko-messages2_svn.bb
index bc1bcaff5e..8ec0a9103a 100644
--- a/packages/openmoko2/openmoko-messages2_svn.bb
+++ b/packages/openmoko2/openmoko-messages2_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "The OpenMoko Message application"
SECTION = "openmoko/pim"
-DEPENDS = "libmokogsmd2 libmokoui2 libmokojournal2"
+DEPENDS = "libmokogsmd2 libmokoui2 libmokojournal2 libjana"
PV = "0.1.0+svnr${SRCREV}"
PR = "r0"
diff --git a/packages/openmoko2/openmoko-sample2_svn.bb b/packages/openmoko2/openmoko-sample2_svn.bb
index 8c808ffd03..9118f89e8a 100644
--- a/packages/openmoko2/openmoko-sample2_svn.bb
+++ b/packages/openmoko2/openmoko-sample2_svn.bb
@@ -13,12 +13,12 @@ PACKAGE_ARCH_${PN}-src = "${BUILD_ARCH}-all-sdk"
do_configure_prepend() {
install -d ${WORKDIR}/source
- cp -a ${S} ${WORKDIR}/source/
+ cp -pPR ${S} ${WORKDIR}/source/
find ${WORKDIR}/source -name ".svn"|xargs rm -rf
}
do_install_append() {
install -d ${D}/usr/local/openmoko/source/
- cp -a ${WORKDIR}/source/* ${D}/usr/local/openmoko/source/
+ cp -pPR ${WORKDIR}/source/* ${D}/usr/local/openmoko/source/
}
diff --git a/packages/openmoko2/openmoko-terminal2_svn.bb b/packages/openmoko2/openmoko-terminal2_svn.bb
index 7f6c9ebbba..2273ddd88f 100644
--- a/packages/openmoko2/openmoko-terminal2_svn.bb
+++ b/packages/openmoko2/openmoko-terminal2_svn.bb
@@ -1,8 +1,8 @@
-DESCRIPTION = "The OpenMoko Command Line Console"
+DESCRIPTION = "The OpenMoko Command Line Terminal"
SECTION = "openmoko/applications"
-DEPENDS = "vte libmokoui2"
+DEPENDS = "vala-native vte libmokoui2"
RDEPENDS = "ttf-liberation-mono"
-PV = "2.1.1+svnr${SRCREV}"
-PR = "r2"
+PV = "3.0.0+svnr${SRCREV}"
+PR = "r0"
inherit openmoko2
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/opensp/opensp-native_1.5.bb b/packages/opensp/opensp-native_1.5.bb
index e0194c5798..f837ec908a 100644
--- a/packages/opensp/opensp-native_1.5.bb
+++ b/packages/opensp/opensp-native_1.5.bb
@@ -3,13 +3,19 @@ DEPENDS = ""
PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/openjade/OpenSP-${PV}.tar.gz \
- file://m4.patch;patch=1 \
- file://attributevalue.patch;patch=1 \
- file://rangmap-fix.patch;patch=1"
+ file://m4.patch;patch=1 \
+ file://attributevalue.patch;patch=1 \
+ file://rangmap-fix.patch;patch=1"
+
S = "${WORKDIR}/OpenSP-${PV}"
LICENSE = "MIT"
inherit autotools native
+EXTRA_OECONF = "\
+ --enable-default-catalog=${sysconfdir}/sgml/catalog \
+ --enable-default-search-path=${datadir}/sgml \
+ "
+
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/opensp-${PV}"
PACKAGES = ""
@@ -24,4 +30,13 @@ do_stage () {
install -m 0644 ${S}/include/*.h ${STAGING_INCDIR}/OpenSP/
install -m 0644 ${S}/include/*.cxx ${STAGING_INCDIR}/OpenSP/
install -m 0644 config.h ${STAGING_INCDIR}/OpenSP/config.h
+
+ # Installs all the tools and symlink with another common name to each.
+ install -d ${STAGING_BINDIR_NATIVE}
+ for tool in nsgmls sgmlnorm spam spcat spent sx
+ do
+ echo installing $tool to ${STAGING_BINDIR_NATIVE}
+ install -m 0755 $tool/.libs/o$tool ${STAGING_BINDIR_NATIVE}
+ ln -sf o$tool ${STAGING_BINDIR_NATIVE}/$tool
+ done
}
diff --git a/packages/opie-reader/uqtreader_cvs.bb b/packages/opie-reader/uqtreader_cvs.bb
index 9fb7af2db5..9b7ae57196 100644
--- a/packages/opie-reader/uqtreader_cvs.bb
+++ b/packages/opie-reader/uqtreader_cvs.bb
@@ -17,7 +17,7 @@ S = "${WORKDIR}/opie-reader"
export OPIEDIR="${S}/opiedir"
-inherit qmake_base qt4x11
+inherit qt4x11
do_configure() {
${OE_QMAKE_QMAKE} -recursive opie-reader.pro UQT_DATADIR="${datadir}/${PN}" UQT_LIBDIR="${libdir}/${PN}"
diff --git a/packages/opie-taskbar/opie-taskbar/firstuse-path.patch b/packages/opie-taskbar/opie-taskbar/firstuse-path.patch
new file mode 100644
index 0000000000..636eb81675
--- /dev/null
+++ b/packages/opie-taskbar/opie-taskbar/firstuse-path.patch
@@ -0,0 +1,11 @@
+--- launcher/firstuse.cpp 2007-10-14 12:47:55.000000000 +1300
++++ launcher/firstuse.cpp 2007-10-14 13:58:54.000000000 +1300
+@@ -124,7 +124,7 @@
+ #endif
+
+ for ( int i = 0; settingsTable[i].app; i++ ) {
+- QString file = QPEApplication::qpeDir() + "bin/";
++ QString file = OPIE_BINDIR + QString("/");
+ file += settingsTable[i].app;
+ file += exeSuffix;
+ if ( QFile::exists(file) )
diff --git a/packages/opie-taskbar/opie-taskbar_1.2.3.bb b/packages/opie-taskbar/opie-taskbar_1.2.3.bb
index d8a794fc16..c22e3bed5f 100644
--- a/packages/opie-taskbar/opie-taskbar_1.2.3.bb
+++ b/packages/opie-taskbar/opie-taskbar_1.2.3.bb
@@ -13,4 +13,5 @@ SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/apps/calibrate \
file://kbdlocks-runtime.patch;patch=1 \
file://restart-from-bindir.patch;patch=1 \
file://server.pro \
+ file://firstuse-path.patch;patch=1 \
"
diff --git a/packages/opie-taskbar/opie-taskbar_cvs.bb b/packages/opie-taskbar/opie-taskbar_cvs.bb
index 3bda5c4f40..e84e35d820 100644
--- a/packages/opie-taskbar/opie-taskbar_cvs.bb
+++ b/packages/opie-taskbar/opie-taskbar_cvs.bb
@@ -1,6 +1,6 @@
require ${PN}.inc
PV = "${OPIE_CVS_PV}"
-PR = "r15"
+PR = "r16"
SRC_URI = "${HANDHELDS_CVS};module=opie/core/apps/calibrate \
${HANDHELDS_CVS};module=opie/noncore/settings/mediummount \
@@ -14,4 +14,5 @@ SRC_URI = "${HANDHELDS_CVS};module=opie/core/apps/calibrate \
file://kbdlocks-runtime.patch;patch=1 \
file://restart-from-bindir.patch;patch=1 \
file://server.pro \
+ file://firstuse-path.patch;patch=1 \
"
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/poppler/poppler0.6_cvs.bb b/packages/poppler/poppler0.6_cvs.bb
deleted file mode 100644
index 15f94a775a..0000000000
--- a/packages/poppler/poppler0.6_cvs.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require poppler.inc
-PV = "0.5.9+cvs${SRCDATE}"
-PR = "r1"
-
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/poppler;module=poppler"
-S = "${WORKDIR}/poppler"
diff --git a/packages/portaudio/portaudio-v19_20071207.bb b/packages/portaudio/portaudio-v19_20071207.bb
new file mode 100644
index 0000000000..f8de2d741d
--- /dev/null
+++ b/packages/portaudio/portaudio-v19_20071207.bb
@@ -0,0 +1,27 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
+# License: MIT (see http://www.opensource.org/licenses/mit-license.php
+# for a copy of the license)
+#
+# Filename: portaudio-v19_20071207.bb
+# Date: 20080104 (YMD)
+
+DESCRIPTION = "portaudio is a portable cross-platform Audio API"
+SECTION = "base"
+LICENSE = "GPL"
+
+PR = "r0"
+
+######################################################################################
+
+SRC_URI = "http://www.portaudio.com/archives/pa_stable_v19_${PV}.tar.gz"
+
+S = "${WORKDIR}/portaudio"
+
+inherit autotools
+
+do_stage() {
+ install -m 0644 ${S}/include/portaudio.h ${STAGING_INCDIR}/
+ oe_libinstall -C lib -so libportaudio ${STAGING_LIBDIR}/
+}
diff --git a/packages/portmap/portmap_6.0.bb b/packages/portmap/portmap_6.0.bb
index 335b5c6d09..f42ed1e288 100644
--- a/packages/portmap/portmap_6.0.bb
+++ b/packages/portmap/portmap_6.0.bb
@@ -1,8 +1,8 @@
require portmap.inc
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://neil.brown.name/portmap/portmap-6.0.tgz \
+SRC_URI = "http://www.sourcefiles.org/Networking/Tools/Miscellanenous/portmap-6.0.tgz \
file://destdir-no-strip.patch;patch=1 \
file://no-tcpd-support.patch;patch=1 \
file://no-libwrap.patch;patch=1;pnum=0 \
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/psplash/files/psplash-init b/packages/psplash/files/psplash-init
index 5587346cb1..7f7eb36fbe 100644
--- a/packages/psplash/files/psplash-init
+++ b/packages/psplash/files/psplash-init
@@ -9,10 +9,14 @@ for x in $(cat /proc/cmdline); do
esac
done
+. /etc/init.d/functions
+
psplash_args=''
-case "`grep ^Hardware /proc/cpuinfo|cut -d: -f2 |tr A-Z a-z`" in
- "hp ipaq h3100"|"hp ipaq h3800") pspash_args='-a 90' ;;
- "hp ipaq 3600"|"hp ipaq 3700"|"hp ipaq h3900"|"htc universal"|*collie|*poodle|*akita|*spitz|*borzoi) psplash_args='-a 270' ;;
+case `machine_id` in
+ "hp_ipaq_h3100"|"hp_ipaq_h3800")
+ pspash_args='-a 90' ;;
+ "hp_ipaq_3600"|"hp_ipaq_3700"|"hp_ipaq_h3900"|"htc_universal"|*collie|*poodle|*akita|*spitz|*borzoi)
+ psplash_args='-a 270' ;;
esac
export TMPDIR=/mnt/.psplash
@@ -20,4 +24,5 @@ mount tmpfs -t tmpfs $TMPDIR -o,size=40k
/usr/bin/psplash $psplash_args &
+# Timetrap against hanging with splash hiding console messages.
(sleep 120; psplash-write "QUIT") &
diff --git a/packages/psplash/psplash_svn.bb b/packages/psplash/psplash_svn.bb
index cf6e228d92..17b459a15f 100644
--- a/packages/psplash/psplash_svn.bb
+++ b/packages/psplash/psplash_svn.bb
@@ -3,7 +3,8 @@ HOMEPAGE = "http://projects.o-hand.com/psplash"
SECTION = "base"
LICENSE = "GPL"
PV = "0.0+svnr${SRCREV}"
-PR = "r11"
+PR = "r12"
+RDEPENDS = "initscripts"
# You can create your own pslash-hand-img.h by doing
# ./make-image-header.sh <file>.png HAND
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-gammu_0.21.bb b/packages/python/python-gammu_0.24.bb
index f8989d9181..f8989d9181 100644
--- a/packages/python/python-gammu_0.21.bb
+++ b/packages/python/python-gammu_0.24.bb
diff --git a/packages/python/python-gsmd_svn.bb b/packages/python/python-gsmd_svn.bb
new file mode 100644
index 0000000000..14d3abd607
--- /dev/null
+++ b/packages/python/python-gsmd_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python bindings for the libgsmd"
+SRCNAME = "python-gsmd"
+AUTHOR = "Sudharshan S"
+SECTION = "devel/python"
+LICENSE = "LGPL"
+DEPENDS = "libgsmd"
+PV = "0.02+svnr${SRCREV}"
+PR = "r1"
+
+SRC_URI = "svn://svn.projects.openmoko.org/svnroot/python-openmoko;module=python-gsmd;proto=http"
+S = "${WORKDIR}/python-gsmd"
+
+SRCREV_pn-python-gsmd ?= "${AUTOREV}"
+
+inherit distutils
diff --git a/packages/python/python-pygtk_2.10.4.bb b/packages/python/python-pygtk_2.10.4.bb
index 9b4a034ffa..1af2093556 100644
--- a/packages/python/python-pygtk_2.10.4.bb
+++ b/packages/python/python-pygtk_2.10.4.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Python GTK+ 2.10.x Bindings"
SECTION = "devel/python"
# needs gtk+ 2.10.x
-DEPENDS = "gtk+ libglade python-pycairo"
+DEPENDS = "gtk+ libglade python-pycairo python-pygobject"
RDEPENDS = "python-shell python-pycairo python-pygobject"
PROVIDES = "python-pygtk2"
SRCNAME = "pygtk"
@@ -13,8 +13,10 @@ SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/pygtk/2.10/${SRCNAME}-${PV}.tar
file://acinclude.m4"
S = "${WORKDIR}/${SRCNAME}-${PV}"
-EXTRA_OECONF = "--disable-docs"
-EXTRA_OECONF += "--with-python-includes=${STAGING_INCDIR}/../"
+EXTRA_OECONF = "\
+ --disable-docs \
+ --with-python-includes=${STAGING_INCDIR}/../ \
+"
inherit autotools pkgconfig distutils-base
diff --git a/packages/python/python-pyqt/assistantclient-fix.patch b/packages/python/python-pyqt/assistantclient-fix.patch
new file mode 100644
index 0000000000..eef0847c7c
--- /dev/null
+++ b/packages/python/python-pyqt/assistantclient-fix.patch
@@ -0,0 +1,13 @@
+Index: PyQt-x11-gpl-4.3.3/sip/QtAssistant/qassistantclient.sip
+===================================================================
+--- PyQt-x11-gpl-4.3.3.orig/sip/QtAssistant/qassistantclient.sip 2008-01-07 13:31:35.000000000 +0100
++++ PyQt-x11-gpl-4.3.3/sip/QtAssistant/qassistantclient.sip 2008-01-07 13:32:20.000000000 +0100
+@@ -26,7 +26,7 @@
+ {
+
+ %TypeHeaderCode
+-#include <qassistantclient.h>
++#include <QtAssistant/qassistantclient.h>
+ %End
+
+ %ConvertToSubClassCode
diff --git a/packages/python/python-pyqt_4.3.3.bb b/packages/python/python-pyqt_4.3.3.bb
index 74a16c4720..2fd6fcc38b 100644
--- a/packages/python/python-pyqt_4.3.3.bb
+++ b/packages/python/python-pyqt_4.3.3.bb
@@ -6,7 +6,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
RDEPENDS = "python-core"
SRCNAME = "pyqt"
-PR = "ml0"
+PR = "ml1"
SRC_URI = "\
http://www.riverbankcomputing.com/Downloads/PyQt4/GPL/PyQt-x11-gpl-${PV}.tar.gz \
@@ -14,7 +14,8 @@ SRC_URI = "\
file://01_configure.dpatch;patch=1 \
file://02_htmllinks.dpatch;patch=1 \
file://03_qreal.dpatch;patch=1 \
- file://04_qreal_api_fixes.dpatch;patch=1"
+ file://04_qreal_api_fixes.dpatch;patch=1 \
+ file://assistantclient-fix.patch;patch=1"
S = "${WORKDIR}/PyQt-x11-gpl-${PV}"
inherit qt4x11 sip distutils-base
@@ -23,11 +24,10 @@ PARALLEL_MAKE = ""
QMAKE_PROFILES = "pyqt.pro"
# NOTE: match with qt version we have in OE
-EXTRA_SIPTAGS = "-tWS_X11 -tQt_4_3_2 -xVendorID -xPyQt_SessionManager -xPyQt_Accessibility"
+EXTRA_SIPTAGS = "-tWS_X11 -tQt_4_3_3 -xVendorID -xPyQt_SessionManager -xPyQt_Accessibility"
EXTRA_OEMAKE = " MAKEFLAGS= "
-SIP_MODULES = "QtCore QtGui QtNetwork QtSql QtSvg QtXml"
-# SIP_MODULES += "QtAssistant"
+SIP_MODULES = "QtCore QtGui QtNetwork QtSql QtSvg QtXml QtAssistant"
EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${OE_QMAKE_INCDIR_QT}/Qt \
INCLUDEPATH+=${STAGING_INCDIR}/${PYTHON_DIR} \
DEFINES+=QT_NO_FPU"
@@ -39,13 +39,13 @@ FIX_QREAL = "\
"
do_generate_prepend() {
- for i in ${FIX_QREAL}; do
- sed -i -e s,qreal,float,g sip/$i
- done
+ for i in ${FIX_QREAL}; do
+ sed -i -e s,qreal,float,g sip/$i
+ done
}
do_configure_prepend() {
- echo "TEMPLATE=subdirs\nSUBDIRS=${SIP_MODULES}\n" >pyqt.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=${SIP_MODULES}\n" >pyqt.pro
}
do_stage() {
diff --git a/packages/python/python24-pyqt2_3.13.bb b/packages/python/python24-pyqt2_3.13.bb
index 04493857dc..dc93d28a09 100644
--- a/packages/python/python24-pyqt2_3.13.bb
+++ b/packages/python/python24-pyqt2_3.13.bb
@@ -35,7 +35,7 @@ EXTRA_QMAKEVARS_POST += "QMAKE_UIC=${STAGING_BINDIR_NATIVE}/uic \
LIBS+=-L${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages"
do_configure_prepend() {
- echo -e "TEMPLATE=subdirs\nSUBDIRS=qt qtcanvas qttable qtpe\n" >pyqt.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=qt qtcanvas qttable qtpe\n" >pyqt.pro
}
do_stage() {
diff --git a/packages/python/python24-pyqwt2_3.10.bb b/packages/python/python24-pyqwt2_3.10.bb
index 28f4080c45..4f1f9bc0c9 100644
--- a/packages/python/python24-pyqwt2_3.10.bb
+++ b/packages/python/python24-pyqwt2_3.10.bb
@@ -33,7 +33,7 @@ EXTRA_QMAKEVARS_POST += "TARGET=qwt \
LIBS+=-L${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages"
do_generate_prepend() {
- echo -e "TEMPLATE=subdirs\nSUBDIRS=qwt\n" >pyqwt.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=qwt\n" >pyqwt.pro
echo "%Makefile qwt.pro.in" >>sip/qwtmod.sip
echo "TEMPLATE=lib" >>sip/qwtmod.sip
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/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty b/packages/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/.mtn2git_empty
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch b/packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch
new file mode 100644
index 0000000000..40264ed443
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/02_snapshot_use_tmpdir.patch
@@ -0,0 +1,23 @@
+#DPATCHLEVEL=0
+---
+# block.c | 6 +++++-
+# 1 file changed, 5 insertions(+), 1 deletion(-)
+#
+Index: block.c
+===================================================================
+--- block.c.orig 2007-12-03 23:47:25.000000000 +0000
++++ block.c 2007-12-03 23:47:31.000000000 +0000
+@@ -191,8 +191,12 @@ void get_tmp_filename(char *filename, in
+ void get_tmp_filename(char *filename, int size)
+ {
+ int fd;
++ char *tmpdir;
+ /* XXX: race condition possible */
+- pstrcpy(filename, size, "/tmp/vl.XXXXXX");
++ tmpdir = getenv("TMPDIR");
++ if (!tmpdir)
++ tmpdir = "/tmp";
++ snprintf(filename, size, "%s/vl.XXXXXX", tmpdir);
+ fd = mkstemp(filename);
+ close(fd);
+ }
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch b/packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch
new file mode 100644
index 0000000000..31c9da491d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/04_do_not_print_rtc_freq_if_ok.patch
@@ -0,0 +1,26 @@
+#DPATCHLEVEL=1
+---
+# vl.c | 5 ++++-
+# 1 file changed, 4 insertions(+), 1 deletion(-)
+#
+Index: qemu/vl.c
+===================================================================
+--- qemu.orig/vl.c 2007-12-03 15:44:35.000000000 +0000
++++ qemu/vl.c 2007-12-03 15:51:03.000000000 +0000
+@@ -1289,12 +1289,15 @@ static void hpet_stop_timer(struct qemu_
+
+ static int rtc_start_timer(struct qemu_alarm_timer *t)
+ {
++ unsigned long current_rtc_freq = 0;
+ int rtc_fd;
+
+ TFR(rtc_fd = open("/dev/rtc", O_RDONLY));
+ if (rtc_fd < 0)
+ return -1;
+- if (ioctl(rtc_fd, RTC_IRQP_SET, RTC_FREQ) < 0) {
++ ioctl(rtc_fd, RTC_IRQP_READ, &current_rtc_freq);
++ if (current_rtc_freq != RTC_FREQ &&
++ ioctl(rtc_fd, RTC_IRQP_SET, RTC_FREQ) < 0) {
+ fprintf(stderr, "Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal\n"
+ "error, but for better emulation accuracy either use a 2.6 host Linux kernel or\n"
+ "type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.\n");
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch b/packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch
new file mode 100644
index 0000000000..fdd922605e
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/05_non-fatal_if_linux_hd_missing.patch
@@ -0,0 +1,17 @@
+#DPATCHLEVEL=1
+---
+# hw/pc.c | 1 -
+# 1 file changed, 1 deletion(-)
+#
+Index: qemu/hw/pc.c
+===================================================================
+--- qemu.orig/hw/pc.c 2007-12-03 23:47:25.000000000 +0000
++++ qemu/hw/pc.c 2007-12-03 23:47:38.000000000 +0000
+@@ -385,7 +385,6 @@ static void generate_bootsect(uint32_t g
+ if (bs_table[0] == NULL) {
+ fprintf(stderr, "A disk image must be given for 'hda' when booting "
+ "a Linux kernel\n");
+- exit(1);
+ }
+
+ memset(bootsect, 0, sizeof(bootsect));
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch b/packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch
new file mode 100644
index 0000000000..06123d0626
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/06_exit_segfault.patch
@@ -0,0 +1,45 @@
+#DPATCHLEVEL=0
+---
+# linux-user/main.c | 8 ++++----
+# 1 file changed, 4 insertions(+), 4 deletions(-)
+#
+Index: linux-user/main.c
+===================================================================
+--- linux-user/main.c.orig 2007-12-03 23:47:25.000000000 +0000
++++ linux-user/main.c 2007-12-03 23:47:41.000000000 +0000
+@@ -714,7 +714,7 @@ void cpu_loop (CPUSPARCState *env)
+ default:
+ printf ("Unhandled trap: 0x%x\n", trapnr);
+ cpu_dump_state(env, stderr, fprintf, 0);
+- exit (1);
++ _exit (1);
+ }
+ process_pending_signals (env);
+ }
+@@ -1634,7 +1634,7 @@ void cpu_loop (CPUState *env)
+ default:
+ printf ("Unhandled trap: 0x%x\n", trapnr);
+ cpu_dump_state(env, stderr, fprintf, 0);
+- exit (1);
++ _exit (1);
+ }
+ process_pending_signals (env);
+ }
+@@ -1954,7 +1954,7 @@ int main(int argc, char **argv)
+ for(item = cpu_log_items; item->mask != 0; item++) {
+ printf("%-10s %s\n", item->name, item->help);
+ }
+- exit(1);
++ _exit(1);
+ }
+ cpu_set_log(mask);
+ } else if (!strcmp(r, "s")) {
+@@ -1973,7 +1973,7 @@ int main(int argc, char **argv)
+ if (qemu_host_page_size == 0 ||
+ (qemu_host_page_size & (qemu_host_page_size - 1)) != 0) {
+ fprintf(stderr, "page size must be a power of two\n");
+- exit(1);
++ _exit(1);
+ }
+ } else if (!strcmp(r, "g")) {
+ gdbstub_port = atoi(argv[optind++]);
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch b/packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch
new file mode 100644
index 0000000000..34282adc9d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/10_signal_jobs.patch
@@ -0,0 +1,26 @@
+#DPATCHLEVEL=0
+---
+# linux-user/signal.c | 7 ++++++-
+# 1 file changed, 6 insertions(+), 1 deletion(-)
+#
+Index: linux-user/signal.c
+===================================================================
+--- linux-user/signal.c.orig 2007-12-03 15:40:26.000000000 +0000
++++ linux-user/signal.c 2007-12-03 15:55:49.000000000 +0000
+@@ -364,10 +364,15 @@ int queue_signal(int sig, target_siginfo
+ k = &sigact_table[sig - 1];
+ handler = k->sa._sa_handler;
+ if (handler == TARGET_SIG_DFL) {
++ if (sig == TARGET_SIGTSTP || sig == TARGET_SIGTTIN || sig == TARGET_SIGTTOU) {
++ kill(getpid(),SIGSTOP);
++ return 0;
++ } else
+ /* default handler : ignore some signal. The other are fatal */
+ if (sig != TARGET_SIGCHLD &&
+ sig != TARGET_SIGURG &&
+- sig != TARGET_SIGWINCH) {
++ sig != TARGET_SIGWINCH &&
++ sig != TARGET_SIGCONT) {
+ force_sig(sig);
+ } else {
+ return 0; /* indicate ignored */
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch b/packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch
new file mode 100644
index 0000000000..33c5e8b12d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/11_signal_sigaction.patch
@@ -0,0 +1,21 @@
+#DPATCHLEVEL=0
+---
+# linux-user/signal.c | 5 +++++
+# 1 file changed, 5 insertions(+)
+#
+Index: linux-user/signal.c
+===================================================================
+--- linux-user/signal.c.orig 2007-12-03 23:47:44.000000000 +0000
++++ linux-user/signal.c 2007-12-03 23:47:46.000000000 +0000
+@@ -512,6 +512,11 @@ int do_sigaction(int sig, const struct t
+
+ if (sig < 1 || sig > TARGET_NSIG || sig == SIGKILL || sig == SIGSTOP)
+ return -EINVAL;
++
++ /* no point doing the stuff as those are not allowed for sigaction */
++ if ((sig == TARGET_SIGKILL) || (sig == TARGET_SIGSTOP))
++ return -EINVAL;
++
+ k = &sigact_table[sig - 1];
+ #if defined(DEBUG_SIGNAL)
+ fprintf(stderr, "sigaction sig=%d act=0x%08x, oact=0x%08x\n",
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch b/packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch
new file mode 100644
index 0000000000..6017df0f6d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/22_net_tuntap_stall.patch
@@ -0,0 +1,18 @@
+#DPATCHLEVEL=0
+---
+# vl.c | 2 +-
+# 1 file changed, 1 insertion(+), 1 deletion(-)
+#
+Index: vl.c
+===================================================================
+--- vl.c.orig 2007-12-03 23:47:36.000000000 +0000
++++ vl.c 2007-12-03 23:47:48.000000000 +0000
+@@ -4023,7 +4023,7 @@ static int tap_open(char *ifname, int if
+ return -1;
+ }
+ memset(&ifr, 0, sizeof(ifr));
+- ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
++ ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_ONE_QUEUE;
+ if (ifname[0] != '\0')
+ pstrcpy(ifr.ifr_name, IFNAMSIZ, ifname);
+ else
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch b/packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch
new file mode 100644
index 0000000000..95a7332ee8
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/31_syscalls.patch
@@ -0,0 +1,48 @@
+#DPATCHLEVEL=0
+---
+# linux-user/syscall.c | 11 ++++++++---
+# 1 file changed, 8 insertions(+), 3 deletions(-)
+#
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 19:32:56.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 19:33:41.000000000 +0000
+@@ -250,6 +250,7 @@ extern int getresuid(uid_t *, uid_t *, u
+ extern int setresgid(gid_t, gid_t, gid_t);
+ extern int getresgid(gid_t *, gid_t *, gid_t *);
+ extern int setgroups(int, gid_t *);
++extern int uselib(const char*);
+
+ #define ERRNO_TABLE_SIZE 1200
+
+@@ -4024,7 +4025,8 @@ abi_long do_syscall(void *cpu_env, int n
+ #endif
+ #ifdef TARGET_NR_uselib
+ case TARGET_NR_uselib:
+- goto unimplemented;
++ ret = get_errno(uselib(path((const char*)arg1)));
++ break;
+ #endif
+ #ifdef TARGET_NR_swapon
+ case TARGET_NR_swapon:
+@@ -5289,7 +5291,9 @@ abi_long do_syscall(void *cpu_env, int n
+ goto unimplemented;
+ #ifdef TARGET_NR_mincore
+ case TARGET_NR_mincore:
+- goto unimplemented;
++ /*page_unprotect_range((void*)arg3, ((size_t)arg2 + TARGET_PAGE_SIZE - 1) / TARGET_PAGE_SIZE);*/
++ ret = get_errno(mincore((void*)arg1, (size_t)arg2, (unsigned char*)arg3));
++ break;
+ #endif
+ #ifdef TARGET_NR_madvise
+ case TARGET_NR_madvise:
+@@ -5429,7 +5433,8 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ #ifdef TARGET_NR_readahead
+ case TARGET_NR_readahead:
+- goto unimplemented;
++ ret = get_errno(readahead((int)arg1, (off64_t)arg2, (size_t)arg3));
++ break;
+ #endif
+ #ifdef TARGET_NR_setxattr
+ case TARGET_NR_setxattr:
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch b/packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch
new file mode 100644
index 0000000000..5e8dd75b0e
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/32_syscall_sysctl.patch
@@ -0,0 +1,55 @@
+#DPATCHLEVEL=0
+---
+# linux-user/syscall.c | 32 +++++++++++++++++++++++++++++---
+# 1 file changed, 29 insertions(+), 3 deletions(-)
+#
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 15:56:24.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 15:57:36.000000000 +0000
+@@ -52,6 +52,7 @@
+ //#include <sys/user.h>
+ #include <netinet/ip.h>
+ #include <netinet/tcp.h>
++#include <sys/sysctl.h>
+
+ #define termios host_termios
+ #define winsize host_winsize
+@@ -4739,9 +4740,34 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ #endif
+ case TARGET_NR__sysctl:
+- /* We don't implement this, but ENOTDIR is always a safe
+- return value. */
+- ret = -TARGET_ENOTDIR;
++ {
++ struct __sysctl_args *args = (struct __sysctl_args *) arg1;
++ int *name_target, *name, nlen, *oldlenp, oldlen, newlen, i;
++ void *oldval, *newval;
++
++ name_target = (int *) tswapl((long) args->name);
++ nlen = tswapl(args->nlen);
++ oldval = (void *) tswapl((long) args->oldval);
++ oldlenp = (int *) tswapl((long) args->oldlenp);
++ oldlen = tswapl(*oldlenp);
++ newval = (void *) tswapl((long) args->newval);
++ newlen = tswapl(args->newlen);
++
++ name = alloca(nlen * sizeof (int));
++ for (i = 0; i < nlen; i++)
++ name[i] = tswapl(name_target[i]);
++
++ if (nlen == 2 && name[0] == CTL_KERN && name[1] == KERN_VERSION) {
++ ret = get_errno(
++ sysctl(name, nlen, oldval, &oldlen, newval, newlen));
++ if (!is_error(ret)) {
++ *oldlenp = tswapl(oldlen);
++ }
++ } else {
++ gemu_log("qemu: Unsupported sysctl name\n");
++ ret = -ENOSYS;
++ }
++ }
+ break;
+ case TARGET_NR_sched_setparam:
+ {
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch b/packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch
new file mode 100644
index 0000000000..3f733b6ab8
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/33_syscall_ppc_clone.patch
@@ -0,0 +1,22 @@
+#DPATCHLEVEL=0
+---
+# linux-user/syscall.c | 6 +-----
+# 1 file changed, 1 insertion(+), 5 deletions(-)
+#
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 15:58:11.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 15:58:46.000000000 +0000
+@@ -2750,11 +2750,7 @@ int do_fork(CPUState *env, unsigned int
+ if (!newsp)
+ newsp = env->gpr[1];
+ new_env->gpr[1] = newsp;
+- {
+- int i;
+- for (i = 7; i < 32; i++)
+- new_env->gpr[i] = 0;
+- }
++ new_env->gpr[3] = 0;
+ #elif defined(TARGET_SH4)
+ if (!newsp)
+ newsp = env->gregs[15];
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch b/packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch
new file mode 100644
index 0000000000..54ee3e0948
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/39_syscall_fadvise64.patch
@@ -0,0 +1,21 @@
+---
+ linux-user/syscall.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 19:33:47.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 19:33:48.000000000 +0000
+@@ -5317,6 +5317,12 @@ abi_long do_syscall(void *cpu_env, int n
+ ret = get_errno(mincore((void*)arg1, (size_t)arg2, (unsigned char*)arg3));
+ break;
+ #endif
++#ifdef TARGET_NR_fadvise64_64
++ case TARGET_NR_fadvise64_64:
++ /* Just return success */
++ ret = get_errno(0);
++ break;
++#endif
+ #ifdef TARGET_NR_madvise
+ case TARGET_NR_madvise:
+ /* A straight passthrough may not be safe because qemu sometimes
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch b/packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch
new file mode 100644
index 0000000000..cea3afc7ff
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/41_arm_fpa_sigfpe.patch
@@ -0,0 +1,104 @@
+#DPATCHLEVEL=0
+---
+# linux-user/main.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-
+# target-arm/nwfpe/fpa11.c | 7 ++++++
+# 2 files changed, 57 insertions(+), 1 deletion(-)
+#
+Index: linux-user/main.c
+===================================================================
+--- linux-user/main.c.orig 2007-12-03 15:59:10.000000000 +0000
++++ linux-user/main.c 2007-12-03 16:01:27.000000000 +0000
+@@ -377,18 +377,67 @@ void cpu_loop(CPUARMState *env)
+ {
+ TaskState *ts = env->opaque;
+ uint32_t opcode;
++ int rc;
+
+ /* we handle the FPU emulation here, as Linux */
+ /* we get the opcode */
+ /* FIXME - what to do if get_user() fails? */
+ get_user_u32(opcode, env->regs[15]);
+
+- if (EmulateAll(opcode, &ts->fpa, env) == 0) {
++ rc = EmulateAll(opcode, &ts->fpa, env);
++ if (rc == 0) { /* illegal instruction */
+ info.si_signo = SIGILL;
+ info.si_errno = 0;
+ info.si_code = TARGET_ILL_ILLOPN;
+ info._sifields._sigfault._addr = env->regs[15];
+ queue_signal(info.si_signo, &info);
++ } else if (rc < 0) { /* FP exception */
++ int arm_fpe=0;
++
++ /* translate softfloat flags to FPSR flags */
++ if (-rc & float_flag_invalid)
++ arm_fpe |= BIT_IOC;
++ if (-rc & float_flag_divbyzero)
++ arm_fpe |= BIT_DZC;
++ if (-rc & float_flag_overflow)
++ arm_fpe |= BIT_OFC;
++ if (-rc & float_flag_underflow)
++ arm_fpe |= BIT_UFC;
++ if (-rc & float_flag_inexact)
++ arm_fpe |= BIT_IXC;
++
++ FPSR fpsr = ts->fpa.fpsr;
++ //printf("fpsr 0x%x, arm_fpe 0x%x\n",fpsr,arm_fpe);
++
++ if (fpsr & (arm_fpe << 16)) { /* exception enabled? */
++ info.si_signo = SIGFPE;
++ info.si_errno = 0;
++
++ /* ordered by priority, least first */
++ if (arm_fpe & BIT_IXC) info.si_code = TARGET_FPE_FLTRES;
++ if (arm_fpe & BIT_UFC) info.si_code = TARGET_FPE_FLTUND;
++ if (arm_fpe & BIT_OFC) info.si_code = TARGET_FPE_FLTOVF;
++ if (arm_fpe & BIT_DZC) info.si_code = TARGET_FPE_FLTDIV;
++ if (arm_fpe & BIT_IOC) info.si_code = TARGET_FPE_FLTINV;
++
++ info._sifields._sigfault._addr = env->regs[15];
++ queue_signal(info.si_signo, &info);
++ } else {
++ env->regs[15] += 4;
++ }
++
++ /* accumulate unenabled exceptions */
++ if ((!(fpsr & BIT_IXE)) && (arm_fpe & BIT_IXC))
++ fpsr |= BIT_IXC;
++ if ((!(fpsr & BIT_UFE)) && (arm_fpe & BIT_UFC))
++ fpsr |= BIT_UFC;
++ if ((!(fpsr & BIT_OFE)) && (arm_fpe & BIT_OFC))
++ fpsr |= BIT_OFC;
++ if ((!(fpsr & BIT_DZE)) && (arm_fpe & BIT_DZC))
++ fpsr |= BIT_DZC;
++ if ((!(fpsr & BIT_IOE)) && (arm_fpe & BIT_IOC))
++ fpsr |= BIT_IOC;
++ ts->fpa.fpsr=fpsr;
+ } else {
+ /* increment PC */
+ env->regs[15] += 4;
+Index: target-arm/nwfpe/fpa11.c
+===================================================================
+--- target-arm/nwfpe/fpa11.c.orig 2007-12-03 15:40:26.000000000 +0000
++++ target-arm/nwfpe/fpa11.c 2007-12-03 15:59:11.000000000 +0000
+@@ -162,6 +162,8 @@ unsigned int EmulateAll(unsigned int opc
+ fpa11->initflag = 1;
+ }
+
++ set_float_exception_flags(0, &fpa11->fp_status);
++
+ if (TEST_OPCODE(opcode,MASK_CPRT))
+ {
+ //fprintf(stderr,"emulating CPRT\n");
+@@ -191,6 +193,11 @@ unsigned int EmulateAll(unsigned int opc
+ }
+
+ // restore_flags(flags);
++ if(nRc == 1 && get_float_exception_flags(&fpa11->fp_status))
++ {
++ //printf("fef 0x%x\n",float_exception_flags);
++ nRc=-get_float_exception_flags(&fpa11->fp_status);
++ }
+
+ //printf("returning %d\n",nRc);
+ return(nRc);
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch b/packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch
new file mode 100644
index 0000000000..e4ea33f2c6
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/52_ne2000_return.patch
@@ -0,0 +1,17 @@
+---
+ hw/ne2000.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: qemu/hw/ne2000.c
+===================================================================
+--- qemu.orig/hw/ne2000.c 2007-12-03 19:32:52.000000000 +0000
++++ qemu/hw/ne2000.c 2007-12-03 19:33:55.000000000 +0000
+@@ -217,7 +217,7 @@ static int ne2000_can_receive(void *opaq
+ NE2000State *s = opaque;
+
+ if (s->cmd & E8390_STOP)
+- return 1;
++ return 0;
+ return !ne2000_buffer_full(s);
+ }
+
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch b/packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch
new file mode 100644
index 0000000000..bdb0d2e232
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/61_safe_64bit_int.patch
@@ -0,0 +1,27 @@
+#DPATCHLEVEL=0
+---
+# dyngen-exec.h | 4 ++--
+# 1 file changed, 2 insertions(+), 2 deletions(-)
+#
+Index: dyngen-exec.h
+===================================================================
+--- dyngen-exec.h.orig 2007-12-03 15:40:26.000000000 +0000
++++ dyngen-exec.h 2007-12-03 16:03:29.000000000 +0000
+@@ -38,7 +38,7 @@ typedef unsigned int uint32_t;
+ // Linux/Sparc64 defines uint64_t
+ #if !(defined (__sparc_v9__) && defined(__linux__))
+ /* XXX may be done for all 64 bits targets ? */
+-#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__)
++#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
+ typedef unsigned long uint64_t;
+ #else
+ typedef unsigned long long uint64_t;
+@@ -55,7 +55,7 @@ typedef signed short int16_t;
+ typedef signed int int32_t;
+ // Linux/Sparc64 defines int64_t
+ #if !(defined (__sparc_v9__) && defined(__linux__))
+-#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__)
++#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
+ typedef signed long int64_t;
+ #else
+ typedef signed long long int64_t;
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch b/packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch
new file mode 100644
index 0000000000..37b38f641b
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/63_sparc_build.patch
@@ -0,0 +1,18 @@
+#DPATCHLEVEL=0
+---
+# sparc.ld | 2 +-
+# 1 file changed, 1 insertion(+), 1 deletion(-)
+#
+Index: sparc.ld
+===================================================================
+--- sparc.ld.orig 2007-12-03 15:40:26.000000000 +0000
++++ sparc.ld 2007-12-03 16:05:06.000000000 +0000
+@@ -6,7 +6,7 @@ ENTRY(_start)
+ SECTIONS
+ {
+ /* Read-only sections, merged into text segment: */
+- . = 0x60000000 + SIZEOF_HEADERS;
++ . = 0x60000000 + 0x400;
+ .interp : { *(.interp) }
+ .hash : { *(.hash) }
+ .dynsym : { *(.dynsym) }
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch b/packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch
new file mode 100644
index 0000000000..e4858b79d7
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/64_ppc_asm_constraints.patch
@@ -0,0 +1,18 @@
+#DPATCHLEVEL=1
+---
+# cpu-all.h | 2 +-
+# 1 file changed, 1 insertion(+), 1 deletion(-)
+#
+Index: qemu/cpu-all.h
+===================================================================
+--- qemu.orig/cpu-all.h 2007-06-13 11:48:22.000000000 +0100
++++ qemu/cpu-all.h 2007-06-13 11:51:56.000000000 +0100
+@@ -250,7 +250,7 @@ static inline void stw_le_p(void *ptr, i
+ static inline void stl_le_p(void *ptr, int v)
+ {
+ #ifdef __powerpc__
+- __asm__ __volatile__ ("stwbrx %1,0,%2" : "=m" (*(uint32_t *)ptr) : "r" (v), "r" (ptr));
++ __asm__ __volatile__ ("stwbrx %0,0,%1" : : "r" (v), "r" (ptr) : "memory");
+ #else
+ uint8_t *p = ptr;
+ p[0] = v;
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch b/packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch
new file mode 100644
index 0000000000..dfece800ac
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/65_kfreebsd.patch
@@ -0,0 +1,35 @@
+---
+ configure | 6 ++++++
+ vl.c | 2 ++
+ 2 files changed, 8 insertions(+)
+
+Index: configure
+===================================================================
+--- configure.orig 2007-12-03 15:40:26.000000000 +0000
++++ configure 2007-12-03 16:05:34.000000000 +0000
+@@ -129,6 +129,12 @@ if [ "$cpu" = "i386" -o "$cpu" = "x86_64
+ kqemu="yes"
+ fi
+ ;;
++GNU/kFreeBSD)
++oss="yes"
++if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
++ kqemu="yes"
++fi
++;;
+ FreeBSD)
+ bsd="yes"
+ oss="yes"
+Index: vl.c
+===================================================================
+--- vl.c.orig 2007-12-03 16:05:32.000000000 +0000
++++ vl.c 2007-12-03 16:05:34.000000000 +0000
+@@ -97,6 +97,8 @@
+ #include <stropts.h>
+ #endif
+ #endif
++#elif defined (__GLIBC__) && defined (__FreeBSD_kernel__)
++#include <freebsd/stdlib.h>
+ #else
+ #include <winsock2.h>
+ int inet_aton(const char *cp, struct in_addr *ia);
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch b/packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch
new file mode 100644
index 0000000000..54e02eff8b
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/66_tls_ld.patch
@@ -0,0 +1,55 @@
+---
+ arm.ld | 7 +++++++
+ i386.ld | 7 +++++++
+ 2 files changed, 14 insertions(+)
+
+Index: arm.ld
+===================================================================
+--- arm.ld.orig 2007-06-13 11:48:22.000000000 +0100
++++ arm.ld 2007-06-13 11:51:56.000000000 +0100
+@@ -26,6 +26,10 @@ SECTIONS
+ { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
+ .rela.rodata :
+ { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
++ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
++ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
++ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
++ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+@@ -58,6 +62,9 @@ SECTIONS
+ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
+ __exidx_end = .;
+ .reginfo : { *(.reginfo) }
++ /* Thread Local Storage sections */
++ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
++ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+ /* Adjust the address for the data segment. We want to adjust up to
+ the same address within the page on the next page up. */
+ . = ALIGN(0x100000) + (. & (0x100000 - 1));
+Index: i386.ld
+===================================================================
+--- i386.ld.orig 2007-06-13 11:48:22.000000000 +0100
++++ i386.ld 2007-06-13 11:51:56.000000000 +0100
+@@ -28,6 +28,10 @@ SECTIONS
+ { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
+ .rela.rodata :
+ { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
++ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
++ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
++ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
++ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+@@ -53,6 +57,9 @@ SECTIONS
+ _etext = .;
+ PROVIDE (etext = .);
+ .fini : { *(.fini) } =0x47ff041f
++ /* Thread Local Storage sections */
++ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
++ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+ . = ALIGN(32 / 8);
+ PROVIDE (__preinit_array_start = .);
+ .preinit_array : { *(.preinit_array) }
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch b/packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch
new file mode 100644
index 0000000000..0d60c1c306
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/91-oh-sdl-cursor.patch
@@ -0,0 +1,18 @@
+=== modified file 'sdl.c'
+---
+ sdl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: sdl.c
+===================================================================
+--- sdl.c.orig 2007-12-03 19:32:15.000000000 +0000
++++ sdl.c 2007-12-03 19:34:04.000000000 +0000
+@@ -247,7 +247,7 @@ static void sdl_hide_cursor(void)
+
+ if (kbd_mouse_is_absolute()) {
+ SDL_ShowCursor(1);
+- SDL_SetCursor(sdl_cursor_hidden);
++ /* SDL_SetCursor(sdl_cursor_hidden); */
+ } else {
+ SDL_ShowCursor(0);
+ }
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch b/packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch
new file mode 100644
index 0000000000..017f9f6355
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/disable-error-in-configure.patch
@@ -0,0 +1,17 @@
+---
+ configure | 2 --
+ 1 file changed, 2 deletions(-)
+
+Index: qemu/configure
+===================================================================
+--- qemu.orig/configure 2007-12-03 16:38:38.000000000 +0000
++++ qemu/configure 2007-12-03 16:38:39.000000000 +0000
+@@ -323,8 +323,6 @@ for opt do
+ ;;
+ --disable-werror) werror="no"
+ ;;
+- *) echo "ERROR: unknown option $opt"; show_help="yes"
+- ;;
+ --disable-nptl) nptl="no"
+ ;;
+ esac
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch b/packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch
new file mode 100644
index 0000000000..443c330650
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/fix_segfault.patch
@@ -0,0 +1,37 @@
+---
+ linux-user/syscall.c | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+Index: qemu/linux-user/syscall.c
+===================================================================
+--- qemu.orig/linux-user/syscall.c 2007-12-03 23:40:11.000000000 +0000
++++ qemu/linux-user/syscall.c 2007-12-03 23:40:21.000000000 +0000
+@@ -5695,28 +5695,6 @@ abi_long do_syscall(void *cpu_env, int n
+ goto unimplemented_nowarn;
+ #endif
+
+-#ifdef TARGET_NR_clock_gettime
+- case TARGET_NR_clock_gettime:
+- {
+- struct timespec ts;
+- ret = get_errno(clock_gettime(arg1, &ts));
+- if (!is_error(ret)) {
+- host_to_target_timespec(arg2, &ts);
+- }
+- break;
+- }
+-#endif
+-#ifdef TARGET_NR_clock_getres
+- case TARGET_NR_clock_getres:
+- {
+- struct timespec ts;
+- ret = get_errno(clock_getres(arg1, &ts));
+- if (!is_error(ret)) {
+- host_to_target_timespec(arg2, &ts);
+- }
+- break;
+- }
+-#endif
+
+ #if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address)
+ case TARGET_NR_set_tid_address:
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch b/packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch
new file mode 100644
index 0000000000..fe90f36182
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/no-strip.patch
@@ -0,0 +1,22 @@
+--- a/Makefile.org 2007-11-18 23:33:07.000000000 +0200
++++ a/Makefile 2008-01-01 19:09:25.000000000 +0200
+@@ -165,7 +165,7 @@
+ install: all $(if $(BUILD_DOCS),install-doc)
+ mkdir -p "$(DESTDIR)$(bindir)"
+ ifneq ($(TOOLS),)
+- $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(TOOLS) "$(DESTDIR)$(bindir)"
+ endif
+ mkdir -p "$(DESTDIR)$(datadir)"
+ for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
+--- a/Makefile.target.org 2007-11-19 00:34:46.000000000 +0200
++++ a/Makefile.target 2008-01-01 19:10:02.000000000 +0200
+@@ -629,7 +629,7 @@
+
+ install: all
+ ifneq ($(PROGS),)
+- $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
+ endif
+
+ ifneq ($(wildcard .depend),)
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch b/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch
new file mode 100644
index 0000000000..ebc996e873
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl-update.patch
@@ -0,0 +1,219 @@
+---
+ linux-user/main.c | 7 ++-
+ linux-user/syscall.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 111 insertions(+), 10 deletions(-)
+
+Index: qemu/linux-user/main.c
+===================================================================
+--- qemu.orig/linux-user/main.c 2007-12-03 19:34:09.000000000 +0000
++++ qemu/linux-user/main.c 2007-12-03 23:44:45.000000000 +0000
+@@ -391,7 +391,7 @@ do_kernel_trap(CPUARMState *env)
+ cpu_unlock();
+ break;
+ case 0xffff0fe0: /* __kernel_get_tls */
+- env->regs[0] = env->cp15.c13_tls;
++ env->regs[0] = env->cp15.c13_tls2;
+ break;
+ default:
+ return 1;
+@@ -2037,6 +2037,11 @@ int main(int argc, char **argv)
+ int drop_ld_preload = 0, environ_count = 0;
+ char **target_environ, **wrk, **dst;
+
++ char *assume_kernel = getenv("QEMU_ASSUME_KERNEL");
++
++ if (assume_kernel)
++ setenv("LD_ASSUME_KERNEL", assume_kernel, 1);
++
+ if (argc <= 1)
+ usage();
+
+Index: qemu/linux-user/syscall.c
+===================================================================
+--- qemu.orig/linux-user/syscall.c 2007-12-03 19:34:09.000000000 +0000
++++ qemu/linux-user/syscall.c 2007-12-03 23:46:54.000000000 +0000
+@@ -61,6 +61,7 @@
+ #define tchars host_tchars /* same as target */
+ #define ltchars host_ltchars /* same as target */
+
++#include <linux/futex.h>
+ #include <linux/termios.h>
+ #include <linux/unistd.h>
+ #include <linux/utsname.h>
+@@ -2694,7 +2695,6 @@ abi_long do_arch_prctl(CPUX86State *env,
+ return 0;
+ }
+ #endif
+-
+ #endif /* defined(TARGET_I386) */
+
+ /* this stack is the equivalent of the kernel stack associated with a
+@@ -2729,16 +2729,19 @@ int do_fork(CPUState *env, unsigned int
+ TaskState *ts;
+ uint8_t *new_stack;
+ CPUState *new_env;
+-
++#if defined(TARGET_I386)
++ uint64_t *new_gdt_table;
++#endif
+ #ifdef USE_NPTL
+ unsigned int nptl_flags;
+
+ if (flags & CLONE_PARENT_SETTID)
+ *parent_tidptr = gettid();
+ #endif
+-
+ if (flags & CLONE_VM) {
+ ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE);
++ if (!ts)
++ return -ENOMEM;
+ memset(ts, 0, sizeof(TaskState));
+ new_stack = ts->stack;
+ ts->used = 1;
+@@ -2750,6 +2753,29 @@ int do_fork(CPUState *env, unsigned int
+ #if defined(TARGET_I386)
+ if (!newsp)
+ newsp = env->regs[R_ESP];
++ new_gdt_table = malloc(9 * 8);
++ if (!new_gdt_table) {
++ free(new_env);
++ return -ENOMEM;
++ }
++ /* Copy main GDT table from parent, but clear TLS entries */
++ memcpy(new_gdt_table, g2h(env->gdt.base), 6 * 8);
++ memset(&new_gdt_table[6], 0, 3 * 8);
++ new_env->gdt.base = h2g(new_gdt_table);
++ if (flags & 0x00080000 /* CLONE_SETTLS */) {
++ ret = do_set_thread_area(new_env, new_env->regs[R_ESI]);
++ if (ret) {
++ free(new_gdt_table);
++ free(new_env);
++ return ret;
++ }
++ }
++ cpu_x86_load_seg(env, R_CS, new_env->regs[R_CS]);
++ cpu_x86_load_seg(env, R_DS, new_env->regs[R_DS]);
++ cpu_x86_load_seg(env, R_ES, new_env->regs[R_ES]);
++ cpu_x86_load_seg(env, R_SS, new_env->regs[R_SS]);
++ cpu_x86_load_seg(env, R_FS, new_env->regs[R_FS]);
++ cpu_x86_load_seg(env, R_GS, new_env->regs[R_GS]);
+ new_env->regs[R_ESP] = newsp;
+ new_env->regs[R_EAX] = 0;
+ #elif defined(TARGET_ARM)
+@@ -3121,6 +3147,68 @@ static inline abi_long host_to_target_ti
+ unlock_user_struct(target_ts, target_addr, 1);
+ }
+
++static long do_futex(target_ulong uaddr, int op, uint32_t val,
++ target_ulong utime, target_ulong uaddr2,
++ uint32_t val3)
++{
++ struct timespec host_utime;
++ unsigned long val2 = utime;
++
++ if (utime && (op == FUTEX_WAIT || op == FUTEX_LOCK_PI)) {
++ target_to_host_timespec(&host_utime, utime);
++ val2 = (unsigned long)&host_utime;
++ }
++
++#ifdef BSWAP_NEEDED
++ switch(op) {
++ case FUTEX_CMP_REQUEUE:
++ val3 = tswap32(val3);
++ case FUTEX_REQUEUE:
++ val2 = tswap32(val2);
++ case FUTEX_WAIT:
++ case FUTEX_WAKE:
++ val = tswap32(val);
++ case FUTEX_LOCK_PI: /* This one's icky, but comes out OK */
++ case FUTEX_UNLOCK_PI:
++ break;
++ default:
++ gemu_log("qemu: Unsupported futex op %d\n", op);
++ return -ENOSYS;
++ }
++#if 0 /* No, it's worse than this */
++ if (op == FUTEX_WAKE_OP) {
++ /* Need to munge the secondary operation (val3) */
++ val3 = tswap32(val3);
++ int op2 = (val3 >> 28) & 7;
++ int cmp = (val3 >> 24) & 15;
++ int oparg = (val3 << 8) >> 20;
++ int cmparg = (val3 << 20) >> 20;
++ int shift = val3 & (FUTEX_OP_OPARG_SHIFT << 28);
++
++ if (shift)
++ oparg = (oparg & 7) + 24 - (oparg & 24);
++ else oparg =
++ if (op2 == FUTEX_OP_ADD) {
++ gemu_log("qemu: Unsupported wrong-endian FUTEX_OP_ADD\n");
++ return -ENOSYS;
++ }
++ if (cmparg == FUTEX_OP_CMP_LT || cmparg == FUTEX_OP_CMP_GE ||
++ cmparg == FUTEX_OP_CMP_LE || cmparg == FUTEX_OP_CMP_GT) {
++ gemu_log("qemu: Unsupported wrong-endian futex cmparg %d\n", cmparg);
++ return -ENOSYS;
++ }
++ val3 = shift | (op2<<28) | (cmp<<24) | (oparg<<12) | cmparg;
++ }
++#endif
++#endif
++ return syscall(__NR_futex, g2h(uaddr), op, val, val2, g2h(uaddr2), val3);
++}
++
++int do_set_tid_address(target_ulong tidptr)
++{
++ return syscall(__NR_set_tid_address, g2h(tidptr));
++}
++
+ /* do_syscall() should always have a single exit point at the end so
+ that actions, such as logging of syscall results, can be performed.
+ All errnos that do_syscall() returns must be -TARGET_<errcode>. */
+@@ -3145,7 +3233,7 @@ abi_long do_syscall(void *cpu_env, int n
+ _mcleanup();
+ #endif
+ gdb_exit(cpu_env, arg1);
+- /* XXX: should free thread stack and CPU env */
++ /* XXX: should free thread stack, GDT and CPU env */
+ _exit(arg1);
+ ret = 0; /* avoid warning */
+ break;
+@@ -5569,6 +5657,9 @@ abi_long do_syscall(void *cpu_env, int n
+ #elif defined(TARGET_I386) && defined(TARGET_ABI32)
+ ret = do_set_thread_area(cpu_env, arg1);
+ break;
++#elif TARGET_i386
++ ret = get_errno(do_set_thread_area(cpu_env, arg1));
++ break;
+ #else
+ goto unimplemented_nowarn;
+ #endif
+@@ -5586,6 +5677,16 @@ abi_long do_syscall(void *cpu_env, int n
+ goto unimplemented_nowarn;
+ #endif
+
++#ifdef TARGET_NR_futex
++ case TARGET_NR_futex:
++ ret = get_errno(do_futex(arg1, arg2, arg3, arg4, arg5, arg6));
++ break;
++#endif
++#ifdef TARGET_NR_set_robust_list
++ case TARGET_NR_set_robust_list:
++ goto unimplemented_nowarn;
++#endif
++
+ #ifdef TARGET_NR_clock_gettime
+ case TARGET_NR_clock_gettime:
+ {
+@@ -5627,11 +5728,6 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ #endif
+
+-#ifdef TARGET_NR_set_robust_list
+- case TARGET_NR_set_robust_list:
+- goto unimplemented_nowarn;
+-#endif
+-
+ #if defined(TARGET_NR_utimensat) && defined(__NR_utimensat)
+ case TARGET_NR_utimensat:
+ {
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch b/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch
new file mode 100644
index 0000000000..10e3cc04a5
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/qemu-0.9.0-nptl.patch
@@ -0,0 +1,929 @@
+These are Paul Brook's patches to QEMU-0.8.2 to enable the running of single
+ARM binaries under QEMU's user-emulation mode. Without them, QEMU-0.8.1
+immediately dies saying:
+ Error: f0005
+ qemu: uncaught target signal 6 (Aborted) - exiting
+while qemu-0.8.2 dies saying:
+ qemu: Unsupported syscall: 983045
+ cannot set up thread-local storage: unknown error
+
+This file is a rediffing of the patches visible at
+https://nowt.dyndns.org/patch.qemu_nptl on 27 Sept 2006
+which "patch" fails to apply automatically.
+See also http://lists.gnu.org/archive/html/qemu-devel/2006-09/msg00194.html
+
+ Martin Guy, 27 Sept 2006
+
+---
+ configure | 25 ++++++
+ exec-all.h | 165 ------------------------------------------
+ linux-user/arm/syscall.h | 4 -
+ linux-user/main.c | 94 +++++++++++++++++++++---
+ linux-user/qemu.h | 3
+ linux-user/syscall.c | 91 ++++++++++++++++++++++-
+ qemu_spinlock.h | 181 +++++++++++++++++++++++++++++++++++++++++++++++
+ target-arm/cpu.h | 10 ++
+ target-arm/op.c | 6 +
+ target-arm/translate.c | 9 ++
+ 10 files changed, 405 insertions(+), 183 deletions(-)
+
+--- qemu.orig/configure
++++ qemu/configure
+@@ -103,10 +103,11 @@ check_gcc="yes"
+ softmmu="yes"
+ linux_user="no"
+ darwin_user="no"
+ build_docs="no"
+ uname_release=""
++nptl="yes"
+
+ # OS specific
+ targetos=`uname -s`
+ case $targetos in
+ CYGWIN*)
+@@ -322,10 +323,12 @@ for opt do
+ ;;
+ --disable-werror) werror="no"
+ ;;
+ *) echo "ERROR: unknown option $opt"; show_help="yes"
+ ;;
++ --disable-nptl) nptl="no"
++ ;;
+ esac
+ done
+
+ if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
+ AIOLIBS=
+@@ -417,10 +420,11 @@ echo " --enable-system enable
+ echo " --disable-system disable all system emulation targets"
+ echo " --enable-linux-user enable all linux usermode emulation targets"
+ echo " --disable-linux-user disable all linux usermode emulation targets"
+ echo " --enable-darwin-user enable all darwin usermode emulation targets"
+ echo " --disable-darwin-user disable all darwin usermode emulation targets"
++echo " --disable-nptl disable usermode NPTL guest support"
+ echo " --fmod-lib path to FMOD library"
+ echo " --fmod-inc path to FMOD includes"
+ echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
+ echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
+ echo ""
+@@ -583,10 +587,27 @@ fi
+ cat > $TMPC <<EOF
+ int main(void) {
+ }
+ EOF
+
++# check NPTL support
++cat > $TMPC <<EOF
++#include <sched.h>
++void foo()
++{
++#ifndef CLONE_SETTLS
++#error bork
++#endif
++}
++EOF
++
++if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
++ :
++else
++ nptl="no"
++fi
++
+ ##########################################
+ # SDL probe
+
+ sdl_too_old=no
+
+@@ -747,10 +768,11 @@ if test -n "$sparc_cpu"; then
+ fi
+ echo "kqemu support $kqemu"
+ echo "Documentation $build_docs"
+ [ ! -z "$uname_release" ] && \
+ echo "uname -r $uname_release"
++echo "NPTL support $nptl"
+
+ if test $sdl_too_old = "yes"; then
+ echo "-> Your SDL version is too old - please upgrade to have SDL support"
+ fi
+ if [ -s /tmp/qemu-$$-sdl-config.log ]; then
+@@ -1063,10 +1085,13 @@ if test "$target_cpu" = "i386" ; then
+ fi
+ elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
+ echo "TARGET_ARCH=arm" >> $config_mak
+ echo "#define TARGET_ARCH \"arm\"" >> $config_h
+ echo "#define TARGET_ARM 1" >> $config_h
++ if test "$nptl" = "yes" ; then
++ echo "#define USE_NPTL 1" >> $config_h
++ fi
+ bflt="yes"
+ elif test "$target_cpu" = "sparc" ; then
+ echo "TARGET_ARCH=sparc" >> $config_mak
+ echo "#define TARGET_ARCH \"sparc\"" >> $config_h
+ echo "#define TARGET_SPARC 1" >> $config_h
+--- qemu.orig/exec-all.h
++++ qemu/exec-all.h
+@@ -338,174 +338,11 @@ dummy_label ## n: ;\
+
+ extern CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4];
+ extern CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4];
+ extern void *io_mem_opaque[IO_MEM_NB_ENTRIES];
+
+-#if defined(__powerpc__)
+-static inline int testandset (int *p)
+-{
+- int ret;
+- __asm__ __volatile__ (
+- "0: lwarx %0,0,%1\n"
+- " xor. %0,%3,%0\n"
+- " bne 1f\n"
+- " stwcx. %2,0,%1\n"
+- " bne- 0b\n"
+- "1: "
+- : "=&r" (ret)
+- : "r" (p), "r" (1), "r" (0)
+- : "cr0", "memory");
+- return ret;
+-}
+-#elif defined(__i386__)
+-static inline int testandset (int *p)
+-{
+- long int readval = 0;
+-
+- __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
+- : "+m" (*p), "+a" (readval)
+- : "r" (1)
+- : "cc");
+- return readval;
+-}
+-#elif defined(__x86_64__)
+-static inline int testandset (int *p)
+-{
+- long int readval = 0;
+-
+- __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
+- : "+m" (*p), "+a" (readval)
+- : "r" (1)
+- : "cc");
+- return readval;
+-}
+-#elif defined(__s390__)
+-static inline int testandset (int *p)
+-{
+- int ret;
+-
+- __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n"
+- " jl 0b"
+- : "=&d" (ret)
+- : "r" (1), "a" (p), "0" (*p)
+- : "cc", "memory" );
+- return ret;
+-}
+-#elif defined(__alpha__)
+-static inline int testandset (int *p)
+-{
+- int ret;
+- unsigned long one;
+-
+- __asm__ __volatile__ ("0: mov 1,%2\n"
+- " ldl_l %0,%1\n"
+- " stl_c %2,%1\n"
+- " beq %2,1f\n"
+- ".subsection 2\n"
+- "1: br 0b\n"
+- ".previous"
+- : "=r" (ret), "=m" (*p), "=r" (one)
+- : "m" (*p));
+- return ret;
+-}
+-#elif defined(__sparc__)
+-static inline int testandset (int *p)
+-{
+- int ret;
+-
+- __asm__ __volatile__("ldstub [%1], %0"
+- : "=r" (ret)
+- : "r" (p)
+- : "memory");
+-
+- return (ret ? 1 : 0);
+-}
+-#elif defined(__arm__)
+-static inline int testandset (int *spinlock)
+-{
+- register unsigned int ret;
+- __asm__ __volatile__("swp %0, %1, [%2]"
+- : "=r"(ret)
+- : "0"(1), "r"(spinlock));
+-
+- return ret;
+-}
+-#elif defined(__mc68000)
+-static inline int testandset (int *p)
+-{
+- char ret;
+- __asm__ __volatile__("tas %1; sne %0"
+- : "=r" (ret)
+- : "m" (p)
+- : "cc","memory");
+- return ret;
+-}
+-#elif defined(__ia64)
+-
+-#include <ia64intrin.h>
+-
+-static inline int testandset (int *p)
+-{
+- return __sync_lock_test_and_set (p, 1);
+-}
+-#elif defined(__mips__)
+-static inline int testandset (int *p)
+-{
+- int ret;
+-
+- __asm__ __volatile__ (
+- " .set push \n"
+- " .set noat \n"
+- " .set mips2 \n"
+- "1: li $1, 1 \n"
+- " ll %0, %1 \n"
+- " sc $1, %1 \n"
+- " beqz $1, 1b \n"
+- " .set pop "
+- : "=r" (ret), "+R" (*p)
+- :
+- : "memory");
+-
+- return ret;
+-}
+-#else
+-#error unimplemented CPU support
+-#endif
+-
+-typedef int spinlock_t;
+-
+-#define SPIN_LOCK_UNLOCKED 0
+-
+-#if defined(CONFIG_USER_ONLY)
+-static inline void spin_lock(spinlock_t *lock)
+-{
+- while (testandset(lock));
+-}
+-
+-static inline void spin_unlock(spinlock_t *lock)
+-{
+- *lock = 0;
+-}
+-
+-static inline int spin_trylock(spinlock_t *lock)
+-{
+- return !testandset(lock);
+-}
+-#else
+-static inline void spin_lock(spinlock_t *lock)
+-{
+-}
+-
+-static inline void spin_unlock(spinlock_t *lock)
+-{
+-}
+-
+-static inline int spin_trylock(spinlock_t *lock)
+-{
+- return 1;
+-}
+-#endif
++#include "qemu_spinlock.h"
+
+ extern spinlock_t tb_lock;
+
+ extern int tb_invalidated_flag;
+
+--- qemu.orig/linux-user/arm/syscall.h
++++ qemu/linux-user/arm/syscall.h
+@@ -26,11 +26,13 @@ struct target_pt_regs {
+ #define ARM_ORIG_r0 uregs[17]
+
+ #define ARM_SYSCALL_BASE 0x900000
+ #define ARM_THUMB_SYSCALL 0
+
+-#define ARM_NR_cacheflush (ARM_SYSCALL_BASE + 0xf0000 + 2)
++#define ARM_NR_BASE 0xf0000
++#define ARM_NR_cacheflush (ARM_NR_BASE + 2)
++#define ARM_NR_set_tls (ARM_NR_BASE + 5)
+
+ #define ARM_NR_semihosting 0x123456
+ #define ARM_NR_thumb_semihosting 0xAB
+
+ #if defined(TARGET_WORDS_BIGENDIAN)
+--- qemu.orig/linux-user/main.c
++++ qemu/linux-user/main.c
+@@ -361,10 +361,54 @@ static void arm_cache_flush(abi_ulong st
+ break;
+ addr = last1 + 1;
+ }
+ }
+
++/* Handle a jump to the kernel code page. */
++static int
++do_kernel_trap(CPUARMState *env)
++{
++ uint32_t addr;
++ uint32_t *ptr;
++ uint32_t cpsr;
++
++ switch (env->regs[15]) {
++ case 0xffff0fc0: /* __kernel_cmpxchg */
++ /* XXX: This only works between threads, not between processes.
++ Use native atomic operations. */
++ /* ??? This probably breaks horribly if the access segfaults. */
++ cpu_lock();
++ ptr = (uint32_t *)env->regs[2];
++ cpsr = cpsr_read(env);
++ if (*ptr == env->regs[0]) {
++ *ptr = env->regs[1];
++ env->regs[0] = 0;
++ cpsr |= CPSR_C;
++ } else {
++ env->regs[0] = -1;
++ cpsr &= ~CPSR_C;
++ }
++ cpsr_write(env, cpsr, CPSR_C);
++ cpu_unlock();
++ break;
++ case 0xffff0fe0: /* __kernel_get_tls */
++ env->regs[0] = env->cp15.c13_tls;
++ break;
++ default:
++ return 1;
++ }
++ /* Jump back to the caller. */
++ addr = env->regs[14];
++ if (addr & 1) {
++ env->thumb = 1;
++ addr &= ~1;
++ }
++ env->regs[15] = addr;
++
++ return 0;
++}
++
+ void cpu_loop(CPUARMState *env)
+ {
+ int trapnr;
+ unsigned int n, insn;
+ target_siginfo_t info;
+@@ -471,32 +515,50 @@ void cpu_loop(CPUARMState *env)
+ get_user_u32(insn, env->regs[15] - 4);
+ n = insn & 0xffffff;
+ }
+ }
+
+- if (n == ARM_NR_cacheflush) {
+- arm_cache_flush(env->regs[0], env->regs[1]);
+- } else if (n == ARM_NR_semihosting
+- || n == ARM_NR_thumb_semihosting) {
++ if (n == ARM_NR_semihosting
++ || n == ARM_NR_thumb_semihosting) {
+ env->regs[0] = do_arm_semihosting (env);
+ } else if (n == 0 || n >= ARM_SYSCALL_BASE
+ || (env->thumb && n == ARM_THUMB_SYSCALL)) {
+ /* linux syscall */
+ if (env->thumb || n == 0) {
+ n = env->regs[7];
+ } else {
+ n -= ARM_SYSCALL_BASE;
+ env->eabi = 0;
+ }
+- env->regs[0] = do_syscall(env,
+- n,
+- env->regs[0],
+- env->regs[1],
+- env->regs[2],
+- env->regs[3],
+- env->regs[4],
+- env->regs[5]);
++ if ( n > ARM_NR_BASE) {
++ switch (n)
++ {
++ case ARM_NR_cacheflush:
++ arm_cache_flush(env->regs[0], env->regs[1]);
++ break;
++#ifdef USE_NPTL
++ case ARM_NR_set_tls:
++ cpu_set_tls(env, env->regs[0]);
++ env->regs[0] = 0;
++ break;
++#endif
++ default:
++ printf ("Error: Bad syscall: %x\n", n);
++ goto error;
++ }
++ }
++ else
++ {
++ env->regs[0] = do_syscall(env,
++ n,
++ env->regs[0],
++ env->regs[1],
++ env->regs[2],
++ env->regs[3],
++ env->regs[4],
++ env->regs[5]);
++ }
+ } else {
+ goto error;
+ }
+ }
+ break;
+@@ -531,10 +593,14 @@ void cpu_loop(CPUARMState *env)
+ info.si_code = TARGET_TRAP_BRKPT;
+ queue_signal(info.si_signo, &info);
+ }
+ }
+ break;
++ case EXCP_KERNEL_TRAP:
++ if (do_kernel_trap(env))
++ goto error;
++ break;
+ default:
+ error:
+ fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
+ trapnr);
+ cpu_dump_state(env, stderr, fprintf, 0);
+@@ -2378,10 +2444,14 @@ int main(int argc, char **argv)
+ #if defined(TARGET_ARM) || defined(TARGET_M68K)
+ ts->stack_base = info->start_stack;
+ ts->heap_base = info->brk;
+ /* This will be filled in on the first SYS_HEAPINFO call. */
+ ts->heap_limit = 0;
++ /* Register the magic kernel code page. The cpu will generate a
++ special exception when it tries to execute code here. We can't
++ put real code here because it may be in use by the host kernel. */
++ page_set_flags(0xffff0000, 0xffff0fff, 0);
+ #endif
+
+ if (gdbstub_port) {
+ gdbserver_start (gdbstub_port);
+ gdb_handlesig(env, 0);
+--- qemu.orig/linux-user/qemu.h
++++ qemu/linux-user/qemu.h
+@@ -100,10 +100,13 @@ typedef struct TaskState {
+ /* Extra fields for semihosted binaries. */
+ uint32_t stack_base;
+ uint32_t heap_base;
+ uint32_t heap_limit;
+ #endif
++#ifdef USE_NPTL
++ uint32_t *child_tidptr;
++#endif
+ int used; /* non zero if used */
+ struct image_info *info;
+ uint8_t stack[0];
+ } __attribute__((aligned(16))) TaskState;
+
+--- qemu.orig/linux-user/syscall.c
++++ qemu/linux-user/syscall.c
+@@ -69,13 +69,22 @@
+ #include <linux/soundcard.h>
+ #include <linux/dirent.h>
+ #include <linux/kd.h>
+
+ #include "qemu.h"
++#include "qemu_spinlock.h"
+
+ //#define DEBUG
+
++#ifdef USE_NPTL
++#define CLONE_NPTL_FLAGS2 (CLONE_SETTLS | \
++ CLONE_PARENT_SETTID | CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)
++#else
++/* XXX: Hardcode the above values. */
++#define CLONE_NPTL_FLAGS2 0
++#endif
++
+ #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \
+ || defined(TARGET_M68K) || defined(TARGET_SH4) || defined(TARGET_CRIS)
+ /* 16 bit uid wrappers emulation */
+ #define USE_UID16
+ #endif
+@@ -2690,27 +2699,46 @@ abi_long do_arch_prctl(CPUX86State *env,
+
+ /* this stack is the equivalent of the kernel stack associated with a
+ thread/process */
+ #define NEW_STACK_SIZE 8192
+
++#ifdef USE_NPTL
++static spinlock_t nptl_lock = SPIN_LOCK_UNLOCKED;
++#endif
++
+ static int clone_func(void *arg)
+ {
+ CPUState *env = arg;
++#ifdef HAVE_NPTL
++ /* Wait until the parent has finshed initializing the tls state. */
++ while (!spin_trylock(&nptl_lock))
++ usleep(1);
++ spin_unlock(&nptl_lock);
++#endif
+ cpu_loop(env);
+ /* never exits */
+ return 0;
+ }
+
+ /* do_fork() Must return host values and target errnos (unlike most
+ do_*() functions). */
+-int do_fork(CPUState *env, unsigned int flags, abi_ulong newsp)
++int do_fork(CPUState *env, unsigned int flags, unsigned long newsp,
++ uint32_t *parent_tidptr, void *newtls,
++ uint32_t *child_tidptr)
+ {
+ int ret;
+ TaskState *ts;
+ uint8_t *new_stack;
+ CPUState *new_env;
+
++#ifdef USE_NPTL
++ unsigned int nptl_flags;
++
++ if (flags & CLONE_PARENT_SETTID)
++ *parent_tidptr = gettid();
++#endif
++
+ if (flags & CLONE_VM) {
+ ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE);
+ memset(ts, 0, sizeof(TaskState));
+ new_stack = ts->stack;
+ ts->used = 1;
+@@ -2772,20 +2800,71 @@ int do_fork(CPUState *env, unsigned int
+ new_env->regs[14] = newsp;
+ #else
+ #error unsupported target CPU
+ #endif
+ new_env->opaque = ts;
++#ifdef USE_NPTL
++ nptl_flags = flags;
++ flags &= ~CLONE_NPTL_FLAGS2;
++
++ if (nptl_flags & CLONE_CHILD_CLEARTID) {
++ ts->child_tidptr = child_tidptr;
++ }
++
++ if (nptl_flags & CLONE_SETTLS)
++ cpu_set_tls (new_env, newtls);
++
++ /* Grab the global cpu lock so that the thread setup appears
++ atomic. */
++ if (nptl_flags & CLONE_CHILD_SETTID)
++ spin_lock(&nptl_lock);
++
++#else
++ if (flags & CLONE_NPTL_FLAGS2)
++ return -EINVAL;
++#endif
++
++ if (CLONE_VFORK & flags)
++ flags ^= CLONE_VM;
+ #ifdef __ia64__
+ ret = __clone2(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env);
+ #else
+ ret = clone(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env);
+ #endif
++#ifdef USE_NPTL
++ if (ret != -1) {
++ if (nptl_flags & CLONE_CHILD_SETTID)
++ *child_tidptr = ret;
++ }
++
++ /* Allow the child to continue. */
++ if (nptl_flags & CLONE_CHILD_SETTID)
++ spin_unlock(&nptl_lock);
++#endif
+ } else {
+ /* if no CLONE_VM, we consider it is a fork */
+- if ((flags & ~CSIGNAL) != 0)
++ if ((flags & ~(CSIGNAL | CLONE_NPTL_FLAGS2)) != 0)
+ return -EINVAL;
+ ret = fork();
++#ifdef USE_NPTL
++ /* There is a race condition here. The parent process could
++ theoretically read the TID in the child process before the child
++ tid is set. This would require using either ptrace
++ (not implemented) or having *_tidptr to point at a shared memory
++ mapping. We can't repeat the spinlock hack used above because
++ the child process gets its own copy of the lock. */
++ if (ret == 0) {
++ /* Child Process. */
++ if (flags & CLONE_CHILD_SETTID)
++ *child_tidptr = gettid();
++ ts = (TaskState *)env->opaque;
++ if (flags & CLONE_CHILD_CLEARTID)
++ ts->child_tidptr = child_tidptr;
++ if (flags & CLONE_SETTLS)
++ cpu_set_tls (env, newtls);
++ }
++#endif
+ }
+ return ret;
+ }
+
+ static abi_long do_fcntl(int fd, int cmd, abi_ulong arg)
+@@ -3106,11 +3185,11 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ case TARGET_NR_brk:
+ ret = do_brk(arg1);
+ break;
+ case TARGET_NR_fork:
+- ret = get_errno(do_fork(cpu_env, SIGCHLD, 0));
++ ret = get_errno(do_fork(cpu_env, SIGCHLD, 0, NULL, NULL, NULL));
+ break;
+ #ifdef TARGET_NR_waitpid
+ case TARGET_NR_waitpid:
+ {
+ int status;
+@@ -4463,11 +4542,12 @@ abi_long do_syscall(void *cpu_env, int n
+ #endif
+ case TARGET_NR_fsync:
+ ret = get_errno(fsync(arg1));
+ break;
+ case TARGET_NR_clone:
+- ret = get_errno(do_fork(cpu_env, arg1, arg2));
++ ret = get_errno(do_fork(cpu_env, arg1, arg2, (uint32_t *)arg3,
++ (void *)arg4, (uint32_t *)arg5));
+ break;
+ #ifdef __NR_exit_group
+ /* new thread calls */
+ case TARGET_NR_exit_group:
+ gdb_exit(cpu_env, arg1);
+@@ -4908,11 +4988,12 @@ abi_long do_syscall(void *cpu_env, int n
+ case TARGET_NR_putpmsg:
+ goto unimplemented;
+ #endif
+ #ifdef TARGET_NR_vfork
+ case TARGET_NR_vfork:
+- ret = get_errno(do_fork(cpu_env, CLONE_VFORK | CLONE_VM | SIGCHLD, 0));
++ ret = get_errno(do_fork(cpu_env, CLONE_VFORK | CLONE_VM | SIGCHLD, 0,
++ NULL, NULL, NULL));
+ break;
+ #endif
+ #ifdef TARGET_NR_ugetrlimit
+ case TARGET_NR_ugetrlimit:
+ {
+--- /dev/null
++++ qemu/qemu_spinlock.h
+@@ -0,0 +1,181 @@
++/*
++ * Atomic operation helper include
++ *
++ * Copyright (c) 2005 Fabrice Bellard
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef QEMU_SPINLOCK_H
++#define QEMU_SPINLOCK_H
++
++#ifdef __powerpc__
++static inline int testandset (int *p)
++{
++ int ret;
++ __asm__ __volatile__ (
++ "0: lwarx %0,0,%1\n"
++ " xor. %0,%3,%0\n"
++ " bne 1f\n"
++ " stwcx. %2,0,%1\n"
++ " bne- 0b\n"
++ "1: "
++ : "=&r" (ret)
++ : "r" (p), "r" (1), "r" (0)
++ : "cr0", "memory");
++ return ret;
++}
++#endif
++
++#ifdef __i386__
++static inline int testandset (int *p)
++{
++ long int readval = 0;
++
++ __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
++ : "+m" (*p), "+a" (readval)
++ : "r" (1)
++ : "cc");
++ return readval;
++}
++#endif
++
++#ifdef __x86_64__
++static inline int testandset (int *p)
++{
++ long int readval = 0;
++
++ __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
++ : "+m" (*p), "+a" (readval)
++ : "r" (1)
++ : "cc");
++ return readval;
++}
++#endif
++
++#ifdef __s390__
++static inline int testandset (int *p)
++{
++ int ret;
++
++ __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n"
++ " jl 0b"
++ : "=&d" (ret)
++ : "r" (1), "a" (p), "0" (*p)
++ : "cc", "memory" );
++ return ret;
++}
++#endif
++
++#ifdef __alpha__
++static inline int testandset (int *p)
++{
++ int ret;
++ unsigned long one;
++
++ __asm__ __volatile__ ("0: mov 1,%2\n"
++ " ldl_l %0,%1\n"
++ " stl_c %2,%1\n"
++ " beq %2,1f\n"
++ ".subsection 2\n"
++ "1: br 0b\n"
++ ".previous"
++ : "=r" (ret), "=m" (*p), "=r" (one)
++ : "m" (*p));
++ return ret;
++}
++#endif
++
++#ifdef __sparc__
++static inline int testandset (int *p)
++{
++ int ret;
++
++ __asm__ __volatile__("ldstub [%1], %0"
++ : "=r" (ret)
++ : "r" (p)
++ : "memory");
++
++ return (ret ? 1 : 0);
++}
++#endif
++
++#ifdef __arm__
++static inline int testandset (int *spinlock)
++{
++ register unsigned int ret;
++ __asm__ __volatile__("swp %0, %1, [%2]"
++ : "=r"(ret)
++ : "0"(1), "r"(spinlock));
++
++ return ret;
++}
++#endif
++
++#ifdef __mc68000
++static inline int testandset (int *p)
++{
++ char ret;
++ __asm__ __volatile__("tas %1; sne %0"
++ : "=r" (ret)
++ : "m" (p)
++ : "cc","memory");
++ return ret;
++}
++#endif
++
++#ifdef __ia64
++#include <ia64intrin.h>
++
++static inline int testandset (int *p)
++{
++ return __sync_lock_test_and_set (p, 1);
++}
++#endif
++
++typedef int spinlock_t;
++
++#define SPIN_LOCK_UNLOCKED 0
++
++#if defined(CONFIG_USER_ONLY)
++static inline void spin_lock(spinlock_t *lock)
++{
++ while (testandset(lock));
++}
++
++static inline void spin_unlock(spinlock_t *lock)
++{
++ *lock = 0;
++}
++
++static inline int spin_trylock(spinlock_t *lock)
++{
++ return !testandset(lock);
++}
++#else
++static inline void spin_lock(spinlock_t *lock)
++{
++}
++
++static inline void spin_unlock(spinlock_t *lock)
++{
++}
++
++static inline int spin_trylock(spinlock_t *lock)
++{
++ return 1;
++}
++#endif
++
++#endif
+--- qemu.orig/target-arm/cpu.h
++++ qemu/target-arm/cpu.h
+@@ -36,10 +36,11 @@
+ #define EXCP_DATA_ABORT 4
+ #define EXCP_IRQ 5
+ #define EXCP_FIQ 6
+ #define EXCP_BKPT 7
+ #define EXCP_EXCEPTION_EXIT 8 /* Return from v7M exception. */
++#define EXCP_KERNEL_TRAP 9 /* Jumped to kernel code page. */
+
+ #define ARMV7M_EXCP_RESET 1
+ #define ARMV7M_EXCP_NMI 2
+ #define ARMV7M_EXCP_HARD 3
+ #define ARMV7M_EXCP_MEM 4
+@@ -220,10 +221,19 @@ int cpu_arm_signal_handler(int host_sign
+ void *puc);
+
+ void cpu_lock(void);
+ void cpu_unlock(void);
+
++void cpu_lock(void);
++void cpu_unlock(void);
++#if defined(USE_NPTL)
++static inline void cpu_set_tls(CPUARMState *env, void *newtls)
++{
++ env->cp15.c13_tls2 = (uint32_t)(long)newtls;
++}
++#endif
++
+ #define CPSR_M (0x1f)
+ #define CPSR_T (1 << 5)
+ #define CPSR_F (1 << 6)
+ #define CPSR_I (1 << 7)
+ #define CPSR_A (1 << 8)
+--- qemu.orig/target-arm/op.c
++++ qemu/target-arm/op.c
+@@ -1007,10 +1007,16 @@ void OPPROTO op_exception_exit(void)
+ {
+ env->exception_index = EXCP_EXCEPTION_EXIT;
+ cpu_loop_exit();
+ }
+
++void OPPROTO op_kernel_trap(void)
++{
++ env->exception_index = EXCP_KERNEL_TRAP;
++ cpu_loop_exit();
++}
++
+ /* VFP support. We follow the convention used for VFP instrunctions:
+ Single precition routines have a "s" suffix, double precision a
+ "d" suffix. */
+
+ #define VFP_OP(name, p) void OPPROTO op_vfp_##name##p(void)
+--- qemu.orig/target-arm/translate.c
++++ qemu/target-arm/translate.c
+@@ -7518,11 +7518,18 @@ static inline int gen_intermediate_code_
+ /* We always get here via a jump, so know we are not in a
+ conditional execution block. */
+ gen_op_exception_exit();
+ }
+ #endif
+-
++#ifdef CONFIG_USER_ONLY
++ /* Intercept jump to the magic kernel page. */
++ if (dc->pc > 0xffff0000) {
++ gen_op_kernel_trap();
++ dc->is_jmp = DISAS_UPDATE;
++ break;
++ }
++#endif
+ if (env->nb_breakpoints > 0) {
+ for(j = 0; j < env->nb_breakpoints; j++) {
+ if (env->breakpoints[j] == dc->pc) {
+ gen_set_condexec(dc);
+ gen_op_movl_T0_im((long)dc->pc);
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch
new file mode 100644
index 0000000000..c7f36d8110
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/qemu-amd64-32b-mapping-0.9.0.patch
@@ -0,0 +1,37 @@
+---
+ linux-user/mmap.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+Index: qemu/linux-user/mmap.c
+===================================================================
+--- qemu.orig/linux-user/mmap.c 2007-12-03 15:40:25.000000000 +0000
++++ qemu/linux-user/mmap.c 2007-12-03 16:37:21.000000000 +0000
+@@ -29,6 +29,10 @@
+
+ //#define DEBUG_MMAP
+
++#ifndef MAP_32BIT
++#define MAP_32BIT 0
++#endif
++
+ /* NOTE: all the constants are the HOST ones, but addresses are target. */
+ int target_mprotect(abi_ulong start, abi_ulong len, int prot)
+ {
+@@ -251,7 +255,7 @@ abi_long target_mmap(abi_ulong start, ab
+ especially important if qemu_host_page_size >
+ qemu_real_host_page_size */
+ p = mmap(g2h(mmap_start),
+- host_len, prot, flags | MAP_FIXED, fd, host_offset);
++ host_len, prot, flags | MAP_FIXED | MAP_32BIT, fd, host_offset);
+ if (p == MAP_FAILED)
+ return -1;
+ /* update start so that it points to the file position at 'offset' */
+@@ -406,7 +410,7 @@ abi_long target_mremap(abi_ulong old_add
+ unsigned long host_addr;
+
+ /* XXX: use 5 args syscall */
+- host_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags);
++ host_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags | MAP_32BIT);
+ if (host_addr == -1)
+ return -1;
+ new_addr = h2g(host_addr);
diff --git a/packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch b/packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch
new file mode 100644
index 0000000000..cc122ebdba
--- /dev/null
+++ b/packages/qemu/qemu-0.9.0+cvs20071121/workaround_bad_futex_headers.patch
@@ -0,0 +1,25 @@
+---
+ linux-user/syscall.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+Index: qemu/linux-user/syscall.c
+===================================================================
+--- qemu.orig/linux-user/syscall.c 2007-08-09 20:28:06.000000000 +0100
++++ qemu/linux-user/syscall.c 2007-08-09 20:28:41.000000000 +0100
+@@ -61,7 +61,15 @@
+ #define tchars host_tchars /* same as target */
+ #define ltchars host_ltchars /* same as target */
+
+-#include <linux/futex.h>
++#define FUTEX_WAIT 0
++#define FUTEX_WAKE 1
++#define FUTEX_FD 2
++#define FUTEX_REQUEUE 3
++#define FUTEX_CMP_REQUEUE 4
++#define FUTEX_WAKE_OP 5
++#define FUTEX_LOCK_PI 6
++#define FUTEX_UNLOCK_PI 7
++
+ #include <linux/termios.h>
+ #include <linux/unistd.h>
+ #include <linux/utsname.h>
diff --git a/packages/qemu/qemu-gcc3-check.inc b/packages/qemu/qemu-gcc3-check.inc
index 96b79fdf14..81c3555b48 100644
--- a/packages/qemu/qemu-gcc3-check.inc
+++ b/packages/qemu/qemu-gcc3-check.inc
@@ -1,20 +1,11 @@
python __anonymous() {
from bb import which, data
- path = data.getVar('PATH', d)
- oldOeConf = data.getVar('EXTRA_OECONF', d)
+ path = data.getVar('PATH', d, 1)
+ oldOeConf = data.getVar('EXTRA_OECONF', d, 1)
if not oldOeConf: oldOeConf = ""
- if len(which(path, 'gcc-3.4')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.4", d)
- elif len(which(path, 'gcc34')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc34", d)
- elif len(which(path, 'gcc33')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc33", d)
- elif len(which(path, 'gcc-3.3')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.3", d)
- elif len(which(path, 'gcc-3.3.6')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.3.6", d)
- elif len(which(path, 'gcc-3.4.6')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.4.6", d)
+ gcc3 = check_gcc3(d)
+ if gcc3:
+ data.setVar('EXTRA_OECONF', oldOeConf + " --cc=" + gcc3, d)
}
diff --git a/packages/qemu/qemu-native_20071121.bb b/packages/qemu/qemu-native_20071121.bb
new file mode 100644
index 0000000000..a813528d87
--- /dev/null
+++ b/packages/qemu/qemu-native_20071121.bb
@@ -0,0 +1,8 @@
+SRCDATE_qemu-native = "20071121"
+require qemu_${PV}.bb
+inherit native
+PR = "r1"
+DEPENDS = "zlib-native"
+prefix = "${STAGING_DIR_NATIVE}/${layout_prefix}"
+
+require qemu-gcc3-check.inc
diff --git a/packages/qemu/qemu_20071121.bb b/packages/qemu/qemu_20071121.bb
new file mode 100644
index 0000000000..2b6f289974
--- /dev/null
+++ b/packages/qemu/qemu_20071121.bb
@@ -0,0 +1,60 @@
+LICENSE = "GPL"
+DEPENDS = "zlib"
+SRCDATE = "20071121"
+PV = "0.9.0+cvs${SRCDATE}"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+FILESPATH = "${FILE_DIRNAME}/qemu-${PV}:${FILE_DIRNAME}/files"
+FILESDIR = "${WORKDIR}"
+
+SRC_URI = "\
+ cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
+ file://02_snapshot_use_tmpdir.patch;patch=1;pnum=0 \
+ file://04_do_not_print_rtc_freq_if_ok.patch;patch=1;pnum=1 \
+ file://05_non-fatal_if_linux_hd_missing.patch;patch=1;pnum=1 \
+ file://06_exit_segfault.patch;patch=1;pnum=0 \
+ file://10_signal_jobs.patch;patch=1;pnum=0 \
+ file://11_signal_sigaction.patch;patch=1;pnum=0 \
+ file://22_net_tuntap_stall.patch;patch=1;pnum=0 \
+ file://31_syscalls.patch;patch=1;pnum=0 \
+ file://32_syscall_sysctl.patch;patch=1;pnum=0 \
+ file://33_syscall_ppc_clone.patch;patch=1;pnum=0 \
+ file://39_syscall_fadvise64.patch;patch=1;pnum=0 \
+ file://41_arm_fpa_sigfpe.patch;patch=1;pnum=0 \
+ file://52_ne2000_return.patch;patch=1;pnum=1 \
+ file://61_safe_64bit_int.patch;patch=1;pnum=0 \
+ file://63_sparc_build.patch;patch=1;pnum=0 \
+ file://64_ppc_asm_constraints.patch;patch=1;pnum=1 \
+ file://65_kfreebsd.patch;patch=1;pnum=0 \
+ file://66_tls_ld.patch;patch=1;pnum=0 \
+ file://91-oh-sdl-cursor.patch;patch=1;pnum=0 \
+ file://qemu-0.9.0-nptl.patch;patch=1 \
+ file://qemu-0.9.0-nptl-update.patch;patch=1 \
+ file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1 \
+ file://workaround_bad_futex_headers.patch;patch=1 \
+ file://fix_segfault.patch;patch=1 \
+ file://disable-error-in-configure.patch;patch=1 \
+ file://no-strip.patch;patch=1"
+
+# svn://svn.o-hand.com/repos/misc/trunk/qemu-packaging/qemu;module=debian;proto=http;srcdate=20070119 \
+# file://debian/patches/21_net_soopts.patch;patch=1;pnum=0 \
+# file://debian/patches/35_syscall_sockaddr.patch;patch=1;pnum=0 \
+# file://debian/patches/43_arm_cpustate.patch;patch=1;pnum=0 \
+# file://debian/patches/62_linux_boot_nasm.patch;patch=1;pnum=0 \
+# file://debian/patches/67_ppc_ftbfs.patch;patch=1;pnum=0 \
+# file://debian/patches/80_ui_curses.patch;patch=1;pnum=0 \
+# file://debian/patches/96-x.patch;patch=1"
+
+S = "${WORKDIR}/qemu"
+
+#EXTRA_OECONF += "--disable-sdl"
+#EXTRA_OECONF += "--target-list=arm-linux-user"
+EXTRA_OECONF += "--disable-gfx-check"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
diff --git a/packages/qmake/qmake2-native.inc b/packages/qmake/qmake2-native.inc
new file mode 100644
index 0000000000..c609fefb81
--- /dev/null
+++ b/packages/qmake/qmake2-native.inc
@@ -0,0 +1,68 @@
+DESCRIPTION = "TrollTech Makefile Generator"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.trolltech.com"
+SECTION = "devel"
+LICENSE = "GPL"
+PR = "r2"
+
+QTVER = "qtopia-core-opensource-src-${QTVERSION}"
+
+FILESDIR += "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/qmake2-native"
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/${QTVER}.tar.gz \
+ file://0001-fix-mkspecs.patch;patch=1 \
+ file://0008-backport-qt-lib-infix.patch;patch=1 \
+ file://qt-config.patch;patch=1 \
+ file://use-lflags-last.patch;patch=1 \
+ file://linux-oe-qmake.conf"
+S = "${WORKDIR}/${QTVER}"
+
+# we need the real target system here
+CROSS_SYS := "${TARGET_SYS}"
+inherit autotools cross
+
+export QTDIR = "${S}"
+EXTRA_OEMAKE = "-e"
+
+do_configure() {
+ # Install the OE build templates
+ for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
+ do
+ install -d ${S}/mkspecs/$template
+ install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
+ ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
+ done
+
+ QMAKESPEC=
+ PLATFORM=${HOST_OS}-oe-g++
+ export PLATFORM
+ # yes, TARGET_SYS is correct, because this is a 'cross'-qmake-native :) :M:
+ export OE_QMAKE_CC="${CC}"
+ export OE_QMAKE_CFLAGS="${CFLAGS}"
+ export OE_QMAKE_CXX="${CXX}"
+ export OE_QMAKE_CXXFLAGS="-fno-exceptions -fno-rtti ${CXXFLAGS}"
+ export OE_QMAKE_LDFLAGS="${LDFLAGS}"
+ export OE_QMAKE_LINK="${CCLD}"
+ export OE_QMAKE_AR="${AR}"
+ export OE_QMAKE_STRIP="${STRIP}"
+ export OE_QMAKE_UIC="${STAGING_BINDIR_NATIVE}/uic"
+ export OE_QMAKE_MOC="${STAGING_BINDIR_NATIVE}/moc"
+ export OE_QMAKE_RCC="non-existant"
+ export OE_QMAKE_QMAKE="${STAGING_BINDIR_NATIVE}/qmake"
+ export OE_QMAKE_RPATH="-Wl,-rpath-link,"
+ echo yes | ./configure -prefix ${STAGING_DIR}/${CROSS_SYS}/qt4 ${EXTRA_OECONF} || die "Configuring qt failed"
+}
+
+do_compile() {
+ :
+}
+
+do_stage() {
+ install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake2
+ install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake-qt4
+ install -d ${CROSS_DATADIR}/qt4
+ cp -PfR mkspecs ${CROSS_DATADIR}/qt4/
+}
+
+do_install() {
+ :
+}
diff --git a/packages/qmake/qmake2-native/.mtn2git_empty b/packages/qmake/qmake2-native/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qmake/qmake2-native/.mtn2git_empty
diff --git a/packages/qmake/qmake2-native-2.10a/0001-fix-mkspecs.patch b/packages/qmake/qmake2-native/0001-fix-mkspecs.patch
index abebfdfa27..e0ebe512c8 100644
--- a/packages/qmake/qmake2-native-2.10a/0001-fix-mkspecs.patch
+++ b/packages/qmake/qmake2-native/0001-fix-mkspecs.patch
@@ -1,4 +1,4 @@
-From 594157753a24d0575aaf948dc0e9500f6bdb2178 Mon Sep 17 00:00:00 2001
+From aa0377910cfd8d0fce6bdc9355994a4e267b1696 Mon Sep 17 00:00:00 2001
From: Michael Krelin <hacker@klever.net>
Date: Sat, 2 Jun 2007 16:39:58 +0200
Subject: [PATCH] fix mkspecs
@@ -8,10 +8,10 @@ Subject: [PATCH] fix mkspecs
mkspecs/common/linux.conf | 26 +++++++++++++-------------
2 files changed, 22 insertions(+), 22 deletions(-)
-diff --git a/mkspecs/common/g++.conf b/mkspecs/common/g++.conf
-index f5a5c8e..4007c7e 100644
---- a/mkspecs/common/g++.conf
-+++ b/mkspecs/common/g++.conf
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/common/g++.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/common/g++.conf 2007-12-04 18:07:53.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/common/g++.conf 2007-12-26 19:47:02.000000000 +0100
@@ -2,12 +2,12 @@
# qmake configuration for common gcc
#
@@ -24,11 +24,11 @@ index f5a5c8e..4007c7e 100644
QMAKE_CFLAGS_WARN_ON += -Wall -W
QMAKE_CFLAGS_WARN_OFF += -w
-QMAKE_CFLAGS_RELEASE += -O2
-+QMAKE_CFLAGS_RELEASE += -O2
++QMAKE_CFLAGS_RELEASE +=
QMAKE_CFLAGS_DEBUG += -g
QMAKE_CFLAGS_SHLIB += -fPIC
QMAKE_CFLAGS_STATIC_LIB += -fPIC
-@@ -16,8 +16,8 @@ QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+@@ -16,8 +16,8 @@
QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
@@ -39,7 +39,7 @@ index f5a5c8e..4007c7e 100644
QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
-@@ -30,9 +30,9 @@ QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+@@ -30,9 +30,9 @@
QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
@@ -52,7 +52,7 @@ index f5a5c8e..4007c7e 100644
QMAKE_LFLAGS_RELEASE +=
QMAKE_LFLAGS_DEBUG +=
QMAKE_LFLAGS_APP +=
-@@ -40,7 +40,7 @@ QMAKE_LFLAGS_SHLIB += -shared
+@@ -40,7 +40,7 @@
QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_SONAME += -Wl,-soname,
QMAKE_LFLAGS_THREAD +=
@@ -61,11 +61,11 @@ index f5a5c8e..4007c7e 100644
QMAKE_PCH_OUTPUT_EXT = .gch
-diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
-index 3796a87..52acf16 100644
---- a/mkspecs/common/linux.conf
-+++ b/mkspecs/common/linux.conf
-@@ -7,26 +7,26 @@ QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/common/linux.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/common/linux.conf 2007-12-04 18:07:53.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/common/linux.conf 2007-12-26 19:47:02.000000000 +0100
+@@ -7,26 +7,26 @@
QMAKE_INCDIR =
QMAKE_LIBDIR =
@@ -103,7 +103,7 @@ index 3796a87..52acf16 100644
QMAKE_RANLIB =
QMAKE_TAR = tar -cf
-@@ -38,11 +38,11 @@ QMAKE_COPY_DIR = $(COPY) -r
+@@ -38,11 +38,11 @@
QMAKE_MOVE = mv -f
QMAKE_DEL_FILE = rm -f
QMAKE_DEL_DIR = rmdir
@@ -118,6 +118,29 @@ index 3796a87..52acf16 100644
-include(unix.conf)
\ No newline at end of file
+include(unix.conf)
---
-1.5.1.6
-
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/linux-g++/qmake.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/linux-g++/qmake.conf 2007-12-04 18:07:53.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/linux-g++/qmake.conf 2007-12-26 19:47:02.000000000 +0100
+@@ -5,7 +5,7 @@
+ MAKEFILE_GENERATOR = UNIX
+ TEMPLATE = app
+ CONFIG += qt warn_on release incremental link_prl
+-QT += core gui
++QT += core gui $$(OE_QMAKE_EXTRA_MODULES)
+ QMAKE_INCREMENTAL_STYLE = sublib
+
+ include(../common/g++.conf)
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/common/unix.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/common/unix.conf 2007-12-26 19:48:20.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/common/unix.conf 2007-12-26 19:49:50.000000000 +0100
+@@ -10,6 +10,8 @@
+ QMAKE_YACC_HEADER = $base.tab.h
+ QMAKE_YACC_SOURCE = $base.tab.c
+
++QMAKE_RCC = $$(OE_QMAKE_RCC)
++
+ QMAKE_SEPARATE_DEBUG_INFO = (test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\" ; targ=`basename $(TARGET)`; objcopy --only-keep-debug \"\$\$targ\" \"\$\$targ.debug\" && objcopy --strip-debug \"\$\$targ\" && objcopy --add-gnu-debuglink=\"\$\$targ.debug\" \"\$\$targ\" && chmod -x \"\$\$targ.debug\" ) ;
+
+ QMAKE_INSTALL_SEPARATE_DEBUG_INFO = test -z "$(DESTDIR)" || cd \"$(DESTDIR)\" ; $(INSTALL_FILE) `basename $(TARGET)`.debug $(INSTALL_ROOT)/\$\$target_path/
diff --git a/packages/qmake/qmake2-native/0008-backport-qt-lib-infix.patch b/packages/qmake/qmake2-native/0008-backport-qt-lib-infix.patch
new file mode 100644
index 0000000000..f87576a07b
--- /dev/null
+++ b/packages/qmake/qmake2-native/0008-backport-qt-lib-infix.patch
@@ -0,0 +1,33 @@
+diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
+index 32a7fd5..48d584f 100644
+--- a/mkspecs/features/qt_functions.prf
++++ b/mkspecs/features/qt_functions.prf
+@@ -28,7 +28,7 @@ defineTest(qtAddLibrary) {
+ INCLUDEPATH -= $$FRAMEWORK_INCLUDE
+ INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH
+ }
+- LINKAGE = -framework $${LIB_NAME}
++ LINKAGE = -framework $${LIB_NAME}$${QT_LIBINFIX}
+ } else:!qt_no_framework { #detection
+ for(frmwrk_dir, $$list($$QMAKE_LIBDIR_QT $$QMAKE_LIBDIR $$(DYLD_FRAMEWORK_PATH) /Library/Frameworks)) {
+ exists($${frmwrk_dir}/$${LIB_NAME}.framework) {
+@@ -46,15 +46,15 @@ defineTest(qtAddLibrary) {
+ }
+ isEmpty(LINKAGE) {
+ CONFIG(debug, debug|release) {
+- win32:LINKAGE = -l$${LIB_NAME}d
+- mac:LINKAGE = -l$${LIB_NAME}_debug
++ win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d
++ mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug
+ }
+- isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}
++ isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}
+ }
+ !isEmpty(QMAKE_LSB) {
+ QMAKE_LFLAGS *= --lsb-libpath=$$$$QMAKE_LIBDIR_QT
+ QMAKE_LFLAGS *= -L/opt/lsb/lib
+- QMAKE_LFLAGS *= --lsb-shared-libs=$${LIB_NAME}
++ QMAKE_LFLAGS *= --lsb-shared-libs=$${LIB_NAME}${QT_LIBINFIX}
+ }
+ LIBS += $$LINKAGE
+ export(LIBS)
diff --git a/packages/qmake/qmake2-native-2.10a/linux-oe-qmake.conf b/packages/qmake/qmake2-native/linux-oe-qmake.conf
index f58481a693..f58481a693 100644
--- a/packages/qmake/qmake2-native-2.10a/linux-oe-qmake.conf
+++ b/packages/qmake/qmake2-native/linux-oe-qmake.conf
diff --git a/packages/qmake/qmake2-native/qt-config.patch b/packages/qmake/qmake2-native/qt-config.patch
new file mode 100644
index 0000000000..b2d86de2c5
--- /dev/null
+++ b/packages/qmake/qmake2-native/qt-config.patch
@@ -0,0 +1,27 @@
+Allow to set a qt.conf from the outside using the environment. This allows
+to inject new prefixes and other paths into qmake. This is needed when using
+the same qmake binary to build qt/x11 and qt/embedded
+
+Index: qtopia-core-opensource-src-4.3.3/src/corelib/global/qlibraryinfo.cpp
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/src/corelib/global/qlibraryinfo.cpp 2007-12-25 00:55:32.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/src/corelib/global/qlibraryinfo.cpp 2007-12-25 01:20:18.000000000 +0100
+@@ -42,6 +42,7 @@
+ #include "qpointer.h"
+ #ifdef QT_BUILD_QMAKE
+ extern QString qmake_libraryInfoFile();
++#include <stdlib.h>
+ #else
+ # include "qcoreapplication.h"
+ #endif
+@@ -107,6 +108,10 @@
+ #ifdef QT_BUILD_QMAKE
+ if(!QFile::exists(qtconfig))
+ qtconfig = qmake_libraryInfoFile();
++ if (!QFile::exists(qtconfig)) {
++ QByteArray config = getenv("QT_CONF_PATH");
++ qtconfig = config;
++ }
+ #else
+ if (!QFile::exists(qtconfig) && QCoreApplication::instance()) {
+ #ifdef Q_OS_MAC
diff --git a/packages/qmake/qmake2-native-2.10a/use-lflags-last.patch b/packages/qmake/qmake2-native/use-lflags-last.patch
index 4197dbbf64..4197dbbf64 100644
--- a/packages/qmake/qmake2-native-2.10a/use-lflags-last.patch
+++ b/packages/qmake/qmake2-native/use-lflags-last.patch
diff --git a/packages/qmake/qmake2-native_2.10a.bb b/packages/qmake/qmake2-native_2.10a.bb
index d9071193a9..89b2ae5a82 100644
--- a/packages/qmake/qmake2-native_2.10a.bb
+++ b/packages/qmake/qmake2-native_2.10a.bb
@@ -1,67 +1,2 @@
-DESCRIPTION = "TrollTech Makefile Generator"
-PRIORITY = "optional"
-HOMEPAGE = "http://www.trolltech.com"
-SECTION = "devel"
-LICENSE = "GPL"
-PR = "r2"
-
-QTVER = "qtopia-core-opensource-src-4.3.2"
-
-SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/${QTVER}.tar.gz \
- file://0001-fix-mkspecs.patch;patch=1 \
- file://use-lflags-last.patch;patch=1 \
- file://linux-oe-qmake.conf"
-S = "${WORKDIR}/${QTVER}"
-
-# we need the real target system here
-CROSS_SYS := "${TARGET_SYS}"
-inherit autotools cross
-
-export QTDIR = "${S}"
-EXTRA_OEMAKE = "-e"
-
-do_configure() {
- # Install the OE build templates
- for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
- do
- install -d ${S}/mkspecs/$template
- install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
- done
-
- QMAKESPEC=
- PLATFORM=${HOST_OS}-oe-g++
- export PLATFORM
- # yes, TARGET_SYS is correct, because this is a 'cross'-qmake-native :) :M:
- export OE_QMAKE_CC="${CC}"
- export OE_QMAKE_CFLAGS="${CFLAGS}"
- export OE_QMAKE_CXX="${CXX}"
- export OE_QMAKE_CXXFLAGS="-fno-exceptions -fno-rtti ${CXXFLAGS}"
- export OE_QMAKE_LDFLAGS="${LDFLAGS}"
- export OE_QMAKE_LINK="${CCLD}"
- export OE_QMAKE_AR="${AR}"
- export OE_QMAKE_STRIP="${STRIP}"
- export OE_QMAKE_UIC="${STAGING_BINDIR_NATIVE}/uic"
- export OE_QMAKE_MOC="${STAGING_BINDIR_NATIVE}/moc"
- export OE_QMAKE_RCC="non-existant"
- export OE_QMAKE_QMAKE="${STAGING_BINDIR_NATIVE}/qmake"
- export OE_QMAKE_RPATH="-Wl,-rpath-link,"
- echo yes | ./configure -prefix ${STAGING_DIR}/${CROSS_SYS}/qt4 ${EXTRA_OECONF} || die "Configuring qt failed"
-}
-
-do_compile() {
- :
-}
-
-do_stage() {
- install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake2
- install -m 0755 bin/qmake ${STAGING_BINDIR}/qmake-qt4
- install -d ${STAGING_DIR}/${CROSS_SYS}/qt4/
- cp -PfR mkspecs ${STAGING_DIR}/${CROSS_SYS}/qt4/
- install -d ${STAGING_DIR}/${HOST_SYS}/qt4/
- cp -PfR mkspecs ${STAGING_DIR}/${HOST_SYS}/qt4/
-}
-
-do_install() {
- :
-}
+QTVERSION="4.3.3"
+require ${PN}.inc
diff --git a/packages/qpe-games/crossword_0.0.3.bb b/packages/qpe-games/crossword_0.0.3.bb
index b46c0d92f2..db468235f1 100644
--- a/packages/qpe-games/crossword_0.0.3.bb
+++ b/packages/qpe-games/crossword_0.0.3.bb
@@ -26,7 +26,7 @@ pkg_postinst() {
MIMEFILE=/opt/QtPalmtop/etc/mime.types
-grep -q application/puz $MIMEFILE 2>/dev/null || echo -e "application/crossword\t\tpuz tpz" >> $MIMEFILE
+grep -q application/puz $MIMEFILE 2>/dev/null || printf "application/crossword\t\tpuz tpz\n" >> $MIMEFILE
}
inherit opie
diff --git a/packages/qpegps/files/qpegps.desktop b/packages/qpegps/files/qpegps.desktop
index 16e222b00b..de5a93ccea 100644
--- a/packages/qpegps/files/qpegps.desktop
+++ b/packages/qpegps/files/qpegps.desktop
@@ -1,7 +1,6 @@
[Desktop Entry]
Comment=Moving Map
Exec=qpegps
-Icon=qpegps/qpegps.png
+Icon=qpegps
Type=Application
Name=qpeGPS
-
diff --git a/packages/qpegps/qpegps.inc b/packages/qpegps/qpegps.inc
index 2e10bf40a6..e117d5fc21 100644
--- a/packages/qpegps/qpegps.inc
+++ b/packages/qpegps/qpegps.inc
@@ -4,6 +4,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
HOMEPAGE = "http://qpegps.sourceforge.net/"
+DEPENDS = "gpsd"
RRECOMMENDS = "gpsd"
SRC_URI = "${SOURCEFORGE_MIRROR}/qpegps/qpegps_${PV}_src.zip \
@@ -16,18 +17,19 @@ inherit palmtop
QMAKE_PROFILES = "qpegps.pro"
EXTRA_QMAKEVARS_POST = "LIBS=-lqpe LIBS+=-lgps"
OE_QMAKE_CFLAGS += " -DQWS "
+OE_QMAKE_LIBS_QT = ${QT_LIBRARY}
do_install() {
install -d ${D}${palmtopdir}/bin \
${D}${palmtopdir}/apps/Applications \
- ${D}${palmtopdir}/pics/qpegps \
+ ${D}${palmtopdir}/pics \
${D}${palmtopdir}/help/html/qpegps_icons \
${D}${palmtopdir}/qpegps/maps \
${D}${palmtopdir}/qpegps/icons \
${D}${palmtopdir}/qpegps/tracks
install -m 0755 qpegps ${D}${palmtopdir}/bin/
install -m 0644 ${WORKDIR}/qpegps.desktop ${D}${palmtopdir}/apps/Applications/
- install -m 0644 ${WORKDIR}/qpegps.png ${D}${palmtopdir}/pics/qpegps/
+ install -m 0644 ${WORKDIR}/qpegps.png ${D}${palmtopdir}/pics/
install -m 0644 doc/qpegps.html ${D}${palmtopdir}/help/html/
install -m 0644 doc/qpegps_icons/*.png ${D}${palmtopdir}/help/html/qpegps_icons/
install -m 0644 icons/*.xpm ${D}${palmtopdir}/qpegps/icons/
diff --git a/packages/qpegps/qpegps_0.9.2.3.3.bb b/packages/qpegps/qpegps_0.9.2.3.3.bb
index 4cdb945321..a1c493005f 100644
--- a/packages/qpegps/qpegps_0.9.2.3.3.bb
+++ b/packages/qpegps/qpegps_0.9.2.3.3.bb
@@ -1 +1,3 @@
require qpegps.inc
+
+PR = "r1"
diff --git a/packages/qpegps/qpegps_0.9.3.1.bb b/packages/qpegps/qpegps_0.9.3.1.bb
new file mode 100644
index 0000000000..be4f293fe6
--- /dev/null
+++ b/packages/qpegps/qpegps_0.9.3.1.bb
@@ -0,0 +1,8 @@
+require qpegps.inc
+
+PR = "r1"
+
+do_configure_prepend() {
+ mv ${S}/Place.cpp ${S}/place.cpp
+ mv ${S}/Place.h ${S}/place.h
+}
diff --git a/packages/qpegps/qpegps_0.9.3.bb b/packages/qpegps/qpegps_0.9.3.bb
deleted file mode 100644
index 4cdb945321..0000000000
--- a/packages/qpegps/qpegps_0.9.3.bb
+++ /dev/null
@@ -1 +0,0 @@
-require qpegps.inc
diff --git a/packages/qpegps/qpegps_svn.bb b/packages/qpegps/qpegps_svn.bb
new file mode 100644
index 0000000000..3ae1d58a80
--- /dev/null
+++ b/packages/qpegps/qpegps_svn.bb
@@ -0,0 +1,15 @@
+require qpegps.inc
+
+PV = "0.0+svn${SRCDATE}"
+PR = "r1"
+
+SRC_URI = "svn://qpegps.svn.sourceforge.net/svnroot/;module=qpegps/trunk/qpegps;proto=https \
+ file://qpegps.desktop \
+ file://qpegps.png "
+
+S = "${WORKDIR}/qpegps/trunk/qpegps"
+
+do_configure_prepend() {
+ mv ${S}/Place.cpp ${S}/place.cpp
+ mv ${S}/Place.h ${S}/place.h
+}
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/qsvn/qsvn-qte_0.3.0.bb b/packages/qsvn/qsvn-qte_0.3.0.bb
new file mode 100644
index 0000000000..59b46edf9c
--- /dev/null
+++ b/packages/qsvn/qsvn-qte_0.3.0.bb
@@ -0,0 +1,3 @@
+require qsvn.inc
+FILESDIR += "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/qsvn"
+inherit qtopia4core
diff --git a/packages/qsvn/qsvn.inc b/packages/qsvn/qsvn.inc
new file mode 100644
index 0000000000..c27bbab114
--- /dev/null
+++ b/packages/qsvn/qsvn.inc
@@ -0,0 +1,25 @@
+DESCRIPTION = "QSvn is a graphical Subversion client for Linux, UNIX, Mac OS X and Windows. \
+It is written in C++ using the Qt4 toolkit from Trolltech."
+HOMEPAGE = "http://ar.oszine.de/projects/qsvn/"
+AUTHOR = "Andreas Richter, Rajko Albrecht"
+LICENSE = "GPL"
+SECTION = "network"
+DEPENDS = "apr-util subversion"
+PR = "r0"
+
+def vars_from_file(filename):
+ import os
+ return os.path.splitext(os.path.basename(filename))[0]
+
+FN := "${@vars_from_file(bb.data.getVar('FILE',d))}"
+
+SRC_URI = "http://download2.berlios.de/${FN}/${FN}-${PV}-src.tar.gz \
+ file://build.patch;patch=1"
+S = "${WORKDIR}/${FN}-${PV}"
+
+EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${STAGING_INCDIR}/subversion-1"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 bin/qsvn ${D}${bindir}/${PN}
+}
diff --git a/packages/qsvn/qsvn_0.3.0.bb b/packages/qsvn/qsvn_0.3.0.bb
index 575e9359b7..db3cc0918d 100644
--- a/packages/qsvn/qsvn_0.3.0.bb
+++ b/packages/qsvn/qsvn_0.3.0.bb
@@ -1,20 +1,2 @@
-DESCRIPTION = "QSvn is a graphical Subversion client for Linux, UNIX, Mac OS X and Windows. \
-It is written in C++ using the Qt4 toolkit from Trolltech."
-HOMEPAGE = "http://ar.oszine.de/projects/qsvn/"
-AUTHOR = "Andreas Richter, Rajko Albrecht"
-LICENSE = "GPL"
-SECTION = "network"
-DEPENDS = "apr-util subversion"
-PR = "r0"
-
-SRC_URI = "http://download2.berlios.de/qsvn/qsvn-${PV}-src.tar.gz \
- file://build.patch;patch=1"
-
-inherit qmake qt4x11
-
-EXTRA_QMAKEVARS_POST += "INCLUDEPATH+=${STAGING_INCDIR}/subversion-1"
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 bin/qsvn ${D}${bindir}
-}
+require qsvn.inc
+inherit qt4x11
diff --git a/packages/qt/qt4-x11-free_4.3.2.bb b/packages/qt/qt4-x11-free_4.3.2.bb
deleted file mode 100644
index 9b4c6be18c..0000000000
--- a/packages/qt/qt4-x11-free_4.3.2.bb
+++ /dev/null
@@ -1,187 +0,0 @@
-DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is the X11 version."
-SECTION = "x11/libs"
-PRIORITY = "optional"
-HOMEPAGE = "http://www.trolltech.com"
-LICENSE = "GPL QPL"
-DEPENDS = "pkgconfig-native uicmoc4-native qmake2-native freetype jpeg virtual/libx11 \
- xft libxext libxrender libxrandr libxcursor dbus openssl"
-RDEPENDS_${PN} = "${NONDEV_PACKAGES}"
-PROVIDES = "qt4x11"
-PR = "r6"
-
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \
- file://0001-cross-compile.patch;patch=1 \
- file://0002-fix-resinit-declaration.patch;patch=1 \
- file://0003-no-tools.patch;patch=1 \
- file://0004-no-qmake.patch;patch=1 \
- file://0005-fix-mkspecs.patch;patch=1 \
- file://0006-freetype-host-includes.patch;patch=1 \
- file://0007-openssl-host-includes.patch;patch=1"
-S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
-
-PARALLEL_MAKE = ""
-
-inherit qmake_base qt4x11
-
-export QTDIR = "${S}"
-STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4"
-EXTRA_OEMAKE = "-e"
-
-require qt4_arch.inc
-
-QT_ARCH := "${@qt_arch(d)}"
-
-# FIXME:
-# * add missing options
-QT_CONFIG_FLAGS = "-release -shared -qt-zlib -system-libjpeg -no-nas-sound -no-sm -no-libmng -qt-libpng -no-gif -no-xinerama \
- -no-tablet -no-xkb -no-nis -no-cups -no-opengl \
- -no-sse -no-sse2 -no-mmx -no-3dnow \
- -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
- -qdbus \
- -verbose -stl -no-accessibility \
- -pch -no-glib"
-
-EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after DEFINES+=QT_NO_XIM INCPATH+=${STAGING_INCDIR} \
- INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
- QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
- AR="${TARGET_PREFIX}ar cqs" \
- MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
-
-do_configure() {
- echo "DEFINES -= QT_NO_CAST_TO_ASCII" >>src/qbase.pri
- echo "DEFINES += QT_NO_XIM" >>src/qbase.pri
- unset QMAKESPEC
- ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
- ln -s linux-g++ mkspecs/${TARGET_OS}-oe-g++
- #export QMAKESPEC="linux-oe-g++"
- #rm -rf ./mkspecs
- #ln -sf ${QMAKE_MKSPEC_PATH} ./mkspecs
- echo yes | ./configure -prefix / -platform ${TARGET_OS}-oe-g++ -crossarch ${QT_ARCH} ${QT_CONFIG_FLAGS} -fast \
- -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql
-}
-
-# FIXME: Might want to compile the cross tools for the -dev packages as well...
-do_compile() {
- unset CFLAGS CXXFLAGSi
- install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
- install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
- install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
-
- oe_runmake ${EXTRA_ENV}
-}
-
-PARTS = "3Support AssistantClient Core DBus Designer DesignerComponents Gui Network Script Sql Svg Test Xml"
-
-do_stage() {
- oe_runmake install INSTALL_ROOT=/
- install -d ${STAGING_QT_DIR}
- install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${STAGING_QT_DIR}/bin/rcc
- install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${STAGING_QT_DIR}/bin/moc
- install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${STAGING_QT_DIR}/bin/uic
- sed -i -e 's,^QMAKE_RPATHDIR.*,QMAKE_RPATHDIR=${STAGING_QT_DIR}/lib,g' ${STAGING_QT_DIR}/mkspecs/qconfig.pri
- for pcc in AssistantClient DBus Test UiTools ; do
- sed -i -e 's,${S}/lib,${STAGING_QT_DIR}/lib,g' ${STAGING_QT_DIR}/lib/pkgconfig/Qt${pcc}.pc
- done
- install -d ${PKG_CONFIG_DIR}/
- for pc in ${STAGING_QT_DIR}/lib/pkgconfig/*.pc ; do
- sed -i -e 's,$(OE_QMAKE_LIBS_X11),-lX11 -lXext,g' $pc
- install -m 0644 $pc ${PKG_CONFIG_DIR}/
- done
-}
-
-# FIXME: Might want to call oe_runmake install INSTALL_ROOT=${D}/${prefix} as well...
-# FIXME: Might want to install everything into ${libdir}/qt4/* to match the usual packing...
-do_install() {
- install -d ${D}${libdir}
- install -d ${D}${bindir}
- install -d ${D}${includedir}
- for part in ${PARTS}
- do
- oe_libinstall -so -C lib libQt$part ${D}${libdir}
- done
- oe_libinstall -a -C lib libQtUiTools ${D}${libdir}
- cp -pPR include/* ${D}${includedir}
- cp -pPR plugins ${D}${libdir}
- cp -pPR bin/* ${D}${bindir}
-
- install -d ${D}${bindir}/qt4-examples
- for binary in `find examples -perm 0755 -type f`
- do
- install -m 0755 $binary ${D}${bindir}/qt4-examples/
- done
- install -d ${D}${bindir}/qt4-demos
- for binary in `find demos -perm 0755 -type f`
- do
- install -m 0755 $binary ${D}${bindir}/qt4-demos/
- done
- rm ${D}${bindir}/rcc ${D}${bindir}/uic ${D}${bindir}/moc
-}
-
-NONDEV_PACKAGES = "libqtcore4 libqtgui4 libqtnetwork4 \
- libqtsql4 libqtsvg4 libqttest4 \
- libqtxml4 \
- libqtdesigner4 libqtdesignercomponents4 \
- libqt3support4 \
- libqtassistantclient4 libqtscript4 \
- libqtdbus4 \
- qt4-assistant qt4-common qt4-designer qt4-demos qt4-examples qt4-linguist \
- qt4-pixeltool qt4-dbus \
- qt4-plugins-accessible qt4-plugins-codecs qt4-plugins-designer qt4-plugins-imageformats qt4-plugins-sqldrivers \
- qt4-plugins-inputmethods qt4-plugins-iconengines"
-
-PACKAGES += "libqtcore4-dev libqtgui4-dev libqtnetwork4-dev libqtsql4-dev libqtsvg4-dev libqttest4-dev \
- libqtxml4-dev libqtdesigner4-dev libqtdesignercomponents4-dev libqt3support4-dev \
- libqtassistantclient4-dev libqtscript4-dev libqtdbus4-dev \
- ${NONDEV_PACKAGES}"
-
-ALLOW_EMPTY = "1"
-FILES_${PN} = ""
-
-FILES_libqtcore4 = "${libdir}/libQtCore.so.*"
-FILES_libqtcore4-dev = "${libdir}/libQtCore.so"
-FILES_libqtgui4 = "${libdir}/libQtGui.so.*"
-FILES_libqtgui4-dev = "${libdir}/libQtGui.so"
-FILES_libqtnetwork4 = "${libdir}/libQtNetwork.so.*"
-FILES_libqtnetwork4-dev = "${libdir}/libQtNetwork.so"
-FILES_libqtsql4 = "${libdir}/libQtSql.so.*"
-FILES_libqtsql4-dev = "${libdir}/libQtSql.so"
-FILES_libqtsvg4 = "${libdir}/libQtSvg.so.*"
-FILES_libqtsvg4-dev = "${libdir}/libQtSvg.so"
-FILES_libqttest4 = "${libdir}/libQtTest.so.*"
-FILES_libqttest4-dev = "${libdir}/libQtTest.so"
-FILES_libqtxml4 = "${libdir}/libQtXml.so.*"
-FILES_libqtxml4-dev = "${libdir}/libQtXml.so"
-FILES_libqtdesigner4 = "${libdir}/libQtDesigner.so.*"
-FILES_libqtdesigner4-dev = "${libdir}/libQtDesigner.so"
-FILES_libqtdesignercomponents4 = "${libdir}/libQtDesignerComponents.so.*"
-FILES_libqtdesignercomponents4-dev = "${libdir}/libQtDesignerComponents.so"
-FILES_libqt3support4 = "${libdir}/libQt3Support.so.*"
-FILES_libqt3support4-dev = "${libdir}/libQt3Support.so"
-FILES_libqtassistantclient4 = "${libdir}/libQtAssistantClient.so.*"
-FILES_libqtassistantclient4-dev = "${libdir}/libQtAssistantClient.so"
-FILES_libqtscript4 = "${libdir}/libQtScript.so.*"
-FILES_libqtscript4-dev = "${libdir}/libQtScript.so"
-FILES_libqtdbus4 = "${libdir}/libQtDBus.so.*"
-FILES_libqtdbus4-dev = "${libdir}/libQtDBus.so"
-
-FILES_qt4-plugins-accessible = "${libdir}/plugins/accessible/*.so"
-FILES_qt4-plugins-codecs = "${libdir}/plugins/codecs/*.so"
-FILES_qt4-plugins-designer = "${libdir}/plugins/designer/*.so"
-FILES_qt4-plugins-imageformats = "${libdir}/plugins/imageformats/*.so"
-FILES_qt4-plugins-sqldrivers = "${libdir}/plugins/sqldrivers/*.so"
-FILES_qt4-plugins-inputmethods = "${libdir}/plugins/inputmethods/*.so"
-FILES_qt4-plugins-iconengines = "${libdir}/plugins/iconengines/*.so"
-
-FILES_qt4-assistant = "${bindir}/*assistant*"
-FILES_qt4-designer = "${bindir}/*designer*"
-FILES_qt4-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/qm2ts"
-FILES_qt4-pixeltool = "${bindir}/pixeltool"
-FILES_qt4-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer"
-
-FILES_qt4-common = "${bindir}/qtconfig"
-FILES_qt4-examples = "${bindir}/qt4-examples/*"
-FILES_qt4-demos = "${bindir}/qtdemo ${bindir}/qt4-demos/*"
-
-FILES_${PN}-dev += "${bindir}/rcc ${bindir}/uic* ${bindir}/moc ${bindir}/qmake ${bindir}/syncqt \
- ${bindir}/qt3to4 ${bindir}/findtr"
-FILES_${PN}-dbg += "${bindir}/*/.debug ${plugindir}/.debug"
diff --git a/packages/qt/qt4_arch.inc b/packages/qt/qt4_arch.inc
deleted file mode 100644
index 6dcbd2bc4a..0000000000
--- a/packages/qt/qt4_arch.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-def qt_arch(d):
- import bb, re
- arch = bb.data.getVar('TARGET_ARCH', d, 1)
- if re.match("^i.86$", arch):
- arch = "i386"
- elif re.match("^arm.*", arch):
- arch = "arm"
- elif arch == "x86_64":
- arch = "x86"
- elif arch == "mipsel":
- arch = "mips"
- return arch
-
diff --git a/packages/qt4/.mtn2git_empty b/packages/qt4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt4/.mtn2git_empty
diff --git a/packages/qt4/files/.mtn2git_empty b/packages/qt4/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt4/files/.mtn2git_empty
diff --git a/packages/qt/qt4-x11-free-4.3.2/0001-cross-compile.patch b/packages/qt4/files/0001-cross-compile.patch
index 6e2b8e755e..6e2b8e755e 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0001-cross-compile.patch
+++ b/packages/qt4/files/0001-cross-compile.patch
diff --git a/packages/qt/qt4-x11-free-4.3.2/0003-no-tools.patch b/packages/qt4/files/0003-no-tools.patch
index 5412c90377..5412c90377 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0003-no-tools.patch
+++ b/packages/qt4/files/0003-no-tools.patch
diff --git a/packages/qt/qt4-x11-free-4.3.2/0005-fix-mkspecs.patch b/packages/qt4/files/0005-fix-mkspecs.patch
index 93692699dc..faf0ba028a 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0005-fix-mkspecs.patch
+++ b/packages/qt4/files/0005-fix-mkspecs.patch
@@ -8,10 +8,10 @@ Subject: [PATCH] fix mkspecs
mkspecs/common/linux.conf | 26 +++++++++++++-------------
2 files changed, 22 insertions(+), 22 deletions(-)
-diff --git a/mkspecs/common/g++.conf b/mkspecs/common/g++.conf
-index f5a5c8e..4007c7e 100644
---- a/mkspecs/common/g++.conf
-+++ b/mkspecs/common/g++.conf
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/common/g++.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/common/g++.conf 2007-12-26 02:58:15.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/common/g++.conf 2007-12-26 02:58:21.000000000 +0100
@@ -2,12 +2,12 @@
# qmake configuration for common gcc
#
@@ -24,11 +24,11 @@ index f5a5c8e..4007c7e 100644
QMAKE_CFLAGS_WARN_ON += -Wall -W
QMAKE_CFLAGS_WARN_OFF += -w
-QMAKE_CFLAGS_RELEASE += -O2
-+QMAKE_CFLAGS_RELEASE += -O2
++QMAKE_CFLAGS_RELEASE +=
QMAKE_CFLAGS_DEBUG += -g
QMAKE_CFLAGS_SHLIB += -fPIC
QMAKE_CFLAGS_STATIC_LIB += -fPIC
-@@ -16,8 +16,8 @@ QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+@@ -16,8 +16,8 @@
QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
@@ -39,7 +39,7 @@ index f5a5c8e..4007c7e 100644
QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
-@@ -30,9 +30,9 @@ QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+@@ -30,9 +30,9 @@
QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
@@ -52,7 +52,7 @@ index f5a5c8e..4007c7e 100644
QMAKE_LFLAGS_RELEASE +=
QMAKE_LFLAGS_DEBUG +=
QMAKE_LFLAGS_APP +=
-@@ -40,7 +40,7 @@ QMAKE_LFLAGS_SHLIB += -shared
+@@ -40,7 +40,7 @@
QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_SONAME += -Wl,-soname,
QMAKE_LFLAGS_THREAD +=
@@ -61,11 +61,11 @@ index f5a5c8e..4007c7e 100644
QMAKE_PCH_OUTPUT_EXT = .gch
-diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
-index 3796a87..52acf16 100644
---- a/mkspecs/common/linux.conf
-+++ b/mkspecs/common/linux.conf
-@@ -7,26 +7,26 @@ QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/common/linux.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/common/linux.conf 2007-12-26 02:58:15.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/common/linux.conf 2007-12-26 02:58:21.000000000 +0100
+@@ -7,26 +7,26 @@
QMAKE_INCDIR =
QMAKE_LIBDIR =
@@ -103,7 +103,7 @@ index 3796a87..52acf16 100644
QMAKE_RANLIB =
QMAKE_TAR = tar -cf
-@@ -38,11 +38,11 @@ QMAKE_COPY_DIR = $(COPY) -r
+@@ -38,11 +38,11 @@
QMAKE_MOVE = mv -f
QMAKE_DEL_FILE = rm -f
QMAKE_DEL_DIR = rmdir
@@ -118,6 +118,16 @@ index 3796a87..52acf16 100644
-include(unix.conf)
\ No newline at end of file
+include(unix.conf)
---
-1.5.0.7
-
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/linux-g++/qmake.conf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/linux-g++/qmake.conf 2007-12-26 02:58:15.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/linux-g++/qmake.conf 2007-12-26 03:00:49.000000000 +0100
+@@ -5,7 +5,7 @@
+ MAKEFILE_GENERATOR = UNIX
+ TEMPLATE = app
+ CONFIG += qt warn_on release incremental link_prl
+-QT += core gui
++QT += core gui $$(OE_QMAKE_EXTRA_MODULES)
+ QMAKE_INCREMENTAL_STYLE = sublib
+
+ include(../common/g++.conf)
diff --git a/packages/qt4/files/0008-backport-qt-lib-infix.patch b/packages/qt4/files/0008-backport-qt-lib-infix.patch
new file mode 100644
index 0000000000..c93f58ca41
--- /dev/null
+++ b/packages/qt4/files/0008-backport-qt-lib-infix.patch
@@ -0,0 +1,166 @@
+Index: qtopia-core-opensource-src-4.3.3/configure
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/configure 2007-12-27 17:26:19.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/configure 2007-12-27 17:26:19.000000000 +0100
+@@ -782,6 +782,11 @@
+ VAR=endian
+ VAL=`echo $1 | sed "s,^-\(.*\)-.*,\1,"`
+ ;;
++ -qtlibinfix)
++ VAR="qtlibinfix"
++ shift
++ VAL="$1"
++ ;;
+ -D?*|-D)
+ VAR="add_define"
+ if [ "$1" = "-D" ]; then
+@@ -903,6 +908,9 @@
+ libdir)
+ QT_INSTALL_LIBS="$VAL"
+ ;;
++ qtlibinfix)
++ QT_LIBINFIX="$VAL"
++ ;;
+ translationdir)
+ QT_INSTALL_TRANSLATIONS="$VAL"
+ ;;
+@@ -2606,6 +2614,8 @@
+ -no-sse ............ Do not compile with use of SSE instructions.
+ -no-sse2 ........... Do not compile with use of SSE2 instructions.
+
++ -qtlibinfix <infix> Renames all libQt*.so to libQt<infix>.so.
++
+ -D <string> ........ Add an explicit define to the preprocessor.
+ -I <string> ........ Add an explicit include path.
+ -L <string> ........ Add an explicit library path.
+@@ -5273,6 +5283,8 @@
+ QT_MINOR_VERSION = $QT_MINOR_VERSION
+ QT_PATCH_VERSION = $QT_PATCH_VERSION
+
++QT_LIBINFIX = $QT_LIBINFIX
++
+ EOF
+ if [ "$CFG_RPATH" = "yes" ]; then
+ echo "QMAKE_RPATHDIR += \"$QT_INSTALL_LIBS\"" >> "$QTCONFIG.tmp"
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/features/qt_functions.prf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/features/qt_functions.prf 2007-12-04 18:07:53.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/features/qt_functions.prf 2007-12-27 17:26:19.000000000 +0100
+@@ -28,7 +28,7 @@
+ INCLUDEPATH -= $$FRAMEWORK_INCLUDE
+ INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH
+ }
+- LINKAGE = -framework $${LIB_NAME}
++ LINKAGE = -framework $${LIB_NAME}$${QT_LIBINFIX}
+ } else:!qt_no_framework { #detection
+ for(frmwrk_dir, $$list($$QMAKE_LIBDIR_QT $$QMAKE_LIBDIR $$(DYLD_FRAMEWORK_PATH) /Library/Frameworks)) {
+ exists($${frmwrk_dir}/$${LIB_NAME}.framework) {
+@@ -46,15 +46,15 @@
+ }
+ isEmpty(LINKAGE) {
+ CONFIG(debug, debug|release) {
+- win32:LINKAGE = -l$${LIB_NAME}d
+- mac:LINKAGE = -l$${LIB_NAME}_debug
++ win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d
++ mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug
+ }
+- isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}
++ isEmpty(LINKAGE):LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}
+ }
+ !isEmpty(QMAKE_LSB) {
+ QMAKE_LFLAGS *= --lsb-libpath=$$$$QMAKE_LIBDIR_QT
+ QMAKE_LFLAGS *= -L/opt/lsb/lib
+- QMAKE_LFLAGS *= --lsb-shared-libs=$${LIB_NAME}
++ QMAKE_LFLAGS *= --lsb-shared-libs=$${LIB_NAME}${QT_LIBINFIX}
+ }
+ LIBS += $$LINKAGE
+ export(LIBS)
+Index: qtopia-core-opensource-src-4.3.3/src/qbase.pri
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/src/qbase.pri 2007-12-04 18:08:13.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/src/qbase.pri 2007-12-27 17:26:19.000000000 +0100
+@@ -138,7 +138,7 @@
+ contains(QT_CONFIG, qt3support):DEFINES *= QT3_SUPPORT
+ DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code
+
+-TARGET = $$qtLibraryTarget($$TARGET) #do this towards the end
++TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end
+
+ moc_dir.name = moc_location
+ moc_dir.variable = QMAKE_MOC
+Index: qtopia-core-opensource-src-4.3.3/tools/assistant/lib/lib.pro
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/tools/assistant/lib/lib.pro 2007-12-04 18:08:19.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/tools/assistant/lib/lib.pro 2007-12-27 17:26:19.000000000 +0100
+@@ -52,7 +52,7 @@
+ }
+ }
+
+-TARGET = $$qtLibraryTarget($$TARGET) #done towards the end
++TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #done towards the end
+
+ target.path=$$[QT_INSTALL_LIBS]
+ INSTALLS += target
+Index: qtopia-core-opensource-src-4.3.3/tools/designer/src/components/component.pri
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/tools/designer/src/components/component.pri 2007-12-04 18:08:43.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/tools/designer/src/components/component.pri 2007-12-27 17:26:19.000000000 +0100
+@@ -1,2 +1,2 @@
+
+-TARGET = $$qtLibraryTarget($$TARGET)
++TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX)
+Index: qtopia-core-opensource-src-4.3.3/tools/qdbus/src/src.pro
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/tools/qdbus/src/src.pro 2007-12-04 18:08:18.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/tools/qdbus/src/src.pro 2007-12-27 17:26:19.000000000 +0100
+@@ -70,7 +70,7 @@
+ }
+ }
+
+-TARGET = $$qtLibraryTarget($$TARGET) #done towards the end (after framework)
++TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #done towards the end (after framework)
+
+ # Input
+
+Index: qtopia-core-opensource-src-4.3.3/tools/qtestlib/src/src.pro
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/tools/qtestlib/src/src.pro 2007-12-04 18:08:18.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/tools/qtestlib/src/src.pro 2007-12-27 17:26:19.000000000 +0100
+@@ -61,7 +61,7 @@
+ }
+ }
+
+-TARGET = $$qtLibraryTarget($$TARGET) #done towards the end (after framework)
++TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #done towards the end (after framework)
+
+ # Input
+ HEADERS = qtest_global.h qtestcase.h qtestdata.h qtesteventloop.h
+Index: qtopia-core-opensource-src-4.3.3/tools/designer/src/uitools/uitools.pro
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/tools/designer/src/uitools/uitools.pro 2007-12-04 18:08:43.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/tools/designer/src/uitools/uitools.pro 2007-12-27 17:26:19.000000000 +0100
+@@ -1,5 +1,5 @@
+ TEMPLATE = lib
+-TARGET = $$qtLibraryTarget(QtUiTools)
++TARGET = $$qtLibraryTarget(QtUiTools$$QT_LIBINFIX)
+ QT += xml
+ CONFIG += qt staticlib
+ DESTDIR = ../../../../lib
+Index: qtopia-core-opensource-src-4.3.3/mkspecs/features/uitools.prf
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/mkspecs/features/uitools.prf 2007-12-27 17:32:57.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/mkspecs/features/uitools.prf 2007-12-27 17:33:56.000000000 +0100
+@@ -2,10 +2,10 @@
+ qt:load(qt)
+
+ # Include the correct version of the UiLoader library
+-QTUITOOLS_LINKAGE = -lQtUiTools
++QTUITOOLS_LINKAGE = -lQtUiTools$${QT_LIBINFIX}
+ CONFIG(debug, debug|release) {
+- mac: QTUITOOLS_LINKAGE = -lQtUiTools_debug
+- win32: QTUITOOLS_LINKAGE = -lQtUiToolsd
++ mac: QTUITOOLS_LINKAGE = -lQtUiTools$${QT_LIBINFIX}_debug
++ win32: QTUITOOLS_LINKAGE = -lQtUiTools$${QT_LIBINFIX}d
+ }
+ LIBS += $$QTUITOOLS_LINKAGE
+
diff --git a/packages/qt4/qt4-x11-free-4.1.2/.mtn2git_empty b/packages/qt4/qt4-x11-free-4.1.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt4/qt4-x11-free-4.1.2/.mtn2git_empty
diff --git a/packages/qt/qt4-x11-free-4.1.2/configurable-cpu-extensions.patch b/packages/qt4/qt4-x11-free-4.1.2/configurable-cpu-extensions.patch
index ab943db1ff..ab943db1ff 100644
--- a/packages/qt/qt4-x11-free-4.1.2/configurable-cpu-extensions.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/configurable-cpu-extensions.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/cross-compile.patch b/packages/qt4/qt4-x11-free-4.1.2/cross-compile.patch
index 7c8665c9c1..7c8665c9c1 100644
--- a/packages/qt/qt4-x11-free-4.1.2/cross-compile.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/cross-compile.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch b/packages/qt4/qt4-x11-free-4.1.2/fix-asm-constraints.patch
index 93fc52d055..93fc52d055 100644
--- a/packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/fix-asm-constraints.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/fix-mkspecs.patch b/packages/qt4/qt4-x11-free-4.1.2/fix-mkspecs.patch
index e927df9c7d..e927df9c7d 100644
--- a/packages/qt/qt4-x11-free-4.1.2/fix-mkspecs.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/fix-mkspecs.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/fix-resinit-declaration.patch b/packages/qt4/qt4-x11-free-4.1.2/fix-resinit-declaration.patch
index fcd5de6f97..fcd5de6f97 100644
--- a/packages/qt/qt4-x11-free-4.1.2/fix-resinit-declaration.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/fix-resinit-declaration.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/gcc4_1.patch b/packages/qt4/qt4-x11-free-4.1.2/gcc4_1.patch
index 392aaf4f5f..392aaf4f5f 100644
--- a/packages/qt/qt4-x11-free-4.1.2/gcc4_1.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/gcc4_1.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/no-qmake.patch b/packages/qt4/qt4-x11-free-4.1.2/no-qmake.patch
index 324f44303a..324f44303a 100644
--- a/packages/qt/qt4-x11-free-4.1.2/no-qmake.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/no-qmake.patch
diff --git a/packages/qt/qt4-x11-free-4.1.2/no-tools.patch b/packages/qt4/qt4-x11-free-4.1.2/no-tools.patch
index 2bda49c9c5..2bda49c9c5 100644
--- a/packages/qt/qt4-x11-free-4.1.2/no-tools.patch
+++ b/packages/qt4/qt4-x11-free-4.1.2/no-tools.patch
diff --git a/packages/qt4/qt4-x11-free-4.3.3/.mtn2git_empty b/packages/qt4/qt4-x11-free-4.3.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt4/qt4-x11-free-4.3.3/.mtn2git_empty
diff --git a/packages/qt/qt4-x11-free-4.3.2/0002-fix-resinit-declaration.patch b/packages/qt4/qt4-x11-free-4.3.3/0002-fix-resinit-declaration.patch
index e479a64a2b..e479a64a2b 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0002-fix-resinit-declaration.patch
+++ b/packages/qt4/qt4-x11-free-4.3.3/0002-fix-resinit-declaration.patch
diff --git a/packages/qt/qt4-x11-free-4.3.2/0004-no-qmake.patch b/packages/qt4/qt4-x11-free-4.3.3/0004-no-qmake.patch
index 359f6df9d5..359f6df9d5 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0004-no-qmake.patch
+++ b/packages/qt4/qt4-x11-free-4.3.3/0004-no-qmake.patch
diff --git a/packages/qt/qt4-x11-free-4.3.2/0006-freetype-host-includes.patch b/packages/qt4/qt4-x11-free-4.3.3/0006-freetype-host-includes.patch
index cc8e115fee..cc8e115fee 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0006-freetype-host-includes.patch
+++ b/packages/qt4/qt4-x11-free-4.3.3/0006-freetype-host-includes.patch
diff --git a/packages/qt/qt4-x11-free-4.3.2/0007-openssl-host-includes.patch b/packages/qt4/qt4-x11-free-4.3.3/0007-openssl-host-includes.patch
index 35b71d9694..35b71d9694 100644
--- a/packages/qt/qt4-x11-free-4.3.2/0007-openssl-host-includes.patch
+++ b/packages/qt4/qt4-x11-free-4.3.3/0007-openssl-host-includes.patch
diff --git a/packages/qt4/qt4-x11-free.inc b/packages/qt4/qt4-x11-free.inc
new file mode 100644
index 0000000000..1647b07fd3
--- /dev/null
+++ b/packages/qt4/qt4-x11-free.inc
@@ -0,0 +1,27 @@
+DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is the X11 version."
+SECTION = "x11/libs"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.trolltech.com"
+LICENSE = "GPL QPL"
+DEPENDS += "virtual/libx11 fontconfig xft libxext libxrender libxrandr libxcursor"
+PROVIDES = "qt4x11"
+PR = "r7"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \
+ file://0001-cross-compile.patch;patch=1 \
+ file://0003-no-tools.patch;patch=1 \
+ file://0004-no-qmake.patch;patch=1 \
+ file://0005-fix-mkspecs.patch;patch=1"
+S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
+
+
+QT_CONFIG_FLAGS += "-no-xinerama -no-tablet -no-xkb -no-opengl"
+QT_BASE_NAME = "qt4"
+QT_BASE_LIB = "libqt"
+QT_DIR_NAME = "qt4"
+require qt_depends.inc
+require qt_configuration.inc
+require qt_packaging.inc
+require qt_staging.inc
+
+inherit qt4x11
diff --git a/packages/qt/qt4-x11-free_4.1.2.bb b/packages/qt4/qt4-x11-free_4.1.2.bb
index 77fa6dba12..77fa6dba12 100644
--- a/packages/qt/qt4-x11-free_4.1.2.bb
+++ b/packages/qt4/qt4-x11-free_4.1.2.bb
diff --git a/packages/qt4/qt4-x11-free_4.3.3.bb b/packages/qt4/qt4-x11-free_4.3.3.bb
new file mode 100644
index 0000000000..7d30503c07
--- /dev/null
+++ b/packages/qt4/qt4-x11-free_4.3.3.bb
@@ -0,0 +1,5 @@
+require qt4-x11-free.inc
+SRC_URI += " \
+ file://0002-fix-resinit-declaration.patch;patch=1 \
+ file://0006-freetype-host-includes.patch;patch=1 \
+ file://0007-openssl-host-includes.patch;patch=1 "
diff --git a/packages/qt4/qt4_arch.inc b/packages/qt4/qt4_arch.inc
new file mode 100644
index 0000000000..60ede1db2b
--- /dev/null
+++ b/packages/qt4/qt4_arch.inc
@@ -0,0 +1,23 @@
+inherit siteinfo
+
+def qt_arch(d):
+ import bb, re
+ arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if re.match("^i.86$", arch):
+ arch = "i386"
+ elif re.match("^arm.*", arch):
+ arch = "arm"
+ elif arch == "x86_64":
+ arch = "x86"
+ elif arch == "mipsel":
+ arch = "mips"
+ return arch
+
+def qt_endian(d):
+ import bb
+ if bb.data.getVar('SITEINFO_ENDIANESS', d, True) == "le":
+ return "-little-endian"
+ elif bb.data.getVar('SITEINFO_ENDIANESS', d, True) == "be":
+ return "-big-endian"
+ else:
+ assert False
diff --git a/packages/qt4/qt_configuration.inc b/packages/qt4/qt_configuration.inc
new file mode 100644
index 0000000000..252a80a408
--- /dev/null
+++ b/packages/qt4/qt_configuration.inc
@@ -0,0 +1,82 @@
+require qt4_arch.inc
+QT_ARCH := "${@qt_arch(d)}"
+QT_ENDIAN = "${@qt_endian(d)}"
+
+QT_CONFIG_FLAGS += "-release -no-cups -no-accessibility -reduce-relocations \
+ -shared -no-nas-sound -no-sm -no-nis \
+ -qt-gif -system-libjpeg -system-libpng -system-zlib \
+ -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
+ -no-pch -qdbus -stl -glib"
+
+EXTRA_OEMAKE = "-e"
+
+EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after \
+ INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \
+ QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \
+ AR="${TARGET_PREFIX}ar cqs" \
+ MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"'
+
+export QT_CONF_PATH="${WORKDIR}/qt.conf"
+
+do_configure() {
+ unset QMAKESPEC
+ unset QTDIR
+ ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
+ ln -s linux-g++ mkspecs/${TARGET_OS}-oe-g++
+
+ echo "[Paths]" > $QT_CONF_PATH
+ echo "Prefix=${prefix}" >> $QT_CONF_PATH
+ echo "Documentation=${docdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Headers=${includedir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Libraries=${libdir}" >> $QT_CONF_PATH
+ echo "Binaries=${bindir}" >> $QT_CONF_PATH
+ echo "Plugins=${libdir}/${QT_DIR_NAME}/plugins" >> $QT_CONF_PATH
+ echo "Data=${datadir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Translations=${datadir}/${QT_DIR_NAME}/translations" >> $QT_CONF_PATH
+ echo "Settings=${sysconfdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH
+ echo "Examples=${bindir}/${QT_DIR_NAME}/examples" >> $QT_CONF_PATH
+ echo "Demos=${bindir}/${QT_DIR_NAME}/demos" >> $QT_CONF_PATH
+
+ echo yes | ./configure -v \
+ -prefix ${prefix} \
+ -bindir ${bindir} \
+ -libdir ${libdir} \
+ -datadir ${datadir}/${QT_DIR_NAME} \
+ -sysconfdir ${sysconfdir}/${QT_DIR_NAME} \
+ -docdir ${docdir}/${QT_DIR_NAME} \
+ -headerdir ${includedir}/${QT_DIR_NAME} \
+ -plugindir ${libdir}/${QT_DIR_NAME}/plugins \
+ -translationdir ${datadir}/${QT_DIR_NAME}/translations \
+ -examplesdir ${bindir}/${QT_DIR_NAME}/examples \
+ -demosdir ${bindir}/${QT_DIR_NAME}/demos \
+ -platform ${TARGET_OS}-oe-g++ \
+ -xplatform ${TARGET_OS}-oe-g++ \
+ -embedded ${QT_ARCH} ${QT_ENDIAN} -fast \
+ -crossarch ${QT_ARCH} \
+ ${QT_CONFIG_FLAGS} -fast \
+ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} \
+ -I${STAGING_INCDIR}/freetype2
+}
+
+do_compile() {
+ unset CFLAGS CXXFLAGS
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/rcc4 ${S}/bin/rcc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/moc4 ${S}/bin/moc
+ install -m 0755 ${STAGING_BINDIR_NATIVE}/uic4 ${S}/bin/uic
+
+ oe_runmake ${EXTRA_ENV}
+}
+
+#
+# Fixup some pkgconfig files
+# moc_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/moc
+# uic_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/uic
+#
+# Libs: -L${libdir} -lQtNetwork -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib $(LIBS_EXTRA) -lQtCore -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib -lm -lrt -lpthread -ldl
+#
+do_compile_append() {
+ cd ${S}/lib/pkgconfig
+ sed -i s#"-L${S}/lib"##g *.pc
+ sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# *.pc
+ sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# *.pc
+}
diff --git a/packages/qt4/qt_depends.inc b/packages/qt4/qt_depends.inc
new file mode 100644
index 0000000000..289b625d0e
--- /dev/null
+++ b/packages/qt4/qt_depends.inc
@@ -0,0 +1,3 @@
+inherit pkgconfig qmake_base
+
+DEPENDS += " uicmoc4-native qmake2-native freetype jpeg libpng zlib dbus openssl glib-2.0"
diff --git a/packages/qt4/qt_packaging.inc b/packages/qt4/qt_packaging.inc
new file mode 100644
index 0000000000..e610245c05
--- /dev/null
+++ b/packages/qt4/qt_packaging.inc
@@ -0,0 +1,153 @@
+NONDEV_PACKAGES = "${QT_BASE_LIB}core4 ${QT_BASE_LIB}gui4 ${QT_BASE_LIB}network4 \
+ ${QT_BASE_LIB}sql4 ${QT_BASE_LIB}svg4 ${QT_BASE_LIB}test4 ${QT_BASE_LIB}xml4 \
+ ${QT_BASE_LIB}designer4 ${QT_BASE_LIB}designercomponents4 \
+ ${QT_BASE_LIB}3support4 ${QT_BASE_LIB}assistantclient4 ${QT_BASE_LIB}script4 \
+ ${QT_BASE_LIB}dbus4 ${QT_BASE_LIB}opengl4 \
+ ${QT_BASE_NAME}-assistant ${QT_BASE_NAME}-common \
+ ${QT_BASE_NAME}-designer \
+ ${QT_BASE_NAME}-demos ${QT_BASE_NAME}-examples \
+ ${QT_BASE_NAME}-linguist \
+ ${QT_BASE_NAME}-pixeltool ${QT_BASE_NAME}-dbus \
+ ${QT_BASE_NAME}-plugins-accessible \
+ ${QT_BASE_NAME}-plugins-codecs \
+ ${QT_BASE_NAME}-plugins-designer \
+ ${QT_BASE_NAME}-plugins-imageformats \
+ ${QT_BASE_NAME}-plugins-sqldrivers \
+ ${QT_BASE_NAME}-plugins-inputmethods \
+ ${QT_BASE_NAME}-plugins-iconengines \
+ ${QT_BASE_NAME}-fonts "
+
+DEV_PACKAGES += "${QT_BASE_LIB}core4-dev \
+ ${QT_BASE_LIB}gui4-dev \
+ ${QT_BASE_LIB}network4-dev \
+ ${QT_BASE_LIB}sql4-dev \
+ ${QT_BASE_LIB}svg4-dev \
+ ${QT_BASE_LIB}test4-dev \
+ ${QT_BASE_LIB}xml4-dev \
+ ${QT_BASE_LIB}designer4-dev \
+ ${QT_BASE_LIB}designercomponents4-dev \
+ ${QT_BASE_LIB}3support4-dev \
+ ${QT_BASE_LIB}assistantclient4-dev \
+ ${QT_BASE_LIB}script4-dev \
+ ${QT_BASE_LIB}dbus4-dev \
+ ${QT_BASE_LIB}opengl4-dev \
+ ${QT_BASE_LIB}uitools4-dev"
+
+DBG_PACKAGES += "${QT_BASE_LIB}core4-dbg \
+ ${QT_BASE_LIB}gui4-dbg \
+ ${QT_BASE_LIB}network4-dbg \
+ ${QT_BASE_LIB}sql4-dbg \
+ ${QT_BASE_LIB}svg4-dbg \
+ ${QT_BASE_LIB}test4-dbg \
+ ${QT_BASE_LIB}xml4-dbg \
+ ${QT_BASE_LIB}designer4-dbg \
+ ${QT_BASE_LIB}designercomponents4-dbg \
+ ${QT_BASE_LIB}3support4-dbg \
+ ${QT_BASE_LIB}assistantclient4-dbg \
+ ${QT_BASE_LIB}script4-dbg \
+ ${QT_BASE_LIB}dbus4-dbg \
+ ${QT_BASE_LIB}opengl4-dbg "
+
+
+PACKAGES += "${DEV_PACKAGES} ${NONDEV_PACKAGES} ${DBG_PACKAGES}"
+
+ALLOW_EMPTY_${PN} = "1"
+FILES_${PN} = ""
+FILES_${PN}-dev = " ${includedir}/${QT_DIR_NAME}/Qt/*"
+FILES_${PN}-dbg = "${bindir}/*/.debug ${libdir}/${QT_DIR_NAME}/plugins/*/.debug/*.so"
+RDEPENDS_${PN} = "${NONDEV_PACKAGES}"
+RDEPENDS_${PN}-dev = "${DEV_PACKAGES}"
+RDEPENDS_${PN}-dbg = "${DBG_PACKAGES}"
+
+def qt_default_dev(name):
+ return """${libdir}/libQt%(name)s${QT_LIBINFIX}.la
+ ${libdir}/libQt%(name)s${QT_LIBINFIX}.prl
+ ${libdir}/libQt%(name)s${QT_LIBINFIX}.so
+ ${includedir}/${QT_DIR_NAME}/Qt%(name)s*
+ ${libdir}/pkgconfig/Qt%(name)s${QT_LIBINFIX}.pc""" % locals()
+
+
+FILES_${QT_BASE_LIB}core4 = "${libdir}/libQtCore${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}core4-dev = "${@qt_default_dev('Core')}"
+FILES_${QT_BASE_LIB}core4-dbg = "${libdir}/.debug/libQtCore*"
+FILES_${QT_BASE_LIB}gui4 = "${libdir}/libQtGui${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}gui4-dev = "${@qt_default_dev('Gui')}"
+FILES_${QT_BASE_LIB}gui4-dbg = "${libdir}/.debug/libQtGui*"
+FILES_${QT_BASE_LIB}network4 = "${libdir}/libQtNetwork${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}network4-dev = "${@qt_default_dev('Network')}"
+FILES_${QT_BASE_LIB}network4-dbg = "${libdir}/.debug/libQtNetwork${QT_LIBINFIX}*"
+FILES_${QT_BASE_LIB}sql4 = "${libdir}/libQtSql${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}sql4-dev = "${@qt_default_dev('Sql')}"
+FILES_${QT_BASE_LIB}sql4-dbg = "${libdir}/.debug/libQtSql*"
+FILES_${QT_BASE_LIB}svg4 = "${libdir}/libQtSvg${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}svg4-dev = "${@qt_default_dev('Svg')}"
+FILES_${QT_BASE_LIB}svg4-dbg = "${libdir}/.debug/libQtSvg*"
+FILES_${QT_BASE_LIB}test4 = "${libdir}/libQtTest${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}test4-dev = "${@qt_default_dev('Test')}"
+FILES_${QT_BASE_LIB}test4-dbg = "${libdir}/.debug/libQtTest*"
+FILES_${QT_BASE_LIB}xml4 = "${libdir}/libQtXml${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}xml4-dev = "${@qt_default_dev('Xml')}"
+FILES_${QT_BASE_LIB}xml4-dbg = "${libdir}/.debug/libQtXml*"
+FILES_${QT_BASE_LIB}designer4 = "${libdir}/libQtDesigner${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}designer4-dev = "${@qt_default_dev('Designer')}"
+FILES_${QT_BASE_LIB}designer4-dbg = "${libdir}/.debug/libQtDesigner*"
+FILES_${QT_BASE_LIB}designercomponents4 = "${libdir}/libQtDesignerComponents${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}designercomponents4-dev = "${@qt_default_dev('DesignerComponents')}"
+FILES_${QT_BASE_LIB}designercomponents4-dbg = "${libdir}/.debug/libQtDesignerComponents*"
+FILES_${QT_BASE_LIB}3support4 = "${libdir}/libQt3Support${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}3support4-dev = "${@qt_default_dev('3Support')}"
+FILES_${QT_BASE_LIB}3support4-dbg = "${libdir}/.debug/libQt3Support*"
+FILES_${QT_BASE_LIB}assistantclient4 = "${libdir}/libQtAssistantClient${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}assistantclient4-dev = "${@qt_default_dev('AssistantClient')} ${includedir}/${QT_DIR_NAME}/QtAssistant*"
+FILES_${QT_BASE_LIB}assistantclient4-dbg = "${libdir}/.debug/libQtAssistantClient*"
+FILES_${QT_BASE_LIB}script4 = "${libdir}/libQtScript${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}script4-dev = "${@qt_default_dev('Script')}"
+FILES_${QT_BASE_LIB}script4-dbg = "${libdir}/.debug/libQtScript*"
+FILES_${QT_BASE_LIB}dbus4 = "${libdir}/libQtDBus${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}dbus4-dev = "${@qt_default_dev('DBus')}"
+FILES_${QT_BASE_LIB}dbus4-dbg = "${libdir}/.debug/libQtDBus*"
+FILES_${QT_BASE_LIB}opengl4 = "${libdir}/libQtOpenGL${QT_LIBINFIX}.so.*"
+FILES_${QT_BASE_LIB}opengl4-dev = "${@qt_default_dev('OpenGL')}"
+FILES_${QT_BASE_LIB}opengl4-dbg = "${libdir}/.debug/libQtOpenGL*"
+FILES_${QT_BASE_LIB}uitools4-dev = "${libdir}/libQtUiTools* ${includedir}/${QT_DIR_NAME}/QtUiTools* ${libdir}/pkgconfig/QtUiTools${QT_LIBINFIX}.pc"
+
+
+FILES_${QT_BASE_NAME}-plugins-accessible = "${libdir}/${QT_DIR_NAME}/plugins/accessible/*.so"
+FILES_${QT_BASE_NAME}-plugins-codecs = "${libdir}/${QT_DIR_NAME}/plugins/codecs/*.so"
+FILES_${QT_BASE_NAME}-plugins-designer = "${libdir}/${QT_DIR_NAME}/plugins/designer/*.so"
+FILES_${QT_BASE_NAME}-plugins-imageformats = "${libdir}/${QT_DIR_NAME}/plugins/imageformats/*.so"
+FILES_${QT_BASE_NAME}-plugins-sqldrivers = "${libdir}/${QT_DIR_NAME}/plugins/sqldrivers/*.so"
+FILES_${QT_BASE_NAME}-plugins-inputmethods = "${libdir}/${QT_DIR_NAME}/plugins/inputmethods/*.so"
+FILES_${QT_BASE_NAME}-plugins-iconengines = "${libdir}/${QT_DIR_NAME}/plugins/iconengines/*.so"
+
+FILES_${QT_BASE_NAME}-assistant = "${bindir}/*assistant*"
+FILES_${QT_BASE_NAME}-designer = "${bindir}/*designer*"
+FILES_${QT_BASE_NAME}-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/qm2ts"
+FILES_${QT_BASE_NAME}-pixeltool = "${bindir}/pixeltool"
+FILES_${QT_BASE_NAME}-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer"
+
+FILES_${QT_BASE_NAME}-common = "${bindir}/qtconfig"
+FILES_${QT_BASE_NAME}-examples = "${bindir}/${QT_DIR_NAME}/examples/*"
+FILES_${QT_BASE_NAME}-demos = "${bindir}/qtdemo ${bindir}/${QT_DIR_NAME}/demos/*"
+
+FILES_${QT_BASE_NAME}-fonts = "${libdir}/fonts"
+
+python populate_packages_prepend() {
+ translationdir = bb.data.expand('${datadir}/${QT_DIR_NAME}/translations/', d)
+ do_split_packages(d, translationdir, '^qt_(.*)\.qm$', '${QT_DIR_NAME}-translation-%s', '{PN} translation for %s', extra_depends='' )
+}
+
+
+do_install() {
+ oe_runmake install INSTALL_ROOT=${D}
+
+ # These are host binaries, we should only use them in staging
+ rm -rf ${D}/${bindir}/qmake
+
+ # XXX, FIXME, TODO: package the demos and examples properly
+ rm -rf ${D}/${bindir}/${QT_DIR_NAME}
+ rm -rf ${D}/${datadir}/${QT_DIR_NAME}/mkspecs
+
+ install -d ${D}/${libdir}/fonts
+ touch ${D}/${libdir}/fonts/fontdir
+}
diff --git a/packages/qt4/qt_staging.inc b/packages/qt4/qt_staging.inc
new file mode 100644
index 0000000000..ddc28720a3
--- /dev/null
+++ b/packages/qt4/qt_staging.inc
@@ -0,0 +1,36 @@
+# Fixing up some Qt .pc files
+do_stage_append() {
+ cd ${STAGING_LIBDIR}/pkgconfig
+ sed -i s#"-L${S}/lib"##g Qt*.pc
+ sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# Qt*.pc
+ sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# Qt*.pc
+}
+
+STAGE_TEMP = "${WORKDIR}/temp-staging"
+do_stage() {
+ rm -rf ${STAGE_TEMP}
+ mkdir -p ${STAGE_TEMP}
+ oe_runmake install INSTALL_ROOT=${STAGE_TEMP}
+
+ install -d ${STAGING_INCDIR}/
+ install -d ${STAGING_LIBDIR}/${QT_DIR_NAME}
+ cp -pPRf ${STAGE_TEMP}/$includedir/* ${STAGING_INCDIR}/
+
+ for i in ${STAGE_TEMP}/${libdir}/*.la
+ do
+ sed -i s,installed=yes,installed=no, $i
+ cp -fpPR $i ${STAGING_LIBDIR}/${QT_DIR_NAME}/
+ cp -fpPR ${STAGE_TEMP}/${libdir}/$(basename $i .la).prl ${STAGING_LIBDIR}/${QT_DIR_NAME}
+ oe_libinstall -C ${STAGE_TEMP}/${libdir} -so $(basename $i .la) ${STAGING_LIBDIR}/${QT_DIR_NAME}
+ done
+
+ for i in libQtAssistantClient${QT_LIBINFIX} libQtDesignerComponents${QT_LIBINFIX} libQtUiTools${QT_LIBINFIX} libQtUiTools${QT_LIBINFIX} libQtDesigner${QT_LIBINFIX}
+ do
+ cp ${STAGE_TEMP}/${libdir}/$i.prl ${STAGING_LIBDIR}/${QT_DIR_NAME} || true
+ cp ${STAGE_TEMP}/${libdir}/$i.la ${STAGING_LIBDIR}/${QT_DIR_NAME} || true
+ oe_libinstall -C ${STAGE_TEMP}/${libdir} -so $i ${STAGING_LIBDIR}/${QT_DIR_NAME} || true
+ oe_libinstall -C ${STAGE_TEMP}/${libdir} -a $i ${STAGING_LIBDIR}/${QT_DIR_NAME} || true
+ done
+
+ rm -rf ${STAGE_TEMP}
+}
diff --git a/packages/qt4/qtopia-core-4.3.3/.mtn2git_empty b/packages/qt4/qtopia-core-4.3.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt4/qtopia-core-4.3.3/.mtn2git_empty
diff --git a/packages/qt4/qtopia-core-4.3.3/0006-freetype-host-includes.patch b/packages/qt4/qtopia-core-4.3.3/0006-freetype-host-includes.patch
new file mode 100644
index 0000000000..cc8e115fee
--- /dev/null
+++ b/packages/qt4/qtopia-core-4.3.3/0006-freetype-host-includes.patch
@@ -0,0 +1,23 @@
+From c9ab62bd9a56643574b3ae6e59e0ca776d4860d2 Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Mon, 4 Jun 2007 14:48:50 +0200
+Subject: [PATCH] freetype host includes
+
+---
+ config.tests/unix/freetype/freetype.pri | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/config.tests/unix/freetype/freetype.pri b/config.tests/unix/freetype/freetype.pri
+index 84974bf..ab9a6f2 100644
+--- a/config.tests/unix/freetype/freetype.pri
++++ b/config.tests/unix/freetype/freetype.pri
+@@ -1,5 +1,5 @@
+ !cross_compile {
+- TRY_INCLUDEPATHS = /include /usr/include $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
++ TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
+ p = $$join(p, "", "", "/freetype2")
+ exists($$p):INCLUDEPATH *= $$p
+--
+1.5.0.7
+
diff --git a/packages/qt4/qtopia-core-4.3.3/0007-openssl-host-includes.patch b/packages/qt4/qtopia-core-4.3.3/0007-openssl-host-includes.patch
new file mode 100644
index 0000000000..35b71d9694
--- /dev/null
+++ b/packages/qt4/qtopia-core-4.3.3/0007-openssl-host-includes.patch
@@ -0,0 +1,23 @@
+From d45943adb443ad4b85ca4504952dee743c675e1e Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Mon, 4 Jun 2007 14:58:34 +0200
+Subject: [PATCH] openssl host includes
+
+---
+ config.tests/unix/openssl/openssl.pri | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/config.tests/unix/openssl/openssl.pri b/config.tests/unix/openssl/openssl.pri
+index 756e5fe..19b4061 100644
+--- a/config.tests/unix/openssl/openssl.pri
++++ b/config.tests/unix/openssl/openssl.pri
+@@ -1,5 +1,5 @@
+ !cross_compile {
+- TRY_INCLUDEPATHS = /include /usr/include /usr/local/include $$QMAKE_INCDIR $$INCLUDEPATH
++ TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
+ pp = $$join(p, "", "", "/openssl")
+ exists($$pp):INCLUDEPATH *= $$p
+--
+1.5.0.7
+
diff --git a/packages/qt4/qtopia-core.inc b/packages/qt4/qtopia-core.inc
new file mode 100644
index 0000000000..05727b7c90
--- /dev/null
+++ b/packages/qt4/qtopia-core.inc
@@ -0,0 +1,30 @@
+SUMMARY = "Qt is a versatile cross-platform application framework -- this is the QtopiaCore/Embedded version."
+SECTION = "libs"
+LICENSE = "GPL"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.trolltech.com"
+DEPENDS += "tslib"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz \
+ file://0001-cross-compile.patch;patch=1 \
+ file://0003-no-tools.patch;patch=1 \
+ file://0004-no-qmake.patch;patch=1 \
+ file://0005-fix-mkspecs.patch;patch=1 \
+ file://build-tools.patch;patch=1"
+S = "${WORKDIR}/qtopia-core-opensource-src-${PV}"
+
+
+QT_CONFIG_FLAGS += " \
+ -nomake demos -nomake examples -nomake tools -qtlibinfix E\
+ -qt-mouse-tslib -qt-gfx-transformed -embedded ${QT_ARCH}"
+QT_BASE_NAME = "qtopiacore"
+QT_BASE_LIB = "libqtopiacore"
+QT_DIR_NAME = "qtopia"
+QT_LIBINFIX="E"
+require qt_depends.inc
+require qt_configuration.inc
+require qt_packaging.inc
+require qt_staging.inc
+
+inherit qtopia4core
diff --git a/packages/qt4/qtopia-core/.mtn2git_empty b/packages/qt4/qtopia-core/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt4/qtopia-core/.mtn2git_empty
diff --git a/packages/qt4/qtopia-core/0004-no-qmake.patch b/packages/qt4/qtopia-core/0004-no-qmake.patch
new file mode 100644
index 0000000000..28f8d3ad9d
--- /dev/null
+++ b/packages/qt4/qtopia-core/0004-no-qmake.patch
@@ -0,0 +1,25 @@
+From f5a73ce944240de9013cc23288c115e8213add5e Mon Sep 17 00:00:00 2001
+From: Michael Krelin <hacker@klever.net>
+Date: Sat, 2 Jun 2007 16:06:59 +0200
+Subject: [PATCH] no qmake
+
+---
+ configure | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/configure b/configure
+index b3c2a52..1901e57 100755
+--- a/configure
++++ b/configure
+@@ -3517,7 +3517,7 @@ END {
+ }
+
+ # build qmake
+-if true; then ###[ '!' -f "$outpath/bin/qmake" ];
++if false; then ###[ '!' -f "$outpath/bin/qmake" ];
+ echo "Creating qmake. Please wait..."
+
+ OLD_QCONFIG_H=
+--
+1.5.0.7
+
diff --git a/packages/qt4/qtopia-core/build-tools.patch b/packages/qt4/qtopia-core/build-tools.patch
new file mode 100644
index 0000000000..54ad666374
--- /dev/null
+++ b/packages/qt4/qtopia-core/build-tools.patch
@@ -0,0 +1,28 @@
+Do not disable tools, examples and demos for the QWS build. Use brute-force
+to do this.
+
+Index: qtopia-core-opensource-src-4.3.3/configure
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/configure 2007-12-27 16:30:36.000000000 +0100
++++ qtopia-core-opensource-src-4.3.3/configure 2007-12-27 16:30:52.000000000 +0100
+@@ -2265,13 +2265,13 @@
+ CFG_BUILD_PARTS="$QT_DEFAULT_BUILD_PARTS"
+
+ # don't build tools by default when cross-compiling
+- if [ "$PLATFORM" != "$XPLATFORM" ]; then
+- CFG_BUILD_PARTS=`echo "$CFG_BUILD_PARTS" | sed "s, tools,,g"`
+- fi
+-fi
+-for nobuild in $CFG_NOBUILD_PARTS; do
+- CFG_BUILD_PARTS=`echo "$CFG_BUILD_PARTS" | sed "s, $nobuild,,g"`
+-done
++ #if [ "$PLATFORM" != "$XPLATFORM" ]; then
++ # CFG_BUILD_PARTS=`echo "$CFG_BUILD_PARTS" | sed "s, tools,,g"`
++ #fi
++fi
++#for nobuild in $CFG_NOBUILD_PARTS; do
++# CFG_BUILD_PARTS=`echo "$CFG_BUILD_PARTS" | sed "s, $nobuild,,g"`
++#done
+ if echo $CFG_BUILD_PARTS | grep -v libs >/dev/null 2>&1; then
+ # echo
+ # echo "WARNING: libs is a required part of the build."
diff --git a/packages/qte/qtopia-core/linux-oe-qmake.conf b/packages/qt4/qtopia-core/linux-oe-qmake.conf
index fc5ac6dc5c..fc5ac6dc5c 100644
--- a/packages/qte/qtopia-core/linux-oe-qmake.conf
+++ b/packages/qt4/qtopia-core/linux-oe-qmake.conf
diff --git a/packages/qt4/qtopia-core_4.2.0.bb b/packages/qt4/qtopia-core_4.2.0.bb
new file mode 100644
index 0000000000..bd54419686
--- /dev/null
+++ b/packages/qt4/qtopia-core_4.2.0.bb
@@ -0,0 +1 @@
+require ${PN}.inc
diff --git a/packages/qt4/qtopia-core_4.3.3.bb b/packages/qt4/qtopia-core_4.3.3.bb
new file mode 100644
index 0000000000..9dad97f49a
--- /dev/null
+++ b/packages/qt4/qtopia-core_4.3.3.bb
@@ -0,0 +1,5 @@
+require qtopia-core.inc
+SRC_URI += " \
+ file://0006-freetype-host-includes.patch;patch=1 \
+ file://0007-openssl-host-includes.patch;patch=1 \
+ file://0008-backport-qt-lib-infix.patch;patch=1"
diff --git a/packages/qte/qtopia-core_4.2.0.bb b/packages/qte/qtopia-core_4.2.0.bb
deleted file mode 100644
index ab07ecf35d..0000000000
--- a/packages/qte/qtopia-core_4.2.0.bb
+++ /dev/null
@@ -1,218 +0,0 @@
-DESCRIPTION = "Qtopia Core (aka: Qt/Embedded)"
-SECTION = "libs"
-LICENSE = "GPL"
-PRIORITY = "optional"
-HOMEPAGE = "http://www.trolltech.com"
-DEPENDS = "glib-2.0 freetype dbus-glib tslib"
-
-PR = "r2"
-
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz \
- file://linux-oe-qmake.conf"
-
-S = "${WORKDIR}/qtopia-core-opensource-src-${PV}"
-
-inherit pkgconfig
-
-# I'm not sure about the globals QTDIR and QTOPIADIR, or if they're even
-# needed. On the same issue, I'm not sure what the best place for all the
-# Qtopia Core related files is. For now, I've just put the libraries in
-# ${libdir}, the includes in ${includedir} etc. Other possibilities are
-# to sandbox everything (e.g., in /usr/local/Trolltech or /opt/Qtopia oslt),
-# or to put libraries in /usr/lib/qtopia (or /usr/lib/qt4) etc. As said,
-# I'm fine with this, but I'm also fine with another solution.
-
-# set QTDIR and QTOPIADIR globally (change QTOPIA dir to QTDIR?)
-# This should be the default for other packages:
-# export QTDIR = "${STAGING_DIR}/${HOST_SYS}/qt4"
-# export QTOPIADIR = "${STAGING_DIR}/${HOST_SYS}/qtopia"
-export QTDIR = "${S}"
-export QTOPIADIR = "${S}"
-
-# Qmake gets confused by environment variables, as it builds both HOST
-# and TARGET objects. The correct compiler settings come from the mkspec
-# and are set with the OE_QMAKE_ variables
-PARALLEL_MAKE = ""
-EXTRA_OEMAKE = " MAKEFLAGS= "
-
-# This stuff could also be done by inheriting qmake, but I didn't want to
-# bother with the qmake separation from the Qtopia configure. This separation
-# is probably nothing more than a patch on the configure and setting some
-# environment variables to use our own qmake/moc/uic, but that's something
-# to figure out later.
-export OE_QMAKE_CC="${CC}"
-export OE_QMAKE_CFLAGS="${CFLAGS}"
-export OE_QMAKE_CXX="${CXX}"
-export OE_QMAKE_CXXFLAGS="-fno-exceptions ${CXXFLAGS}"
-export OE_QMAKE_LDFLAGS="${LDFLAGS}"
-export OE_QMAKE_LINK="${CXX}"
-export OE_QMAKE_AR="${AR}"
-export OE_QMAKE_RANLIB="${RANLIB}"
-export OE_QMAKE_STRIP="echo"
-export OE_QMAKE_RPATH="-Wl,-rpath-link,"
-export OE_QMAKE_INCDIR_QT="${QTDIR}/include"
-export OE_QMAKE_LIBDIR_QT="${QTDIR}/lib"
-export OE_QMAKE_INCDIR_QTOPIA="${QTOPIADIR}/include"
-export OE_QMAKE_LIBDIR_QTOPIA="${QTOPIADIR}/lib"
-
-require qte-functions.inc
-QT_ARCH := "${@qte_arch(d)}"
-
-# FIXME use info.bbclass once it has been commited
-QT_ENDIAN = "-little-endian"
-
-# We don't build the examples and demos atm. They're quite big and not used
-# frequently, only for testing maybe. Feel free to change and to package
-# them separately.
-QT_CONFIG_FLAGS = "-release \
- -no-cups -no-accessibility \
- -nomake demos -nomake examples -nomake tools \
- -qt-mouse-tslib"
-
-do_configure() {
- # Install the OE build templates (something which might be done
- # by inheriting qmake)
- for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
- do
- install -d ${S}/mkspecs/$template
- install -m 0644 ${WORKDIR}/linux-oe-qmake.conf \
- ${S}/mkspecs/$template/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h \
- ${S}/mkspecs/$template/qplatformdefs.h
- done
-
- # The Qmake Makefile generation doesn't like these environment
- # variables, as they mess up the HOST tools builds
- unset CC
- unset CXX
- unset CFLAGS
- unset CXXFLAGS
- unset LDFLAGS
-
- # For rationale behind the installation locations, see remark above
- echo yes | ./configure -v \
- -prefix ${prefix} \
- -bindir ${bindir} \
- -libdir ${libdir} \
- -docdir ${docdir}/qtopia \
- -headerdir ${includedir} \
- -plugindir ${datadir}/qtopia/plugins \
- -datadir ${datadir} \
- -translationdir ${datadir}/qtopia/translations \
- -sysconfdir ${sysconfdir} \
- -examplesdir ${bindir}/qtopia/examples \
- -demosdir ${bindir}/qtopia/demos \
- -embedded ${QT_ARCH} ${QT_ENDIAN} -fast \
- -xplatform linux-oe-g++ \
- ${QT_CONFIG_FLAGS} \
- -L${STAGING_LIBDIR} -I${STAGING_INCDIR}
-}
-
-do_install() {
- oe_runmake install INSTALL_ROOT=${D}
-
- # These are host binaries, we should only use them in staging
- rm -rf ${D}/${bindir}
- rm -rf ${D}/${datadir}/mkspecs
-
- touch ${D}/${libdir}/fonts/fontdir
-
- #TT is still new to pkgconfig, so fix it up
- install -d ${D}${libdir}/pkgconfig
- mv ${D}/${libdir}/*.pc ${D}${libdir}/pkgconfig/
-}
-
-# We might want to package all the libraries separately, so you can really
-# fine-tune what to install. This is e.g. done in qt4-x11-free_4.1.2.bb.
-# What should these packages be called? I'm tempted to call them the same
-# as in qt4 version, as the API is supposed to be compatible, e.g.
-# libqtcore4 and libqtgui4. This will however conflict if you have QT and
-# Qtopia, but this is something you don't want anyway, I guess.
-# Another solution is making virtual/libqtfoo4, and DEPENDing on that one
-# and let both the PACKAGES in QT and Qtopia PROVIDE these. The packages
-# themselves could then be called libqtopiafoo4.
-# I'll postpone this discussion by not making separate Qtopia packages.
-
-# Also, I don't package the plugins and translations atm, I don't use them
-# and I don't feel like thinking about a sensible separation.
-
-PACKAGES =+ " libqtcore libqtcore-dev libqtcore-dbg \
- libqtxml libqtxml-dev libqtxml-dbg \
- libqtgui libqtgui-dev libqtgui-dbg \
- libqtsql libqtsql-dev libqtsql-dbg \
- libqtnetwork libqtnetwork-dev libqtnetwork-dbg \
- libqtsvg libqtsvg-dev libqtsvg-dbg \
- libqt3support libqt3support-dev libqt3support-dbg \
- qtopia-core-plugins qtopia-core-plugins-dbg\
- "
-
-PACKAGES += " ${PN}-fonts "
-
-# The default included fonts are around 75MB and consist of a number of
-# FreeType-renderable fonts as well as QPF (Qtopia Prerendered Fonts).
-# As FreeType is generally slow on embedded platforms, and 75MB is
-# quite huge, we downsize the fonts dir in the do_install. I've decided
-# to include only the QPF (Helvetica and Fixed), amounting to 500KB. This
-# also results in tremendously faster application startup time.
-FILES_libqtcore += " ${libdir}/fonts/helvetic* ${libdir}/fonts/fixed* ${D}/${libdir}/fonts/fontdir"
-FILES_${PN}-fonts = "${libdir}/fonts"
-
-FILES_qtopia-core-plugins += "${datadir}/qtopia/plugins/*/*.so"
-FILES_qtopia-core-plugins-dbg += "${datadir}/qtopia/plugins/*/.debug/*.so"
-
-FILES_libqtcore += "${libdir}/libQtCore.so.*"
-FILES_libqtxml += "${libdir}/libQtXml.so.*"
-FILES_libqtgui += "${libdir}/libQtGui.so.*"
-FILES_libqtsql += "${libdir}/libQtSql.so.*"
-FILES_libqtnetwork += "${libdir}/libQtNetwork.so.*"
-FILES_libqtsvg += "${libdir}/libQtSvg.so.*"
-FILES_libqt3support += "${libdir}/libQt3Support.so.*"
-
-FILES_libqtcore-dev += "${libdir}/*QtCore.*"
-FILES_libqtxml-dev += "${libdir}/*QtXml.*"
-FILES_libqtgui-dev += "${libdir}/*QtGui.*"
-FILES_libqtsql-dev += "${libdir}/*QtSql.*"
-FILES_libqtnetwork-dev += "${libdir}/*QtNetwork.*"
-FILES_libqtsvg-dev += "${libdir}/*QtSvg.*"
-FILES_libqt3support-dev += "${libdir}/*Qt3Support.*"
-
-FILES_libqtcore-dbg += "${libdir}/.debug/libQtCore*"
-FILES_libqtxml-dbg += "${libdir}/.debug/libQtXml*"
-FILES_libqtgui-dbg += "${libdir}/.debug/libQtGui*"
-FILES_libqtsql-dbg += "${libdir}/.debug/libQtSql*"
-FILES_libqtnetwork-dbg += "${libdir}/.debug/libQtNetwork*"
-FILES_libqtsvg-dbg += "${libdir}/.debug/libQtSvg*"
-FILES_libqt3support-dbg += "${libdir}/.debug/libQt3Support*"
-
-
-python populate_packages_prepend() {
- translationdir = bb.data.expand('${datadir}/qtopia/translations/', d)
- do_split_packages(d, translationdir, '^qt_(.*)\.qm$', 'qtopia-translation-%s', 'Qtopia translation for %s', extra_depends='' )
-}
-
-
-
-STAGE_TEMP = "${WORKDIR}/temp-staging"
-do_stage() {
- rm -rf ${STAGE_TEMP}
- mkdir -p ${STAGE_TEMP}
- oe_runmake install INSTALL_ROOT=${STAGE_TEMP}
-
- cp -af ${STAGE_TEMP}/$includedir/* ${STAGING_INCDIR}
-
- for i in ${STAGE_TEMP}/${libdir}/*.la
- do
- oe_libinstall -C ${STAGE_TEMP}/${libdir} \
- -so $(basename $i .la) ${STAGING_LIBDIR}
- done
-
- # Install qmake/moc/uic/rcc in staging (is this needed?)
- install -m 0755 ${STAGE_TEMP}/${bindir}/rcc ${STAGING_BINDIR}
- install -m 0755 ${STAGE_TEMP}/${bindir}/moc ${STAGING_BINDIR}
- install -m 0755 ${STAGE_TEMP}/${bindir}/uic ${STAGING_BINDIR}
- install -m 0755 ${STAGE_TEMP}/${bindir}/qmake ${STAGING_BINDIR}
- # what about mkspecs?
-
- rm -rf ${STAGE_TEMP}
-}
-
diff --git a/packages/qte/qtopia-core_4.3.2.bb b/packages/qte/qtopia-core_4.3.2.bb
deleted file mode 100644
index c486ba164f..0000000000
--- a/packages/qte/qtopia-core_4.3.2.bb
+++ /dev/null
@@ -1,222 +0,0 @@
-SUMMARY = "QtopiaCore"
-SECTION = "libs"
-LICENSE = "GPL"
-PRIORITY = "optional"
-HOMEPAGE = "http://www.trolltech.com"
-DEPENDS = "freetype tslib"
-
-PR = "r0"
-
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz \
- file://linux-oe-qmake.conf"
-
-S = "${WORKDIR}/qtopia-core-opensource-src-${PV}"
-
-inherit pkgconfig
-
-# Qmake gets confused by environment variables, as it builds both HOST
-# and TARGET objects. The correct compiler settings come from the mkspec
-# and are set with the OE_QMAKE_ variables
-PARALLEL_MAKE = ""
-EXTRA_OEMAKE = " MAKEFLAGS= "
-
-# This stuff could also be done by inheriting qmake, but I didn't want to
-# bother with the qmake separation from the Qtopia configure. This separation
-# is probably nothing more than a patch on the configure and setting some
-# environment variables to use our own qmake/moc/uic, but that's something
-# to figure out later.
-export OE_QMAKE_CC="${CC}"
-export OE_QMAKE_CFLAGS="${CFLAGS}"
-export OE_QMAKE_CXX="${CXX}"
-export OE_QMAKE_CXXFLAGS="-fno-exceptions ${CXXFLAGS}"
-export OE_QMAKE_LDFLAGS="${LDFLAGS}"
-export OE_QMAKE_LINK="${CXX}"
-export OE_QMAKE_AR="${AR}"
-export OE_QMAKE_RANLIB="${RANLIB}"
-export OE_QMAKE_STRIP="echo"
-export OE_QMAKE_RPATH="-Wl,-rpath-link,"
-export OE_QMAKE_INCDIR_QT="${QTDIR}/include"
-export OE_QMAKE_LIBDIR_QT="${QTDIR}/lib"
-export OE_QMAKE_INCDIR_QTOPIA="${QTOPIADIR}/include"
-export OE_QMAKE_LIBDIR_QTOPIA="${QTOPIADIR}/lib"
-
-require qte-functions.inc
-QT_ARCH := "${@qte_arch(d)}"
-
-# FIXME use info.bbclass once it has been commited
-QT_ENDIAN = "-little-endian"
-
-# We don't build the examples and demos atm. They're quite big and not used
-# frequently, only for testing maybe. Feel free to change and to package
-# them separately.
-QT_CONFIG_FLAGS = "-release \
- -no-cups -no-accessibility \
- -nomake demos -nomake examples -nomake tools -reduce-relocations \
- -qt-mouse-tslib -qt-gfx-transformed -embedded ${QT_ARCH}"
-
-do_configure() {
- # Hack to honor our compiler flags
- sed -i s/-O2//g ${S}/mkspecs/*/qmake.conf
- sed -i s/-O2//g ${S}/mkspecs/*/*/qmake.conf
-
-
- # Install the OE build templates (something which might be done
- # by inheriting qmake)
- for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
- do
- install -d ${S}/mkspecs/$template
- install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
- done
-
- # The Qmake Makefile generation doesn't like these environment
- # variables, as they mess up the HOST tools builds
- unset CC
- unset CXX
- unset CFLAGS
- unset CXXFLAGS
- unset LDFLAGS
-
- # For rationale behind the installation locations, see remark above
- echo yes | ./configure -v \
- -prefix ${prefix} \
- -bindir ${bindir} \
- -libdir ${libdir} \
- -docdir ${docdir}/qtopia \
- -headerdir ${includedir} \
- -plugindir ${datadir}/qtopia/plugins \
- -datadir ${datadir} \
- -translationdir ${datadir}/qtopia/translations \
- -sysconfdir ${sysconfdir} \
- -examplesdir ${bindir}/qtopia/examples \
- -demosdir ${bindir}/qtopia/demos \
- -embedded ${QT_ARCH} ${QT_ENDIAN} -fast \
- -xplatform linux-oe-g++ \
- ${QT_CONFIG_FLAGS} \
- -L${STAGING_LIBDIR} -I${STAGING_INCDIR}
-}
-
-#
-# Fixup some pkgconfig files
-# moc_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/moc
-# uic_location=/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/bin/uic
-#
-# Libs: -L${libdir} -lQtNetwork -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib $(LIBS_EXTRA) -lQtCore -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/staging/arm-angstrom-linux/lib -L/home/zecke/gmit/dela_build/git/openembedded-gmit.zecke/build/oetmp/work/arm-oabi-angstrom-linux/qtopia-core-4.3.0-r2/qtopia-core-opensource-src-4.3.0/lib -lm -lrt -lpthread -ldl
-#
-do_compile_append() {
- cd ${S}/lib/pkgconfig
- sed -i s#"-L${S}/lib"##g *.pc
- sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# *.pc
- sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# *.pc
-}
-
-do_stage_append() {
- echo "Fixing up Qt"
- cd ${STAGING_LIBDIR}/pkgconfig
- sed -i s#"-L${S}/lib"##g Qt*.pc
- sed -i s#"moc_location=${S}/bin/moc"#moc_location=${STAGING_BINDIR}/moc4# Qt*.pc
- sed -i s#"uic_location=${S}/bin/uic"#uic_location=${STAGING_BINDIR}/uic4# Qt*.pc
-}
-
-do_install() {
- oe_runmake install INSTALL_ROOT=${D}
-
- # These are host binaries, we should only use them in staging
- rm -rf ${D}/${bindir}
- rm -rf ${D}/${datadir}/mkspecs
-
- touch ${D}/${libdir}/fonts/fontdir
-}
-
-# We might want to package all the libraries separately, so you can really
-# fine-tune what to install. This is e.g. done in qt4-x11-free_4.1.2.bb.
-# What should these packages be called? I'm tempted to call them the same
-# as in qt4 version, as the API is supposed to be compatible, e.g.
-# libqtcore4 and libqtgui4. This will however conflict if you have QT and
-# Qtopia, but this is something you don't want anyway, I guess.
-# Another solution is making virtual/libqtfoo4, and DEPENDing on that one
-# and let both the PACKAGES in QT and Qtopia PROVIDE these. The packages
-# themselves could then be called libqtopiafoo4.
-# I'll postpone this discussion by not making separate Qtopia packages.
-
-# Also, I don't package the plugins and translations atm, I don't use them
-# and I don't feel like thinking about a sensible separation.
-
-PACKAGES =+ " libqtcore libqtcore-dev libqtcore-dbg \
- libqtxml libqtxml-dev libqtxml-dbg \
- libqtgui libqtgui-dev libqtgui-dbg \
- libqtsql libqtsql-dev libqtsql-dbg \
- libqtnetwork libqtnetwork-dev libqtnetwork-dbg \
- libqtsvg libqtsvg-dev libqtsvg-dbg \
- libqt3support libqt3support-dev libqt3support-dbg \
- qtopia-core-plugins qtopia-core-plugins-dbg \
- libqtscript libqtscript-dev libqtscript-dbg \
- "
-
-PACKAGES += " ${PN}-fonts "
-
-# The default included fonts are around 75MB and consist of a number of
-# FreeType-renderable fonts as well as QPF (Qtopia Prerendered Fonts).
-# As FreeType is generally slow on embedded platforms, and 75MB is
-# quite huge, we downsize the fonts dir in the do_install. I've decided
-# to include only the QPF (Helvetica and Fixed), amounting to 500KB. This
-# also results in tremendously faster application startup time.
-FILES_libqtcore += " ${libdir}/fonts/helvetic* ${libdir}/fonts/fixed* ${D}/${libdir}/fonts/fontdir"
-FILES_${PN}-fonts = "${libdir}/fonts"
-
-FILES_qtopia-core-plugins += "${datadir}/qtopia/plugins/*/*.so"
-FILES_qtopia-core-plugins-dbg += "${datadir}/qtopia/plugins/*/.debug/*.so"
-
-FILES_libqtcore += "${libdir}/libQtCore.so.*"
-FILES_libqtxml += "${libdir}/libQtXml.so.*"
-FILES_libqtgui += "${libdir}/libQtGui.so.*"
-FILES_libqtsql += "${libdir}/libQtSql.so.*"
-FILES_libqtnetwork += "${libdir}/libQtNetwork.so.*"
-FILES_libqtsvg += "${libdir}/libQtSvg.so.*"
-FILES_libqt3support += "${libdir}/libQt3Support.so.*"
-FILES_libqtscript += "${libdir}/libQtScript.so.*"
-
-FILES_libqtcore-dev += "${libdir}/*QtCore.*"
-FILES_libqtxml-dev += "${libdir}/*QtXml.*"
-FILES_libqtgui-dev += "${libdir}/*QtGui.*"
-FILES_libqtsql-dev += "${libdir}/*QtSql.*"
-FILES_libqtnetwork-dev += "${libdir}/*QtNetwork.*"
-FILES_libqtsvg-dev += "${libdir}/*QtSvg.*"
-FILES_libqt3support-dev += "${libdir}/*Qt3Support.*"
-FILES_libqtscript-dev += "${libdir}/*QtScript.*"
-
-FILES_libqtcore-dbg += "${libdir}/.debug/libQtCore*"
-FILES_libqtxml-dbg += "${libdir}/.debug/libQtXml*"
-FILES_libqtgui-dbg += "${libdir}/.debug/libQtGui*"
-FILES_libqtsql-dbg += "${libdir}/.debug/libQtSql*"
-FILES_libqtnetwork-dbg += "${libdir}/.debug/libQtNetwork*"
-FILES_libqtsvg-dbg += "${libdir}/.debug/libQtSvg*"
-FILES_libqt3support-dbg += "${libdir}/.debug/libQt3Support*"
-FILES_libqtscript-dbg += "${libdir}/.debug/libQtScript*"
-
-
-python populate_packages_prepend() {
- translationdir = bb.data.expand('${datadir}/qtopia/translations/', d)
- do_split_packages(d, translationdir, '^qt_(.*)\.qm$', 'qtopia-translation-%s', 'Qtopia translation for %s', extra_depends='' )
-}
-
-
-
-STAGE_TEMP = "${WORKDIR}/temp-staging"
-do_stage() {
- rm -rf ${STAGE_TEMP}
- mkdir -p ${STAGE_TEMP}
- oe_runmake install INSTALL_ROOT=${STAGE_TEMP}
-
- install -d ${STAGING_INCDIR}/qtopiacore4
- install -d ${STAGING_LIBDIR}/qtopiacore4
- cp -af ${STAGE_TEMP}/$includedir/* ${STAGING_INCDIR}/qtopiacore4/
-
- for i in ${STAGE_TEMP}/${libdir}/*.la
- do
- oe_libinstall -C ${STAGE_TEMP}/${libdir} -so $(basename $i .la) ${STAGING_LIBDIR}/qtopiacore4
- done
-
- rm -rf ${STAGE_TEMP}
-}
-
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/qxmp/qxmp_1.0.bb b/packages/qxmp/qxmp_1.0.bb
index e0a1acab21..bad972d54f 100644
--- a/packages/qxmp/qxmp_1.0.bb
+++ b/packages/qxmp/qxmp_1.0.bb
@@ -6,7 +6,7 @@ RDEPENDS = "mplayer"
SRC_URI = "http://www.xm1math.net/qxmp/qxmp-${PV}.tar.bz2"
-inherit qmake qt4x11
+inherit qt4x11
do_install() {
install -d ${D}${bindir}
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/qt/roadmap.desktop.patch b/packages/roadmap/files/roadmap.desktop.patch
index 98d5b06130..98d5b06130 100644
--- a/packages/roadmap/files/qt/roadmap.desktop.patch
+++ b/packages/roadmap/files/roadmap.desktop.patch
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.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.1.0.bb b/packages/roadmap/roadmap-gtk2_1.1.0.bb
new file mode 100644
index 0000000000..1e34238106
--- /dev/null
+++ b/packages/roadmap/roadmap-gtk2_1.1.0.bb
@@ -0,0 +1,12 @@
+require roadmap-gtk2.inc
+
+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 "
+
+S = "${WORKDIR}/roadmap-${PV}/src"
diff --git a/packages/roadmap/roadmap-gtk2_cvs.bb b/packages/roadmap/roadmap-gtk2_cvs.bb
index 557c4a1096..9d7adbaa3e 100644
--- a/packages/roadmap/roadmap-gtk2_cvs.bb
+++ b/packages/roadmap/roadmap-gtk2_cvs.bb
@@ -1,37 +1,13 @@
-require roadmap.inc
+require roadmap-gtk2.inc
-DEPENDS = "expat gtk+"
-PV = "1.0.12+cvs${SRCDATE}"
+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://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"
-CFLAGS += " -I${S} "
-
-
-do_compile() {
- oe_runmake
- oe_runmake gtk2
-}
-
-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/gtkroad* ${D}${bindir}
-
- install -m 0644 icons/*png ${D}${datadir}/pixmaps
-
- 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 43577badb9..43b4b1cd3d 100644
--- a/packages/roadmap/roadmap.inc
+++ b/packages/roadmap/roadmap.inc
@@ -3,5 +3,16 @@ PRIORITY = "optional"
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-r1.patch b/packages/roadmap/zroadmap-1.0.12/qt2-fixes-r1.patch
deleted file mode 100644
index 24fe1c9bdb..0000000000
--- a/packages/roadmap/zroadmap-1.0.12/qt2-fixes-r1.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#
-# Signed off by Michael 'Mickey' Lauer <mickey@Vanille.de>
-#
-
---- src/qt/qt_main.cc~qt2-fixes-r1.patch
-+++ src/qt/qt_main.cc
-@@ -137,7 +137,7 @@
- switch (orientation[0]) {
- case 't':
- case 'T': break;
--
-+#ifndef QWS
- case 'b':
- case 'B': moveDockWindow (toolBar, DockBottom); break;
-
-@@ -146,7 +146,7 @@
-
- case 'r':
- case 'R': moveDockWindow (toolBar, DockRight); break;
--
-+#endif
- default: roadmap_log (ROADMAP_FATAL,
- "Invalid toolbar orientation %s", orientation);
- }
---- src/qt/Makefile~qt2-fixes-r1.patch
-+++ src/qt/Makefile
-@@ -19,7 +19,7 @@
-
- ifeq ($(DESKTOP),QPE)
- CFLAGS += -I$(QTDIR)/include -DQWS
-- LIBS += -lqte -lqpe
-+ LIBS += -lqpe
- INSTALLDIR=$(QTDIR)
- endif
-
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 9a7b73d1a1..0000000000
--- a/packages/roadmap/zroadmap_1.0.12.bb
+++ /dev/null
@@ -1,33 +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://roadmap.digitalomaha.net/maps/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 -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 -d ${D}${palmtopdir}/share/roadmap/
- 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 42184ce62b..b06e4e7ad0 100644
--- a/packages/roadmap/zroadmap_1.1.0.bb
+++ b/packages/roadmap/zroadmap_1.1.0.bb
@@ -1,40 +1,16 @@
require zroadmap.inc
-DEPENDS += "expat"
-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://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://qt/roadmap.desktop.patch;patch=1 \
- http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz \
- file://zroadgps.png"
-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}" '
+ file://roadmap_path.patch;patch=1 \
+ file://roadmap.desktop.patch;patch=1 \
+ http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz"
-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 -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 -d ${D}${palmtopdir}/share/roadmap/
- install -m 0644 sprites preferences ${D}${palmtopdir}/share/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${palmtopdir}/share/roadmap/
-}
+S = "${WORKDIR}/roadmap-${PV}/src"
diff --git a/packages/roadmap/zroadmap_cvs.bb b/packages/roadmap/zroadmap_cvs.bb
index 5b39faf071..383ffe8f69 100644
--- a/packages/roadmap/zroadmap_cvs.bb
+++ b/packages/roadmap/zroadmap_cvs.bb
@@ -1,42 +1,13 @@
require zroadmap.inc
-DEPENDS += "expat"
-SRCDATE = "20071212"
-PV = "1.1.0+cvs-${SRCDATE}"
+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 \
- file://qt/qt_canvas.patch;patch=1 \
-#upstream file://qt/qt_main.patch;patch=1 \
- file://qt/roadmap_main.patch;patch=1 \
-#upstream file://qt/roadmap.desktop.patch;patch=1 \
- http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz \
- file://zroadgps.png"
-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}" '
+ file://roadmap_path.patch;patch=1 \
+ http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz"
-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 -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 -d ${D}${palmtopdir}/share/roadmap/
- install -m 0644 sprites preferences ${D}${palmtopdir}/share/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${palmtopdir}/share/roadmap/
-}
+S = "${WORKDIR}/roadmap/src"
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/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/settings-daemon/settings-daemon_svn.bb b/packages/settings-daemon/settings-daemon_svn.bb
index fb24fb1d75..eaffbfebb4 100644
--- a/packages/settings-daemon/settings-daemon_svn.bb
+++ b/packages/settings-daemon/settings-daemon_svn.bb
@@ -1,10 +1,12 @@
DESCRIPTION = "Settings-daemon provides a bridge between gconf and xsettings"
LICENSE = "GPL"
-DEPENDS = "gconf glib-2.0"
+DEPENDS = "gconf glib-2.0 gtk+"
RDEPENDS = "xrdb"
SECTION = "x11"
PV = "0.0+svnr${SRCREV}"
+PR = "r1"
+
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=${PN};proto=http \
file://70settings-daemon"
diff --git a/packages/sgml-common/sgml-common-native_0.6.3.bb b/packages/sgml-common/sgml-common-native_0.6.3.bb
index 749e26a500..873de8021b 100644
--- a/packages/sgml-common/sgml-common-native_0.6.3.bb
+++ b/packages/sgml-common/sgml-common-native_0.6.3.bb
@@ -8,18 +8,29 @@ S = "${WORKDIR}/sgml-common-${PV}"
PACKAGES = ""
do_stage () {
- install -m 0755 bin/install-catalog ${STAGING_BINDIR}/
- install -m 0755 bin/sgmlwhich ${STAGING_BINDIR}/
- install -d ${STAGING_DIR}/etc
- install -m 0644 config/sgml.conf ${STAGING_DIR}/etc/
+ # For unknown reasons 'make install' does not work.
+ install -m 0755 bin/install-catalog ${STAGING_BINDIR_NATIVE}/
+ install -m 0755 bin/sgmlwhich ${STAGING_BINDIR_NATIVE}/
+
+ install -d ${sysconfdir}/sgml
+ install -m 0644 config/sgml.conf ${sysconfdir}/sgml
+
install -d ${STAGING_DATADIR}/sgml
install -m 0644 xml.dcl ${STAGING_DATADIR}/sgml/
- install -d ${STAGING_DATADIR}/xml/xml-iso-entities-8879.1986
- install -m 0644 xml-iso-entities/catalog ${STAGING_DATADIR}/xml/xml-iso-entities-8879.1986/
- install -m 0644 xml-iso-entities/*.ent ${STAGING_DATADIR}/xml/xml-iso-entities-8879.1986/
+
+ install -d ${STAGING_DATADIR}/sgml/xml-iso-entities-8879.1986
+ install -m 0644 xml-iso-entities/catalog ${STAGING_DATADIR}/sgml/xml-iso-entities-8879.1986/
+ install -m 0644 xml-iso-entities/*.ent ${STAGING_DATADIR}/sgml/xml-iso-entities-8879.1986/
install -d ${STAGING_DATADIR}/sgml/sgml-iso-entities-8879.1986
install -m 0644 sgml-iso-entities/catalog ${STAGING_DATADIR}/sgml/sgml-iso-entities-8879.1986/
install -m 0644 sgml-iso-entities/*.ent ${STAGING_DATADIR}/sgml/sgml-iso-entities-8879.1986/
+
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-ent.cat ${STAGING_DATADIR}/sgml/sgml-iso-entities-8879.1986/catalog
+
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-docbook.cat ${sysconfdir}/sgml/sgml-ent.cat
+
}
do_install () {
diff --git a/packages/sgml-common/sgml-common_0.6.3.bb b/packages/sgml-common/sgml-common_0.6.3.bb
index 8b9fd5aeda..3454b1cb01 100644
--- a/packages/sgml-common/sgml-common_0.6.3.bb
+++ b/packages/sgml-common/sgml-common_0.6.3.bb
@@ -14,3 +14,29 @@ SRC_URI = "ftp://sources.redhat.com/pub/docbook-tools/new-trials/SOURCES/sgml-co
file://autohell.patch;patch=1"
inherit autotools
+
+do_compile_append() {
+ # install-catalog script contains hardcoded reference to /etc/sgml.
+ sed -i -e "s|/etc/sgml|${sysconfdir}/sgml|g" bin/install-catalog
+}
+
+pkg_postinst() {
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-ent.cat \
+ ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog
+
+ install-catalog \
+ --add ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/sgml-ent.cat
+}
+
+pkg_postrm() {
+ install-catalog \
+ --remove ${sysconfdir}/sgml/sgml-ent.cat \
+ ${datadir}/sgml/sgml-iso-entities-8879.1986/catalog
+
+ install-catalog \
+ --remove ${sysconfdir}/sgml/sgml-docbook.cat \
+ ${sysconfdir}/sgml/sgml-ent.cat
+}
+
diff --git a/packages/sgmlspl/.mtn2git_empty b/packages/sgmlspl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sgmlspl/.mtn2git_empty
diff --git a/packages/sgmlspl/files/.mtn2git_empty b/packages/sgmlspl/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sgmlspl/files/.mtn2git_empty
diff --git a/packages/sgmlspl/files/combined.patch b/packages/sgmlspl/files/combined.patch
new file mode 100644
index 0000000000..fff605b6b7
--- /dev/null
+++ b/packages/sgmlspl/files/combined.patch
@@ -0,0 +1,454 @@
+--- libsgmls-perl-1.03ii.orig/Makefile
++++ libsgmls-perl-1.03ii/Makefile
+@@ -94,5 +94,5 @@
+ mv /tmp/${DIST} SGMLSpm
+
+ clean:
+- cd DOC; make clean
++ #cd DOC; make clean
+ rm -f *~ core *.tar *.tar.gz
+--- libsgmls-perl-1.03ii.orig/Makefile.PL
++++ libsgmls-perl-1.03ii/Makefile.PL
+@@ -0,0 +1,17 @@
++use ExtUtils::MakeMaker;
++# See lib/ExtUtils/MakeMaker.pm for details of how to influence
++# the contents of the Makefile that is written.
++WriteMakefile(
++ 'NAME' => 'SGMLS',
++ 'VERSION' => '1.03ii',
++ 'PM' => { 'SGMLS.pm' => '$(INST_LIBDIR)/SGMLS.pm',
++ 'Output.pm' => '$(INST_LIBDIR)/SGMLS/Output.pm',
++ 'Refs.pm' => '$(INST_LIBDIR)/SGMLS/Refs.pm',
++ 'skel.pl' => '$(INST_LIBDIR)/sgmlspl-specs/skel.pl',
++ },
++ 'MAN3PODS'=> { 'SGMLS.pm' => '$(INST_MAN3DIR)/SGMLS.3pm',
++ 'Output.pm' => '$(INST_MAN3DIR)/SGMLS::Output.3pm',
++ 'Refs.pm' => '$(INST_MAN3DIR)/SGMLS::Refs.3pm',
++ },
++ 'EXE_FILES' => [ 'sgmlspl', ],
++);
+--- libsgmls-perl-1.03ii.orig/Output.pm
++++ libsgmls-perl-1.03ii/Output.pm
+@@ -5,7 +5,7 @@
+ @ISA = Exporter;
+ @EXPORT = qw(output push_output pop_output);
+
+-$version = '$Id: Output.pm,v 1.6 1995/12/05 12:21:51 david Exp $';
++$version = '$Id: Output.pm,v 1.1 1999/10/26 19:30:45 ardo Exp $';
+
+ =head1 NAME
+
+--- libsgmls-perl-1.03ii.orig/Refs.pm
++++ libsgmls-perl-1.03ii/Refs.pm
+@@ -2,11 +2,11 @@
+
+ use Carp;
+
+-$version = '$Id: Refs.pm,v 1.5 1995/12/03 21:28:36 david Exp $';
++$version = '$Id: Refs.pm,v 1.1 1999/10/26 19:30:45 ardo Exp $';
+
+ =head1 NAME
+
+-SGMLS::Refs
++SGMLS::Refs - Forward refeence handling
+
+ =head1 SYNOPSIS
+
+--- libsgmls-perl-1.03ii.orig/sgmlspl.1
++++ libsgmls-perl-1.03ii/sgmlspl.1
+@@ -0,0 +1,47 @@
++.\" -*- nroff -*-
++.\" ----------------------------------------------------------------------
++.TH SGMLSPL 1 "October 26, 1999" "SGMLSPL" "SGMLSPL"
++.\"
++.\" ----------------------------------------------------------------------
++.SH "NAME"
++sgmlspl \- a simple post-processor for nsgmls
++.\"
++.\" ----------------------------------------------------------------------
++.SH "SYNOPSIS"
++.B sgmlspl
++.I "spec file"
++.\"
++.\" ----------------------------------------------------------------------
++.SH "DESCRIPTION"
++sgmlspl is a sample application to convert SGML documents to other
++formats by providing a specification file detailing exactly how to
++handle each element, external data entity, subdocument entity, CDATA
++string, record end, SDATA string, and processing instruction.
++
++To use sgmlspl, prepare a specification file containing regular perl5
++code. If the SGML document were named doc.sgml, the sgmlspl
++specification file were named, spec.pl, and the name of the new file
++were doc.latex, then use the following command in a Unix shell to
++convert the SGML document:
++
++nsgmls doc.sgml | sgmlspl spec.pl > doc.latex
++
++sgmlspl will pass any additional arguments on to the specification
++file, which can then process them in the regular perl5 fashion.
++.\"
++.\" ----------------------------------------------------------------------
++.SH "SEE ALSO"
++.TP
++.BR /usr/share/doc/sgmls-doc/sgmlspl/sgmlspl.html
++sgmlspl documentation in HTML format
++.TP
++.BR /usr/share/doc/sgmls-doc/SGMLSpm/sgmls.html
++SGMLS documentation in HTML format
++.TP
++.BR nsgmls (1)
++.\"
++.\" ----------------------------------------------------------------------
++.SH "AUTHOR"
++Ardo van Rangelrooij <ardo@debian.org>
++.\"
++.\" ----------------------------------------------------------------------
+--- libsgmls-perl-1.03ii.orig/sgmlspl
++++ libsgmls-perl-1.03ii/sgmlspl
+@@ -0,0 +1,323 @@
++#!/usr/bin/perl
++########################################################################
++# sgmlspl: a simple SGML postprocesser for the SGMLS and NSGMLS
++# parsers (requires SGMLS.pm library).
++#
++# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++#
++# $Log: sgmlspl,v $
++# Revision 1.1 2004/02/23 01:23:07 ardo
++# Added debian changes for version 1.03ii-27.
++#
++# Revision 1.1 2001/04/15 14:42:01 ardo
++# *** empty log message ***
++#
++# Revision 1.8 1995/12/03 21:46:31 david
++# Eliminated all use of the SGMLS_Event::key method.
++#
++# Revision 1.7 1995/11/15 20:22:24 david
++# Changed "use Output" to "use SGMLS::Output". Qualified the STDIN
++# filehandle for the SGMLS object with the main:: package name.
++#
++# Revision 1.6 1995/08/12 16:15:14 david
++# Revised version for 1.01 distribution.
++#
++# Revision 1.5 1995/04/27 11:52:25 david
++# Changed 'print' to 'main::output' for re handler; empty string
++# translates into an empty sub {} rather than a sub printing an empty
++# string; instead of evaluating every argument as a perl script, take
++# only the first as a perl script and the rest as its arguments; allow
++# empty scripts or scripts which do not end with '1;'; pass the event
++# itself as the second argument to each handler, after the event data.
++#
++# Revision 1.4 1995/04/23 14:44:58 david
++# Use the Output package. Fixed the $version variable.
++#
++# Revision 1.3 1995/04/22 21:02:49 david
++# Added some missing 'last SWITCH;' statements in the sgmls function.
++#
++# Revision 1.2 1995/04/22 20:58:48 david
++# Added $SGMLS_PL::version variable and changed SDATA notation from
++# [SDATA] to |SDATA|.
++#
++# Revision 1.1 1995/04/22 14:40:50 david
++# Initial revision
++#
++########################################################################
++
++use SGMLS::Output;
++
++package SGMLS_PL;
++use SGMLS;
++
++$version = '$Id: sgmlspl,v 1.1 2004/02/23 01:23:07 ardo Exp $';
++
++#
++# Set up handler defaults.
++#
++$start_document_handler = sub {};
++$end_document_handler = sub {};
++$start_element_handlers = { '' => sub {} };
++$end_element_handlers = { '' => sub {} };
++$cdata_handler = sub { main::output($_[0]); };
++$sdata_handlers = { '' => sub { main::output($_[0]);} };
++$re_handler = sub { main::output("\n"); };
++$pi_handler = sub { '' => sub {} };
++$entity_handlers = { '' => sub {} };
++$start_subdoc_handlers = { '' => sub {} };
++$end_subdoc_handlers = { '' => sub {} };
++$conforming_handler = sub {};
++
++#
++# Main access point: declare handlers for different SGML events.
++#
++# Usage: sgml(event, handler);
++#
++# The event may be one of the following strings, or a special pattern.
++# The generic events are as follow:
++#
++# 'start' The beginning of the document.
++# 'end' The end of the document.
++# 'start_element' The beginning of an element.
++# 'end_element' The end of an element.
++# 'cdata' Regular character data.
++# 'sdata' Special system-specific data.
++# 're' A record-end.
++# 'pi' A processing instruction.
++# 'entity' An external-entity reference.
++# 'start_subdoc' The beginning of a subdocument entity.
++# 'end_subdoc' The end of a subdocument entity.
++# 'conforming' The document is conforming.
++#
++# In addition to these generic events, it is possible to handlers
++# for certain specific, named events, as follow:
++#
++# '<GI>' The beginning of element GI.
++# '</GI>' The end of element GI.
++# '[SDATA]' The system-specific data SDATA.
++# '&ENAME;' A reference to the external entity ENAME.
++# '{ENAME}' The beginning of the subdocument-entity ENAME.
++# '{/ENAME}' The end of the subdocument-entity ENAME.
++#
++#
++# The handler may be a string, which will simply be printed when the
++# event occurs (this is usually useful only for the specific, named
++# events), or a reference to an anonymous subroutine, which will
++# receive two arguments: the event data and the event itself. For
++# example,
++#
++# sgml('<FOO>', "\n\\begin{foo}\n");
++#
++# and
++#
++# sgml('<FOO>', sub { output("\n\\begin{foo}\n"); });
++#
++# will have identical results.
++#
++sub main::sgml {
++ my ($spec,$handler) = (@_);
++ if (ref($handler) ne 'CODE') {
++ $handler =~ s/\\/\\\\/g;
++ $handler =~ s/'/\\'/g;
++ if ($handler eq '') {
++ $handler = sub {};
++ } else {
++ $handler = eval "sub { main::output('$handler'); };";
++ }
++ }
++ SWITCH: {
++ # start-document handler
++ $spec eq 'start' && do {
++ $start_document_handler = $handler;
++ last SWITCH;
++ };
++ # end-document handler
++ $spec eq 'end' && do {
++ $end_document_handler = $handler;
++ last SWITCH;
++ };
++ # start-element handler
++ $spec =~ /^<([^\/].*|)>$/ && do {
++ $start_element_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic start-element handler
++ $spec eq 'start_element' && do {
++ $start_element_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # end-element handler
++ $spec =~ /^<\/(.*)>$/ && do {
++ $end_element_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic end-element handler
++ $spec =~ 'end_element' && do {
++ $end_element_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # cdata handler
++ $spec eq 'cdata' && do {
++ $cdata_handler = $handler;
++ last SWITCH;
++ };
++ # sdata handler
++ $spec =~ /^\|(.*)\|$/ && do {
++ $sdata_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic sdata handler
++ $spec eq 'sdata' && do {
++ $sdata_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # record-end handler
++ $spec eq 're' && do {
++ $re_handler = $handler;
++ last SWITCH;
++ };
++ # processing-instruction handler
++ $spec eq 'pi' && do {
++ $pi_handler = $handler;
++ last SWITCH;
++ };
++ # entity-reference handler
++ $spec =~ /^\&(.*);$/ && do {
++ $entity_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic entity-reference handler
++ $spec eq 'entity' && do {
++ $entity_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # start-subdoc handler
++ $spec =~ /^\{([^\/].*|)\}$/ && do {
++ $start_subdoc_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic start-subdoc handler
++ $spec eq 'start_subdoc' && do {
++ $start_subdoc_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # end-subdoc handler
++ $spec =~ /^\{\/(.*)\}$/ && do {
++ $end_subdoc_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic end-subdoc handler
++ $spec eq 'end_subdoc' && do {
++ $end_subdoc_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # conforming handler
++ $spec eq 'conforming' && do {
++ $conforming_handler = $handler;
++ last SWITCH;
++ };
++
++ die "Bad SGML handler pattern: $spec\n";
++ }
++}
++
++
++#
++# The first argument on the command line is a perl module which will be
++# read here and evaluated in the 'main' package -- everything else will
++# be an argument to it.
++#
++package main;
++
++$ARGV = shift;
++unless ($ARGV eq '' || do 'sgmlspl-specs/' . $ARGV || do $ARGV) {
++ if (!-e $ARGV) {
++ die "FATAL: $ARGV does not exist.\n";
++ } elsif (!-r $ARGV) {
++ die "FATAL: $ARGV exists but is read-protected.\n";
++ } elsif ($@) {
++ die "FATAL: $@\n";
++ }
++}
++
++
++#
++# Do the actual work, using the SGMLS package.
++#
++package SGMLS_PL;
++
++$parse = new SGMLS(main::STDIN); # a new parse object
++
++&{$start_document_handler}(); # run the start handler.
++
++ # run the appropriate handler for each
++ # event
++while ($event = $parse->next_event) {
++ my $type = $event->type;
++ SWITCH: {
++ $type eq 'start_element' && do {
++ &{($start_element_handlers->{$event->data->name}||
++ $start_element_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'end_element' && do {
++ &{($end_element_handlers->{$event->data->name}||
++ $end_element_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'cdata' && do {
++ &{$cdata_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'sdata' && do {
++ &{($sdata_handlers->{$event->data}||
++ $sdata_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 're' && do {
++ &{$re_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'pi' && do {
++ &{$pi_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'entity' && do {
++ &{($entity_handlers->{$event->data->name}||
++ $entity_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'start_subdoc' && do {
++ &{($start_subdoc_handlers->{$event->data->name}||
++ $start_subdoc_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'end_subdoc' && do {
++ &{($end_subdoc_handlers->{$event->data->name}||
++ $end_subdoc_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'conforming' && do {
++ &{$conforming_handler}($event->data,$event);
++ last SWITCH;
++ };
++
++ die "Unknown SGML event type: $type\n";
++ }
++}
++
++&{$end_document_handler}(); # run the end handler
+--- libsgmls-perl-1.03ii.orig/sgmlspl.pl
++++ libsgmls-perl-1.03ii/sgmlspl.pl
+@@ -238,7 +238,7 @@
+ package main;
+
+ $ARGV = shift;
+-unless ($ARGV eq '' || do $ARGV) {
++unless ($ARGV eq '' || do 'sgmlspl-specs/' . $ARGV || do $ARGV) {
+ if (!-e $ARGV) {
+ die "FATAL: $ARGV does not exist.\n";
+ } elsif (!-r $ARGV) {
+--- libsgmls-perl-1.03ii.orig/SGMLS.pm
++++ libsgmls-perl-1.03ii/SGMLS.pm
+@@ -1,7 +1,7 @@
+ package SGMLS;
+ use Carp;
+
+-$version = '$Revision: 1.14 $';
++$version = '$Revision: 1.1 $';
+
+ =head1 NAME
+
diff --git a/packages/sgmlspl/sgmlspl-native_1.03ii.bb b/packages/sgmlspl/sgmlspl-native_1.03ii.bb
new file mode 100644
index 0000000000..3f5f7b6ae7
--- /dev/null
+++ b/packages/sgmlspl/sgmlspl-native_1.03ii.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A simple post-processor for SGMLS and NSGMLS"
+HOMEPAGE = "http://search.cpan.org/src/DMEGG/SGMLSpm-1.03ii/DOC/HTML/SGMLSpm/sgmlspm.html"
+SECTION = "libs"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.cpan.org/authors/id/D/DM/DMEGG/SGMLSpm-${PV}.tar.gz \
+ file://combined.patch;patch=1"
+
+S = "${WORKDIR}/SGMLSpm"
+
+inherit native cpan
+
+do_install() {
+ :
+}
+
+do_stage() {
+ oe_runmake install_vendor
+}
+
+PACKAGES = " "
diff --git a/packages/slugos-init/slugos-init_4.8.bb b/packages/slugos-init/slugos-init_4.8.bb
new file mode 100644
index 0000000000..49c3e1fee6
--- /dev/null
+++ b/packages/slugos-init/slugos-init_4.8.bb
@@ -0,0 +1,149 @@
+DESCRIPTION = "SlugOS initial network config via sysconf"
+SECTION = "base"
+PRIORITY = "required"
+LICENSE = "GPL"
+DEPENDS = "base-files devio"
+RDEPENDS = "busybox devio"
+PR = "r0"
+
+SRC_URI = "file://boot/flash \
+ file://boot/disk \
+ file://boot/nfs \
+ file://boot/ram \
+ file://boot/kexec \
+ file://boot/network \
+ file://boot/udhcpc.script \
+ file://initscripts/fixfstab \
+ file://initscripts/syslog.buffer \
+ file://initscripts/syslog.file \
+ file://initscripts/syslog.network \
+ file://initscripts/zleds \
+ file://initscripts/leds_startup \
+ file://initscripts/rmrecovery \
+ file://initscripts/sysconfsetup \
+ file://initscripts/umountinitrd.sh \
+ file://initscripts/loadmodules.sh \
+ file://functions \
+ file://modulefunctions \
+ file://conffiles \
+ file://sysconf \
+ file://leds \
+ file://turnup \
+ "
+
+SBINPROGS = ""
+USRSBINPROGS = ""
+CPROGS = "${USRSBINPROGS} ${SBINPROGS}"
+SCRIPTS = "turnup leds sysconf"
+BOOTSCRIPTS = "flash disk nfs ram kexec network udhcpc.script"
+INITSCRIPTS = "syslog.buffer syslog.file syslog.network zleds\
+ leds_startup rmrecovery sysconfsetup umountinitrd.sh\
+ fixfstab loadmodules.sh"
+
+# This just makes things easier...
+S="${WORKDIR}"
+
+do_compile() {
+ set -ex
+ for p in ${CPROGS}
+ do
+ ${CC} ${CFLAGS} -o $p $p.c
+ done
+ set +ex
+}
+
+do_install() {
+ set -ex
+
+ # Directories
+ install -d ${D}${sysconfdir} \
+ ${D}${sysconfdir}/default \
+ ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/modutils \
+ ${D}${sysconfdir}/udev \
+ ${D}${sbindir} \
+ ${D}${base_sbindir} \
+ ${D}/initrd \
+ ${D}/boot
+
+ # linuxrc
+ rm -f ${D}/linuxrc
+ ln -s boot/flash ${D}/linuxrc
+
+ # C programs
+ for p in ${USRSBINPROGS}
+ do
+ install -m 0755 $p ${D}${sbindir}/$p
+ done
+ for p in ${SBINPROGS}
+ do
+ install -m 0755 $p ${D}${base_sbindir}/$p
+ done
+
+ # Shell scripts
+ for p in ${SCRIPTS}
+ do
+ install -m 0755 $p ${D}${base_sbindir}/$p
+ done
+
+ #
+ # Init scripts
+ install -m 0644 functions ${D}${sysconfdir}/default
+ install -m 0644 modulefunctions ${D}${sysconfdir}/default
+ for s in ${INITSCRIPTS}
+ do
+ install -m 0755 initscripts/$s ${D}${sysconfdir}/init.d/
+ done
+
+ #
+ # Boot scripts
+ for p in ${BOOTSCRIPTS}
+ do
+ install -m 0755 boot/$p ${D}/boot
+ done
+
+ # Configuration files
+ install -m 0644 conffiles ${D}${sysconfdir}/default
+
+ set +ex
+}
+
+# If the package is installed on an NSLU2 $D will be empty, in that
+# case it is normal to run 'start' and 'stop', but because the conf
+# files installed don't actually start or stop anything this is
+# unnecessary, so the package postfoo handling is simplified here.
+#NB: do not use '08' (etc) for the first argument after start/stop,
+# the value is interpreted as an octal number if there is a leading
+# zero.
+pkg_postinst_slugos-init() {
+ opt=
+ test -n "$D" && opt="-r $D"
+ update-rc.d $opt hwclock.sh start 8 S . start 45 0 6 .
+ update-rc.d $opt umountinitrd.sh start 9 S .
+ update-rc.d $opt fixfstab start 10 S .
+ update-rc.d $opt syslog.buffer start 11 S . start 49 0 6 .
+ update-rc.d $opt sysconfsetup start 12 S .
+ update-rc.d $opt loadmodules.sh start 21 S .
+ update-rc.d $opt syslog.file start 39 S . start 47 0 6 .
+ update-rc.d $opt syslog.network start 44 S . start 39 0 6 .
+ update-rc.d $opt zleds start 99 S 1 2 3 4 5 . start 89 0 6 . stop 5 0 1 2 3 4 5 6 .
+ update-rc.d $opt rmrecovery start 99 1 2 3 4 5 .
+ # bug fix for startup
+ update-rc.d $opt leds_startup start 1 1 2 3 4 5 .
+}
+
+pkg_postrm_slugos-init() {
+ opt=
+ test -n "$D" && opt="-r $D"
+ for s in ${INITSCRIPTS}
+ do
+ update-rc.d $opt "$s" remove
+ done
+}
+
+PACKAGES = "${PN}"
+FILES_${PN} = "/"
+
+# It is bad to overwrite /linuxrc as it puts the system back to
+# a flash boot (and the flash has potentially not been upgraded!)
+CONFFILES_${PN} = "/linuxrc ${sysconfdir}/default/conffiles"
diff --git a/packages/slutils/slutils_0.1.0.bb b/packages/slutils/slutils_0.1.0.bb
index 67d760cecb..8b7d6f6ce9 100644
--- a/packages/slutils/slutils_0.1.0.bb
+++ b/packages/slutils/slutils_0.1.0.bb
@@ -26,7 +26,7 @@ do_fetch() {
do_configure_prepend() {
cd ${S}/
- echo -e "TEMPLATE=subdirs\nSUBDIRS=${UTILS}\n" >slutils.pro
+ printf "TEMPLATE=subdirs\nSUBDIRS=${UTILS}\n" >slutils.pro
}
do_install() {
diff --git a/packages/speech-dispatcher/.mtn2git_empty b/packages/speech-dispatcher/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/speech-dispatcher/.mtn2git_empty
diff --git a/packages/speech-dispatcher/files/.mtn2git_empty b/packages/speech-dispatcher/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/speech-dispatcher/files/.mtn2git_empty
diff --git a/packages/speech-dispatcher/files/configSpeechd.conf.in_00.patch b/packages/speech-dispatcher/files/configSpeechd.conf.in_00.patch
new file mode 100644
index 0000000000..72b5e3126a
--- /dev/null
+++ b/packages/speech-dispatcher/files/configSpeechd.conf.in_00.patch
@@ -0,0 +1,31 @@
+--- speech-dispatcher-0.6.5/config/speechd.conf.in.orig 2008-01-05 16:38:53.000000000 +0000
++++ speech-dispatcher-0.6.5/config/speechd.conf.in 2008-01-05 16:40:45.000000000 +0000
+@@ -36,7 +36,7 @@
+ # DO NOT COMMENT OUT THIS OPTION, SET IT TO "default" if you do not
+ # want to influence it.
+
+-LogDir "default"
++LogDir "/var/log/"
+ #LogDir "/var/log/speech-dispatcher/"
+ #LogDir "stdout"
+
+@@ -129,8 +129,8 @@
+ # - configuration is the path to the config file of this module,
+ # either relative (to etc/speechd/modules/) or absolute
+
+-AddModule "espeak" "sd_espeak" "espeak.conf"
+-AddModule "festival" "sd_festival" "festival.conf"
++AddModule "espeak" "sd_espeak" "/etc/speech-dispatcher/modules/espeak.conf"
++#AddModule "festival" "sd_festival" "festival.conf"
+ AddModule "flite" "sd_flite" "flite.conf"
+ #AddModule "espeak-generic" "sd_generic" "espeak-generic.conf"
+ #AddModule "epos-generic" "sd_generic" "epos-generic.conf"
+@@ -172,6 +172,6 @@
+
+ # There are some sample client settings
+
+-Include "clients/emacs.conf"
+-Include "clients/gnome-speech.conf"
++#Include "clients/emacs.conf"
++#Include "clients/gnome-speech.conf"
+
diff --git a/packages/speech-dispatcher/files/speech-dispatcher.init b/packages/speech-dispatcher/files/speech-dispatcher.init
new file mode 100644
index 0000000000..c3be5d8385
--- /dev/null
+++ b/packages/speech-dispatcher/files/speech-dispatcher.init
@@ -0,0 +1,42 @@
+#! /bin/sh
+
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/speech-dispatcher
+PIDFILE=/var/run/speech-dispatcher.pid
+NAME=speech-dispatcher
+DESC='Speech Dispatcher'
+USER=speech-dispatcher
+
+test -f $DAEMON || exit 0
+
+set -e
+
+case "$1" in
+ start)
+ echo "Starting $NAME"
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+
+ ;;
+ stop)
+ echo "Stopping $NAME"
+ start-stop-daemon --oknodo --stop --quiet \
+ --pidfile $PIDFILE --exec $DAEMON
+ ;;
+ restart)
+ echo "Restarting $NAME"
+ start-stop-daemon --oknodo --stop --quiet \
+ --pidfile $PIDFILE --exec $DAEMON
+ sleep 3
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --exec $DAEMON
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/speech-dispatcher/files/srcMakefile.am.patch b/packages/speech-dispatcher/files/srcMakefile.am.patch
new file mode 100644
index 0000000000..7fdadec571
--- /dev/null
+++ b/packages/speech-dispatcher/files/srcMakefile.am.patch
@@ -0,0 +1,60 @@
+diff -aurp speech-dispatcher-0.6.5/src.old/audio/Makefile.am speech-dispatcher-0.6.5/src/audio/Makefile.am
+--- speech-dispatcher-0.6.5/src.old/audio/Makefile.am 2008-01-02 17:06:47.000000000 -0600
++++ speech-dispatcher-0.6.5/src/audio/Makefile.am 2008-01-02 17:07:16.000000000 -0600
+@@ -2,7 +2,7 @@
+ localedir = $(datadir)/locale
+ inc_local = "-I$(top_srcdir)/intl/"
+
+-am_cflags = -DLOCALEDIR=\"$(localedir)\" -I/usr/include/ $(inc_local) @glib_include@ -DWITH_OSS
++am_cflags = -DLOCALEDIR=\"$(localedir)\" $(inc_local) @glib_include@ -DWITH_OSS
+
+ if nas_support
+ NAS_FLAGS = -DWITH_NAS
+diff -aurp speech-dispatcher-0.6.5/src.old/c/api/Makefile.am speech-dispatcher-0.6.5/src/c/api/Makefile.am
+--- speech-dispatcher-0.6.5/src.old/c/api/Makefile.am 2008-01-02 17:06:47.000000000 -0600
++++ speech-dispatcher-0.6.5/src/c/api/Makefile.am 2008-01-02 17:07:39.000000000 -0600
+@@ -2,7 +2,7 @@
+ localedir = $(datadir)/locale
+ inc_local = "-I$(top_srcdir)/intl/"
+
+-AM_CFLAGS = -Wall -DLOCALEDIR=\"$(localedir)\" -I/usr/include/ $(inc_local) @glib_include@
++AM_CFLAGS = -Wall -DLOCALEDIR=\"$(localedir)\" $(inc_local) @glib_include@
+
+ lib_LTLIBRARIES = libspeechd.la
+ libspeechd_la_SOURCES = libspeechd.c
+diff -aurp speech-dispatcher-0.6.5/src.old/c/clients/say/Makefile.am speech-dispatcher-0.6.5/src/c/clients/say/Makefile.am
+--- speech-dispatcher-0.6.5/src.old/c/clients/say/Makefile.am 2008-01-02 17:06:47.000000000 -0600
++++ speech-dispatcher-0.6.5/src/c/clients/say/Makefile.am 2008-01-02 17:08:09.000000000 -0600
+@@ -3,7 +3,7 @@ localedir = $(datadir)/locale
+ inc_local = "-I$(top_srcdir)/intl/"
+ c_api = $(top_srcdir)/src/c/api
+
+-AM_CFLAGS = -DLOCALEDIR=\"$(localedir)\" -I/usr/include/ $(inc_local) @glib_include@ -I$(c_api)
++AM_CFLAGS = -DLOCALEDIR=\"$(localedir)\" $(inc_local) @glib_include@ -I$(c_api)
+
+ bin_PROGRAMS = spd-say
+ spd_say_SOURCES = say.c options.c options.h $(c_api)/libspeechd.h
+diff -aurp speech-dispatcher-0.6.5/src.old/modules/Makefile.am speech-dispatcher-0.6.5/src/modules/Makefile.am
+--- speech-dispatcher-0.6.5/src.old/modules/Makefile.am 2008-01-02 17:06:47.000000000 -0600
++++ speech-dispatcher-0.6.5/src/modules/Makefile.am 2008-01-02 17:12:41.000000000 -0600
+@@ -7,7 +7,7 @@ SNDFILE_LIBS = @SNDFILE_LIBS@
+
+ EXTRA_DIST = module_main.c module_utils_addvoice.c festival_client.c festival_client.h
+
+-AM_CFLAGS = -Wall -DLOCALEDIR=\"$(localedir)\" -I/usr/include/ $(inc_local) @glib_include@ -L$(top_srcdir)/src/audio -I$(top_srcdir)/src/audio -I../../intl/ $(ibmtts_include) @SNDFILE_CFLAGS@ -Wl,--rpath -Wl,$(spdlibdir)
++AM_CFLAGS = -Wall -DLOCALEDIR=\"$(localedir)\" $(inc_local) @glib_include@ -L$(top_srcdir)/src/audio -I$(top_srcdir)/src/audio -I../../intl/ $(ibmtts_include) @SNDFILE_CFLAGS@ -Wl,--rpath -Wl,$(spdlibdir)
+
+ if flite_support
+ if ibmtts_support
+diff -aurp speech-dispatcher-0.6.5/src.old/tests/Makefile.am speech-dispatcher-0.6.5/src/tests/Makefile.am
+--- speech-dispatcher-0.6.5/src.old/tests/Makefile.am 2008-01-02 17:06:47.000000000 -0600
++++ speech-dispatcher-0.6.5/src/tests/Makefile.am 2008-01-02 17:13:55.000000000 -0600
+@@ -3,7 +3,7 @@ localedir = $(datadir)/locale
+ inc_local = "-I$(top_srcdir)/intl/"
+ c_api = $(top_srcdir)/src/c/api
+
+-AM_CFLAGS = -I$(c_api) -DLOCALEDIR=\"$(localedir)\" -I/usr/include/ $(inc_local) @glib_include@ -I../audio/
++AM_CFLAGS = -I$(c_api) -DLOCALEDIR=\"$(localedir)\" $(inc_local) @glib_include@ -I../audio/
+
+ bin_PROGRAMS = long_message clibrary run_test
+
diff --git a/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb b/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb
new file mode 100644
index 0000000000..3857a1577a
--- /dev/null
+++ b/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb
@@ -0,0 +1,56 @@
+DESCRIPTION = "Speech Dispatcher is a high-level device independent layer \
+for speech synthesis through a simple, stable and well documented interface."
+HOMEPAGE = "http://www.freebsoft.org/speechd/"
+LICENSE = "GPLv2"
+DEPENDS = "espeak flite pulseaudio libdotconf glib-2.0"
+RPROVIDES_${PN} += "speechd"
+
+PR = "r7"
+
+inherit autotools update-rc.d
+
+SRC_URI = "http://www.freebsoft.org/pub/projects/speechd/${PN}-${PV}.tar.gz \
+ file://speech-dispatcher.init \
+ file://srcMakefile.am.patch;patch=1 \
+ file://configSpeechd.conf.in_00.patch;patch=1"
+
+LEAD_SONAME = "libspeechd.so"
+EXTRA_OECONF = " --with-espeak=yes --with-flite=yes --with-ibmtts=no --with-nas=no --with-alsa=yes --with-pulse=yes "
+
+INITSCRIPT_NAME = "speech-dispatcher"
+INITSCRIPT_PARAMS = "defaults 45"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${includedir}
+ install -d ${D}${libdir}/${PN}-modules
+ install -d ${D}${sysconfdir}
+ install -d ${D}${sysconfdir}/init.d
+ install -d ${D}${sysconfdir}/speech-dispatcher
+ install -d ${D}${sysconfdir}/speech-dispatcher/modules
+
+ oe_libinstall -so -C src/audio libsdaudio ${D}${libdir}
+ oe_libinstall -so -C src/c/api libspeechd ${D}${libdir}
+
+ install -m 0644 ${S}/src/c/api/libspeechd.h ${D}${includedir}
+ install -m 0755 ${S}/src/c/clients/say/.libs/spd-say ${D}${bindir}
+ install -m 0755 ${S}/src/server/.libs/speech-dispatcher ${D}${bindir}
+ install -m 0755 ${S}/src/modules/.libs/sd_* ${D}${libdir}/${PN}-modules/
+
+ install -m 0644 ${S}/config/speechd.conf ${D}${sysconfdir}/speech-dispatcher
+ install -m 0644 ${S}/config/modules/*.conf ${D}${sysconfdir}/speech-dispatcher/modules
+ install -m 0755 ${WORKDIR}/speech-dispatcher.init ${D}${sysconfdir}/init.d/speech-dispatcher
+}
+
+do_stage() {
+ install -m 0644 ${S}/src/c/api/libspeechd.h ${STAGING_INCDIR}
+ 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/supertux.desktop b/packages/supertux/files/supertux.desktop
new file mode 100644
index 0000000000..ace237bef0
--- /dev/null
+++ b/packages/supertux/files/supertux.desktop
@@ -0,0 +1,21 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Encoding=UTF-8
+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.png
+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_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/tasks/task-base.bb b/packages/tasks/task-base.bb
index 41f940858a..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 = "r53"
+PR = "r57"
inherit task
@@ -226,8 +226,6 @@ RRECOMMENDS_task-base-pcmcia = "\
"
task-base-pcmcia24 = "\
- ${@base_contains('DISTRO_FEATURES', 'wifi', 'hostap-modules-cs', '',d)} \
- ${@base_contains('DISTRO_FEATURES', 'wifi', 'orinoco-modules-cs', '',d)} \
"
task-base-pcmcia26 = "\
diff --git a/packages/tasks/task-boot.bb b/packages/tasks/task-boot.bb
index 0435c2aa62..5663ff5a3d 100644
--- a/packages/tasks/task-boot.bb
+++ b/packages/tasks/task-boot.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Basic task to get a device booting"
-PR = "r42"
+PR = "r43"
inherit task
diff --git a/packages/tasks/task-nas-server.bb b/packages/tasks/task-nas-server.bb
new file mode 100644
index 0000000000..f46a3306fe
--- /dev/null
+++ b/packages/tasks/task-nas-server.bb
@@ -0,0 +1,102 @@
+DESCRIPTION = "Tasks for a Network Attached Storage server"
+LICENSE = "MIT"
+PROVIDES = "task-nas-server-everything"
+PR = "r1"
+
+inherit task
+
+PACKAGES = "\
+ task-nas-server-everything \
+ ${NAS_SERVER_PACKAGES} \
+"
+
+NAS_SERVER_PACKAGES = "\
+ task-nas-server-base \
+ task-nas-server-samba \
+ task-nas-server-dnsmasq \
+ task-nas-server-iptables \
+ task-nas-server-openmoko \
+ task-nas-server-tzdata \
+ task-nas-server-nfs \
+ task-nas-server-vfat \
+ task-nas-server-ntfs \
+ task-nas-server-ext3 \
+ task-nas-server-reiserfs \
+"
+
+RDEPENDS_task-nas-server-everything = "${NAS_SERVER_PACKAGES}"
+
+DESCRIPTION_task-nas-server-base = "NAS-Server: Base Packages"
+RDEPENDS_task-nas-server-base = "\
+"
+RRECOMMENDS_task-nas-server-base = "\
+"
+
+DESCRIPTION_task-nas-server-samba = "NAS-Server: Samba Server"
+RDEPENDS_task-nas-server-samba = "\
+ samba swat \
+"
+RRECOMMENDS_task-nas-server-samba = "\
+"
+
+DESCRIPTION_task-nas-server-dnsmasq = "NAS-Server: DNS/DHCP Server"
+RDEPENDS_task-nas-server-dnsmasq = "\
+ dnsmasq \
+"
+RRECOMMENDS_task-nas-server-dnsmasq = "\
+"
+
+DESCRIPTION_task-nas-server-iptables = "NAS-Server: Netfilter/Iptables Support"
+RDEPENDS_task-nas-server-iptables = "\
+ iptables \
+"
+RRECOMMENDS_task-nas-server-iptables = "\
+ kernel-module-iptable-nat \
+ kernel-module-iptable-mangle \
+ kernel-module-ipt-masquerade \
+"
+
+DESCRIPTION_task-nas-server-openmoko = "NAS-Server: OpenMoko Support"
+RDEPENDS_task-nas-server-openmoko = "\
+ dfu-util \
+"
+RRECOMMENDS_task-nas-server-openmoko = "\
+"
+
+DESCRIPTION_task-nas-server-tzdata = "NAS-Server: Timezone Support"
+RDEPENDS_task-nas-server-tzdata = "\
+ tzdata \
+"
+RRECOMMENDS_task-nas-server-tzdata = "\
+"
+
+DESCRIPTION_task-nas-server-nfs = "NAS-Server: NFS Server"
+RDEPENDS_task-nas-server-nfs = "\
+ nfs-utils portmap \
+"
+RRECOMMENDS_task-nas-server-nfs = "\
+"
+
+DESCRIPTION_task-nas-server-vfat = "NAS-Server: FAT Filesystem"
+RDEPENDS_task-nas-server-vfat = "\
+"
+RRECOMMENDS_task-nas-server-vfat = "\
+"
+
+DESCRIPTION_task-nas-server-ntfs = "NAS-Server: NTFS Filesystem"
+RDEPENDS_task-nas-server-ntfs = "\
+"
+RRECOMMENDS_task-nas-server-ntfs = "\
+"
+
+DESCRIPTION_task-nas-server-ext3 = "NAS-Server: EXT3 Filesystem"
+RDEPENDS_task-nas-server-ext3 = "\
+"
+RRECOMMENDS_task-nas-server-ext3 = "\
+"
+
+DESCRIPTION_task-nas-server-reiserfs = "NAS-Server: ReiserFS Filesystem"
+RDEPENDS_task-nas-server-reiserfs = "\
+"
+RRECOMMENDS_task-nas-server-reiserfs = "\
+"
diff --git a/packages/tasks/task-openmoko-feed.bb b/packages/tasks/task-openmoko-feed.bb
index 1853f6a181..223548176d 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 = "r19"
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-opie-16mb.bb b/packages/tasks/task-opie-16mb.bb
index 9d8295d0ca..b92a137822 100644
--- a/packages/tasks/task-opie-16mb.bb
+++ b/packages/tasks/task-opie-16mb.bb
@@ -28,7 +28,7 @@ RDEPENDS_task-opie-16mb-applets = "opie-aboutapplet opie-clockapplet opie-suspen
opie-brightnessapplet opie-volumeapplet \
opie-screenshotapplet \
${@base_contains("COMBINED_FEATURES", "irda", "opie-irdaapplet", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "apm", "opie-batteryapplet", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "apm", "opie-batteryapplet", "",d)} \
${@base_contains("COMBINED_FEATURES", "pcmcia", "opie-pcmciaapplet", "",d)} \
${@base_contains("MACHINE_FEATURES", "keyboard", "opie-vtapplet opie-logoutapplet", "",d)}"
diff --git a/packages/tasks/task-opie.bb b/packages/tasks/task-opie.bb
index 0f7285236e..05b507706b 100644
--- a/packages/tasks/task-opie.bb
+++ b/packages/tasks/task-opie.bb
@@ -43,7 +43,7 @@ RDEPENDS_task-opie-base-applets = "opie-aboutapplet opie-clockapplet opie-suspen
opie-brightnessapplet opie-volumeapplet \
opie-screenshotapplet \
${@base_contains("COMBINED_FEATURES", "irda", "opie-irdaapplet", "",d)} \
- ${@base_contains("COMBINED_FEATURES", "apm", "opie-batteryapplet", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "apm", "opie-batteryapplet", "",d)} \
${@base_contains("COMBINED_FEATURES", "pcmcia", "opie-pcmciaapplet", "",d)} \
${@base_contains("MACHINE_FEATURES", "keyboard", "opie-vtapplet opie-logoutapplet", "",d)}"
diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb
index c81691cd34..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 = "ml22"
+PR = "ml24"
RDEPENDS = "\
python-ao \
@@ -9,8 +9,9 @@ RDEPENDS = "\
python-constraint \
python-dbus \
python-dialog \
- python-directfb \
+ python-pydirectfb \
python-efl \
+ python-efl-examples \
python-pycurl \
python-fam \
python-fnorb \
@@ -19,6 +20,7 @@ RDEPENDS = "\
python-fuse \
python-gmpy \
python-gnosis \
+ python-gsmd \
python-gst \
python-hmm \
python-imaging \
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/texmaker/texmaker_1.3.bb b/packages/texmaker/texmaker_1.3.bb
index 5682338f31..b612302544 100644
--- a/packages/texmaker/texmaker_1.3.bb
+++ b/packages/texmaker/texmaker_1.3.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL"
SRC_URI = "http://www.xm1math.net/texmaker/texmaker-${PV}.tar.bz2"
-inherit qmake qt4x11
+inherit qt4x11
do_install() {
install -d ${D}${bindir}
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/tzdata/tzdata_2007e.bb b/packages/tzdata/tzdata_2007e.bb
index 46d941c269..d873bfd0d6 100644
--- a/packages/tzdata/tzdata_2007e.bb
+++ b/packages/tzdata/tzdata_2007e.bb
@@ -3,7 +3,7 @@ SECTION = "base"
PRIORITY = "optional"
DEPENDS = "tzcode-native"
-PR = "r0"
+PR = "r1"
PROVIDES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
@@ -126,6 +126,9 @@ FILES_${PN} += "${datadir}/zoneinfo/Pacific/Honolulu \
${datadir}/zoneinfo/Asia/Bankok \
${datadir}/zoneinfo/Asia/Hong_Kong \
${datadir}/zoneinfo/Asia/Tokyo \
+ ${datadir}/zoneinfo/Australia/Darwin \
+ ${datadir}/zoneinfo/Australia/Adelaide \
+ ${datadir}/zoneinfo/Australia/Brisbane \
${datadir}/zoneinfo/Australia/Sydney \
${datadir}/zoneinfo/Pacific/Noumea \
${datadir}/zoneinfo/CET \
diff --git a/packages/u-boot/.mtn2git_empty b/packages/u-boot/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/.mtn2git_empty
diff --git a/packages/u-boot/files/.mtn2git_empty b/packages/u-boot/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/files/.mtn2git_empty
diff --git a/packages/uboot/files/arm_flags.patch b/packages/u-boot/files/arm_flags.patch
index 84b8cada39..84b8cada39 100644
--- a/packages/uboot/files/arm_flags.patch
+++ b/packages/u-boot/files/arm_flags.patch
diff --git a/packages/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch b/packages/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch
new file mode 100644
index 0000000000..c97880a01c
--- /dev/null
+++ b/packages/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch
@@ -0,0 +1,29 @@
+--- git.orig/drivers/video/cfb_console.c 2007-12-27 00:59:35.000000000 -0800
++++ git/drivers/video/cfb_console.c 2007-12-27 08:23:42.000000000 -0800
+@@ -141,6 +141,14 @@
+ #endif
+
+ /*****************************************************************************/
++/* Defines for the S3C2410 driver */
++/*****************************************************************************/
++#ifdef CONFIG_VIDEO_S3C2410
++/* it actually is little-endian, but the host CPU, too ! */
++//#define VIDEO_FB_LITTLE_ENDIAN
++#endif
++
++/*****************************************************************************/
+ /* Include video_fb.h after definitions of VIDEO_HW_RECTFILL etc */
+ /*****************************************************************************/
+ #include <video_fb.h>
+@@ -309,6 +317,11 @@
+ #define SHORTSWAP32(x) (x)
+ #endif
+
++#ifdef CONFIG_VIDEO_S3C2410
++#undef SHORTSWAP32
++#define SHORTSWAP32(x) ((((x) & 0xffff) << 16) | (((x) >> 16) & 0xffff))
++#endif
++
+ #if defined(DEBUG) || defined(DEBUG_CFB_CONSOLE)
+ #define PRINTD(x) printf(x)
+ #else
diff --git a/packages/uboot/files/fix-arm920t-eabi.patch b/packages/u-boot/files/fix-arm920t-eabi.patch
index 9896388c8f..9896388c8f 100644
--- a/packages/uboot/files/fix-arm920t-eabi.patch
+++ b/packages/u-boot/files/fix-arm920t-eabi.patch
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/uboot/files/makefile-no-dirafter.patch b/packages/u-boot/files/makefile-no-dirafter.patch
index 2ed26c3127..2ed26c3127 100644
--- a/packages/uboot/files/makefile-no-dirafter.patch
+++ b/packages/u-boot/files/makefile-no-dirafter.patch
diff --git a/packages/uboot/files/u-boot-20061030-ext2load_hex.patch b/packages/u-boot/files/u-boot-20061030-ext2load_hex.patch
index 3cecb7485d..3cecb7485d 100644
--- a/packages/uboot/files/u-boot-20061030-ext2load_hex.patch
+++ b/packages/u-boot/files/u-boot-20061030-ext2load_hex.patch
diff --git a/packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch b/packages/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch
index e90cc0de71..e90cc0de71 100644
--- a/packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch
+++ b/packages/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch
diff --git a/packages/uboot/files/uboot-eabi-fix-HACK.patch b/packages/u-boot/files/uboot-eabi-fix-HACK.patch
index 65b212917d..65b212917d 100644
--- a/packages/uboot/files/uboot-eabi-fix-HACK.patch
+++ b/packages/u-boot/files/uboot-eabi-fix-HACK.patch
diff --git a/packages/u-boot/u-boot-1.1.2/.mtn2git_empty b/packages/u-boot/u-boot-1.1.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.2/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.1.2/arm_flags.patch b/packages/u-boot/u-boot-1.1.2/arm_flags.patch
index 48c7b78043..48c7b78043 100644
--- a/packages/uboot/u-boot-1.1.2/arm_flags.patch
+++ b/packages/u-boot/u-boot-1.1.2/arm_flags.patch
diff --git a/packages/uboot/u-boot-1.1.2/cmd-arm-linux.patch b/packages/u-boot/u-boot-1.1.2/cmd-arm-linux.patch
index e7ef37e061..e7ef37e061 100644
--- a/packages/uboot/u-boot-1.1.2/cmd-arm-linux.patch
+++ b/packages/u-boot/u-boot-1.1.2/cmd-arm-linux.patch
diff --git a/packages/uboot/u-boot-1.1.2/command-names.patch b/packages/u-boot/u-boot-1.1.2/command-names.patch
index dd9a7fab44..dd9a7fab44 100644
--- a/packages/uboot/u-boot-1.1.2/command-names.patch
+++ b/packages/u-boot/u-boot-1.1.2/command-names.patch
diff --git a/packages/uboot/u-boot-1.1.2/mnci-jffs2.patch b/packages/u-boot/u-boot-1.1.2/mnci-jffs2.patch
index 8b2571ad99..8b2571ad99 100644
--- a/packages/uboot/u-boot-1.1.2/mnci-jffs2.patch
+++ b/packages/u-boot/u-boot-1.1.2/mnci-jffs2.patch
diff --git a/packages/uboot/u-boot-1.1.2/mnci.patch b/packages/u-boot/u-boot-1.1.2/mnci.patch
index d69cf8eb72..d69cf8eb72 100644
--- a/packages/uboot/u-boot-1.1.2/mnci.patch
+++ b/packages/u-boot/u-boot-1.1.2/mnci.patch
diff --git a/packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch b/packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch
index ed959d43d8..ed959d43d8 100644
--- a/packages/uboot/u-boot-1.1.2/u-boot-1.1.2-neon.patch
+++ b/packages/u-boot/u-boot-1.1.2/u-boot-1.1.2-neon.patch
diff --git a/packages/uboot/u-boot-1.1.2/u-boot-emetec.patch b/packages/u-boot/u-boot-1.1.2/u-boot-emetec.patch
index ab3f106e71..ab3f106e71 100644
--- a/packages/uboot/u-boot-1.1.2/u-boot-emetec.patch
+++ b/packages/u-boot/u-boot-1.1.2/u-boot-emetec.patch
diff --git a/packages/u-boot/u-boot-1.1.4/.mtn2git_empty b/packages/u-boot/u-boot-1.1.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.4/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-autoscript.patch b/packages/u-boot/u-boot-1.1.4/u-boot-autoscript.patch
index 1864b4494e..1864b4494e 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-autoscript.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-autoscript.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-base.patch b/packages/u-boot/u-boot-1.1.4/u-boot-base.patch
index d866c1c26e..d866c1c26e 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-base.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-base.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-crc-warning-not-so-scary.patch b/packages/u-boot/u-boot-1.1.4/u-boot-crc-warning-not-so-scary.patch
index b5736894c6..b5736894c6 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-crc-warning-not-so-scary.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-crc-warning-not-so-scary.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch b/packages/u-boot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch
index d919ea504e..d919ea504e 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-dht-walnut-df2.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-flash-protect-fixup.patch b/packages/u-boot/u-boot-1.1.4/u-boot-flash-protect-fixup.patch
index 1bbbbcb32d..1bbbbcb32d 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-flash-protect-fixup.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-flash-protect-fixup.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-fw_printenv.patch b/packages/u-boot/u-boot-1.1.4/u-boot-fw_printenv.patch
index 5e33452d11..5e33452d11 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-fw_printenv.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-fw_printenv.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-install.patch b/packages/u-boot/u-boot-1.1.4/u-boot-install.patch
index 50c149c0a1..50c149c0a1 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-install.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-install.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-jerase-cmd.patch b/packages/u-boot/u-boot-1.1.4/u-boot-jerase-cmd.patch
index 698f7a2d78..698f7a2d78 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-jerase-cmd.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-jerase-cmd.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-jffs2-new-nodetypes.patch b/packages/u-boot/u-boot-1.1.4/u-boot-jffs2-new-nodetypes.patch
index cce41aca18..cce41aca18 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-jffs2-new-nodetypes.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-jffs2-new-nodetypes.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-loadb-safe.patch b/packages/u-boot/u-boot-1.1.4/u-boot-loadb-safe.patch
index d4b8ef3935..d4b8ef3935 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-loadb-safe.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-loadb-safe.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-make381-fix.patch b/packages/u-boot/u-boot-1.1.4/u-boot-make381-fix.patch
index 89555ac027..89555ac027 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-make381-fix.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-make381-fix.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-mmc-init.patch b/packages/u-boot/u-boot-1.1.4/u-boot-mmc-init.patch
index a18d4d3609..a18d4d3609 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-mmc-init.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-mmc-init.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-mmcclk-alternate.patch b/packages/u-boot/u-boot-1.1.4/u-boot-mmcclk-alternate.patch
index 5eb8324630..5eb8324630 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-mmcclk-alternate.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-mmcclk-alternate.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-smc91x-multi.patch b/packages/u-boot/u-boot-1.1.4/u-boot-smc91x-multi.patch
index 3f285e34dc..3f285e34dc 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-smc91x-multi.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-smc91x-multi.patch
diff --git a/packages/uboot/u-boot-1.1.4/u-boot-zzz-osx.patch b/packages/u-boot/u-boot-1.1.4/u-boot-zzz-osx.patch
index f9d52c7dfe..f9d52c7dfe 100644
--- a/packages/uboot/u-boot-1.1.4/u-boot-zzz-osx.patch
+++ b/packages/u-boot/u-boot-1.1.4/u-boot-zzz-osx.patch
diff --git a/packages/u-boot/u-boot-1.1.6/.mtn2git_empty b/packages/u-boot/u-boot-1.1.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.1.6/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.1.6/devkit-idp.patch b/packages/u-boot/u-boot-1.1.6/devkit-idp.patch
index 1460c3d1f0..1460c3d1f0 100644
--- a/packages/uboot/u-boot-1.1.6/devkit-idp.patch
+++ b/packages/u-boot/u-boot-1.1.6/devkit-idp.patch
diff --git a/packages/uboot/u-boot-1.1.6/sarge-uboot.patch b/packages/u-boot/u-boot-1.1.6/sarge-uboot.patch
index 0c0d56f4d1..0c0d56f4d1 100644
--- a/packages/uboot/u-boot-1.1.6/sarge-uboot.patch
+++ b/packages/u-boot/u-boot-1.1.6/sarge-uboot.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch
index fe85228771..fe85228771 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-83xx-optimizations.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch
index 5018cd3434..5018cd3434 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-support-for-the-MPC832XEMDS-board.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch
index b5e2a87b16..b5e2a87b16 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Add-the-MPC832XEMDS-board-readme.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch
index 23a9717e74..23a9717e74 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch
index ad2ff243e8..ad2ff243e8 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Fix-the-UEC-driver-bug-of-QE.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch
index 9e2829bd3e..9e2829bd3e 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-UEC-remove-udelay.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch
index 5f3e1f7aaa..5f3e1f7aaa 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-mpc83xx-20061206.patch
diff --git a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch
index 30981dc43c..30981dc43c 100644
--- a/packages/uboot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch
+++ b/packages/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-streamline-the-83xx-immr-head-file.patch
diff --git a/packages/u-boot/u-boot-1.2.0/.mtn2git_empty b/packages/u-boot/u-boot-1.2.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.2.0/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/defconfig_lsppchd b/packages/u-boot/u-boot-1.2.0/defconfig_lsppchd
index 5919f5eb2c..5919f5eb2c 100644
--- a/packages/uboot/u-boot-1.2.0/defconfig_lsppchd
+++ b/packages/u-boot/u-boot-1.2.0/defconfig_lsppchd
diff --git a/packages/uboot/u-boot-1.2.0/defconfig_lsppchg b/packages/u-boot/u-boot-1.2.0/defconfig_lsppchg
index b9943b4c76..b9943b4c76 100644
--- a/packages/uboot/u-boot-1.2.0/defconfig_lsppchg
+++ b/packages/u-boot/u-boot-1.2.0/defconfig_lsppchg
diff --git a/packages/uboot/u-boot-1.2.0/env-Makefile.patch b/packages/u-boot/u-boot-1.2.0/env-Makefile.patch
index f6e9cb39ae..f6e9cb39ae 100644
--- a/packages/uboot/u-boot-1.2.0/env-Makefile.patch
+++ b/packages/u-boot/u-boot-1.2.0/env-Makefile.patch
diff --git a/packages/u-boot/u-boot-1.2.0/fic-gta01/.mtn2git_empty b/packages/u-boot/u-boot-1.2.0/fic-gta01/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.2.0/fic-gta01/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config b/packages/u-boot/u-boot-1.2.0/fic-gta01/fw_env.config
index 9fe07672c5..9fe07672c5 100644
--- a/packages/uboot/u-boot-1.2.0/fic-gta01/fw_env.config
+++ b/packages/u-boot/u-boot-1.2.0/fic-gta01/fw_env.config
diff --git a/packages/uboot/u-boot-1.2.0/fw_env.c.patch b/packages/u-boot/u-boot-1.2.0/fw_env.c.patch
index 62f364ad4a..62f364ad4a 100644
--- a/packages/uboot/u-boot-1.2.0/fw_env.c.patch
+++ b/packages/u-boot/u-boot-1.2.0/fw_env.c.patch
diff --git a/packages/uboot/u-boot-1.2.0/fw_env.config b/packages/u-boot/u-boot-1.2.0/fw_env.config
index 2432bd866c..2432bd866c 100644
--- a/packages/uboot/u-boot-1.2.0/fw_env.config
+++ b/packages/u-boot/u-boot-1.2.0/fw_env.config
diff --git a/packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff b/packages/u-boot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff
index 02027b1062..02027b1062 100644
--- a/packages/uboot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff
+++ b/packages/u-boot/u-boot-1.2.0/kurobox_powerpc-20061105_target.gitdiff
diff --git a/packages/uboot/u-boot-1.2.0/qnap.diff b/packages/u-boot/u-boot-1.2.0/qnap.diff
index b9ac34e6a8..b9ac34e6a8 100644
--- a/packages/uboot/u-boot-1.2.0/qnap.diff
+++ b/packages/u-boot/u-boot-1.2.0/qnap.diff
diff --git a/packages/uboot/u-boot-1.2.0/tools-Makefile.patch b/packages/u-boot/u-boot-1.2.0/tools-Makefile.patch
index a44bc917d6..a44bc917d6 100644
--- a/packages/uboot/u-boot-1.2.0/tools-Makefile.patch
+++ b/packages/u-boot/u-boot-1.2.0/tools-Makefile.patch
diff --git a/packages/u-boot/u-boot-1.2.0/turbostation/.mtn2git_empty b/packages/u-boot/u-boot-1.2.0/turbostation/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-1.2.0/turbostation/.mtn2git_empty
diff --git a/packages/uboot/u-boot-1.2.0/turbostation/fw_env.config b/packages/u-boot/u-boot-1.2.0/turbostation/fw_env.config
index 2432bd866c..2432bd866c 100644
--- a/packages/uboot/u-boot-1.2.0/turbostation/fw_env.config
+++ b/packages/u-boot/u-boot-1.2.0/turbostation/fw_env.config
diff --git a/packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch b/packages/u-boot/u-boot-1.2.0/u-boot-kurobox-fdt.patch
index 182c3785c7..182c3785c7 100644
--- a/packages/uboot/u-boot-1.2.0/u-boot-kurobox-fdt.patch
+++ b/packages/u-boot/u-boot-1.2.0/u-boot-kurobox-fdt.patch
diff --git a/packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch b/packages/u-boot/u-boot-1.2.0/u-boot-kurobox.patch
index 79f7a8e48a..79f7a8e48a 100644
--- a/packages/uboot/u-boot-1.2.0/u-boot-kurobox.patch
+++ b/packages/u-boot/u-boot-1.2.0/u-boot-kurobox.patch
diff --git a/packages/uboot/u-boot-1.2.0/uboot-qnap.diff b/packages/u-boot/u-boot-1.2.0/uboot-qnap.diff
index 2b2a17da7f..2b2a17da7f 100644
--- a/packages/uboot/u-boot-1.2.0/uboot-qnap.diff
+++ b/packages/u-boot/u-boot-1.2.0/uboot-qnap.diff
diff --git a/packages/u-boot/u-boot-mkimage-openmoko-native/.mtn2git_empty b/packages/u-boot/u-boot-mkimage-openmoko-native/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/.mtn2git_empty
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/bbt-create-optional.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/bbt-create-optional.patch
index d7a2a872e5..d7a2a872e5 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/bbt-create-optional.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/bbt-create-optional.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/bbt-scan-second.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/bbt-scan-second.patch
index 37b2807908..37b2807908 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/bbt-scan-second.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/bbt-scan-second.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/boot-from-ram-and-nand.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/boot-from-ram-and-nand.patch
index fa0de39ab7..fa0de39ab7 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/boot-from-ram-and-nand.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/boot-from-ram-and-nand.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/boot-from-ram-reloc.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/boot-from-ram-reloc.patch
index 53a3e05c67..53a3e05c67 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/boot-from-ram-reloc.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/boot-from-ram-reloc.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/boot-menu.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/boot-menu.patch
index 352967ae06..352967ae06 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/boot-menu.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/boot-menu.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/cmd-unzip.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/cmd-unzip.patch
index ee4c1984fc..ee4c1984fc 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/cmd-unzip.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/cmd-unzip.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/console-ansi.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/console-ansi.patch
index 2ac5b75dee..2ac5b75dee 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/console-ansi.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/console-ansi.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/default-env.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/default-env.patch
index b9ae4f29fe..b9ae4f29fe 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/default-env.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/default-env.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/dontask.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/dontask.patch
index 23d4b13626..23d4b13626 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/dontask.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/dontask.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/dynenv-harden.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/dynenv-harden.patch
index cf12352553..cf12352553 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/dynenv-harden.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/dynenv-harden.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/early-powerdown.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/early-powerdown.patch
index 7326c2daa6..7326c2daa6 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/early-powerdown.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/early-powerdown.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/enable-splash-bmp.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/enable-splash-bmp.patch
index dcb721c8d3..dcb721c8d3 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/enable-splash-bmp.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/enable-splash-bmp.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/env_nand_oob.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/env_nand_oob.patch
index 5a2dd61461..5a2dd61461 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/env_nand_oob.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/env_nand_oob.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/ext2load_hex.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/ext2load_hex.patch
index ff8e9cd6fc..ff8e9cd6fc 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/ext2load_hex.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/ext2load_hex.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/lowlevel_foo.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/lowlevel_foo.patch
index 715c46ed81..715c46ed81 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/lowlevel_foo.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/lowlevel_foo.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch
index fcf54b9fd1..fcf54b9fd1 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/mmcinit-power-up.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/nand-badisbad.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-badisbad.patch
index a5800e2499..a5800e2499 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/nand-badisbad.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-badisbad.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/nand-createbbt.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-createbbt.patch
index 74b79da0a9..74b79da0a9 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/nand-createbbt.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-createbbt.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/nand-dynamic_partitions.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-dynamic_partitions.patch
index ecce004ca6..ecce004ca6 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/nand-dynamic_partitions.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-dynamic_partitions.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/nand-otp.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-otp.patch
index b0e9bf4c4b..b0e9bf4c4b 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/nand-otp.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-otp.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/nand-read_write_oob.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-read_write_oob.patch
index 8360409e46..8360409e46 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/nand-read_write_oob.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/nand-read_write_oob.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch
index 6f6af2c758..6f6af2c758 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/neo1973-chargefast.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/preboot-override.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/preboot-override.patch
index f32cbde27b..f32cbde27b 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/preboot-override.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/preboot-override.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/raise-limits.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/raise-limits.patch
index a1c381a2cf..a1c381a2cf 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/raise-limits.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/raise-limits.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/series b/packages/u-boot/u-boot-mkimage-openmoko-native/series
index 4fc7d1342f..4fc7d1342f 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/series
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/series
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/splashimage-command.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/splashimage-command.patch
index 8ea48cf484..8ea48cf484 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/splashimage-command.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/splashimage-command.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-20061030-neo1973.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-20061030-neo1973.patch
index 7c70244b38..7c70244b38 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-20061030-neo1973.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-20061030-neo1973.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-20061030-qt2410.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-20061030-qt2410.patch
index 343598902f..343598902f 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-20061030-qt2410.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-20061030-qt2410.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-arm920_s3c2410_irq_demux.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-arm920_s3c2410_irq_demux.patch
index b39a268c84..b39a268c84 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-arm920_s3c2410_irq_demux.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-arm920_s3c2410_irq_demux.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-arm920t-gd_in_irq.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-arm920t-gd_in_irq.patch
index b3d7bc1166..b3d7bc1166 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-arm920t-gd_in_irq.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-arm920t-gd_in_irq.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-bbt-quiet.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-bbt-quiet.patch
index 9b1febe956..9b1febe956 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-bbt-quiet.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-bbt-quiet.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-cmd_s3c2410.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-cmd_s3c2410.patch
index 993ef4f6f2..993ef4f6f2 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-cmd_s3c2410.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-cmd_s3c2410.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-cramfs_but_no_jffs2.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-cramfs_but_no_jffs2.patch
index 349b83697e..349b83697e 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-cramfs_but_no_jffs2.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-cramfs_but_no_jffs2.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-dfu.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-dfu.patch
index 1122f4894f..1122f4894f 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-dfu.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-dfu.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-gta02.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-gta02.patch
index ca54ebeff7..ca54ebeff7 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-gta02.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-gta02.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-hxd8.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-hxd8.patch
index f85fdea836..f85fdea836 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-hxd8.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-hxd8.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-license.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-license.patch
index 227a97e71a..227a97e71a 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-license.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-license.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-machtypes.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-machtypes.patch
index db3cee6e99..db3cee6e99 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-machtypes.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-machtypes.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-mokoversion.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-mokoversion.patch
index a44434155e..a44434155e 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-mokoversion.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-mokoversion.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-nand-markbad-reallybad.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-nand-markbad-reallybad.patch
index d630889e3c..d630889e3c 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-nand-markbad-reallybad.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-nand-markbad-reallybad.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-neo1973-defaultenv.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-neo1973-defaultenv.patch
index 7e3aa4f480..7e3aa4f480 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-neo1973-defaultenv.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-neo1973-defaultenv.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-neo1973-resume.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-neo1973-resume.patch
index 19d912620d..19d912620d 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-neo1973-resume.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-neo1973-resume.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-misccr-definitions.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-misccr-definitions.patch
index 6efe24651a..6efe24651a 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-misccr-definitions.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-misccr-definitions.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-mmc.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-mmc.patch
index b775beaa07..b775beaa07 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-mmc.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-mmc.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-nand.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-nand.patch
index dc363bbbab..dc363bbbab 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-nand.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-nand.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
index 0d5a49771d..0d5a49771d 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-warnings-fix.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-warnings-fix.patch
index 8cc442a865..8cc442a865 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-warnings-fix.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-warnings-fix.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410_fb.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410_fb.patch
index b50853554b..b50853554b 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410_fb.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410_fb.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410_udc.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410_udc.patch
index 16bee3e26a..16bee3e26a 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410_udc.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410_udc.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2440.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2440.patch
index da0fb8cf2d..da0fb8cf2d 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2440.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2440.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2443.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2443.patch
index 62ae5592ab..62ae5592ab 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2443.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2443.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-smdk2440.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-smdk2440.patch
index 09392ad2cf..09392ad2cf 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-smdk2440.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-smdk2440.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-smdk2443.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-smdk2443.patch
index 5757cc078b..5757cc078b 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-smdk2443.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-smdk2443.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-strtoul.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-strtoul.patch
index a88e94b006..a88e94b006 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-strtoul.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-strtoul.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-usbtty-acm.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-usbtty-acm.patch
index 722a227aa6..722a227aa6 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-usbtty-acm.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-usbtty-acm.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/unbusy-i2c.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/unbusy-i2c.patch
index 680b301620..680b301620 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/unbusy-i2c.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/unbusy-i2c.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/usbdcore-multiple_configs.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/usbdcore-multiple_configs.patch
index 339289699a..339289699a 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/usbdcore-multiple_configs.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/usbdcore-multiple_configs.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/wakeup-reason-nand-only.patch b/packages/u-boot/u-boot-mkimage-openmoko-native/wakeup-reason-nand-only.patch
index 132a9f8da5..132a9f8da5 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native/wakeup-reason-nand-only.patch
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native/wakeup-reason-nand-only.patch
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native_oe.bb b/packages/u-boot/u-boot-mkimage-openmoko-native_oe.bb
index e7812a5ed0..08c0062fab 100644
--- a/packages/uboot/u-boot-mkimage-openmoko-native_oe.bb
+++ b/packages/u-boot/u-boot-mkimage-openmoko-native_oe.bb
@@ -1,4 +1,4 @@
-require uboot-openmoko_svn.bb
+require u-boot-openmoko_svn.bb
inherit native
diff --git a/packages/u-boot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty b/packages/u-boot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/u-boot/u-boot-omap2430sdp-1.1.4/.mtn2git_empty
diff --git a/packages/uboot/u-boot-omap2430sdp-1.1.4/u-boot-makefile-3.81.patch b/packages/u-boot/u-boot-omap2430sdp-1.1.4/u-boot-makefile-3.81.patch
index f45a1d3aa3..f45a1d3aa3 100644
--- a/packages/uboot/u-boot-omap2430sdp-1.1.4/u-boot-makefile-3.81.patch
+++ b/packages/u-boot/u-boot-omap2430sdp-1.1.4/u-boot-makefile-3.81.patch
diff --git a/packages/uboot/u-boot-omap2430sdp_1.1.4.bb b/packages/u-boot/u-boot-omap2430sdp_1.1.4.bb
index 4dcc989107..4dcc989107 100644
--- a/packages/uboot/u-boot-omap2430sdp_1.1.4.bb
+++ b/packages/u-boot/u-boot-omap2430sdp_1.1.4.bb
diff --git a/packages/uboot/uboot-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/uboot/uboot-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/uboot/uboot-openmoko_svn.bb b/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
index 1e59e0746d..7a9800f94a 100644
--- a/packages/uboot/uboot-openmoko_svn.bb
+++ b/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
@@ -1,27 +1,26 @@
-DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) support"
-AUTHOR = "Harald Welte <laforge@openmoko.org>"
+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"
-PROVIDES = "virtual/bootloader"
-LOCALVERSION = "+git${SRCDATE}+svnr${SRCREV}"
+
+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"
-SRCREV_FORMAT = "patches"
-
-UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 smdk2440 hxd8 qt2410 gta02v1 gta02v2 gta02v3 gta02v4"
-
-DEFAULT_PREFERENCE = "-1"
+PROVIDES = "virtual/bootloader"
+S = "${WORKDIR}/git"
SRC_URI = "\
- git://www.denx.de/git/u-boot.git/;protocol=git;name=upstream \
- svn://svn.openmoko.org/trunk/src/target/u-boot;module=patches;proto=http;name=patches \
- file://uboot-eabi-fix-HACK.patch \
+ 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 \
"
-S = "${WORKDIR}/git"
EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
TARGET_LDFLAGS = ""
@@ -33,8 +32,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_svn.bb b/packages/u-boot/u-boot-openmoko_svn.bb
new file mode 100644
index 0000000000..3ec97f2a77
--- /dev/null
+++ b/packages/u-boot/u-boot-openmoko_svn.bb
@@ -0,0 +1,79 @@
+DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) and Neo FreeRunner (GTA02) support"
+AUTHOR = "Harald Welte <laforge@openmoko.org>"
+LICENSE = "GPL"
+SECTION = "bootloader"
+PRIORITY = "optional"
+PROVIDES = "virtual/bootloader"
+LOCALVERSION = "+git${SRCDATE}+svnr${SRCREV}"
+PV = "1.3.1${LOCALVERSION}"
+PR = "r0"
+
+SRCREV_FORMAT = "patches"
+
+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;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;maxrev=3775 \
+"
+S = "${WORKDIR}/git"
+
+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_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/uboot/u-boot-utils-native_1.2.0.bb b/packages/u-boot/u-boot-utils-native_1.2.0.bb
index b04b366ffe..b04b366ffe 100644
--- a/packages/uboot/u-boot-utils-native_1.2.0.bb
+++ b/packages/u-boot/u-boot-utils-native_1.2.0.bb
diff --git a/packages/uboot/u-boot-utils_1.2.0.bb b/packages/u-boot/u-boot-utils_1.2.0.bb
index 1734b41a0e..1734b41a0e 100644
--- a/packages/uboot/u-boot-utils_1.2.0.bb
+++ b/packages/u-boot/u-boot-utils_1.2.0.bb
diff --git a/packages/uboot/u-boot.inc b/packages/u-boot/u-boot.inc
index 9f7356d5d7..9f7356d5d7 100644
--- a/packages/uboot/u-boot.inc
+++ b/packages/u-boot/u-boot.inc
diff --git a/packages/uboot/u-boot_1.1.2.bb b/packages/u-boot/u-boot_1.1.2.bb
index 82b169ccc4..82b169ccc4 100644
--- a/packages/uboot/u-boot_1.1.2.bb
+++ b/packages/u-boot/u-boot_1.1.2.bb
diff --git a/packages/uboot/u-boot_1.1.4.bb b/packages/u-boot/u-boot_1.1.4.bb
index 7a92b57c34..7a92b57c34 100644
--- a/packages/uboot/u-boot_1.1.4.bb
+++ b/packages/u-boot/u-boot_1.1.4.bb
diff --git a/packages/uboot/u-boot_1.1.6.bb b/packages/u-boot/u-boot_1.1.6.bb
index e003c69d7b..e003c69d7b 100644
--- a/packages/uboot/u-boot_1.1.6.bb
+++ b/packages/u-boot/u-boot_1.1.6.bb
diff --git a/packages/uboot/u-boot_1.2.0.bb b/packages/u-boot/u-boot_1.2.0.bb
index f1075bb00b..f1075bb00b 100644
--- a/packages/uboot/u-boot_1.2.0.bb
+++ b/packages/u-boot/u-boot_1.2.0.bb
diff --git a/packages/uboot/u-boot_1.3.0.bb b/packages/u-boot/u-boot_1.3.0.bb
index 2886ddecc8..2886ddecc8 100644
--- a/packages/uboot/u-boot_1.3.0.bb
+++ b/packages/u-boot/u-boot_1.3.0.bb
diff --git a/packages/uboot/u-boot_git.bb b/packages/u-boot/u-boot_git.bb
index 60ab0ab3f6..60ab0ab3f6 100644
--- a/packages/uboot/u-boot_git.bb
+++ b/packages/u-boot/u-boot_git.bb
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/uicmoc-native_2.3.10.bb b/packages/uicmoc/uicmoc-native_2.3.10.bb
index a4be2f1c0a..1674353145 100644
--- a/packages/uicmoc/uicmoc-native_2.3.10.bb
+++ b/packages/uicmoc/uicmoc-native_2.3.10.bb
@@ -7,7 +7,7 @@ PR = "r4"
SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz \
file://fix-makefile.patch;patch=1 \
- file://gcc3_4.patch;patch=1" \
+ file://gcc3_4.patch;patch=1 \
file://gcc4.patch;patch=1 \
file://gcc4_1.patch;patch=1 \
file://64bit-cleanup.patch;patch=1 \
diff --git a/packages/uicmoc/uicmoc4-native.inc b/packages/uicmoc/uicmoc4-native.inc
index 8f0c715a89..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,9 +27,11 @@ 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}"
+ 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}"
}
TOBUILD = "\
@@ -45,17 +48,18 @@ TOBUILD = "\
"
do_compile() {
- unset CC CXX CFLAGS LFLAGS CXXFLAGS CPPFLAGS
- for i in ${TOBUILD}; do
- cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}"
- done
+ unset CC CXX CFLAGS LFLAGS CXXFLAGS CPPFLAGS
+ for i in ${TOBUILD};
+ do
+ cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}"
+ done
}
do_stage() {
- install -m 0755 bin/moc ${STAGING_BINDIR}/moc4
- install -m 0755 bin/uic ${STAGING_BINDIR}/uic4
- install -m 0755 bin/uic3 ${STAGING_BINDIR}/uic34
- install -m 0755 bin/rcc ${STAGING_BINDIR}/rcc4
- install -d ${STAGING_DIR_NATIVE}/qt4/
- install -m 0644 tools/porting/src/q3porting.xml ${STAGING_DIR_NATIVE}/qt4/
+ install -m 0755 bin/moc ${STAGING_BINDIR}/moc4
+ install -m 0755 bin/uic ${STAGING_BINDIR}/uic4
+ install -m 0755 bin/uic3 ${STAGING_BINDIR}/uic34
+ install -m 0755 bin/rcc ${STAGING_BINDIR}/rcc4
+ install -d ${STAGING_DIR_NATIVE}/qt4/
+ install -m 0644 tools/porting/src/q3porting.xml ${STAGING_DIR_NATIVE}/qt4/
}
diff --git a/packages/uicmoc/uicmoc4-native_4.3.2.bb b/packages/uicmoc/uicmoc4-native_4.3.3.bb
index 1950f63068..1950f63068 100644
--- a/packages/uicmoc/uicmoc4-native_4.3.2.bb
+++ b/packages/uicmoc/uicmoc4-native_4.3.3.bb
diff --git a/packages/util-linux-ng/.mtn2git_empty b/packages/util-linux-ng/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/util-linux-ng/.mtn2git_empty
diff --git a/packages/util-linux-ng/util-linux-ng.inc b/packages/util-linux-ng/util-linux-ng.inc
new file mode 100644
index 0000000000..c01458d626
--- /dev/null
+++ b/packages/util-linux-ng/util-linux-ng.inc
@@ -0,0 +1,216 @@
+DESCRIPTION = "Util-linux-ng is a suite of essential utilities for any Linux system."
+SECTION = "base"
+LICENSE = "GPL"
+DEPENDS = "zlib ncurses e2fsprogs-libs"
+
+inherit autotools
+
+# I'm finishing this recipe during the 2.13.1 candidate release cycle
+# @todo Remove $RC later. See if patches are needed. Move files from /usr/*.
+# -- Leon 'likewise' Woestenberg
+
+RC="-rc2"
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/util-linux-ng/v2.13/util-linux-ng-${PV}${RC}.tar.bz2"
+# file://gcc34.patch;patch=1 \
+# file://MCONFIG \
+# file://make_include \
+# file://swapargs.h \
+# file://fdiskbsdlabel_thumb.diff;patch=1 \
+# file://umount.diff;patch=1 \
+# file://defines.h"
+
+PACKAGES_prepend = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-swaponoff util-linux-losetup util-linux-umount util-linux-mount util-linux-readprofile "
+
+FILES_${PN}-doc += "/usr/share/misc/getopt/getopt-*.*"
+
+FILES_util-linux-fdisk = "/sbin/fdisk.${PN}"
+FILES_util-linux-cfdisk = "/sbin/cfdisk"
+FILES_util-linux-sfdisk = "/sbin/sfdisk"
+FILES_util-linux-swaponoff = "/sbin/swapon.${PN} /sbin/swapoff.${PN}"
+FILES_util-linux-losetup = "/sbin/losetup.${PN}"
+FILES_util-linux-mount = "/bin/mount.${PN} ${sysconfdir}/default/mountall"
+FILES_util-linux-umount = "/bin/umount.${PN}"
+FILES_util-linux-readprofile = "/usr/sbin/readprofile"
+
+RRECOMMENDS_${PN} = "util-linux-fdisk util-linux-cfdisk util-linux-sfdisk util-linux-mount util-linux-readprofile "
+RDEPENDS_${PN} = "util-linux-umount util-linux-swaponoff util-linux-losetup"
+
+EXTRA_OECONF = "--disable-use-tty-group --disable-makeinstall-chown \
+--enable-kill --enable-last --enable-mesg --enable-raw --enable-login-utils \
+--enable-arch --enable-init"
+
+S = "${WORKDIR}/util-linux-ng-${PV}${RC}"
+
+do_compile () {
+ set -e
+# install ${WORKDIR}/MCONFIG ${S}/MCONFIG
+# install ${WORKDIR}/make_include ${S}/make_include
+# install ${WORKDIR}/swapargs.h ${S}/mount/swapargs.h
+# install ${WORKDIR}/defines.h ${S}/defines.h
+ oe_runmake ARCH=${TARGET_ARCH} CPU= CPUOPT= \
+ 'OPT=${CFLAGS}' 'CC=${CC}' 'LD=${LD}' \
+ 'LDFLAGS=${LDFLAGS}'
+}
+
+checklink() {
+ local targ link value
+ targ="$1"
+ link="$2"
+ ext="$3"
+ if test -h "$link"
+ then
+ value="$(readlink "$link")"
+ if test "$value" = "$targ"
+ then
+ rm "$link"
+ ln -s "$targ"."${PN}" "$link$ext"
+ return 0
+ else
+ echo "$link: '$value' found '$targ' expected" >&2
+ return 1
+ fi
+ else
+ echo "$link: not a symbolic link" >&2
+ return 1
+ fi
+}
+
+do_install () {
+ # with ccache the timestamps on compiled files may
+ # end up earlier than on their inputs, this allows
+ # for the resultant compilation in the install step.
+ oe_runmake ARCH=${TARGET_ARCH} CPU= CPUOPT= \
+ 'OPT=${CFLAGS}' 'CC=${CC}' 'LD=${LD}' \
+ 'LDFLAGS=${LDFLAGS}' 'DESTDIR=${D}' install
+ mkdir ${D}${base_bindir}
+ mkdir ${D}${base_sbindir}
+ test -f ${D}${sbindir}/pivot_root && \
+ mv ${D}${sbindir}/pivot_root ${D}${base_sbindir}/pivot_root.${PN}
+ mv ${D}${bindir}/dmesg ${D}${base_bindir}/dmesg.${PN}
+ mv ${D}${bindir}/kill ${D}${base_bindir}/kill.${PN}
+ mv ${D}${bindir}/more ${D}${base_bindir}/more.${PN}
+ mv ${D}${sbindir}/hwclock ${D}${base_sbindir}/hwclock.${PN}
+ mv ${D}${sbindir}/mkswap ${D}${base_sbindir}/mkswap.${PN}
+ mv ${D}${sbindir}/shutdown ${D}${base_sbindir}/shutdown.${PN}
+# mv ${D}${sbindir}/sln ${D}${base_sbindir}/sln.${PN}
+ mv ${D}${sbindir}/mkfs.minix ${D}${base_sbindir}/mkfs.minix.${PN}
+ mv ${D}${sbindir}/fsck.minix ${D}${base_sbindir}/fsck.minix.${PN}
+ mv ${D}${bindir}/hexdump ${D}${bindir}/hexdump.${PN}
+ mv ${D}${bindir}/last ${D}${bindir}/last.${PN}
+ mv ${D}${bindir}/logger ${D}${bindir}/logger.${PN}
+ mv ${D}${bindir}/mesg ${D}${bindir}/mesg.${PN}
+ mv ${D}${bindir}/renice ${D}${bindir}/renice.${PN}
+ mv ${D}${bindir}/wall ${D}${bindir}/wall.${PN}
+ return 0
+
+ mv ${D}${sbindir}/losetup ${D}${base_sbindir}/losetup.${PN}
+ mv ${D}${sbindir}/swapon ${D}${base_sbindir}/swapon.${PN}
+ mv ${D}${bindir}/umount ${D}${base_bindir}/umount.${PN}
+ mv ${D}${bindir}/mount ${D}${base_bindir}/mount.${PN}
+ mv ${D}${sbindir}/fdisk ${D}${base_sbindir}/fdisk.${PN}
+
+ mv ${D}${bindir}/agetty ${D}${base_sbindir}/
+ mv ${D}${bindir}/blockdev ${D}${base_sbindir}/
+ mv ${D}${bindir}/cfdisk ${D}${base_sbindir}/
+ mv ${D}${bindir}/ctrlaltdel ${D}${base_sbindir}/
+
+ install -d ${D}${sysconfdir}/default/
+ echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
+
+ checklink swapon ${D}${base_sbindir}/swapoff ".${PN}"
+ checklink shutdown ${D}${base_sbindir}/reboot ".${PN}"
+ checklink shutdown ${D}${base_sbindir}/halt ".${PN}"
+ checklink shutdown ${D}${base_sbindir}/fastboot ""
+ checklink shutdown ${D}${base_sbindir}/fasthalt ""
+}
+
+pkg_postinst_${PN} () {
+ update-alternatives --install ${base_bindir}/dmesg dmesg dmesg.${PN} 100
+ update-alternatives --install ${base_bindir}/kill kill kill.${PN} 100
+ update-alternatives --install ${base_bindir}/more more more.${PN} 100
+ update-alternatives --install ${base_sbindir}/mkswap mkswap mkswap.${PN} 100
+ test -x ${base_sbindir}/pivot_root.${PN} && \
+ update-alternatives --install ${base_sbindir}/pivot_root pivot_root pivot_root.${PN} 100
+ update-alternatives --install ${base_sbindir}/sln sln sln.${PN} 100
+ update-alternatives --install ${base_sbindir}/mkfs.minix mkfs.minix mkfs.minix.${PN} 100
+ update-alternatives --install ${base_sbindir}/fsck.minix fsck.minix fsck.minix.${PN} 100
+ update-alternatives --install ${bindir}/hexdump hexdump hexdump.${PN} 100
+ update-alternatives --install ${bindir}/last last last.${PN} 100
+ update-alternatives --install ${bindir}/logger logger logger.${PN} 100
+ update-alternatives --install ${bindir}/mesg mesg mesg.${PN} 100
+ update-alternatives --install ${bindir}/renice renice renice.${PN} 100
+ update-alternatives --install ${bindir}/wall wall wall.${PN} 100
+
+ # There seems to be problem, atleast on nslu2, with these, until they are
+ # fixed the busybox ones have higher priority
+ update-alternatives --install ${base_sbindir}/hwclock hwclock hwclock.${PN} 10
+ update-alternatives --install ${base_sbindir}/shutdown shutdown shutdown.${PN} 10
+ update-alternatives --install ${base_sbindir}/reboot reboot reboot.${PN} 10
+ update-alternatives --install ${base_sbindir}/halt halt halt.${PN} 10
+}
+
+pkg_prerm_${PN} () {
+ test -x ${base_sbindir}/pivot_root.${PN} && \
+ update-alternatives --remove pivot_root pivot_root.${PN}
+ update-alternatives --remove dmesg dmesg.${PN}
+ update-alternatives --remove kill kill.${PN}
+ update-alternatives --remove more more.${PN}
+ update-alternatives --remove halt halt.${PN}
+ update-alternatives --remove hwclock hwclock.${PN}
+ update-alternatives --remove mkswap mkswap.${PN}
+ update-alternatives --remove reboot reboot.${PN}
+ update-alternatives --remove shutdown shutdown.${PN}
+ update-alternatives --remove sln sln.${PN}
+ update-alternatives --remove mkfs.minix mkfs.minix.${PN}
+ update-alternatives --remove fsck.minix fsck.minix.${PN}
+ update-alternatives --remove hexdump hexdump.${PN}
+ update-alternatives --remove last last.${PN}
+ update-alternatives --remove logger logger.${PN}
+ update-alternatives --remove mesg mesg.${PN}
+ update-alternatives --remove renice renice.${PN}
+ update-alternatives --remove wall wall.${PN}
+}
+
+pkg_postinst_util-linux-fdisk () {
+ update-alternatives --install ${base_sbindir}/fdisk fdisk fdisk.${PN} 100
+}
+
+pkg_prerm_util-linux-fdisk () {
+ update-alternatives --remove fdisk fdisk.${PN}
+}
+
+pkg_postinst_util-linux-mount () {
+ update-alternatives --install ${base_bindir}/mount mount mount.${PN} 100
+}
+
+pkg_prerm_util-linux-mount () {
+ update-alternatives --remove mount mount.${PN}
+}
+
+pkg_postinst_util-linux-umount () {
+ update-alternatives --install ${base_bindir}/umount umount umount.${PN} 100
+}
+
+pkg_prerm_util-linux-umount () {
+ update-alternatives --remove umount umount.${PN}
+}
+
+pkg_postinst_util-linux-losetup () {
+ update-alternatives --install ${base_sbindir}/losetup losetup losetup.${PN} 100
+}
+
+pkg_prerm_util-linux-losetup () {
+ update-alternatives --remove losetup losetup.${PN}
+}
+
+pkg_postinst_util-linux-swaponoff () {
+ update-alternatives --install ${base_sbindir}/swapoff swapoff swapoff.${PN} 100
+ update-alternatives --install ${base_sbindir}/swapon swapon swapon.${PN} 100
+}
+
+pkg_prerm_util-linux-swaponoff () {
+ update-alternatives --remove swapoff swapoff.${PN}
+ update-alternatives --remove swapon swapon.${PN}
+}
diff --git a/packages/util-linux-ng/util-linux-ng_2.13.1.bb b/packages/util-linux-ng/util-linux-ng_2.13.1.bb
new file mode 100644
index 0000000000..c10792e8ec
--- /dev/null
+++ b/packages/util-linux-ng/util-linux-ng_2.13.1.bb
@@ -0,0 +1,7 @@
+require util-linux-ng.inc
+
+#SRC_URI += "file://util-linux_2.12r-12.diff.gz;patch=1"
+#SRC_URI += "file://glibc-fix.patch;patch=1"
+#SRC_URI += "file://glibc-umount2.patch;patch=1"
+
+PR = "r0"
diff --git a/packages/vala/vala-native_0.1.4.bb b/packages/vala/vala-native_0.1.5.bb
index 8de1b9258c..f097e7db74 100644
--- a/packages/vala/vala-native_0.1.4.bb
+++ b/packages/vala/vala-native_0.1.5.bb
@@ -1,5 +1,5 @@
require vala_${PV}.bb
inherit native
-DEPENDS = "glib-native-2.0"
+DEPENDS = "glib-2.0-native"
diff --git a/packages/vala/vala_0.1.4.bb b/packages/vala/vala_0.1.5.bb
index 0d357945b7..0d357945b7 100644
--- a/packages/vala/vala_0.1.4.bb
+++ b/packages/vala/vala_0.1.5.bb
diff --git a/packages/vlc/vlc-gpe_0.7.2.bb b/packages/vlc/vlc-gpe_0.7.2.bb
index 65d8fe9045..224b88096e 100644
--- a/packages/vlc/vlc-gpe_0.7.2.bb
+++ b/packages/vlc/vlc-gpe_0.7.2.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Video player and streamer - GPE edition"
HOMEPAGE = "http://www.videolan.org"
LICENSE = "GPL"
PRIORITY = "optional"
-SECTION = "gpe"
-PR = "r1"
+SECTION = "x11/multimedia"
+PR = "r2"
DEPENDS = "faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec"
diff --git a/packages/vlc/vlc-gpe_0.8.1.bb b/packages/vlc/vlc-gpe_0.8.1.bb
index 6ca35887b7..0c83b6036c 100644
--- a/packages/vlc/vlc-gpe_0.8.1.bb
+++ b/packages/vlc/vlc-gpe_0.8.1.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Video player and streamer - GPE edition"
HOMEPAGE = "http://www.videolan.org"
LICENSE = "GPL"
PRIORITY = "optional"
-SECTION = "gpe"
-PR = "r4"
+SECTION = "x11/multimedia"
+PR = "r5"
DEPENDS = "gtk+ freetype gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec"
diff --git a/packages/vlc/vlc-gpe_0.8.4.bb b/packages/vlc/vlc-gpe_0.8.4.bb
index 1bded75984..f53aa6b45f 100644
--- a/packages/vlc/vlc-gpe_0.8.4.bb
+++ b/packages/vlc/vlc-gpe_0.8.4.bb
@@ -2,8 +2,8 @@ DESCRIPTION = "Video player and streamer - GPE edition"
HOMEPAGE = "http://www.videolan.org"
LICENSE = "GPL"
PRIORITY = "optional"
-SECTION = "gpe"
-PR = "r3"
+SECTION = "x11/multimedia"
+PR = "r4"
DEPENDS = "gtk+ freetype gnutls tremor faad2 ffmpeg flac liba52 libid3tag libmad mpeg2dec"
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/vte/vte.inc b/packages/vte/vte.inc
new file mode 100644
index 0000000000..e575a5a3fb
--- /dev/null
+++ b/packages/vte/vte.inc
@@ -0,0 +1,15 @@
+DESCRIPTION = "vte is a virtual terminal emulator"
+LICENSE = "LGPL"
+DEPENDS += " glib-2.0 gtk+"
+RDEPENDS = "termcap"
+
+inherit gnome
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES =+ "libvte"
+FILES_libvte = "${libdir}/*.so*"
diff --git a/packages/vte/vte_0.16.8.bb b/packages/vte/vte_0.16.8.bb
index 57a3aca74d..f408632430 100644
--- a/packages/vte/vte_0.16.8.bb
+++ b/packages/vte/vte_0.16.8.bb
@@ -1,16 +1,2 @@
-DESCRIPTION = "vte is a virtual terminal emulator"
-LICENSE = "LGPL"
-DEPENDS += " glib-2.0 gtk+"
-RDEPENDS = "termcap"
+require vte.inc
PR = "r3"
-
-inherit gnome
-
-EXTRA_OECONF = "--disable-gtk-doc"
-
-do_stage() {
- autotools_stage_all
-}
-
-PACKAGES =+ "libvte"
-FILES_libvte = "${libdir}/*.so*"
diff --git a/packages/vte/vte_0.16.9.bb b/packages/vte/vte_0.16.9.bb
new file mode 100644
index 0000000000..f408632430
--- /dev/null
+++ b/packages/vte/vte_0.16.9.bb
@@ -0,0 +1,2 @@
+require vte.inc
+PR = "r3"
diff --git a/packages/webkit/files/GNUmakefile.am b/packages/webkit/files/GNUmakefile.am
new file mode 100644
index 0000000000..f3ec252ee8
--- /dev/null
+++ b/packages/webkit/files/GNUmakefile.am
@@ -0,0 +1,314 @@
+# Top-level Makefile rule for automake
+#
+# Variable conventions:
+#
+# _h_api = API headers that will be installed and included in the distribution
+# _cppflags = flags that will be passed to the C/CXX Preprocessor
+# _sources = sources that will be compiled and included in the distribution
+# _headers = header files that will be part of the distribution
+# _built_sources = files that will be autogenerated by the build system and
+# will be part of the _SOURCES primary
+# _built_nosources = files that are autogenerated but are not part of the
+# _SOURCES primary
+# _cleanfiles = files that will be removed by the clean target
+#
+# Sources, headers, flags, etc... should be added to the respective variables
+# with the above suffix, e.g, webcore-specific sources should go to
+# webcore_sources, gtk port-specific flags should go to webkitgtk_cppflags,
+# etc... The only exceptions are the global variables. See Global Variables below.
+#
+# Global Variables
+#
+# global_cppflags = CPPFLAGS that apply to JSC, WebCore, and to any
+# specific port
+# global_cflags = CFLAGS and CXXFLAGS that apply to JSC, WebCore, and to
+# any specific port
+
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+# Directory for autogenerated sources
+GENSOURCES := $(top_builddir)/DerivedSources
+
+# Script for creating hash tables
+CREATE_HASH_TABLE = $(srcdir)/JavaScriptCore/kjs/create_hash_table
+
+# Libraries and support components
+noinst_LTLIBRARIES :=
+
+noinst_HEADERS :=
+
+noinst_PROGRAMS :=
+
+lib_LIBRARIES :=
+
+IDL_BINDINGS :=
+
+# Files that will be distributed
+EXTRA_DIST :=
+
+#
+# Global flags to CPP
+global_cppflags :=
+
+global_cppflags += \
+ -I $(srcdir)/JavaScriptCore \
+ -I $(srcdir)/JavaScriptCore/ForwardingHeaders \
+ -I $(srcdir)/JavaScriptCore/wtf \
+ -I $(srcdir)/JavaScriptCore/kjs \
+ -I $(top_builddir)/DerivedSources
+
+# Default compiler flags
+global_cflags := \
+ -Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type \
+ -Wformat -Wformat-security -Wno-format-y2k -Wundef \
+ -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings \
+ -Wno-unused-parameter -fno-exceptions -fno-strict-aliasing
+
+# Libraries
+lib_LTLIBRARIES = libJavaScriptCore.la libWebKitGtk.la
+
+#
+# JavaScriptCore
+javascriptcore_h_api :=
+javascriptcore_cppflags:=
+javascriptcore_sources :=
+javascriptcore_built_sources :=
+javascriptcore_built_nosources :=
+
+# The variables above are already included below so no need to touch
+# these variables unless you really have to
+libJavaScriptCore_ladir = $(prefix)/include/WebKit/JavaScriptCore
+libJavaScriptCore_la_HEADERS := $(javascriptcore_h_api)
+
+libJavaScriptCore_la_SOURCES := \
+ $(javascriptcore_built_sources) \
+ $(javascriptcore_sources)
+
+libJavaScriptCore_la_LDFLAGS := -lpthread
+
+libJavaScriptCore_la_CXXFLAGS := $(global_cflags)
+
+libJavaScriptCore_la_CFLAGS := $(global_cflags)
+
+libJavaScriptCore_la_CPPFLAGS := $(global_cppflags) $(javascriptcore_cppflags)
+
+#
+# WebCore
+webcore_cppflags :=
+webcore_sources :=
+webcore_headers :=
+webcore_built_sources :=
+webcore_built_nosources :=
+
+# WebKitGtk
+webkitgtk_h_api :=
+webkitgtk_headers :=
+webkitgtk_sources :=
+webkitgtk_cppflags :=
+webkitgtk_ldflags :=
+webkitgtk_built_sources :=
+webkitgtk_built_nosources :=
+webkitgtk_cleanfiles :=
+
+# No need to touch the following variables unless you have to. If you need to change the values
+# for the following variables, use the "webkitgtk_" variables above
+libWebKitGtk_ladir := $(prefix)/include/WebKit
+
+libWebKitGtk_la_HEADERS := $(webkitgtk_h_api)
+
+libWebKitGtk_la_SOURCES := \
+ $(webcore_built_sources) \
+ $(webcore_headers) \
+ $(webcore_sources) \
+ $(webkitgtk_built_sources) \
+ $(webkitgtk_headers) \
+ $(webkitgtk_sources)
+
+libWebKitGtk_la_CXXFLAGS := \
+ -fno-rtti \
+ $(global_cflags) \
+ $(DEPENDENCIES_CFLAGS) \
+ $(SQLITE3_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+ $(LIBXSLT_CFLAGS) \
+ $(COVERAGE_CFLAGS)
+
+libWebKitGtk_la_CFLAGS := \
+ $(global_cflags) \
+ $(DEPENDENCIES_CFLAGS) \
+ $(SQLITE3_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+ $(LIBXSLT_CFLAGS) \
+ $(COVERAGE_CFLAGS)
+
+libWebKitGtk_la_CPPFLAGS := \
+ $(global_cppflags) \
+ $(webcore_cppflags) \
+ $(webkitgtk_cppflags)
+
+libWebKitGtk_la_LIBADD := @LTLIBOBJS@ libJavaScriptCore.la
+
+libWebKitGtk_la_LDFLAGS := \
+ $(webkitgtk_ldflags) \
+ $(DEPENDENCIES_LIBS) \
+ $(ICU_LIBS) \
+ $(SQLITE3_LIBS) \
+ $(GSTREAMER_LIBS) \
+ $(LIBXSLT_LIBS) \
+ $(COVERAGE_LDFLAGS) \
+ -lpthread \
+ -ljpeg \
+ -version-info @LIBWEBKITGTK_VERSION@
+
+#
+# Extra checks and flags
+global_cppflags += \
+ -DBUILDING_GTK__=1 \
+ -DUSE_SYSTEM_MALLOC \
+ -DWTF_CHANGES
+
+if TARGET_X11
+global_cppflags += -DXP_UNIX
+endif
+
+if !ENABLE_DEBUG
+global_cppflags += -DNDEBUG
+else
+webkitgtk_cppflags += \
+ -DG_DISABLE_DEPRECATED \
+ -DGDK_PIXBUF_DISABLE_DEPRECATED \
+ -DGDK_DISABLE_DEPRECATED \
+ -DGTK_DISABLE_DEPRECATED \
+ -DPANGO_DISABLE_DEPRECATED \
+ -DGDK_MULTIHEAD_SAFE \
+ -DGTK_MULTIHEAD_SAFE
+endif
+
+if !ENABLE_DATABASE
+global_cppflags += -DENABLE_DATABASE=0
+endif
+
+if !ENABLE_ICONDATABASE
+global_cppflags += -DENABLE_ICONDATABASE=0
+endif
+
+if ENABLE_COVERAGE
+global_cppflags += \
+ -DGCC_GENERATE_TEST_COVERAGE_FILES \
+ -DGCC_INSTRUMENT_PROGRAM_FLOW_ARCS
+endif
+
+if ENABLE_VIDEO
+webkitgtk_ldflags += -lgstinterfaces-0.10 -lgstvideo-0.10
+endif
+
+#
+# WEBKIT GTK+
+webkitgtk_cppflags += \
+-I $(top_builddir)/WebKit/gtk/WebView \
+-DBUILDING_CAIRO__=1 \
+-DBUILD_WEBKIT
+
+webkitgtk_h_api += \
+ WebKit/gtk/WebView/webkit.h \
+ WebKit/gtk/WebView/webkitdefines.h \
+ WebKit/gtk/WebView/webkitnetworkrequest.h \
+ WebKit/gtk/WebView/webkitwebframe.h \
+ WebKit/gtk/WebView/webkitwebview.h
+
+webkitgtk_built_sources += \
+ WebKit/gtk/WebView/webkit-marshal.h \
+ WebKit/gtk/WebView/webkit-marshal.cpp
+
+webkitgtk_headers += \
+ WebKit/gtk/WebView/webkitprivate.h \
+ WebKit/gtk/WebView/webkitsettings.h \
+ WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
+ WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
+ WebKit/gtk/WebCoreSupport/DragClientGtk.h \
+ WebKit/gtk/WebCoreSupport/EditorClientGtk.h \
+ WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \
+ WebKit/gtk/WebCoreSupport/InspectorClientGtk.h \
+ WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
+
+webkitgtk_sources += \
+ WebKit/gtk/WebView/webkitnetworkrequest.cpp \
+ WebKit/gtk/WebView/webkitprivate.cpp \
+ WebKit/gtk/WebView/webkitsettings.cpp \
+ WebKit/gtk/WebView/webkitwebframe.cpp \
+ WebKit/gtk/WebView/webkitwebview.cpp \
+ WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
+ WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
+ WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \
+ WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
+ WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
+ WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp \
+ WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
+
+webkitgtk_cleanfiles += \
+ $(top_builddir)/Programs/GtkLauncher \
+ $(top_builddir)/WebKit/gtk/WebKitGtk.pc
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = WebKit/gtk/WebKitGtk.pc
+
+WEBKIT_MARSHAL = $(CURDIR)/WebKit/gtk/WebView/webkit-marshal
+WEBKIT_MARSHAL_LIST = $(srcdir)/WebKit/gtk/WebView/webkit-marshal.list
+
+stamp_files := \
+ stamp-webkit-marshal.cpp \
+ stamp-webkit-marshal.h
+
+WebKit/gtk/WebView/webkit-marshal.cpp: stamp-webkit-marshal.cpp
+ @true
+
+WebKit/gtk/WebView/webkit-marshal.h: stamp-webkit-marshal.h
+ @true
+
+stamp-webkit-marshal.cpp: $(WEBKIT_MARSHAL_LIST)
+ echo "extern \"C\" {" > $(WEBKIT_MARSHAL).cpp && \
+ $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --body >> $(WEBKIT_MARSHAL).cpp && echo '}' >> $(WEBKIT_MARSHAL).cpp && \
+ echo timestamp > $(@F)
+
+stamp-webkit-marshal.h: $(WEBKIT_MARSHAL_LIST)
+ $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --header > $(WEBKIT_MARSHAL).h && \
+ echo timestamp > $(@F)
+
+# END WEBKIT GTK+
+
+# Files that will be cleaned
+MAINTAINERCLEANFILES := $(stamp_files) $(BUILT_SOURCES)
+DISTCLEANFILES := $(stamp_files) $(BUILT_SOURCES)
+CLEANFILES := $(stamp_files) $(BUILT_SOURCES)
+
+# Include module makefiles
+include JavaScriptCore/GNUmakefile.am
+include WebCore/GNUmakefile.am
+include WebKitTools/GNUmakefile.am
+
+
+# Autogenerated sources
+BUILT_SOURCES := \
+ $(javascriptcore_built_sources) \
+ $(javascriptcore_built_nosources) \
+ $(webcore_built_sources) \
+ $(webcore_built_nosources) \
+ $(webkitgtk_built_sources) \
+ $(webkitgtk_built_nosources)
+
+# Project-wide clean rules
+CLEANFILES += \
+ $(webkitgtk_cleanfiles) \
+ $(top_builddir)/Programs/DumpRenderTree \
+ $(top_builddir)/Programs/testkjs \
+ $(top_builddir)/Programs/dftables \
+ $(GENSOURCES)
+
+MAINTAINERCLEANFILES += \
+ $(srcdir)/aconfig.h.in \
+ configure \
+ config.* \
+ GNUmakefile.in \
+ INSTALL \
+ README
diff --git a/packages/webkit/files/autogen.sh b/packages/webkit/files/autogen.sh
new file mode 100644
index 0000000000..b7f7d37b2f
--- /dev/null
+++ b/packages/webkit/files/autogen.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+cd $srcdir
+
+DIE=0
+
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "You must have autoconf installed to compile $PROJECT."
+ echo "Install the appropriate package for your distribution,"
+ echo "or get the source tarball at http://ftp.gnu.org/gnu/autoconf/"
+ DIE=1
+}
+
+(automake --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "You must have automake installed to compile $PROJECT."
+ echo "Install the appropriate package for your distribution,"
+ echo "or get the source tarball at http://ftp.gnu.org/gnu/automake/"
+ DIE=1
+}
+
+if test "$DIE" -eq 1; then
+ exit 1
+fi
+
+rm -rf $top_srcdir/autom4te.cache
+
+touch README INSTALL
+
+aclocal || exit $?
+libtoolize --force || exit $?
+autoheader || exit $?
+automake --foreign --add-missing || exit $?
+autoconf || exit $?
+
+./configure $AUTOGEN_CONFIGURE_ARGS "$@" || exit $?
diff --git a/packages/webkit/files/configure.ac b/packages/webkit/files/configure.ac
new file mode 100644
index 0000000000..05c25b94a8
--- /dev/null
+++ b/packages/webkit/files/configure.ac
@@ -0,0 +1,384 @@
+AC_INIT([WebKit],[0.1],[http://bugs.webkit.org/])
+
+AC_PREREQ(2.59)
+
+AC_CONFIG_HEADERS([aconfig.h])
+AC_CONFIG_SRCDIR([WebCore/config.h])
+
+# see http://www.gnu.org/software/libtool/manual.html#Versioning
+LIBWEBKITGTK_VERSION=1:0:0
+AC_SUBST([LIBWEBKITGTK_VERSION])
+
+AM_INIT_AUTOMAKE([1.9 foreign tar-ustar subdir-objects])
+
+AM_MAINTAINER_MODE
+
+AC_CANONICAL_HOST
+
+# host checking - inspired by the GTK+ configure.in
+# TODO: os_mac, os_bsd
+AC_MSG_CHECKING([for native Win32])
+case "$host" in
+ *-*-mingw*)
+ os_win32=yes
+ ;;
+ *)
+ os_win32=no
+ ;;
+esac
+AC_MSG_RESULT([$os_win32])
+
+case "$host" in
+ *-*-linux*)
+ os_linux=yes
+ ;;
+ *-*-freebsd*)
+ os_freebsd=yes
+ ;;
+esac
+
+# If CXXFLAGS and CFLAGS are unset, default to -O2
+# This is to tell automake not to include '-g' if CXXFLAGS is not set
+# For more info - http://www.gnu.org/software/automake/manual/autoconf.html#C_002b_002b-Compiler
+if test -z "$CXXFLAGS"; then
+ CXXFLAGS="-O2"
+fi
+if test -z "$CFLAGS"; then
+ CFLAGS="-O2"
+fi
+
+# programs
+AC_DISABLE_STATIC
+AM_PROG_LIBTOOL
+AC_PROG_INSTALL
+AM_PROG_CC_STDC
+AC_PROG_CXX
+AC_PROG_CXX_C_O
+AM_PROG_CC_C_O
+
+AC_PATH_PROG(PERL, perl)
+if test -z "$PERL"; then
+ AC_MSG_ERROR([You need 'perl' to compile WebKit])
+fi
+
+AC_PATH_PROG(BISON, bison)
+if test -z "$BISON"; then
+ AC_MSG_ERROR([You need the 'bison' parser generator to compile WebKit])
+fi
+
+AC_PATH_PROG(FLEX, flex)
+if test -z "$FLEX"; then
+ AC_MSG_ERROR([You need the 'flex' lexer generator to compile WebKit])
+fi
+
+AC_PATH_PROG(GPERF, gperf)
+if test -z "$GPERF"; then
+ AC_MSG_ERROR([You need the 'gperf' hash function generator to compile WebKit])
+fi
+
+AC_PATH_PROG(MV, mv)
+if test -z "$MV"; then
+ AC_MSG_ERROR([You need 'mv' to compile WebKit])
+fi
+
+# GTK+ port only
+# Check for glib-genmarshal and glib-mkenums
+AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
+AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums])
+
+# Check whether a C++ was found (AC_PROG_CXX sets $CXX to "g++" even when it
+# doesn't exist)
+AC_LANG_PUSH([C++])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],[],[AC_MSG_ERROR([No C++ compiler found])])
+AC_LANG_POP([C++])
+
+# C/C++ Language Features
+AC_C_CONST
+AC_C_INLINE
+AC_C_VOLATILE
+
+# C/C++ Headers
+AC_HEADER_STDC
+AC_HEADER_STDBOOL
+
+# pthread
+AC_CHECK_HEADERS([pthread.h],
+ AC_DEFINE([HAVE_PTHREAD_H],[1],[Define if pthread exist]),
+ AC_MSG_ERROR([pthread support is required to build WebKit]))
+
+# libjpeg headers
+AC_CHECK_HEADERS([jpeglib.h])
+
+# check for pkg-config
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+if test "$PKG_CONFIG" = "no"; then
+ AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed in your PATH])
+fi
+
+# check for icu-config
+AC_PATH_PROG(icu_config, icu-config, no)
+if test "$icu_config" = "no"; then
+ AC_MSG_ERROR([Cannot find icu-config. ICU library is needed.])
+fi
+ICU_CFLAGS=`$icu_config --cflags`
+ICU_LIBS=`$icu_config --ldflags`
+AC_SUBST([ICU_CFLAGS])
+AC_SUBST([ICU_LIBS])
+
+# determine the GDK/GTK+ target
+AC_MSG_CHECKING([the target for WebKit GTK+])
+AC_ARG_WITH(webkit_target,
+ AC_HELP_STRING([--with-webkit-target=@<:@x11/win32/quartz/directfb@:>@],
+ [Select webkit target [default=x11]]),
+ [],[with_webkit_target="x11"])
+
+case "$with_webkit_target" in
+ x11|win32|quartz|directfb) ;;
+ *) AC_MSG_ERROR([Invalid target: must be x11, quartz, win32, or directfb.]) ;;
+esac
+
+AC_MSG_RESULT([$with_webkit_target])
+
+# minimum base dependencies
+GLIB_REQUIRED_VERSION=2.0
+GOBJECT_REQUIRED_VERSION=2.0
+GTHREAD_REQUIRED_VERSION=2.0
+PANGO_REQUIRED_VERSION=1.0
+CAIRO_REQUIRED_VERSION=1.2
+FONTCONFIG_REQUIRED_VERSION=2.4
+FREETYPE2_REQUIRED_VERSION=9.0
+LIBCURL_REQUIRED_VERSION=7.15
+LIBXML_REQUIRED_VERSION=2.6
+
+# optional modules
+GTK_REQUIRED_VERSION=2.0
+LIBXSLT_REQUIRED_VERSION=1.1.7
+SQLITE_REQUIRED_VERSION=3.0
+GSTREAMER_REQUIRED_VERSION=0.10
+GNOME_VFS_REQUIRED_VERSION=2.0
+
+PKG_CHECK_MODULES([DEPENDENCIES],
+ [glib-2.0 >= $GLIB_REQUIRED_VERSION
+ gobject-2.0 >= $GOBJECT_REQUIRED_VERSION
+ gthread-2.0 >= $GTHREAD_REQUIRED_VERSION
+ gtk+-2.0 >= $GTK_REQUIRED_VERSION
+ pango >= $PANGO_REQUIRED_VERSION
+ libcurl >= $LIBCURL_REQUIRED_VERSION
+ cairo >= $CAIRO_REQUIRED_VERSION
+ cairo-ft,
+ fontconfig >= $FONTCONFIG_REQUIRED_VERSION
+ freetype2 >= $FREETYPE2_REQUIRED_VERSION
+ libxml-2.0 >= $LIBXML_REQUIRED_VERSION])
+AC_SUBST([DEPENDENCIES_CFLAGS])
+AC_SUBST([DEPENDENCIES_LIBS])
+
+# check whether to build with debugging enabled
+AC_MSG_CHECKING([whether to do a debug build])
+AC_ARG_ENABLE(debug,
+ AC_HELP_STRING([--enable-debug],
+ [turn on debugging [default=no]]),
+ [enable_debug="yes"],[enable_debug="no"])
+AC_MSG_RESULT([$enable_debug])
+
+# check whether to build with database support
+AC_MSG_CHECKING([whether to enable HTML5 client-side storage support])
+AC_ARG_ENABLE(database,
+ AC_HELP_STRING([--enable-database],
+ [enable HTML5 client-side storage support [default=no]]),
+ [],[enable_database="yes"])
+AC_MSG_RESULT([$enable_database])
+
+# check whether to build with icon database support
+AC_MSG_CHECKING([whether to enable icon database support])
+AC_ARG_ENABLE(icon_database,
+ AC_HELP_STRING([--enable-icon-database],
+ [enable icon database [default=no]]),
+ [],[enable_icon_database="no"])
+AC_MSG_RESULT([$enable_icon_database])
+
+# check whether to enable HTML5 audio/video support
+AC_MSG_CHECKING([whether to enable HTML5 video support])
+AC_ARG_ENABLE(video,
+ AC_HELP_STRING([--enable-video],
+ [enable HTML5 video support [default=no]]),
+ [enable_video="yes"],[enable_video="no"])
+AC_MSG_RESULT([$enable_video])
+
+# check whether to enable XPath support
+AC_MSG_CHECKING([whether to enable XPath support])
+AC_ARG_ENABLE(xpath,
+ AC_HELP_STRING([--enable-xpath],
+ [enable support for XPath [default=no]]),
+ [],[enable_xpath="yes"])
+AC_MSG_RESULT([$enable_xpath])
+
+# check whether to enable XSLT support
+AC_MSG_CHECKING([whether to enable XSLT support])
+AC_ARG_ENABLE(xslt,
+ AC_HELP_STRING([--enable-xslt],
+ [enable support for XSLT [default=no]]),
+ [],[enable_xslt="yes"])
+AC_MSG_RESULT([$enable_xslt])
+
+# check whether to enable SVG support
+AC_MSG_CHECKING([whether to enable SVG support])
+AC_ARG_ENABLE(svg,
+ AC_HELP_STRING([--enable-svg],
+ [enable support for SVG [default=no]]),
+ [],[enable_svg="no"])
+AC_MSG_RESULT([$enable_svg])
+
+# check whether to enable support for SVG animation
+AC_MSG_CHECKING([whether to enable support for SVG animataion])
+AC_ARG_ENABLE(svg_animation,
+ AC_HELP_STRING([--enable-svg-animation],
+ [enable support for SVG animation feature (experimental) [default=no]]),
+ [],[enable_svg_animation="no"])
+AC_MSG_RESULT([$enable_svg_animation])
+
+# check whether to enable support for SVG filters
+AC_MSG_CHECKING([whether to enable support for SVG filters])
+AC_ARG_ENABLE(svg_filters,
+ AC_HELP_STRING([--enable-svg-filters],
+ [enable support for SVG filters (experimental) [default=no]]),
+ [],[enable_svg_filters="no"])
+AC_MSG_RESULT([$enable_svg_filters])
+
+# check whether to enable support for SVG fonts
+AC_MSG_CHECKING([whether to enable support for SVG fonts])
+AC_ARG_ENABLE(svg_fonts,
+ AC_HELP_STRING([--enable-svg-fonts],
+ [enable support for SVG fonts (experimental) [default=no]]),
+ [],[enable_svg_fonts="no"])
+AC_MSG_RESULT([$enable_svg_fonts])
+
+# check whether to enable SVG As Image support
+AC_MSG_CHECKING([whether to enable SVG as Image support])
+AC_ARG_ENABLE(svg_as_image,
+ AC_HELP_STRING([--enable-svg-as-image],
+ [enable SVG as Image support (experimental) [default=no]]),
+ [],[enable_svg_as_image="no"])
+AC_MSG_RESULT([$enable_svg_as_image])
+
+# check whether to enable SVG USE element support
+AC_MSG_CHECKING([whether to enable support for SVG use element])
+AC_ARG_ENABLE(svg_use_element,
+ AC_HELP_STRING([--enable-svg-use-element],
+ [enable SVG use element support (experimental) [default=no]]),
+ [],[enable_svg_use_element="no"])
+AC_MSG_RESULT([$enable_svg_use_element])
+
+# check whether to enable code coverage
+AC_MSG_CHECKING([whether to enable code coverage support])
+AC_ARG_ENABLE(coverage,
+ AC_HELP_STRING([--enable-coverage],
+ [enable code coverage support [default=no]]),
+ [],[enable_coverage="no"])
+AC_MSG_RESULT([$enable_coverage])
+
+# Add '-g' flag to gcc if it's debug build
+if test "$enable_debug" = "yes"; then
+ CXXFLAGS="$CXXFLAGS -g"
+ CFLAGS="$CFLAGS -g"
+fi
+
+# check if sqlite 3 is available
+if test "$enable_icon_database" = "yes" || test "$enable_database" = "yes"; then
+ PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= $SQLITE_REQUIRED_VERSION])
+ AC_SUBST([SQLITE3_CFLAGS])
+ AC_SUBST([SQLITE3_LIBS])
+fi
+
+# check if libxslt is available
+if test "$enable_xslt" = "yes"; then
+ PKG_CHECK_MODULES([LIBXSLT],[libxslt >= $LIBXSLT_REQUIRED_VERSION])
+ AC_SUBST([LIBXSLT_CFLAGS])
+ AC_SUBST([LIBXSLT_LIBS])
+fi
+
+# check if gstreamer is available
+if test "$enable_video" = "yes"; then
+ PKG_CHECK_MODULES([GSTREAMER],
+ [gstreamer-0.10 >= $GSTREAMER_REQUIRED_VERSION
+ gstreamer-base-0.10,
+ gstreamer-plugins-base-0.10,
+ gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED_VERSION])
+ AC_SUBST([GSTREAMER_CFLAGS])
+ AC_SUBST([GSTREAMER_LIBS])
+fi
+
+# check for code coverage support
+if test "$enable_coverage" = "yes"; then
+ COVERAGE_CFLAGS="-MD"
+ COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs"
+ AC_SUBST([COVERAGE_CFLAGS])
+ AC_SUBST([COVERAGE_LDFLAGS])
+fi
+
+# check for SVG features, enabling SVG if necessary
+if test "$enable_svg" = "no" && (\
+ test "$enable_svg_animation" = "yes" || \
+ test "$enable_svg_filters" = "yes" || \
+ test "$enable_svg_fonts" = "yes" || \
+ test "$enable_svg_as_image" = "yes" || \
+ test "$enable_svg_use_element" = "yes"); then
+
+ AC_MSG_WARN([SVG feature(s) requested but SVG is disabled.. Enabling SVG support])
+ enable_svg = yes
+ svg_flags = yes
+fi
+
+# OS conditionals
+AM_CONDITIONAL([OS_WIN32],[test "$os_win32" = "yes"])
+AM_CONDITIONAL([OS_UNIX],[test "$os_win32" = "no"])
+AM_CONDITIONAL([OS_LINUX],[test "$os_linux" = "yes"])
+AM_CONDITIONAL([OS_FREEBSD],[test "$os_freebsd" = "yes"])
+
+# target conditionals
+AM_CONDITIONAL([TARGET_X11], [test "$with_webkit_target" = "x11"])
+AM_CONDITIONAL([TARGET_WIN32], [test "$with_webkit_target" = "win32"])
+AM_CONDITIONAL([TARGET_QUARTZ], [test "$with_webkit_target" = "quartz"])
+AM_CONDITIONAL([TARGET_DIRECTFB], [test "$with_webkit_target" = "directfb"])
+
+# WebKit feature conditionals
+AM_CONDITIONAL([ENABLE_DEBUG],[test "$enable_debug" = "yes"])
+AM_CONDITIONAL([ENABLE_DATABASE],[test "$enable_database" = "yes"])
+AM_CONDITIONAL([ENABLE_ICONDATABASE],[test "$enable_icon_database" = "yes"])
+AM_CONDITIONAL([ENABLE_XPATH],[test "$enable_xpath" = "yes"])
+AM_CONDITIONAL([ENABLE_XSLT],[test "$enable_xslt" = "yes"])
+AM_CONDITIONAL([ENABLE_VIDEO],[test "$enable_video" = "yes"])
+AM_CONDITIONAL([ENABLE_SVG],[test "$enable_svg" = "yes"])
+AM_CONDITIONAL([ENABLE_SVG_ANIMATION],[test "$enable_svg_animation" = "yes"])
+AM_CONDITIONAL([ENABLE_SVG_FILTERS],[test "$enable_svg_filters" = "yes"])
+AM_CONDITIONAL([ENABLE_SVG_FONTS],[test "$enable_svg_fonts" = "yes"])
+AM_CONDITIONAL([ENABLE_SVG_AS_IMAGE],[test "$enable_svg_as_image" = "yes"])
+AM_CONDITIONAL([ENABLE_SVG_USE],[test "$enable_svg_use_element" = "yes"])
+AM_CONDITIONAL([ENABLE_COVERAGE],[test "$enable_coverage" = "yes"])
+AM_CONDITIONAL([SVG_FLAGS],[test "$svg_flags" = "yes"])
+
+AC_CONFIG_FILES([
+GNUmakefile
+WebKit/gtk/WebKitGtk.pc:WebKit/gtk/WebKitGtk.pc.in
+]
+)
+
+AC_OUTPUT
+
+echo "
+WebKit was configured with the following options:
+
+ Target : $with_webkit_target
+ Enable debug : $enable_debug
+ Code coverage support : $enable_coverage
+ HTML5 client-side storage support : $enable_database
+ HTML5 video element support : $enable_video
+ Icon database support : $enable_icon_database
+ SVG support : $enable_svg
+ SVG animation support : $enable_svg_animation
+ SVG filters support : $enable_svg_filters
+ SVG fonts support : $enable_svg_fonts
+ SVG as image support : $enable_svg_as_image
+ SVG use element support : $enable_svg_use_element
+ XPATH support : $enable_xpath
+ XSLT support : $enable_xslt
+"
diff --git a/packages/webkit/webkit-gtk_svn.bb b/packages/webkit/webkit-gtk_svn.bb
index c726020d1a..2e47d38dbd 100644
--- a/packages/webkit/webkit-gtk_svn.bb
+++ b/packages/webkit/webkit-gtk_svn.bb
@@ -12,6 +12,11 @@ FILES_webkit-gtklauncher-dbg = "${bindir}/.debug/GtkLauncher"
require webkit.inc
+SRC_URI += "file://autogen.sh \
+ file://configure.ac \
+ file://GNUmakefile.am \
+ "
+
PR = "r4"
do_install() {
diff --git a/packages/xcursor-transparent-theme/files/.mtn2git_empty b/packages/xcursor-transparent-theme/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xcursor-transparent-theme/files/.mtn2git_empty
diff --git a/packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/fix_watch_cursor.patch b/packages/xcursor-transparent-theme/files/fix_watch_cursor.patch
index 73a5b2a87a..73a5b2a87a 100644
--- a/packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/fix_watch_cursor.patch
+++ b/packages/xcursor-transparent-theme/files/fix_watch_cursor.patch
diff --git a/packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/use-relative-symlinks.patch b/packages/xcursor-transparent-theme/files/use-relative-symlinks.patch
index df28dfbc88..df28dfbc88 100644
--- a/packages/xcursor-transparent-theme/xcursor-transparent-theme-0.1.1/use-relative-symlinks.patch
+++ b/packages/xcursor-transparent-theme/files/use-relative-symlinks.patch
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
new file mode 100644
index 0000000000..e9e6479daf
--- /dev/null
+++ b/packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb
@@ -0,0 +1,15 @@
+LICENSE = "GPL"
+DESCRIPTION = "Transparent xcursor theme for handheld systems with visible watch cursor"
+SECTION = "x11/base"
+RREPLACES = "xcursor-transparent-theme"
+RPROVIDES = "xcursor-transparent-theme"
+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 \
+ file://skip_watch_cursor.patch;patch=1"
+S = "${WORKDIR}/xcursor-transparent-theme-${PV}"
+
+FILES_${PN} = "${datadir}/icons/xcursor-transparent/cursors/*"
+
+inherit autotools
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/packages/xorg-xserver/xserver-kdrive-1.3.0.0/tosa-fbdev.patch b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/tosa-fbdev.patch
new file mode 100644
index 0000000000..a935bc57de
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.3.0.0/tosa-fbdev.patch
@@ -0,0 +1,13 @@
+--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c.old 2007-12-24 04:54:13.000000000 -0600
++++ xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c 2007-12-25 01:13:27.000000000 -0600
+@@ -357,10 +357,7 @@ fbdevMapFramebuffer (KdScreenInfo *scree
+ KdMouseMatrix m;
+ FbdevPriv *priv = screen->card->driver;
+
+- if (scrpriv->randr != RR_Rotate_0 || priv->Have18Bpp)
+ scrpriv->shadow = TRUE;
+- else
+- scrpriv->shadow = FALSE;
+
+ KdComputeMouseMatrix (&m, scrpriv->randr, screen->width, screen->height);
+
diff --git a/packages/xorg-xserver/xserver-kdrive_1.4.bb b/packages/xorg-xserver/xserver-kdrive_1.4.bb
index 87880c9ef8..50b103495b 100644
--- a/packages/xorg-xserver/xserver-kdrive_1.4.bb
+++ b/packages/xorg-xserver/xserver-kdrive_1.4.bb
@@ -1,8 +1,9 @@
require xserver-kdrive-common.inc
-DEPENDS += "libxkbfile libxcalibrate pixman"
+DEPENDS += "hal libxkbfile libxcalibrate pixman"
PE = "1"
+PR = "r1"
SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
${KDRIVE_COMMON_PATCHES} \
diff --git a/packages/xrestop/xrestop_0.4.bb b/packages/xrestop/xrestop_0.4.bb
index 40396a2362..0ecf39a84b 100644
--- a/packages/xrestop/xrestop_0.4.bb
+++ b/packages/xrestop/xrestop_0.4.bb
@@ -1,5 +1,8 @@
+DESCRIPTION = "top-like statistics of X11 server resource usage by clients"
+SECTION = "x11/utils"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/xrestop"
LICENSE = "GPL"
+PR = "r1"
DEPENDS = "libxres libxext virtual/libx11"
diff --git a/packages/xscreensaver/xscreensaver-4.22/configure.in-includedir.patch b/packages/xscreensaver/xscreensaver-4.22/configure.in-includedir.patch
new file mode 100644
index 0000000000..723d8bd956
--- /dev/null
+++ b/packages/xscreensaver/xscreensaver-4.22/configure.in-includedir.patch
@@ -0,0 +1,72 @@
+--- xscreensaver-4.22/configure.in.orig 2007-12-23 18:33:43.000000000 +0000
++++ xscreensaver-4.22/configure.in 2007-12-23 18:35:33.000000000 +0000
+@@ -944,9 +944,6 @@
+ #
+ AC_DEFUN(AC_CHECK_X_HEADER, [
+ ac_save_CPPFLAGS="$CPPFLAGS"
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+ AC_CHECK_HEADER([$1],[$2],[$3],[$4])
+ CPPFLAGS="$ac_save_CPPFLAGS"])
+@@ -955,9 +952,6 @@
+ #
+ AC_DEFUN(AC_EGREP_X_HEADER, [
+ ac_save_CPPFLAGS="$CPPFLAGS"
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+ AC_EGREP_HEADER([$1], [$2], [$3], [$4])
+ CPPFLAGS="$ac_save_CPPFLAGS"])
+@@ -966,9 +960,6 @@
+ #
+ AC_DEFUN(AC_TRY_X_COMPILE, [
+ ac_save_CPPFLAGS="$CPPFLAGS"
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+ AC_TRY_COMPILE([$1], [$2], [$3], [$4])
+ CPPFLAGS="$ac_save_CPPFLAGS"])
+@@ -982,9 +973,6 @@
+ ac_save_LDFLAGS="$LDFLAGS"
+ # ac_save_LIBS="$LIBS"
+
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ # note: $X_CFLAGS includes $x_includes
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+@@ -1005,9 +993,6 @@
+ #
+ AC_DEFUN(AC_TRY_X_RUN, [
+ ac_save_CPPFLAGS="$CPPFLAGS"
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+ AC_TRY_RUN([$1], [$2], [$3], [$4])
+ CPPFLAGS="$ac_save_CPPFLAGS"])
+@@ -2763,9 +2748,6 @@
+ EOF
+
+ ac_save_CPPFLAGS="$CPPFLAGS"
+- if test \! -z "$includedir" ; then
+- CPPFLAGS="$CPPFLAGS -I$includedir"
+- fi
+ CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+ mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
+@@ -3395,9 +3377,6 @@
+ DEPEND_DEFINES=
+
+
+-if test \! -z "$includedir" ; then
+- INCLUDES="$INCLUDES -I$includedir"
+-fi
+
+ if test \! -z "$libdir" ; then
+ LDFLAGS="$LDFLAGS -L$libdir"
diff --git a/packages/xscreensaver/xscreensaver_4.22.bb b/packages/xscreensaver/xscreensaver_4.22.bb
index 6c2776d6aa..cac3776724 100644
--- a/packages/xscreensaver/xscreensaver_4.22.bb
+++ b/packages/xscreensaver/xscreensaver_4.22.bb
@@ -8,9 +8,12 @@ SECTION = "x11-misc"
LICENSE = "BSD"
DEPENDS = "intltool virtual/libx11 gtk+ libxml2 libglade"
+PR = "r1"
+
SRC_URI = "http://www.jwz.org/xscreensaver/xscreensaver-${PV}.tar.gz \
file://fixes.patch;patch=1 \
file://configure.in.patch;patch=1 \
+ file://configure.in-includedir.patch;patch=1 \
file://XScreenSaver"
# xscreensaver-demo is a glade app
@@ -35,6 +38,8 @@ FILES_xscreensaver-extra="${bindir}/xscreensaver-getimage*"
do_configure_prepend() {
sed -i 's:GTK_DATADIR="$GTK_DATADIR/share":GTK_DATADIR="${datadir}":' ${S}/configure.in
+
+ export includedir="/lib"
}
do_compile() {
diff --git a/packages/xserver-common/files/unbreak-simpad.patch b/packages/xserver-common/files/unbreak-simpad.patch
new file mode 100644
index 0000000000..7f557c317d
--- /dev/null
+++ b/packages/xserver-common/files/unbreak-simpad.patch
@@ -0,0 +1,18 @@
+--- xserver-common-1.18/X11/Xinit.d/12keymap.org 2007-08-24 14:14:31.000000000 +0300
++++ xserver-common-1.18/X11/Xinit.d/12keymap 2007-12-22 15:06:52.000000000 +0200
+@@ -15,14 +15,11 @@
+ "Sharp-Collie")
+ xmodmap - < /etc/X11/collie.xmodmap
+ ;;
+- "Simpad")
+- xmodmap - < /etc/X11/simpad.xmodmap
+- ;;
+ "HP iPAQ h6300")
+ xmodmap - < /etc/X11/h6300.xmodmap
+ ;;
+ # All the rest of keyboardless PDA machines use common buttonmap
+- "HP iPAQ"* | "Asus MyPal"*)
++ "Simpad" | "HP iPAQ"* | "Asus MyPal"*)
+ xmodmap - < /etc/X11/keyboardless.xmodmap
+ ;;
+ esac
diff --git a/packages/xserver-common/xserver-common_1.18.bb b/packages/xserver-common/xserver-common_1.18.bb
index a30a37c893..bf7b049939 100644
--- a/packages/xserver-common/xserver-common_1.18.bb
+++ b/packages/xserver-common/xserver-common_1.18.bb
@@ -2,14 +2,14 @@ DESCRIPTION = "Common X11 scripts and support files"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
-PR = "r0"
+PR = "r1"
PACKAGE_ARCH = "all"
# we are using a gpe-style Makefile
inherit gpe
-SRC_URI_append = " file://setDPI.sh "
+SRC_URI_append = " file://unbreak-simpad.patch;patch=1 file://setDPI.sh "
do_install_append() {
install -m 0755 "${WORKDIR}/setDPI.sh" "${D}/etc/X11/Xinit.d/50setdpi"
diff --git a/packages/zaurus-updater/zaurus-updater.bb b/packages/zaurus-updater/zaurus-updater.bb
index f98ece35d7..052560dcc9 100644
--- a/packages/zaurus-updater/zaurus-updater.bb
+++ b/packages/zaurus-updater/zaurus-updater.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update"
DEPENDS = "encdec-updater-native"
LICENSE = "zaurus-updater"
-PR = "r18"
+PR = "r20"
PACKAGES = ""
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -11,6 +11,10 @@ SRC_URI = "file://updater.sh \
file://gnu-tar.gz"
S = "${WORKDIR}"
+do_configure() {
+ sed -i "s/ZAURUS_UPDATER_VERSION/${PR}/" "${S}/updater.sh"
+}
+
do_compile() {
encdec-updater -e updater.sh
}
diff --git a/packages/zaurus-updater/zaurus-updater/updater.sh b/packages/zaurus-updater/zaurus-updater/updater.sh
index 2efa946f6c..22d4b3914d 100644
--- a/packages/zaurus-updater/zaurus-updater/updater.sh
+++ b/packages/zaurus-updater/zaurus-updater/updater.sh
@@ -34,6 +34,17 @@
# - Reformatted file - please use spaces not tabs
# - "version check" is only on Tosa and Poodle - breaks other machines
#
+# 2007.12.23 Matthias 'CoreDump' Hentges
+# - Fix kernel install on spitz machines
+# - Unify format of do_flashing()...
+# - Display ${PR} of zaurus-updater.bb to the user
+# - Polish HDD installer messages
+#
+# 2007.12.25 Matthias 'CoreDump' Hentges
+# -Add support for installing / updating u-boot
+
+# Set to "yes" to enable
+ENABLE_UBOOT_UPDATER="no"
DATAPATH=$1
TMPPATH=/tmp/update
@@ -120,16 +131,19 @@ check_for_tar()
do_rootfs_extraction()
{
UNPACKED_ROOTFS=1
- echo 'HDD root file system'
+ echo 'Installing HDD root file system'
if [ ! -f /hdd1/NotAvailable ]; then
umount /hdd1
fi
- echo 'Now formatting...'
+ echo -n '* Now formatting...'
mke2fs $MKE2FSOPT /dev/${IDE1}1 > /dev/null 2>&1
e2fsck -p /dev/${IDE1}1 > /dev/null
if [ "$?" != "0" ]; then
+ echo "FAILED"
echo "Error: Unable to create filesystem on microdrive!"
exit "$?"
+ else
+ echo "Done"
fi
mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1
@@ -139,14 +153,17 @@ do_rootfs_extraction()
fi
cd /hdd1
- echo 'Now extracting...'
+ echo -n '* Now extracting (this can take over 5m)...'
gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf -
if [ "$?" != "0" ]; then
+ echo "FAILED"
echo "Error: Unable to extract root filesystem archive!"
exit "$?"
+ else
+ echo "Done"
fi
- echo 'Done.'
+ echo 'HDD Installation Finished.'
# remount as RO
cd /
@@ -156,60 +173,67 @@ do_rootfs_extraction()
do_flashing()
{
- if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ]
- then
- echo "Error: File is too big to flash!"
- echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]"
- return
- fi
-
- if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ]
- then
- #check version
- /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD
- if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1
- then
- #no version info...
- rm -f $TMPHEAD > /dev/null 2>&1
- DATAPOS=0
- fi
- fi
-
- if [ $ISFORMATTED = 0 ]
- then
- /sbin/eraseall $TARGET_MTD > /dev/null 2>&1
- ISFORMATTED=1
- fi
-
- echo ''
- echo '0% 100%'
- PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
- PROGSTEP=`expr 25 / $PROGSTEP`
- if [ $PROGSTEP = 0 ]
- then
- PROGSTEP=1
- fi
-
- if [ -e $TMPHEAD ]
- then
- VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
- MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
- /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
- /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
- /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
- fi
-
- # Looks like Akita is quite unique when it comes to kernel flashing
+ if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ]
+ then
+ echo "Error: File is too big to flash!"
+ echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]"
+ return
+ fi
+
+ if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ]
+ then
+ #check version
+ /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD
+
+ if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1
+ then
+ #no version info...
+ rm -f $TMPHEAD > /dev/null 2>&1
+ DATAPOS=0
+ fi
+ fi
+
+ if [ $ISFORMATTED = 0 ]
+ then
+ /sbin/eraseall $TARGET_MTD > /dev/null 2>&1
+ ISFORMATTED=1
+ fi
+
+ if [ -e $TMPHEAD ]
+ then
+ VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
+ MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
+ /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+
+ /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
+ /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
+ fi
+
+ # Looks like Akita and Spitz are unique when it comes to kernel flashing
- if [ "$ZAURUS" = "akita" ] && [ $FLASH_TYPE = kernel ]; then
- echo $TARGETFILE':'$DATASIZE'bytes'
- echo ' ' > /tmp/data
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1
- /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1
- else
+ if [ "$ZAURUS" = "akita" -o "$ZAURUS" = "c3x00" ] && [ "$FLASH_TYPE" = "kernel" ]
+ then
+# echo $TARGETFILE':'$DATASIZE'bytes'
+ echo ""
+ echo -n "Installing SL-Cxx00 kernel..."
+ echo ' ' > /tmp/data
+ test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1
+ /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1
+ test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1
+ echo "Done"
+ else
+
+ echo ''
+ echo '0% 100%'
+ PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
+ PROGSTEP=`expr 25 / $PROGSTEP`
+
+ if [ $PROGSTEP = 0 ]
+ then
+ PROGSTEP=1
+ fi
+
#loop
while [ $DATAPOS -lt $DATASIZE ]
do
@@ -246,27 +270,76 @@ do_flashing()
done
done
fi
- echo ''
-
- #finish
- rm -f $TMPPATH/*.bin > /dev/null 2>&1
+ echo ''
+
+ #finish
+ rm -f $TMPPATH/*.bin > /dev/null 2>&1
+
+ if [ $RESULT = 0 ]
+ then
+ if [ -e $VTMPNAME ]
+ then
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+ rm -f $VTMPNAME > /dev/null 2>&1
+ fi
+
+ if [ -e $MTMPNAME ]
+ then
+ /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+ rm -f $MTMPNAME > /dev/null 2>&1
+ fi
+
+ [ "$FLASH_TYPE" != "kernel" ] && echo 'Done.'
+ else
+ echo 'Error!'
+ fi
+}
- if [ $RESULT = 0 ]
- then
- if [ -e $VTMPNAME ]
- then
- /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
- rm -f $VTMPNAME > /dev/null 2>&1
- fi
- if [ -e $MTMPNAME ]
- then
- /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
- rm -f $MTMPNAME > /dev/null 2>&1
- fi
- echo 'Done.'
- else
- echo 'Error!'
- fi
+update_uboot() {
+ # The flashing part of this function is based on pdaXrom's
+ # updater.sh
+
+ if test "$ENABLE_UBOOT_UPDATER" != "yes" -o -z "$1"
+ then
+ echo "u-boot updates not allowed."
+ return
+ fi
+
+ echo ""
+ echo "Installing u-boot bootloader:"
+
+ DATASIZE=`wc -c $TARGETFILE`
+ FSIZE=`echo $DATASIZE | cut -d' ' -f1`
+
+ echo -n "* Creating backup ($FSIZE Bytes)..."
+ if ( nandlogical /dev/mtd1 READ 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1
+ then
+ echo "Ok"
+
+ echo -n "* Flashing u-boot..."
+ if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE $1 ) > /dev/null 2>&1
+ then
+ echo "Success"
+ else
+ echo "FAILED"
+ echo "ERROR: Installation of u-boot failed!"
+
+ echo -n "* Trying to restore backup..."
+ if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1
+ then
+ echo "Success"
+ echo "Your old bootloader has been restored"
+ else
+ echo "FAILED"
+ echo "Sorry, it's NAND-Restore time for you =("
+ fi
+ fi
+ else
+ echo "FAILED"
+ echo "Could not create backup, aborting!"
+ echo "Your bootloader has not been altered in any way."
+ exit 1
+ fi
}
### Check model ###
@@ -300,13 +373,15 @@ case "$MODEL" in
;;
esac
+clear
+echo "---- Universal Zaurus Updater ZAURUS_UPDATER_VERSION ----"
echo 'MODEL: '$MODEL' ('$ZAURUS')'
mkdir -p $TMPPATH > /dev/null 2>&1
cd $DATAPATH/
-for TARGETFILE in zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ
+for TARGETFILE in u-boot.bin U-BOOT.BIN zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ
do
if [ ! -e $TARGETFILE ]
then
@@ -366,10 +441,18 @@ do
hdimage1.tgz)
if [ $UNPACKED_ROOTFS = 0 ]
then
- do_rootfs_extraction
+ do_rootfs_extraction
fi
;;
-
+
+ u-boot.bin)
+ if [ FLASHED_UBOOT != 1 ]
+ then
+ update_uboot "$TARGETFILE"
+ FLASHED_UBOOT="1"
+ fi
+ ;;
+
*)
;;
esac
diff --git a/packages/zaurusd/files/alsa-6000x-default.state.patch b/packages/zaurusd/files/alsa-6000x-default.state.patch
new file mode 100644
index 0000000000..e019f3a117
--- /dev/null
+++ b/packages/zaurusd/files/alsa-6000x-default.state.patch
@@ -0,0 +1,750 @@
+--- zaurusd/config/alsa/6000x-default.state.old 2007-12-22 04:31:38.000000000 -0600
++++ zaurusd/config/alsa/6000x-default.state 2007-12-26 00:06:02.000000000 -0600
+@@ -37,13 +37,23 @@ state.Tosa {
+ }
+ control.5 {
+ comment.access 'read write'
++ comment.type INTEGER
++ comment.count 2
++ comment.range '0 - 31'
++ iface MIXER
++ name 'PCM Playback Volume'
++ value.0 23
++ value.1 23
++ }
++ control.6 {
++ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Speaker Playback ZC Switch'
+ value true
+ }
+- control.6 {
++ control.7 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -51,7 +61,7 @@ state.Tosa {
+ name 'Speaker Playback Invert Switch'
+ value true
+ }
+- control.7 {
++ control.8 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -59,7 +69,7 @@ state.Tosa {
+ name 'Headphone Playback ZC Switch'
+ value true
+ }
+- control.8 {
++ control.9 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -67,7 +77,7 @@ state.Tosa {
+ name 'Mono Playback ZC Switch'
+ value false
+ }
+- control.9 {
++ control.10 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -76,7 +86,7 @@ state.Tosa {
+ name 'Mono Playback Volume'
+ value 0
+ }
+- control.10 {
++ control.11 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -85,16 +95,16 @@ state.Tosa {
+ name 'ALC Target Volume'
+ value 11
+ }
+- control.11 {
++ control.12 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'ALC Hold Time'
+- value 0
++ value 2
+ }
+- control.12 {
++ control.13 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -103,7 +113,7 @@ state.Tosa {
+ name 'ALC Decay Time'
+ value 3
+ }
+- control.13 {
++ control.14 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -112,7 +122,7 @@ state.Tosa {
+ name 'ALC Attack Time'
+ value 2
+ }
+- control.14 {
++ control.15 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -124,7 +134,7 @@ state.Tosa {
+ name 'ALC Function'
+ value None
+ }
+- control.15 {
++ control.16 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -133,7 +143,7 @@ state.Tosa {
+ name 'ALC Max Volume'
+ value 7
+ }
+- control.16 {
++ control.17 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -142,7 +152,7 @@ state.Tosa {
+ name 'ALC ZC Timeout'
+ value 0
+ }
+- control.17 {
++ control.18 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -150,7 +160,7 @@ state.Tosa {
+ name 'ALC ZC Switch'
+ value false
+ }
+- control.18 {
++ control.19 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -158,7 +168,7 @@ state.Tosa {
+ name 'ALC NG Switch'
+ value false
+ }
+- control.19 {
++ control.20 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -168,7 +178,7 @@ state.Tosa {
+ name 'ALC NG Type'
+ value 'Constant Gain'
+ }
+- control.20 {
++ control.21 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -177,16 +187,16 @@ state.Tosa {
+ name 'ALC NG Threshold'
+ value 31
+ }
+- control.21 {
++ control.22 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Mic Headphone Volume'
+- value 3
++ value 7
+ }
+- control.22 {
++ control.23 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -195,7 +205,7 @@ state.Tosa {
+ name 'ALC Headphone Volume'
+ value 5
+ }
+- control.23 {
++ control.24 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -203,7 +213,7 @@ state.Tosa {
+ name 'Out3 Switch'
+ value false
+ }
+- control.24 {
++ control.25 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -211,7 +221,7 @@ state.Tosa {
+ name 'Out3 ZC Switch'
+ value true
+ }
+- control.25 {
++ control.26 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -220,7 +230,7 @@ state.Tosa {
+ name 'Out3 Volume'
+ value 0
+ }
+- control.26 {
++ control.27 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -229,7 +239,7 @@ state.Tosa {
+ name 'PCBeep Bypass Headphone Volume'
+ value 0
+ }
+- control.27 {
++ control.28 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -238,7 +248,7 @@ state.Tosa {
+ name 'PCBeep Bypass Speaker Volume'
+ value 0
+ }
+- control.28 {
++ control.29 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -247,16 +257,16 @@ state.Tosa {
+ name 'PCBeep Bypass Phone Volume'
+ value 0
+ }
+- control.29 {
++ control.30 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Aux Playback Headphone Volume'
+- value 6
++ value 5
+ }
+- control.30 {
++ control.31 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -265,7 +275,7 @@ state.Tosa {
+ name 'Aux Playback Speaker Volume'
+ value 0
+ }
+- control.31 {
++ control.32 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -274,7 +284,7 @@ state.Tosa {
+ name 'Aux Playback Phone Volume'
+ value 0
+ }
+- control.32 {
++ control.33 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -283,7 +293,7 @@ state.Tosa {
+ name 'Phone Volume'
+ value 0
+ }
+- control.33 {
++ control.34 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+@@ -293,7 +303,7 @@ state.Tosa {
+ value.0 23
+ value.1 23
+ }
+- control.34 {
++ control.35 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -301,7 +311,7 @@ state.Tosa {
+ name 'Capture 20dB Boost Switch'
+ value true
+ }
+- control.35 {
++ control.36 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -309,7 +319,7 @@ state.Tosa {
+ name 'Capture to Phone 20dB Boost Switch'
+ value true
+ }
+- control.36 {
++ control.37 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -317,7 +327,7 @@ state.Tosa {
+ name '3D Upper Cut-off Switch'
+ value false
+ }
+- control.37 {
++ control.38 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -325,7 +335,7 @@ state.Tosa {
+ name '3D Lower Cut-off Switch'
+ value false
+ }
+- control.38 {
++ control.39 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -334,7 +344,7 @@ state.Tosa {
+ name '3D Playback Volume'
+ value 0
+ }
+- control.39 {
++ control.40 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -344,7 +354,7 @@ state.Tosa {
+ name 'Bass Control'
+ value 'Adaptive Boost'
+ }
+- control.40 {
++ control.41 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -352,7 +362,7 @@ state.Tosa {
+ name 'Bass Cut-off Switch'
+ value true
+ }
+- control.41 {
++ control.42 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -360,7 +370,7 @@ state.Tosa {
+ name 'Tone Cut-off Switch'
+ value false
+ }
+- control.42 {
++ control.43 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -368,7 +378,7 @@ state.Tosa {
+ name 'Playback Attenuate (-6dB) Switch'
+ value false
+ }
+- control.43 {
++ control.44 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -377,7 +387,7 @@ state.Tosa {
+ name 'Bass Volume'
+ value 8
+ }
+- control.44 {
++ control.45 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -386,7 +396,7 @@ state.Tosa {
+ name 'Treble Volume'
+ value 5
+ }
+- control.45 {
++ control.46 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -394,7 +404,7 @@ state.Tosa {
+ name 'Capture ADC Switch'
+ value false
+ }
+- control.46 {
++ control.47 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 2
+@@ -405,17 +415,17 @@ state.Tosa {
+ value.0 '+0.75dB Steps'
+ value.1 '+0.75dB Steps'
+ }
+- control.47 {
++ control.48 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 63'
+ iface MIXER
+ name 'Capture Volume'
+- value.0 63
+- value.1 63
++ value.0 0
++ value.1 0
+ }
+- control.48 {
++ control.49 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -423,7 +433,7 @@ state.Tosa {
+ name 'Capture ZC Switch'
+ value false
+ }
+- control.49 {
++ control.50 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -432,7 +442,7 @@ state.Tosa {
+ name 'Mic 1 Volume'
+ value 23
+ }
+- control.50 {
++ control.51 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+@@ -441,7 +451,7 @@ state.Tosa {
+ name 'Mic 2 Volume'
+ value 23
+ }
+- control.51 {
++ control.52 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -449,7 +459,7 @@ state.Tosa {
+ name 'Mic 20dB Boost Switch'
+ value false
+ }
+- control.52 {
++ control.53 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -457,7 +467,7 @@ state.Tosa {
+ name 'Speaker Mixer PCBeep Bypass Swi'
+ value false
+ }
+- control.53 {
++ control.54 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -465,7 +475,7 @@ state.Tosa {
+ name 'Speaker Mixer Aux Playback Swit'
+ value false
+ }
+- control.54 {
++ control.55 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -473,7 +483,7 @@ state.Tosa {
+ name 'Speaker Mixer Phone Bypass Swit'
+ value false
+ }
+- control.55 {
++ control.56 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -481,7 +491,7 @@ state.Tosa {
+ name 'Speaker Mixer Line Bypass Switc'
+ value false
+ }
+- control.56 {
++ control.57 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -489,7 +499,7 @@ state.Tosa {
+ name 'Speaker Mixer PCM Playback Swit'
+ value true
+ }
+- control.57 {
++ control.58 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -497,7 +507,7 @@ state.Tosa {
+ name 'Phone Mixer PCBeep Bypass Switc'
+ value false
+ }
+- control.58 {
++ control.59 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -505,7 +515,7 @@ state.Tosa {
+ name 'Phone Mixer Aux Playback Switch'
+ value false
+ }
+- control.59 {
++ control.60 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -513,7 +523,7 @@ state.Tosa {
+ name 'Phone Mixer Line Bypass Switch'
+ value false
+ }
+- control.60 {
++ control.61 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -521,7 +531,7 @@ state.Tosa {
+ name 'Phone Mixer PCM Playback Switch'
+ value false
+ }
+- control.61 {
++ control.62 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -529,7 +539,7 @@ state.Tosa {
+ name 'Phone Mixer Mic 1 Sidetone Swit'
+ value false
+ }
+- control.62 {
++ control.63 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+@@ -537,55 +547,103 @@ state.Tosa {
+ name 'Phone Mixer Mic 2 Sidetone Swit'
+ value false
+ }
+- control.63 {
++ control.64 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+- name 'HP Mixer PCBeep Bypass Switch'
++ name 'Right HP Mixer PCBeep Bypass Sw'
+ value false
+ }
+- control.64 {
++ control.65 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+- name 'HP Mixer Aux Playback Switch'
++ name 'Right HP Mixer Aux Playback Swi'
+ value false
+ }
+- control.65 {
++ control.66 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+- name 'HP Mixer Phone Bypass Switch'
++ name 'Right HP Mixer Phone Bypass Swi'
+ value false
+ }
+- control.66 {
++ control.67 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+- name 'HP Mixer Line Bypass Switch'
++ name 'Right HP Mixer Line Bypass Swit'
+ value false
+ }
+- control.67 {
++ control.68 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+- name 'HP Mixer PCM Playback Switch'
++ name 'Right HP Mixer PCM Playback Swi'
+ value true
+ }
+- control.68 {
++ control.69 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+- name 'HP Mixer Mic Sidetone Switch'
++ name 'Right HP Mixer Mic Sidetone Swi'
+ value false
+ }
+- control.69 {
++ control.70 {
++ comment.access 'read write'
++ comment.type BOOLEAN
++ comment.count 1
++ iface MIXER
++ name 'Left HP Mixer PCBeep Bypass Swi'
++ value false
++ }
++ control.71 {
++ comment.access 'read write'
++ comment.type BOOLEAN
++ comment.count 1
++ iface MIXER
++ name 'Left HP Mixer Aux Playback Swit'
++ value false
++ }
++ control.72 {
++ comment.access 'read write'
++ comment.type BOOLEAN
++ comment.count 1
++ iface MIXER
++ name 'Left HP Mixer Phone Bypass Swit'
++ value false
++ }
++ control.73 {
++ comment.access 'read write'
++ comment.type BOOLEAN
++ comment.count 1
++ iface MIXER
++ name 'Left HP Mixer Line Bypass Switc'
++ value false
++ }
++ control.74 {
++ comment.access 'read write'
++ comment.type BOOLEAN
++ comment.count 1
++ iface MIXER
++ name 'Left HP Mixer PCM Playback Swit'
++ value true
++ }
++ control.75 {
++ comment.access 'read write'
++ comment.type BOOLEAN
++ comment.count 1
++ iface MIXER
++ name 'Left HP Mixer Mic Sidetone Swit'
++ value false
++ }
++ control.76 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -595,7 +653,7 @@ state.Tosa {
+ name 'Differential Source'
+ value Mic
+ }
+- control.70 {
++ control.77 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -607,7 +665,7 @@ state.Tosa {
+ name 'Mic Select Source'
+ value Differential
+ }
+- control.71 {
++ control.78 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -623,7 +681,7 @@ state.Tosa {
+ name 'Right Capture Select'
+ value Mic
+ }
+- control.72 {
++ control.79 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -639,7 +697,7 @@ state.Tosa {
+ name 'Left Capture Select'
+ value Mic
+ }
+- control.73 {
++ control.80 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -651,7 +709,7 @@ state.Tosa {
+ name 'Capture Phone Mux'
+ value Mute
+ }
+- control.74 {
++ control.81 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -661,7 +719,7 @@ state.Tosa {
+ name 'Speaker Mux'
+ value 'Headphone Mix'
+ }
+- control.75 {
++ control.82 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -673,7 +731,7 @@ state.Tosa {
+ name 'Out3 Mux'
+ value Left
+ }
+- control.76 {
++ control.83 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -685,7 +743,7 @@ state.Tosa {
+ name 'ALC Sidetone Mux'
+ value Stereo
+ }
+- control.77 {
++ control.84 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+@@ -698,15 +756,14 @@ state.Tosa {
+ name 'Jack Function'
+ value Headphone
+ }
+- control.78 {
++ control.85 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+- comment.item.0 Auto
+- comment.item.1 On
+- comment.item.2 Off
++ comment.item.0 On
++ comment.item.1 Off
+ iface MIXER
+ name 'Speaker Function'
+- value Auto
++ value On
+ }
+ }
diff --git a/packages/zaurusd/files/zaurus-hinge.bl-off b/packages/zaurusd/files/zaurus-hinge.bl-off
index ec3cefb2ca..ba6746ce1b 100644
--- a/packages/zaurusd/files/zaurus-hinge.bl-off
+++ b/packages/zaurusd/files/zaurus-hinge.bl-off
@@ -6,13 +6,14 @@
# Filename: zaurus-hinge.bl-off
# Date: 04-Jun-06
-#test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
-#${ZD_BINDIR}/bl off
-
-
-STEP=5
DRIVER="`ls /sys/class/backlight/|head -n 1`"
BRIGHTNESS_FILE="/sys/class/backlight/$DRIVER/brightness"
-cat "$BRIGHTNESS_FILE" > /var/run/display_brightness.tmp
-echo 0 > "$BRIGHTNESS_FILE"
+if mkdir /var/run/display_brightness.lock
+then
+ cat "$BRIGHTNESS_FILE" > /var/run/display_brightness.tmp
+ echo 0 > "$BRIGHTNESS_FILE"
+ rm -rf /var/run/display_brightness.lock
+else
+ echo "BRIGHTNESS IS LOCKED"
+fi
diff --git a/packages/zaurusd/files/zaurus-hinge.bl-on b/packages/zaurusd/files/zaurus-hinge.bl-on
index 61598155f2..58227e8c5a 100644
--- a/packages/zaurusd/files/zaurus-hinge.bl-on
+++ b/packages/zaurusd/files/zaurus-hinge.bl-on
@@ -7,24 +7,39 @@
# Date: 04-Jun-06
test -z "${ZD_BINDIR}" && ZD_BINDIR="/usr/bin"
-${ZD_BINDIR}/bl on
+test -x ${ZD_BINDIR}/bl && ${ZD_BINDIR}/bl on
-# If the backlight does not come back on after a suspend, the driver is
-# still "on" (hence "bl on" does nothing) with a brightness of "0"
-( if test "`bl | awk '{print $2}'`" = "0"
-then
- x=0
- while test "$x" != 4
- do
- bl 10
- usleep 10
- bl 50
- usleep 10
-
- let x=$x+1
- done
+BL="fakeBl"
+
+fakeBl() {
+
+
+ case "$1" in
+ on) test -n "$2" && echo "$2" > "$BL_DRIVER" ;;
+ "") echo "on `cat "$BL_DRIVER"`";;
+ *) echo "$1" > "$BL_DRIVER" ;;
+ esac
+}
+
+for dir in `ls -1 /sys/class/backlight/`
+do
+ if test -e /sys/class/backlight/$dir/brightness
+ then
+ echo "Using [$dir] backlight driver"
+ BL_DRIVER="/sys/class/backlight/$dir/brightness"
+ break
+ fi
+done
+
+
+echo "### `$BL` ###"
+( if test "`$BL | awk '{print $2}'`" = "0"
+then
+
+ $BL 20
+
if mkdir /var/run/display_brightness.lock
then
if test -e /var/run/display_brightness.tmp
@@ -34,12 +49,8 @@ then
if test "$OLD_VALUE" -gt 1
then
- STEP=5
- DRIVER="`ls /sys/class/backlight/|head -n 1`"
- BRIGHTNESS_FILE="/sys/class/backlight/$DRIVER/brightness"
-
echo "SETTING $OLD_VALUE!"
- echo "$OLD_VALUE" > "$BRIGHTNESS_FILE"
+ $BL "$OLD_VALUE"
rm /var/run/display_brightness.tmp
echo "FINISH!"
fi
diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb
index 8bc0b2ba58..3ea0d2b22f 100644
--- a/packages/zaurusd/zaurusd_svn.bb
+++ b/packages/zaurusd/zaurusd_svn.bb
@@ -4,12 +4,13 @@ LICENSE = "GPL"
DEPENDS = "tslib"
RDEPENDS = "procps"
PV = "0.0+svn${SRCDATE}"
-PR = "r14"
+PR = "r16"
SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
file://zaurus-hinge.in \
file://add-poodle.patch;patch=1 \
file://alsa-cxx00-default.state.patch;patch=1 \
+ file://alsa-6000x-default.state.patch;patch=1 \
file://disable-alsa-handling.patch;patch=1 \
file://zaurus-hinge.matchbox-portrait \
file://zaurus-hinge.matchbox-landscape \