summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorRolf Leggewie <oe-devel@rolf.leggewie.biz>2007-06-29 23:21:52 +0000
committerRolf Leggewie <oe-devel@rolf.leggewie.biz>2007-06-29 23:21:52 +0000
commit93d19714f8efa8413b63070f1c8a1e0ee5266131 (patch)
tree6c954f87ddb0d396882b78dff7d7e5d8bc59efd3 /packages
parent4674b880ed6fad924653543ee16d6c55ec31c402 (diff)
parenteb71ae6bd2cecdcd19127066387676a56331b32d (diff)
merge of '57fa0ccbbdbca8c188108e3c4fbde4702976f3c6'
and 'b29b99ceeb63af04c2736ab8176705046dc326c0'
Diffstat (limited to 'packages')
-rw-r--r--packages/agg/.mtn2git_empty (renamed from packages/e17/e17-gpe-menu-convert/.mtn2git_empty)0
-rw-r--r--packages/agg/agg_2.5.bb40
-rw-r--r--packages/aircrack/aircrack-ng_0.7.bb25
-rw-r--r--packages/aircrack/aircrack-ng_0.9.1.bb (renamed from packages/aircrack/aircrack-ng_0.9.bb)6
-rw-r--r--packages/aircrack/aircrack-ng_1.0-svn.bb33
-rw-r--r--packages/aircrack/files/makefile-ldflags.patch13
-rw-r--r--packages/alsa/alsa-state.bb2
-rw-r--r--packages/alsa/alsa-state/c7x0/asound.state2
-rw-r--r--packages/altboot/altboot_1.1.1+wip-SVNR66.bb (renamed from packages/altboot/altboot_1.1.1+wip-SVNR59.bb)4
-rw-r--r--packages/angstrom/angstrom-gateway-image.bb23
-rw-r--r--packages/apex/apex_1.5.8.bb (renamed from packages/apex/apex_1.5.6.bb)0
-rw-r--r--packages/apex/nslu2/defconfig4
-rw-r--r--packages/arm-kernel-shim/arm-kernel-shim_1.5.bb2
-rw-r--r--packages/arm-kernel-shim/files/config-dsmg600.h2
-rw-r--r--packages/asterisk/files/.mtn2git_empty (renamed from packages/e17/engage/.mtn2git_empty)0
-rw-r--r--packages/asterisk/files/init77
-rw-r--r--packages/avahi/avahi_0.6.20.bb3
-rw-r--r--packages/bluez/bluez-gnome_0.9.bb11
-rw-r--r--packages/bluez/bluez-hcidump_1.37.bb13
-rw-r--r--packages/bluez/bluez-libs_3.12.bb1
-rw-r--r--packages/bluez/bluez-utils_3.11.bb2
-rw-r--r--packages/bluez/bluez-utils_3.12.bb114
-rw-r--r--packages/cairo/cairo_1.2.2.bb13
-rw-r--r--packages/cairo/cairo_1.3.14.bb10
-rw-r--r--packages/cairo/cairo_1.3.4.bb17
-rw-r--r--packages/cairo/cairo_1.4.0.bb7
-rw-r--r--packages/cairo/cairo_1.4.10.bb6
-rw-r--r--packages/cairo/cairo_1.4.2.bb7
-rw-r--r--packages/cairo/cairo_1.4.4.bb7
-rw-r--r--packages/cairo/cairo_git.bb2
-rw-r--r--packages/db/db_4.3.29.bb3
-rw-r--r--packages/directfb/++dfb_1.0.0.bb (renamed from packages/directfb/++dfb_0.9.25.bb)0
-rw-r--r--packages/directfb/directfb-examples_1.0.0.bb (renamed from packages/directfb/directfb-examples_0.9.25.bb)13
-rw-r--r--packages/directfb/directfb_1.0.0.bb13
-rw-r--r--packages/directfb/files/fix-includes.patch8
-rw-r--r--packages/directfb/files/fix-pkgconfig-specs.patch47
-rw-r--r--packages/directfb/fusionsound_0.9.26+cvs20070207.bb37
-rw-r--r--packages/directfb/fusionsound_1.0.0.bb37
-rw-r--r--packages/e17/e-iconbar_20060128.bb13
-rw-r--r--packages/e17/e-utils_20060501.bb11
-rw-r--r--packages/e17/e-utils_cvs.bb12
-rw-r--r--packages/e17/e-wm_0.16.999.038.bb8
-rw-r--r--packages/e17/e17-gpe-menu-convert/e17-gpe-menu-convert.sh162
-rw-r--r--packages/e17/e17-gpe-menu-convert_0.2.bb20
-rw-r--r--packages/e17/e17genmenu_4.2.0.bb17
-rw-r--r--packages/e17/eclair_20060128.bb14
-rw-r--r--packages/e17/edje-viewer_cvs.bb12
-rw-r--r--packages/e17/engage/no-local-includes.patch17
-rw-r--r--packages/e17/engage_20060128.bb15
-rw-r--r--packages/e17/entice_20060128.bb17
-rw-r--r--packages/e17/entice_cvs.bb (renamed from packages/e17/entice_20060416.bb)10
-rw-r--r--packages/e17/entrance-0.9.0.009/Xserver.patch22
-rw-r--r--packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch19
-rw-r--r--packages/e17/entrance-0.9.0.009/config-db.patch119
-rw-r--r--packages/e17/entrance-0.9.0.009/disable-autodetect.patch8
-rw-r--r--packages/e17/entrance-0.9.0.009/fix-auth-mode.patch13
-rw-r--r--packages/e17/entrance-0.9.0.009/run-Xinit.patch17
-rw-r--r--packages/e17/entrance-0.9.0.009/set-display-env.patch11
-rw-r--r--packages/e17/entrance-0.9.0.009/use-bash.patch57
-rw-r--r--packages/e17/entrance/allow-missing-xsession.patch22
-rw-r--r--packages/e17/entrance/config-db.patch136
-rw-r--r--packages/e17/entrance/fix-auth-mode.patch10
-rw-r--r--packages/e17/entrance/use-bash.patch63
-rw-r--r--packages/e17/entrance_0.9.0.009.bb40
-rw-r--r--packages/e17/entrance_0.9.0.010.bb (renamed from packages/e17/entrance_0.9.0.007.bb)13
-rw-r--r--packages/e17/examine_cvs.bb (renamed from packages/e17/examine_20060128.bb)7
-rw-r--r--packages/e17/expedite_cvs.bb5
-rw-r--r--packages/e17/rage_0.2.0.003.bb10
-rw-r--r--packages/efl/epsilon_0.3.0.008.bb18
-rw-r--r--packages/efl1/.mtn2git_empty (renamed from packages/e17/entrance-0.9.0.009/.mtn2git_empty)0
-rw-r--r--packages/efl1/ecore-native_0.9.9.038.bb28
-rw-r--r--packages/efl1/ecore.inc52
-rw-r--r--packages/efl1/ecore/.mtn2git_empty (renamed from packages/efl/.mtn2git_empty)0
-rw-r--r--packages/efl1/ecore/add-tslib-support.patch (renamed from packages/efl/ecore/add-tslib-support.patch)0
-rw-r--r--packages/efl1/ecore/configure-abstract-sockets.patch (renamed from packages/efl/ecore/configure-abstract-sockets.patch)0
-rw-r--r--packages/efl1/ecore/configure.patch (renamed from packages/efl/ecore/configure.patch)0
-rw-r--r--packages/efl1/ecore/ecore_kernel_input_header.patch (renamed from packages/efl/ecore/ecore_kernel_input_header.patch)0
-rw-r--r--packages/efl1/ecore/fix-directfb-include.patch13
-rw-r--r--packages/efl1/ecore/fix-tslib-configure.patch19
-rw-r--r--packages/efl1/ecore/remove-bad-code.patch (renamed from packages/efl/ecore/remove-bad-code.patch)0
-rw-r--r--packages/efl1/ecore_0.9.9.038.bb26
-rw-r--r--packages/efl1/edb_cvs.bb14
-rw-r--r--packages/efl1/edje-native_0.5.0.038.bb16
-rw-r--r--packages/efl1/edje_0.5.0.038.bb20
-rw-r--r--packages/efl1/eet-native_0.9.10.038.bb (renamed from packages/efl/eet-native_0.9.10.038.bb)0
-rw-r--r--packages/efl1/eet_0.9.10.038.bb11
-rw-r--r--packages/efl1/efreet_0.0.3.002.bb10
-rw-r--r--packages/efl1/embryo-native_0.9.1.038.bb3
-rw-r--r--packages/efl1/embryo_0.9.1.038.bb11
-rw-r--r--packages/efl1/emotion_0.0.1.006.bb16
-rw-r--r--packages/efl1/engrave_cvs.bb16
-rw-r--r--packages/efl1/enhance_cvs.bb15
-rw-r--r--packages/efl1/epeg_0.9.0.009.bb8
-rw-r--r--packages/efl1/epsilon/.mtn2git_empty (renamed from packages/efl/e/.mtn2git_empty)0
-rw-r--r--packages/efl1/epsilon/compile-fix.patch (renamed from packages/efl/epsilon/compile-fix.patch)0
-rw-r--r--packages/efl1/epsilon/server-is-not-client.patch (renamed from packages/efl/epsilon/server-is-not-client.patch)0
-rw-r--r--packages/efl1/epsilon_0.3.0.009.bb12
-rw-r--r--packages/efl1/esmart_0.9.0.009.bb23
-rw-r--r--packages/efl1/etk_0.1.0.003.bb13
-rw-r--r--packages/efl1/evas-native_0.9.9.038.bb60
-rw-r--r--packages/efl1/evas.inc57
-rw-r--r--packages/efl1/evas/.mtn2git_empty (renamed from packages/efl/ecore/.mtn2git_empty)0
-rw-r--r--packages/efl1/evas/fix-configure.patch (renamed from packages/efl/evas/fix-configure.patch)0
-rw-r--r--packages/efl1/evas/pagesize.patch (renamed from packages/efl/evas/pagesize.patch)0
-rw-r--r--packages/efl1/evas_0.9.9.038.bb58
-rw-r--r--packages/efl1/ewl_0.5.1.009.bb11
-rw-r--r--packages/efl1/exml_cvs.bb13
-rw-r--r--packages/efl1/imlib2_1.4.0.001.bb16
-rw-r--r--packages/elitaire/elitaire_0.0.5.bb12
-rw-r--r--packages/elitaire/files/fix-ewl-and-gettext.patch16
-rw-r--r--packages/elitaire/files/math.patch14
-rw-r--r--packages/esound/esound-gpe/audiofile-please.patch40
-rw-r--r--packages/esound/esound-gpe/configure.patch20
-rw-r--r--packages/esound/esound_0.2.36.bb17
-rw-r--r--packages/esound/files/.mtn2git_empty (renamed from packages/efl/edb-native/.mtn2git_empty)0
-rw-r--r--packages/esound/files/no-docs.patch11
-rw-r--r--packages/esound/old/esound-gpe_20020817.bb35
-rw-r--r--packages/esound/old/esound-gpe_20070109.bb34
-rw-r--r--packages/fbreader/fbreader_0.8.2a.bb10
-rw-r--r--packages/fbreader/files/zaurus-VGA.patch13
-rw-r--r--packages/gaim/pidgin_2.0.2.bb (renamed from packages/gaim/pidgin_2.0.1.bb)2
-rw-r--r--packages/gdal/gdal_1.3.2.bb6
-rw-r--r--packages/geoclue/geoclue_git.bb (renamed from packages/geoclue/geoclue_svn.bb)14
-rw-r--r--packages/geos/.mtn2git_empty (renamed from packages/efl/epsilon/.mtn2git_empty)0
-rw-r--r--packages/geos/geos_2.2.3+3.0.0rc4.bb21
-rw-r--r--packages/gpe-conf/gpe-conf_0.2.6.bb25
-rw-r--r--packages/gpsbabel/gpsbabel_1.2.5.bb6
-rw-r--r--packages/gpsbabel/gpsbabel_1.3.3.bb20
-rw-r--r--packages/gtk-webcore/midori_0.0.2.bb11
-rw-r--r--packages/gtk-webcore/osb-nrcore.inc9
-rw-r--r--packages/gtk-webcore/osb-nrcore_svn.bb2
-rw-r--r--packages/images/angstrom-minimal-image.bb4
-rw-r--r--packages/images/hentges-console-image.bb37
-rw-r--r--packages/images/hentges-x11-image.bb47
-rw-r--r--packages/images/opie-image-16mb.bb69
-rw-r--r--packages/initscripts/initscripts-1.0/fic-gta01/.mtn2git_empty (renamed from packages/efl/esmart/.mtn2git_empty)0
-rw-r--r--packages/initscripts/initscripts-1.0/fic-gta01/inittab48
-rwxr-xr-xpackages/initscripts/initscripts-1.0/mountall.sh5
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/iptables/iptables_1.3.8.bb30
-rw-r--r--packages/irssi/irssi_svn.bb2
-rw-r--r--packages/keymaps/files/jornada6xx/keymap-uk.map42
-rw-r--r--packages/libdaemon/libdaemon_0.11.bb20
-rw-r--r--packages/libftdi/files/doxygen-configure.patch14
-rw-r--r--packages/libftdi/libftdi-native_0.9.bb (renamed from packages/libftdi/libftdi-native_0.8.bb)0
-rw-r--r--packages/libftdi/libftdi_0.9.bb (renamed from packages/libftdi/libftdi_0.8.bb)2
-rw-r--r--packages/libid3/.mtn2git_empty (renamed from packages/efl/evas/.mtn2git_empty)0
-rw-r--r--packages/libid3/libid3_1.1.bb13
-rw-r--r--packages/libpcap/libpcap-0.9.6/shared.patch2
-rw-r--r--packages/libpcap/libpcap_0.9.6.bb4
-rw-r--r--packages/librsvg/librsvg_2.11.1.bb21
-rw-r--r--packages/librsvg/librsvg_2.16.0.bb26
-rw-r--r--packages/librsvg/librsvg_2.16.1.bb21
-rw-r--r--packages/librsvg/librsvg_2.6.5.bb20
-rw-r--r--packages/librsvg/librsvg_2.9.5.bb20
-rw-r--r--packages/linux/ezx-kernels_2.6.bb3
-rw-r--r--packages/linux/gta01-kernel_2.6.bb1
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.22/.mtn2git_empty (renamed from packages/efl/ewl/.mtn2git_empty)0
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.22/defconfig1984
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.21.5.bb (renamed from packages/linux/ixp4xx-kernel_2.6.21.1.bb)2
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-core.patch1120
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch332
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch16
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch177
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch274
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch1197
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch14
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch85
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch96
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/mux_cli.patch5395
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch282
-rw-r--r--packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch2868
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-kbd.patch139
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-mci.patch177
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch45
-rw-r--r--packages/linux/linux-ezx-2.6.21/ezx-ts.patch399
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch20
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch125
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-fix.patch164
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch224
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch269
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/mux_debug.patch551
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/.mtn2git_empty (renamed from packages/efl/files/.mtn2git_empty)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX51
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch135
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch40
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch (renamed from packages/linux/linux-ezx-2.6.21/a780-flip.patch)7
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch (renamed from packages/linux/linux-ezx-2.6.21/a780-kbd.patch)8
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch (renamed from packages/linux/linux-ezx-2.6.21/a780-leds.patch)17
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch (renamed from packages/linux/linux-ezx-2.6.21/a780-mci.patch)20
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-ts.patch40
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch (renamed from packages/linux/linux-ezx-2.6.21/a780-vibrator.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch (renamed from packages/linux/linux-ezx-2.6.21/asoc-pxa-ssp.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200 (renamed from packages/linux/linux-ezx-2.6.20.7/defconfig-a780)404
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/defconfig-a780 (renamed from packages/linux/linux-ezx-2.6.21/defconfig-a780)109
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/defconfig-e2 (renamed from packages/linux/linux-ezx/defconfig-rokr-e2)670
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/defconfig-e61102
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/defconfig-e680 (renamed from packages/linux/linux-ezx-2.6.21/defconfig-e680)116
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/dmesg-a780.log299
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch (renamed from packages/linux/linux-ezx-2.6.21/e680-kbd.patch)8
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch (renamed from packages/linux/linux-ezx-2.6.21/e680-leds.patch)17
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch (renamed from packages/linux/linux-ezx-2.6.21/e680-locksw.patch)7
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch (renamed from packages/linux/linux-ezx-2.6.21/e680-mci.patch)20
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-ts.patch40
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-backlight.patch)18
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-bp.patch)31
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-core.patch)234
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-emu.patch)24
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-enable-stuart.patch99
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-pcap.patch)122
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch (renamed from packages/linux/linux-ezx-2.6.21/ezx-pm.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/ezx-serial-bug-workaround.patch (renamed from packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-fix-init-errorpath.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-fix-makefile.patch (renamed from packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-fix-tty-driver.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-fix.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux-fix.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-ifdef-ezx-features.patch (renamed from packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-linux-2.6.21-fix.patch (renamed from packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-remove-flipbuffers.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-remove-get_halted_bit.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux-remove-usbh_finished_resume.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux_cli.patch (renamed from packages/linux/linux-ezx-2.6.21/mux_cli.patch)0
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/mux_debug.patch (renamed from packages/linux/linux-ezx-2.6.20.7/mux_debug.patch)0
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/patch-2.6.21.42816
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch (renamed from packages/linux/linux-ezx-2.6.21/pcap-ts.patch)58
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/pxa-kbd.patch (renamed from packages/linux/linux-ezx-2.6.21/pxa-kbd.patch)58
-rwxr-xr-x[-rw-r--r--]packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-support.2.patch (renamed from packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch)0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/series93
-rw-r--r--packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch237
-rw-r--r--packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch21
-rw-r--r--packages/linux/linux-ezx-2.6.21/update_patches.sh16
-rw-r--r--packages/linux/linux-ezx-2.6.21/wyrm-ts.diff124
-rw-r--r--packages/linux/linux-ezx/defconfig-a7801317
-rw-r--r--packages/linux/linux-ezx/defconfig-e6801314
-rw-r--r--packages/linux/linux-ezx/pxa-serial-gcc4.diff11
-rw-r--r--packages/linux/linux-ezx/sa1100-rtc-gcc4.diff11
-rw-r--r--packages/linux/linux-ezx/wyrm-ts.diff119
-rw-r--r--packages/linux/linux-ezx_2.6.16.13.bb110
-rw-r--r--packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb125
-rw-r--r--packages/linux/linux-ezx_2.6.20.7.bb125
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb110
-rw-r--r--packages/linux/linux-gta01.inc22
-rw-r--r--packages/linux/linux-gta01/defconfig-2.6.21.3-fic-gta01 (renamed from packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta01)81
-rw-r--r--packages/linux/linux-gta01/fix-EVIOCGRAB-semantics.patch97
-rw-r--r--packages/linux/linux-gta01/udc-nomodule-misccr.patch22
-rw-r--r--packages/linux/linux-gta01_2.6.17.14.bb101
-rw-r--r--packages/linux/linux-gta01_2.6.17.7.bb97
-rw-r--r--packages/linux/linux-gta01_2.6.20.bb102
-rw-r--r--packages/linux/linux-gta01_2.6.21.3.bb (renamed from packages/linux/linux-gta01_2.6.21.1.bb)8
-rw-r--r--packages/linux/linux-hackndev-2.6_svn.bb2
-rw-r--r--packages/linux/linux-handhelds-2.6/aximx50/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/h2200/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/h3600/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/h3800/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/h3900/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/h4000/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/h5000/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/htcblueangel/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/htcuniversal/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/htcwallaby/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6/magician/defconfig7
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh9.bb11
-rw-r--r--packages/linux/linux-jlime-current.bb19
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-qemuarm5
-rw-r--r--packages/linux/linux-rp-2.6.17/defconfig-qemux8620
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-akita376
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-c7x0367
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-collie1
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-hx20007
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-poodle2
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-qemuarm8
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-qemux8612
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-spitz286
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-tosa5
-rw-r--r--packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch2
-rw-r--r--packages/linux/linux-rp-2.6.21/.mtn2git_empty (renamed from packages/elitaire/.mtn2git_empty)0
-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-akita (renamed from packages/linux/linux-gta01/defconfig-2.6.20-fic-gta01)1136
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-bootcdx861606
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-c7x01786
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-collie1739
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-hx2000 (renamed from packages/linux/linux-rp-2.6.20/defconfig-ipaq-pxa270)262
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-poodle (renamed from packages/linux/linux-gta01/defconfig-fic-gta01)1147
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-qemuarm (renamed from packages/linux/linux-ezx/defconfig-a780-laforge)881
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-qemux861567
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-spitz1741
-rw-r--r--packages/linux/linux-rp-2.6.21/defconfig-tosa1612
-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/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.inc43
-rw-r--r--packages/linux/linux-rp_2.6.17.bb4
-rw-r--r--packages/linux/linux-rp_2.6.20.bb2
-rw-r--r--packages/linux/linux-rp_2.6.21.bb111
-rw-r--r--packages/linux/linux.inc8
-rw-r--r--packages/lyx/lyx_1.4.4+1.5.0rc1.bb27
-rw-r--r--packages/lyx/lyx_1.4.4.bb24
-rw-r--r--packages/madwifi/madwifi-ng_r2518-20070626.bb7
-rw-r--r--packages/misc-binary-only/prism-firmware.bb30
-rw-r--r--packages/misc-binary-only/prism-firmware/.mtn2git_empty (renamed from packages/elitaire/files/.mtn2git_empty)0
-rw-r--r--packages/misc-binary-only/prism-firmware/hostap.rules4
-rw-r--r--packages/misc-binary-only/prism-firmware/prism-fw.sh32
-rw-r--r--packages/misc-binary-only/prism3-firmware_1.8.3.bb27
-rw-r--r--packages/misc-binary-only/prism3-firmware_1.8.4.bb27
-rw-r--r--packages/mozilla/minimo/minimo-components-ssr-only.patch36
-rw-r--r--packages/mozilla/minimo/minimo-disable-mode-switch.patch11
-rw-r--r--packages/mozilla/minimo_cvs.bb4
-rw-r--r--packages/mplayer/mplayer_0.0+1.0rc1.bb8
-rw-r--r--packages/nonworking/efl/.mtn2git_empty (renamed from packages/esound/esound-gpe/.mtn2git_empty)0
-rw-r--r--packages/nonworking/efl/e/.mtn2git_empty (renamed from packages/esound/old/.mtn2git_empty)0
-rw-r--r--packages/nonworking/efl/e/fix-configure.patch (renamed from packages/efl/e/fix-configure.patch)0
-rw-r--r--packages/nonworking/efl/ecore-fb_0.9.9.038.bb (renamed from packages/efl/ecore-fb_0.9.9.038.bb)0
-rw-r--r--packages/nonworking/efl/ecore-native_0.9.9.038.bb (renamed from packages/efl/ecore-native_0.9.9.038.bb)0
-rw-r--r--packages/nonworking/efl/ecore-x11_0.9.9.038.bb (renamed from packages/efl/ecore-x11_0.9.9.038.bb)0
-rw-r--r--packages/nonworking/efl/ecore.inc (renamed from packages/efl/ecore.inc)0
-rw-r--r--packages/nonworking/efl/ecore/.mtn2git_empty (renamed from packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty)0
-rw-r--r--packages/nonworking/efl/ecore/add-tslib-support.patch104
-rw-r--r--packages/nonworking/efl/ecore/configure-abstract-sockets.patch16
-rw-r--r--packages/nonworking/efl/ecore/configure.patch21
-rw-r--r--packages/nonworking/efl/ecore/ecore_kernel_input_header.patch23
-rw-r--r--packages/nonworking/efl/ecore/fix-tslib-configure.patch (renamed from packages/efl/ecore/fix-tslib-configure.patch)0
-rw-r--r--packages/nonworking/efl/ecore/remove-bad-code.patch36
-rw-r--r--packages/nonworking/efl/ecore/remove-tslib-configure.patch (renamed from packages/efl/ecore/remove-tslib-configure.patch)0
-rw-r--r--packages/nonworking/efl/edb-native/.mtn2git_empty (renamed from packages/prism3-support/.mtn2git_empty)0
-rw-r--r--packages/nonworking/efl/edb-native/no-gtk-forkbomb.patch (renamed from packages/efl/edb-native/no-gtk-forkbomb.patch)0
-rw-r--r--packages/nonworking/efl/edb-native_1.0.5.007.bb (renamed from packages/efl/edb-native_1.0.5.007.bb)0
-rw-r--r--packages/nonworking/efl/edb-utils_1.0.5.007.bb (renamed from packages/efl/edb-utils_1.0.5.007.bb)0
-rw-r--r--packages/nonworking/efl/edb_1.0.5.007.bb (renamed from packages/efl/edb_1.0.5.007.bb)0
-rw-r--r--packages/nonworking/efl/edje-native_0.5.0.038.bb (renamed from packages/efl/edje-native_0.5.0.038.bb)0
-rw-r--r--packages/nonworking/efl/edje-utils_0.5.0.038.bb (renamed from packages/efl/edje-utils_0.5.0.038.bb)0
-rw-r--r--packages/nonworking/efl/edje_0.5.0.038.bb (renamed from packages/efl/edje_0.5.0.038.bb)0
-rw-r--r--packages/nonworking/efl/eet-native_0.9.10.038.bb4
-rw-r--r--packages/nonworking/efl/eet_0.9.10.038.bb (renamed from packages/efl/eet_0.9.10.038.bb)0
-rw-r--r--packages/nonworking/efl/efl.bbclass52
-rw-r--r--packages/nonworking/efl/efreet-native_0.0.3.002.bb (renamed from packages/efl/efreet-native_0.0.3.002.bb)0
-rw-r--r--packages/nonworking/efl/efreet_0.0.3.002.bb (renamed from packages/efl/efreet_0.0.3.002.bb)0
-rw-r--r--packages/nonworking/efl/embryo-native_0.9.1.038.bb (renamed from packages/efl/embryo-native_0.9.1.038.bb)0
-rw-r--r--packages/nonworking/efl/embryo-utils_0.9.1.038.bb (renamed from packages/efl/embryo-utils_0.9.1.038.bb)0
-rw-r--r--packages/nonworking/efl/embryo_0.9.1.038.bb (renamed from packages/efl/embryo_0.9.1.038.bb)0
-rw-r--r--packages/nonworking/efl/emotion_20061116.bb (renamed from packages/efl/emotion_20061116.bb)0
-rw-r--r--packages/nonworking/efl/engrave_20060128.bb (renamed from packages/efl/engrave_20060128.bb)0
-rw-r--r--packages/nonworking/efl/epdf_20060418.bb (renamed from packages/efl/epdf_20060418.bb)0
-rw-r--r--packages/nonworking/efl/epeg_0.9.0.008.bb (renamed from packages/efl/epeg_0.9.0.008.bb)0
-rw-r--r--packages/nonworking/efl/epsilon/.mtn2git_empty (renamed from packages/prism3-support/files/.mtn2git_empty)0
-rw-r--r--packages/nonworking/efl/epsilon/compile-fix.patch15
-rw-r--r--packages/nonworking/efl/epsilon/server-is-not-client.patch11
-rw-r--r--packages/nonworking/efl/epsilon_0.3.0.008.bb17
-rw-r--r--packages/nonworking/efl/esmart-fb_0.9.0.008.bb (renamed from packages/efl/esmart-fb_0.9.0.008.bb)0
-rw-r--r--packages/nonworking/efl/esmart-x11_0.9.0.008.bb (renamed from packages/efl/esmart-x11_0.9.0.008.bb)0
-rw-r--r--packages/nonworking/efl/esmart.inc (renamed from packages/efl/esmart.inc)0
-rw-r--r--packages/nonworking/efl/esmart/.mtn2git_empty (renamed from packages/s3c2410-utils/files/.mtn2git_empty)0
-rw-r--r--packages/nonworking/efl/esmart/compile-fix.patch (renamed from packages/efl/esmart/compile-fix.patch)0
-rw-r--r--packages/nonworking/efl/esmart/disable-x-only-features.patch (renamed from packages/efl/esmart/disable-x-only-features.patch)0
-rw-r--r--packages/nonworking/efl/esmart/ecore-fix.patch (renamed from packages/efl/esmart/ecore-fix.patch)0
-rw-r--r--packages/nonworking/efl/esmart/include-stdio.patch (renamed from packages/efl/esmart/include-stdio.patch)0
-rw-r--r--packages/nonworking/efl/etk_0.1.0.003.bb (renamed from packages/efl/etk_0.1.0.003.bb)0
-rw-r--r--packages/nonworking/efl/evas-fb_0.9.9.038.bb (renamed from packages/efl/evas-fb_0.9.9.038.bb)0
-rw-r--r--packages/nonworking/efl/evas-native_0.9.9.038.bb (renamed from packages/efl/evas-native_0.9.9.038.bb)0
-rw-r--r--packages/nonworking/efl/evas-x11_0.9.9.038.bb (renamed from packages/efl/evas-x11_0.9.9.038.bb)0
-rw-r--r--packages/nonworking/efl/evas.inc (renamed from packages/efl/evas.inc)0
-rw-r--r--packages/nonworking/efl/evas/.mtn2git_empty0
-rw-r--r--packages/nonworking/efl/evas/fix-configure.patch36
-rw-r--r--packages/nonworking/efl/evas/pagesize.patch13
-rw-r--r--packages/nonworking/efl/ewl/.mtn2git_empty0
-rw-r--r--packages/nonworking/efl/ewl/ewl-configure.patch (renamed from packages/efl/ewl/ewl-configure.patch)0
-rw-r--r--packages/nonworking/efl/ewl/minmax.patch (renamed from packages/efl/ewl/minmax.patch)0
-rw-r--r--packages/nonworking/efl/ewl/no-examples.patch (renamed from packages/efl/ewl/no-examples.patch)0
-rw-r--r--packages/nonworking/efl/ewl_0.5.1.008.bb (renamed from packages/efl/ewl_0.5.1.008.bb)0
-rw-r--r--packages/nonworking/efl/files/.mtn2git_empty0
-rw-r--r--packages/nonworking/efl/files/pkg.m4 (renamed from packages/efl/files/pkg.m4)0
-rw-r--r--packages/nonworking/efl/imlib2-fb_1.3.0.001.bb (renamed from packages/efl/imlib2-fb_1.3.0.001.bb)0
-rw-r--r--packages/nonworking/efl/imlib2-native_1.3.0.001.bb (renamed from packages/efl/imlib2-native_1.3.0.001.bb)0
-rw-r--r--packages/nonworking/efl/imlib2-x11_1.3.0.001.bb (renamed from packages/efl/imlib2-x11_1.3.0.001.bb)0
-rw-r--r--packages/nonworking/efl/imlib2.inc (renamed from packages/efl/imlib2.inc)0
-rw-r--r--packages/openocd/files/.mtn2git_empty0
-rw-r--r--packages/openocd/files/openocd-link-static.patch20
-rw-r--r--packages/openocd/openocd-native_svn.bb9
-rw-r--r--packages/openocd/openocd_svn.bb12
-rw-r--r--packages/pcmciautils/pcmciautils/.mtn2git_empty0
-rw-r--r--packages/pcmciautils/pcmciautils/modalias_update.patch56
-rw-r--r--packages/pcmciautils/pcmciautils_013.bb5
-rw-r--r--packages/pcmciautils/pcmciautils_014.bb5
-rw-r--r--packages/pimlico/dates_0.4.3.bb (renamed from packages/pimlico/dates_0.4.2.bb)2
-rw-r--r--packages/pimlico/tasks_0.4.bb6
-rw-r--r--packages/pimlico/tasks_0.9.bb (renamed from packages/pimlico/tasks_0.5.bb)0
-rw-r--r--packages/prism3-support/files/hostap-fw-load26
-rw-r--r--packages/prism3-support/prism3-support_1.0.0.bb15
-rw-r--r--packages/proj4/proj-4_4.9.bb4
-rw-r--r--packages/psplash/files/angstrom/.mtn2git_empty0
-rw-r--r--packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h1336
-rw-r--r--packages/psplash/files/angstrom/angstrom-psplash-vga-img.h2109
-rw-r--r--packages/psplash/files/angstrom/psplash-hand-img.h1336
-rw-r--r--packages/psplash/psplash_svn.bb2
-rw-r--r--packages/python/python-2.4.4-manifest.inc148
-rw-r--r--packages/python/python-fam_1.1.1.bb12
-rw-r--r--packages/python/python-pygtk2_2.6.3.bb3
-rw-r--r--packages/python/python-pygtk2_2.8.6.bb3
-rw-r--r--packages/python/python-setuptools_0.6c5.bb26
-rw-r--r--packages/python/python-simplejson_1.7.1.bb24
-rw-r--r--packages/python/python_2.4.4.bb11
-rw-r--r--packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2bin3485 -> 0 bytes
-rw-r--r--packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2bin18471 -> 0 bytes
-rw-r--r--packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb30
-rw-r--r--packages/s3c2410-utils/sjf2410-linux-native_20060807.bb31
-rw-r--r--packages/sidplay-base/.mtn2git_empty0
-rw-r--r--packages/sidplay-base/sidplay-base_1.0.9.bb10
-rw-r--r--packages/slugos-init/files/initscripts/umountinitrd.sh2
-rw-r--r--packages/slugos-init/files/reflash4
-rw-r--r--packages/slugos-init/files/sysconf5
-rw-r--r--packages/slugos-init/files/turnup9
-rw-r--r--packages/slugos-init/slugos-init_0.10.bb2
-rw-r--r--packages/sphyrna/.mtn2git_empty0
-rw-r--r--packages/sphyrna/sphyrna_svn.bb20
-rw-r--r--packages/sysvinit/sysvinit_2.86.bb3
-rw-r--r--packages/tasks/task-base.bb5
-rw-r--r--packages/tasks/task-boot.bb8
-rw-r--r--packages/tasks/task-hentges-base.bb28
-rw-r--r--packages/tasks/task-hentges-x11.bb29
-rw-r--r--packages/tasks/task-opie-16mb.bb54
-rw-r--r--packages/tasks/task-opie-all.bb65
-rw-r--r--packages/tasks/task-opie-apps.bb25
-rw-r--r--packages/tasks/task-opie-games.bb20
-rw-r--r--packages/tasks/task-opie.bb102
-rw-r--r--packages/tasks/task-python-everything_20060425.bb5
-rw-r--r--packages/tasks/task-slugos.bb7
-rw-r--r--packages/tetex/tetex-native_3.0.bb7
-rw-r--r--packages/tetex/tetex_3.0.bb16
-rw-r--r--packages/uboot/files/gta01_nand.h233
-rw-r--r--packages/uboot/files/qt2410.h256
-rw-r--r--packages/uboot/files/qt2410_nand.h256
-rw-r--r--packages/uboot/files/qt2410_ram.h256
-rw-r--r--packages/uboot/files/u-boot-20060807-qt2410.patch8435
-rw-r--r--packages/uboot/files/u-boot-20060907-gta01.patch901
-rw-r--r--packages/uboot/files/u-boot-20061030-gta01bv2.patch246
-rw-r--r--packages/uboot/files/u-boot-20061030-gta01v4.patch132
-rw-r--r--packages/uboot/files/u-boot-20061030-qt2410-gta01.patch9272
-rw-r--r--packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch19
-rw-r--r--packages/uboot/files/uboot-eabi-fix-HACK.patch197
-rw-r--r--packages/uboot/u-boot-mkimage-gta01-native_oe.bb1
-rw-r--r--packages/uboot/u-boot-mkimage-gta01-native_svn.bb20
-rw-r--r--packages/uboot/u-boot_1.1.4.bb4
-rw-r--r--packages/uboot/uboot-gta01_svn.bb72
-rw-r--r--packages/uboot/uboot-qt2410_0.0+cvs20061030.bb41
-rw-r--r--packages/uclibc/uclibc-0.9.29/armeb/.mtn2git_empty0
-rw-r--r--packages/uclibc/uclibc-0.9.29/armeb/uClibc.machine70
-rw-r--r--packages/uclibc/uclibc.inc2
-rw-r--r--packages/util-linux/util-linux.inc4
-rw-r--r--packages/util-linux/util-linux_2.12r.bb2
-rw-r--r--packages/uucp/files/.mtn2git_empty0
-rw-r--r--packages/uucp/files/policy.patch85
-rw-r--r--packages/uucp/uucp_1.07.bb12
-rw-r--r--packages/xfce/xfce4-panel.inc1
-rw-r--r--packages/xfce/xfce4-panel_4.4.1.bb2
-rw-r--r--packages/xfce/xfdesktop.inc1
-rw-r--r--packages/xfce/xfdesktop_4.4.1.bb2
-rw-r--r--packages/xorg-lib/files/ruutf8.patch (renamed from packages/xorg-lib/libx11/ruutf8.patch)0
-rw-r--r--packages/xserver-common/files/sl-cxx00-modmap.patch15
-rw-r--r--packages/xserver-common/xserver-common_1.16.bb2
466 files changed, 36701 insertions, 42712 deletions
diff --git a/packages/e17/e17-gpe-menu-convert/.mtn2git_empty b/packages/agg/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/e17/e17-gpe-menu-convert/.mtn2git_empty
+++ b/packages/agg/.mtn2git_empty
diff --git a/packages/agg/agg_2.5.bb b/packages/agg/agg_2.5.bb
new file mode 100644
index 0000000000..84bbb4d4bb
--- /dev/null
+++ b/packages/agg/agg_2.5.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Anti Grain Geometry - A High Quality Rendering Engine for C++"
+AUTHOR = "mcseem@antigrain.com"
+HOMEPAGE = "http://www.antigrain.com"
+SECTION = "libs"
+LICENSE = "AGG License"
+DEPENDS = "virtual/libx11 virtual/libsdl freetype"
+
+PR = "r0"
+
+SRC_URI = "http://www.antigrain.com/${P}.tar.gz"
+
+S = "${WORKDIR}/${P}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-sdl-exec-prefix=${STAGING_DIR}/${BUILD_SYS}"
+CFLAGS += " -I{$STAGING_INCDIR} "
+
+PACKAGES =+ "${PN}-sdl ${PN}-x11"
+
+FILES_${PN}-sdl = "${libdir}/libaggplatformsdl.so.*"
+FILES_${PN}-x11 += "${libdir}/libaggplatformX11.so.*"
+FILES_${PN} = "${libdir}/libagg.so.* \
+ ${libdir}/libaggfontfreetype.so.*"
+
+LEAD_SONAME = "libagg.so"
+
+do_stage() {
+ install -m 0644 libagg.m4 ${STAGING_DATADIR}/aclocal/
+ install -d ${STAGING_INCDIR}/agg2
+ cd include
+ headers=`find . -name "*.h"`
+ for f in $headers
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/agg2/
+ done
+}
+
+
+
diff --git a/packages/aircrack/aircrack-ng_0.7.bb b/packages/aircrack/aircrack-ng_0.7.bb
deleted file mode 100644
index bf5bd27d9d..0000000000
--- a/packages/aircrack/aircrack-ng_0.7.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SECTION = "console/network"
-DESCRIPTION = "Aircrack-ng is a set of tools for wep key statistical cracking"
-HOMEPAGE = "http://www.aircrack-ng.org/"
-LICENSE = "GPLv2"
-PR = "r2"
-
-SRC_URI = "http://download.aircrack-ng.org/aircrack-ng-${PV}.tar.gz"
-
-oe_compile() {
- oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="-O3 ${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LD="${LD}" LDFLAGS="${LDFLAGS}"
-}
-
-do_install() {
- install -d ${D}/${sbindir}
- install -d ${D}/${bindir}
- install -m 0755 airodump-ng ${D}/${sbindir}
- install -m 0755 aircrack-ng ${D}/${bindir}
- install -m 0755 aireplay-ng ${D}/${sbindir}
- install -m 0755 airdecap-ng ${D}/${bindir}
- install -m 0755 packetforge-ng ${D}/${bindir}
- install -m 0755 airmon-ng ${D}/${sbindir}
- install -m 0755 ivstools ${D}/${bindir}
- install -m 0755 kstats ${D}/${bindir}
- install -m 0755 airtun-ng ${D}/${bindir}
-}
diff --git a/packages/aircrack/aircrack-ng_0.9.bb b/packages/aircrack/aircrack-ng_0.9.1.bb
index d19e2e2065..116ee599e3 100644
--- a/packages/aircrack/aircrack-ng_0.9.bb
+++ b/packages/aircrack/aircrack-ng_0.9.1.bb
@@ -1,15 +1,11 @@
-SECTION = "console/network"
DESCRIPTION = "Aircrack-ng is a set of tools for wep key statistical cracking"
HOMEPAGE = "http://www.aircrack-ng.org/"
+SECTION = "console/network"
LICENSE = "GPLv2"
PR = "r2"
SRC_URI = "http://download.aircrack-ng.org/aircrack-ng-${PV}.tar.gz"
-oe_compile() {
- oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="-O3 ${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LD="${LD}" LDFLAGS="${LDFLAGS}"
-}
-
do_install() {
install -d ${D}/${sbindir}
install -d ${D}/${bindir}
diff --git a/packages/aircrack/aircrack-ng_1.0-svn.bb b/packages/aircrack/aircrack-ng_1.0-svn.bb
new file mode 100644
index 0000000000..a09957bb45
--- /dev/null
+++ b/packages/aircrack/aircrack-ng_1.0-svn.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "Aircrack-ng is a set of tools for wep key statistical cracking"
+HOMEPAGE = "http://www.aircrack-ng.org/"
+SECTION = "console/network"
+LICENSE = "GPLv2"
+DEPENDS = "openssl"
+PV = "0.9.99+svn${SRCDATE}"
+PR = "r0"
+SRC_URI = "svn://trac.aircrack-ng.org/svn/branch;module=1.0-dev;proto=http \
+ file://makefile-ldflags.patch;patch=1;maxdate=20070629 "
+
+S="${WORKDIR}/1.0-dev"
+
+DEFAULT_PREFERENCE = "-1"
+
+export TOOL_PREFIX = "${HOST_SYS}-"
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install -d ${D}/${bindir}
+ install -m 0755 src/airodump-ng ${D}/${sbindir}
+ install -m 0755 src/aircrack-ng ${D}/${bindir}
+ install -m 0755 src/aireplay-ng ${D}/${sbindir}
+ install -m 0755 src/airserv-ng ${D}/${sbindir}
+ install -m 0755 src/wesside-ng ${D}/${sbindir}
+ install -m 0755 src/airdecap-ng ${D}/${bindir}
+ install -m 0755 src/packetforge-ng ${D}/${bindir}
+ install -m 0755 airmon-ng ${D}/${sbindir}
+ install -m 0755 src/ivstools ${D}/${bindir}
+ install -m 0755 src/kstats ${D}/${bindir}
+ install -m 0755 src/airtun-ng ${D}/${sbindir}
+ install -m 0755 test/makeivs ${D}/${bindir}
+}
+
diff --git a/packages/aircrack/files/makefile-ldflags.patch b/packages/aircrack/files/makefile-ldflags.patch
new file mode 100644
index 0000000000..da2a0afaf1
--- /dev/null
+++ b/packages/aircrack/files/makefile-ldflags.patch
@@ -0,0 +1,13 @@
+Index: 1.0-dev/src/Makefile
+===================================================================
+--- 1.0-dev.orig/src/Makefile 2007-06-29 21:16:15.000000000 +0100
++++ 1.0-dev/src/Makefile 2007-06-29 21:16:32.000000000 +0100
+@@ -36,7 +36,7 @@
+ endif
+ LIBOSD = $(OSD)/lib$(OSD).a
+
+-LIBSSL = -lssl -lcrypto
++LIBSSL = -lssl -lcrypto $(LDFLAGS)
+
+ all: osd userland $(SBINFILES)
+
diff --git a/packages/alsa/alsa-state.bb b/packages/alsa/alsa-state.bb
index e4d23285f3..77ca92407b 100644
--- a/packages/alsa/alsa-state.bb
+++ b/packages/alsa/alsa-state.bb
@@ -10,7 +10,7 @@
DESCRIPTION = "Default ALSA configuration"
LICENSE = "GPL"
-PV = "0.0.3"
+PV = "0.0.4"
PR = "r0"
SRC_URI = "file://asound.state \
diff --git a/packages/alsa/alsa-state/c7x0/asound.state b/packages/alsa/alsa-state/c7x0/asound.state
index 1f5b41065e..7fd648fcf6 100644
--- a/packages/alsa/alsa-state/c7x0/asound.state
+++ b/packages/alsa/alsa-state/c7x0/asound.state
@@ -122,7 +122,7 @@ state.Corgi {
comment.count 1
iface MIXER
name 'Output Mixer HiFi Playback Swit'
- value true
+ value false
}
control.15 {
comment.access 'read write'
diff --git a/packages/altboot/altboot_1.1.1+wip-SVNR59.bb b/packages/altboot/altboot_1.1.1+wip-SVNR66.bb
index 4af0a7c630..912082c70f 100644
--- a/packages/altboot/altboot_1.1.1+wip-SVNR59.bb
+++ b/packages/altboot/altboot_1.1.1+wip-SVNR66.bb
@@ -1,8 +1,8 @@
require altboot.inc
-PR = "r9"
+PR = "r0"
-SVN_REV = "59"
+SVN_REV = "66"
SRC_URI = "svn://hentges.net/public/altboot;module=trunk;rev=${SVN_REV}"
do_install() {
diff --git a/packages/angstrom/angstrom-gateway-image.bb b/packages/angstrom/angstrom-gateway-image.bb
new file mode 100644
index 0000000000..aeca221d3d
--- /dev/null
+++ b/packages/angstrom/angstrom-gateway-image.bb
@@ -0,0 +1,23 @@
+#Angstrom gateway image
+#gives you a gateway with SMB, ssh and dnsmasqs
+LICENSE = "MIT"
+PR = "r0"
+
+ANGSTROM_EXTRA_INSTALL ?= ""
+DISTRO_SSH_DAEMON ?= "dropbear"
+
+RDEPENDS = "task-boot \
+ ${DISTRO_SSH_DAEMON} \
+ iptables \
+ samba swat \
+ dnsmasq \
+# vsftpd \
+ angstrom-version \
+ "
+
+export IMAGE_BASENAME = "gateway-image"
+export IMAGE_LINGUAS = ""
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+inherit image
+
diff --git a/packages/apex/apex_1.5.6.bb b/packages/apex/apex_1.5.8.bb
index ccf08ca9a0..ccf08ca9a0 100644
--- a/packages/apex/apex_1.5.6.bb
+++ b/packages/apex/apex_1.5.8.bb
diff --git a/packages/apex/nslu2/defconfig b/packages/apex/nslu2/defconfig
index cc92ce16dd..9bdbef2f6b 100644
--- a/packages/apex/nslu2/defconfig
+++ b/packages/apex/nslu2/defconfig
@@ -19,6 +19,7 @@ CONFIG_EXPERIMENTAL=y
#
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
@@ -133,6 +134,7 @@ 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
@@ -147,6 +149,8 @@ CONFIG_ENV_DEFAULT_CMDLINE="root=/dev/mtdblock4 rootfstype=jffs2 console=ttyS0,1
# CONFIG_ENV_DEFAULT_STARTUP_OVERRIDE 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
diff --git a/packages/arm-kernel-shim/arm-kernel-shim_1.5.bb b/packages/arm-kernel-shim/arm-kernel-shim_1.5.bb
index 4bdf7a86e3..0788f81609 100644
--- a/packages/arm-kernel-shim/arm-kernel-shim_1.5.bb
+++ b/packages/arm-kernel-shim/arm-kernel-shim_1.5.bb
@@ -3,7 +3,7 @@ SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://wiki.buici.com/twiki/bin/view/Main/ApexBootloader"
LICENSE = "GPL"
-# PR = "r1"
+PR = "r1"
COMPATIBLE_MACHINE = "(ixp4xx|nslu2)"
diff --git a/packages/arm-kernel-shim/files/config-dsmg600.h b/packages/arm-kernel-shim/files/config-dsmg600.h
index eda1e9c264..ebe53901b8 100644
--- a/packages/arm-kernel-shim/files/config-dsmg600.h
+++ b/packages/arm-kernel-shim/files/config-dsmg600.h
@@ -18,6 +18,8 @@
#define MACH_TYPE 964
+#define GUARANTEE_ATAG_CMDLINE
+
/* Uncomment one of these to switch the CPU into a specific mode. */
//#define FORCE_LITTLEENDIAN
//#define FORCE_BIGENDIAN
diff --git a/packages/e17/engage/.mtn2git_empty b/packages/asterisk/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/e17/engage/.mtn2git_empty
+++ b/packages/asterisk/files/.mtn2git_empty
diff --git a/packages/asterisk/files/init b/packages/asterisk/files/init
new file mode 100644
index 0000000000..1ece638c22
--- /dev/null
+++ b/packages/asterisk/files/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 asterisk14 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/avahi/avahi_0.6.20.bb b/packages/avahi/avahi_0.6.20.bb
new file mode 100644
index 0000000000..59de20446c
--- /dev/null
+++ b/packages/avahi/avahi_0.6.20.bb
@@ -0,0 +1,3 @@
+require avahi.inc
+
+PR = "r0"
diff --git a/packages/bluez/bluez-gnome_0.9.bb b/packages/bluez/bluez-gnome_0.9.bb
new file mode 100644
index 0000000000..d50e8e5fde
--- /dev/null
+++ b/packages/bluez/bluez-gnome_0.9.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "BLuetooth configuration applet"
+LICENSE = "GPL+LGPL"
+
+DEPENDS = "dbus-glib gconf libnotify gtk+"
+
+SRC_URI = "http://bluez.sourceforge.net/download/${P}.tar.gz"
+
+inherit autotools pkgconfig gconf
+
+FILES_${PN} += "${datadir}/gconf"
+
diff --git a/packages/bluez/bluez-hcidump_1.37.bb b/packages/bluez/bluez-hcidump_1.37.bb
new file mode 100644
index 0000000000..877c8db33c
--- /dev/null
+++ b/packages/bluez/bluez-hcidump_1.37.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Linux Bluetooth Stack HCI Debugger Tool."
+SECTION = "console"
+PRIORITY = "optional"
+DEPENDS = "bluez-libs"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-hcidump-${PV}.tar.gz"
+S = "${WORKDIR}/bluez-hcidump-${PV}"
+
+EXTRA_OECONF = "--with-bluez-libs=${STAGING_LIBDIR} --with-bluez-includes=${STAGING_INCDIR}"
+
+inherit autotools
diff --git a/packages/bluez/bluez-libs_3.12.bb b/packages/bluez/bluez-libs_3.12.bb
new file mode 100644
index 0000000000..6ddf62a4fb
--- /dev/null
+++ b/packages/bluez/bluez-libs_3.12.bb
@@ -0,0 +1 @@
+require bluez-libs.inc
diff --git a/packages/bluez/bluez-utils_3.11.bb b/packages/bluez/bluez-utils_3.11.bb
index 6ac6c8f977..2419f431f6 100644
--- a/packages/bluez/bluez-utils_3.11.bb
+++ b/packages/bluez/bluez-utils_3.11.bb
@@ -2,7 +2,7 @@ require bluez-utils.inc
DEPENDS += "glib-2.0"
-DEFAULT_PREFERENCE = "-1"
+#DEFAULT_PREFERENCE = "-1"
SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
file://hcid.conf \
diff --git a/packages/bluez/bluez-utils_3.12.bb b/packages/bluez/bluez-utils_3.12.bb
new file mode 100644
index 0000000000..e543eed649
--- /dev/null
+++ b/packages/bluez/bluez-utils_3.12.bb
@@ -0,0 +1,114 @@
+require bluez-utils.inc
+
+DEPENDS += "glib-2.0"
+
+SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \
+ file://hcid.conf \
+ file://02dtl1_cs.sh \
+ "
+PR = "r2"
+
+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 \
+ "
+
+# The config options are explained below:
+
+# --enable-obex enable OBEX support
+# --enable-alsa enable ALSA support, not needed for nokia770, nokia800 and fic-gtao1
+# --enable-cups install CUPS backend support
+# --enable-bccmd install BCCMD interface utility
+# --enable-avctrl install Audio/Video control utility
+# --enable-hid2hci install HID mode switching utility
+# --enable-dfutool install DFU firmware upgrade utility
+
+# --enable-glib For systems that use and install GLib anyway
+# --disable-sdpd The sdpd is obsolete and should no longer be used. This of course requires that hcid will be started with -s to enable the SDP server
+
+#Following services can be enabled so far:
+# --enable-network
+# --enable-serial
+# --enable-input
+# --enable-audio
+# --enable-echo
+
+#There is no need to modify any init script. They will be started
+#automatically or on demand. Only /etc/bluetooth/*.service files should
+#be patched to change name or the autostart value.
+# --enable-configfile
+# --enable-initscripts
+
+#For even smaller -doc packages
+# --disable-manpages
+# --disable-pcmciarules
+
+#I haven't seen any embedded device with HID proxy support. So simply
+#disable it:
+# --disable-hid2hci
+
+
+PACKAGES =+ "${PN}-compat"
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default/bluetooth \
+ "
+
+CONFFILES_${PN}-compat = " \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
+FILES_${PN} = " \
+ ${base_sbindir}/hcid \
+ ${libdir}/bluetooth \
+ ${sysconfdir}/init.d/bluetooth \
+ ${sysconfdir}/bluetooth/*.service \
+ ${sysconfdir}/bluetooth/hcid.conf \
+ ${sysconfdir}/default \
+ ${sysconfdir}/dbus-1 \
+ ${base_sbindir}/hciattach \
+ "
+
+#Package 02dtl1_cs.sh, which is a nasty hack to get dtl1c_cs cards working with suspend/resume
+FILES_${PN} += "${sysconfdir}/apm/"
+
+FILES_${PN}-dbg += " \
+ ${libdir}/bluetooth/.debug \
+ "
+
+FILES_${PN}-compat = " \
+ ${base_bindir}/sdptool \
+ ${base_bindir}/dund \
+ ${base_bindir}/rctest \
+ ${base_bindir}/ciptool \
+ ${base_bindir}/l2test \
+ ${base_bindir}/rfcomm \
+ ${base_bindir}/hcitool \
+ ${base_bindir}/pand \
+ ${base_bindir}/hidd \
+ ${base_bindir}/l2ping \
+ ${base_sbindir}/hciconfig \
+ ${base_sbindir}/bccmd \
+ ${base_sbindir}/hciemu \
+ ${base_sbindir}/hid2hci \
+ ${base_bindir}/passkey-agent \
+ ${sysconfdir}/bluetooth/rfcomm.conf \
+ "
+
+FILES_bluez-cups-backend = "${libdir}/cups/backend/bluetooth"
+RDEPENDS_bluez-cups-backend = "cups"
+
+
diff --git a/packages/cairo/cairo_1.2.2.bb b/packages/cairo/cairo_1.2.2.bb
deleted file mode 100644
index f6667eae1b..0000000000
--- a/packages/cairo/cairo_1.2.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "virtual/libx11 libsm libpng fontconfig libxrender"
-DESCRIPTION = "Cairo graphics library"
-LICENSE = "MPL LGPL"
-
-SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage () {
-autotools_stage_all
-}
diff --git a/packages/cairo/cairo_1.3.14.bb b/packages/cairo/cairo_1.3.14.bb
deleted file mode 100644
index 6bc0cb37f7..0000000000
--- a/packages/cairo/cairo_1.3.14.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-#This is a development snapshot, so lets hint OE to use the releases
-DEFAULT_PREFERENCE = "-1"
-
-require cairo.inc
-
-SRC_URI = "http://cairographics.org/snapshots/cairo-${PV}.tar.gz \
- file://cairo-surface-cache-3.patch;patch=1"
-
-PR = "r0"
-
diff --git a/packages/cairo/cairo_1.3.4.bb b/packages/cairo/cairo_1.3.4.bb
deleted file mode 100644
index 19e3f7a872..0000000000
--- a/packages/cairo/cairo_1.3.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-#This is a development snapshot, so lets hint OE to use the releases
-DEFAULT_PREFERENCE = "-1"
-
-SECTION = "libs"
-PRIORITY = "optional"
-DEPENDS = "virtual/libx11 libsm libpng fontconfig libxrender"
-DESCRIPTION = "Cairo graphics library"
-LICENSE = "MPL LGPL"
-
-SRC_URI = "http://cairographics.org/snapshots/cairo-${PV}.tar.gz \
- file://configure.in_requires_pkg-config-0.15.diff;patch=1;pnum=2"
-
-inherit autotools pkgconfig
-
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/cairo/cairo_1.4.0.bb b/packages/cairo/cairo_1.4.0.bb
deleted file mode 100644
index 3e5d2fdb15..0000000000
--- a/packages/cairo/cairo_1.4.0.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require cairo.inc
-
-SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
- file://cairo-surface-cache-3.patch;patch=1"
-
-PR = "r0"
-
diff --git a/packages/cairo/cairo_1.4.10.bb b/packages/cairo/cairo_1.4.10.bb
new file mode 100644
index 0000000000..845e14fc29
--- /dev/null
+++ b/packages/cairo/cairo_1.4.10.bb
@@ -0,0 +1,6 @@
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz"
+
+PR = "r0"
+
diff --git a/packages/cairo/cairo_1.4.2.bb b/packages/cairo/cairo_1.4.2.bb
deleted file mode 100644
index 3e5d2fdb15..0000000000
--- a/packages/cairo/cairo_1.4.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require cairo.inc
-
-SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
- file://cairo-surface-cache-3.patch;patch=1"
-
-PR = "r0"
-
diff --git a/packages/cairo/cairo_1.4.4.bb b/packages/cairo/cairo_1.4.4.bb
deleted file mode 100644
index 5f4a36f572..0000000000
--- a/packages/cairo/cairo_1.4.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require cairo.inc
-
-SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
- file://cairo-workqueue.patch;patch=1"
-
-PR = "r0"
-
diff --git a/packages/cairo/cairo_git.bb b/packages/cairo/cairo_git.bb
index 3da41f382d..f4d62ee7fb 100644
--- a/packages/cairo/cairo_git.bb
+++ b/packages/cairo/cairo_git.bb
@@ -7,7 +7,7 @@ DEPENDS = "virtual/libx11 libsm libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
-PV = "1.4.7+git${SRCDATE}"
+PV = "1.5.1+git${SRCDATE}"
SRC_URI = "git://git.cairographics.org/git/cairo;protocol=git \
"
diff --git a/packages/db/db_4.3.29.bb b/packages/db/db_4.3.29.bb
index 474e73724f..750822fafe 100644
--- a/packages/db/db_4.3.29.bb
+++ b/packages/db/db_4.3.29.bb
@@ -14,7 +14,7 @@ HOMEPAGE = "http://www.sleepycat.com"
LICENSE = "BSD Sleepycat"
VIRTUAL_NAME ?= "virtual/db"
CONFLICTS = "db3"
-PR = "r7"
+PR = "r8"
SRC_URI = "http://downloads.sleepycat.com/db-${PV}.tar.gz"
#SRC_URI_MD5 = "http://downloads.sleepycat.com/db-${PV}.tar.gz.md5"
@@ -71,6 +71,7 @@ EXTRA_OECONF += "${MUTEX}"
# configure.
CONFIG_SITE = ""
do_configure() {
+ ( cd ${WORKDIR}/db-${PV}/dist ; gnu-configize )
oe_runconf
}
diff --git a/packages/directfb/++dfb_0.9.25.bb b/packages/directfb/++dfb_1.0.0.bb
index f440e117ff..f440e117ff 100644
--- a/packages/directfb/++dfb_0.9.25.bb
+++ b/packages/directfb/++dfb_1.0.0.bb
diff --git a/packages/directfb/directfb-examples_0.9.25.bb b/packages/directfb/directfb-examples_1.0.0.bb
index 28de29c4a6..8a792b4ae4 100644
--- a/packages/directfb/directfb-examples_0.9.25.bb
+++ b/packages/directfb/directfb-examples_1.0.0.bb
@@ -1,10 +1,10 @@
-DESCRIPTION = "DirectFB examples"
+DESCRIPTION = "DirectFB extra providers"
DEPENDS = "directfb"
-SECTION = "devel/examples"
+SECTION = "libs"
LICENSE = "GPL"
-SRC_URI = "http://www.directfb.org/downloads/Extras/DirectFB-examples-${PV}.tar.gz"
-S = "${WORKDIR}/DirectFB-examples-${PV}"
+SRC_URI = "http://www.directfb.org/downloads/Extras/DirectFB-extra-${PV}.tar.gz"
+S = "${WORKDIR}/DirectFB-extra-${PV}"
inherit autotools
@@ -13,3 +13,8 @@ do_configure_append() {
find ${S} -type f | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
}
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/directfb/directfb_1.0.0.bb b/packages/directfb/directfb_1.0.0.bb
index caa8dbee8f..c2d249e978 100644
--- a/packages/directfb/directfb_1.0.0.bb
+++ b/packages/directfb/directfb_1.0.0.bb
@@ -7,7 +7,7 @@ SECTION = "libs"
LICENSE = "LGPL"
HOMEPAGE = "http://directfb.org"
DEPENDS = "jpeg libpng freetype zlib tslib"
-PR = "r4"
+PR = "r5"
RV = "1.0-0"
SRC_URI = "http://www.directfb.org/download/DirectFB/DirectFB-${PV}.tar.gz \
@@ -26,6 +26,7 @@ EXTRA_OECONF = "\
--enable-libmpeg3=no \
--enable-freetype=yes \
--enable-sdl=no \
+ --enable-vnc=no \
"
do_stage() {
@@ -38,18 +39,18 @@ do_install() {
FILES_directfb-dbg_append = " ${libdir}/directfb-${RV}/*/*/.debug/*.so \
- ${libdir}/directfb-${RV}/*/.debug/*.so \
- "
+ ${libdir}/directfb-${RV}/*/.debug/*.so \
+"
FILES_directfb-dev_append = " ${libdir}/directfb-${RV}/systems/*.la \
${libdir}/directfb-${RV}/inputdrivers/*.la \
${libdir}/directfb-${RV}/interfaces/*/*.la \
- ${libdir}/directfb-${RV}/wm/*.la"
-
+ ${libdir}/directfb-${RV}/wm/*.la \
+"
FILES_directfb_append = " ${libdir}/directfb-${RV}/systems/*.so \
${libdir}/directfb-${RV}/inputdrivers/*.so \
${libdir}/directfb-${RV}/interfaces/*/*.so \
${libdir}/directfb-${RV}/wm/*.so \
${datadir}/directfb-1.0.0 \
- "
+"
diff --git a/packages/directfb/files/fix-includes.patch b/packages/directfb/files/fix-includes.patch
index 0c40cdb3a6..7b4a112582 100644
--- a/packages/directfb/files/fix-includes.patch
+++ b/packages/directfb/files/fix-includes.patch
@@ -1,7 +1,7 @@
#
# pkgconfig points to STAGING_INCDIR, hence
-# we need to append a directfb/ to make it
-# find its header files
+# we need to make this a local include
+# or else it doesn't find its own header files
#
# Signed-Off: mickey@openmoko.org
#
@@ -14,11 +14,11 @@ Index: DirectFB-1.0.0/include/directfb.h
#define __DIRECTFB_H__
-#include <dfb_types.h>
-+#include <directfb/dfb_types.h>
++#include "dfb_types.h"
#include <sys/time.h> /* struct timeval */
-#include <directfb_keyboard.h>
-+#include <directfb/directfb_keyboard.h>
++#include "directfb_keyboard.h"
#ifdef __cplusplus
extern "C"
diff --git a/packages/directfb/files/fix-pkgconfig-specs.patch b/packages/directfb/files/fix-pkgconfig-specs.patch
index 0273b58ec5..c252dc1792 100644
--- a/packages/directfb/files/fix-pkgconfig-specs.patch
+++ b/packages/directfb/files/fix-pkgconfig-specs.patch
@@ -1,43 +1,48 @@
-diff -ur DirectFB-1.0.0~org/directfb-internal.pc.in DirectFB-1.0.0/directfb-internal.pc.in
---- DirectFB-1.0.0~org/directfb-internal.pc.in 2003-07-04 13:30:22.000000000 -0400
-+++ DirectFB-1.0.0/directfb-internal.pc.in 2007-03-16 22:34:17.000000000 -0400
-@@ -8,4 +8,4 @@
+Index: DirectFB-1.0.0/directfb-internal.pc.in
+===================================================================
+--- DirectFB-1.0.0.orig/directfb-internal.pc.in
++++ DirectFB-1.0.0/directfb-internal.pc.in
+@@ -8,4 +8,4 @@ Name: DirectFB-Internal
Description: Third party module support package for DirectFB.
Version: @VERSION@
Requires: directfb = @VERSION@
-Cflags: @DFB_INTERNAL_CFLAGS@ -I@INTERNALINCLUDEDIR@
-+Cflags: @DFB_INTERNAL_CFLAGS@ -I${includedir}
-diff -ur DirectFB-1.0.0~org/directfb.pc.in DirectFB-1.0.0/directfb.pc.in
---- DirectFB-1.0.0~org/directfb.pc.in 2004-08-04 12:28:20.000000000 -0400
-+++ DirectFB-1.0.0/directfb.pc.in 2007-03-16 22:31:33.000000000 -0400
-@@ -8,4 +8,4 @@
++Cflags: @DFB_INTERNAL_CFLAGS@ -I${includedir} -I${includedir}/../directfb
+Index: DirectFB-1.0.0/directfb.pc.in
+===================================================================
+--- DirectFB-1.0.0.orig/directfb.pc.in
++++ DirectFB-1.0.0/directfb.pc.in
+@@ -8,4 +8,4 @@ Description: Graphics and windowing libr
Version: @VERSION@
Requires: fusion direct
Libs: -L${libdir} -ldirectfb @THREADLIB@ @DYNLIB@ @ZLIB_LIBS@ @OSX_LIBS@
-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
+Cflags: @THREADFLAGS@ -I${includedir}
-diff -ur DirectFB-1.0.0~org/lib/direct/direct.pc.in DirectFB-1.0.0/lib/direct/direct.pc.in
---- DirectFB-1.0.0~org/lib/direct/direct.pc.in 2005-11-23 09:18:59.000000000 -0500
-+++ DirectFB-1.0.0/lib/direct/direct.pc.in 2007-03-16 22:32:13.000000000 -0400
-@@ -7,4 +7,4 @@
+Index: DirectFB-1.0.0/lib/direct/direct.pc.in
+===================================================================
+--- DirectFB-1.0.0.orig/lib/direct/direct.pc.in
++++ DirectFB-1.0.0/lib/direct/direct.pc.in
+@@ -7,4 +7,4 @@ Name: Direct
Description: DirectFB base development library
Version: @VERSION@
Libs: -L${libdir} -ldirect @THREADLIB@ @DYNLIB@
-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
+Cflags: @THREADFLAGS@ -I${includedir}
-diff -ur DirectFB-1.0.0~org/lib/fusion/fusion.pc.in DirectFB-1.0.0/lib/fusion/fusion.pc.in
---- DirectFB-1.0.0~org/lib/fusion/fusion.pc.in 2004-05-19 07:30:56.000000000 -0400
-+++ DirectFB-1.0.0/lib/fusion/fusion.pc.in 2007-03-16 22:32:34.000000000 -0400
-@@ -8,4 +8,4 @@
+Index: DirectFB-1.0.0/lib/fusion/fusion.pc.in
+===================================================================
+--- DirectFB-1.0.0.orig/lib/fusion/fusion.pc.in
++++ DirectFB-1.0.0/lib/fusion/fusion.pc.in
+@@ -8,4 +8,4 @@ Description: High Level IPC Mechanisms
Version: @VERSION@
Requires: direct
Libs: -L${libdir} -lfusion
-Cflags: -I@INCLUDEDIR@
+Cflags: -I${includedir}
-diff -ur DirectFB-1.0.0~org/lib/voodoo/voodoo.pc.in DirectFB-1.0.0/lib/voodoo/voodoo.pc.in
---- DirectFB-1.0.0~org/lib/voodoo/voodoo.pc.in 2004-05-19 07:31:28.000000000 -0400
-+++ DirectFB-1.0.0/lib/voodoo/voodoo.pc.in 2007-03-16 22:32:55.000000000 -0400
-@@ -8,4 +8,4 @@
+Index: DirectFB-1.0.0/lib/voodoo/voodoo.pc.in
+===================================================================
+--- DirectFB-1.0.0.orig/lib/voodoo/voodoo.pc.in
++++ DirectFB-1.0.0/lib/voodoo/voodoo.pc.in
+@@ -8,4 +8,4 @@ Description: Interface based network tra
Version: @VERSION@
Requires: direct
Libs: -L${libdir} -lvoodoo
diff --git a/packages/directfb/fusionsound_0.9.26+cvs20070207.bb b/packages/directfb/fusionsound_0.9.26+cvs20070207.bb
deleted file mode 100644
index fe04a195c1..0000000000
--- a/packages/directfb/fusionsound_0.9.26+cvs20070207.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "FusionSound for DirectFB"
-DEPENDS = "directfb"
-SECTION = "libs"
-LICENSE = "LGPL"
-
-# this is a CVS only release
-
-SRC_URI = "cvs://anonymous@cvs.directfb.org/cvs/directfb;method=pserver;module=FusionSound;date=${@bb.data.getVar('PV', d, 1)[9:]}"
-
-S = "${WORKDIR}/FusionSound"
-
-inherit autotools pkgconfig
-
-do_configure_append() {
- find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
-}
-
-do_stage() {
- autotools_stage_all
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-}
-
-FILES_fusionsound-dbg_append = " ${libdir}/directfb-1.0-0/*/*/.debug/*.so \
- ${libdir}/directfb-1.0-0/*/.debug/*.so \
- "
-
-FILES_fusionsound-dev_append = " ${libdir}/directfb-1.0-0/interfaces/*/*.la \
- ${libdir}/directfb-1.0-0/snddrivers/*.la \
- "
-
-FILES_fusionsound_append = " ${libdir}/directfb-1.0-0/interfaces/*/*.so \
- ${libdir}/directfb-1.0-0/snddrivers/*.so \
- "
-
diff --git a/packages/directfb/fusionsound_1.0.0.bb b/packages/directfb/fusionsound_1.0.0.bb
new file mode 100644
index 0000000000..3cd4a385f6
--- /dev/null
+++ b/packages/directfb/fusionsound_1.0.0.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "FusionSound for DirectFB"
+DEPENDS = "directfb libmad libvorbis"
+SECTION = "libs"
+LICENSE = "LGPL"
+
+SRC_URI = "http://www.directfb.org/downloads/Core/FusionSound-${PV}.tar.gz"
+S = "${WORKDIR}/FusionSound-${PV}"
+
+inherit autotools pkgconfig
+
+do_configure_append() {
+ find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}/directfb:g'
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+FILES_${PN} += "\
+ ${libdir}/directfb-1.0-0/interfaces/*/*.so \
+ ${libdir}/directfb-1.0-0/snddrivers/*.so \
+"
+
+FILES_${PN}-dbg += "\
+ ${libdir}/directfb-1.0-0/*/*/.debug/*.so \
+ ${libdir}/directfb-1.0-0/*/.debug/*.so \
+"
+
+FILES_${PN}-dev += "\
+ ${libdir}/directfb-1.0-0/interfaces/*/*.la \
+ ${libdir}/directfb-1.0-0/snddrivers/*.la \
+"
+
diff --git a/packages/e17/e-iconbar_20060128.bb b/packages/e17/e-iconbar_20060128.bb
deleted file mode 100644
index de639bfd3f..0000000000
--- a/packages/e17/e-iconbar_20060128.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "An Iconbar for the Enlightenment Window Manager"
-DEPENDS = "edb eet evas-x11 ecore-x11 edje esmart-x11 imlib2-x11"
-LICENSE = "MIT"
-PR = "r1"
-
-inherit e
-
-SRC_URI = "${E_CVS};module=e17/apps/iconbar;date=${PV}"
-S = "${WORKDIR}/iconbar"
-
-EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
-
-FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
diff --git a/packages/e17/e-utils_20060501.bb b/packages/e17/e-utils_20060501.bb
deleted file mode 100644
index fc94cd106f..0000000000
--- a/packages/e17/e-utils_20060501.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Enlightenment Window Manager Utilities"
-DEPENDS = "virtual/ecore virtual/evas virtual/esmart edje eet ewl engrave virtual/imlib2 epsilon"
-LICENSE = "MIT"
-PR = "r1"
-
-inherit e
-
-SRC_URI = "${E_CVS};module=e17/apps/e_utils;date=${PV}"
-S = "${WORKDIR}/e_utils"
-
-FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir}"
diff --git a/packages/e17/e-utils_cvs.bb b/packages/e17/e-utils_cvs.bb
new file mode 100644
index 0000000000..ea27040ab2
--- /dev/null
+++ b/packages/e17/e-utils_cvs.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Enlightenment Window Manager Utilities"
+DEPENDS = "eet evas ecore edje esmart ewl engrave"
+LICENSE = "MIT"
+PV = "0.0.0+cvs${SRCDATE}"
+PR = "r0"
+
+inherit e
+
+SRC_URI = "${E_CVS};module=e17/apps/e_utils"
+S = "${WORKDIR}/e_utils"
+
+FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir}"
diff --git a/packages/e17/e-wm_0.16.999.038.bb b/packages/e17/e-wm_0.16.999.038.bb
index cf25ad08e8..1204ed9ecc 100644
--- a/packages/e17/e-wm_0.16.999.038.bb
+++ b/packages/e17/e-wm_0.16.999.038.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "E17 - the Enlightenment Window Mananger"
-DEPENDS = "evas-x11 ecore-x11 edje eet embryo efreet"
+DEPENDS = "eet evas ecore edje efreet"
LICENSE = "MIT"
-PR = "r5"
+PR = "r6"
inherit e update-alternatives
@@ -28,8 +28,8 @@ FILES_${PN}-dev += "${libdir}/enlightenment/modules/*/*/*.a ${libdir}/enlightenm
FILES_${PN}-dbg += "${libdir}/enlightenment/modules/*/*/.debug/ ${libdir}/enlightenment/preload/.debug/"
do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
- find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
+ find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
+ find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
}
do_install_append() {
diff --git a/packages/e17/e17-gpe-menu-convert/e17-gpe-menu-convert.sh b/packages/e17/e17-gpe-menu-convert/e17-gpe-menu-convert.sh
deleted file mode 100644
index bbb5e12211..0000000000
--- a/packages/e17/e17-gpe-menu-convert/e17-gpe-menu-convert.sh
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/bin/sh
-
-setVar() {
- if [ ! "$value" = "" ]; then
- name=`echo "$name" | sed 'y:-\[\]:_____:'`
- value=`echo "$value" | sed 's:":\\\":g'`
- export $name="$value"
- fi
-}
-
-#convert true/false to 1/0
-bool() {
- if [ ! "$1" = "" ]; then
- if [ "$1" = "True" ]; then
- cmd="$cmd $2 1"
- else
- cmd="$cmd $2 0"
- fi
- fi
-}
-
-str() {
- if [ ! "$1" = "" ]; then
- cmd="$cmd $2 \"$1"\"
- fi
-}
-
-convert_desktop_to_eap() {
- echo "Adding $1 to e menu"
- for l in `cat $1`; do
- #on empty line clear vars
- if [ "$l" = "" ]; then
-
- #grab previous var if it exists
- setVar
-
- name=""
- value=""
- else
- #if an = is in the line it's a name/value pair
- if echo "$l" | grep -q "="; then
-
- #grab previous var if it exists
- setVar
-
- name=`echo "$l" | cut -d "=" -f 1`
- value=`echo "$l" | cut -d "=" -f 2-`
- else
-
- #if previous value assume this is a continuation
- if [ ! "$value" = "" ]; then
- value="$value $l"
- fi
- fi
- fi
- done
- setVar
-
- cmd=""
-
- #set up options
- bool "$StartupNotify" -set-startup-notify
- str "$Name" -set-name
- str "$Comment" -set-comment
- str "$Exec" -set-exe
-
- if [ ! "$cmd" = "" ]; then
- eapFile="$PATH_TO_EAP/$2"
- if [ -e $eapFile ]; then
- echo "EAP file for $2 already created";
- else
- echo "Converting $1 to $2"
- #cp ~/.e/e/applications/all/aterm.eap gpe-othello.eap
- ##empty out eap file
- ##enlightenment_eapp | grep -- -set- | cut -d " " -f 3 | xargs -iCMD enlightenment_eapp gpe-othello.eap CMD \"\"
- #enlightenment_eapp gpe-othello.eap -del-all
-
- cat <<EOF > /tmp/gpeEap.edc
-images {
- image: "$Icon" COMP;
-}
-collections {
- group {
- name: "icon";
- max: 48 48;
- parts {
- part {
- name: "image";
- mouse_events: 0;
- description {
- state: "default" 0.0;
- aspect: 1.0 1.0;
- image.normal: "$Icon";
- }
- }
- }
- }
-}
-EOF
-
- edje_cc --image_dir "$PATH_TO_PIXMAPS" /tmp/gpeEap.edc "$eapFile"
- rm /tmp/gpeEap.edc
-
- cmd="enlightenment_eapp \"$eapFile\" $cmd"
-
- #pipe command in sh to allow it to re-interpret quotes
- echo $cmd | /bin/sh -s
- fi
-
- if `echo "$Categories" | grep -q "SystemSettings"`; then
- dir="Settings"
- elif `echo "$Categories" | grep -q "PIM"`; then
- dir="PIM"
- elif `echo "$Categories" | grep -q "Network"`; then
- dir="Network"
- elif `echo "$Categories" | grep -q "Games"`; then
- dir="Games"
- elif `echo "$Categories" | grep -q "Game"`; then
- dir="Games"
- elif `echo "$Categories" | grep -q "AudioVideo"`; then
- dir="Multimedia"
- elif `echo "$Categories" | grep -q "Panel"`; then
- dir="Utility/Panel"
- elif `echo "$Categories" | grep -q "Utility"`; then
- dir="Utlity"
- else
- dir=""
- fi
-
- #dir=`echo "$Categories" | sed 'y:;:/:'`
- mkdir -p "$PATH_TO_E_GPE/$dir"
- orderFile="$PATH_TO_E_GPE/$dir"/.order
- add=1
- if [ -e "$orderFile" ]; then
- if grep -q "$2" "$orderFile"; then
- echo "$2 is already in the $dir menu"
- add=0
- fi
- fi
- if [ "$add" -eq 1 ]; then
- echo "Adding $2 to $dir menu"
- echo "$2" >> "$orderFile"
- fi
- fi
-}
-
-PATH_TO_DESKTOP="/usr/share/applications"
-PATH_TO_PIXMAPS="/usr/share/pixmaps"
-PATH_TO_EAP="/home/root/.e/e/applications/all"
-PATH_TO_E_GPE="/home/root/.e/e/applications/favorite/GPE"
-
-if [ ! -d $PATH_TO_E_GPE ]; then
- mkdir -p $PATH_TO_E_GPE
-fi
-if [ ! -d $PATH_TO_EAP ]; then
- mkdir -p $PATH_TO_EAP
-fi
-cd "$PATH_TO_DESKTOP"
-for f in `ls *.desktop`; do
- eap=`echo "$f" | cut -d . -f 1`
- convert_desktop_to_eap "$PATH_TO_DESKTOP/$f" "$eap.eap"
-done
diff --git a/packages/e17/e17-gpe-menu-convert_0.2.bb b/packages/e17/e17-gpe-menu-convert_0.2.bb
deleted file mode 100644
index 5ec40cd761..0000000000
--- a/packages/e17/e17-gpe-menu-convert_0.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Shell script to convert GPE .desktop files into e17 eap files and menus"
-DEPENDS = "edje-utils e-wm"
-RDEPENDS += "edje-utils e-wm"
-LICENSE = "MIT"
-SECTION = "e/apps"
-PR = "r4"
-
-#this is a shell script
-PACKAGE_ARCH = "all"
-
-SRC_URI = "file://e17-gpe-menu-convert.sh"
-
-do_install() {
- install -d ${D}/usr/bin/
- install -m 755 ${WORKDIR}/e17-gpe-menu-convert.sh ${D}/usr/bin/e17-gpe-menu-convert.sh
-}
-
-pkg_postinst() {
- /usr/bin/e17-gpe-menu-convert.sh
-}
diff --git a/packages/e17/e17genmenu_4.2.0.bb b/packages/e17/e17genmenu_4.2.0.bb
deleted file mode 100644
index baf399864d..0000000000
--- a/packages/e17/e17genmenu_4.2.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Convert Gnome or KDE menus to e17 menus"
-DEPENDS = "virtual/ecore virtual/evas eet engrave"
-LICENSE = "GPL"
-HOMEPAGE = "http://sourceforge.net/projects/e17genmenu"
-PR = "r0"
-
-inherit e
-
-SECTION = "e/utils"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/e17genmenu/e17genmenu-${PV}.tar.gz"
-S = "${WORKDIR}/${PN}"
-
-PACKAGES += "${PN}-doc"
-
-FILES_${PN} = "${bindir} ${datadir}"
-FILES_${PN}-doc = "/usr/doc" \ No newline at end of file
diff --git a/packages/e17/eclair_20060128.bb b/packages/e17/eclair_20060128.bb
deleted file mode 100644
index d78e1322c2..0000000000
--- a/packages/e17/eclair_20060128.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Eclair is the E17 multi media player"
-DEPENDS = "evas-x11 ecore-x11 embryo imlib2-x11 edje-native edje libxine-x11 emotion esmart-x11 libxml2 sqlite3 taglibc"
-LICENSE = "MIT"
-PR = "r1"
-
-inherit e
-
-SRC_URI = "${E_CVS};module=e17/apps/eclair;date=${PV}"
-S = "${WORKDIR}/eclair"
-
-EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
-
-FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
-
diff --git a/packages/e17/edje-viewer_cvs.bb b/packages/e17/edje-viewer_cvs.bb
new file mode 100644
index 0000000000..9b21c042a0
--- /dev/null
+++ b/packages/e17/edje-viewer_cvs.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Edje_Viewer is just that."
+DEPENDS = "etk"
+LICENSE = "MIT"
+PV = "0.0.0+svn${SRCDATE}"
+PR = "r0"
+
+inherit e
+
+SRC_URI = "${E_CVS};module=e17/apps/edje_viewer"
+S = "${WORKDIR}/edje_viewer"
+
+FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
diff --git a/packages/e17/engage/no-local-includes.patch b/packages/e17/engage/no-local-includes.patch
deleted file mode 100644
index 09cc8da98d..0000000000
--- a/packages/e17/engage/no-local-includes.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- engage/src/module/Makefile.am~no-local-includes
-+++ engage/src/module/Makefile.am
-@@ -10,8 +10,7 @@
-
- # the module .so file
- INCLUDES = -I. \
-- -I$(top_srcdir) \
-- -I$(includedir) \
-+ -I$(top_srcdir) \
- @e_cflags@
- pkgdir = @e_modules@/engage/$(MODULE_ARCH)
- pkg_LTLIBRARIES = module.la
diff --git a/packages/e17/engage_20060128.bb b/packages/e17/engage_20060128.bb
deleted file mode 100644
index ee71e1a0bb..0000000000
--- a/packages/e17/engage_20060128.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "Engage is the E17 icon dock"
-DEPENDS = "evas-x11 ecore-x11 esmart-x11 imlib2-x11 edje ewl e-wm"
-LICENSE = "MIT"
-PR = "r2"
-
-inherit e
-
-SRC_URI = "${E_CVS};module=misc/engage;date=${PV} \
- file://no-local-includes.patch;patch=1"
-S = "${WORKDIR}/engage"
-
-EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
-
-FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
-
diff --git a/packages/e17/entice_20060128.bb b/packages/e17/entice_20060128.bb
deleted file mode 100644
index 5b433de015..0000000000
--- a/packages/e17/entice_20060128.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Entice is the E17 picture viewer"
-# can also depend on GIMP for editing
-LICENSE = "MIT"
-DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
-PR = "r4"
-
-inherit e
-
-RDEPENDS += "libesmart-container-plugins libesmart-thumb0 libesmart-trans-x11-0 libesmart-file-dialog0"
-
-SRC_URI = "${E_CVS};module=e17/apps/entice;date=${PV}"
-S = "${WORKDIR}/entice"
-
-EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
-
-FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
-
diff --git a/packages/e17/entice_20060416.bb b/packages/e17/entice_cvs.bb
index 663ee97cd8..62a80ead47 100644
--- a/packages/e17/entice_20060416.bb
+++ b/packages/e17/entice_cvs.bb
@@ -1,17 +1,15 @@
DESCRIPTION = "Entice is the E17 picture viewer"
# can also depend on GIMP for editing
LICENSE = "MIT"
-DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
-PR = "r1"
+DEPENDS = "edb evas ecore edje epsilon esmart"
+PV = "0.0.0+cvs${SRCDATE}"
+PR = "r0"
inherit e
-RDEPENDS += "libesmart-container-plugins libesmart-thumb libesmart-trans-x11-0 libesmart-file-dialog"
-
-SRC_URI = "${E_CVS};module=e17/apps/entice;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/apps/entice"
S = "${WORKDIR}/entice"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
-
diff --git a/packages/e17/entrance-0.9.0.009/Xserver.patch b/packages/e17/entrance-0.9.0.009/Xserver.patch
deleted file mode 100644
index 296a7bccf4..0000000000
--- a/packages/e17/entrance-0.9.0.009/Xserver.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- entrance/src/daemon/Entranced.h.~1.7.~ 2004-05-19 21:02:09.000000000 -0700
-+++ entrance/src/daemon/Entranced.h 2005-08-13 02:00:02.000000000 -0700
-@@ -18,7 +18,7 @@
-
- #define ENTRANCED_DEBUG 1
-
--#define X_SERVER "/usr/X11R6/bin/X -quiet"
-+#define X_SERVER "/etc/X11/Xserver"
- //#define X_SERVER "/usr/X11R6/bin/Xnest -full"
- #define X_DISP ":0" /* only used if DISPLAY variable is NOT set */
- #define ENTRANCE PREFIX "/bin/entrance_wrapper"
---- entrance/src/daemon/spawner.c.~1.25.~ 2005-05-28 02:31:14.000000000 -0700
-+++ entrance/src/daemon/spawner.c 2005-08-13 02:20:13.000000000 -0700
-@@ -155,7 +155,7 @@
- sigaction(SIGUSR1, &_entrance_x_sa, NULL);
- /* FIXME: need to parse command and NOT go thru /bin/sh!!!! */
- /* why? some /bin/sh's wont pass on this SIGUSR1 thing... */
-- execl("/bin/sh", "/bin/sh", "-c", x_cmd, NULL);
-+ execl("/bin/bash", "/bin/bash", "-c", x_cmd, NULL);
- syslog(LOG_WARNING, "Could not execute X server.");
- exit(1);
- default:
diff --git a/packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch b/packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch
deleted file mode 100644
index 74289ad3c8..0000000000
--- a/packages/e17/entrance-0.9.0.009/allow-missing-xsession.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Index: entrance-0.9.0.009/configure.in
-===================================================================
---- entrance-0.9.0.009.orig/configure.in
-+++ entrance-0.9.0.009/configure.in
-@@ -184,10 +184,10 @@ AC_ARG_WITH(xsession,
- fi
- ]
- )
--if test ! -x "$xsession" ; then
-- AC_MSG_WARN([** $xsession does not exist or is not executable **])
-- AC_MSG_WARN([** Please consider overriding with --with-xsession **])
--fi
-+#if test ! -x "$xsession" ; then
-+# AC_MSG_WARN([** $xsession does not exist or is not executable **])
-+# AC_MSG_WARN([** Please consider overriding with --with-xsession **])
-+#fi
-
- AC_DEFINE_UNQUOTED(ENTRANCE_XSESSION, "$xsession", [Xsession script])
- AC_SUBST(xsession)
diff --git a/packages/e17/entrance-0.9.0.009/config-db.patch b/packages/e17/entrance-0.9.0.009/config-db.patch
deleted file mode 100644
index aecbfb6867..0000000000
--- a/packages/e17/entrance-0.9.0.009/config-db.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-Index: entrance-0.9.0.009/data/config/build_config.sh.in
-===================================================================
---- entrance-0.9.0.009.orig/data/config/build_config.sh.in
-+++ entrance-0.9.0.009/data/config/build_config.sh.in
-@@ -1,45 +1,45 @@
- #!/bin/sh -e
-
--usage() {
-- cat <<-EOF
-- Usage: $0 [options]
--
-- Options:
-- -d, --dir Session directory to scan
-- -c, --file Config file (default: $DB)
-- -h, --help This help output :p
-- EOF
--
-- if [ "$1" = "1" ] ; then
-- echo ""
-- echo "ERROR: $2"
-- fi
--
-- exit $1
--}
--
--SESSION_DIR=""
--DB="./entrance_config.cfg"
--
--while [ -n "$1" ] ; do
-- case $1 in
-- -d) shift; SESSION_DIR=$1;;
-- -c) shift; DB=$1;;
-- -h) usage 0;;
-- *) usage 1 "Unknown option: $1";;
-- esac
-- shift
--done
--
--if [ -z "$DB" ] || [ -d "$DB" ] ; then
-- usage 1 "Invalid DB argument"
--fi
--
--FROM=$SESSION_DIR
--if [ -z "$FROM" ] ; then
-- FROM="defaults"
--fi
--echo "Generating config file '$DB' from '$FROM' ..."
-+#usage() {
-+# cat <<-EOF
-+# Usage: $0 [options]
-+#
-+# Options:
-+# -d, --dir Session directory to scan
-+# -c, --file Config file (default: $DB)
-+# -h, --help This help output :p
-+# EOF
-+#
-+# if [ "$1" = "1" ] ; then
-+# echo ""
-+# echo "ERROR: $2"
-+# fi
-+#
-+# exit $1
-+#}
-+#
-+#SESSION_DIR=""
-+#DB="./entrance_config.cfg"
-+#
-+#while [ -n "$1" ] ; do
-+# case $1 in
-+# -d) shift; SESSION_DIR=$1;;
-+# -c) shift; DB=$1;;
-+# -h) usage 0;;
-+# *) usage 1 "Unknown option: $1";;
-+# esac
-+# shift
-+#done
-+#
-+#if [ -z "$DB" ] || [ -d "$DB" ] ; then
-+# usage 1 "Invalid DB argument"
-+#fi
-+#
-+#FROM=$SESSION_DIR
-+#if [ -z "$FROM" ] ; then
-+# FROM="defaults"
-+#fi
-+#echo "Generating config file '$DB' from '$FROM' ..."
-
- rm -f $DB || exit 1
-
-@@ -59,10 +59,10 @@ ecore_config -c $DB -k /entrance/time_fo
- #ecore_config -c $DB -k /entrance/fonts/0/-s -s "/usr/share/fonts/truetype/"
- #ecore_config -c $DB -k /entrance/fonts/1/-s -s "/usr/X11R6/lib/X11/fonts/Truetype/"
- ecore_config -c $DB -k /entrance/greeting/before -s "Welcome to"
--ecore_config -c $DB -k /entrance/greeting/after -s ""
-+ecore_config -c $DB -k /entrance/greeting/after -s " e17/OE"
-
- count=0
--ecore_config -c $DB -k /entrance/session/0/session -s "default"
-+ecore_config -c $DB -k /entrance/session/0/session -s "/etc/X11/Sessions/Enlightenment"
- ecore_config -c $DB -k /entrance/session/0/title -s "Default"
- ecore_config -c $DB -k /entrance/session/0/icon -s "default.png"
- #if [ -z "$SESSION_DIR" ] ; then
-@@ -92,7 +92,7 @@ ecore_config -c $DB -k /entrance/session
- # done
- #fi
- count=`(expr $count + 1)`
--ecore_config -c $DB -k /entrance/session/$count/session -s "failsafe"
-+ecore_config -c $DB -k /entrance/session/$count/session -s "/etc/X11/Sessions/Enlightenment"
- ecore_config -c $DB -k /entrance/session/$count/title -s "Failsafe"
- ecore_config -c $DB -k /entrance/session/$count/icon -s "failsafe.png"
- count=`(expr $count + 1)`
-@@ -107,5 +107,5 @@ ecore_config -c $DB -k /entrance/autolog
- ecore_config -c $DB -k /entrance/presel/mode -i 1
-
- # for Entranced
--ecore_config -c $DB -k /entranced/xserver -s "@xbin@/X -quiet -nolisten tcp@ENTRANCE_VT_ARG@"
-+ecore_config -c $DB -k /entranced/xserver -s "/etc/X11/Xserver"
- ecore_config -c $DB -k /entranced/attempts -i 5
diff --git a/packages/e17/entrance-0.9.0.009/disable-autodetect.patch b/packages/e17/entrance-0.9.0.009/disable-autodetect.patch
deleted file mode 100644
index a0412b3706..0000000000
--- a/packages/e17/entrance-0.9.0.009/disable-autodetect.patch
+++ /dev/null
@@ -1,8 +0,0 @@
-diff -Nur entrance-0.9.0.007~/Makefile.am entrance-0.9.0.007/Makefile.am
---- entrance-0.9.0.007~/Makefile.am 2006-05-11 12:18:07.000000000 -0700
-+++ entrance-0.9.0.007/Makefile.am 2006-05-11 13:01:41.000000000 -0700
-@@ -23,4 +23,3 @@
- fi
-
- install-data-am:
-- sh data/config/autodetect.sh || :
diff --git a/packages/e17/entrance-0.9.0.009/fix-auth-mode.patch b/packages/e17/entrance-0.9.0.009/fix-auth-mode.patch
deleted file mode 100644
index 46e530b256..0000000000
--- a/packages/e17/entrance-0.9.0.009/fix-auth-mode.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: entrance-0.9.0.009/data/config/build_config.sh.in
-===================================================================
---- entrance-0.9.0.009.orig/data/config/build_config.sh.in
-+++ entrance-0.9.0.009/data/config/build_config.sh.in
-@@ -44,7 +44,7 @@
- rm -f $DB || exit 1
-
- # set auth to 1 for pam, 2 for shadow
--ecore_config -c $DB -k /entrance/auth -i @auth_mode@
-+ecore_config -c $DB -k /entrance/auth -i 0
-
- # uncomment the below to enable experimental OpenGL hardware acceleration
- #ecore_config -c $DB -k /entrance/engine -i 1
diff --git a/packages/e17/entrance-0.9.0.009/run-Xinit.patch b/packages/e17/entrance-0.9.0.009/run-Xinit.patch
deleted file mode 100644
index 1d6c2307f7..0000000000
--- a/packages/e17/entrance-0.9.0.009/run-Xinit.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- entrance/src/daemon/entrance_wrapper.in.~1.1.~ 2003-01-31 13:57:06.000000000 -0800
-+++ entrance/src/daemon/entrance_wrapper.in 2005-08-15 20:13:57.000000000 -0700
-@@ -5,8 +5,13 @@
-
- test -f /etc/profile && . /etc/profile
-
-+if [ -x /etc/X11/Xinit.d/99gpe-login ]; then
-+ chmod -x /etc/X11/Xinit.d/99gpe-login
-+fi
-+
-+/etc/X11/Xinit
-+
- exec @prefix@/bin/entrance "$@"
-
- #fallback
- exec entrance "$@"
--
diff --git a/packages/e17/entrance-0.9.0.009/set-display-env.patch b/packages/e17/entrance-0.9.0.009/set-display-env.patch
deleted file mode 100644
index 37bfc1c2c8..0000000000
--- a/packages/e17/entrance-0.9.0.009/set-display-env.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur entrance~/src/daemon/spawner.c entrance/src/daemon/spawner.c
---- entrance~/src/daemon/spawner.c 2005-09-02 14:00:29.000000000 -0700
-+++ entrance/src/daemon/spawner.c 2005-09-02 15:53:31.000000000 -0700
-@@ -199,6 +199,7 @@
- free(d->client.homedir);
- d->client.homedir = NULL;
-
-+ setenv("DISPLAY", d->name, 1);
- snprintf(entrance_cmd, PATH_MAX, "%s -d %s", ENTRANCE, d->name);
- if (d->config)
- snprintf(entrance_cmd, PATH_MAX, "%s -d %s -c \"%s\" -z %d",
diff --git a/packages/e17/entrance-0.9.0.009/use-bash.patch b/packages/e17/entrance-0.9.0.009/use-bash.patch
deleted file mode 100644
index 7dfab83711..0000000000
--- a/packages/e17/entrance-0.9.0.009/use-bash.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Index: entrance-0.9.0.009/src/client/entrance_session.c
-===================================================================
---- entrance-0.9.0.009.orig/src/client/entrance_session.c
-+++ entrance-0.9.0.009/src/client/entrance_session.c
-@@ -854,7 +854,7 @@ _entrance_session_execute_in_shell(char
- if (shell && (strlen(shell) > 0))
- shell_cmd = shell;
- else
-- shell_cmd = strdup("/bin/sh");
-+ shell_cmd = strdup("/bin/bash");
-
- if (session_name)
- snprintf(buf, sizeof(buf), "%s %s", session_cmd, session_name);
-@@ -869,9 +869,9 @@ _entrance_session_execute_in_shell(char
- if (res == -1)
- /* TODO: should actually hit the user in the face with this message */
- syslog(LOG_NOTICE,
-- "Neither '%s' or '/bin/sh' are working login shells for user '%s'. Your session may not function properly. ",
-+ "Neither '%s' or '/bin/bash' are working login shells for user '%s'. Your session may not function properly. ",
- shell, user);
-- shell_cmd = strdup("/bin/sh");
-+ shell_cmd = strdup("/bin/bash");
-
- res = execlp(shell_cmd, shell_cmd, "-c", buf, NULL);
-
-Index: entrance-0.9.0.009/src/client/main.c
-===================================================================
---- entrance-0.9.0.009.orig/src/client/main.c
-+++ entrance-0.9.0.009/src/client/main.c
-@@ -453,7 +453,7 @@ reboot_cb(void *data, Evas_Object * o, c
- {
- case 0:
- if (execl
-- ("/bin/sh", "/bin/sh", "-c", "/sbin/shutdown -r now", NULL))
-+ ("/bin/bash", "/bin/bash", "-c", "/sbin/shutdown -r now", NULL))
- {
- syslog(LOG_CRIT,
- "Reboot failed: Unable to execute /sbin/shutdown");
-@@ -495,7 +495,7 @@ shutdown_cb(void *data, Evas_Object * o,
- {
- case 0:
- if (execl
-- ("/bin/sh", "/bin/sh", "-c", "/sbin/shutdown -h now", NULL))
-+ ("/bin/bash", "/bin/bash", "-c", "/sbin/shutdown -h now", NULL))
- {
- syslog(LOG_CRIT,
- "Shutdown failed: Unable to execute /sbin/shutdown");
-Index: entrance-0.9.0.009/src/daemon/entrance_wrapper.in
-===================================================================
---- entrance-0.9.0.009.orig/src/daemon/entrance_wrapper.in
-+++ entrance-0.9.0.009/src/daemon/entrance_wrapper.in
-@@ -1,4 +1,4 @@
--#!/bin/sh
-+#!/bin/bash
- # Wrapper script to set up login environment:
- # Load up all the junk in /etc/profile first, and then
- # pass control to entrance proper.
diff --git a/packages/e17/entrance/allow-missing-xsession.patch b/packages/e17/entrance/allow-missing-xsession.patch
index c475e46fe2..74289ad3c8 100644
--- a/packages/e17/entrance/allow-missing-xsession.patch
+++ b/packages/e17/entrance/allow-missing-xsession.patch
@@ -1,18 +1,18 @@
---- entrance/configure.in.~1.42.~ 2005-07-29 23:15:58.000000000 -0700
-+++ entrance/configure.in 2005-08-13 03:11:41.000000000 -0700
-@@ -190,11 +190,11 @@
+Index: entrance-0.9.0.009/configure.in
+===================================================================
+--- entrance-0.9.0.009.orig/configure.in
++++ entrance-0.9.0.009/configure.in
+@@ -184,10 +184,10 @@ AC_ARG_WITH(xsession,
fi
]
)
--if test ! -x $xsession ; then
-- AC_MSG_WARN([** no $xsession file on this system **])
-- AC_MSG_WARN([** Perhaps you need to specify --with-xsession **])
-- xsession="You should reconfigure --with-xsession"
+-if test ! -x "$xsession" ; then
+- AC_MSG_WARN([** $xsession does not exist or is not executable **])
+- AC_MSG_WARN([** Please consider overriding with --with-xsession **])
-fi
-+#if test ! -x $xsession ; then
-+# AC_MSG_WARN([** no $xsession file on this system **])
-+# AC_MSG_WARN([** Perhaps you need to specify --with-xsession **])
-+# xsession="You should reconfigure --with-xsession"
++#if test ! -x "$xsession" ; then
++# AC_MSG_WARN([** $xsession does not exist or is not executable **])
++# AC_MSG_WARN([** Please consider overriding with --with-xsession **])
+#fi
AC_DEFINE_UNQUOTED(ENTRANCE_XSESSION, "$xsession", [Xsession script])
diff --git a/packages/e17/entrance/config-db.patch b/packages/e17/entrance/config-db.patch
index 83ed3acf84..aecbfb6867 100644
--- a/packages/e17/entrance/config-db.patch
+++ b/packages/e17/entrance/config-db.patch
@@ -1,43 +1,119 @@
---- entrance/data/config/build_config.sh.in.~1.18.~ 2006-01-11 18:46:48.000000000 -0800
-+++ entrance/data/config/build_config.sh.in 2006-01-11 21:52:54.000000000 -0800
-@@ -18,29 +18,14 @@
+Index: entrance-0.9.0.009/data/config/build_config.sh.in
+===================================================================
+--- entrance-0.9.0.009.orig/data/config/build_config.sh.in
++++ entrance-0.9.0.009/data/config/build_config.sh.in
+@@ -1,45 +1,45 @@
+ #!/bin/sh -e
+
+-usage() {
+- cat <<-EOF
+- Usage: $0 [options]
+-
+- Options:
+- -d, --dir Session directory to scan
+- -c, --file Config file (default: $DB)
+- -h, --help This help output :p
+- EOF
+-
+- if [ "$1" = "1" ] ; then
+- echo ""
+- echo "ERROR: $2"
+- fi
+-
+- exit $1
+-}
+-
+-SESSION_DIR=""
+-DB="./entrance_config.cfg"
+-
+-while [ -n "$1" ] ; do
+- case $1 in
+- -d) shift; SESSION_DIR=$1;;
+- -c) shift; DB=$1;;
+- -h) usage 0;;
+- *) usage 1 "Unknown option: $1";;
+- esac
+- shift
+-done
+-
+-if [ -z "$DB" ] || [ -d "$DB" ] ; then
+- usage 1 "Invalid DB argument"
+-fi
+-
+-FROM=$SESSION_DIR
+-if [ -z "$FROM" ] ; then
+- FROM="defaults"
+-fi
+-echo "Generating config file '$DB' from '$FROM' ..."
++#usage() {
++# cat <<-EOF
++# Usage: $0 [options]
++#
++# Options:
++# -d, --dir Session directory to scan
++# -c, --file Config file (default: $DB)
++# -h, --help This help output :p
++# EOF
++#
++# if [ "$1" = "1" ] ; then
++# echo ""
++# echo "ERROR: $2"
++# fi
++#
++# exit $1
++#}
++#
++#SESSION_DIR=""
++#DB="./entrance_config.cfg"
++#
++#while [ -n "$1" ] ; do
++# case $1 in
++# -d) shift; SESSION_DIR=$1;;
++# -c) shift; DB=$1;;
++# -h) usage 0;;
++# *) usage 1 "Unknown option: $1";;
++# esac
++# shift
++#done
++#
++#if [ -z "$DB" ] || [ -d "$DB" ] ; then
++# usage 1 "Invalid DB argument"
++#fi
++#
++#FROM=$SESSION_DIR
++#if [ -z "$FROM" ] ; then
++# FROM="defaults"
++#fi
++#echo "Generating config file '$DB' from '$FROM' ..."
+
+ rm -f $DB || exit 1
+
+@@ -59,10 +59,10 @@ ecore_config -c $DB -k /entrance/time_fo
#ecore_config -c $DB -k /entrance/fonts/0/-s -s "/usr/share/fonts/truetype/"
#ecore_config -c $DB -k /entrance/fonts/1/-s -s "/usr/X11R6/lib/X11/fonts/Truetype/"
ecore_config -c $DB -k /entrance/greeting/before -s "Welcome to"
-ecore_config -c $DB -k /entrance/greeting/after -s ""
--ecore_config -c $DB -k /entrance/session/count -i 7
--ecore_config -c $DB -k /entrance/session/0/session -s "default"
+ecore_config -c $DB -k /entrance/greeting/after -s " e17/OE"
-+ecore_config -c $DB -k /entrance/session/count -i 2
+
+ count=0
+-ecore_config -c $DB -k /entrance/session/0/session -s "default"
+ecore_config -c $DB -k /entrance/session/0/session -s "/etc/X11/Sessions/Enlightenment"
ecore_config -c $DB -k /entrance/session/0/title -s "Default"
ecore_config -c $DB -k /entrance/session/0/icon -s "default.png"
- ecore_config -c $DB -k /entrance/session/1/icon -s "enlightenment.png"
- ecore_config -c $DB -k /entrance/session/1/title -s "E17"
--ecore_config -c $DB -k /entrance/session/1/session -s "@prefix@/bin/enlightenment"
--ecore_config -c $DB -k /entrance/session/2/session -s "kde"
--ecore_config -c $DB -k /entrance/session/2/title -s "KDE"
--ecore_config -c $DB -k /entrance/session/2/icon -s "kde.png"
--ecore_config -c $DB -k /entrance/session/3/session -s "gnome"
--ecore_config -c $DB -k /entrance/session/3/title -s "Gnome"
--ecore_config -c $DB -k /entrance/session/3/icon -s "gnome.png"
--ecore_config -c $DB -k /entrance/session/4/session -s "Enlightenment"
--ecore_config -c $DB -k /entrance/session/4/title -s "E16"
--ecore_config -c $DB -k /entrance/session/4/icon -s "enlightenment.png"
--ecore_config -c $DB -k /entrance/session/5/session -s "xfce"
--ecore_config -c $DB -k /entrance/session/5/title -s "XFce"
--ecore_config -c $DB -k /entrance/session/5/icon -s "xfce.png"
--ecore_config -c $DB -k /entrance/session/6/session -s "failsafe"
--ecore_config -c $DB -k /entrance/session/6/title -s "Failsafe"
--ecore_config -c $DB -k /entrance/session/6/icon -s "failsafe.png"
-+ecore_config -c $DB -k /entrance/session/1/session -s "/etc/X11/Sessions/Enlightenment"
- ecore_config -c $DB -k /entrance/system/reboot -i 1
- ecore_config -c $DB -k /entrance/system/halt -i 1
- ecore_config -c $DB -k /entrance/user/remember -i 1
-@@ -50,5 +35,5 @@
+ #if [ -z "$SESSION_DIR" ] ; then
+@@ -92,7 +92,7 @@ ecore_config -c $DB -k /entrance/session
+ # done
+ #fi
+ count=`(expr $count + 1)`
+-ecore_config -c $DB -k /entrance/session/$count/session -s "failsafe"
++ecore_config -c $DB -k /entrance/session/$count/session -s "/etc/X11/Sessions/Enlightenment"
+ ecore_config -c $DB -k /entrance/session/$count/title -s "Failsafe"
+ ecore_config -c $DB -k /entrance/session/$count/icon -s "failsafe.png"
+ count=`(expr $count + 1)`
+@@ -107,5 +107,5 @@ ecore_config -c $DB -k /entrance/autolog
ecore_config -c $DB -k /entrance/presel/mode -i 1
# for Entranced
--ecore_config -c $DB -k /entranced/xserver -s "/usr/X11R6/bin/X -quiet -nolisten tcp"
+-ecore_config -c $DB -k /entranced/xserver -s "@xbin@/X -quiet -nolisten tcp@ENTRANCE_VT_ARG@"
+ecore_config -c $DB -k /entranced/xserver -s "/etc/X11/Xserver"
ecore_config -c $DB -k /entranced/attempts -i 5
diff --git a/packages/e17/entrance/fix-auth-mode.patch b/packages/e17/entrance/fix-auth-mode.patch
index 1ec520f768..46e530b256 100644
--- a/packages/e17/entrance/fix-auth-mode.patch
+++ b/packages/e17/entrance/fix-auth-mode.patch
@@ -1,7 +1,9 @@
---- entrance/data/config/build_config.sh.in~ 2006-01-30 07:01:47.000000000 -0800
-+++ entrance/data/config/build_config.sh.in 2006-02-01 22:22:04.000000000 -0800
-@@ -3,7 +3,7 @@
- rm -f $DB
+Index: entrance-0.9.0.009/data/config/build_config.sh.in
+===================================================================
+--- entrance-0.9.0.009.orig/data/config/build_config.sh.in
++++ entrance-0.9.0.009/data/config/build_config.sh.in
+@@ -44,7 +44,7 @@
+ rm -f $DB || exit 1
# set auth to 1 for pam, 2 for shadow
-ecore_config -c $DB -k /entrance/auth -i @auth_mode@
diff --git a/packages/e17/entrance/use-bash.patch b/packages/e17/entrance/use-bash.patch
index 58ef8f556f..7dfab83711 100644
--- a/packages/e17/entrance/use-bash.patch
+++ b/packages/e17/entrance/use-bash.patch
@@ -1,19 +1,33 @@
-diff -Nur entrance~/src/client/entrance_session.c entrance/src/client/entrance_session.c
---- entrance~/src/client/entrance_session.c 2006-02-02 19:51:40.000000000 -0800
-+++ entrance/src/client/entrance_session.c 2006-02-02 19:59:24.000000000 -0800
-@@ -495,7 +495,7 @@
- entrance_session_free(e);
- /* replace this process with a clean small one that just waits for its */
- /* child to exit.. passed on the cmd-line */
-- execl("/bin/sh", "/bin/sh", "-l", "-c", buf, NULL);
-+ execl("/bin/bash", "/bin/bash", "-l", "-c", buf, NULL);
- }
+Index: entrance-0.9.0.009/src/client/entrance_session.c
+===================================================================
+--- entrance-0.9.0.009.orig/src/client/entrance_session.c
++++ entrance-0.9.0.009/src/client/entrance_session.c
+@@ -854,7 +854,7 @@ _entrance_session_execute_in_shell(char
+ if (shell && (strlen(shell) > 0))
+ shell_cmd = shell;
+ else
+- shell_cmd = strdup("/bin/sh");
++ shell_cmd = strdup("/bin/bash");
+ if (session_name)
+ snprintf(buf, sizeof(buf), "%s %s", session_cmd, session_name);
+@@ -869,9 +869,9 @@ _entrance_session_execute_in_shell(char
+ if (res == -1)
+ /* TODO: should actually hit the user in the face with this message */
+ syslog(LOG_NOTICE,
+- "Neither '%s' or '/bin/sh' are working login shells for user '%s'. Your session may not function properly. ",
++ "Neither '%s' or '/bin/bash' are working login shells for user '%s'. Your session may not function properly. ",
+ shell, user);
+- shell_cmd = strdup("/bin/sh");
++ shell_cmd = strdup("/bin/bash");
+
+ res = execlp(shell_cmd, shell_cmd, "-c", buf, NULL);
-diff -Nur entrance~/src/client/main.c entrance/src/client/main.c
---- entrance~/src/client/main.c 2006-02-02 19:51:40.000000000 -0800
-+++ entrance/src/client/main.c 2006-02-02 19:57:24.000000000 -0800
-@@ -392,7 +392,7 @@
+Index: entrance-0.9.0.009/src/client/main.c
+===================================================================
+--- entrance-0.9.0.009.orig/src/client/main.c
++++ entrance-0.9.0.009/src/client/main.c
+@@ -453,7 +453,7 @@ reboot_cb(void *data, Evas_Object * o, c
{
case 0:
if (execl
@@ -22,7 +36,7 @@ diff -Nur entrance~/src/client/main.c entrance/src/client/main.c
{
syslog(LOG_CRIT,
"Reboot failed: Unable to execute /sbin/shutdown");
-@@ -434,7 +434,7 @@
+@@ -495,7 +495,7 @@ shutdown_cb(void *data, Evas_Object * o,
{
case 0:
if (execl
@@ -31,24 +45,13 @@ diff -Nur entrance~/src/client/main.c entrance/src/client/main.c
{
syslog(LOG_CRIT,
"Shutdown failed: Unable to execute /sbin/shutdown");
-diff -Nur entrance~/src/daemon/entrance_wrapper.in entrance/src/daemon/entrance_wrapper.in
---- entrance~/src/daemon/entrance_wrapper.in 2006-02-02 19:51:40.000000000 -0800
-+++ entrance/src/daemon/entrance_wrapper.in 2006-02-02 19:56:43.000000000 -0800
+Index: entrance-0.9.0.009/src/daemon/entrance_wrapper.in
+===================================================================
+--- entrance-0.9.0.009.orig/src/daemon/entrance_wrapper.in
++++ entrance-0.9.0.009/src/daemon/entrance_wrapper.in
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Wrapper script to set up login environment:
# Load up all the junk in /etc/profile first, and then
# pass control to entrance proper.
-diff -Nur entrance~/src/daemon/spawner.c entrance/src/daemon/spawner.c
---- entrance~/src/daemon/spawner.c 2006-02-02 19:51:40.000000000 -0800
-+++ entrance/src/daemon/spawner.c 2006-02-02 19:57:10.000000000 -0800
-@@ -162,7 +162,7 @@
- sigaction(SIGUSR1, &_entrance_x_sa, NULL);
- /* FIXME: need to parse command and NOT go thru /bin/sh!!!! */
- /* why? some /bin/sh's wont pass on this SIGUSR1 thing... */
-- execl("/bin/sh", "/bin/sh", "-c", x_cmd, NULL);
-+ execl("/bin/bash", "/bin/bash", "-c", x_cmd, NULL);
- syslog(LOG_WARNING, "Could not execute X server.");
- exit(1);
- default:
diff --git a/packages/e17/entrance_0.9.0.009.bb b/packages/e17/entrance_0.9.0.009.bb
deleted file mode 100644
index 6e21926860..0000000000
--- a/packages/e17/entrance_0.9.0.009.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-DESCRIPTION = "Entrance is the Enlightenment login manager"
-LICENSE = "MIT"
-# can also use pam and crypt
-DEPENDS = "evas-x11 ecore-x11 edje esmart-x11 bash keylaunch xserver-common login-manager"
-RDEPENDS += "bash keylaunch xserver-common glibc-gconv-iso8859-1 login-manager entrance-themes"
-HOMEPAGE = "http://www.enlightenment.org"
-PR = "r1"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit e
-
-SRC_URI = "${E_URI}/entrance-${PV}.tar.gz \
- file://config-db.patch;patch=1 \
- file://allow-missing-xsession.patch;patch=1 \
- file://run-Xinit.patch;patch=1 \
- file://fix-auth-mode.patch;patch=1 \
- file://use-bash.patch;patch=1 \
- file://Sessions"
-# file://disable-autodetect.patch;patch=1 \
-# file://set-display-env.patch;patch=1 \
-
-S = "${WORKDIR}/entrance-${PV}"
-
-EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
- --with-xsession=/etc/X11/Xsession \
- --with-auth-mode=0"
-
-FILES_${PN}-dbg += "${libexecdir}/entrance/.debug"
-FILES_${PN} += "${bindir} ${sbindir} /etc ${datadir} ${libexecdir}"
-
-do_install_append() {
- install -d ${D}/etc/X11/Xsession.d
- install -d ${D}/etc/X11/Sessions
-
- install -m 755 ${WORKDIR}/Sessions/* ${D}/etc/X11/Sessions
-
- install -d ${D}/etc/X11/login-managers/
- mv ${D}/etc/init.d/entrance ${D}/etc/X11/login-managers/entrance
-}
diff --git a/packages/e17/entrance_0.9.0.007.bb b/packages/e17/entrance_0.9.0.010.bb
index 50126cb5a9..4c47f1d2ab 100644
--- a/packages/e17/entrance_0.9.0.007.bb
+++ b/packages/e17/entrance_0.9.0.010.bb
@@ -1,21 +1,18 @@
DESCRIPTION = "Entrance is the Enlightenment login manager"
LICENSE = "MIT"
# can also use pam and crypt
-DEPENDS = "evas-x11 ecore-x11 edje esmart-x11 bash keylaunch xserver-common login-manager"
-RDEPENDS += "bash keylaunch xserver-common glibc-gconv-iso8859-1 login-manager entrance-themes"
-HOMEPAGE = "http://www.enlightenment.org"
-PR = "r14"
+DEPENDS = "evas ecore edje esmart bash keylaunch xserver-common login-manager"
+RDEPENDS += "glibc-gconv-iso8859-1 entrance-themes"
+PR = "r0"
inherit e
-SRC_URI = "${E_URI}/entrance-${PV}.tar.gz \
+SRC_URI += "\
file://config-db.patch;patch=1 \
file://allow-missing-xsession.patch;patch=1 \
file://run-Xinit.patch;patch=1 \
- file://set-display-env.patch;patch=1 \
file://fix-auth-mode.patch;patch=1 \
file://use-bash.patch;patch=1 \
- file://disable-autodetect.patch;patch=1 \
file://Sessions"
S = "${WORKDIR}/entrance-${PV}"
@@ -24,7 +21,7 @@ EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
--with-xsession=/etc/X11/Xsession \
--with-auth-mode=0"
-FILES_${PN} += "${bindir} ${sbindir} /etc ${datadir}"
+FILES_${PN}-dbg += "${libexecdir}/entrance/.debug/*"
do_install_append() {
install -d ${D}/etc/X11/Xsession.d
diff --git a/packages/e17/examine_20060128.bb b/packages/e17/examine_cvs.bb
index b406ea3b5f..89d0dd5755 100644
--- a/packages/e17/examine_20060128.bb
+++ b/packages/e17/examine_cvs.bb
@@ -1,11 +1,12 @@
-DESCRIPTION = "examine, the program configurator"
-DEPENDS = "virtual/ecore ewl"
+DESCRIPTION = "Examine, the program configurator"
+DEPENDS = "ewl"
LICENSE = "MIT"
+PV = "0.0.0+cvs${SRCDATE}"
PR = "r0"
inherit e
-SRC_URI = "${E_CVS};module=e17/apps/examine;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/apps/examine"
S = "${WORKDIR}/examine"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc"
diff --git a/packages/e17/expedite_cvs.bb b/packages/e17/expedite_cvs.bb
index 69e0df9dbe..ea376c2442 100644
--- a/packages/e17/expedite_cvs.bb
+++ b/packages/e17/expedite_cvs.bb
@@ -1,13 +1,12 @@
DESCRIPTION = "Expedite is a comprehensive benchmarking suite for evas"
-DEPENDS = "evas-x11"
+DEPENDS = "evas"
LICENSE = "MIT"
-PV = "0.0+cvs${SRCDATE}"
+PV = "0.0.0+cvs${SRCDATE}"
PR = "r0"
inherit e
SRC_URI = "cvs://anonymous@anoncvs.enlightenment.org/var/cvs/e;module=e17/apps/expedite"
-
S = "${WORKDIR}/${PN}"
do_configure_append() {
diff --git a/packages/e17/rage_0.2.0.003.bb b/packages/e17/rage_0.2.0.003.bb
new file mode 100644
index 0000000000..ab527e214b
--- /dev/null
+++ b/packages/e17/rage_0.2.0.003.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "rage is a media center application based on EFL"
+AUTHOR = "Carsten 'The Rasterman' Heitzler"
+HOMEPAGE = "http://www.rasterman.com"
+LICENSE = "GPL"
+DEPENDS = "evas ecore edje"
+SECTION = "x11/multimedia"
+
+SRC_URI = "http://download.enlightenment.org/snapshots/2007-06-17/rage-${PV}.tar.gz"
+
+inherit e
diff --git a/packages/efl/epsilon_0.3.0.008.bb b/packages/efl/epsilon_0.3.0.008.bb
deleted file mode 100644
index 1fd7c88744..0000000000
--- a/packages/efl/epsilon_0.3.0.008.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Epsilon is a flexable and powerful image thumbnailing library \
-that is complient with the freedesktop.org Thumbnail Managing Standard."
-LICENSE = "GPL"
-DEPENDS = "virtual/imlib2 epeg libpng virtual/evas virtual/ecore perl-native edje"
-
-inherit efl
-
-PR = "r1"
-
-SRC_URI += "file://compile-fix.patch;patch=1 \
- ${E_CVS};module=e17/libs/epsilon/m4;date=20060101"
-# file://server-is-not-client.patch;patch=1 \
-
-do_configure_prepend() {
- install -d "${S}/m4"
- install "${WORKDIR}/m4/"*.m4 "${S}/m4"
- aclocal -I m4
-}
diff --git a/packages/e17/entrance-0.9.0.009/.mtn2git_empty b/packages/efl1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/e17/entrance-0.9.0.009/.mtn2git_empty
+++ b/packages/efl1/.mtn2git_empty
diff --git a/packages/efl1/ecore-native_0.9.9.038.bb b/packages/efl1/ecore-native_0.9.9.038.bb
new file mode 100644
index 0000000000..7b3212dc1a
--- /dev/null
+++ b/packages/efl1/ecore-native_0.9.9.038.bb
@@ -0,0 +1,28 @@
+require ecore.inc
+inherit native
+DEPENDS = "eet-native evas-native"
+
+EXTRA_OECONF = "\
+ --enable-ecore-txt \
+ --disable-ecore-x-xcb \
+ --enable-ecore-x \
+ --enable-ecore-job \
+ --enable-ecore-directfb \
+ --enable-ecore-fb \
+ --enable-ecore-evas \
+ --disable-ecore-evas-gl \
+ --disable-ecore-evas-xrender \
+ --disable-ecore-evas-dfb \
+ --disable-openssl \
+ --enable-abstract-sockets \
+ --enable-ecore-con \
+ --enable-ecore-ipc \
+ --enable-ecore-dbus \
+ --enable-ecore-file \
+ --enable-inotify \
+ --disable-poll \
+ --disable-curl \
+ --disable-ecore-desktop \
+ --x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} "
+
diff --git a/packages/efl1/ecore.inc b/packages/efl1/ecore.inc
new file mode 100644
index 0000000000..7f67d2f281
--- /dev/null
+++ b/packages/efl1/ecore.inc
@@ -0,0 +1,52 @@
+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 dbus directfb eet evas tslib"
+# optional
+# DEPENDS += "openssl iconv"
+
+inherit efl1
+
+SRC_URI = "http://enlightenment.freedesktop.org/files/ecore-${PV}.tar.gz \
+ file://configure-abstract-sockets.patch;patch=1 \
+ file://fix-tslib-configure.patch;patch=1 \
+ file://fix-directfb-include.patch;patch=1"
+
+S = "${WORKDIR}/ecore-${PV}"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ecore"
+
+EXTRA_OECONF = "<override me>"
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES += "\
+ ${PN}-con \
+ ${PN}-config \
+ ${PN}-dbus \
+ ${PN}-desktop \
+ ${PN}-directfb \
+ ${PN}-evas \
+ ${PN}-fb \
+ ${PN}-file \
+ ${PN}-ipc \
+ ${PN}-job \
+ ${PN}-txt \
+ ${PN}-x \
+ "
+FILES_${PN} = "${libdir}/libecore.so*"
+FILES_${PN}-con = "${libdir}/libecore_con.so*"
+FILES_${PN}-config = "${libdir}/libecore_config.so*"
+FILES_${PN}-dbus = "${libdir}/libecore_dbus.so*"
+FILES_${PN}-desktop = "${libdir}/libecore_desktop.so*"
+FILES_${PN}-directfb = "${libdir}/libecore_directfb.so*"
+FILES_${PN}-evas = "${libdir}/libecore_evas.so*"
+FILES_${PN}-fb = "${libdir}/libecore_fb.so*"
+FILES_${PN}-file = "${libdir}/libecore_file.so*"
+FILES_${PN}-ipc = "${libdir}/libecore_ipc.so*"
+FILES_${PN}-job = "${libdir}/libecore_job.so*"
+FILES_${PN}-txt = "${libdir}/libecore_txt.so*"
+FILES_${PN}-x = "${libdir}/libecore_x.so*"
+
diff --git a/packages/efl/.mtn2git_empty b/packages/efl1/ecore/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/.mtn2git_empty
+++ b/packages/efl1/ecore/.mtn2git_empty
diff --git a/packages/efl/ecore/add-tslib-support.patch b/packages/efl1/ecore/add-tslib-support.patch
index c125122a91..c125122a91 100644
--- a/packages/efl/ecore/add-tslib-support.patch
+++ b/packages/efl1/ecore/add-tslib-support.patch
diff --git a/packages/efl/ecore/configure-abstract-sockets.patch b/packages/efl1/ecore/configure-abstract-sockets.patch
index 359203b163..359203b163 100644
--- a/packages/efl/ecore/configure-abstract-sockets.patch
+++ b/packages/efl1/ecore/configure-abstract-sockets.patch
diff --git a/packages/efl/ecore/configure.patch b/packages/efl1/ecore/configure.patch
index 23d8193b44..23d8193b44 100644
--- a/packages/efl/ecore/configure.patch
+++ b/packages/efl1/ecore/configure.patch
diff --git a/packages/efl/ecore/ecore_kernel_input_header.patch b/packages/efl1/ecore/ecore_kernel_input_header.patch
index 99f57ddcff..99f57ddcff 100644
--- a/packages/efl/ecore/ecore_kernel_input_header.patch
+++ b/packages/efl1/ecore/ecore_kernel_input_header.patch
diff --git a/packages/efl1/ecore/fix-directfb-include.patch b/packages/efl1/ecore/fix-directfb-include.patch
new file mode 100644
index 0000000000..b1c06f7f43
--- /dev/null
+++ b/packages/efl1/ecore/fix-directfb-include.patch
@@ -0,0 +1,13 @@
+Index: ecore-0.9.9.038/src/lib/ecore_directfb/Ecore_DirectFB.h
+===================================================================
+--- ecore-0.9.9.038.orig/src/lib/ecore_directfb/Ecore_DirectFB.h
++++ ecore-0.9.9.038/src/lib/ecore_directfb/Ecore_DirectFB.h
+@@ -23,7 +23,7 @@
+ #endif
+
+ #include <Ecore_Data.h>
+-#include <directfb.h>
++#include <directfb/directfb.h>
+
+
+ #ifdef __cplusplus
diff --git a/packages/efl1/ecore/fix-tslib-configure.patch b/packages/efl1/ecore/fix-tslib-configure.patch
new file mode 100644
index 0000000000..a1fbb21326
--- /dev/null
+++ b/packages/efl1/ecore/fix-tslib-configure.patch
@@ -0,0 +1,19 @@
+Index: ecore-0.9.9.038/configure.in
+===================================================================
+--- ecore-0.9.9.038.orig/configure.in
++++ ecore-0.9.9.038/configure.in
+@@ -1,4 +1,4 @@
+-dnl Process this file with autoconf to produce a configure script.
++<dnl Process this file with autoconf to produce a configure script.
+
+ AC_INIT(configure.in)
+ AC_CANONICAL_BUILD
+@@ -321,7 +321,7 @@ tslib_libs=""
+ if test "x$have_ecore_fb" = "xyes" ; then
+ AC_CHECK_HEADER(tslib.h,
+ [
+- tslib_libs="-ltslib"
++ tslib_libs="-lts"
+ AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
+ ]
+ )
diff --git a/packages/efl/ecore/remove-bad-code.patch b/packages/efl1/ecore/remove-bad-code.patch
index 87a8d16bd6..87a8d16bd6 100644
--- a/packages/efl/ecore/remove-bad-code.patch
+++ b/packages/efl1/ecore/remove-bad-code.patch
diff --git a/packages/efl1/ecore_0.9.9.038.bb b/packages/efl1/ecore_0.9.9.038.bb
new file mode 100644
index 0000000000..d61aeab3a1
--- /dev/null
+++ b/packages/efl1/ecore_0.9.9.038.bb
@@ -0,0 +1,26 @@
+require ecore.inc
+PR = "r1"
+
+EXTRA_OECONF = "\
+ --enable-ecore-txt \
+ --disable-ecore-x-xcb \
+ --enable-ecore-x \
+ --enable-ecore-job \
+ --enable-ecore-directfb \
+ --enable-ecore-fb \
+ --enable-ecore-evas \
+ --disable-ecore-evas-gl \
+ --enable-ecore-evas-xrender \
+ --enable-ecore-evas-dfb \
+ --disable-openssl \
+ --enable-abstract-sockets \
+ --enable-ecore-con \
+ --enable-ecore-ipc \
+ --enable-ecore-dbus \
+ --enable-ecore-file \
+ --enable-inotify \
+ --disable-poll \
+ --enable-curl \
+ --enable-ecore-desktop \
+ --x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} "
diff --git a/packages/efl1/edb_cvs.bb b/packages/efl1/edb_cvs.bb
new file mode 100644
index 0000000000..365f857e1c
--- /dev/null
+++ b/packages/efl1/edb_cvs.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Edb is a database library"
+LICENSE = "MIT"
+PV = "0.0.0+cvs${SRCDATE}"
+
+inherit efl1
+
+SRC_URI = "${E_CVS};module=e17/libs/edb"
+S = "${WORKDIR}/edb"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${bindir}/*_* ${datadir}"
+FILES_${PN}-dev += "${bindir}/*-config"
+FILES_${PN} = "${libdir}/*.so*"
+
diff --git a/packages/efl1/edje-native_0.5.0.038.bb b/packages/efl1/edje-native_0.5.0.038.bb
new file mode 100644
index 0000000000..8f3ef51fa7
--- /dev/null
+++ b/packages/efl1/edje-native_0.5.0.038.bb
@@ -0,0 +1,16 @@
+require edje_${PV}.bb
+inherit native
+PR = "r4"
+
+DEPENDS = "evas-native ecore-native eet-native embryo-native"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/edje"
+
+do_configure_prepend() {
+ sed -i 's:EMBRYO_PREFIX"/bin:"${STAGING_BINDIR}:' ${S}/src/bin/edje_cc_out.c
+ sed -i 's:cpp -I:/usr/bin/cpp -I:' ${S}/src/bin/edje_cc_parse.c
+ sed -i 's:gcc -I:/usr/bin/gcc -I:' ${S}/src/bin/edje_cc_parse.c
+}
+
+do_stage_append() {
+ efl_stage_bin
+}
diff --git a/packages/efl1/edje_0.5.0.038.bb b/packages/efl1/edje_0.5.0.038.bb
new file mode 100644
index 0000000000..7db9951e8d
--- /dev/null
+++ b/packages/efl1/edje_0.5.0.038.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Edje is a complex graphical design & layout library."
+# can also install vim data files
+DEPENDS = "eet evas ecore embryo edje-native"
+LICENSE = "MIT"
+PR = "r7"
+
+inherit efl1 lib_package
+
+SRC_URI += "${E_CVS};module=e17/libs/edje/m4;date=20060101"
+
+do_configure_prepend() {
+ install -d "${S}/m4"
+ install "${WORKDIR}/m4/"*.m4 "${S}/m4"
+ aclocal -I m4
+}
+
+FILES_${PN}-dev =+ "${bindir} ${datadir}"
+FILES_${PN}-examples = ""
+FILES_${PN}-bin = ""
+
diff --git a/packages/efl/eet-native_0.9.10.038.bb b/packages/efl1/eet-native_0.9.10.038.bb
index 9e2426ca9f..9e2426ca9f 100644
--- a/packages/efl/eet-native_0.9.10.038.bb
+++ b/packages/efl1/eet-native_0.9.10.038.bb
diff --git a/packages/efl1/eet_0.9.10.038.bb b/packages/efl1/eet_0.9.10.038.bb
new file mode 100644
index 0000000000..08935df750
--- /dev/null
+++ b/packages/efl1/eet_0.9.10.038.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "EET is a tiny library designed to write an \
+arbitary set of chunks of data to a file and optionally compress \
+each chunk (very much like a zip file) and allow fast \
+random-access reading of the file later on."
+DEPENDS = "zlib jpeg"
+LICENSE = "BSD"
+PR = "r0"
+
+inherit efl1
+
+SRC_URI = "http://download.enlightenment.org/snapshots/2007-05-06/eet-${PV}.tar.gz"
diff --git a/packages/efl1/efreet_0.0.3.002.bb b/packages/efl1/efreet_0.0.3.002.bb
new file mode 100644
index 0000000000..b387ee89a0
--- /dev/null
+++ b/packages/efl1/efreet_0.0.3.002.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "An implementation of freedesktop.org specs for the \
+Enlightenment Foundation Libraries"
+DEPENDS = "ecore"
+LICENSE = "BSD"
+PR = "r0"
+
+inherit efl1
+
+PACKAGES =+ "efreet-tests"
+FILES_efreet-tests = "${bindir}/*_* ${datadir}"
diff --git a/packages/efl1/embryo-native_0.9.1.038.bb b/packages/efl1/embryo-native_0.9.1.038.bb
new file mode 100644
index 0000000000..2fc3faddfd
--- /dev/null
+++ b/packages/efl1/embryo-native_0.9.1.038.bb
@@ -0,0 +1,3 @@
+require embryo_${PV}.bb
+inherit native
+
diff --git a/packages/efl1/embryo_0.9.1.038.bb b/packages/efl1/embryo_0.9.1.038.bb
new file mode 100644
index 0000000000..0728ef563b
--- /dev/null
+++ b/packages/efl1/embryo_0.9.1.038.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Embryo implements a C like scripting language used in various parts \
+of the Enlightenment project, namely Edje. Embryo's scripting language is based on \
+CompuPhase's Small language that was introduced in Dr Dobb's Journal in 1999. \
+Embryo allows scripting capabilities in places that otherwise wouldn't support \
+basic programming structures such as in Edje EDCs."
+LICENSE = "MIT"
+PR = "r0"
+
+inherit efl1 lib_package
+
+FILES_${PN}-examples = "${datadir}/${PN}/examples"
diff --git a/packages/efl1/emotion_0.0.1.006.bb b/packages/efl1/emotion_0.0.1.006.bb
new file mode 100644
index 0000000000..bdfcbebee1
--- /dev/null
+++ b/packages/efl1/emotion_0.0.1.006.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Emotion is a multimedia library with backends: gstreamer and libxine"
+LICENSE = "MIT"
+# we no longer build the libxine backend, since the gstreamer backend seems more promising
+DEPENDS = "eet evas ecore edje gstreamer gst-plugins-base"
+RRECOMMENDS_${PN} = "emotion-backend-gstreamer"
+PR = "r0"
+
+inherit efl1
+
+SRC_URI = "http://download.enlightenment.org/snapshots/2007-06-17/emotion-${PV}.tar.gz"
+
+EXTRA_OECONF = "--disable-xine --enable-gstreamer"
+
+PACKAGES =+ "emotion-backend-gstreamer emotion-test"
+FILES_emotion-backend-gstreamer = "${libdir}/emotion/*.so"
+FILES_emotion-test = "${bindir}/emotion_test ${datadir}"
diff --git a/packages/efl1/engrave_cvs.bb b/packages/efl1/engrave_cvs.bb
new file mode 100644
index 0000000000..169ba856a7
--- /dev/null
+++ b/packages/efl1/engrave_cvs.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Engrave is an Edje Editing Library"
+LICENSE = "MIT"
+# also requires yacc and lex on host
+DEPENDS = "evas ecore"
+PV = "0.0.0+cvs${SRCDATE}"
+
+inherit efl1
+
+SRC_URI = "${E_CVS};module=e17/libs/engrave"
+S = "${WORKDIR}/engrave"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${bindir}/*_* ${datadir}"
+FILES_${PN}-dev += "${bindir}/*-config"
+FILES_${PN} = "${libdir}/*.so*"
+
diff --git a/packages/efl1/enhance_cvs.bb b/packages/efl1/enhance_cvs.bb
new file mode 100644
index 0000000000..8e30cf0033
--- /dev/null
+++ b/packages/efl1/enhance_cvs.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Enhance translates between glade .xml files and ETK"
+LICENSE = "MIT"
+DEPENDS = "exml"
+PV = "0.0.0+cvs${SRCDATE}"
+
+inherit efl1
+
+SRC_URI = "${E_CVS};module=e17/libs/enhance"
+S = "${WORKDIR}/enhance"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${bindir}/*_* ${datadir}"
+FILES_${PN}-dev += "${bindir}/*-config"
+FILES_${PN} = "${libdir}/*.so*"
+
diff --git a/packages/efl1/epeg_0.9.0.009.bb b/packages/efl1/epeg_0.9.0.009.bb
new file mode 100644
index 0000000000..6a99269291
--- /dev/null
+++ b/packages/efl1/epeg_0.9.0.009.bb
@@ -0,0 +1,8 @@
+DESCRIPTION = "Epeg is a small library for handling thumbnails."
+LICENSE = "MIT"
+DEPENDS = "jpeg"
+
+inherit efl1
+
+FILES_${PN} = "${libdir}/lib*.so*"
+FILES_${PN}-dev += "${bindir}/*-config"
diff --git a/packages/efl/e/.mtn2git_empty b/packages/efl1/epsilon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/e/.mtn2git_empty
+++ b/packages/efl1/epsilon/.mtn2git_empty
diff --git a/packages/efl/epsilon/compile-fix.patch b/packages/efl1/epsilon/compile-fix.patch
index 1c42cc59c4..1c42cc59c4 100644
--- a/packages/efl/epsilon/compile-fix.patch
+++ b/packages/efl1/epsilon/compile-fix.patch
diff --git a/packages/efl/epsilon/server-is-not-client.patch b/packages/efl1/epsilon/server-is-not-client.patch
index e96e528b9e..e96e528b9e 100644
--- a/packages/efl/epsilon/server-is-not-client.patch
+++ b/packages/efl1/epsilon/server-is-not-client.patch
diff --git a/packages/efl1/epsilon_0.3.0.009.bb b/packages/efl1/epsilon_0.3.0.009.bb
new file mode 100644
index 0000000000..eba3a11e34
--- /dev/null
+++ b/packages/efl1/epsilon_0.3.0.009.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Epsilon is a flexible and powerful image thumbnailing library \
+that is compliant with the freedesktop.org Thumbnail Managing Standard."
+LICENSE = "LGPL"
+DEPENDS = "imlib2 epeg libpng evas ecore edje perl-native"
+
+inherit efl1
+
+PR = "r0"
+
+PACKAGES =+ "epsilon-tests"
+FILES_epsilon-tests = "${bindir}/*_* ${datadir}"
+FILES_${PN} = "${libdir}/lib*.so*"
diff --git a/packages/efl1/esmart_0.9.0.009.bb b/packages/efl1/esmart_0.9.0.009.bb
new file mode 100644
index 0000000000..8d2ce2eb3e
--- /dev/null
+++ b/packages/efl1/esmart_0.9.0.009.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "ESmart is a collection of smart Evas objects"
+LICENSE = "MIT"
+DEPENDS = "evas ecore edje imlib2 epsilon libtool"
+
+inherit efl1
+
+S = "${WORKDIR}/esmart-${PV}"
+
+PACKAGES =+ "${PN}-textentry \
+ ${PN}-thumb \
+ ${PN}-container \
+ ${PN}-container-plugins \
+ ${PN}-file-dialog \
+ ${PN}-draggies \
+ ${PN}-trans-x11"
+FILES_${PN}-textentry = "${libdir}/libesmart_text_entry*.so*"
+FILES_${PN}-thumb = "${libdir}/libesmart_thumb*.so*"
+FILES_${PN}-container = "${libdir}/libesmart_container*"
+DEPENDS_${PN}-container += "${PN}-container-plugins"
+FILES_${PN}-container-plugins = "${libdir}/esmart/layout/*.so"
+FILES_${PN}-file-dialog = "${libdir}/libesmart_file_dialog*.so*"
+FILES_${PN}-draggies = "${libdir}/libesmart_draggies*.so*"
+FILES_${PN}-trans-x11 = "${libdir}/libesmart_trans_x11*.so*"
diff --git a/packages/efl1/etk_0.1.0.003.bb b/packages/efl1/etk_0.1.0.003.bb
new file mode 100644
index 0000000000..569b5c9242
--- /dev/null
+++ b/packages/efl1/etk_0.1.0.003.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Etk is an advanced widget toolkit based on the Enlightenment Foundation Libraries."
+DEPENDS = "evas ecore edje"
+LICENSE = "MIT"
+PR = "r1"
+
+inherit efl1
+
+PACKAGES =+ "etk-engines"
+FILES_${PN} = "${libdir}/libetk.so*"
+FILES_${PN}-examples += "${bindir}"
+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/"
diff --git a/packages/efl1/evas-native_0.9.9.038.bb b/packages/efl1/evas-native_0.9.9.038.bb
new file mode 100644
index 0000000000..e79695c1f2
--- /dev/null
+++ b/packages/efl1/evas-native_0.9.9.038.bb
@@ -0,0 +1,60 @@
+require evas.inc
+inherit native
+DEPENDS = "freetype-native libpng-native jpeg-native eet-native"
+PR = "r9"
+
+EXTRA_OECONF = "\
+ --x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} \
+ --disable-fb \
+ --disable-directfb \
+ --enable-buffer \
+ --disable-software-ddraw \
+ --disable-software-qtopia \
+ --disable-software-x11 \
+ --disable-software-16-x11 \
+ --disable-software-xcb \
+ --disable-gl-x11 \
+ --disable-xrender-x11 \
+ --disable-xrender-xcb \
+ --disable-glitz-x11 \
+ --enable-image-loader-eet \
+ --disable-image-loader-edb \
+ --disable-image-loader-gif \
+ --enable-image-loader-png \
+ --enable-image-loader-jpeg \
+ --enable-image-loader-tiff \
+ --enable-image-loader-xpm \
+ --disable-image-loader-svg \
+ --enable-cpu-c \
+ --enable-fontconfig \
+ --enable-font-loader-eet \
+ --enable-scale-sample \
+ --enable-scale-smooth \
+ --enable-convert-yuv \
+ --enable-small-dither-mask \
+ --disable-no-dither-mask \
+ --disable-convert-8-rgb-332 \
+ --disable-convert-8-rgb-666 \
+ --disable-convert-8-rgb-232 \
+ --disable-convert-8-rgb-222 \
+ --disable-convert-8-rgb-221 \
+ --disable-convert-8-rgb-121 \
+ --disable-convert-8-rgb-111 \
+ --enable-convert-16-rgb-565 \
+ --disable-convert-16-rgb-555 \
+ --disable-convert-16-rgb-444 \
+ --disable-convert-16-rgb-ipq \
+ --enable-convert-16-rgb-rot-0 \
+ --disable-convert-16-rgb-rot-90 \
+ --enable-convert-16-rgb-rot-270 \
+ --disable-convert-24-rgb-888 \
+ --disable-convert-24-bgr-888 \
+ --disable-convert-32-rgb-8888 \
+ --disable-convert-32-rgbx-8888 \
+ --disable-convert-32-bgr-8888 \
+ --disable-convert-32-bgrx-8888 \
+ --disable-convert-32-rgb-rot-0 \
+ --disable-convert-32-rgb-rot-90 \
+ --disable-convert-32-rgb-rot-270"
+
diff --git a/packages/efl1/evas.inc b/packages/efl1/evas.inc
new file mode 100644
index 0000000000..f3d78f0255
--- /dev/null
+++ b/packages/efl1/evas.inc
@@ -0,0 +1,57 @@
+DESCRIPTION = "Evas is a hardware-accelerated canvas API that can draw \
+anti-aliased text, smooth super and sub-images, alpha-blend, as well as drop \
+down to using normal X11 primitives such as pixmaps, lines and rectangles if \
+your CPU or graphics hardware are too slow."
+LICENSE = "MIT"
+# can also depend on valgrind (?)
+DEPENDS = "directfb eet freetype jpeg virtual/libx11 libxext"
+
+inherit efl1
+
+export FREETYPE_CONFIG = "${STAGING_BINDIR_CROSS}/freetype-config"
+
+SRC_URI = "http://enlightenment.freedesktop.org/files/evas-${PV}.tar.gz \
+ file://fix-configure.patch;patch=1 \
+ ${E_CVS};module=e17/libs/evas/m4;date=20060101"
+
+S = "${WORKDIR}/evas-${PV}"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/evas"
+
+EXTRA_OECONF = "<override me>"
+
+do_configure_prepend() {
+ if [ -e "${WORKDIR}/m4" ]; then
+ install -d "${S}/m4"
+ install "${WORKDIR}/m4/"*.m4 "${S}/m4"
+ aclocal -I m4
+ fi
+}
+
+python populate_packages_prepend () {
+ for plugin_type in "engines loaders savers".split():
+ bb.note( "splitting packages for evas %s..." % plugin_type )
+ basedir = bb.data.expand( '${libdir}/evas/modules/%s' % plugin_type, d )
+
+ do_split_packages(d, basedir, '^(.*)',
+ output_pattern = 'evas-' + plugin_type[:-1] + "-%s",
+ description = 'Evas module %s',
+ allow_dirs=True, recursive=False )
+}
+
+do_install_append() {
+ find "${D}" -name .debug -type d | xargs -iBLAH rm -rf "BLAH"
+}
+
+#do_stage_append() {
+# cd src
+# modules=`find modules -name ".libs"`
+# for module in $modules
+# do
+# install -d ${STAGING_LIBDIR}/evas/`dirname $module`/${TARGET_OS}-gnu-${TARGET_ARCH}
+# install -m 0755 $module/module.so ${STAGING_LIBDIR}/evas/`dirname $module`/${TARGET_OS}-gnu-${TARGET_ARCH}/module.so
+# done
+#}
+
+FILES_${PN}-dev += "${libdir}/evas/modules/*/*/*/*.a ${libdir}/evas/modules/*/*/*/*.la"
+FILES_${PN}-dbg += "${libdir}/evas/modules/*/*/*/.debug/"
+FILES_${PN} = "${libdir}/libevas*.so*"
diff --git a/packages/efl/ecore/.mtn2git_empty b/packages/efl1/evas/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/ecore/.mtn2git_empty
+++ b/packages/efl1/evas/.mtn2git_empty
diff --git a/packages/efl/evas/fix-configure.patch b/packages/efl1/evas/fix-configure.patch
index abf9b94bdf..abf9b94bdf 100644
--- a/packages/efl/evas/fix-configure.patch
+++ b/packages/efl1/evas/fix-configure.patch
diff --git a/packages/efl/evas/pagesize.patch b/packages/efl1/evas/pagesize.patch
index 5efd16a96e..5efd16a96e 100644
--- a/packages/efl/evas/pagesize.patch
+++ b/packages/efl1/evas/pagesize.patch
diff --git a/packages/efl1/evas_0.9.9.038.bb b/packages/efl1/evas_0.9.9.038.bb
new file mode 100644
index 0000000000..79fdd42173
--- /dev/null
+++ b/packages/efl1/evas_0.9.9.038.bb
@@ -0,0 +1,58 @@
+require evas.inc
+PR = "r9"
+
+EXTRA_OECONF = "\
+ --x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR} \
+ --enable-fb \
+ --enable-directfb \
+ --enable-buffer \
+ --disable-software-ddraw \
+ --disable-software-qtopia \
+ --enable-software-x11 \
+ --enable-software-16-x11 \
+ --disable-software-xcb \
+ --disable-gl-x11 \
+ --enable-xrender-x11 \
+ --disable-xrender-xcb \
+ --disable-glitz-x11 \
+ --enable-image-loader-eet \
+ --disable-image-loader-edb \
+ --disable-image-loader-gif \
+ --enable-image-loader-png \
+ --enable-image-loader-jpeg \
+ --enable-image-loader-tiff \
+ --enable-image-loader-xpm \
+ --enable-image-loader-svg \
+ --enable-cpu-c \
+ --enable-fontconfig \
+ --enable-font-loader-eet \
+ --enable-scale-sample \
+ --enable-scale-smooth \
+ --enable-convert-yuv \
+ --enable-small-dither-mask \
+ --disable-no-dither-mask \
+ --disable-convert-8-rgb-332 \
+ --disable-convert-8-rgb-666 \
+ --disable-convert-8-rgb-232 \
+ --disable-convert-8-rgb-222 \
+ --disable-convert-8-rgb-221 \
+ --disable-convert-8-rgb-121 \
+ --disable-convert-8-rgb-111 \
+ --enable-convert-16-rgb-565 \
+ --disable-convert-16-rgb-555 \
+ --disable-convert-16-rgb-444 \
+ --disable-convert-16-rgb-ipq \
+ --enable-convert-16-rgb-rot-0 \
+ --disable-convert-16-rgb-rot-90 \
+ --enable-convert-16-rgb-rot-270 \
+ --disable-convert-24-rgb-888 \
+ --disable-convert-24-bgr-888 \
+ --disable-convert-32-rgb-8888 \
+ --disable-convert-32-rgbx-8888 \
+ --disable-convert-32-bgr-8888 \
+ --disable-convert-32-bgrx-8888 \
+ --disable-convert-32-rgb-rot-0 \
+ --disable-convert-32-rgb-rot-90 \
+ --disable-convert-32-rgb-rot-270"
+
diff --git a/packages/efl1/ewl_0.5.1.009.bb b/packages/efl1/ewl_0.5.1.009.bb
new file mode 100644
index 0000000000..9d60a67b82
--- /dev/null
+++ b/packages/efl1/ewl_0.5.1.009.bb
@@ -0,0 +1,11 @@
+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"
+RSUGGESTS_${PN} += "ewl-themes"
+LICENSE = "MIT"
+PR = "r0"
+
+inherit efl1
+
+SRC_URI = "http://download.enlightenment.org/snapshots/2007-06-17/ewl-${PV}.tar.gz"
diff --git a/packages/efl1/exml_cvs.bb b/packages/efl1/exml_cvs.bb
new file mode 100644
index 0000000000..5ffdaef266
--- /dev/null
+++ b/packages/efl1/exml_cvs.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Exml is a generic XML parser wrapper."
+LICENSE = "MIT"
+DEPENDS = "libxml2 libxslt ecore"
+
+inherit efl1
+
+SRC_URI = "${E_CVS};module=e17/libs/exml"
+S = "${WORKDIR}/exml"
+
+PACKAGES =+ "${PN}-tests"
+FILES_${PN}-tests = "${bindir}/*_* ${datadir}"
+FILES_${PN}-dev += "${bindir}/*-config"
+FILES_${PN} = "${libdir}/*.so*"
diff --git a/packages/efl1/imlib2_1.4.0.001.bb b/packages/efl1/imlib2_1.4.0.001.bb
new file mode 100644
index 0000000000..8b056b1ed2
--- /dev/null
+++ b/packages/efl1/imlib2_1.4.0.001.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "A graphic library for file loading, saving, rendering, and manipulation."
+LICENSE = "BSD"
+# can also depend on tiff34, ungif or gif, z, bz2, id3tag
+DEPENDS = "freetype libpng jpeg"
+
+inherit efl1
+
+PACKAGES =+ "imlib2-loaders-dbg imlib2-filters-dbg imlib2-loaders imlib2-filters"
+FILES_${PN} = "${libdir}/lib*.so.* ${libdir}/imlib2/*/*.so"
+FILES_${PN}-dbg = "${libdir}/.debug/"
+FILES_${PN}-dev += "${bindir}/imlib2-config ${libdir}/*.so ${includedir}"
+FILES_${PN}-bin = "${bindir}"
+FILES_imlib2-loaders = "${libdir}/imlib2/loaders/*.so"
+FILES_imlib2-filters = "${libdir}/imlib2/filters/*.so"
+FILES_imlib2-loaders-dbg += "${libdir}/imlib2/loaders/.debug"
+FILES_imlib2-filters-dbg += "${libdir}/imlib2/filters/.debug"
diff --git a/packages/elitaire/elitaire_0.0.5.bb b/packages/elitaire/elitaire_0.0.5.bb
deleted file mode 100644
index b33e9fa014..0000000000
--- a/packages/elitaire/elitaire_0.0.5.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "EFL-based solitaire"
-DEPENDS = "evas-x11 ecore-x11 edje esmart-x11 ewl"
-LICENSE = "MIT"
-SECTION = "e/apps"
-PR = "r0"
-
-SRC_URI = "http://www.mowem.de/elitaire/elitaire-${PV}.tar.bz2 \
- file://fix-ewl-and-gettext.patch;patch=1 \
- file://math.patch;patch=1"
-
-inherit autotools pkgconfig binconfig
-
diff --git a/packages/elitaire/files/fix-ewl-and-gettext.patch b/packages/elitaire/files/fix-ewl-and-gettext.patch
deleted file mode 100644
index f572124f94..0000000000
--- a/packages/elitaire/files/fix-ewl-and-gettext.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -Nur elitaire-0.0.4~/src/intl.h elitaire-0.0.4/src/intl.h
---- elitaire-0.0.4~/src/intl.h 2005-08-18 19:02:30.000000000 -0700
-+++ elitaire-0.0.4/src/intl.h 2005-08-18 19:06:05.000000000 -0700
-@@ -13,8 +13,12 @@
-
- inline char * sgettext(const char *msgid)
- {
-+#ifdef ENABLE_NLS
- char *msgval = gettext (msgid);
- if (msgval == msgid)
-+#else
-+ char *msgval;
-+#endif
- msgval = strrchr (msgid, '|') + 1;
- return msgval;
- }
diff --git a/packages/elitaire/files/math.patch b/packages/elitaire/files/math.patch
deleted file mode 100644
index 550507f370..0000000000
--- a/packages/elitaire/files/math.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- elitaire-0.0.4/src/Elitaire.h~ 2005-08-15 06:32:32.000000000 -0700
-+++ elitaire-0.0.4/src/Elitaire.h 2005-09-29 19:19:25.000000000 -0700
-@@ -3,6 +3,11 @@
- #include<Evas.h>
- #include<Edje.h>
- #include"intl.h"
-+#include<tgmath.h>
-+
-+#ifndef ABS
-+#define ABS(x) ((x) >= 0 ? (x) : -(x))
-+#endif
-
- struct Elitaire{
-
diff --git a/packages/esound/esound-gpe/audiofile-please.patch b/packages/esound/esound-gpe/audiofile-please.patch
deleted file mode 100644
index 0bfb629040..0000000000
--- a/packages/esound/esound-gpe/audiofile-please.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- esound/esd.h~ 2002-07-19 13:36:44.000000000 +0100
-+++ esound/esd.h 2004-05-16 11:04:29.000000000 +0100
-@@ -1,6 +1,8 @@
- #ifndef ESD_H
- #define ESD_H
-
-+#define SUPPORT_AUDIOFILE
-+
- #ifdef SUPPORT_AUDIOFILE
- #include <audiofile.h>
- #endif
---- esound/Makefile.am~ 2002-07-19 13:36:44.000000000 +0100
-+++ esound/Makefile.am 2004-05-16 10:56:35.000000000 +0100
-@@ -26,8 +26,8 @@
- lib_LTLIBRARIES = libesd.la $(libesddsp_la)
-
- libesd_la_LDFLAGS = -version-info $(ESD_VERSION_INFO)
--#libesd_la_LIBADD = $(AUDIOFILE_LIBS) $(SOUND_LIBS)
--libesd_la_LIBADD = $(SOUND_LIBS)
-+libesd_la_LIBADD = $(AUDIOFILE_LIBS) $(SOUND_LIBS)
-+#libesd_la_LIBADD = $(SOUND_LIBS)
-
- libesd_la_SOURCES = \
- esdlib.c \
-@@ -36,6 +36,7 @@
- audio.c \
- genrand.c \
- genrand.h \
-+ esdfile.c \
- util.c
-
- # one of these gets included by audio.c
-@@ -79,7 +80,6 @@
- proto.c \
- samples.c \
- $(getopt_src) \
-- util.c \
- esd-server.h
-
- esdcat_SOURCES = \
diff --git a/packages/esound/esound-gpe/configure.patch b/packages/esound/esound-gpe/configure.patch
deleted file mode 100644
index c6c33df11c..0000000000
--- a/packages/esound/esound-gpe/configure.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- esound/configure.in~ 2002-07-19 13:14:01.000000000 +0100
-+++ esound/configure.in 2004-05-16 10:51:48.000000000 +0100
-@@ -352,17 +352,5 @@
- esound.spec
- esound.pc
- esddsp
--docs/Makefile
--docs/esd.1
--docs/esdcat.1
--docs/esd-config.1
--docs/esdctl.1
--docs/esddsp.1
--docs/esdfilt.1
--docs/esdloop.1
--docs/esdmon.1
--docs/esdplay.1
--docs/esdrec.1
--docs/esdsample.1
- ])
- dnl , [case "$CONFIG_FILES" in *esd-config*) chmod +x esd-config;; esac])
diff --git a/packages/esound/esound_0.2.36.bb b/packages/esound/esound_0.2.36.bb
index 1cf99ac90a..4f068113d5 100644
--- a/packages/esound/esound_0.2.36.bb
+++ b/packages/esound/esound_0.2.36.bb
@@ -1,19 +1,20 @@
-DESCRIPTION = "Enlightened Sound Daemon - GPE version"
+DESCRIPTION = "Enlightened Sound Daemon"
SECTION = "gpe/base"
LICENSE = "GPL"
DEPENDS = "audiofile"
-
-PR = "r1"
+PE = "1"
+PR = "r2"
inherit gnome binconfig
-SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.36.tar.bz2"
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/esound/0.2/esound-0.2.36.tar.bz2 \
+ file://no-docs.patch;patch=1"
EXTRA_OECONF = " \
- --disable-alsa \
- --disable-arts \
- --disable-artstest \
- "
+ --disable-alsa \
+ --disable-arts \
+ --disable-artstest \
+"
do_configure_prepend() {
sed -i -e 's:/usr/include/mme:${STAGING_INCDIR}/mme:g' configure.ac
}
diff --git a/packages/efl/edb-native/.mtn2git_empty b/packages/esound/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/edb-native/.mtn2git_empty
+++ b/packages/esound/files/.mtn2git_empty
diff --git a/packages/esound/files/no-docs.patch b/packages/esound/files/no-docs.patch
new file mode 100644
index 0000000000..fc69f1a038
--- /dev/null
+++ b/packages/esound/files/no-docs.patch
@@ -0,0 +1,11 @@
+Index: esound-0.2.36/Makefile.am
+===================================================================
+--- esound-0.2.36.orig/Makefile.am
++++ esound-0.2.36/Makefile.am
+@@ -1,5 +1,5 @@
+
+-SUBDIRS = docs
++SUBDIRS =
+
+ ACLOCAL_FLAGS = -I m4
+
diff --git a/packages/esound/old/esound-gpe_20020817.bb b/packages/esound/old/esound-gpe_20020817.bb
deleted file mode 100644
index a698211f7d..0000000000
--- a/packages/esound/old/esound-gpe_20020817.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-DESCRIPTION = "Enlightened Sound Daemon - GPE version"
-SECTION = "gpe/base"
-LICENSE = "GPL"
-DEPENDS = "audiofile"
-PR = "r5"
-PROVIDES += "esound"
-RPROVIDES += "esound"
-
-SRCDATE := "${PV}"
-SRC_URI = "svn://projects.linuxtogo.org/svn/gpe/trunk/base/;module=esound;date=20061119 \
- file://audiofile-please.patch;patch=1 \
- file://configure.patch;patch=1"
-
-S = "${WORKDIR}/esound"
-
-inherit autotools binconfig pkgconfig
-
-EXTRA_OECONF = "--disable-alsa"
-
-SOV = "0.2.28"
-PV = "${SOV}+cvs${SRCDATE}"
-
-
-do_stage () {
- install -m 0644 esd.h ${STAGING_INCDIR}/esd.h
- oe_soinstall .libs/libesd.so.${SOV} ${STAGING_LIBDIR}
- install -m 0644 .libs/libesd.lai ${STAGING_LIBDIR}/libesd.la
- install -m 0644 esd.m4 ${STAGING_DATADIR}/aclocal
-}
-
-PACKAGES =+ "esddsp esd esd-utils"
-
-FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
-FILES_esd = "${bindir}/esd"
-FILES_esd-utils = "${bindir}/*"
diff --git a/packages/esound/old/esound-gpe_20070109.bb b/packages/esound/old/esound-gpe_20070109.bb
deleted file mode 100644
index 850def76a0..0000000000
--- a/packages/esound/old/esound-gpe_20070109.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-DESCRIPTION = "Enlightened Sound Daemon - GPE version"
-SECTION = "gpe/base"
-LICENSE = "GPL"
-DEPENDS = "audiofile"
-PR = "r0"
-PROVIDES += "esound"
-RPROVIDES += "esound"
-
-SRCDATE = "${PV}"
-SRC_URI = "svn://projects.linuxtogo.org/svn/gpe/trunk/;module=extra/esound;rev=8935 \
- file://audiofile-please.patch;patch=1 \
- file://configure.patch;patch=1"
-
-S = "${WORKDIR}/esound"
-
-inherit autotools binconfig pkgconfig
-
-EXTRA_OECONF = "--disable-alsa"
-
-SOV = "0.2.28"
-PV = "${SOV}+cvs${SRCDATE}"
-
-do_stage () {
- install -m 0644 esd.h ${STAGING_INCDIR}/esd.h
- oe_soinstall .libs/libesd.so.${SOV} ${STAGING_LIBDIR}
- install -m 0644 .libs/libesd.lai ${STAGING_LIBDIR}/libesd.la
- install -m 0644 esd.m4 ${STAGING_DATADIR}/aclocal
-}
-
-PACKAGES =+ "esddsp esd esd-utils"
-
-FILES_esddsp = "${bindir}/esddsp ${libdir}/libesddsp.so.*"
-FILES_esd = "${bindir}/esd"
-FILES_esd-utils = "${bindir}/*"
diff --git a/packages/fbreader/fbreader_0.8.2a.bb b/packages/fbreader/fbreader_0.8.2a.bb
index 3a0dc543e8..2419ccf4ae 100644
--- a/packages/fbreader/fbreader_0.8.2a.bb
+++ b/packages/fbreader/fbreader_0.8.2a.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://only.mawhrin.net/fbreader/"
SECTION = "x11/utils"
PRIORITY = "optional"
DEPENDS = "gtk+ enca expat bzip2 libgpewidget"
-PR = "r3"
+PR = "r4"
# The RESOLUTION is defined at compile time which makes
# this package MACHINE specific.
@@ -13,6 +13,12 @@ PACKAGE_ARCH_${PN} = "${MACHINE_ARCH}"
SRC_URI = "http://only.mawhrin.net/fbreader/fbreader-sources-${PV}.tgz \
file://fbreader-0.8.2a_buildsys_oe.patch;patch=1 \
file://480x640-buildfix.patch;patch=1"
+
+SRC_URI_append_spitz = "\
+ file://zaurus-VGA.patch;patch=1"
+
+SRC_URI_append_akita = "\
+ file://zaurus-VGA.patch;patch=1"
# Set the defaults
READER_RESOLUTION = "240x320"
@@ -22,6 +28,8 @@ READER_STATUS = "release"
# Set device specific overrides
READER_RESOLUTION_fic-gta01 = "480x640"
+READER_RESOLUTION_spitz = "640x480"
+READER_RESOLUTION_akita = "640x480"
FILES_${PN} += "${datadir}/FBReader ${datadir}/zlibrary"
diff --git a/packages/fbreader/files/zaurus-VGA.patch b/packages/fbreader/files/zaurus-VGA.patch
new file mode 100644
index 0000000000..5ba7d91b9d
--- /dev/null
+++ b/packages/fbreader/files/zaurus-VGA.patch
@@ -0,0 +1,13 @@
+--- fbreader-0.8.2a/fbreader/data/default/styles.gpe640x480.xml.orig 2007-06-24 23:55:56.000000000 +0000
++++ fbreader-0.8.2a/fbreader/data/default/styles.gpe640x480.xml 2007-06-24 23:56:22.000000000 +0000
+@@ -1,8 +1,8 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <DefaultStyles>
+- <base family="Sans" fontSize="16"/>
++ <base family="Sans" fontSize="8"/>
+ <style id="0" name="Regular Paragraph" firstLineIndentDelta="22" allowHyphenations="true"/>
+- <style id="1" name="Title" fontSizeDelta="10" bold="true" spaceBefore="2" spaceAfter="7" alignment="center" allowHyphenations="false"/>
++ <style id="1" name="Title" fontSizeDelta="5" bold="true" spaceBefore="2" spaceAfter="7" alignment="center" allowHyphenations="false"/>
+ <style id="3" name="Poem Title" fontSizeDelta="2" bold="true" spaceBefore="6" spaceAfter="6" leftIndent="40" allowHyphenations="false"/>
+ <style id="2" name="Section Title" fontSizeDelta="6" bold="true" spaceAfter="5" alignment="center" allowHyphenations="false"/>
+ <style id="31" name="Header 1" fontSizeDelta="6" bold="true" spaceAfter="5" alignment="center" allowHyphenations="false"/>
diff --git a/packages/gaim/pidgin_2.0.1.bb b/packages/gaim/pidgin_2.0.2.bb
index 99bc3a34e9..e0f865722e 100644
--- a/packages/gaim/pidgin_2.0.1.bb
+++ b/packages/gaim/pidgin_2.0.2.bb
@@ -6,4 +6,4 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/pidgin/pidgin-${PV}.tar.bz2 \
file://pidgin.desktop-set-icon.patch;patch=1 \
"
-PR = "r4"
+PR = "r0"
diff --git a/packages/gdal/gdal_1.3.2.bb b/packages/gdal/gdal_1.3.2.bb
index 2a97cfe81d..60f86b165a 100644
--- a/packages/gdal/gdal_1.3.2.bb
+++ b/packages/gdal/gdal_1.3.2.bb
@@ -5,7 +5,7 @@ DEPENDS = "zlib"
SRC_URI = "http://www.gdal.org/dl/${P}.tar.gz"
-inherit autotools pkgconfig
+inherit autotools pkgconfig binconfig
PARALLEL_MAKE = ""
@@ -36,3 +36,7 @@ do_package_prepend() {
os.system('cp -pPR ${D}${D}* ${D}../')
}
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/geoclue/geoclue_svn.bb b/packages/geoclue/geoclue_git.bb
index 4237d1ebe6..376abdc326 100644
--- a/packages/geoclue/geoclue_svn.bb
+++ b/packages/geoclue/geoclue_git.bb
@@ -1,19 +1,17 @@
DESCRIPTION = "GeoClue is a project that provide all kinds of geography information to an application"
HOMEPAGE = "http://live.gnome.org/GeoClue"
-DEPENDS = "gpsd libsoup dbus-glib"
+DEPENDS = "gpsd libxml2 libsoup dbus-glib"
-PV = "0.0+svn${SRCDATE}"
-PR = "r1"
+PV = "0.0+git${SRCDATE}"
+PR = "r0"
+PE = "1"
inherit autotools pkgconfig
-SRC_URI = "svn://svn.foinse-project.org/geoclue;module=trunk;proto=http"
+SRC_URI = "git://anongit.freedesktop.org/git/geoclue;protocol=git"
-S = "${WORKDIR}/trunk"
-
-
-EXTRA_OECONF = "--disable-panel-applet"
+S = "${WORKDIR}/git"
do_install_append() {
mkdir -p ${D}/usr/share/
diff --git a/packages/efl/epsilon/.mtn2git_empty b/packages/geos/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/epsilon/.mtn2git_empty
+++ b/packages/geos/.mtn2git_empty
diff --git a/packages/geos/geos_2.2.3+3.0.0rc4.bb b/packages/geos/geos_2.2.3+3.0.0rc4.bb
new file mode 100644
index 0000000000..90bcc4b384
--- /dev/null
+++ b/packages/geos/geos_2.2.3+3.0.0rc4.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS)."
+HOMEPAGE = "http://geos.refractions.net/"
+LICENSE = "GPLv2""
+
+DEPENDS = "boost"
+
+PR = "r1"
+
+SRC_URI = "http://geos.refractions.net/geos-3.0.0rc4.tar.bz2"
+
+S = "${WORKDIR}/geos-3.0.0rc4"
+
+inherit autotools pkgconfig lib_package binconfig
+
+EXTRA_OECONF = "--disable-swig"
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/gpe-conf/gpe-conf_0.2.6.bb b/packages/gpe-conf/gpe-conf_0.2.6.bb
new file mode 100644
index 0000000000..1256ce5291
--- /dev/null
+++ b/packages/gpe-conf/gpe-conf_0.2.6.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Configuration applets for GPE"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+ esound audiofile libgpewidget libxsettings libxsettings-client libxrandr"
+RDEPENDS_${PN} = "xst xset ntpdate gpe-login gpe-icons tzdata xrandr"
+RDEPENDS_gpe-conf-panel = "gpe-conf"
+
+RPROVIDES_${PN} += " bl"
+RCONFLICTS_${PN} = "bl"
+
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit gpe autotools pkgconfig
+
+PACKAGES += "gpe-conf-panel"
+
+FILES_${PN} = "${sysconfdir} ${bindir} ${datadir}/pixmaps \
+ ${datadir}/applications/gpe-conf-* ${datadir}/gpe/pixmaps \
+ ${datadir}/gpe-conf"
+FILES_gpe-conf-panel = "${datadir}/applications/gpe-conf.desktop"
+
diff --git a/packages/gpsbabel/gpsbabel_1.2.5.bb b/packages/gpsbabel/gpsbabel_1.2.5.bb
index bd7e1246ca..987b000f10 100644
--- a/packages/gpsbabel/gpsbabel_1.2.5.bb
+++ b/packages/gpsbabel/gpsbabel_1.2.5.bb
@@ -1,15 +1,17 @@
SECTION = "console/utils"
DESCRIPTION = "GPS data converter"
-DEPENDS = "expat"
+DEPENDS = "expat libusb"
HOMEPAGE = "http://gpsbabel.sf.net"
LICENSE = "GPL"
+PR = "r1"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/gpsbabel/gpsbabel-${PV}.tar.gz"
inherit autotools pkgconfig
do_compile () {
- oe_runmake EXTRA_CFLAGS="-I${STAGING_INCDIR} -L${STAGING_LIBDIR}" INHIBIT_USB=-DNO_USB LIBUSB=
+ oe_runmake EXTRA_CFLAGS="-I${STAGING_INCDIR} -L${STAGING_LIBDIR}"
}
do_install () {
diff --git a/packages/gpsbabel/gpsbabel_1.3.3.bb b/packages/gpsbabel/gpsbabel_1.3.3.bb
new file mode 100644
index 0000000000..f9a8d98d4e
--- /dev/null
+++ b/packages/gpsbabel/gpsbabel_1.3.3.bb
@@ -0,0 +1,20 @@
+SECTION = "console/utils"
+DESCRIPTION = "GPS data converter"
+DEPENDS = "expat libusb"
+HOMEPAGE = "http://gpsbabel.sf.net"
+LICENSE = "GPL"
+
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gpsbabel/gpsbabel-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_compile () {
+ oe_runmake EXTRA_CFLAGS="-I${STAGING_INCDIR} -L${STAGING_LIBDIR}"
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 0744 gpsbabel ${D}${bindir}
+}
diff --git a/packages/gtk-webcore/midori_0.0.2.bb b/packages/gtk-webcore/midori_0.0.2.bb
new file mode 100644
index 0000000000..7f5fb6cd74
--- /dev/null
+++ b/packages/gtk-webcore/midori_0.0.2.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "Midori is a lightweight web browser."
+LICENSE = "GPLv2"
+
+DEPENDS = "osb-jscore osb-nrcit osb-nrcore libsexy"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz"
+
+
+
diff --git a/packages/gtk-webcore/osb-nrcore.inc b/packages/gtk-webcore/osb-nrcore.inc
index 3b71c9685d..7cbf0ce890 100644
--- a/packages/gtk-webcore/osb-nrcore.inc
+++ b/packages/gtk-webcore/osb-nrcore.inc
@@ -18,6 +18,14 @@ do_configure () {
mv ${TARGET_PREFIX}libtool.tmp ${TARGET_PREFIX}libtool
}
+do_install_append() {
+ #backward compat for some apps
+ ln -sf ${datadir}/gtk-webcore-nrcore ${D}${datadir}/osb-nrcore
+}
+
+FILES_${PN} += "${datadir}/gtk-webcore-nrcore"
+
+
do_stage () {
oe_libinstall -so libnrcore ${STAGING_LIBDIR}
oe_libinstall -so -C kwiq libnrcore_kwiq_gtk ${STAGING_LIBDIR}
@@ -30,3 +38,4 @@ do_stage () {
done
}
+
diff --git a/packages/gtk-webcore/osb-nrcore_svn.bb b/packages/gtk-webcore/osb-nrcore_svn.bb
index a6a70059fa..b9af57ad52 100644
--- a/packages/gtk-webcore/osb-nrcore_svn.bb
+++ b/packages/gtk-webcore/osb-nrcore_svn.bb
@@ -3,7 +3,7 @@ require osb-nrcore.inc
DEFAULT_PREFERENCE = "-1"
PV = "0.5.2+svn${SRCDATE}"
-PR = "r0"
+PR = "r1"
SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=NRCore;proto=https \
file://gcc4-fno-threadsafe-statics-NRCore.patch;patch=1 \
diff --git a/packages/images/angstrom-minimal-image.bb b/packages/images/angstrom-minimal-image.bb
index c79bff25e2..83d814a79a 100644
--- a/packages/images/angstrom-minimal-image.bb
+++ b/packages/images/angstrom-minimal-image.bb
@@ -1,13 +1,15 @@
#Angstrom minimalist image
#gives you a small images with ssh access
LICENSE = "MIT"
-PR = "r1"
+PR = "r3"
ANGSTROM_EXTRA_INSTALL ?= ""
DISTRO_SSH_DAEMON ?= "dropbear"
+IMAGE_LINGUAS = " "
RDEPENDS = "task-boot \
${DISTRO_SSH_DAEMON} \
+ angstrom-version \
"
export IMAGE_BASENAME = "minimalist-image"
diff --git a/packages/images/hentges-console-image.bb b/packages/images/hentges-console-image.bb
deleted file mode 100644
index 87381a4c77..0000000000
--- a/packages/images/hentges-console-image.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
-# License: MIT (see http://www.opensource.org/licenses/mit-license.php
-# for a copy of the license)
-#
-# Filename: hentges-console-image.bb
-# Date: 20070516 (YMD)
-
-DESCRIPTION = "Hentges Console Image"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "GPL"
-
-######################################################################################
-
-PV = "${HENTGES_PV}"
-PR = "${HENTGES_PR}"
-
-######################################################################################
-
-export IMAGE_NAME = "hentges-console-image"
-export IMAGE_LINGUAS = ""
-export PACKAGE_INSTALL = "${RDEPENDS}"
-
-######################################################################################
-
-DEPENDS = "task-base \
- task-hentges-base"
-
-RDEPENDS = "task-base \
- task-hentges-base"
-
-######################################################################################
-
-inherit image
-
-
diff --git a/packages/images/hentges-x11-image.bb b/packages/images/hentges-x11-image.bb
deleted file mode 100644
index 475f9f0ea9..0000000000
--- a/packages/images/hentges-x11-image.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
-# License: MIT (see http://www.opensource.org/licenses/mit-license.php
-# for a copy of the license)
-#
-# Filename: hentges-x11-image.bb
-# Date: 20070522 (YMD)
-
-DESCRIPTION = "Hentges X11 Image"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "MIT"
-
-######################################################################################
-
-PV = "${HENTGES_PV}"
-PR = "${HENTGES_PR}"
-
-######################################################################################
-
-export IMAGE_NAME = "hentges-x11-image"
-export IMAGE_LINGUAS = ""
-export PACKAGE_INSTALL = "${RDEPENDS}"
-
-######################################################################################
-
-PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
-PREFERRED_PROVIDER_tslib ?= "tslib"
-PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
-PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
-PREFERRED_PROVIDER_virtual/libx11 ?= "diet-x11"
-
-######################################################################################
-
-DEPENDS = "task-base \
- task-hentges-base \
- task-hentges-x11"
-
-RDEPENDS = "task-base \
- task-hentges-base \
- task-hentges-x11"
-
-######################################################################################
-
-inherit image
-
-
diff --git a/packages/images/opie-image-16mb.bb b/packages/images/opie-image-16mb.bb
new file mode 100644
index 0000000000..9c0ed1cacc
--- /dev/null
+++ b/packages/images/opie-image-16mb.bb
@@ -0,0 +1,69 @@
+export IMAGE_BASENAME = "opie-image-16mb"
+export IMAGE_LINGUAS = ""
+
+LICENSE = "MIT"
+PR = "r1"
+
+DEPENDS = "${MACHINE_TASK_PROVIDER} task-opie-16mb"
+RDEPENDS = "${INSTALL_PACKAGES}"
+
+INSTALL_PACKAGES = "task-boot \
+ ipkg ipkg-collateral \
+ dropbear \
+ task-opie-16mb-base \
+ task-opie-16mb-applets \
+ task-opie-16mb-inputmethods \
+ task-opie-16mb-settings \
+ task-opie-16mb-apps \
+ task-opie-16mb-pim \
+ task-opie-irda"
+
+export PACKAGE_INSTALL = "${INSTALL_PACKAGES}"
+
+# merge feed-sources into ipkg.conf for opie-aqpkg as it can't handle feed-sources outside of ipkg.conf.
+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"
+
+inherit image
diff --git a/packages/efl/esmart/.mtn2git_empty b/packages/initscripts/initscripts-1.0/fic-gta01/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/esmart/.mtn2git_empty
+++ b/packages/initscripts/initscripts-1.0/fic-gta01/.mtn2git_empty
diff --git a/packages/initscripts/initscripts-1.0/fic-gta01/inittab b/packages/initscripts/initscripts-1.0/fic-gta01/inittab
new file mode 100644
index 0000000000..8d313b2a58
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/fic-gta01/inittab
@@ -0,0 +1,48 @@
+# /etc/inittab: init(8) configuration.
+# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
+
+# The default runlevel.
+id:5:initdefault:
+
+# Boot-time system configuration/initialization script.
+# This is run first except when booting in emergency (-b) mode.
+si::sysinit:/etc/init.d/rcS
+
+# What to do in single-user mode.
+~~:S:wait:/sbin/sulogin
+
+# Shut down if kernel sends us SIGINT or SIGPWR
+ca::ctrlaltdel:/sbin/halt -p
+pf::powerfailnow:/sbin/halt -p
+
+# /etc/init.d executes the S and K scripts upon change
+# of runlevel.
+#
+# Runlevel 0 is halt.
+# Runlevel 1 is single-user.
+# Runlevels 2-5 are multi-user.
+# Runlevel 6 is reboot.
+
+l0:0:wait:/etc/init.d/rc 0
+l1:1:wait:/etc/init.d/rc 1
+l2:2:wait:/etc/init.d/rc 2
+l3:3:wait:/etc/init.d/rc 3
+l4:4:wait:/etc/init.d/rc 4
+l5:5:wait:/etc/init.d/rc 5
+l6:6:wait:/etc/init.d/rc 6
+# Normally not reached, but fallthrough in case of emergency.
+z6:6:respawn:/sbin/sulogin
+
+# /sbin/getty invocations for the runlevels.
+#
+# The "id" field MUST be the same as the last
+# characters of the device (after "tty").
+#
+# Format:
+# <id>:<runlevels>:<action>:<process>
+
+# NOTE: FIC GTA01 has this odd multiplexer on ttySAC0 since
+# GSM shares it with the serial output. We only allow
+# the getty in runlevel 2 to cope with that. gsmd gets
+# started in runlevel 3. -- mickey@openmoko.org
+S:2:respawn:/sbin/getty 115200 ttySAC0
diff --git a/packages/initscripts/initscripts-1.0/mountall.sh b/packages/initscripts/initscripts-1.0/mountall.sh
index 65d5d26b24..53bff0fbce 100755
--- a/packages/initscripts/initscripts-1.0/mountall.sh
+++ b/packages/initscripts/initscripts-1.0/mountall.sh
@@ -4,6 +4,9 @@
# Version: @(#)mountall.sh 2.83-2 01-Nov-2001 miquels@cistron.nl
#
. /etc/default/rcS
+if test -f /etc/default/mountall; then
+ . /etc/default/mountall
+fi
#
# Mount local filesystems in /etc/fstab. For some reason, people
@@ -11,7 +14,7 @@
# about this. So we mount "proc" filesystems without -v.
#
test "$VERBOSE" != no && echo "Mounting local filesystems..."
-mount -at nonfs,nosmbfs,noncpfs 2>/dev/null
+mount -a $MOUNTALL 2>&1 | logger -s -p user.err
#
# We might have mounted something over /dev, see if /dev/initctl is there.
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 23530b6dc8..39b1eee9c1 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 = "r93"
+PR = "r96"
SRC_URI = "file://halt \
file://ramdisk \
diff --git a/packages/iptables/iptables_1.3.8.bb b/packages/iptables/iptables_1.3.8.bb
new file mode 100644
index 0000000000..eccc1c077a
--- /dev/null
+++ b/packages/iptables/iptables_1.3.8.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "iptables network filtering tools"
+HOMEPAGE = "http://www.netfilter.org/"
+SECTION = "console/utils"
+LICENSE = "GPL"
+RRECOMMENDS = "kernel-module-ip-tables kernel-module-iptable-filter"
+PR = "r0"
+SRC_URI = "http://netfilter.org/projects/iptables/files/iptables-${PV}.tar.bz2 \
+ "
+
+S = "${WORKDIR}/iptables-${PV}"
+
+PARALLEL_MAKE=""
+
+export COPT_FLAGS = "${CFLAGS}"
+export KERNEL_DIR = "${STAGING_INCDIR}"
+
+do_compile () {
+ unset CFLAGS
+ oe_runmake BINDIR=${D}${sbindir} LIBDIR=${D}${libdir} MANDIR=${D}${mandir} NO_SHARED_LIBS=1
+}
+
+do_install () {
+ unset CFLAGS
+ oe_runmake BINDIR=${D}${sbindir} LIBDIR=${D}${libdir} MANDIR=${D}${mandir} install NO_SHARED_LIBS=1
+}
+
+PACKAGES =+ "${PN}-utils"
+FILES_${PN}-utils = "${sbindir}/iptables-save ${sbindir}/iptables-restore"
+FILES_${PN}-doc += "${mandir}"
+
diff --git a/packages/irssi/irssi_svn.bb b/packages/irssi/irssi_svn.bb
index 3f4662017f..7d09f116e5 100644
--- a/packages/irssi/irssi_svn.bb
+++ b/packages/irssi/irssi_svn.bb
@@ -6,6 +6,8 @@ DEPENDS += "ncurses glib-2.0"
PV = "0.8.10+svn${SRCDATE}"
PR = "r3"
+DEFAULT_PREFERENCE = "-1"
+
PACKAGES += "${PN}-common"
FILES_${PN} = "${bindir}/irssi"
FILES_${PN}-common = "${datadir}/irssi ${sysconfdir}"
diff --git a/packages/keymaps/files/jornada6xx/keymap-uk.map b/packages/keymaps/files/jornada6xx/keymap-uk.map
index 4f511c8847..a7bb082464 100644
--- a/packages/keymaps/files/jornada6xx/keymap-uk.map
+++ b/packages/keymaps/files/jornada6xx/keymap-uk.map
@@ -26,14 +26,14 @@ keycode 7 = six asciicircum
alt keycode 7 = Meta_six
keycode 8 = seven ampersand braceleft
control keycode 8 = Control_underscore
- alt keycode 8 = KP_7
+ altgr keycode 8 = KP_7
keycode 9 = eight asterisk bracketleft
control keycode 9 = Delete
- alt keycode 9 = KP_8
+ altgr keycode 9 = KP_8
keycode 10 = nine parenleft bracketright
- alt keycode 10 = KP_9
+ altgr keycode 10 = KP_9
keycode 11 = zero parenright braceright
- alt keycode 11 = KP_Divide
+ altgr keycode 11 = KP_Divide
keycode 12 = minus underscore backslash
control keycode 11 = Control_underscore
shift control keycode 11 = Control_underscore
@@ -52,13 +52,13 @@ keycode 18 = e
keycode 19 = r
keycode 20 = t
keycode 21 = y
- alt keycode 21 = KP_4
+ altgr keycode 21 = KP_4
keycode 22 = u
- alt keycode 22 = KP_5
+ altgr keycode 22 = KP_5
keycode 23 = i
- alt keycode 23 = KP_6
+ altgr keycode 23 = KP_6
keycode 24 = o
- alt keycode 24 = KP_Multiply
+ altgr keycode 24 = KP_Multiply
keycode 25 = p
AltGr keycode 25 = braceleft
keycode 26 = backslash bar
@@ -73,13 +73,13 @@ keycode 32 = d
keycode 33 = f
keycode 34 = g
keycode 35 = h
- alt keycode 35 = KP_1
+ altgr keycode 35 = KP_1
keycode 36 = j
- alt keycode 36 = KP_2
+ altgr keycode 36 = KP_2
keycode 37 = k
- alt keycode 37 = KP_3
+ altgr keycode 37 = KP_3
keycode 38 = l
- alt keycode 38 = KP_Subtract
+ altgr keycode 38 = KP_Subtract
keycode 39 = semicolon colon bracketleft
alt keycode 39 = Meta_semicolon
keycode 40 = apostrophe quotedbl bracketright
@@ -98,14 +98,14 @@ keycode 46 = c
keycode 47 = v
keycode 48 = b
keycode 49 = n
- alt keycode 49 = KP_0
+ altgr keycode 49 = KP_0
keycode 50 = m
- alt keycode 50 = KP_Comma
+ altgr keycode 50 = KP_Comma
keycode 51 = comma less
- alt keycode 51 = KP_Period
+ altgr keycode 51 = KP_Period
keycode 52 = period greater
control keycode 52 = Compose
- alt keycode 52 = KP_Add
+ altgr keycode 52 = KP_Add
keycode 54 = Shift
keycode 56 = Alt
keycode 57 = space space
@@ -180,11 +180,11 @@ keycode 115 = slash question
alt keycode 115 = Meta_slash
keycode 123 = AltGr
keycode 219 = Insert
-string F1 = "\033[[A"
-string F2 = "\033[[B"
-string F3 = "\033[[C"
-string F4 = "\033[[D"
-string F5 = "\033[[E"
+string F1 = "\033[11~"
+string F2 = "\033[12~"
+string F3 = "\033[13~"
+string F4 = "\033[14~"
+string F5 = "\033[15~"
string F6 = "\033[17~"
string F7 = "\033[18~"
string F8 = "\033[19~"
diff --git a/packages/libdaemon/libdaemon_0.11.bb b/packages/libdaemon/libdaemon_0.11.bb
new file mode 100644
index 0000000000..c91f6351ff
--- /dev/null
+++ b/packages/libdaemon/libdaemon_0.11.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "libdaemon is a lightweight C library which eases the writing of UNIX daemons."
+SECTION = "libs"
+AUTHOR = "Lennart Poettering <lennart@poettering.net>"
+HOMEPAGE = "http://0pointer.de/lennart/projects/libdaemon/"
+LICENSE = "LGPL"
+PR = "r0"
+
+SRC_URI = "http://0pointer.de/lennart/projects/libdaemon/libdaemon-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-lynx --disable-doxygen"
+
+do_stage () {
+ oe_libinstall -a -so -C libdaemon libdaemon ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/libdaemon
+ for i in daemon.h dlog.h dexec.h dfork.h dsignal.h dnonblock.h dpid.h; do
+ install -m 0644 ${S}/libdaemon/$i ${STAGING_INCDIR}/libdaemon/
+ done
+}
diff --git a/packages/libftdi/files/doxygen-configure.patch b/packages/libftdi/files/doxygen-configure.patch
index 6558cbd96f..150acb67d5 100644
--- a/packages/libftdi/files/doxygen-configure.patch
+++ b/packages/libftdi/files/doxygen-configure.patch
@@ -1,22 +1,22 @@
-Index: libftdi-0.8/configure.in
+Index: libftdi-0.9/configure.in
===================================================================
---- libftdi-0.8.orig/configure.in
-+++ libftdi-0.8/configure.in
+--- libftdi-0.9.orig/configure.in
++++ libftdi-0.9/configure.in
@@ -32,9 +32,5 @@ else
AC_MSG_RESULT(yes)
fi
-dnl check for doxygen
--AC_PATH_PROG(DOXYGEN, doxygen, $PATH)
+-AC_PATH_PROG(DOXYGEN, doxygen)
-AM_CONDITIONAL(HAVE_DOXYGEN, test -n $DOXYGEN);
-
AC_OUTPUT([libftdi-config],[chmod a+x libftdi-config])
-AC_OUTPUT(Makefile src/Makefile examples/Makefile doc/Doxyfile doc/Makefile libftdi.pc)
+AC_OUTPUT(Makefile src/Makefile examples/Makefile libftdi.pc)
-Index: libftdi-0.8/Makefile.am
+Index: libftdi-0.9/Makefile.am
===================================================================
---- libftdi-0.8.orig/Makefile.am
-+++ libftdi-0.8/Makefile.am
+--- libftdi-0.9.orig/Makefile.am
++++ libftdi-0.9/Makefile.am
@@ -2,7 +2,7 @@
# have all needed files, that a GNU package needs
AUTOMAKE_OPTIONS = foreign 1.4
diff --git a/packages/libftdi/libftdi-native_0.8.bb b/packages/libftdi/libftdi-native_0.9.bb
index 24f82778e5..24f82778e5 100644
--- a/packages/libftdi/libftdi-native_0.8.bb
+++ b/packages/libftdi/libftdi-native_0.9.bb
diff --git a/packages/libftdi/libftdi_0.8.bb b/packages/libftdi/libftdi_0.9.bb
index 451d2e302f..f7426ceb1a 100644
--- a/packages/libftdi/libftdi_0.8.bb
+++ b/packages/libftdi/libftdi_0.9.bb
@@ -8,7 +8,7 @@ SRC_URI = "http://www.intra2net.com/de/produkte/opensource/ftdi/TGZ/libftdi-${PV
file://doxygen-configure.patch;patch=1"
S = "${WORKDIR}/libftdi-${PV}"
-inherit autotools binconfig pkgconfig lib_package
+inherit autotools
EXTRA_OECONF = "--disable-docs"
diff --git a/packages/efl/evas/.mtn2git_empty b/packages/libid3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/evas/.mtn2git_empty
+++ b/packages/libid3/.mtn2git_empty
diff --git a/packages/libid3/libid3_1.1.bb b/packages/libid3/libid3_1.1.bb
new file mode 100644
index 0000000000..9abb9375f4
--- /dev/null
+++ b/packages/libid3/libid3_1.1.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "libID3 is a small C library to parse ID3 tags. \
+It uses as little memory as possible, and has both DOM- and SAX-like models."
+SECTION = "libs/multimedia"
+LICENSE = "LGPL"
+
+SRC_URI = "http://download.tangent.org/libid3-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/libpcap/libpcap-0.9.6/shared.patch b/packages/libpcap/libpcap-0.9.6/shared.patch
index d8118cf142..159389bb87 100644
--- a/packages/libpcap/libpcap-0.9.6/shared.patch
+++ b/packages/libpcap/libpcap-0.9.6/shared.patch
@@ -11,7 +11,7 @@
+# some defines for shared library compilation - FIXME, if not matching
+MAJ=0.9
-+MIN=5
++MIN=6
+VERSION=$(MAJ).$(MIN)
+LIBNAME=pcap
+LIBRARY=lib$(LIBNAME).a
diff --git a/packages/libpcap/libpcap_0.9.6.bb b/packages/libpcap/libpcap_0.9.6.bb
index d68cd31d52..9822f38ada 100644
--- a/packages/libpcap/libpcap_0.9.6.bb
+++ b/packages/libpcap/libpcap_0.9.6.bb
@@ -4,8 +4,10 @@ DESCRIPTION = "Network Packet Capture Library"
HOMEPAGE = "http://www.tcpdump.org/"
LICENSE = "BSD"
SECTION = "libs/network"
-PR = "r0"
+PR = "r1"
+
+# Don't forget to edit shared.patch to have the correct version number inside
SRC_URI = "http://www.tcpdump.org/release/libpcap-${PV}.tar.gz \
file://shared.patch;patch=1"
diff --git a/packages/librsvg/librsvg_2.11.1.bb b/packages/librsvg/librsvg_2.11.1.bb
deleted file mode 100644
index 4cddc1f2dd..0000000000
--- a/packages/librsvg/librsvg_2.11.1.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Library for rendering SVG files"
-SECTION = "x11/utils"
-DEPENDS = "gtk+ libcroco libart-lgpl libxml2 popt"
-LICENSE = "LGPL"
-PR = "r1"
-
-EXTRA_OECONF = "--disable-mozilla-plugin"
-
-inherit autotools pkgconfig gnome
-
-PACKAGES =+ "librsvg-gtk librsvg-gtk-dev rsvg"
-FILES_${PN} = "${libdir}/*.so.*"
-FILES_rsvg = "${bindir}/rsvg ${bindir}/rsvg-view ${datadir}/pixmaps/svg-viewer.svg"
-FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so"
-FILES_librsvg-gtk-dev = "${libdir}/gtk-2.0"
-
-EXTRA_OECONF = "--disable-mozilla-plugin"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/librsvg/librsvg_2.16.0.bb b/packages/librsvg/librsvg_2.16.0.bb
deleted file mode 100644
index 230ba1b43f..0000000000
--- a/packages/librsvg/librsvg_2.16.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Library for rendering SVG files"
-SECTION = "x11/utils"
-DEPENDS = "gtk+ libcroco cairo libart-lgpl libxml2 popt"
-LICENSE = "LGPL"
-PR = "r1"
-
-EXTRA_OECONF = "--disable-mozilla-plugin"
-
-inherit autotools pkgconfig gnome
-
-PACKAGES =+ "librsvg-gtk librsvg-gtk-dbg librsvg-gtk-dev rsvg"
-FILES_${PN} = "${libdir}/*.so.*"
-FILES_rsvg = "${bindir}/rsvg \
- ${bindir}/rsvg-view \
- ${bindir}/rsvg-convert \
- ${datadir}/pixmaps/svg-viewer.svg"
-FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so.*"
-FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*.la \
- ${libdir}/gtk-2.0/*/*.la"
-FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug"
-
-EXTRA_OECONF = "--disable-mozilla-plugin"
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/librsvg/librsvg_2.16.1.bb b/packages/librsvg/librsvg_2.16.1.bb
index 49513128d7..c7154e7157 100644
--- a/packages/librsvg/librsvg_2.16.1.bb
+++ b/packages/librsvg/librsvg_2.16.1.bb
@@ -3,22 +3,33 @@ SECTION = "x11/utils"
DEPENDS = "gtk+ libcroco cairo libart-lgpl libxml2 popt"
LICENSE = "LGPL"
-EXTRA_OECONF = "--disable-mozilla-plugin"
+PR = "r2"
inherit autotools pkgconfig gnome
+EXTRA_OECONF = "--disable-mozilla-plugin"
+
+
PACKAGES =+ "librsvg-gtk librsvg-gtk-dbg librsvg-gtk-dev rsvg"
FILES_${PN} = "${libdir}/*.so.*"
FILES_rsvg = "${bindir}/rsvg \
${bindir}/rsvg-view \
${bindir}/rsvg-convert \
${datadir}/pixmaps/svg-viewer.svg"
-FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so.*"
+FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so"
FILES_librsvg-gtk-dev += "${libdir}/gtk-2.0/*.la \
- ${libdir}/gtk-2.0/*/*.la"
-FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug"
+ ${libdir}/gtk-2.0/*/*.la \
+ ${libdir}/gtk-2.0/*/*/*.la \
+ "
+FILES_librsvg-gtk-dbg += "${libdir}/gtk-2.0/.debug \
+ ${libdir}/gtk-2.0/*/*/.debug"
-EXTRA_OECONF = "--disable-mozilla-plugin"
+pkg_postinst_librsvg-gtk() {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+ gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders
+}
do_stage() {
autotools_stage_all
diff --git a/packages/librsvg/librsvg_2.6.5.bb b/packages/librsvg/librsvg_2.6.5.bb
deleted file mode 100644
index e5b691a000..0000000000
--- a/packages/librsvg/librsvg_2.6.5.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Library for rendering SVG files"
-SECTION = "x11/utils"
-DEPENDS = "gtk+ libart-lgpl libxml2 popt"
-LICENSE = "LGPL"
-PR = "r3"
-
-inherit autotools pkgconfig gnome
-
-PACKAGES =+ "librsvg-gtk librsvg-gtk-dev rsvg"
-FILES_${PN} = "${libdir}/*.so.*"
-FILES_rsvg = "${bindir}/rsvg"
-FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so"
-FILES_librsvg-gtk-dev = "${libdir}/gtk-2.0"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/librsvg-2/librsvg/
- install -m 0644 rsvg.h ${STAGING_INCDIR}/librsvg-2/librsvg/
- install -m 0644 librsvg-features.h ${STAGING_INCDIR}/librsvg-2/librsvg/
- oe_libinstall -so -a librsvg-2 ${STAGING_LIBDIR}
-}
diff --git a/packages/librsvg/librsvg_2.9.5.bb b/packages/librsvg/librsvg_2.9.5.bb
deleted file mode 100644
index a462390182..0000000000
--- a/packages/librsvg/librsvg_2.9.5.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "Library for rendering SVG files"
-SECTION = "x11/utils"
-DEPENDS = "gtk+ libcroco libart-lgpl libxml2 popt"
-LICENSE = "LGPL"
-PR = "r3"
-
-inherit autotools pkgconfig gnome
-
-PACKAGES =+ "librsvg-gtk librsvg-gtk-dev rsvg"
-FILES_${PN} = "${libdir}/*.so.*"
-FILES_rsvg = "${bindir}/rsvg"
-FILES_librsvg-gtk = "${libdir}/gtk-2.0/*/*/*.so"
-FILES_librsvg-gtk-dev = "${libdir}/gtk-2.0"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/librsvg-2/librsvg/
- install -m 0644 rsvg.h ${STAGING_INCDIR}/librsvg-2/librsvg/
- install -m 0644 librsvg-features.h ${STAGING_INCDIR}/librsvg-2/librsvg/
- oe_libinstall -so -a librsvg-2 ${STAGING_LIBDIR}
-}
diff --git a/packages/linux/ezx-kernels_2.6.bb b/packages/linux/ezx-kernels_2.6.bb
deleted file mode 100644
index 77b75d60b0..0000000000
--- a/packages/linux/ezx-kernels_2.6.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-COMPATIBLE_MACHINE = "a780"
-PROVIDES = "virtual/kernel"
-DEPENDS = "a780-kernel-2.6 e680-kernel-2.6"
diff --git a/packages/linux/gta01-kernel_2.6.bb b/packages/linux/gta01-kernel_2.6.bb
deleted file mode 100644
index eaafb7e7b2..0000000000
--- a/packages/linux/gta01-kernel_2.6.bb
+++ /dev/null
@@ -1 +0,0 @@
-require linux-gta01_2.6.17.14.bb
diff --git a/packages/efl/ewl/.mtn2git_empty b/packages/linux/ixp4xx-kernel/2.6.22/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/ewl/.mtn2git_empty
+++ b/packages/linux/ixp4xx-kernel/2.6.22/.mtn2git_empty
diff --git a/packages/linux/ixp4xx-kernel/2.6.22/defconfig b/packages/linux/ixp4xx-kernel/2.6.22/defconfig
new file mode 100644
index 0000000000..95b301932f
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.22/defconfig
@@ -0,0 +1,1984 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.22-rc5
+# Sun Jun 24 12:06:23 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+CONFIG_ARCH_IXDP425=y
+# CONFIG_MACH_IXDPG425 is not set
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+# CONFIG_BT_CMTP is not set
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+# CONFIG_RFKILL is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNPACPI is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+CONFIG_ISCSI_TCP=m
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+# CONFIG_ISDN_I4L is not set
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+# CONFIG_CAPI_AVM is not set
+
+#
+# Active Eicon DIVA Server cards
+#
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+# CONFIG_PHANTOM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_BLINK is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_SN9C102 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+# CONFIG_USB_MOUSE is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+# CONFIG_SUNRPC_BIND34 is not set
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+CONFIG_CRYPTO_AES=m
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/ixp4xx-kernel_2.6.21.1.bb b/packages/linux/ixp4xx-kernel_2.6.21.5.bb
index c0cd8295e5..8ff440b28b 100644
--- a/packages/linux/ixp4xx-kernel_2.6.21.1.bb
+++ b/packages/linux/ixp4xx-kernel_2.6.21.5.bb
@@ -6,7 +6,7 @@
# http://trac.nslu2-linux.org/kernel/
#
# The revision that is pulled from SVN is specified below
-IXP4XX_KERNEL_SVN_REV = "861"
+IXP4XX_KERNEL_SVN_REV = "879"
#
# The directory containing the patches to be applied is
# specified below
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-core.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-core.patch
deleted file mode 100644
index 3b9877ce83..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-core.patch
+++ /dev/null
@@ -1,1120 +0,0 @@
-Index: linux-2.6.20.7/arch/arm/boot/compressed/head-xscale.S
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/boot/compressed/head-xscale.S 2007-04-21 22:31:54.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/boot/compressed/head-xscale.S 2007-04-21 22:32:53.000000000 -0300
-@@ -53,3 +53,6 @@
- str r1, [r0, #0x18]
- #endif
-
-+#ifdef CONFIG_ARCH_EZX
-+ mov r7, #MACH_TYPE_EZX
-+#endif
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Kconfig 2007-04-21 22:31:54.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Kconfig 2007-04-22 01:33:15.000000000 -0300
-@@ -37,6 +37,10 @@
- bool "Keith und Koep Trizeps4 DIMM-Module"
- select PXA27x
-
-+config PXA_EZX
-+ bool "Motorola EZX Platform"
-+ select PXA_SSP
-+
- endchoice
-
- if PXA_SHARPSL
-@@ -71,6 +75,27 @@
-
- endif
-
-+if PXA_EZX
-+
-+choice
-+ prompt "Select target EZX device"
-+
-+config PXA_EZX_E680
-+ bool "Motorola E680 GSM Phone"
-+ select PXA27x
-+
-+config PXA_EZX_A780
-+ bool "Motorola A780 GSM Phone"
-+ select PXA27x
-+
-+config PXA_EZX_E2
-+ bool "Motorola E2 GSM Phone"
-+ select PXA27x
-+
-+endchoice
-+
-+endif
-+
- endmenu
-
- config MACH_POODLE
-@@ -144,4 +169,5 @@
- tristate
- help
- Enable support for PXA2xx SSP ports
-+
- endif
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 22:31:54.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-22 01:33:17.000000000 -0300
-@@ -18,6 +18,7 @@
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o
-
- # Support for blinky lights
- led-y := leds.o
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-22 01:33:17.000000000 -0300
-@@ -0,0 +1,379 @@
-+/*
-+ * linux/arch/arm/mach-ezx/a780.c
-+ *
-+ * Support for the Motorola Ezx A780 Development Platform.
-+ *
-+ * Author: Zhuang Xiaofan
-+ * Created: Nov 25, 2003
-+ * Copyright: Motorola Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/init.h>
-+#include <linux/major.h>
-+#include <linux/fs.h>
-+#include <linux/interrupt.h>
-+#include <linux/sched.h>
-+#include <linux/bitops.h>
-+#include <linux/apm_bios.h>
-+#include <linux/platform_device.h>
-+#include <linux/input.h>
-+
-+#include <asm/types.h>
-+#include <asm/setup.h>
-+#include <asm/memory.h>
-+#include <asm/mach-types.h>
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+
-+#include <asm/mach/arch.h>
-+#include <asm/mach/map.h>
-+#include <asm/mach/irq.h>
-+
-+#include <asm/arch/ohci.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#include "ezx.h"
-+#include "generic.h"
-+#include <linux/tty.h>
-+#include <linux/apm_bios.h>
-+
-+
-+extern void usb_send_readurb(void);
-+extern int ezx_ssp_set_machinfo(struct ezxssp_machinfo *);
-+//FIXME extern void pm_do_poweroff(void);
-+
-+/* BP Handshake */
-+#define FIRST_STEP 2
-+#define LAST_STEP 3
-+#define BP_RDY_TIMEOUT 0x000c0000
-+
-+/* check power down condition */
-+inline void check_power_off(void)
-+{
-+ if (!(GPIO_is_high(GPIO_BB_WDI2))) {
-+#ifdef CONFIG_PM
-+//FIXME pm_do_poweroff();
-+#endif
-+ }
-+}
-+
-+/* SSP */
-+struct platform_device ezxssp_device = {
-+ .name = "ezx-ssp",
-+ .id = -1,
-+};
-+
-+struct ezxssp_machinfo ezx_ssp_machinfo = {
-+ .port = 1,
-+ .cs_pcap = GPIO_SPI_CE,
-+ .clk_pcap = 1,
-+};
-+
-+
-+/* OHCI Controller */
-+
-+static int ezx_ohci_init(struct device *dev)
-+{
-+ /* for A780 support (connected with Neptune) */
-+ pxa_gpio_mode(GPIO30_USB_P3_2); /* GPIO30 - USB_P3_2/ICL_TXENB */
-+ pxa_gpio_mode(GPIO31_USB_P3_6); /* GPIO31 - USB_P3_6/ICL_VPOUT */
-+ pxa_gpio_mode(GPIO90_USB_P3_5); /* GPIO90 - USB_P3_5/ICL_VPIN */
-+ pxa_gpio_mode(GPIO91_USB_P3_1); /* GPIO91 - USB_P3_1/ICL_XRXD */
-+ pxa_gpio_mode(GPIO56_USB_P3_4); /* GPIO56 - USB_P3_4/ICL_VMOUT */
-+ pxa_gpio_mode(GPIO113_USB_P3_3);/* GPIO113 - USB_P3_3/ICL_VMIN */
-+ UP3OCR = 0x00000002;
-+
-+ UHCHR = UHCHR & ~(UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
-+
-+ return 0;
-+}
-+
-+static struct pxaohci_platform_data ezx_ohci_platform_data = {
-+ .port_mode = PMM_NPS_MODE,
-+ .init = ezx_ohci_init,
-+};
-+
-+static int step = FIRST_STEP;
-+void handshake(void)
-+{
-+ /* step 1: check MCU_INT_SW or BP_RDY is low (now it is checked in apboot) */
-+ if (step == 1) {
-+ int timeout = BP_RDY_TIMEOUT;
-+
-+ /* config MCU_INT_SW, BP_RDY as input */
-+ GPDR(GPIO_MCU_INT_SW) &= ~GPIO_bit(GPIO_MCU_INT_SW);
-+ GPDR(GPIO_BP_RDY) &= ~GPIO_bit(GPIO_BP_RDY);
-+
-+ while ( timeout -- ) {
-+ if ( (!(GPIO_is_high(GPIO_MCU_INT_SW)))
-+ || (!(GPIO_is_high(GPIO_BP_RDY))) ) {
-+ step ++;
-+ break;
-+ }
-+
-+ check_power_off();
-+ }
-+ }
-+
-+ /* step 2: wait BP_RDY is low */
-+ if (step == 2) {
-+ if (!(GPIO_is_high(GPIO_BP_RDY))) {
-+
-+ /* config MCU_INT_SW as output */
-+ pxa_gpio_mode(GPIO_MCU_INT_SW | GPIO_OUT);
-+ clr_GPIO(GPIO_MCU_INT_SW);
-+
-+ step ++;
-+ }
-+ }
-+
-+ /* step 3: wait BP_RDY is high */
-+ if (step == 3) {
-+ if (GPIO_is_high(GPIO_BP_RDY)) {
-+ step ++;
-+ //FIXME delay_bklight();
-+ set_GPIO(GPIO_MCU_INT_SW);
-+ }
-+ }
-+}
-+
-+#ifdef CONFIG_APM
-+static unsigned long idle_limit = 0;
-+int pm_handle_irq(int irq)
-+{
-+
-+ //FIXME: extern unsigned long idle_limit;
-+ //FIXME: extern int can_idle, can_sleep;
-+ static unsigned long tmp_jiffy; /* for temporary store of jiffies */
-+
-+ /*
-+ * if idle_limit is zero, never enter idle.
-+ * if not OS timer, reset idle timer count
-+ */
-+ if (idle_limit == 0) {
-+ tmp_jiffy = jiffies;
-+ return irq;
-+ }
-+#if 0
-+ if (irq != IRQ_OST0) {
-+ tmp_jiffy = jiffies;
-+ can_idle = 0;
-+ can_sleep = 0;
-+ } else if (jiffies > tmp_jiffy + idle_limit) {
-+
-+ /*
-+ * I think this is enough to prevent from reentering here
-+ * due to jiffies will be stoped
-+ */
-+ tmp_jiffy = jiffies;
-+
-+ /* if pm idle timer expired, queue event */
-+ apm_queue_event(KRNL_PROC_INACT);
-+ can_idle = 1;
-+ }
-+#endif
-+
-+ return irq;
-+}
-+
-+irqreturn_t bp_wdi_intr(int irq, void *dev_id)
-+{
-+//FIXME apm_queue_event(KRNL_BP_WDI);
-+ return IRQ_HANDLED;
-+}
-+
-+static struct irqaction bp_wdi_irq = {
-+ .name = "BP wdi",
-+ .handler = &bp_wdi_intr,
-+};
-+#endif
-+
-+int handshake_pass(void)
-+{
-+ return (step > LAST_STEP);
-+}
-+
-+static irqreturn_t bp_rdy_intr(int irq, void *dev_id)
-+{
-+ static int usbipc_ready = 0;
-+
-+ if (!usbipc_ready) {
-+ handshake();
-+ if (handshake_pass()) {
-+ disable_irq(IRQ_GPIO(GPIO_BB_WDI2));
-+
-+ /* set bp_rdy handle for usb ipc */
-+ set_irq_type(GPIO_BP_RDY, IRQT_FALLING);
-+ usbipc_ready = 1;
-+ }
-+ } else
-+ // FIXME usb_send_readurb();
-+ {}
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static struct irqaction bp_rdy_irq = {
-+ .name = "BP rdy",
-+ .handler = bp_rdy_intr,
-+};
-+
-+static irqreturn_t bp_wdi2_intr(int irq, void *dev_id)
-+{
-+#ifdef CONFIG_PM
-+//FIXME pm_do_poweroff();
-+#endif
-+ return IRQ_HANDLED;
-+}
-+
-+static struct irqaction bp_wdi2_irq = {
-+ .name = "BP wdi2",
-+ .handler = bp_wdi2_intr,
-+};
-+
-+
-+static struct resource ezx_bp_resources[] = {
-+ [0] = {
-+ .start = GPIO_BP_RDY,
-+ .end = GPIO_BP_RDY,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [1] = {
-+ .start = GPIO_BB_WDI2,
-+ .end = GPIO_BB_WDI2,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+#ifdef CONFIG_APM
-+ [2] = {
-+ .start = GPIO_BB_WDI,
-+ .end = GPIO_BB_WDI,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+#endif
-+};
-+
-+static struct platform_device ezx_bp_device = {
-+ .name = "ezx-bp",
-+ .dev = {
-+ //.parent =
-+ //.platform_data =
-+ },
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(ezx_bp_resources),
-+ .resource = ezx_bp_resources,
-+};
-+
-+static void __init ezx_init_gpio_irq(void)
-+{
-+#ifdef CONFIG_APM
-+ set_irq_type(GPIO_BB_WDI, IRQT_FALLING);
-+ setup_irq(IRQ_GPIO(GPIO_BB_WDI), &bp_wdi_irq);
-+#endif
-+ set_irq_type(GPIO_BP_RDY, IRQT_BOTHEDGE);
-+ setup_irq(IRQ_GPIO(GPIO_BP_RDY), &bp_rdy_irq);
-+
-+ set_irq_type(GPIO_BB_WDI2, IRQT_FALLING);
-+ setup_irq(IRQ_GPIO(GPIO_BB_WDI2), &bp_wdi2_irq);
-+}
-+
-+static void __init a780_init_irq(void)
-+{
-+ pxa_init_irq();
-+
-+ /* init ezx specfic gpio irq */
-+ ezx_init_gpio_irq();
-+
-+ check_power_off();
-+ handshake();
-+ if (handshake_pass()) {
-+ disable_irq(IRQ_GPIO(GPIO_BP_RDY));
-+ disable_irq(IRQ_GPIO(GPIO_BB_WDI2));
-+ }
-+}
-+
-+static struct platform_device *devices[] __initdata = {
-+ &ezxssp_device,
-+ &ezx_bp_device,
-+};
-+
-+static void __init a780_init(void)
-+{
-+//FIXME CKEN = CKEN9_OSTIMER | CKEN22_MEMC | CKEN5_STUART;
-+
-+ ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
-+
-+ /* set BB_RESET PIN out put high */
-+ pxa_gpio_mode(GPIO_BB_RESET|GPIO_OUT);
-+ set_GPIO(GPIO_BB_RESET);
-+
-+ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
-+ pxa_gpio_mode(GPIO_ICL_FFTXD_MD);
-+ pxa_gpio_mode(GPIO_ICL_FFCTS_MD);
-+ pxa_gpio_mode(GPIO_ICL_FFRTS_MD);
-+
-+ pxa_gpio_mode(GPIO42_BTRXD_MD);
-+ pxa_gpio_mode(GPIO43_BTTXD_MD);
-+ pxa_gpio_mode(GPIO44_BTCTS_MD);
-+ pxa_gpio_mode(GPIO45_BTRTS_MD);
-+
-+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
-+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
-+ clr_GPIO(GPIO_EMU_MUX1);
-+ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
-+ clr_GPIO(GPIO_EMU_MUX2);
-+
-+#if defined(CONFIG_PXA_EZX_E680)
-+ pxa_gpio_mode(GPIO46_STRXD_MD);
-+ pxa_gpio_mode(GPIO47_STTXD_MD);
-+
-+ /* setup sleep mode values */
-+ PWER = 0xc000f803; // disable usb 0xdc00f803;
-+ PFER = 0x0000f803;
-+ PRER = 0x00001802;
-+ // keypad wakeup (PKWR,PGSR3) should be in keypad.c
-+ PGSR0 = 0x00000010;
-+ PGSR1 = 0x02800000;
-+ PGSR2 = 0x00040000;
-+ PGSR3 = 0x00000000;
-+ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
-+ PSLR = 0x05800f00;
-+
-+#elif defined(CONFIG_PXA_EZX_A780)
-+
-+ /* Standard UART */
-+ pxa_gpio_mode(GPIO46_STRXD_MD);
-+ pxa_gpio_mode(GPIO47_STTXD_MD);
-+
-+ /* setup sleep mode values */
-+ PWER = 0xc0007803; // disable usb, GPIO15 NC
-+ PFER = 0x00007803;
-+ PRER = 0x00001802;
-+ // keypad wakeup (PKWR,PGSR3) should be in keypad.c
-+ PGSR0 = 0x00000010;
-+ PGSR1 = 0x02800000;
-+ PGSR2 = 0x00040000;
-+ PGSR3 = 0x00000008;
-+ PCFR = PCFR_DC_EN | PCFR_FS | PCFR_FP | PCFR_OPDE;
-+ PSLR = 0x05800f00;
-+
-+#endif
-+ pxa_set_ohci_info(&ezx_ohci_platform_data);
-+
-+ platform_add_devices(devices, ARRAY_SIZE(devices));
-+
-+}
-+
-+MACHINE_START(EZX, "Motorola Ezx Platform")
-+ /* Maintainer: Harald Welte <laforge@gnumonks.org> */
-+ .phys_io = 0x40000000,
-+ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
-+ .boot_params = 0xa0000100,
-+ .map_io = pxa_map_io,
-+ .init_irq = a780_init_irq,
-+ .timer = &pxa_timer,
-+ .init_machine = a780_init,
-+MACHINE_END
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/ezx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/ezx.h 2007-04-21 22:32:53.000000000 -0300
-@@ -0,0 +1,225 @@
-+/*
-+ * linux/include/asm-arm/arch-pxa/ezx.h
-+ *
-+ * Specific macro defines for Motorola Ezx Development Platform
-+ *
-+ * Author: Zhuang Xiaofan
-+ * Created: Nov 25, 2003
-+ * Copyright: Motorola Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+/* support E680 p3 and ealier PCB */
-+//#define E680_P3_AND_EARLY
-+
-+#define GPIO_is_high(x) (GPLR(x) & GPIO_bit(x))
-+#define set_GPIO(x) (GPSR(x) = GPIO_bit(x))
-+#define clr_GPIO(x) (GPCR(x) = GPIO_bit(x))
-+
-+/*
-+ * Flags in memory for sleep use
-+ */
-+#define FLAG_ADDR PHYS_OFFSET
-+#define RESUME_ADDR (PHYS_OFFSET + 4)
-+#define BPSIG_ADDR (PHYS_OFFSET + 8)
-+
-+#define USER_OFF_FLAG 0x5a5a5a5a
-+#define SLEEP_FLAG 0x6b6b6b6b
-+#define OFF_FLAG 0x7c7c7c7c
-+#define REFLASH_FLAG 0x0C1D2E3F
-+#define PASS_THRU_FLAG 0x12345678
-+
-+#define WDI_FLAG 0xbb00dead
-+#define NO_FLAG 0xaa00dead
-+
-+/*
-+ * GPIO control pin, have to change when hardware lock down
-+ */
-+
-+#ifdef E680_P3_AND_EARLY
-+
-+/* shakehand with BP's PIN */
-+#define GPIO_BP_RDY 0 /* BP_RDY */
-+#define GPIO_BB_WDI 13 /* BB_WDI */
-+#define GPIO_BB_WDI2 3 /* BB_WDI2 */
-+#define GPIO_BB_RESET 57 /* BB_RESET */
-+#define GPIO_MCU_INT_SW 115 /* MCU_INT_SW */
-+#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
-+
-+/* control PCAP direct PIN */
-+#define GPIO_WDI_AP 4 /* WDI_AP */
-+#define GPIO_SYS_RESTART 55 /* restart PCAP power */
-+#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
-+
-+/* communicate with PCAP's PIN */
-+#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
-+#define GPIO_SPI_CLK 23 /* PCAP SPI port clock */
-+#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
-+#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
-+#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
-+
-+/* blue tooth control PIN */
-+#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
-+#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
-+#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
-+
-+/* control LCD high - OFF low -- ON */
-+#define GPIO_LCD_OFF 116 /* control LCD */
-+
-+/* FFUART PIN */
-+#define GPIO_ICL_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
-+#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
-+#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
-+#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
-+
-+#elif defined(A780_P1_AND_EARLY)
-+
-+/* shakehand with BP's PIN */
-+#define GPIO_BP_RDY 0 /* BP_RDY */
-+#define GPIO_BB_WDI 13 /* BB_WDI */
-+#define GPIO_BB_WDI2 3 /* BB_WDI2 */
-+#define GPIO_BB_RESET 82 /* BB_RESET */
-+#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
-+#define GPIO_TC_MM_EN 89 /* TC_MM_EN */
-+
-+/* control PCAP direct PIN */
-+#define GPIO_WDI_AP 4 /* WDI_AP */
-+#define GPIO_SYS_RESTART 55 /* restart PCAP power */
-+#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
-+
-+/* communicate with PCAP's PIN */
-+#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
-+#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
-+#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
-+#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
-+#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
-+
-+/* blue tooth control PIN */
-+#define GPIO_BT_WAKEUP 2 /* AP wake up bluetooth module */
-+#define GPIO_BT_HOSTWAKE 14 /* bluetooth module wake up Ap module */
-+#define GPIO_BT_RESET 56 /* AP reset bluetooth module */
-+
-+/* control LCD high - OFF low -- ON */
-+#define GPIO_LCD_OFF 116 /* control LCD */
-+
-+/* FFUART PIN */
-+#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
-+#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
-+#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
-+#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
-+
-+#else
-+
-+/* shakehand with BP's PIN */
-+#define GPIO_BP_RDY 0 /* BP_RDY */
-+#define GPIO_BB_WDI 13 /* BB_WDI */
-+#define GPIO_BB_WDI2 3 /* BB_WDI2 */
-+#define GPIO_BB_RESET 82 /* BB_RESET */
-+#define GPIO_MCU_INT_SW 57 /* MCU_INT_SW */
-+#define GPIO_TC_MM_EN 99 /* TC_MM_EN */
-+
-+/* control PCAP direct PIN */
-+#define GPIO_WDI_AP 4 /* WDI_AP */
-+#define GPIO_SYS_RESTART 55 /* restart PCAP power */
-+//#define GPIO_AP_STANDBY 28 /* make pcap enter standby mode */
-+
-+/* communicate with PCAP's PIN */
-+#define GPIO_PCAP_SEC_INT 1 /* PCAP interrupt PIN to AP */
-+#define GPIO_SPI_CLK 29 /* PCAP SPI port clock */
-+#define GPIO_SPI_CE 24 /* PCAP SPI port SSPFRM */
-+#define GPIO_SPI_MOSI 25 /* PCAP SPI port SSPTXD */
-+#define GPIO_SPI_MISO 26 /* PCAP SPI port SSPRXD */
-+
-+/* blue tooth control PIN */
-+#define GPIO_BT_WAKEUP 28 /* AP wake up bluetooth module */
-+#define GPIO_BT_HOSTWAKE 14 /* AP wake up bluetooth module */
-+#define GPIO_BT_RESET 48 /* AP reset bluetooth module */
-+
-+/* control LCD high - OFF low -- ON */
-+#define GPIO_LCD_OFF 116 /* control LCD */
-+
-+/* FFUART PIN */
-+#define GPIO_ICL_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
-+#define GPIO_ICL_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
-+#define GPIO_ICL_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
-+#define GPIO_ICL_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
-+
-+#endif
-+/*
-+ * ezx platform, wake up source edge detect bit
-+ */
-+#define PEDR_INT_SEC 1
-+
-+#define GPIO_FLIP_PIN 12
-+/*E680 screen lock button*/
-+
-+#define GPIO_LOCK_SCREEN_PIN GPIO_FLIP_PIN
-+
-+/* MMC interface */
-+#define GPIO_MMC_DETECT 11
-+#define GPIO_MMC_CLK 32
-+#define GPIO_MMC_DATA0 92
-+#define GPIO_MMC_WP 107
-+#define GPIO_MMC_DATA1 109
-+#define GPIO_MMC_DATA2 110
-+#define GPIO_MMC_DATA3 111
-+#define GPIO_MMC_CMD 112
-+
-+/* interface function */
-+#define GPIO_MMC_CLK_MD (GPIO_MMC_CLK | GPIO_ALT_FN_2_OUT)
-+#define GPIO_MMC_DATA0_MD (GPIO_MMC_DATA0 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
-+#define GPIO_MMC_DATA1_MD (GPIO_MMC_DATA1 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
-+#define GPIO_MMC_DATA2_MD (GPIO_MMC_DATA2 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
-+#define GPIO_MMC_DATA3_MD (GPIO_MMC_DATA3 | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
-+
-+#define GPIO_MMC_CMD_MD (GPIO_MMC_CMD | GPIO_ALT_FN_1_IN | GPIO_ALT_FN_1_OUT)
-+
-+/* EMU GPIO 119 ---MUX2 120 --- MUX1 */
-+#define GPIO_EMU_MUX1 120
-+#define GPIO_EMU_MUX2 119
-+#define GPIO_SNP_INT_CTL 86
-+#define GPIO_SNP_INT_IN 87
-+
-+
-+/* audio related pins */
-+#define AP_13MHZ_OUTPUT_PIN 9
-+
-+#ifdef CONFIG_ARCH_EZX_E680
-+#define GPIO_VA_SEL_BUL 79
-+#define GPIO_FLT_SEL_BUL 80 /* out filter select pin */
-+#define GPIO_MIDI_RESET 78 /* GPIO used by MIDI chipset */
-+#define GPIO_MIDI_CS 33
-+#define GPIO_MIDI_IRQ 15
-+#define GPIO_MIDI_NPWE 49
-+#define GPIO_MIDI_RDY 18
-+#endif
-+
-+#ifdef CONFIG_ARCH_EZX_A780
-+#define GPIO_HW_ATTENUATE_A780 96 /* hw noise attenuation be used or bypassed, for receiver or louderspeaker mode */
-+#endif
-+
-+
-+/* bp status pin */
-+#define GPIO_BP_STATE 41
-+
-+/* define usb related pin */
-+#define GPIO34_TXENB 34
-+#define GPIO35_XRXD 35
-+#define GPIO36_VMOUT 36
-+#define GPIO39_VPOUT 39
-+#define GPIO40_VPIN 40
-+#define GPIO53_VMIN 53
-+
-+/* USB client 6 pin defination */
-+#define GPIO34_TXENB_MD (GPIO34_TXENB | GPIO_ALT_FN_1_OUT)
-+#define GPIO35_XRXD_MD (GPIO35_XRXD | GPIO_ALT_FN_2_IN )
-+#define GPIO36_VMOUT_MD (GPIO36_VMOUT | GPIO_ALT_FN_1_OUT)
-+#define GPIO39_VPOUT_MD (GPIO39_VPOUT | GPIO_ALT_FN_1_OUT)
-+#define GPIO40_VPIN_MD (GPIO40_VPIN | GPIO_ALT_FN_3_IN )
-+#define GPIO53_VMIN_MD (GPIO53_VMIN | GPIO_ALT_FN_2_IN )
-+
-+#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
-+
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/pxa-regs.h
-===================================================================
---- linux-2.6.20.7.orig/include/asm/arch/pxa-regs.h 2007-04-21 22:31:54.000000000 -0300
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/pxa-regs.h 2007-04-21 22:32:53.000000000 -0300
-@@ -854,6 +854,8 @@
- #define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
- #define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
-
-+#define UP3OCR __REG(0x40600024) /* USB Port 3 Output Control register */
-+
- #define UDCCSN(x) __REG2(0x40600100, (x) << 2)
- #define UDCCSR0 __REG(0x40600100) /* UDC Control/Status register - Endpoint 0 */
- #define UDCCSR0_SA (1 << 7) /* Setup Active */
-@@ -1257,6 +1259,7 @@
- #define GPIO33_nCS_5 33 /* chip select 5 */
- #define GPIO34_FFRXD 34 /* FFUART receive */
- #define GPIO34_MMCCS0 34 /* MMC Chip Select 0 */
-+#define GPIO34_USB_P2_2 34 /* USB Port2 Pin 2 */
- #define GPIO35_FFCTS 35 /* FFUART Clear to send */
- #define GPIO36_FFDCD 36 /* FFUART Data carrier detect */
- #define GPIO37_FFDSR 37 /* FFUART data set ready */
-@@ -1370,6 +1373,7 @@
- #define GPIO18_RDY_MD (18 | GPIO_ALT_FN_1_IN)
- #define GPIO19_DREQ1_MD (19 | GPIO_ALT_FN_1_IN)
- #define GPIO20_DREQ0_MD (20 | GPIO_ALT_FN_1_IN)
-+#define GPIO22_SCLK2_MD (22 | GPIO_ALT_FN_3_IN)
- #define GPIO23_SCLK_MD (23 | GPIO_ALT_FN_2_OUT)
- #define GPIO24_SFRM_MD (24 | GPIO_ALT_FN_2_OUT)
- #define GPIO25_STXD_MD (25 | GPIO_ALT_FN_2_OUT)
-@@ -1380,23 +1384,33 @@
- #define GPIO28_BITCLK_OUT_I2S_MD (28 | GPIO_ALT_FN_1_OUT)
- #define GPIO29_SDATA_IN_AC97_MD (29 | GPIO_ALT_FN_1_IN)
- #define GPIO29_SDATA_IN_I2S_MD (29 | GPIO_ALT_FN_2_IN)
-+#define GPIO29_SCLK_MD (29 | GPIO_ALT_FN_3_IN)
- #define GPIO30_SDATA_OUT_AC97_MD (30 | GPIO_ALT_FN_2_OUT)
- #define GPIO30_SDATA_OUT_I2S_MD (30 | GPIO_ALT_FN_1_OUT)
-+#define GPIO30_USB_P3_2 (30 | GPIO_ALT_FN_3_OUT)
- #define GPIO31_SYNC_I2S_MD (31 | GPIO_ALT_FN_1_OUT)
- #define GPIO31_SYNC_AC97_MD (31 | GPIO_ALT_FN_2_OUT)
-+#define GPIO31_USB_P3_6 (31 | GPIO_ALT_FN_3_OUT)
- #define GPIO32_SDATA_IN1_AC97_MD (32 | GPIO_ALT_FN_1_IN)
- #define GPIO32_SYSCLK_I2S_MD (32 | GPIO_ALT_FN_1_OUT)
- #define GPIO32_MMCCLK_MD ( 32 | GPIO_ALT_FN_2_OUT)
- #define GPIO33_nCS_5_MD (33 | GPIO_ALT_FN_2_OUT)
- #define GPIO34_FFRXD_MD (34 | GPIO_ALT_FN_1_IN)
- #define GPIO34_MMCCS0_MD (34 | GPIO_ALT_FN_2_OUT)
-+#define GPIO34_USB_P2_2_MD (34 | GPIO_ALT_FN_1_OUT)
- #define GPIO35_FFCTS_MD (35 | GPIO_ALT_FN_1_IN)
-+#define GPIO35_USB_P2_1_MD (35 | GPIO_ALT_FN_2_IN)
- #define GPIO36_FFDCD_MD (36 | GPIO_ALT_FN_1_IN)
-+#define GPIO36_USB_P2_4_MD (36 | GPIO_ALT_FN_1_OUT)
- #define GPIO37_FFDSR_MD (37 | GPIO_ALT_FN_1_IN)
-+#define GPIO37_SFRM2_MD (37 | GPIO_ALT_FN_2_IN)
- #define GPIO38_FFRI_MD (38 | GPIO_ALT_FN_1_IN)
-+#define GPIO38_STXD2_MD (38 | GPIO_ALT_FN_2_OUT)
- #define GPIO39_MMCCS1_MD (39 | GPIO_ALT_FN_1_OUT)
- #define GPIO39_FFTXD_MD (39 | GPIO_ALT_FN_2_OUT)
-+#define GPIO39_USB_P2_6_MD (39 | GPIO_ALT_FN_1_OUT)
- #define GPIO40_FFDTR_MD (40 | GPIO_ALT_FN_2_OUT)
-+#define GPIO40_USB_P2_5_MD (40 | GPIO_ALT_FN_3_IN)
- #define GPIO41_FFRTS_MD (41 | GPIO_ALT_FN_2_OUT)
- #define GPIO42_BTRXD_MD (42 | GPIO_ALT_FN_1_IN)
- #define GPIO42_HWRXD_MD (42 | GPIO_ALT_FN_3_IN)
-@@ -1421,13 +1435,17 @@
- #define GPIO51_HWRTS_MD (51 | GPIO_ALT_FN_1_OUT)
- #define GPIO51_nPIOW_MD (51 | GPIO_ALT_FN_2_OUT)
- #define GPIO52_nPCE_1_MD (52 | GPIO_ALT_FN_2_OUT)
-+#define GPIO52_SCLK3_MD (52 | GPIO_ALT_FN_2_OUT)
- #define GPIO53_nPCE_2_MD (53 | GPIO_ALT_FN_2_OUT)
- #define GPIO53_MMCCLK_MD (53 | GPIO_ALT_FN_1_OUT)
-+#define GPIO53_FFRXD_MD (53 | GPIO_ALT_FN_1_IN)
-+#define GPIO53_USB_P2_3_MD (53 | GPIO_ALT_FN_2_IN)
- #define GPIO54_MMCCLK_MD (54 | GPIO_ALT_FN_1_OUT)
- #define GPIO54_nPCE_2_MD (54 | GPIO_ALT_FN_2_OUT)
- #define GPIO54_pSKTSEL_MD (54 | GPIO_ALT_FN_2_OUT)
- #define GPIO55_nPREG_MD (55 | GPIO_ALT_FN_2_OUT)
- #define GPIO56_nPWAIT_MD (56 | GPIO_ALT_FN_1_IN)
-+#define GPIO56_USB_P3_4 (56 | GPIO_ALT_FN_1_OUT)
- #define GPIO57_nIOIS16_MD (57 | GPIO_ALT_FN_1_IN)
- #define GPIO58_LDD_0_MD (58 | GPIO_ALT_FN_2_OUT)
- #define GPIO59_LDD_1_MD (59 | GPIO_ALT_FN_2_OUT)
-@@ -1463,13 +1481,19 @@
- #define GPIO80_nCS_4_MD (80 | GPIO_ALT_FN_2_OUT)
- #define GPIO81_NSSP_CLK_OUT (81 | GPIO_ALT_FN_1_OUT)
- #define GPIO81_NSSP_CLK_IN (81 | GPIO_ALT_FN_1_IN)
-+#define GPIO81_STXD3_MD (81 | GPIO_ALT_FN_1_OUT)
- #define GPIO82_NSSP_FRM_OUT (82 | GPIO_ALT_FN_1_OUT)
- #define GPIO82_NSSP_FRM_IN (82 | GPIO_ALT_FN_1_IN)
- #define GPIO83_NSSP_TX (83 | GPIO_ALT_FN_1_OUT)
- #define GPIO83_NSSP_RX (83 | GPIO_ALT_FN_2_IN)
-+#define GPIO83_SFRM3_MD (83 | GPIO_ALT_FN_1_IN)
- #define GPIO84_NSSP_TX (84 | GPIO_ALT_FN_1_OUT)
- #define GPIO84_NSSP_RX (84 | GPIO_ALT_FN_2_IN)
- #define GPIO85_nPCE_1_MD (85 | GPIO_ALT_FN_1_OUT)
-+#define GPIO88_SRXD2_MD (88 | GPIO_ALT_FN_2_IN)
-+#define GPIO89_SRXD3_MD (89 | GPIO_ALT_FN_1_IN)
-+#define GPIO90_USB_P3_5 (90 | GPIO_ALT_FN_2_IN)
-+#define GPIO91_USB_P3_1 (91 | GPIO_ALT_FN_2_IN)
- #define GPIO92_MMCDAT0_MD (92 | GPIO_ALT_FN_1_OUT)
- #define GPIO102_nPCE_1_MD (102 | GPIO_ALT_FN_1_OUT)
- #define GPIO104_pSKTSEL_MD (104 | GPIO_ALT_FN_1_OUT)
-@@ -1481,6 +1505,7 @@
- #define GPIO112_MMCCMD_MD (112 | GPIO_ALT_FN_1_OUT)
- #define GPIO113_I2S_SYSCLK_MD (113 | GPIO_ALT_FN_1_OUT)
- #define GPIO113_AC97_RESET_N_MD (113 | GPIO_ALT_FN_2_OUT)
-+#define GPIO113_USB_P3_3 (113 | GPIO_ALT_FN_3_IN)
- #define GPIO117_I2CSCL_MD (117 | GPIO_ALT_FN_1_OUT)
- #define GPIO118_I2CSDA_MD (118 | GPIO_ALT_FN_1_IN)
-
-@@ -1496,6 +1521,7 @@
- #define PFER __REG(0x40F00014) /* Power Manager GPIO Falling-Edge Detect Enable Register */
- #define PEDR __REG(0x40F00018) /* Power Manager GPIO Edge Detect Status Register */
- #define PCFR __REG(0x40F0001C) /* Power Manager General Configuration Register */
-+#define PGSR(x) (__REG(0x40F00020 + ((unsigned long)(x)/32*4)))
- #define PGSR0 __REG(0x40F00020) /* Power Manager GPIO Sleep State Register for GP[31-0] */
- #define PGSR1 __REG(0x40F00024) /* Power Manager GPIO Sleep State Register for GP[63-32] */
- #define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
-Index: linux-2.6.20.7/arch/arm/boot/compressed/head.S
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/boot/compressed/head.S 2007-04-21 22:31:54.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/boot/compressed/head.S 2007-04-21 22:32:53.000000000 -0300
-@@ -117,6 +117,9 @@
- mov r0, r0
- .endr
-
-+ mov r1, #0x300 @ mach_id 0x363 is official EZX
-+ orr r1, r1, #0x63 @ bootloader JUMP doesn't set r1
-+
- b 1f
- .word 0x016f2818 @ Magic numbers to help the loader
- .word start @ absolute load/run zImage address
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/uncompress.h
-===================================================================
---- linux-2.6.20.7.orig/include/asm-arm/arch-pxa/uncompress.h 2007-04-21 22:31:54.000000000 -0300
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/uncompress.h 2007-04-21 22:32:53.000000000 -0300
-@@ -14,14 +14,14 @@
- #define STUART ((volatile unsigned long *)0x40700000)
- #define HWUART ((volatile unsigned long *)0x41600000)
-
--#define UART FFUART
-+#define UART STUART
-
-
- static inline void putc(char c)
- {
-- while (!(UART[5] & 0x20))
-+/* while (!(UART[5] & 0x40))
- barrier();
-- UART[0] = c;
-+ UART[0] = c;*/
- }
-
- /*
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx_ssp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx_ssp.c 2007-04-22 01:36:48.000000000 -0300
-@@ -0,0 +1,130 @@
-+/*
-+ * SSP control code for Motorola EZX phones
-+ *
-+ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <asm/hardware.h>
-+#include <asm/mach-types.h>
-+
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#include "ezx.h"
-+
-+static DEFINE_SPINLOCK(ezx_ssp_lock);
-+static struct ssp_dev ezx_ssp_dev;
-+static struct ssp_state ezx_ssp_state;
-+static struct ezxssp_machinfo *ssp_machinfo;
-+
-+/* PCAP */
-+unsigned long ezx_ssp_pcap_putget(ulong data)
-+{
-+ unsigned long flag;
-+ u32 ret = 0;
-+
-+ spin_lock_irqsave(&ezx_ssp_lock, flag);
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPCR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+
-+ ssp_write_word(&ezx_ssp_dev,data);
-+ ssp_read_word(&ezx_ssp_dev, &ret);
-+
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL(ezx_ssp_pcap_putget);
-+
-+/* ASSP */
-+
-+/* NSSP */
-+
-+void __init ezx_ssp_set_machinfo(struct ezxssp_machinfo *machinfo)
-+{
-+ ssp_machinfo = machinfo;
-+}
-+
-+static int __init ezx_ssp_probe(struct platform_device *dev)
-+{
-+ int ret;
-+ /* PCAP init */
-+ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
-+ pxa_gpio_mode(GPIO24_SFRM_MD);
-+ pxa_gpio_mode(GPIO25_STXD_MD);
-+ pxa_gpio_mode(GPIO26_SRXD_MD);
-+
-+ /* Chip Select - Disable All */
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ pxa_gpio_mode(ssp_machinfo->cs_pcap | GPIO_OUT | GPIO_DFLT_HIGH);
-+
-+ ret = ssp_init(&ezx_ssp_dev, ssp_machinfo->port, 0);
-+
-+ if (ret)
-+ printk(KERN_ERR "Unable to register SSP handler!\n");
-+ else {
-+ ssp_disable(&ezx_ssp_dev);
-+ ssp_config(&ezx_ssp_dev,
-+ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
-+ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
-+ 0, SSCR0_SerClkDiv(ssp_machinfo->clk_pcap));
-+ ssp_enable(&ezx_ssp_dev);
-+ }
-+
-+ return ret;
-+}
-+
-+static int ezx_ssp_remove(struct platform_device *dev)
-+{
-+ ssp_exit(&ezx_ssp_dev);
-+ return 0;
-+}
-+
-+static int ezx_ssp_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ ssp_flush(&ezx_ssp_dev);
-+ ssp_save_state(&ezx_ssp_dev,&ezx_ssp_state);
-+
-+ return 0;
-+}
-+
-+static int ezx_ssp_resume(struct platform_device *dev)
-+{
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
-+ ssp_enable(&ezx_ssp_dev);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ezxssp_driver = {
-+ .probe = ezx_ssp_probe,
-+ .remove = ezx_ssp_remove,
-+ .suspend = ezx_ssp_suspend,
-+ .resume = ezx_ssp_resume,
-+ .driver = {
-+ .name = "ezx-ssp",
-+ },
-+};
-+
-+int __init ezx_ssp_init(void)
-+{
-+ return platform_driver_register(&ezxssp_driver);
-+}
-+
-+arch_initcall(ezx_ssp_init);
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.h 2007-04-22 01:38:55.000000000 -0300
-@@ -0,0 +1,9 @@
-+#include <asm/arch/ezx.h>
-+
-+/* SSP */
-+struct ezxssp_machinfo {
-+ int port;
-+ int cs_pcap;
-+ int clk_pcap;
-+};
-+
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx_lcd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx_lcd.c 2007-04-21 22:32:53.000000000 -0300
-@@ -0,0 +1,112 @@
-+/*
-+ * linux/arch/arm/mach-ezx/a780.c
-+ *
-+ * Support for the Motorola Ezx A780 Development Platform.
-+ *
-+ * Author: Zhuang Xiaofan
-+ * Created: Nov 25, 2003
-+ * Copyright: Motorola Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/fb.h>
-+#include <linux/delay.h>
-+#include <asm/arch/pxafb.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+/*
-+ * EZX PXA Framebuffer
-+ */
-+
-+static void pxafb_lcd_power(int on, struct fb_var_screeninfo *var)
-+{
-+ if (on) {
-+// mdelay(1);
-+ GPSR3 = 0x00100000;
-+ mdelay(10);
-+ GPCR3 = 0x00100000;
-+ GPDR3 |= 0x00100000;
-+ } else {
-+ GPSR3 = 0x00100000;
-+ PGSR3 |= 0x00100000;
-+ mdelay(41);
-+ LCCR0 &= ~LCCR0_LDM; /* disable lcd disable done interrupt */
-+ LCCR0 |= LCCR0_DIS; /* normal disable lcd */
-+ mdelay(18);
-+ }
-+}
-+
-+#ifdef CONFIG_PXA_E2
-+static void sumatra_backlight_power(int on)
-+{
-+ if (on) {
-+ pxa_gpio_mode(GPIO16_PWM0_MD);
-+ pxa_set_cken(CKEN0_PWM0, 1);
-+ PWM_CTRL0 = 0;
-+ PWM_PWDUTY0 = 0x3ff;
-+ PWM_PERVAL0 = 0x3ff;
-+ } else {
-+ PWM_CTRL0 = 0;
-+ PWM_PWDUTY0 = 0x0;
-+ PWM_PERVAL0 = 0x3FF;
-+ pxa_set_cken(CKEN0_PWM0, 0);
-+ }
-+}
-+
-+static struct pxafb_mode_info mode_ezx = {
-+ .pixclock = 192308,
-+ .xres = 240,
-+ .yres = 320,
-+ .bpp = 8,
-+ .hsync_len = 10,
-+ .left_margin = 20,
-+ .right_margin = 10,
-+ .vsync_len = 2,
-+ .upper_margin = 3,
-+ .lower_margin = 2,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+};
-+
-+static struct pxafb_mach_info ezx_fb_info __initdata = {
-+ .modes = &mode_ezx,
-+ .num_modes = 1,
-+ .lccr0 = 0x022008B8,
-+ .lccr3 = 0xC130FF13,
-+ .pxafb_backlight_power = sumatra_backlight_power,
-+ .pxafb_lcd_power = &pxafb_lcd_power,
-+};
-+
-+#else
-+static struct pxafb_mode_info mode_ezx = {
-+ .pixclock = 150000,
-+ .xres = 240,
-+ .yres = 320,
-+ .bpp = 16,
-+ .hsync_len = 10,
-+ .left_margin = 20,
-+ .right_margin = 10,
-+ .vsync_len = 2,
-+ .upper_margin = 3,
-+ .lower_margin = 2,
-+ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-+};
-+
-+static struct pxafb_mach_info ezx_fb_info __initdata = {
-+ .modes = &mode_ezx,
-+ .num_modes = 1,
-+ .lccr0 = 0x002008F8,
-+ .lccr3 = 0x0430FF09,
-+ .pxafb_lcd_power= &pxafb_lcd_power,
-+};
-+#endif
-+
-+int __init __ezx_lcd_init (void)
-+{
-+ set_pxa_fb_info(&ezx_fb_info);
-+ return 0;
-+}
-+
-+arch_initcall(__ezx_lcd_init);
-Index: linux-2.6.20.7/arch/arm/mm/init.c
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mm/init.c 2007-04-21 22:32:57.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mm/init.c 2007-04-21 22:44:03.000000000 -0300
-@@ -241,6 +241,10 @@
- */
- reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
- boot_pages << PAGE_SHIFT);
-+#ifdef CONFIG_ARCH_EZX
-+ /* reserve the first page memory for exiting sleep and user off */
-+ reserve_bootmem_node(pgdat, PHYS_OFFSET, PAGE_SIZE);
-+#endif
-
- #ifdef CONFIG_BLK_DEV_INITRD
- /*
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch
deleted file mode 100644
index de9de60461..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-emu.patch
+++ /dev/null
@@ -1,332 +0,0 @@
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-emu.c 2007-04-21 12:33:22.000000000 -0300
-@@ -0,0 +1,215 @@
-+/*
-+ * EMU Driver for Motorola EZX phones
-+ *
-+ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/interrupt.h>
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/ezx.h>
-+#include <asm/arch/ezx-pcap.h>
-+#include <asm/arch/udc.h>
-+
-+static struct pxa2xx_udc_mach_info ezx_udc_info;
-+extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
-+extern int ezx_pcap_read_bit(u_int32_t);
-+
-+void emu_switch_to_usb(void)
-+{
-+ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
-+ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
-+ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
-+ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
-+ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
-+ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
-+ UP2OCR = 0x02000000;
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 1);
-+ clr_GPIO(GPIO_EMU_MUX1);
-+ clr_GPIO(GPIO_EMU_MUX2);
-+}
-+EXPORT_SYMBOL(emu_switch_to_usb);
-+
-+void emu_switch_to_uart(void)
-+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN,0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR, 1);
-+ set_GPIO(GPIO39_FFTXD);
-+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
-+ set_GPIO(GPIO34_TXENB);
-+ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
-+ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
-+ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
-+ pxa_gpio_mode(GPIO39_FFTXD_MD);
-+ pxa_gpio_mode(GPIO53_FFRXD_MD);
-+ CKEN |= CKEN6_FFUART;
-+ clr_GPIO(GPIO_EMU_MUX1);
-+ clr_GPIO(GPIO_EMU_MUX2);
-+
-+}
-+EXPORT_SYMBOL(emu_switch_to_uart);
-+
-+void emu_switch_to_audio(int stereo)
-+{
-+ clr_GPIO(GPIO39_VPOUT);
-+ if (stereo) {
-+ pxa_gpio_mode(GPIO34_USB_P2_2 | GPIO_IN);
-+ clr_GPIO(GPIO39_VPOUT);
-+ } else {
-+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
-+ set_GPIO(GPIO34_TXENB);
-+ }
-+
-+ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
-+ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
-+ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
-+ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
-+ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
-+ set_GPIO(GPIO_EMU_MUX1);
-+ if (stereo)
-+ set_GPIO(GPIO_EMU_MUX2);
-+ else
-+ clr_GPIO(GPIO_EMU_MUX2);
-+}
-+
-+void emu_switch_to_nothing(void)
-+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
-+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
-+ set_GPIO(GPIO34_TXENB);
-+ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
-+ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
-+ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
-+ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
-+ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
-+}
-+
-+
-+static irqreturn_t emu_irq(int irq, void *data)
-+{
-+ printk("emu_irq(%u) entered: ", irq);
-+
-+ switch (irq) {
-+ case EZX_IRQ_USB4V:
-+ printk("usb 4v\n");
-+ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
-+#if defined CONFIG_PXA_EZX_EMU_USB
-+ emu_switch_to_usb();
-+#elif defined CONFIG_PXA_EZX_EMU_UART
-+ emu_switch_to_uart();
-+#else
-+ emu_switch_to_nothing();
-+#endif
-+ else
-+ emu_switch_to_nothing();
-+ break;
-+ case EZX_IRQ_USB1V:
-+ printk("usb 1v\n");
-+ break;
-+ default:
-+ printk("unknown\n");
-+ break;
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int __init ezx_emu_probe(struct platform_device *dev)
-+{
-+ printk("ezx_emu_probe entered!\n");
-+ pxa_gpio_mode(GPIO_SNP_INT_IN | GPIO_IN);
-+ pxa_gpio_mode(GPIO_EMU_MUX1 | GPIO_OUT);
-+ pxa_gpio_mode(GPIO_EMU_MUX2 | GPIO_OUT);
-+
-+ request_irq(EZX_IRQ_USB4V, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
-+ request_irq(EZX_IRQ_USB1V, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
-+
-+ pxa_set_udc_info(&ezx_udc_info);
-+
-+#if defined CONFIG_PXA_EZX_EMU_USB
-+ emu_switch_to_usb();
-+#elif defined CONFIG_PXA_EZX_EMU_UART
-+ emu_switch_to_uart();
-+#else
-+ emu_switch_to_nothing();
-+#endif
-+
-+ return 0;
-+}
-+
-+static int ezx_emu_remove(struct platform_device *dev)
-+{
-+ free_irq(EZX_IRQ_USB4V, NULL);
-+ free_irq(EZX_IRQ_USB1V, NULL);
-+
-+ return 0;
-+}
-+
-+/* USB Device Controller */
-+static int udc_connected_status;
-+static void ezx_udc_command(int cmd)
-+{
-+ switch (cmd) {
-+ case PXA2XX_UDC_CMD_DISCONNECT:
-+ printk(KERN_NOTICE "USB cmd disconnect\n");
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,0);
-+ udc_connected_status = 0;
-+ break;
-+ case PXA2XX_UDC_CMD_CONNECT:
-+ printk(KERN_NOTICE "USB cmd connect\n");
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,1);
-+ udc_connected_status = 1;
-+ break;
-+ }
-+}
-+
-+static int ezx_udc_is_connected(void)
-+{
-+ return udc_connected_status;
-+}
-+
-+static struct pxa2xx_udc_mach_info ezx_udc_info __initdata = {
-+ .udc_is_connected = ezx_udc_is_connected,
-+ .udc_command = ezx_udc_command,
-+};
-+
-+static struct platform_driver ezxemu_driver = {
-+ .probe = ezx_emu_probe,
-+ .remove = ezx_emu_remove,
-+ //.suspend = ezx_emu_suspend,
-+ //.resume = ezx_emu_resume,
-+ .driver = {
-+ .name = "ezx-emu",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+int __init ezx_emu_init(void)
-+{
-+ return platform_driver_register(&ezxemu_driver);
-+}
-+
-+void ezx_emu_fini(void)
-+{
-+ return platform_driver_unregister(&ezxemu_driver);
-+}
-+
-+module_init(ezx_emu_init);
-+module_exit(ezx_emu_fini);
-+
-+MODULE_DESCRIPTION("Motorola Enchanced Mini Usb driver");
-+MODULE_AUTHOR("Daniel Ribeiro <drwyrm@gmail.com>");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Kconfig 2007-04-21 12:32:50.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Kconfig 2007-04-21 12:32:54.000000000 -0300
-@@ -94,6 +94,27 @@
-
- endchoice
-
-+config PXA_EZX_EMU
-+ bool "Motorola Enchanced Mini Usb"
-+
-+if PXA_EZX_EMU
-+
-+choice
-+ prompt "Select default EMU mode"
-+
-+config PXA_EZX_EMU_USB
-+ bool "USB"
-+
-+config PXA_EZX_EMU_UART
-+ bool "UART"
-+
-+config PXA_EZX_EMU_NOTHING
-+ bool "nothing"
-+
-+endchoice
-+
-+endif
-+
- endif
-
- endmenu
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 12:32:50.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 12:32:54.000000000 -0300
-@@ -19,6 +19,7 @@
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
- obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
-+obj-$(CONFIG_PXA_EZX_EMU) += ezx-emu.o
-
- # Support for blinky lights
- led-y := leds.o
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/ezx.c 2007-04-21 12:32:50.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-21 12:32:54.000000000 -0300
-@@ -36,6 +36,7 @@
- #include <asm/arch/ohci.h>
- #include <asm/arch/pxa-regs.h>
-
-+
- #include "ezx.h"
- #include "generic.h"
- #include <linux/tty.h>
-@@ -92,6 +93,30 @@
- .resource = ezxpcap_resources,
- };
-
-+/* EMU */
-+static struct resource ezxemu_resources[] = {
-+ [0] = {
-+ .start = EZX_IRQ_USB4V,
-+ .end = EZX_IRQ_USB4V,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [1] = {
-+ .start = EZX_IRQ_USB1V,
-+ .end = EZX_IRQ_USB1V,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device ezxemu_device = {
-+ .name = "ezx-emu",
-+ .id = -1,
-+// .dev = {
-+// .parent = &ezxpcap_device.dev,
-+// },
-+ .num_resources = ARRAY_SIZE(ezxemu_resources),
-+ .resource = ezxemu_resources,
-+};
-+
- /* OHCI Controller */
-
- static int ezx_ohci_init(struct device *dev)
-@@ -317,6 +342,7 @@
- &ezxssp_device,
- &ezxpcap_device,
- &ezxbp_device,
-+ &ezxemu_device,
- };
-
- static void __init a780_init(void)
-@@ -383,7 +409,15 @@
- pxa_set_ohci_info(&ezx_ohci_platform_data);
-
- platform_add_devices(devices, ARRAY_SIZE(devices));
--
-+/*
-+#if defined CONFIG_PXA_EZX_EMU_USB
-+ emu_switch_to_usb();
-+#elif defined CONFIG_PXA_EZX_EMU_UART
-+ emu_switch_to_uart();
-+#else
-+ emu_switch_to_nothing();
-+#endif
-+*/
- }
-
- MACHINE_START(EZX, "Motorola Ezx Platform")
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch
deleted file mode 100644
index c3cbf25a09..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-fix-usb_pxa27x_udc-r3.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/pxa27x_udc.c 2007-04-21 12:30:51.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c 2007-04-21 12:32:21.000000000 -0300
-@@ -1615,8 +1615,9 @@
-
- DMSG("Connecting\n");
- /* RPFIXME */
-- UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
-- //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
-+ //UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
-+ UP2OCR = 0x02000000; // temporary solution for ezx.
-+ dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
- }
-
-
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch
deleted file mode 100644
index d16693e3e4..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-mci.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c 2007-04-20 01:10:13.000000000 -0300
-@@ -0,0 +1,159 @@
-+/*
-+ * linux/arch/arm/mach-ezx/a780.c
-+ *
-+ * Support for the Motorola Ezx A780 Development Platform.
-+ *
-+ * Author: Zhuang Xiaofan
-+ * Created: Nov 25, 2003
-+ * Copyright: Motorola Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/mmc/host.h>
-+#include <linux/irq.h>
-+#include <asm/irq.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/ezx-pcap.h>
-+#include <asm/arch/mmc.h>
-+#include <asm/arch/hardware.h>
-+
-+extern int ezx_pcap_mmcsd_power(int);
-+extern void ezx_pcap_mmcsd_voltage(u_int32_t);
-+
-+static struct pxamci_platform_data ezx_mci_platform_data;
-+
-+static int ezx_mci_init(struct device *dev,
-+ irqreturn_t (*ezx_detect_int)(int, void *),
-+ void *data)
-+{
-+ int err;
-+ printk("%s entered\n", __FUNCTION__);
-+
-+ /* Setup GPIO for PXA27x MMC/SD controller */
-+ pxa_gpio_mode(GPIO32_MMCCLK_MD);
-+ pxa_gpio_mode(GPIO112_MMCCMD_MD);
-+ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
-+ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
-+ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
-+ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
-+
-+ ezx_pcap_mmcsd_power(1);
-+
-+ ezx_mci_platform_data.detect_delay = msecs_to_jiffies(250);
-+
-+ err = request_irq(0x49, ezx_detect_int, SA_INTERRUPT,
-+ "MMC card detect", data);
-+ if (err) {
-+ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
-+ "MMC card detect IRQ\n");
-+ return -1;
-+ }
-+
-+ set_irq_type(0x0b, IRQT_BOTHEDGE);
-+
-+ return 0;
-+}
-+
-+static int ezx_mci_get_ro(struct device *dev)
-+{
-+ printk("%s entered\n", __FUNCTION__);
-+#if defined(CONFIG_PXA_EZX_E680)
-+ /* this is only e680, i guess */
-+ // return GPIO_is_high(96+4);
-+ return (GPLR3 & 0x800);
-+#else
-+ return 0;
-+#endif
-+}
-+
-+#if defined(CONFIG_PXA_EZX_A780)
-+static u_int8_t mmc_voltage[] = {
-+ [MMC_VDD_160] = 5,
-+ [MMC_VDD_170] = 5,
-+ [MMC_VDD_180] = 6,
-+ [MMC_VDD_190] = 6,
-+ [MMC_VDD_200] = 7,
-+ [MMC_VDD_210] = 7,
-+ [MMC_VDD_220] = 8,
-+ [MMC_VDD_230] = 8,
-+ [MMC_VDD_240] = 9,
-+ [MMC_VDD_250] = 9,
-+ [MMC_VDD_260] = 10,
-+ [MMC_VDD_270] = 10,
-+ [MMC_VDD_280] = 11,
-+ [MMC_VDD_290] = 11,
-+ [MMC_VDD_300] = 12,
-+ [MMC_VDD_310] = 12,
-+ [MMC_VDD_320] = 13,
-+ [MMC_VDD_330] = 13,
-+ [MMC_VDD_340] = 14,
-+ [MMC_VDD_350] = 14,
-+ [MMC_VDD_360] = 15,
-+};
-+#elif defined(CONFIG_PXA_EZX_E680)
-+static u_int8_t mmc_voltage[] = {
-+ [MMC_VDD_160] = 3,
-+ [MMC_VDD_170] = 3,
-+ [MMC_VDD_180] = 3,
-+ [MMC_VDD_190] = 3,
-+ [MMC_VDD_200] = 3,
-+ [MMC_VDD_210] = 3,
-+ [MMC_VDD_220] = 3,
-+ [MMC_VDD_230] = 3,
-+ [MMC_VDD_240] = 3,
-+ [MMC_VDD_250] = 3,
-+ [MMC_VDD_260] = 3,
-+ [MMC_VDD_270] = 3,
-+ [MMC_VDD_280] = 3,
-+ [MMC_VDD_290] = 3,
-+ [MMC_VDD_300] = 3,
-+ [MMC_VDD_310] = 3,
-+ [MMC_VDD_320] = 3,
-+ [MMC_VDD_330] = 3,
-+ [MMC_VDD_340] = 3,
-+ [MMC_VDD_350] = 3,
-+ [MMC_VDD_360] = 3,
-+};
-+#endif
-+
-+static void ezx_mci_setpower(struct device *dev, unsigned int vdd)
-+{
-+ printk("%s(vdd=%u) entered\n", __FUNCTION__, vdd);
-+ if (vdd <= MMC_VDD_360)
-+ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
-+
-+ ezx_pcap_mmcsd_power(1);
-+}
-+
-+static void ezx_mci_exit(struct device *dev, void *data)
-+{
-+ printk("%s entered\n", __FUNCTION__);
-+ ezx_pcap_mmcsd_power(0);
-+ free_irq(0x49, data);
-+}
-+
-+static struct pxamci_platform_data ezx_mci_platform_data = {
-+#if defined(CONFIG_PXA_EZX_E680)
-+ .ocr_mask = MMC_VDD_27_28,
-+#elif defined(CONFIG_PXA_EZX_A780)
-+ .ocr_mask = MMC_VDD_160_165|MMC_VDD_18_19|MMC_VDD_20_21
-+ |MMC_VDD_22_23|MMC_VDD_24_25|MMC_VDD_26_27
-+ |MMC_VDD_28_29|MMC_VDD_30_31|MMC_VDD_32_33
-+ |MMC_VDD_34_35|MMC_VDD_35_36,
-+#endif
-+ .init = ezx_mci_init,
-+ .get_ro = ezx_mci_get_ro,
-+ .setpower = ezx_mci_setpower,
-+ .exit = ezx_mci_exit,
-+};
-+
-+int __init __ezx_mci_init (void)
-+{
-+ pxa_set_mci_info(&ezx_mci_platform_data);
-+ return 0;
-+}
-+
-+arch_initcall(__ezx_mci_init);
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 02:56:16.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 03:00:03.000000000 -0300
-@@ -18,7 +18,7 @@
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
--obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
-
- # Support for blinky lights
- led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch
deleted file mode 100644
index f59e31d9a2..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-mtd-map.patch
+++ /dev/null
@@ -1,274 +0,0 @@
-Index: linux-2.6.20.7/drivers/mtd/maps/Kconfig
-===================================================================
---- linux-2.6.20.7.orig/drivers/mtd/maps/Kconfig 2007-04-21 12:47:04.000000000 -0300
-+++ linux-2.6.20.7/drivers/mtd/maps/Kconfig 2007-04-21 13:01:08.000000000 -0300
-@@ -595,6 +595,28 @@
- help
- This enables access to the flash chip on the Sharp SL Series of PDAs.
-
-+config MTD_EZX
-+ bool "Map driver for Motorola EZX Platform"
-+ depends on MTD && PXA_EZX
-+
-+if MTD_EZX
-+
-+choice
-+ prompt "Select partition mapping for EZX platform"
-+
-+config MTD_EZX_A780
-+ bool "A780/E680 Original Mapping"
-+
-+config MTD_EZX_A780_ALTERNATE
-+ bool "A780/E680 Alternate Mapping for BLOB2"
-+
-+config MTD_EZX_E2
-+ bool "E2 Original Mapping"
-+
-+endchoice
-+
-+endif
-+
- config MTD_PLATRAM
- tristate "Map driver for platform device RAM (mtd-ram)"
- depends on MTD
-Index: linux-2.6.20.7/drivers/mtd/maps/Makefile
-===================================================================
---- linux-2.6.20.7.orig/drivers/mtd/maps/Makefile 2007-04-21 12:55:09.000000000 -0300
-+++ linux-2.6.20.7/drivers/mtd/maps/Makefile 2007-04-21 12:55:45.000000000 -0300
-@@ -72,3 +72,4 @@
- obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
- obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
- obj-$(CONFIG_MTD_TQM834x) += tqm834x.o
-+obj-$(CONFIG_MTD_EZX) += ezx-flash.o
-Index: linux-2.6.20.7/drivers/mtd/maps/ezx-flash.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/mtd/maps/ezx-flash.c 2007-04-21 13:07:14.000000000 -0300
-@@ -0,0 +1,227 @@
-+/*
-+ * $Id: $
-+ *
-+ * Map driver for the PXA27x
-+ *
-+ * Author: Harald Welte
-+ * Copyright: (C) 2001 MontaVista Software Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Mar 3, 2007 - (Daniel Ribeiro) Alternate partition table
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <linux/init.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/slab.h>
-+
-+#include <linux/mtd/mtd.h>
-+#include <linux/mtd/map.h>
-+#include <linux/mtd/partitions.h>
-+
-+#include <asm/io.h>
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/mainstone.h>
-+
-+#define WINDOW_ADDR 0x0
-+#define WINDOW_SIZE (32*1024*1024)
-+#define WINDOW_CACHE_ADDR 0x0
-+#define WINDOW_CACHE_SIZE 0x1a00000
-+
-+static void pxa27x_map_inval_cache(struct map_info *map, unsigned long from,
-+ ssize_t len)
-+{
-+#if 0
-+ unsigned long endaddress, i, j;
-+ endaddress = from + len -1;
-+ from &= ~(32-1);
-+ endaddress &= ~(32-1);
-+ for (i = from; i <= endaddress; i += 32)
-+ asm("mcr p15, 0, %0, c7, c6, 1"::"r"(i));
-+
-+ asm( "mrc p15, 0, %0, c2, c0, 0\n"
-+ "mov %0, %0\n"
-+ "sub pc, pc #4"
-+ :"=r"(j));
-+#else
-+ consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);
-+#endif
-+}
-+
-+
-+struct map_info pxa27x_map = {
-+ .name = "PXA27x flash",
-+ .size = WINDOW_SIZE,
-+ .phys = WINDOW_ADDR,
-+ .inval_cache = &pxa27x_map_inval_cache,
-+};
-+
-+#if defined CONFIG_MTD_EZX_A780_ALTERNATE
-+static struct mtd_partition pxa27x_partitions[] = {
-+ {
-+ .name = "Bootloader (RO)",
-+ .size = 0x00020000,
-+ .offset = 0,
-+ .mask_flags = MTD_WRITEABLE,
-+ }, {
-+ .name = "Bootloader 2",
-+ .size = 0x00020000,
-+ .offset = 0x00020000,
-+ } , {
-+ .name = "Kernel 1",
-+ .size = 0x000e0000, // 896KB
-+ .offset = 0x00040000,
-+ } , {
-+ .name = "rootfs",
-+ .size = 0x01760000,
-+ .offset = 0x00120000,
-+ } , {
-+ .name = "Kernel 2",
-+ .size = 0x00180000, // 1.5MB
-+ .offset = 0x01880000,
-+ } , {
-+ .name = "VFM_Filesystem",
-+ .size = 0x005a0000,
-+ .offset = 0x01a00000,
-+ } , {
-+ .name = "setup",
-+ .size = 0x00020000,
-+ .offset = 0x01fa0000,
-+ } , {
-+ .name = "Logo",
-+ .size = 0x00020000,
-+ .offset = 0x01fc0000,
-+ },
-+};
-+#elif defined CONFIG_MTD_EZX_A780
-+static struct mtd_partition pxa27x_partitions[] = {
-+ {
-+ .name = "Bootloader",
-+ .size = 0x00020000,
-+ .offset = 0,
-+ .mask_flags = MTD_WRITEABLE,
-+ }, {
-+ .name = "Kernel",
-+ .size = 0x000e0000,
-+ .offset = 0x00020000,
-+ } , {
-+ .name = "rootfs",
-+ .size = 0x018e0000,
-+ .offset = 0x00120000,
-+ } , {
-+ .name = "VFM_Filesystem",
-+ .size = 0x00580000,
-+ .offset = 0x01a00000,
-+ } , {
-+ .name = "setup",
-+ .size = 0x00020000,
-+ .offset = 0x01fa0000,
-+ } , {
-+ .name = "Logo",
-+ .size = 0x00020000,
-+ .offset = 0x01fc0000,
-+ },
-+};
-+#else
-+#error "please define partition for this PXA27x implementation"
-+#endif
-+
-+
-+static struct mtd_info *mymtd;
-+static struct mtd_partition *parsed_parts;
-+
-+static const char *probes[] = { "RedBoot", "cmdlinepart", NULL };
-+
-+static int __init init_pxa27x(void)
-+{
-+ struct mtd_partition *parts;
-+ int nb_parts = 0;
-+ int parsed_nr_parts = 0;
-+ char *part_type = "static";
-+
-+ pxa27x_map.bankwidth = (BOOT_DEF & 1) ? 2 : 4;
-+
-+ printk("Probing PXA27x flash at physical address 0x%08x (%d-bit bankwidth)\n",
-+ WINDOW_ADDR, pxa27x_map.bankwidth * 8);
-+ pxa27x_map.virt = ioremap(pxa27x_map.phys, pxa27x_map.size);
-+
-+ if (!pxa27x_map.virt) {
-+ printk("Failed to ioremap\n");
-+ return -EIO;
-+ }
-+
-+ mymtd = do_map_probe("cfi_probe", &pxa27x_map);
-+ if (!mymtd) {
-+ iounmap((void *)pxa27x_map.virt);
-+ return -ENXIO;
-+ }
-+ mymtd->owner = THIS_MODULE;
-+
-+#if 0
-+ /* ioremap the first flash chip as cacheable */
-+ pxa27x_map.cached = ioremap_cached(pxa27x_map.phys, pxa27x_map.size);
-+ if (!pxa27x_map.cached) {
-+ printk("Failed to do cacheable-ioremap\n");
-+ iounmap((void *)pxa27x_map.virt);
-+ return -EIO;
-+ }
-+#endif
-+ simple_map_init(&pxa27x_map);
-+
-+ if (parsed_nr_parts == 0) {
-+ int ret = parse_mtd_partitions(mymtd, probes, &parsed_parts, 0);
-+
-+ if (ret > 0) {
-+ part_type = "RedBoot";
-+ parsed_nr_parts = ret;
-+ }
-+ }
-+
-+ if (parsed_nr_parts > 0) {
-+ parts = parsed_parts;
-+ nb_parts = parsed_nr_parts;
-+ } else {
-+ parts = pxa27x_partitions;
-+ nb_parts = ARRAY_SIZE(pxa27x_partitions);
-+ }
-+
-+ if (nb_parts) {
-+ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
-+ add_mtd_partitions(mymtd, parts, nb_parts);
-+ } else {
-+ add_mtd_device(mymtd);
-+ }
-+#if 0
-+ if (ret = ezx_partition_init())
-+#endif
-+ return 0;
-+}
-+
-+static void __exit cleanup_pxa27x(void)
-+{
-+ if (mymtd) {
-+ del_mtd_partitions(mymtd);
-+ map_destroy(mymtd);
-+ if (parsed_parts)
-+ kfree(parsed_parts);
-+ }
-+ if (pxa27x_map.virt)
-+ iounmap((void *)pxa27x_map.virt);
-+ if (pxa27x_map.cached)
-+ iounmap((void *)pxa27x_map.cached);
-+ return;
-+}
-+
-+module_init(init_pxa27x);
-+module_exit(cleanup_pxa27x);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
-+MODULE_DESCRIPTION("MTD map driver for Motorola EZX platform");
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch
deleted file mode 100644
index 22c5d44f36..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-pcap.patch
+++ /dev/null
@@ -1,1197 +0,0 @@
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-pcap.c 2007-04-21 08:26:37.000000000 -0300
-@@ -0,0 +1,411 @@
-+/* Driver for Motorola PCAP2 as present in EZX phones
-+ *
-+ * This is both a SPI device driver for PCAP itself, as well as
-+ * an IRQ demultiplexer for handling PCAP generated events such as
-+ * headphone jack sense by downstream drivers.
-+ *
-+ * (C) 2006 by Harald Welte <laforge@openezx.org>
-+ *
-+ * 2007, April - Daniel Ribeiro <drwyrm@gmail.com>
-+ * Altered to work with corgi's SSP code.
-+ * Fixed irq handling routine.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/platform_device.h>
-+#include <linux/interrupt.h>
-+#include <linux/kernel_stat.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/mach-types.h>
-+
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/ezx-pcap.h>
-+#include <asm/arch/irqs.h>
-+#include <asm/mach/irq.h>
-+
-+#include "ezx.h"
-+
-+#if 0
-+#define DEBUGP(x, args...) printk(x, ## args)
-+#else
-+#define DEBUGP(x, args...)
-+#endif
-+
-+extern unsigned long ezx_ssp_pcap_putget(ulong);
-+
-+int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
-+{
-+ value &= SSP_PCAP_REGISTER_VALUE_MASK;
-+ value |= SSP_PCAP_REGISTER_WRITE_OP_BIT
-+ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
-+
-+ local_irq_disable();
-+ ezx_ssp_pcap_putget(value);
-+ local_irq_enable();
-+
-+ DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(ezx_pcap_write);
-+
-+int ezx_pcap_read(u_int8_t reg_num, u_int32_t *value)
-+{
-+ u_int32_t frame = SSP_PCAP_REGISTER_READ_OP_BIT
-+ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
-+
-+ local_irq_disable();
-+ *value = ezx_ssp_pcap_putget(frame);
-+ local_irq_enable();
-+
-+ DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(ezx_pcap_read);
-+
-+int ezx_pcap_bit_set(u_int32_t sspPcapBit, u_int8_t to)
-+{
-+ int ret;
-+ u_int32_t tmp;
-+ u_int32_t bit = (sspPcapBit & SSP_PCAP_REGISTER_VALUE_MASK);
-+ u_int8_t reg_num = (sspPcapBit & SSP_PCAP_REGISTER_ADDRESS_MASK)
-+ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
-+
-+ ret = ezx_pcap_read(reg_num, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (to == 0)
-+ tmp &= ~bit;
-+ else
-+ tmp |= bit;
-+
-+ return ezx_pcap_write(reg_num, tmp);
-+}
-+EXPORT_SYMBOL_GPL(ezx_pcap_bit_set);
-+
-+int ezx_pcap_read_bit(u_int32_t bit)
-+{
-+ int ret;
-+ u_int32_t tmp;
-+ u_int8_t reg_num = (bit & SSP_PCAP_REGISTER_ADDRESS_MASK)
-+ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
-+
-+ ret = ezx_pcap_read(reg_num, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ return tmp & (bit & SSP_PCAP_REGISTER_VALUE_MASK);
-+}
-+EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
-+
-+
-+static int ezx_pcap_vibrator_level(u_int32_t bit)
-+{
-+ /* FIXME */
-+ return 0;
-+}
-+EXPORT_SYMBOL_GPL(ezx_pcap_vibrator_level);
-+
-+
-+static int pcap_init(void)
-+{
-+ /* initialize registers */
-+ /* FIXME: this should be board-level, not chip-level */
-+ /* implement a per board pcap init reg array? */
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB4VI, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB4VM, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ISR_USB1VI, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_USB1VM, 0);
-+ // disable all interrupts
-+ //ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, 0x03ffffff);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+
-+ /* set SW1 sleep to keep SW1 1.3v in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11, 0);
-+ /* SW1 active in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01, 0);
-+ /* at SW1 -core voltage to 1.30V */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS, 0);
-+
-+ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR, 0);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR, 0);
-+
-+ /* when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
-+ * camera for e680 */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR, 1);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR, 0);
-+
-+ /* set Vc to low power mode when AP sleep */
-+ //SSP_PCAP_bit_set( SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY);
-+
-+ /* set VAUX2 to voltage 2.775V and low power mode when AP sleep */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
-+
-+ PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
-+
-+ return 0;
-+}
-+/* MMC/SD specific functions */
-+
-+void ezx_pcap_mmcsd_voltage(u_int32_t bits)
-+{
-+ unsigned int tmp;
-+ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
-+#if defined(CONFIG_PXA_EZX_E680)
-+ tmp &= 0xffffff9f; /* zero all vaux2 bits */
-+ tmp |= (bits & 0x3) << 5;
-+#elif defined(CONFIG_PXA_EZX_A780)
-+ tmp &= 0xfffff0ff; /* zero all vaux3 bits */
-+ tmp |= (bits & 0xf) << 8;
-+#endif
-+ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
-+}
-+EXPORT_SYMBOL(ezx_pcap_mmcsd_voltage);
-+
-+int ezx_pcap_mmcsd_power(int on)
-+{
-+ if (on) {
-+#if defined(CONFIG_PXA_EZX_E680)
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
-+#else
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 1);
-+#endif
-+ } else {
-+#if defined(CONFIG_PXA_EZX_E680)
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 0);
-+#else
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 0);
-+#endif
-+ }
-+}
-+EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_power);
-+
-+/* IRQ Handling */
-+
-+/* Array indexed by BIT POSITION of PCAP register, returns IRQ number */
-+static unsigned int pcap2irq[] = {
-+ [0] = EZX_IRQ_ADCDONE,
-+ [1] = EZX_IRQ_TS,
-+ [2] = 0, /* 1HZ */
-+ [3] = 0, /* WI */
-+ [4] = 0, /* WI */
-+ [5] = 0, /* TODA */
-+ [6] = EZX_IRQ_USB4V,
-+ [7] = 0, /* ONOFF */
-+ [8] = 0, /* ONOFF2 */
-+ [9] = EZX_IRQ_USB1V,
-+ [10] = 0, /* MOBPORT */
-+ [11] = EZX_IRQ_MIC,
-+ [12] = EZX_IRQ_HEADJACK,
-+ [13] = 0, /* ST */
-+ [14] = 0, /* PC */
-+ [15] = 0, /* WARM */
-+ [16] = 0, /* EOL */
-+ [17] = 0, /* CLK */
-+ [18] = 0, /* SYS_RST */
-+ [19] = 0,
-+ [20] = EZX_IRQ_ADCDONE2,
-+ [21] = 0, /* SOFT_RESET */
-+ [22] = 0, /* MNEXB */
-+};
-+
-+/* Array indexed by IRQ NUMBER, returns PCAP absolute value */
-+static unsigned int irq2pcap[] = {
-+ [EZX_IRQ_ADCDONE] = SSP_PCAP_ADJ_BIT_ISR_ADCDONEI,
-+ [EZX_IRQ_TS] = SSP_PCAP_ADJ_BIT_ISR_TSI,
-+ [EZX_IRQ_USB4V] = SSP_PCAP_ADJ_BIT_ISR_USB4VI,
-+ [EZX_IRQ_USB1V] = SSP_PCAP_ADJ_BIT_ISR_USB1VI,
-+ [EZX_IRQ_HEADJACK] = SSP_PCAP_ADJ_BIT_ISR_A1I,
-+ [EZX_IRQ_MIC] = SSP_PCAP_ADJ_BIT_ISR_MB2I,
-+ [EZX_IRQ_ADCDONE2] = SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I,
-+};
-+
-+static void pcap_ack_irq(unsigned int irq)
-+{
-+ DEBUGP("pcap_ack_irq: %u\n", irq);
-+ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, irq2pcap[irq]);
-+}
-+
-+static void pcap_mask_irq(unsigned int irq)
-+{
-+ u_int32_t reg;
-+
-+ DEBUGP("pcap_mask_irq: %u\n", irq);
-+
-+ /* this needs to be atomic... but we're not on SMP so it is */
-+ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &reg);
-+ reg |= irq2pcap[irq];
-+ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, reg);
-+}
-+
-+static void pcap_unmask_irq(unsigned int irq)
-+{
-+ u_int32_t tmp;
-+ DEBUGP("pcap_unmask_irq: %u\n", irq);
-+
-+ /* this needs to be atomic... but we're not on SMP so it is */
-+ ezx_pcap_read(SSP_PCAP_ADJ_MSR_REGISTER, &tmp);
-+ tmp &= ~irq2pcap[irq];
-+ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, tmp);
-+}
-+
-+static struct irq_chip pcap_chip = {
-+ .ack = pcap_ack_irq,
-+ .mask = pcap_mask_irq,
-+ .unmask = pcap_unmask_irq,
-+};
-+
-+/* handler for interrupt received from PCAP via GPIO */
-+static void pcap_irq_demux_handler(unsigned int irq, struct irq_desc *desc)
-+{
-+ int i;
-+ const unsigned int cpu = smp_processor_id();
-+ u_int32_t reg;
-+
-+ DEBUGP("pcap_irq_demux_handler(%u,,) entered\n", irq);
-+
-+ spin_lock(&desc->lock);
-+
-+ desc->status &= ~(IRQ_REPLAY | IRQ_WAITING);
-+
-+ if (unlikely(desc->status & IRQ_INPROGRESS)) {
-+ DEBUGP("irq busy, masking it off\n");
-+ desc->status |= (IRQ_PENDING | IRQ_MASKED);
-+ desc->chip->mask(irq);
-+ desc->chip->ack(irq);
-+ goto out_unlock;
-+ }
-+
-+ kstat_cpu(cpu).irqs[irq]++;
-+ desc->status |= IRQ_INPROGRESS;
-+
-+ do {
-+ if (unlikely((desc->status &
-+ (IRQ_PENDING | IRQ_MASKED | IRQ_DISABLED)) ==
-+ (IRQ_PENDING | IRQ_MASKED))) {
-+ DEBUGP("dealing with pending IRQ, unmasking\n");
-+ desc->chip->unmask(irq);
-+ desc->status &= ~IRQ_MASKED;
-+ }
-+
-+ desc->status &= ~IRQ_PENDING;
-+ spin_unlock(&desc->lock);
-+
-+ ezx_pcap_read(SSP_PCAP_ADJ_ISR_REGISTER, &reg);
-+ DEBUGP("pcap_irq_demux_handler: ISR=0x%08x\n", reg);
-+
-+ for (i = ARRAY_SIZE(pcap2irq)-1; i >= 0; i--) {
-+ unsigned int pirq = pcap2irq[i];
-+ if (pirq == 0)
-+ continue;
-+
-+ if (reg & (1 << i)) {
-+ struct irq_desc *subdesc;
-+ DEBUGP("found irq %u\n", pirq);
-+ subdesc = irq_desc + pirq;
-+
-+ // acknowledge pcap irq
-+ // do just one pcap irq each time
-+ subdesc->chip->ack(pirq);
-+ i = 0;
-+
-+ handle_IRQ_event(pirq, subdesc->action);
-+ }
-+ }
-+ spin_lock(&desc->lock);
-+
-+ } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING);
-+
-+ desc->status &= ~IRQ_INPROGRESS;
-+
-+out_unlock:
-+ spin_unlock(&desc->lock);
-+}
-+
-+static int ezx_pcap_remove(struct platform_device *pdev)
-+{
-+ int irq;
-+ DEBUGP("exz_pcap_remove entered\n");
-+
-+ set_irq_chained_handler(IRQ_GPIO1, NULL);
-+
-+ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
-+ set_irq_chip(irq, NULL);
-+ set_irq_handler(irq, NULL);
-+ set_irq_flags(irq, 0);
-+ }
-+
-+ return 0;
-+}
-+
-+static int __init ezx_pcap_probe(struct platform_device *pdev)
-+{
-+ unsigned int irq;
-+ DEBUGP("ezx_pcap_probe entered\n");
-+
-+ pcap_init();
-+
-+ set_irq_type(IRQ_GPIO1, IRQT_RISING);
-+ /* set up interrupt demultiplexing code for PCAP2 irqs */
-+ for (irq = EZX_IRQ(0); irq <= EZX_IRQ(6); irq++) {
-+ set_irq_chip(irq, &pcap_chip);
-+ set_irq_handler(irq, handle_edge_irq);
-+ set_irq_flags(irq, IRQF_VALID);
-+ }
-+ set_irq_chained_handler(IRQ_GPIO1, pcap_irq_demux_handler);
-+
-+ printk("PCAP2 SSP driver registered.\n");
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ezxpcap_driver = {
-+ .probe = ezx_pcap_probe,
-+ .remove = ezx_pcap_remove,
-+ .driver = {
-+ .name = "ezx-pcap",
-+ .owner = THIS_MODULE,
-+ },
-+};
-+
-+static int __init ezx_pcap_init(void)
-+{
-+ DEBUGP("ezx_pcap_init entered\n");
-+ return platform_driver_register(&ezxpcap_driver);
-+}
-+
-+static void __exit ezx_pcap_exit(void)
-+{
-+ return platform_driver_unregister(&ezxpcap_driver);
-+}
-+
-+module_init(ezx_pcap_init);
-+module_exit(ezx_pcap_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Harald Welte");
-+MODULE_DESCRIPTION("SPI Driver for Motorola PCAP2");
-+
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/ezx-pcap.h 2007-04-21 08:26:37.000000000 -0300
-@@ -0,0 +1,665 @@
-+/* (c) Copyright Motorola Beijing 2002 all rights reserved.
-+
-+ Project Name : EZX
-+ Project No. :
-+ Title :
-+ File Name :
-+ Description :
-+
-+ ************** REVISION HISTORY **********************************************
-+ Date Author Reference
-+ ======== ========== ==========================
-+ 2002-07-01 weiqiang lin create
-+*/
-+#ifndef SSP_PCAP_H
-+#define SSP_PCAP_H
-+
-+#define SSP_vibrate_start_command() SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
-+ SSP_PCAP_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
-+
-+#define SSP_vibrate_stop_command() SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN); \
-+ SSP_PCAP_bit_clean(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN)
-+
-+#define SSP_PCAP_REGISTER_VALUE_LENGTH 16
-+
-+#define SSP_PCAP_REGISTER_WRITE_OP_BIT 0x80000000
-+#define SSP_PCAP_REGISTER_READ_OP_BIT 0x00000000
-+
-+#define SSP_PCAP_REGISTER_VALUE_UP_WORD_MASK 0xffff0000
-+#define SSP_PCAP_REGISTER_VALUE_DOWN_WORD_MASK 0x0000ffff
-+
-+#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
-+#define SSP_PCAP_REGISTER_VALUE_MASK 0x01ffffff
-+#define SSP_PCAP_REGISTER_ADDRESS_MASK 0x7c000000
-+#define SSP_PCAP_REGISTER_ADDRESS_SHIFT 26
-+#define SSP_PCAP_REGISTER_NUMBER 32
-+
-+#define SSP_PCAP_ADC_START_VALUE_SET_MASK 0xfffffc00
-+#define SSP_PCAP_ADC_START_VALUE 0x000001dd
-+
-+
-+#define SSP_PCAP_PHONE_CDC_CLOCK_MASK 0x000001c0
-+#define SSP_PCAP_STEREO_SAMPLE_RATE_MASK 0x00000f00
-+#define SSP_PCAP_STEREO_BCLK_TIME_SLOT_MASK 0x00018000
-+#define SSP_PCAP_STEREO_CLOCK_MASK 0x0000001c
-+#define SSP_PCAP_DIGITAL_AUDIO_MODE_MASK 0x00006000
-+#define SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK 0x000e0000
-+#define SSP_PCAP_MONO_PGA_MASK 0x00180000
-+
-+#define SSP_PCAP_VIBRATOR_VOLTAGE_LEVEL_MASK 0x00300000
-+
-+#define SSP_PCAP_AUDIO_IN_GAIN_MASK 0x0000001f
-+#define SSP_PCAP_AUDIO_IN_GAIN_SHIFT 0
-+#define SSP_PCAP_AUDIO_OUT_GAIN_MASK 0x0001e000
-+#define SSP_PCAP_AUDIO_OUT_GAIN_SHIFT 13
-+
-+
-+#define SSP_PCAP_ADD1_VALUE_MASK 0x000003ff
-+#define SSP_PCAP_ADD1_VALUE_SHIFT 0
-+#define SSP_PCAP_ADD2_VALUE_MASK 0x000ffc00
-+#define SSP_PCAP_ADD2_VALUE_SHIFT 10
-+
-+
-+#define PCAP_AUDIO_IN_GAIN_MAX_VALUE 31
-+#define PCAP_AUDIO_OUT_GAIN_MAX_VALUE 15
-+
-+#define PCAP_CLEAR_INTERRUPT_REGISTER 0x00141fdf
-+#define PCAP_MASK_ALL_INTERRUPT 0x0013ffff
-+
-+#define SSP_PCAP_TS_KEEPER_TIMER 100 /* 1 second */
-+#define START_ADC_DELAY_TIMER 1991 /* 540 us */
-+
-+#define SSP_SEND_PM_ALART_INTERVAL 1000 *HZ/1000 /* 1 second */
-+#define SSP_SEND_MSG_USB_ACCESSORY_INFO_DEBOUNCE 200 *HZ/1000 /* 200ms */
-+
-+struct ssp_interrupt_info
-+{
-+ u32 type;
-+ u32 status;
-+ void* privdata;
-+};
-+
-+#ifndef U8
-+#define U8 unsigned char
-+#endif
-+
-+#ifndef U32
-+#define U32 unsigned long
-+#endif
-+
-+#ifndef U16
-+#define U16 unsigned short
-+#endif
-+
-+#ifndef P_U16
-+#define P_U16 U16*
-+#endif
-+
-+#ifndef P_U32
-+#define P_U32 U32*
-+#endif
-+
-+#define SSP_SELECT_BUFFER (volatile unsigned long *)(0xf4000000)
-+
-+#define SSP_SR_RNE 0x00000008
-+#define SSP_PCAP_BASE 0x00001000
-+/************************ STRUCTURES, ENUMS, AND TYPEDEFS **************************/
-+typedef enum accessoryStatus
-+{
-+ ACCESSORY_DEVICE_STATUS_DETACHED = 0,
-+ ACCESSORY_DEVICE_STATUS_ATTACHED ,
-+ ACCESSORY_DEVICE_STATUS_UNKNOW =0x000000ff
-+}ACCESSORY_DEVICE_STATUS;
-+
-+typedef enum accessoryType
-+{
-+ ACCESSORY_DEVICE_NONE = 0,
-+ ACCESSORY_DEVICE_SERIAL_PORT ,
-+ ACCESSORY_DEVICE_USB_PORT ,
-+ ACCESSORY_DEVICE_UNKNOW =0x000000ff
-+}ACCESSORY_TYPE;
-+
-+typedef enum pcapReturnStatus
-+{
-+ SSP_PCAP_SUCCESS = 0,
-+ SSP_PCAP_ERROR_REGISTER = SSP_PCAP_BASE+1,
-+ SSP_PCAP_ERROR_VALUE = SSP_PCAP_BASE+2,
-+
-+ SSP_PCAP_NOT_RUN = SSP_PCAP_BASE+0xff
-+}SSP_PCAP_STATUS;
-+
-+typedef enum pcapPortType
-+{
-+ SSP_PCAP_SERIAL_PORT = 0x00000000,
-+ SSP_PCAP_LOW_USB_PORT = 0x00000001,
-+ SSP_PCAP_HIGH_USB_PORT = 0x00000002,
-+ SSP_PCAP_UNKNOW_PORT = 0x000000ff
-+}SSP_PCAP_PORT_TYPE;
-+
-+typedef enum pcapInitDriverType
-+{
-+ SSP_PCAP_TS_OPEN = 0x00000000,
-+ SSP_PCAP_AUDIO_OPEN = 0x00000001,
-+ SSP_PCAP_UNKNOW_DRIVER_OPEN = 0x000000ff
-+}SSP_PCAP_INIT_DRIVER_TYPE;
-+
-+
-+typedef enum pcapReturnBitStatus
-+{
-+ SSP_PCAP_BIT_ZERO = 0x00000000,
-+ SSP_PCAP_BIT_ONE = 0x00000001,
-+ SSP_PCAP_BIT_ERROR = 0xff000000
-+}SSP_PCAP_BIT_STATUS;
-+
-+typedef enum pcapCDCClkType
-+{
-+ PCAP_CDC_CLK_IN_13M0 = 0x00000000,
-+ PCAP_CDC_CLK_IN_15M36 = 0x00000040,
-+ PCAP_CDC_CLK_IN_16M8 = 0x00000080,
-+ PCAP_CDC_CLK_IN_19M44 = 0x000000c0,
-+ PCAP_CDC_CLK_IN_26M0 = 0x00000100
-+}PHONE_CDC_CLOCK_TYPE;
-+
-+typedef enum pcapST_SR
-+{
-+ PCAP_ST_SAMPLE_RATE_8K = 0x00000000,
-+ PCAP_ST_SAMPLE_RATE_11K = 0x00000100,
-+ PCAP_ST_SAMPLE_RATE_12K = 0x00000200,
-+ PCAP_ST_SAMPLE_RATE_16K = 0x00000300,
-+ PCAP_ST_SAMPLE_RATE_22K = 0x00000400,
-+ PCAP_ST_SAMPLE_RATE_24K = 0x00000500,
-+ PCAP_ST_SAMPLE_RATE_32K = 0x00000600,
-+ PCAP_ST_SAMPLE_RATE_44K = 0x00000700,
-+ PCAP_ST_SAMPLE_RATE_48K = 0x00000800
-+}ST_SAMPLE_RATE_TYPE;
-+
-+typedef enum pcapST_BCLK
-+{
-+ PCAP_ST_BCLK_SLOT_16 = 0x00000000,
-+ PCAP_ST_BCLK_SLOT_8 = 0x00008000,
-+ PCAP_ST_BCLK_SLOT_4 = 0x00010000,
-+ PCAP_ST_BCLK_SLOT_2 = 0x00018000,
-+}ST_BCLK_TIME_SLOT_TYPE;
-+
-+typedef enum pcapST_CLK
-+{
-+ PCAP_ST_CLK_PLL_CLK_IN_13M0 = 0x00000000,
-+ PCAP_ST_CLK_PLL_CLK_IN_15M36 = 0x00000004,
-+ PCAP_ST_CLK_PLL_CLK_IN_16M8 = 0x00000008,
-+ PCAP_ST_CLK_PLL_CLK_IN_19M44 = 0x0000000c,
-+ PCAP_ST_CLK_PLL_CLK_IN_26M0 = 0x00000010,
-+ PCAP_ST_CLK_PLL_CLK_IN_EXT_MCLK = 0x00000014,
-+ PCAP_ST_CLK_PLL_CLK_IN_FSYNC = 0x00000018,
-+ PCAP_ST_CLK_PLL_CLK_IN_BITCLK = 0x0000001c
-+}ST_CLK_TYPE;
-+
-+typedef enum pcapDigitalAudioInterfaceMode
-+{
-+ PCAP_DIGITAL_AUDIO_INTERFACE_NORMAL = 0x00000000,
-+ PCAP_DIGITAL_AUDIO_INTERFACE_NETWORK = 0x00002000,
-+ PCAP_DIGITAL_AUDIO_INTERFACE_I2S = 0x00004000
-+}DIG_AUD_MODE_TYPE;
-+
-+typedef enum pcapMono
-+{
-+ PCAP_MONO_PGA_R_L_STEREO = 0x00000000,
-+ PCAP_MONO_PGA_RL = 0x00080000,
-+ PCAP_MONO_PGA_RL_3DB = 0x00100000,
-+ PCAP_MONO_PGA_RL_6DB = 0x00180000
-+}MONO_TYPE;
-+
-+typedef enum pcapVibratorVoltageLevel
-+{
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL0 = 0x00000000,
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL1 = 0x00100000,
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL2 = 0x00200000,
-+ PCAP_VIBRATOR_VOLTAGE_LEVEL3 = 0x00300000
-+}VibratorVoltageLevel_TYPE;
-+
-+typedef enum pcapTouchScreenMode
-+{
-+ PCAP_TS_POSITION_X_MEASUREMENT = 0x00000000,
-+ PCAP_TS_POSITION_XY_MEASUREMENT = 0x00020000,
-+ PCAP_TS_PRESSURE_MEASUREMENT = 0x00040000,
-+ PCAP_TS_PLATE_X_MEASUREMENT = 0x00060000,
-+ PCAP_TS_PLATE_Y_MEASUREMENT = 0x00080000,
-+ PCAP_TS_STANDBY_MODE = 0x000a0000,
-+ PCAP_TS_NONTS_MODE = 0x000c0000
-+}TOUCH_SCREEN_DETECT_TYPE;
-+
-+typedef enum pcapADJRegister
-+{
-+ SSP_PCAP_ADJ_ISR_REGISTER = 0x00,
-+ SSP_PCAP_ADJ_MSR_REGISTER = 0x01,
-+ SSP_PCAP_ADJ_PSTAT_REGISTER = 0x02,
-+ SSP_PCAP_ADJ_VREG2_REGISTER = 0x06,
-+ SSP_PCAP_ADJ_AUX_VREG_REGISTER = 0x07,
-+ SSP_PCAP_ADJ_BATT_DAC_REGISTER = 0x08,
-+ SSP_PCAP_ADJ_ADC1_REGISTER = 0x09,
-+ SSP_PCAP_ADJ_ADC2_REGISTER = 0x0a,
-+ SSP_PCAP_ADJ_AUD_CODEC_REGISTER = 0x0b,
-+ SSP_PCAP_ADJ_AUD_RX_AMPS_REGISTER = 0x0c,
-+ SSP_PCAP_ADJ_ST_DAC_REGISTER = 0x0d,
-+ SSP_PCAP_ADJ_BUSCTRL_REGISTER = 0x14,
-+ SSP_PCAP_ADJ_PERIPH_REGISTER = 0x15,
-+ SSP_PCAP_ADJ_LOWPWR_CTRL_REGISTER = 0x18,
-+ SSP_PCAP_ADJ_TX_AUD_AMPS_REGISTER = 0x1a,
-+ SSP_PCAP_ADJ_GP_REG_REGISTER = 0x1b
-+}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER;
-+
-+typedef enum pcapADJBit_SetType
-+{
-+ SSP_PCAP_ADJ_BIT_ISR_ADCDONEI = 0x00000001,
-+ SSP_PCAP_ADJ_BIT_ISR_TSI = 0x00000002,
-+ SSP_PCAP_ADJ_BIT_ISR_1HZI = 0x00000004,
-+ SSP_PCAP_ADJ_BIT_ISR_WHI = 0x00000008,
-+ SSP_PCAP_ADJ_BIT_ISR_WLI = 0x00000010,
-+ SSP_PCAP_ADJ_BIT_ISR_TODAI = 0x00000020,
-+ SSP_PCAP_ADJ_BIT_ISR_USB4VI = 0x00000040,
-+ SSP_PCAP_ADJ_BIT_ISR_ONOFFI = 0x00000080,
-+ SSP_PCAP_ADJ_BIT_ISR_ONOFF2I = 0x00000100,
-+ SSP_PCAP_ADJ_BIT_ISR_USB1VI = 0x00000200,
-+ SSP_PCAP_ADJ_BIT_ISR_MOBPORTI = 0x00000400,
-+ SSP_PCAP_ADJ_BIT_ISR_MB2I = 0x00000800,
-+ SSP_PCAP_ADJ_BIT_ISR_A1I = 0x00001000,
-+ SSP_PCAP_ADJ_BIT_ISR_STI = 0x00002000,
-+ SSP_PCAP_ADJ_BIT_ISR_PCI = 0x00004000,
-+ SSP_PCAP_ADJ_BIT_ISR_WARMI = 0x00008000,
-+ SSP_PCAP_ADJ_BIT_ISR_EOLI = 0x00010000,
-+ SSP_PCAP_ADJ_BIT_ISR_CLKI = 0x00020000,
-+ SSP_PCAP_ADJ_BIT_ISR_SYS_RSTI = 0x00040000,
-+ SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I = 0x00100000,
-+ SSP_PCAP_ADJ_BIT_ISR_SOFT_RESETI = 0x00200000,
-+ SSP_PCAP_ADJ_BIT_ISR_MNEXBI = 0x00400000,
-+
-+ SSP_PCAP_ADJ_BIT_MSR_ADCDONEM = 0x04000001,
-+ SSP_PCAP_ADJ_BIT_MSR_TSM = 0x04000002,
-+ SSP_PCAP_ADJ_BIT_MSR_1HZM = 0x04000004,
-+ SSP_PCAP_ADJ_BIT_MSR_WHM = 0x04000008,
-+ SSP_PCAP_ADJ_BIT_MSR_WLM = 0x04000010,
-+ SSP_PCAP_ADJ_BIT_MSR_TODAM = 0x04000020,
-+ SSP_PCAP_ADJ_BIT_MSR_USB4VM = 0x04000040,
-+ SSP_PCAP_ADJ_BIT_MSR_ONOFFM = 0x04000080,
-+ SSP_PCAP_ADJ_BIT_MSR_ONOFF2M = 0x04000100,
-+ SSP_PCAP_ADJ_BIT_MSR_USB1VM = 0x04000200,
-+ SSP_PCAP_ADJ_BIT_MSR_MOBPORTM = 0x04000400,
-+ SSP_PCAP_ADJ_BIT_MSR_MB2M = 0x04000800,
-+ SSP_PCAP_ADJ_BIT_MSR_A1M = 0x04001000,
-+ SSP_PCAP_ADJ_BIT_MSR_STM = 0x04002000,
-+ SSP_PCAP_ADJ_BIT_MSR_PCM = 0x04004000,
-+ SSP_PCAP_ADJ_BIT_MSR_WARMM = 0x04008000,
-+ SSP_PCAP_ADJ_BIT_MSR_EOLM = 0x04010000,
-+ SSP_PCAP_ADJ_BIT_MSR_CLKM = 0x04020000,
-+ SSP_PCAP_ADJ_BIT_MSR_SYS_RSTM = 0x04040000,
-+ SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M = 0x04100000,
-+ SSP_PCAP_ADJ_BIT_MSR_SOFT_RESETM = 0x04200000,
-+ SSP_PCAP_ADJ_BIT_MSR_MNEXBM = 0x04400000,
-+
-+ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V = 0x08000040,
-+ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS = 0x08000080,
-+ SSP_PCAP_ADJ_BIT_PSTAT_ONOFFSNS2 = 0x08000100,
-+ SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V = 0x08000200,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MOBSENSB = 0x08000400,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MB2SNS = 0x08000800,
-+ SSP_PCAP_ADJ_BIT_PSTAT_A1SNS = 0x08001000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MSTB = 0x08002000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_EOL_STAT = 0x08010000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_CLK_STAT = 0x08020000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_SYS_RST = 0x08040000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_BATTFBSNS = 0x08080000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_BATT_DET_IN_SNS = 0x08200000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_MNEXBSNS = 0x08400000,
-+ SSP_PCAP_ADJ_BIT_PSTAT_WARM_SYS_RST = 0x08800000,
-+
-+ SSP_PCAP_ADJ_BIT_VREG2_V1_STBY = 0x18000001,
-+ SSP_PCAP_ADJ_BIT_VREG2_V2_STBY = 0x18000002,
-+ SSP_PCAP_ADJ_BIT_VREG2_V3_STBY = 0x18000004,
-+ SSP_PCAP_ADJ_BIT_VREG2_V4_STBY = 0x18000008,
-+ SSP_PCAP_ADJ_BIT_VREG2_V5_STBY = 0x18000010,
-+ SSP_PCAP_ADJ_BIT_VREG2_V6_STBY = 0x18000020,
-+ SSP_PCAP_ADJ_BIT_VREG2_V7_STBY = 0x18000040,
-+ SSP_PCAP_ADJ_BIT_VREG2_V8_STBY = 0x18000080,
-+ SSP_PCAP_ADJ_BIT_VREG2_V9_STBY = 0x18000100,
-+ SSP_PCAP_ADJ_BIT_VREG2_V10_STBY = 0x18000200,
-+ SSP_PCAP_ADJ_BIT_VREG2_V1_LOWPWR = 0x18000400,
-+ SSP_PCAP_ADJ_BIT_VREG2_V2_LOWPWR = 0x18000800,
-+ SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR = 0x18001000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR = 0x18002000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V5_LOWPWR = 0x18004000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR = 0x18008000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V7_LOWPWR = 0x18010000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR = 0x18020000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V9_LOWPWR = 0x18040000,
-+ SSP_PCAP_ADJ_BIT_VREG2_V10_LOWPWR = 0x18080000,
-+
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_EN = 0x1c000002,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_0 = 0x1c000004,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_1 = 0x1c000008,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN = 0x1c000010,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0 = 0x1c000020,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1 = 0x1c000040,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN = 0x1c000080,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_0 = 0x1c000100,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_1 = 0x1c000200,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_2 = 0x1c000400,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_3 = 0x1c000800,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_EN = 0x1c001000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_0 = 0x1c002000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX4_1 = 0x1c004000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM2_EN = 0x1c010000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_EN = 0x1c020000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VSIM_0 = 0x1c040000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN = 0x1c080000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_0 = 0x1c100000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_1 = 0x1c200000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_STBY = 0x1c400000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX1_LOWPWR = 0x1c800000,
-+ SSP_PCAP_ADJ_BIT_AUX_VREG_SW3_STBY = 0x1d000000,
-+
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC0 = 0x20000001,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC1 = 0x20000002,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC2 = 0x20000004,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC3 = 0x20000008,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC4 = 0x20000010,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC5 = 0x20000020,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC6 = 0x20000040,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_DAC7 = 0x20000080,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_B_FDBK = 0x20000100,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EXT_ISENSE = 0x20000200,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN0 = 0x20000400,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN1 = 0x20000800,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN2 = 0x20001000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_V_COIN3 = 0x20002000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_I_COIN = 0x20004000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_COIN_CH_EN = 0x20008000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL0 = 0x20020000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL1 = 0x20040000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_SEL2 = 0x20080000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_EOL_CMP_EN = 0x20100000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_BATT_DET_EN = 0x20200000,
-+ SSP_PCAP_ADJ_BIT_BATT_DAC_THERMBIAS_CTRL = 0x20400000,
-+
-+ SSP_PCAP_ADJ_BIT_ADC1_ADEN = 0x24000001,
-+ SSP_PCAP_ADJ_BIT_ADC1_RAND = 0x24000002,
-+ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL1 = 0x24000004,
-+ SSP_PCAP_ADJ_BIT_ADC1_AD_SEL2 = 0x24000008,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA10 = 0x24000010,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA11 = 0x24000020,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA12 = 0x24000040,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA20 = 0x24000080,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA21 = 0x24000100,
-+ SSP_PCAP_ADJ_BIT_ADC1_ADA22 = 0x24000200,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO0 = 0x24000400,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO1 = 0x24000800,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO2 = 0x24001000,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATO3 = 0x24002000,
-+ SSP_PCAP_ADJ_BIT_ADC1_ATOX = 0x24004000,
-+ SSP_PCAP_ADJ_BIT_ADC1_MTR1 = 0x24008000,
-+ SSP_PCAP_ADJ_BIT_ADC1_MTR2 = 0x24010000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_M0 = 0x24020000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_M1 = 0x24040000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_M2 = 0x24080000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_REF_LOWPWR = 0x24100000,
-+ SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB = 0x24200000,
-+ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_POLARITY = 0x24400000,
-+ SSP_PCAP_ADJ_BIT_ADC1_BATT_I_ADC = 0x24800000,
-+
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD10 = 0x28000001,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD11 = 0x28000002,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD12 = 0x28000004,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD13 = 0x28000008,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD14 = 0x28000010,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD15 = 0x28000020,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD16 = 0x28000040,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD17 = 0x28000080,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD18 = 0x28000100,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD19 = 0x28000200,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD20 = 0x28000400,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD21 = 0x28000800,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD22 = 0x28001000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD23 = 0x28002000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD24 = 0x28004000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD25 = 0x28008000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD26 = 0x28010000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD27 = 0x28020000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD28 = 0x28040000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADD29 = 0x28080000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADINC1 = 0x28100000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ADINC2 = 0x28200000,
-+ SSP_PCAP_ADJ_BIT_ADC2_ASC = 0x28400000,
-+
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDIHPF = 0x2c000001,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_SMB = 0x2c000002,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_AUDOHPF = 0x2c000004,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CD_TS = 0x2c000008,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_DLM = 0x2c000010,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_ADITH = 0x2c000020,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK0 = 0x2c000040,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK1 = 0x2c000080,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK2 = 0x2c000100,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_INV = 0x2c000200,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_INV = 0x2c000400,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_DF_RESET = 0x2c000800,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_EN = 0x2c001000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_CLK_EN = 0x2c002000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_FS_8K_16K = 0x2c004000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_DIG_AUD_IN = 0x2c008000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CLK_IN_SEL = 0x2c010000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2_MUX = 0x2c020000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG0 = 0x2c040000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG1 = 0x2c080000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG2 = 0x2c100000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG3 = 0x2c200000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG4 = 0x2c400000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_MIC2IG_PRI_ADJ = 0x2c800000,
-+ SSP_PCAP_ADJ_BIT_AUD_CODEC_CDC_PRI_ADJ = 0x2c200000,
-+
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1_EN = 0x30000001,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A2_EN = 0x30000002,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A4_EN = 0x30000010,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ARIGHT_EN = 0x30000020,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ALEFT_EN = 0x30000040,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CD_BYP = 0x30000080,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_CDC_SW = 0x30000100,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_ST_DAC_SW = 0x30000200,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_IN_SW = 0x30000400,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_R_EN = 0x30000800,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_PGA_L_EN = 0x30001000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG0 = 0x30002000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG1 = 0x30004000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG2 = 0x30008000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG3 = 0x30010000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL = 0x30020000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO0 = 0x30080000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO1 = 0x30100000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_AUDOG_PRI_ADJ = 0x30200000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_MONO_PRI_ADJ = 0x30400000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ0 = 0x30800000,
-+ SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_RX_PRI_ADJ1 = 0x31000000,
-+
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SMB_ST_DAC = 0x34000001,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_STDET_EN = 0x34000002,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK0 = 0x34000004,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK1 = 0x34000008,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK2 = 0x34000010,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_EN = 0x34000020,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DF_RESET_ST_DAC = 0x34000040,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_EN = 0x34000080,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR0 = 0x34000100,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR1 = 0x34000200,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR2 = 0x34000400,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_SR3 = 0x34000800,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_IN_ST_DAC = 0x34001000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS0 = 0x34002000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_DIG_AUD_FS1 = 0x34004000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK0 = 0x34008000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_BCLK1 = 0x34010000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_CLK_INV = 0x34020000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_FS_INV = 0x34040000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_CLK_IN_SEL = 0x34080000,
-+ SSP_PCAP_ADJ_BIT_ST_DAC_ST_DAC_PRI_ADJ = 0x35000000,
-+
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB = 0x50000001,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_SUSPEND = 0x50000002,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU = 0x50000004,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PD = 0x50000008,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN = 0x50000010,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PS = 0x50000020,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_MSTR_EN = 0x50000040,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_VBUS_PD_ENB = 0x50000080,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_CURRLIM = 0x50000100,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB = 0x50000200,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR = 0x50000400,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_SE0_CONN = 0x50000800,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PDM = 0x50001000,
-+ SSP_PCAP_ADJ_BIT_BUSCTRL_BUS_PRI_ADJ = 0x51000000,
-+
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0 = 0x54000001,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1 = 0x54000002,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2 = 0x54000004,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3 = 0x54000008,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4 = 0x54000010,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_EN = 0x54000020,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_EN = 0x54000040,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL0 = 0x54000080,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL1 = 0x54000100,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL2 = 0x54000200,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_CTRL3 = 0x54000400,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL0 = 0x54000800,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL1 = 0x54001000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL2 = 0x54002000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_CTRL3 = 0x54004000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I0 = 0x54008000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDR_I1 = 0x54010000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I0 = 0x54020000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_LEDG_I1 = 0x54040000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_SKIP = 0x54080000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0 = 0x54100000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1 = 0x54200000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2 = 0x54400000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3 = 0x54800000,
-+ SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4 = 0x55000000,
-+
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY = 0x60000001,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR = 0x60000002,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_STBY = 0x60000004,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX3_LOWPWR = 0x60000008,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_STBY = 0x60000010,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX4_LOWPWR = 0x60000020,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM_LOWPWR = 0x60000040,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VSIM2_LOWPWR = 0x60000080,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00 = 0x60000100,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01 = 0x60000200,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10 = 0x60000400,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11 = 0x60000800,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS = 0x60001000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS = 0x60002000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS = 0x60004000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS = 0x60008000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE00 = 0x60010000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE01 = 0x60020000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE10 = 0x60040000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW2_MODE11 = 0x60080000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW20_DVS = 0x60100000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW21_DVS = 0x60200000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW22_DVS = 0x60400000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW23_DVS = 0x60800000,
-+ SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY = 0x61000000,
-+
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG0 = 0x68000001,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG1 = 0x68000002,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG2 = 0x68000004,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG3 = 0x68000008,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG4 = 0x68000010,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_EN = 0x68000020,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A3_MUX = 0x68000040,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_EN = 0x68000080,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A5_MUX = 0x68000100,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_EXT_MIC_MUX = 0x68000200,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON2 = 0x68000400,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_MB_ON1 = 0x68000800,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1ID_TX = 0x68001000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A1_CONFIG = 0x68002000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AHS_CONFIG = 0x68004000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_A2_CONFIG = 0x68008000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_LOWPWR = 0x68080000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIO_STBY = 0x68100000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_V2_EN_2 = 0x68200000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_AUDIG_PRI_ADJ = 0x68400000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ0 = 0x68800000,
-+ SSP_PCAP_ADJ_BIT_TX_AUD_AMPS_TX_PRI_ADJ1 = 0x69000000,
-+
-+ SSP_PCAP_ADJ_BIT_SYS_RST_CLR = 0x6c000001,
-+ SSP_PCAP_ADJ_BIT_SYS_RST_MODE0 = 0x6c000002,
-+ SSP_PCAP_ADJ_BIT_SYS_RST_MODE1 = 0x6c000004,
-+ SSP_PCAP_ADJ_BIT_SYS_VFLASH_0 = 0x6c000008,
-+ SSP_PCAP_ADJ_BIT_SYS_VFLASH_1 = 0x6c000010,
-+ SSP_PCAP_ADJ_BIT_SYS_MID_SELECT = 0x6c000020,
-+ SSP_PCAP_ADJ_BIT_SYS_MID_FET = 0x6c000040,
-+ SSP_PCAP_ADJ_BIT_SYS_MAIN_LOW = 0x6c000080,
-+ SSP_PCAP_ADJ_BIT_SYS_BATTFB_DIS = 0x6c000100,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG9 = 0x6c000200,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG10 = 0x6c000400,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG11 = 0x6c000800,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG12 = 0x6c001000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG13 = 0x6c002000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG14 = 0x6c004000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG15 = 0x6c008000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG16 = 0x6c010000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG17 = 0x6c020000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG18 = 0x6c040000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG19 = 0x6c080000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG20 = 0x6c100000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG21 = 0x6c200000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG22 = 0x6c400000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG23 = 0x6c800000,
-+ SSP_PCAP_ADJ_BIT_SYS_GP_REG24 = 0x6d000000
-+
-+}SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE;
-+
-+/************************ FUNCTION PROTOTYPES **************************************/
-+extern void ssp_pcap_init(void);
-+extern void ssp_pcap_release(void);
-+
-+extern void ssp_pcap_open(SSP_PCAP_INIT_DRIVER_TYPE portType);
-+extern void ssp_pcap_close(void);
-+
-+extern void ssp_pcap_intoSleep_callBack(void);
-+extern void ssp_pcap_wakeUp_callBack(void);
-+
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_write_data_to_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,U32 ssp_pcap_register_value);
-+extern SSP_PCAP_STATUS SSP_PCAP_read_data_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register,P_U32 p_ssp_pcap_register_value);
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_bit_set(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern SSP_PCAP_STATUS SSP_PCAP_bit_clean(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_bit_from_PCAP(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER_BIT_TYPE ssp_pcap_bit ) ;
-+extern U32 SSP_PCAP_get_register_value_from_buffer(SSP_PCAP_SECONDARY_PROCESSOR_REGISTER ssp_pcap_register ) ;
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_TSI_mode_set(TOUCH_SCREEN_DETECT_TYPE mode_Type );
-+extern SSP_PCAP_STATUS SSP_PCAP_TSI_start_XY_read(void);
-+extern SSP_PCAP_STATUS SSP_PCAP_TSI_get_XY_value(P_U16 p_x,P_U16 p_y);
-+extern SSP_PCAP_STATUS SSP_PCAP_CDC_CLK_set(PHONE_CDC_CLOCK_TYPE clkType);
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_CDC_SR_set(ST_SAMPLE_RATE_TYPE srType);
-+extern SSP_PCAP_STATUS SSP_PCAP_BCLK_set(ST_BCLK_TIME_SLOT_TYPE bclkType);
-+extern SSP_PCAP_STATUS SSP_PCAP_STCLK_set(ST_CLK_TYPE stClkType);
-+extern SSP_PCAP_STATUS SSP_PCAP_DIG_AUD_FS_set(DIG_AUD_MODE_TYPE fsType);
-+extern SSP_PCAP_STATUS SSP_PCAP_AUDIG_set(U32 audioInGain);
-+extern SSP_PCAP_STATUS SSP_PCAP_MONO_set(MONO_TYPE monoType);
-+extern SSP_PCAP_STATUS SSP_PCAP_AUDOG_set(U32 audioOutGain);
-+
-+extern SSP_PCAP_STATUS SSP_PCAP_V_VIB_level_set(VibratorVoltageLevel_TYPE VIBLevelType);
-+extern SSP_PCAP_STATUS SSP_PCAP_configure_USB_UART_transeiver(SSP_PCAP_PORT_TYPE portType);
-+extern SSP_PCAP_BIT_STATUS SSP_PCAP_get_audio_in_status(void);
-+
-+/* for log */
-+extern void pcap_log_add_pure_data(u8* pData,u32 len);
-+extern void pcap_log_add_data(u8* pData,u32 len);
-+
-+/* screen lock on/off handler */
-+extern void ssp_pcap_screenlock_lock(u32 data);
-+extern void ssp_pcap_screenlock_unlock(u32 data);
-+
-+#endif
-Index: linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h
-===================================================================
---- linux-2.6.20.7.orig/include/asm-arm/arch-pxa/irqs.h 2007-04-21 08:26:32.000000000 -0300
-+++ linux-2.6.20.7/include/asm-arm/arch-pxa/irqs.h 2007-04-21 08:26:37.000000000 -0300
-@@ -176,7 +176,8 @@
- #define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
- #elif defined(CONFIG_ARCH_LUBBOCK) || \
- defined(CONFIG_MACH_LOGICPD_PXA270) || \
-- defined(CONFIG_MACH_MAINSTONE)
-+ defined(CONFIG_MACH_MAINSTONE) || \
-+ defined(CONFIG_PXA_EZX)
- #define NR_IRQS (IRQ_BOARD_END)
- #else
- #define NR_IRQS (IRQ_BOARD_START)
-@@ -222,3 +223,16 @@
- #define IRQ_LOCOMO_GPIO_BASE (IRQ_BOARD_START + 1)
- #define IRQ_LOCOMO_LT_BASE (IRQ_BOARD_START + 2)
- #define IRQ_LOCOMO_SPI_BASE (IRQ_BOARD_START + 3)
-+
-+/* EZX Interrupts (CONFIG_EZX) */
-+#define EZX_IRQ(x) (IRQ_BOARD_START + (x))
-+#define EZX_IRQ_ADCDONE EZX_IRQ(0) /* PCAP */
-+#define EZX_IRQ_TS EZX_IRQ(1) /* PCAP */
-+#define EZX_IRQ_USB4V EZX_IRQ(2) /* PCAP */
-+#define EZX_IRQ_USB1V EZX_IRQ(3) /* PCAP */
-+#define EZX_IRQ_HEADJACK EZX_IRQ(4) /* PCAP */
-+#define EZX_IRQ_MIC EZX_IRQ(5) /* PCAP */
-+#define EZX_IRQ_ADCDONE2 EZX_IRQ(6) /* PCAP */
-+#define EZX_IRQ_ONOFF EZX_IRQ(7)
-+#define EZX_IRQ_ONOFF2 EZX_IRQ(8)
-+
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 08:26:37.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 08:45:09.000000000 -0300
-@@ -18,7 +18,7 @@
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
--obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
-
- # Support for blinky lights
- led-y := leds.o
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/ezx.c 2007-04-21 08:26:37.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx.c 2007-04-21 08:51:15.000000000 -0300
-@@ -73,6 +73,24 @@
- .clk_pcap = 1,
- };
-
-+/* PCAP */
-+static struct resource ezxpcap_resources[] = {
-+ [0] = {
-+ .start = IRQ_GPIO1,
-+ .end = IRQ_GPIO1,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device ezxpcap_device = {
-+ .name = "ezx-pcap",
-+ .id = -1,
-+ .dev = {
-+ .parent = &ezxssp_device.dev,
-+ },
-+ .num_resources = ARRAY_SIZE(ezxpcap_resources),
-+ .resource = ezxpcap_resources,
-+};
-
- /* OHCI Controller */
-
-@@ -236,7 +254,7 @@
- };
-
-
--static struct resource ezx_bp_resources[] = {
-+static struct resource ezxbp_resources[] = {
- [0] = {
- .start = GPIO_BP_RDY,
- .end = GPIO_BP_RDY,
-@@ -256,15 +274,15 @@
- #endif
- };
-
--static struct platform_device ezx_bp_device = {
-+static struct platform_device ezxbp_device = {
- .name = "ezx-bp",
- .dev = {
- //.parent =
- //.platform_data =
- },
- .id = -1,
-- .num_resources = ARRAY_SIZE(ezx_bp_resources),
-- .resource = ezx_bp_resources,
-+ .num_resources = ARRAY_SIZE(ezxbp_resources),
-+ .resource = ezxbp_resources,
- };
-
- static void __init ezx_init_gpio_irq(void)
-@@ -297,7 +315,8 @@
-
- static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
-- &ezx_bp_device,
-+ &ezxpcap_device,
-+ &ezxbp_device,
- };
-
- static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch b/packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch
deleted file mode 100644
index f7884ca524..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/mux-fix-makefile.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Index: linux-2.6.20.7/drivers/char/Makefile
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/Makefile 2007-04-22 10:51:23.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/Makefile 2007-04-22 10:52:48.000000000 +0200
-@@ -101,7 +101,8 @@
- obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
- obj-$(CONFIG_TCG_TPM) += tpm/
-
--obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
-+obj-$(CONFIG_TS0710_MUX_USB) += ts0710_mux_usb.o
-+obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o
-
-
- # Files generated that shall be removed upon make clean
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch b/packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch
deleted file mode 100644
index f9ad633c76..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/mux-ifdef-ezx-features.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-diff -pruN linux-2.6.20.7/drivers/char/ts0710_mux_usb.c linux-2.6.20.7_x386/drivers/char/ts0710_mux_usb.c
---- linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-22 10:51:38.000000000 +0200
-+++ linux-2.6.20.7_x386/drivers/char/ts0710_mux_usb.c 2007-04-22 11:44:54.000000000 +0200
-@@ -35,10 +35,14 @@
- #include <linux/list.h>
- #include <linux/errno.h>
- #include <asm/uaccess.h>
-+
-+#ifdef CONFIG_PXA_EZX
- #include <asm/hardware.h>
- #include <asm/arch/hardware.h>
- #include <asm/arch-pxa/pxa-regs.h>
- #include <asm/arch-pxa/ezx.h>
-+#endif
-+
- #include <linux/slab.h>
- #include <linux/miscdevice.h>
- #include <linux/init.h>
-@@ -341,8 +345,10 @@ static void usb_ipc_write_bulk(struct ur
-
- static void wakeup_timeout(unsigned long data)
- {
-+#ifdef CONFIG_PXA_EZX
- GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
- bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
-+#endif
- }
-
- static void suspend_timeout(unsigned long data)
-@@ -353,10 +359,12 @@ static void suspend_timeout(unsigned lon
- bvd_dbg("suspend_timeout: add the suspend timer again");
- } else {
- unlink_urbs(&bvd_ipc->readurb_mux);
-+#ifdef CONFIG_PXA_EZX
- UHCRHPS3 = 0x4;
- mdelay(40);
- bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
- UHCRHPS3);
-+#endif
- }
- }
-
-@@ -404,6 +412,7 @@ static void ipcusb_xmit_data(void)
- bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
- bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
-
-+#ifdef CONFIG_PXA_EZX
- if ((UHCRHPS3 & 0x4) == 0x4) {
- static int ret;
- int time = 0;
-@@ -442,6 +451,7 @@ static void ipcusb_xmit_data(void)
- "failed! status=%d\n", ret);
- bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
- }
-+#endif
-
- sumbit_times++;
- bvd_ipc->write_finished_flag = 0;
-@@ -464,12 +474,16 @@ static void usbipc_bh_func(unsigned long
-
- static void usbipc_bh_bp_func(unsigned long param)
- {
-+#ifdef CONFIG_PXA_EZX
- if ((UHCRHPS3 & 0x4) == 0x4) {
- UHCRHPS3 = 0x8;
-+#endif
- mdelay(40);
-+#ifdef CONFIG_PXA_EZX
- bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
- "UHCRHPS3=0x%x", UHCRHPS3);
- }
-+#endif
- if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
- //get_halted_bit();
-
-@@ -734,7 +748,9 @@ static void usb_ipc_disconnect(struct us
- printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
-
- //FIXME: Memory leak?
-+#ifdef CONFIG_PXA_EZX
- if ((UHCRHPS3 & 0x4) == 0)
-+#endif
- // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
-
- //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch b/packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch
deleted file mode 100644
index bc6e3972b6..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/mux-linux-2.6.20.7-fix.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-diff -pruN linux-2.6.20.7/drivers/char/ts0710.h linux-2.6.20.7_x386/drivers/char/ts0710.h
---- linux-2.6.20.7/drivers/char/ts0710.h 2007-04-22 10:51:23.000000000 +0200
-+++ linux-2.6.20.7_x386/drivers/char/ts0710.h 2007-04-22 11:16:37.000000000 +0200
-@@ -45,7 +45,7 @@
- * 11/18/2002 Modified
- */
-
--#include <linux/config.h>
-+//#include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/errno.h>
-@@ -58,7 +58,7 @@
- #include <linux/major.h>
- #include <linux/mm.h>
- #include <linux/init.h>
--#include <linux/devfs_fs_kernel.h>
-+//#include <linux/devfs_fs_kernel.h>
-
- #include <asm/uaccess.h>
- #include <asm/system.h>
-diff -pruN linux-2.6.20.7/drivers/char/ts0710_mux.c linux-2.6.20.7_x386/drivers/char/ts0710_mux.c
---- linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 10:53:05.000000000 +0200
-+++ linux-2.6.20.7_x386/drivers/char/ts0710_mux.c 2007-04-22 11:20:07.000000000 +0200
-@@ -46,7 +46,7 @@
- * 11/18/2002 Second version
- * 04/21/2004 Add GPRS PROC
- */
--#include <linux/config.h>
-+//#include <linux/config.h>
- #include <linux/module.h>
- #include <linux/types.h>
-
-@@ -70,7 +70,7 @@
- #include <linux/mm.h>
- #include <linux/slab.h>
- #include <linux/init.h>
--#include <linux/devfs_fs_kernel.h>
-+//#include <linux/devfs_fs_kernel.h>
- //#include <syslog.h>
-
- #include <asm/uaccess.h>
-@@ -1894,11 +1894,14 @@ int ts0710_recv_data(ts0710_con * ts0710
- if (test_bit(TTY_THROTTLED, &tty->flags)) {
- queue_data = 1;
- } else {
-+ /*
- if (test_bit
- (TTY_DONT_FLIP, &tty->flags)) {
- queue_data = 1;
- post_recv = 1;
-- } else if (recv_info->total) {
-+ } else
-+ */
-+ if (recv_info->total) {
- queue_data = 1;
- post_recv = 1;
- } else if (recv_room < uih_len) {
-@@ -3499,11 +3502,14 @@ static void post_recv_worker(void *priva
- if (test_bit(TTY_THROTTLED, &tty->flags)) {
- add_post_recv_queue(&post_recv_q, recv_info);
- continue;
-- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ }
-+ /*
-+ else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
- post_recv = 1;
- add_post_recv_queue(&post_recv_q, recv_info);
- continue;
- }
-+ */
-
- flow_control = 0;
- recv_packet2 = recv_info->mux_packet;
-@@ -3893,9 +3899,9 @@ static int __init mux_init(void)
- }
- post_recv_count_flag = 0;
-
-- INIT_WORK(&send_tqueue, send_worker, NULL);
-- INIT_WORK(&receive_tqueue, receive_worker, NULL);
-- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
-+ INIT_WORK(&send_tqueue, send_worker);
-+ INIT_WORK(&receive_tqueue, receive_worker);
-+ INIT_WORK(&post_recv_tqueue, post_recv_worker);
-
- mux_driver = alloc_tty_driver(NR_MUXS);
- if (!mux_driver)
-@@ -3904,7 +3910,7 @@ static int __init mux_init(void)
- mux_driver->owner = THIS_MODULE;
- mux_driver->driver_name = "ts0710mux";
- mux_driver->name = "mux";
-- mux_driver->devfs_name = "mux";
-+ //mux_driver->devfs_name = "mux";
- mux_driver->major = TS0710MUX_MAJOR;
- mux_driver->minor_start = TS0710MUX_MINOR_START;
- mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux_cli.patch b/packages/linux/linux-ezx-2.6.20.7/mux_cli.patch
deleted file mode 100644
index c86e3b40e4..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/mux_cli.patch
+++ /dev/null
@@ -1,5395 +0,0 @@
-Index: linux-2.6.20.7/drivers/char/Kconfig
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/Kconfig 2007-04-13 22:48:14.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/Kconfig 2007-04-21 18:04:56.000000000 +0200
-@@ -1030,5 +1030,17 @@
- sysfs directory, /sys/devices/platform/telco_clock, with a number of
- files for controlling the behavior of this hardware.
-
-+config TS0710_MUX
-+ tristate "GSM TS 07.10 Multiplex driver"
-+ help
-+ This implements the GSM 07.10 multiplex.
-+
-+config TS0710_MUX_USB
-+ tristate "Motorola USB support for TS 07.10 Multiplex driver"
-+ depends on TS0710_MUX
-+ help
-+ This ads support for TS 07.10 over USB, as found in motorola
-+ Smartphones.
-+
- endmenu
-
-Index: linux-2.6.20.7/drivers/char/Makefile
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/Makefile 2007-04-13 22:48:14.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/Makefile 2007-04-21 18:06:42.000000000 +0200
-@@ -101,6 +101,9 @@
- obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o
- obj-$(CONFIG_TCG_TPM) += tpm/
-
-+obj-$(CONFIG_TS0710_MUX) += ts0710_mux.o ts0710_mux_usb.o
-+
-+
- # Files generated that shall be removed upon make clean
- clean-files := consolemap_deftbl.c defkeymap.c
-
-Index: linux-2.6.20.7/drivers/char/ts0710.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/char/ts0710.h 2007-04-21 18:04:56.000000000 +0200
-@@ -0,0 +1,368 @@
-+/*
-+ * File: ts0710.h
-+ *
-+ * Portions derived from rfcomm.c, original header as follows:
-+ *
-+ * Copyright (C) 2000, 2001 Axis Communications AB
-+ *
-+ * Author: Mats Friden <mats.friden@axis.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Exceptionally, Axis Communications AB grants discretionary and
-+ * conditional permissions for additional use of the text contained
-+ * in the company's release of the AXIS OpenBT Stack under the
-+ * provisions set forth hereunder.
-+ *
-+ * Provided that, if you use the AXIS OpenBT Stack with other files,
-+ * that do not implement functionality as specified in the Bluetooth
-+ * System specification, to produce an executable, this does not by
-+ * itself cause the resulting executable to be covered by the GNU
-+ * General Public License. Your use of that executable is in no way
-+ * restricted on account of using the AXIS OpenBT Stack code with it.
-+ *
-+ * This exception does not however invalidate any other reasons why
-+ * the executable file might be covered by the provisions of the GNU
-+ * General Public License.
-+ *
-+ */
-+/*
-+ * Copyright (C) 2002 Motorola
-+ *
-+ * 07/28/2002 Initial version based on rfcomm.c
-+ * 11/18/2002 Modified
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+
-+#include <linux/errno.h>
-+#include <linux/sched.h>
-+#include <linux/interrupt.h>
-+#include <linux/tty.h>
-+#include <linux/tty_flip.h>
-+#include <linux/fcntl.h>
-+#include <linux/string.h>
-+#include <linux/major.h>
-+#include <linux/mm.h>
-+#include <linux/init.h>
-+#include <linux/devfs_fs_kernel.h>
-+
-+#include <asm/uaccess.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+
-+#include <asm/byteorder.h>
-+#include <asm/types.h>
-+
-+#define TS0710_MAX_CHN 14
-+
-+#define SET_PF(ctr) ((ctr) | (1 << 4))
-+#define CLR_PF(ctr) ((ctr) & 0xef)
-+#define GET_PF(ctr) (((ctr) >> 4) & 0x1)
-+
-+#define GET_PN_MSG_FRAME_SIZE(pn) ( ((pn)->frame_sizeh << 8) | ((pn)->frame_sizel))
-+#define SET_PN_MSG_FRAME_SIZE(pn, size) ({ (pn)->frame_sizel = (size) & 0xff; \
-+ (pn)->frame_sizeh = (size) >> 8; })
-+
-+#define GET_LONG_LENGTH(a) ( ((a).h_len << 7) | ((a).l_len) )
-+#define SET_LONG_LENGTH(a, length) ({ (a).ea = 0; \
-+ (a).l_len = length & 0x7F; \
-+ (a).h_len = (length >> 7) & 0xFF; })
-+
-+#define SHORT_CRC_CHECK 3
-+#define LONG_CRC_CHECK 4
-+
-+/* FIXME: Should thsi one be define here? */
-+#define SHORT_PAYLOAD_SIZE 127
-+
-+#define EA 1
-+#define FCS_SIZE 1
-+#define FLAG_SIZE 2
-+
-+#define TS0710_MAX_HDR_SIZE 5
-+#define DEF_TS0710_MTU 256
-+
-+#define TS0710_BASIC_FLAG 0xF9
-+/* the control field */
-+#define SABM 0x2f
-+#define SABM_SIZE 4
-+#define UA 0x63
-+#define UA_SIZE 4
-+#define DM 0x0f
-+#define DISC 0x43
-+#define UIH 0xef
-+
-+/* the type field in a multiplexer command packet */
-+#define TEST 0x8
-+#define FCON 0x28
-+#define FCOFF 0x18
-+#define MSC 0x38
-+#define RPN 0x24
-+#define RLS 0x14
-+#define PN 0x20
-+#define NSC 0x4
-+
-+/* V.24 modem control signals */
-+#define FC 0x2
-+#define RTC 0x4
-+#define RTR 0x8
-+#define IC 0x40
-+#define DV 0x80
-+
-+#define CTRL_CHAN 0 /* The control channel is defined as DLCI 0 */
-+#define MCC_CMD 1 /* Multiplexer command cr */
-+#define MCC_RSP 0 /* Multiplexer response cr */
-+
-+#ifdef __LITTLE_ENDIAN_BITFIELD
-+
-+typedef struct {
-+ __u8 ea:1;
-+ __u8 cr:1;
-+ __u8 d:1;
-+ __u8 server_chn:5;
-+} __attribute__ ((packed)) address_field;
-+
-+typedef struct {
-+ __u8 ea:1;
-+ __u8 len:7;
-+} __attribute__ ((packed)) short_length;
-+
-+typedef struct {
-+ __u8 ea:1;
-+ __u8 l_len:7;
-+ __u8 h_len;
-+} __attribute__ ((packed)) long_length;
-+
-+typedef struct {
-+ address_field addr;
-+ __u8 control;
-+ short_length length;
-+} __attribute__ ((packed)) short_frame_head;
-+
-+typedef struct {
-+ short_frame_head h;
-+ __u8 data[0];
-+} __attribute__ ((packed)) short_frame;
-+
-+typedef struct {
-+ address_field addr;
-+ __u8 control;
-+ long_length length;
-+ __u8 data[0];
-+} __attribute__ ((packed)) long_frame_head;
-+
-+typedef struct {
-+ long_frame_head h;
-+ __u8 data[0];
-+} __attribute__ ((packed)) long_frame;
-+
-+/* Typedefinitions for structures used for the multiplexer commands */
-+typedef struct {
-+ __u8 ea:1;
-+ __u8 cr:1;
-+ __u8 type:6;
-+} __attribute__ ((packed)) mcc_type;
-+
-+typedef struct {
-+ mcc_type type;
-+ short_length length;
-+ __u8 value[0];
-+} __attribute__ ((packed)) mcc_short_frame_head;
-+
-+typedef struct {
-+ mcc_short_frame_head h;
-+ __u8 value[0];
-+} __attribute__ ((packed)) mcc_short_frame;
-+
-+typedef struct {
-+ mcc_type type;
-+ long_length length;
-+ __u8 value[0];
-+} __attribute__ ((packed)) mcc_long_frame_head;
-+
-+typedef struct {
-+ mcc_long_frame_head h;
-+ __u8 value[0];
-+} __attribute__ ((packed)) mcc_long_frame;
-+
-+/* MSC-command */
-+typedef struct {
-+ __u8 ea:1;
-+ __u8 fc:1;
-+ __u8 rtc:1;
-+ __u8 rtr:1;
-+ __u8 reserved:2;
-+ __u8 ic:1;
-+ __u8 dv:1;
-+} __attribute__ ((packed)) v24_sigs;
-+
-+typedef struct {
-+ __u8 ea:1;
-+ __u8 b1:1;
-+ __u8 b2:1;
-+ __u8 b3:1;
-+ __u8 len:4;
-+} __attribute__ ((packed)) brk_sigs;
-+
-+typedef struct {
-+ short_frame_head s_head;
-+ mcc_short_frame_head mcc_s_head;
-+ address_field dlci;
-+ __u8 v24_sigs;
-+ //brk_sigs break_signals;
-+ __u8 fcs;
-+} __attribute__ ((packed)) msc_msg;
-+
-+#if 0
-+/* conflict with termios.h */
-+/* RPN command */
-+#define B2400 0
-+#define B4800 1
-+#define B7200 2
-+#define B9600 3
-+#define B19200 4
-+#define B38400 5
-+#define B57600 6
-+#define B115200 7
-+#define D230400 8
-+#endif
-+
-+/*
-+typedef struct{
-+ __u8 bit_rate:1;
-+ __u8 data_bits:1;
-+ __u8 stop_bit:1;
-+ __u8 parity:1;
-+ __u8 parity_type:1;
-+ __u8 xon_u8:1;
-+ __u8 xoff_u8:1;
-+ __u8 res1:1;
-+ __u8 xon_input:1;
-+ __u8 xon_output:1;
-+ __u8 rtr_input:1;
-+ __u8 rtr_output:1;
-+ __u8 rtc_input:1;
-+ __u8 rtc_output:1;
-+ __u8 res2:2;
-+} __attribute__((packed)) parameter_mask;
-+
-+typedef struct{
-+ __u8 bit_rate;
-+ __u8 data_bits:2;
-+ __u8 stop_bit:1;
-+ __u8 parity:1;
-+ __u8 parity_type:2;
-+ __u8 res1:2;
-+ __u8 xon_input:1;
-+ __u8 xon_output:1;
-+ __u8 rtr_input:1;
-+ __u8 rtr_output:1;
-+ __u8 rtc_input:1;
-+ __u8 rtc_output:1;
-+ __u8 res2:2;
-+ __u8 xon_u8;
-+ __u8 xoff_u8;
-+ parameter_mask pm;
-+} __attribute__((packed)) rpn_values;
-+
-+typedef struct{
-+ short_frame_head s_head;
-+ mcc_short_frame_head mcc_s_head;
-+ address_field dlci;
-+ rpn_values rpn_val;
-+ __u8 fcs;
-+} __attribute__((packed)) rpn_msg;
-+*/
-+
-+/* RLS-command */
-+/*
-+typedef struct{
-+ short_frame_head s_head;
-+ mcc_short_frame_head mcc_s_head;
-+ address_field dlci;
-+ __u8 error:4;
-+ __u8 res:4;
-+ __u8 fcs;
-+} __attribute__((packed)) rls_msg;
-+*/
-+
-+/* PN-command */
-+typedef struct {
-+ short_frame_head s_head;
-+ mcc_short_frame_head mcc_s_head;
-+ __u8 dlci:6;
-+ __u8 res1:2;
-+ __u8 frame_type:4;
-+ __u8 credit_flow:4;
-+ __u8 prior:6;
-+ __u8 res2:2;
-+ __u8 ack_timer;
-+ __u8 frame_sizel;
-+ __u8 frame_sizeh;
-+ __u8 max_nbrof_retrans;
-+ __u8 credits;
-+ __u8 fcs;
-+} __attribute__ ((packed)) pn_msg;
-+
-+/* NSC-command */
-+typedef struct {
-+ short_frame_head s_head;
-+ mcc_short_frame_head mcc_s_head;
-+ mcc_type command_type;
-+ __u8 fcs;
-+} __attribute__ ((packed)) nsc_msg;
-+
-+#else
-+#error Only littel-endianess supported now!
-+#endif
-+
-+enum {
-+ REJECTED = 0,
-+ DISCONNECTED,
-+ CONNECTING,
-+ NEGOTIATING,
-+ CONNECTED,
-+ DISCONNECTING,
-+ FLOW_STOPPED
-+};
-+
-+enum ts0710_events {
-+ CONNECT_IND,
-+ CONNECT_CFM,
-+ DISCONN_CFM
-+};
-+
-+typedef struct {
-+ volatile __u8 state;
-+ volatile __u8 flow_control;
-+ volatile __u8 initiated;
-+ volatile __u8 initiator;
-+ volatile __u16 mtu;
-+ wait_queue_head_t open_wait;
-+ wait_queue_head_t close_wait;
-+} dlci_struct;
-+
-+/* user space interfaces */
-+typedef struct {
-+ volatile __u8 initiator;
-+ volatile __u8 c_dlci;
-+ volatile __u16 mtu;
-+ volatile __u8 be_testing;
-+ volatile __u32 test_errs;
-+ wait_queue_head_t test_wait;
-+
-+ dlci_struct dlci[TS0710_MAX_CHN];
-+} ts0710_con;
-Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-21 18:08:02.000000000 +0200
-@@ -0,0 +1,3966 @@
-+/*
-+ * File: mux_driver.c
-+ *
-+ * Portions derived from rfcomm.c, original header as follows:
-+ *
-+ * Copyright (C) 2000, 2001 Axis Communications AB
-+ *
-+ * Author: Mats Friden <mats.friden@axis.com>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * Exceptionally, Axis Communications AB grants discretionary and
-+ * conditional permissions for additional use of the text contained
-+ * in the company's release of the AXIS OpenBT Stack under the
-+ * provisions set forth hereunder.
-+ *
-+ * Provided that, if you use the AXIS OpenBT Stack with other files,
-+ * that do not implement functionality as specified in the Bluetooth
-+ * System specification, to produce an executable, this does not by
-+ * itself cause the resulting executable to be covered by the GNU
-+ * General Public License. Your use of that executable is in no way
-+ * restricted on account of using the AXIS OpenBT Stack code with it.
-+ *
-+ * This exception does not however invalidate any other reasons why
-+ * the executable file might be covered by the provisions of the GNU
-+ * General Public License.
-+ *
-+ */
-+/*
-+ * Copyright (C) 2002-2004 Motorola
-+ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
-+ *
-+ * 07/28/2002 Initial version
-+ * 11/18/2002 Second version
-+ * 04/21/2004 Add GPRS PROC
-+ */
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/types.h>
-+
-+#include <linux/kernel.h>
-+#include <linux/proc_fs.h>
-+
-+#define USB_FOR_MUX
-+
-+#ifndef USB_FOR_MUX
-+#include <linux/serial.h>
-+#endif
-+
-+#include <linux/errno.h>
-+#include <linux/sched.h>
-+#include <linux/interrupt.h>
-+#include <linux/tty.h>
-+#include <linux/tty_flip.h>
-+#include <linux/fcntl.h>
-+#include <linux/string.h>
-+#include <linux/major.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/devfs_fs_kernel.h>
-+//#include <syslog.h>
-+
-+#include <asm/uaccess.h>
-+#include <asm/system.h>
-+#include <asm/bitops.h>
-+
-+#ifdef USB_FOR_MUX
-+//#include <linux/usb.h>
-+#include "ts0710_mux_usb.h"
-+#endif
-+
-+#include "ts0710.h"
-+#include "ts0710_mux.h"
-+
-+#define TS0710MUX_GPRS_SESSION_MAX 2
-+#define TS0710MUX_MAJOR 250
-+#define TS0710MUX_MINOR_START 0
-+#define NR_MUXS 16
-+
-+ /*#define TS0710MUX_TIME_OUT 30 *//* 300ms */
-+#define TS0710MUX_TIME_OUT 250 /* 2500ms, for BP UART hardware flow control AP UART */
-+
-+#define TS0710MUX_IO_DLCI_FC_ON 0x54F2
-+#define TS0710MUX_IO_DLCI_FC_OFF 0x54F3
-+#define TS0710MUX_IO_FC_ON 0x54F4
-+#define TS0710MUX_IO_FC_OFF 0x54F5
-+
-+#define TS0710MUX_MAX_BUF_SIZE 2048
-+
-+#define TS0710MUX_SEND_BUF_OFFSET 10
-+#define TS0710MUX_SEND_BUF_SIZE (DEF_TS0710_MTU + TS0710MUX_SEND_BUF_OFFSET + 34)
-+#define TS0710MUX_RECV_BUF_SIZE TS0710MUX_SEND_BUF_SIZE
-+
-+/*For BP UART problem Begin*/
-+#ifdef TS0710SEQ2
-+#define ACK_SPACE 66 /* 6 * 11(ACK frame size) */
-+#else
-+#define ACK_SPACE 42 /* 6 * 7(ACK frame size) */
-+#endif
-+/*For BP UART problem End*/
-+
-+ /*#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE)*//* For BP UART problem */
-+#define TS0710MUX_SERIAL_BUF_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + ACK_SPACE) /* For BP UART problem: ACK_SPACE */
-+
-+#define TS0710MUX_MAX_TOTAL_FRAME_SIZE (DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE + FLAG_SIZE)
-+#define TS0710MUX_MAX_CHARS_IN_BUF 65535
-+#define TS0710MUX_THROTTLE_THRESHOLD DEF_TS0710_MTU
-+
-+#define TEST_PATTERN_SIZE 250
-+
-+#define CMDTAG 0x55
-+#define DATATAG 0xAA
-+
-+#define ACK 0x4F /*For BP UART problem */
-+
-+/*For BP UART problem Begin*/
-+#ifdef TS0710SEQ2
-+#define FIRST_BP_SEQ_OFFSET 1 /*offset from start flag */
-+#define SECOND_BP_SEQ_OFFSET 2 /*offset from start flag */
-+#define FIRST_AP_SEQ_OFFSET 3 /*offset from start flag */
-+#define SECOND_AP_SEQ_OFFSET 4 /*offset from start flag */
-+#define SLIDE_BP_SEQ_OFFSET 5 /*offset from start flag */
-+#define SEQ_FIELD_SIZE 5
-+#else
-+#define SLIDE_BP_SEQ_OFFSET 1 /*offset from start flag */
-+#define SEQ_FIELD_SIZE 1
-+#endif
-+
-+#define ADDRESS_FIELD_OFFSET (1 + SEQ_FIELD_SIZE) /*offset from start flag */
-+/*For BP UART problem End*/
-+
-+#ifndef UNUSED_PARAM
-+#define UNUSED_PARAM(v) (void)(v)
-+#endif
-+
-+#define TS0710MUX_GPRS1_DLCI 7
-+#define TS0710MUX_GPRS2_DLCI 8
-+
-+#define TS0710MUX_GPRS1_RECV_COUNT_IDX 0
-+#define TS0710MUX_GPRS1_SEND_COUNT_IDX 1
-+#define TS0710MUX_GPRS2_RECV_COUNT_IDX 2
-+#define TS0710MUX_GPRS2_SEND_COUNT_IDX 3
-+#define TS0710MUX_COUNT_MAX_IDX 3
-+#define TS0710MUX_COUNT_IDX_NUM (TS0710MUX_COUNT_MAX_IDX + 1)
-+
-+static volatile int mux_data_count[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
-+static volatile int mux_data_count2[TS0710MUX_COUNT_IDX_NUM] = { 0, 0, 0, 0 };
-+static struct semaphore mux_data_count_mutex[TS0710MUX_COUNT_IDX_NUM];
-+static volatile __u8 post_recv_count_flag = 0;
-+
-+/*PROC file*/
-+struct proc_dir_entry *gprs_proc_file = NULL;
-+ssize_t file_proc_read(struct file *file, char *buf, size_t size,
-+ loff_t * ppos);
-+ssize_t file_proc_write(struct file *file, const char *buf, size_t count,
-+ loff_t * ppos);
-+struct file_operations file_proc_operations = {
-+ read:file_proc_read,
-+ write:file_proc_write,
-+};
-+typedef struct {
-+ int recvBytes;
-+ int sentBytes;
-+} gprs_bytes;
-+
-+static __u8 tty2dlci[NR_MUXS] =
-+ { 1, 2, 3, 4, 5, 6, 7, 8, 6, 7, 8, 9, 10, 11, 12, 13 };
-+static __u8 iscmdtty[NR_MUXS] =
-+ { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
-+typedef struct {
-+ __u8 cmdtty;
-+ __u8 datatty;
-+} dlci_tty;
-+static dlci_tty dlci2tty[] = { {0, 0}, /* DLCI 0 */
-+{0, 0}, /* DLCI 1 */
-+{1, 1}, /* DLCI 2 */
-+{2, 2}, /* DLCI 3 */
-+{3, 3}, /* DLCI 4 */
-+{4, 4}, /* DLCI 5 */
-+{5, 8}, /* DLCI 6 */
-+{6, 9}, /* DLCI 7 */
-+{7, 10}, /* DLCI 8 */
-+{11, 11}, /* DLCI 9 */
-+{12, 12}, /* DLCI 10 */
-+{13, 13}, /* DLCI 11 */
-+{14, 14}, /* DLCI 12 */
-+{15, 15}
-+}; /* DLCI 13 */
-+
-+typedef struct {
-+ volatile __u8 buf[TS0710MUX_SEND_BUF_SIZE];
-+ volatile __u8 *frame;
-+ unsigned long flags;
-+ volatile __u16 length;
-+ volatile __u8 filled;
-+ volatile __u8 dummy; /* Allignment to 4*n bytes */
-+} mux_send_struct;
-+
-+/* Bit number in flags of mux_send_struct */
-+#define BUF_BUSY 0
-+
-+struct mux_recv_packet_tag {
-+ __u8 *data;
-+ __u32 length;
-+ struct mux_recv_packet_tag *next;
-+};
-+typedef struct mux_recv_packet_tag mux_recv_packet;
-+
-+struct mux_recv_struct_tag {
-+ __u8 data[TS0710MUX_RECV_BUF_SIZE];
-+ __u32 length;
-+ __u32 total;
-+ mux_recv_packet *mux_packet;
-+ struct mux_recv_struct_tag *next;
-+ int no_tty;
-+ volatile __u8 post_unthrottle;
-+};
-+typedef struct mux_recv_struct_tag mux_recv_struct;
-+
-+#define RECV_RUNNING 0
-+static unsigned long mux_recv_flags = 0;
-+
-+static mux_send_struct *mux_send_info[NR_MUXS];
-+static volatile __u8 mux_send_info_flags[NR_MUXS];
-+static volatile __u8 mux_send_info_idx = NR_MUXS;
-+
-+static mux_recv_struct *mux_recv_info[NR_MUXS];
-+static volatile __u8 mux_recv_info_flags[NR_MUXS];
-+static mux_recv_struct *mux_recv_queue = NULL;
-+
-+static struct tty_driver mux_driver;
-+
-+#ifdef USB_FOR_MUX
-+#define COMM_FOR_MUX_DRIVER usb_for_mux_driver
-+#define COMM_FOR_MUX_TTY usb_for_mux_tty
-+#define COMM_MUX_DISPATCHER usb_mux_dispatcher
-+#define COMM_MUX_SENDER usb_mux_sender
-+#else
-+#define COMM_FOR_MUX_DRIVER serial_for_mux_driver
-+#define COMM_FOR_MUX_TTY serial_for_mux_tty
-+#define COMM_MUX_DISPATCHER serial_mux_dispatcher
-+#define COMM_MUX_SENDER serial_mux_sender
-+
-+extern struct list_head *tq_serial_for_mux;
-+#endif
-+
-+extern struct tty_driver *COMM_FOR_MUX_DRIVER;
-+extern struct tty_struct *COMM_FOR_MUX_TTY;
-+extern void (*COMM_MUX_DISPATCHER) (struct tty_struct * tty);
-+extern void (*COMM_MUX_SENDER) (void);
-+
-+static struct work_struct send_tqueue;
-+static struct work_struct receive_tqueue;
-+static struct work_struct post_recv_tqueue;
-+
-+static struct tty_struct *mux_table[NR_MUXS];
-+static struct termios *mux_termios[NR_MUXS];
-+static struct termios *mux_termios_locked[NR_MUXS];
-+static volatile short int mux_tty[NR_MUXS];
-+
-+#ifdef min
-+#undef min
-+#define min(a,b) ( (a)<(b) ? (a):(b) )
-+#endif
-+
-+static int get_count(__u8 idx);
-+static int set_count(__u8 idx, int count);
-+static int add_count(__u8 idx, int count);
-+
-+static int send_ua(ts0710_con * ts0710, __u8 dlci);
-+static int send_dm(ts0710_con * ts0710, __u8 dlci);
-+static int send_sabm(ts0710_con * ts0710, __u8 dlci);
-+static int send_disc(ts0710_con * ts0710, __u8 dlci);
-+static void queue_uih(mux_send_struct * send_info, __u16 len,
-+ ts0710_con * ts0710, __u8 dlci);
-+static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
-+ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr);
-+static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr);
-+static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr);
-+
-+static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum);
-+static __u8 crc_calc(__u8 * data, __u32 length);
-+static void create_crctable(__u8 table[]);
-+
-+static void mux_sched_send(void);
-+
-+static __u8 crctable[256];
-+
-+static ts0710_con ts0710_connection;
-+/*
-+static rpn_values rpn_val;
-+*/
-+
-+static int valid_dlci(__u8 dlci)
-+{
-+ if ((dlci < TS0710_MAX_CHN) && (dlci > 0))
-+ return 1;
-+ else
-+ return 0;
-+}
-+
-+#ifdef TS0710DEBUG
-+
-+#ifdef PRINT_OUTPUT_PRINTK
-+#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
-+#else
-+#include "ezxlog.h"
-+static __u8 strDebug[256];
-+#define TS0710_DEBUG(fmt, arg...) ({ snprintf(strDebug, sizeof(strDebug), "MUX " __FUNCTION__ ": " fmt "\n" , ## arg); \
-+ /*printk("%s", strDebug)*/ezxlogk("MX", strDebug, strlen(strDebug)); })
-+#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
-+
-+#else
-+#define TS0710_DEBUG(fmt...)
-+#endif /* End #ifdef TS0710DEBUG */
-+
-+#ifdef TS0710LOG
-+static unsigned char g_tbuf[TS0710MUX_MAX_BUF_SIZE];
-+#ifdef PRINT_OUTPUT_PRINTK
-+#define TS0710_LOG(fmt, arg...) printk(fmt, ## arg)
-+#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
-+#else
-+#include "ezxlog.h"
-+static __u8 strLog[256];
-+#define TS0710_LOG(fmt, arg...) ({ snprintf(strLog, sizeof(strLog), fmt, ## arg); \
-+ /*printk("%s", strLog)*/ezxlogk("MX", strLog, strlen(strLog)); })
-+#define TS0710_PRINTK(fmt, arg...) ({ printk(fmt, ## arg); \
-+ TS0710_LOG(fmt, ## arg); })
-+#endif /* End #ifdef PRINT_OUTPUT_PRINTK */
-+
-+#else
-+#define TS0710_LOG(fmt...)
-+#define TS0710_PRINTK(fmt, arg...) printk(fmt, ## arg)
-+#endif /* End #ifdef TS0710LOG */
-+
-+#ifdef TS0710DEBUG
-+static void TS0710_DEBUGHEX(__u8 * buf, int len)
-+{
-+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
-+
-+ int i;
-+ int c;
-+
-+ if (len <= 0) {
-+ return;
-+ }
-+
-+ c = 0;
-+ for (i = 0; (i < len) && (c < (TS0710MUX_MAX_BUF_SIZE - 3)); i++) {
-+ sprintf(&tbuf[c], "%02x ", buf[i]);
-+ c += 3;
-+ }
-+ tbuf[c] = 0;
-+
-+#ifdef PRINT_OUTPUT_PRINTK
-+ TS0710_DEBUG("%s", tbuf);
-+#else
-+ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, c);
-+#endif
-+}
-+static void TS0710_DEBUGSTR(__u8 * buf, int len)
-+{
-+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
-+
-+ if (len <= 0) {
-+ return;
-+ }
-+
-+ if (len > (TS0710MUX_MAX_BUF_SIZE - 1)) {
-+ len = (TS0710MUX_MAX_BUF_SIZE - 1);
-+ }
-+
-+ memcpy(tbuf, buf, len);
-+ tbuf[len] = 0;
-+
-+#ifdef PRINT_OUTPUT_PRINTK
-+ /* 0x00 byte in the string pointed by tbuf may truncate the print result */
-+ TS0710_DEBUG("%s", tbuf);
-+#else
-+ /*printk("%s\n", tbuf) */ ezxlogk("MX", tbuf, len);
-+#endif
-+}
-+#else
-+#define TS0710_DEBUGHEX(buf, len)
-+#define TS0710_DEBUGSTR(buf, len)
-+#endif /* End #ifdef TS0710DEBUG */
-+
-+#ifdef TS0710LOG
-+static void TS0710_LOGSTR_FRAME(__u8 send, __u8 * data, int len)
-+{
-+ short_frame *short_pkt;
-+ long_frame *long_pkt;
-+ __u8 *uih_data_start;
-+ __u32 uih_len;
-+ __u8 dlci;
-+ int pos;
-+
-+ if (len <= 0) {
-+ return;
-+ }
-+
-+ pos = 0;
-+ if (send) {
-+ pos += sprintf(&g_tbuf[pos], "<");
-+ short_pkt = (short_frame *) (data + 1); /*For BP UART problem */
-+ } else {
-+ /*For BP UART problem */
-+ /*pos += sprintf(&g_tbuf[pos], ">"); */
-+ pos += sprintf(&g_tbuf[pos], ">%d ", *(data + SLIDE_BP_SEQ_OFFSET)); /*For BP UART problem */
-+
-+#ifdef TS0710SEQ2
-+ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", *(data + FIRST_BP_SEQ_OFFSET), *(data + SECOND_BP_SEQ_OFFSET), *(data + FIRST_AP_SEQ_OFFSET), *(data + SECOND_AP_SEQ_OFFSET)); /*For BP UART problem */
-+#endif
-+
-+ short_pkt = (short_frame *) (data + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
-+ }
-+
-+ /*For BP UART problem */
-+ /*short_pkt = (short_frame *)(data + 1); */
-+
-+ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
-+ switch (CLR_PF(short_pkt->h.control)) {
-+ case SABM:
-+ pos += sprintf(&g_tbuf[pos], "C SABM %d ::", dlci);
-+ break;
-+ case UA:
-+ pos += sprintf(&g_tbuf[pos], "C UA %d ::", dlci);
-+ break;
-+ case DM:
-+ pos += sprintf(&g_tbuf[pos], "C DM %d ::", dlci);
-+ break;
-+ case DISC:
-+ pos += sprintf(&g_tbuf[pos], "C DISC %d ::", dlci);
-+ break;
-+
-+ /*For BP UART problem Begin */
-+ case ACK:
-+ pos += sprintf(&g_tbuf[pos], "C ACK %d ", short_pkt->data[0]);
-+
-+#ifdef TS0710SEQ2
-+ pos += sprintf(&g_tbuf[pos], "%02x %02x %02x %02x ", short_pkt->data[1], short_pkt->data[2], short_pkt->data[3], short_pkt->data[4]); /*For BP UART problem */
-+#endif
-+
-+ pos += sprintf(&g_tbuf[pos], "::");
-+ break;
-+ /*For BP UART problem End */
-+
-+ case UIH:
-+ if (!dlci) {
-+ pos += sprintf(&g_tbuf[pos], "C MCC %d ::", dlci);
-+ } else {
-+
-+ if ((short_pkt->h.length.ea) == 0) {
-+ long_pkt = (long_frame *) short_pkt;
-+ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
-+ uih_data_start = long_pkt->h.data;
-+ } else {
-+ uih_len = short_pkt->h.length.len;
-+ uih_data_start = short_pkt->data;
-+ }
-+ switch (*uih_data_start) {
-+ case CMDTAG:
-+ pos +=
-+ sprintf(&g_tbuf[pos], "I %d A %d ::", dlci,
-+ uih_len);
-+ break;
-+ case DATATAG:
-+ default:
-+ pos +=
-+ sprintf(&g_tbuf[pos], "I %d D %d ::", dlci,
-+ uih_len);
-+ break;
-+ }
-+
-+ }
-+ break;
-+ default:
-+ pos += sprintf(&g_tbuf[pos], "N!!! %d ::", dlci);
-+ break;
-+ }
-+
-+ if (len > (sizeof(g_tbuf) - pos - 1)) {
-+ len = (sizeof(g_tbuf) - pos - 1);
-+ }
-+
-+ memcpy(&g_tbuf[pos], data, len);
-+ pos += len;
-+ g_tbuf[pos] = 0;
-+
-+#ifdef PRINT_OUTPUT_PRINTK
-+ /* 0x00 byte in the string pointed by g_tbuf may truncate the print result */
-+ TS0710_LOG("%s\n", g_tbuf);
-+#else
-+ /*printk("%s\n", g_tbuf) */ ezxlogk("MX", g_tbuf, pos);
-+#endif
-+}
-+#else
-+#define TS0710_LOGSTR_FRAME(send, data, len)
-+#endif
-+
-+#ifdef TS0710SIG
-+#define my_for_each_task(p) \
-+ for ((p) = current; ((p) = (p)->next_task) != current; )
-+
-+static void TS0710_SIG2APLOGD(void)
-+{
-+ struct task_struct *p;
-+ static __u8 sig = 0;
-+
-+ if (sig) {
-+ return;
-+ }
-+
-+ read_lock(&tasklist_lock);
-+ my_for_each_task(p) {
-+ if (strncmp(p->comm, "aplogd", 6) == 0) {
-+ sig = 1;
-+ if (send_sig(SIGUSR2, p, 1) == 0) {
-+ TS0710_PRINTK
-+ ("MUX: success to send SIGUSR2 to aplogd!\n");
-+ } else {
-+ TS0710_PRINTK
-+ ("MUX: failure to send SIGUSR2 to aplogd!\n");
-+ }
-+ break;
-+ }
-+ }
-+ read_unlock(&tasklist_lock);
-+
-+ if (!sig) {
-+ TS0710_PRINTK("MUX: not found aplogd!\n");
-+ }
-+}
-+#else
-+#define TS0710_SIG2APLOGD()
-+#endif
-+
-+static int basic_write(ts0710_con * ts0710, __u8 * buf, int len)
-+{
-+ int res;
-+
-+ UNUSED_PARAM(ts0710);
-+
-+ buf[0] = TS0710_BASIC_FLAG;
-+ buf[len + 1] = TS0710_BASIC_FLAG;
-+
-+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
-+ TS0710_PRINTK
-+ ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
-+
-+#ifndef USB_FOR_MUX
-+ TS0710_PRINTK
-+ ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
-+ TS0710_SIG2APLOGD();
-+#endif
-+
-+ return -1;
-+ }
-+
-+ TS0710_LOGSTR_FRAME(1, buf, len + 2);
-+ TS0710_DEBUGHEX(buf, len + 2);
-+
-+ res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
-+
-+ if (res != len + 2) {
-+ TS0710_PRINTK("MUX basic_write: Write Error!\n");
-+ return -1;
-+ }
-+
-+ return len + 2;
-+}
-+
-+/* Functions for the crc-check and calculation */
-+
-+#define CRC_VALID 0xcf
-+
-+static __u32 crc_check(__u8 * data, __u32 length, __u8 check_sum)
-+{
-+ __u8 fcs = 0xff;
-+
-+ while (length--) {
-+ fcs = crctable[fcs ^ *data++];
-+ }
-+ fcs = crctable[fcs ^ check_sum];
-+ TS0710_DEBUG("fcs : %d\n", fcs);
-+ if (fcs == (uint) 0xcf) { /*CRC_VALID) */
-+ TS0710_DEBUG("crc_check: CRC check OK\n");
-+ return 0;
-+ } else {
-+ TS0710_PRINTK("MUX crc_check: CRC check failed\n");
-+ return 1;
-+ }
-+}
-+
-+/* Calculates the checksum according to the ts0710 specification */
-+
-+static __u8 crc_calc(__u8 * data, __u32 length)
-+{
-+ __u8 fcs = 0xff;
-+
-+ while (length--) {
-+ fcs = crctable[fcs ^ *data++];
-+ }
-+
-+ return 0xff - fcs;
-+}
-+
-+/* Calulates a reversed CRC table for the FCS check */
-+
-+static void create_crctable(__u8 table[])
-+{
-+ int i, j;
-+
-+ __u8 data;
-+ __u8 code_word = (__u8) 0xe0;
-+ __u8 sr = (__u8) 0;
-+
-+ for (j = 0; j < 256; j++) {
-+ data = (__u8) j;
-+
-+ for (i = 0; i < 8; i++) {
-+ if ((data & 0x1) ^ (sr & 0x1)) {
-+ sr >>= 1;
-+ sr ^= code_word;
-+ } else {
-+ sr >>= 1;
-+ }
-+
-+ data >>= 1;
-+ sr &= 0xff;
-+ }
-+
-+ table[j] = sr;
-+ sr = 0;
-+ }
-+}
-+
-+static void ts0710_reset_dlci(__u8 j)
-+{
-+ if (j >= TS0710_MAX_CHN)
-+ return;
-+
-+ ts0710_connection.dlci[j].state = DISCONNECTED;
-+ ts0710_connection.dlci[j].flow_control = 0;
-+ ts0710_connection.dlci[j].mtu = DEF_TS0710_MTU;
-+ ts0710_connection.dlci[j].initiated = 0;
-+ ts0710_connection.dlci[j].initiator = 0;
-+ init_waitqueue_head(&ts0710_connection.dlci[j].open_wait);
-+ init_waitqueue_head(&ts0710_connection.dlci[j].close_wait);
-+}
-+
-+static void ts0710_reset_con(void)
-+{
-+ __u8 j;
-+
-+ ts0710_connection.initiator = 0;
-+ ts0710_connection.mtu = DEF_TS0710_MTU + TS0710_MAX_HDR_SIZE;
-+ ts0710_connection.be_testing = 0;
-+ ts0710_connection.test_errs = 0;
-+ init_waitqueue_head(&ts0710_connection.test_wait);
-+
-+ for (j = 0; j < TS0710_MAX_CHN; j++) {
-+ ts0710_reset_dlci(j);
-+ }
-+}
-+
-+static void ts0710_init(void)
-+{
-+ create_crctable(crctable);
-+
-+ ts0710_reset_con();
-+
-+ /* Set the values in the rpn octets */
-+/*
-+ rpn_val.bit_rate = 7;
-+ rpn_val.data_bits = 3;
-+ rpn_val.stop_bit = 0;
-+ rpn_val.parity = 0;
-+ rpn_val.parity_type = 0;
-+ rpn_val.res1 = 0;
-+ rpn_val.xon_input = 0;
-+ rpn_val.xon_output = 0;
-+ rpn_val.rtr_input = 0;
-+ rpn_val.rtr_output = 0;
-+ rpn_val.rtc_input = 0;
-+ rpn_val.rtc_output = 0;
-+ rpn_val.res2 = 0;
-+ rpn_val.xon_u8 = 0x11;
-+ rpn_val.xoff_u8 = 0x13;
-+ memset(&rpn_val.pm, 0 , 2); *//* Set the mask to zero */
-+}
-+
-+static void ts0710_upon_disconnect(void)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ __u8 j;
-+
-+ for (j = 0; j < TS0710_MAX_CHN; j++) {
-+ ts0710->dlci[j].state = DISCONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[j].open_wait);
-+ wake_up_interruptible(&ts0710->dlci[j].close_wait);
-+ }
-+ ts0710->be_testing = 0;
-+ wake_up_interruptible(&ts0710->test_wait);
-+ ts0710_reset_con();
-+}
-+
-+/* Sending packet functions */
-+
-+/* Creates a UA packet and puts it at the beginning of the pkt pointer */
-+
-+static int send_ua(ts0710_con * ts0710, __u8 dlci)
-+{
-+ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
-+ short_frame *ua;
-+
-+ TS0710_DEBUG("send_ua: Creating UA packet to DLCI %d\n", dlci);
-+
-+ ua = (short_frame *) (buf + 1);
-+ ua->h.addr.ea = 1;
-+ ua->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
-+ ua->h.addr.d = (dlci) & 0x1;
-+ ua->h.addr.server_chn = (dlci) >> 0x1;
-+ ua->h.control = SET_PF(UA);
-+ ua->h.length.ea = 1;
-+ ua->h.length.len = 0;
-+ ua->data[0] = crc_calc((__u8 *) ua, SHORT_CRC_CHECK);
-+
-+ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
-+}
-+
-+/* Creates a DM packet and puts it at the beginning of the pkt pointer */
-+
-+static int send_dm(ts0710_con * ts0710, __u8 dlci)
-+{
-+ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
-+ short_frame *dm;
-+
-+ TS0710_DEBUG("send_dm: Creating DM packet to DLCI %d\n", dlci);
-+
-+ dm = (short_frame *) (buf + 1);
-+ dm->h.addr.ea = 1;
-+ dm->h.addr.cr = ((~(ts0710->initiator)) & 0x1);
-+ dm->h.addr.d = dlci & 0x1;
-+ dm->h.addr.server_chn = dlci >> 0x1;
-+ dm->h.control = SET_PF(DM);
-+ dm->h.length.ea = 1;
-+ dm->h.length.len = 0;
-+ dm->data[0] = crc_calc((__u8 *) dm, SHORT_CRC_CHECK);
-+
-+ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
-+}
-+
-+static int send_sabm(ts0710_con * ts0710, __u8 dlci)
-+{
-+ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
-+ short_frame *sabm;
-+
-+ TS0710_DEBUG("send_sabm: Creating SABM packet to DLCI %d\n", dlci);
-+
-+ sabm = (short_frame *) (buf + 1);
-+ sabm->h.addr.ea = 1;
-+ sabm->h.addr.cr = ((ts0710->initiator) & 0x1);
-+ sabm->h.addr.d = dlci & 0x1;
-+ sabm->h.addr.server_chn = dlci >> 0x1;
-+ sabm->h.control = SET_PF(SABM);
-+ sabm->h.length.ea = 1;
-+ sabm->h.length.len = 0;
-+ sabm->data[0] = crc_calc((__u8 *) sabm, SHORT_CRC_CHECK);
-+
-+ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
-+}
-+
-+static int send_disc(ts0710_con * ts0710, __u8 dlci)
-+{
-+ __u8 buf[sizeof(short_frame) + FCS_SIZE + FLAG_SIZE];
-+ short_frame *disc;
-+
-+ TS0710_DEBUG("send_disc: Creating DISC packet to DLCI %d\n", dlci);
-+
-+ disc = (short_frame *) (buf + 1);
-+ disc->h.addr.ea = 1;
-+ disc->h.addr.cr = ((ts0710->initiator) & 0x1);
-+ disc->h.addr.d = dlci & 0x1;
-+ disc->h.addr.server_chn = dlci >> 0x1;
-+ disc->h.control = SET_PF(DISC);
-+ disc->h.length.ea = 1;
-+ disc->h.length.len = 0;
-+ disc->data[0] = crc_calc((__u8 *) disc, SHORT_CRC_CHECK);
-+
-+ return basic_write(ts0710, buf, sizeof(short_frame) + FCS_SIZE);
-+}
-+
-+static void queue_uih(mux_send_struct * send_info, __u16 len,
-+ ts0710_con * ts0710, __u8 dlci)
-+{
-+ __u32 size;
-+
-+ TS0710_DEBUG
-+ ("queue_uih: Creating UIH packet with %d bytes data to DLCI %d\n",
-+ len, dlci);
-+
-+ if (len > SHORT_PAYLOAD_SIZE) {
-+ long_frame *l_pkt;
-+
-+ size = sizeof(long_frame) + len + FCS_SIZE;
-+ l_pkt = (long_frame *) (send_info->frame - sizeof(long_frame));
-+ set_uih_hdr((void *)l_pkt, dlci, len, ts0710->initiator);
-+ l_pkt->data[len] = crc_calc((__u8 *) l_pkt, LONG_CRC_CHECK);
-+ send_info->frame = ((__u8 *) l_pkt) - 1;
-+ } else {
-+ short_frame *s_pkt;
-+
-+ size = sizeof(short_frame) + len + FCS_SIZE;
-+ s_pkt =
-+ (short_frame *) (send_info->frame - sizeof(short_frame));
-+ set_uih_hdr((void *)s_pkt, dlci, len, ts0710->initiator);
-+ s_pkt->data[len] = crc_calc((__u8 *) s_pkt, SHORT_CRC_CHECK);
-+ send_info->frame = ((__u8 *) s_pkt) - 1;
-+ }
-+ send_info->length = size;
-+}
-+
-+/* Multiplexer command packets functions */
-+
-+/* Turns on the ts0710 flow control */
-+
-+static int ts0710_fcon_msg(ts0710_con * ts0710, __u8 cr)
-+{
-+ __u8 buf[30];
-+ mcc_short_frame *mcc_pkt;
-+ short_frame *uih_pkt;
-+ __u32 size;
-+
-+ size = sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE;
-+ uih_pkt = (short_frame *) (buf + 1);
-+ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
-+ ts0710->initiator);
-+ uih_pkt->data[sizeof(mcc_short_frame)] =
-+ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
-+ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
-+
-+ mcc_pkt->h.type.ea = EA;
-+ mcc_pkt->h.type.cr = cr;
-+ mcc_pkt->h.type.type = FCON;
-+ mcc_pkt->h.length.ea = EA;
-+ mcc_pkt->h.length.len = 0;
-+
-+ return basic_write(ts0710, buf, size);
-+}
-+
-+/* Turns off the ts0710 flow control */
-+
-+static int ts0710_fcoff_msg(ts0710_con * ts0710, __u8 cr)
-+{
-+ __u8 buf[30];
-+ mcc_short_frame *mcc_pkt;
-+ short_frame *uih_pkt;
-+ __u32 size;
-+
-+ size = (sizeof(short_frame) + sizeof(mcc_short_frame) + FCS_SIZE);
-+ uih_pkt = (short_frame *) (buf + 1);
-+ set_uih_hdr(uih_pkt, CTRL_CHAN, sizeof(mcc_short_frame),
-+ ts0710->initiator);
-+ uih_pkt->data[sizeof(mcc_short_frame)] =
-+ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
-+ mcc_pkt = (mcc_short_frame *) (uih_pkt->data);
-+
-+ mcc_pkt->h.type.ea = 1;
-+ mcc_pkt->h.type.cr = cr;
-+ mcc_pkt->h.type.type = FCOFF;
-+ mcc_pkt->h.length.ea = 1;
-+ mcc_pkt->h.length.len = 0;
-+
-+ return basic_write(ts0710, buf, size);
-+}
-+
-+/*
-+static int ts0710_rpn_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 req)
-+{
-+ char buf[100];
-+ rpn_msg* rpn_pkt;
-+ __u32 fsize;
-+ __u32 psize;
-+
-+ fsize = sizeof(rpn_msg);
-+
-+ if (req) {
-+ fsize -= sizeof(rpn_values);
-+ }
-+
-+ psize = (fsize - sizeof(short_frame) - FCS_SIZE);
-+
-+ rpn_pkt = (rpn_msg *) buf;
-+
-+ set_uih_hdr((short_frame *) rpn_pkt, CTRL_CHAN, psize, ts0710->initiator);
-+
-+ rpn_pkt->fcs = crc_calc((__u8*) rpn_pkt, SHORT_CRC_CHECK);
-+
-+ rpn_pkt->mcc_s_head.type.ea = EA;
-+ rpn_pkt->mcc_s_head.type.cr = cr;
-+ rpn_pkt->mcc_s_head.type.type = RPN;
-+ rpn_pkt->mcc_s_head.length.ea = EA;
-+
-+ rpn_pkt->dlci.ea = EA;
-+ rpn_pkt->dlci.cr = 1;
-+ rpn_pkt->dlci.d = dlci & 1;
-+ rpn_pkt->dlci.server_chn = (dlci >> 1);
-+
-+ if (req) {
-+ rpn_pkt->mcc_s_head.length.len = 1;
-+ rpn_pkt->rpn_val.bit_rate = rpn_pkt->fcs;
-+ } else {
-+ rpn_pkt->mcc_s_head.length.len = 8;
-+ memcpy(&(rpn_pkt->rpn_val), &rpn_val, sizeof(rpn_values));
-+ }
-+ return basic_write(ts0710, buf, fsize);
-+}
-+*/
-+/*
-+static int ts0710_rls_msg(ts0710_con *ts0710, __u8 cr, __u8 dlci, __u8 err_code)
-+{
-+ char buf[100];
-+ rls_msg *rls_pkt;
-+ __u32 fsize;
-+ __u32 psize;
-+
-+ fsize = sizeof(rls_msg);
-+ psize = fsize - sizeof(short_frame) - FCS_SIZE;
-+ rls_pkt = (rls_msg *) buf;
-+
-+ set_uih_hdr((short_frame *) rls_pkt, CTRL_CHAN, psize, ts0710->initiator);
-+ rls_pkt->fcs = crc_calc((__u8*) rls_pkt, SHORT_CRC_CHECK);
-+
-+ rls_pkt->mcc_s_head.type.ea = EA;
-+ rls_pkt->mcc_s_head.type.cr = cr;
-+ rls_pkt->mcc_s_head.type.type = RLS;
-+ rls_pkt->mcc_s_head.length.ea = EA;
-+ rls_pkt->mcc_s_head.length.len = 2;
-+
-+ rls_pkt->dlci.ea = EA;
-+ rls_pkt->dlci.cr = 1;
-+ rls_pkt->dlci.d = dlci & 1;
-+ rls_pkt->dlci.server_chn = dlci >> 1;
-+ rls_pkt->error = err_code;
-+ rls_pkt->res = 0;
-+
-+ return basic_write(ts0710, buf, fsize);
-+}
-+*/
-+
-+/* Sends an PN-messages and sets the not negotiable parameters to their
-+ default values in ts0710 */
-+
-+static int send_pn_msg(ts0710_con * ts0710, __u8 prior, __u32 frame_size,
-+ __u8 credit_flow, __u8 credits, __u8 dlci, __u8 cr)
-+{
-+ __u8 buf[30];
-+ pn_msg *pn_pkt;
-+ __u32 size;
-+ TS0710_DEBUG
-+ ("send_pn_msg: DLCI 0x%02x, prior:0x%02x, frame_size:%d, credit_flow:%x, credits:%d, cr:%x\n",
-+ dlci, prior, frame_size, credit_flow, credits, cr);
-+
-+ size = sizeof(pn_msg);
-+ pn_pkt = (pn_msg *) (buf + 1);
-+
-+ set_uih_hdr((void *)pn_pkt, CTRL_CHAN,
-+ size - (sizeof(short_frame) + FCS_SIZE), ts0710->initiator);
-+ pn_pkt->fcs = crc_calc((__u8 *) pn_pkt, SHORT_CRC_CHECK);
-+
-+ pn_pkt->mcc_s_head.type.ea = 1;
-+ pn_pkt->mcc_s_head.type.cr = cr;
-+ pn_pkt->mcc_s_head.type.type = PN;
-+ pn_pkt->mcc_s_head.length.ea = 1;
-+ pn_pkt->mcc_s_head.length.len = 8;
-+
-+ pn_pkt->res1 = 0;
-+ pn_pkt->res2 = 0;
-+ pn_pkt->dlci = dlci;
-+ pn_pkt->frame_type = 0;
-+ pn_pkt->credit_flow = credit_flow;
-+ pn_pkt->prior = prior;
-+ pn_pkt->ack_timer = 0;
-+ SET_PN_MSG_FRAME_SIZE(pn_pkt, frame_size);
-+ pn_pkt->credits = credits;
-+ pn_pkt->max_nbrof_retrans = 0;
-+
-+ return basic_write(ts0710, buf, size);
-+}
-+
-+/* Send a Not supported command - command, which needs 3 bytes */
-+
-+static int send_nsc_msg(ts0710_con * ts0710, mcc_type cmd, __u8 cr)
-+{
-+ __u8 buf[30];
-+ nsc_msg *nsc_pkt;
-+ __u32 size;
-+
-+ size = sizeof(nsc_msg);
-+ nsc_pkt = (nsc_msg *) (buf + 1);
-+
-+ set_uih_hdr((void *)nsc_pkt, CTRL_CHAN,
-+ sizeof(nsc_msg) - sizeof(short_frame) - FCS_SIZE,
-+ ts0710->initiator);
-+
-+ nsc_pkt->fcs = crc_calc((__u8 *) nsc_pkt, SHORT_CRC_CHECK);
-+
-+ nsc_pkt->mcc_s_head.type.ea = 1;
-+ nsc_pkt->mcc_s_head.type.cr = cr;
-+ nsc_pkt->mcc_s_head.type.type = NSC;
-+ nsc_pkt->mcc_s_head.length.ea = 1;
-+ nsc_pkt->mcc_s_head.length.len = 1;
-+
-+ nsc_pkt->command_type.ea = 1;
-+ nsc_pkt->command_type.cr = cmd.cr;
-+ nsc_pkt->command_type.type = cmd.type;
-+
-+ return basic_write(ts0710, buf, size);
-+}
-+
-+static int ts0710_msc_msg(ts0710_con * ts0710, __u8 value, __u8 cr, __u8 dlci)
-+{
-+ __u8 buf[30];
-+ msc_msg *msc_pkt;
-+ __u32 size;
-+
-+ size = sizeof(msc_msg);
-+ msc_pkt = (msc_msg *) (buf + 1);
-+
-+ set_uih_hdr((void *)msc_pkt, CTRL_CHAN,
-+ sizeof(msc_msg) - sizeof(short_frame) - FCS_SIZE,
-+ ts0710->initiator);
-+
-+ msc_pkt->fcs = crc_calc((__u8 *) msc_pkt, SHORT_CRC_CHECK);
-+
-+ msc_pkt->mcc_s_head.type.ea = 1;
-+ msc_pkt->mcc_s_head.type.cr = cr;
-+ msc_pkt->mcc_s_head.type.type = MSC;
-+ msc_pkt->mcc_s_head.length.ea = 1;
-+ msc_pkt->mcc_s_head.length.len = 2;
-+
-+ msc_pkt->dlci.ea = 1;
-+ msc_pkt->dlci.cr = 1;
-+ msc_pkt->dlci.d = dlci & 1;
-+ msc_pkt->dlci.server_chn = (dlci >> 1) & 0x1f;
-+
-+ msc_pkt->v24_sigs = value;
-+
-+ return basic_write(ts0710, buf, size);
-+}
-+
-+static int ts0710_test_msg(ts0710_con * ts0710, __u8 * test_pattern, __u32 len,
-+ __u8 cr, __u8 * f_buf /*Frame buf */ )
-+{
-+ __u32 size;
-+
-+ if (len > SHORT_PAYLOAD_SIZE) {
-+ long_frame *uih_pkt;
-+ mcc_long_frame *mcc_pkt;
-+
-+ size =
-+ (sizeof(long_frame) + sizeof(mcc_long_frame) + len +
-+ FCS_SIZE);
-+ uih_pkt = (long_frame *) (f_buf + 1);
-+
-+ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN, len +
-+ sizeof(mcc_long_frame), ts0710->initiator);
-+ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
-+ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
-+ mcc_pkt = (mcc_long_frame *) uih_pkt->data;
-+
-+ mcc_pkt->h.type.ea = EA;
-+ /* cr tells whether it is a commmand (1) or a response (0) */
-+ mcc_pkt->h.type.cr = cr;
-+ mcc_pkt->h.type.type = TEST;
-+ SET_LONG_LENGTH(mcc_pkt->h.length, len);
-+ memcpy(mcc_pkt->value, test_pattern, len);
-+ } else if (len > (SHORT_PAYLOAD_SIZE - sizeof(mcc_short_frame))) {
-+ long_frame *uih_pkt;
-+ mcc_short_frame *mcc_pkt;
-+
-+ /* Create long uih packet and short mcc packet */
-+ size =
-+ (sizeof(long_frame) + sizeof(mcc_short_frame) + len +
-+ FCS_SIZE);
-+ uih_pkt = (long_frame *) (f_buf + 1);
-+
-+ set_uih_hdr((short_frame *) uih_pkt, CTRL_CHAN,
-+ len + sizeof(mcc_short_frame), ts0710->initiator);
-+ uih_pkt->data[GET_LONG_LENGTH(uih_pkt->h.length)] =
-+ crc_calc((__u8 *) uih_pkt, LONG_CRC_CHECK);
-+ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
-+
-+ mcc_pkt->h.type.ea = EA;
-+ mcc_pkt->h.type.cr = cr;
-+ mcc_pkt->h.type.type = TEST;
-+ mcc_pkt->h.length.ea = EA;
-+ mcc_pkt->h.length.len = len;
-+ memcpy(mcc_pkt->value, test_pattern, len);
-+ } else {
-+ short_frame *uih_pkt;
-+ mcc_short_frame *mcc_pkt;
-+
-+ size =
-+ (sizeof(short_frame) + sizeof(mcc_short_frame) + len +
-+ FCS_SIZE);
-+ uih_pkt = (short_frame *) (f_buf + 1);
-+
-+ set_uih_hdr((void *)uih_pkt, CTRL_CHAN, len
-+ + sizeof(mcc_short_frame), ts0710->initiator);
-+ uih_pkt->data[uih_pkt->h.length.len] =
-+ crc_calc((__u8 *) uih_pkt, SHORT_CRC_CHECK);
-+ mcc_pkt = (mcc_short_frame *) uih_pkt->data;
-+
-+ mcc_pkt->h.type.ea = EA;
-+ mcc_pkt->h.type.cr = cr;
-+ mcc_pkt->h.type.type = TEST;
-+ mcc_pkt->h.length.ea = EA;
-+ mcc_pkt->h.length.len = len;
-+ memcpy(mcc_pkt->value, test_pattern, len);
-+
-+ }
-+ return basic_write(ts0710, f_buf, size);
-+}
-+
-+static void set_uih_hdr(short_frame * uih_pkt, __u8 dlci, __u32 len, __u8 cr)
-+{
-+ uih_pkt->h.addr.ea = 1;
-+ uih_pkt->h.addr.cr = cr;
-+ uih_pkt->h.addr.d = dlci & 0x1;
-+ uih_pkt->h.addr.server_chn = dlci >> 1;
-+ uih_pkt->h.control = CLR_PF(UIH);
-+
-+ if (len > SHORT_PAYLOAD_SIZE) {
-+ SET_LONG_LENGTH(((long_frame *) uih_pkt)->h.length, len);
-+ } else {
-+ uih_pkt->h.length.ea = 1;
-+ uih_pkt->h.length.len = len;
-+ }
-+}
-+
-+/* Parses a multiplexer control channel packet */
-+
-+void process_mcc(__u8 * data, __u32 len, ts0710_con * ts0710, int longpkt)
-+{
-+ __u8 *tbuf = NULL;
-+ mcc_short_frame *mcc_short_pkt;
-+ int j;
-+
-+ if (longpkt) {
-+ mcc_short_pkt =
-+ (mcc_short_frame *) (((long_frame *) data)->data);
-+ } else {
-+ mcc_short_pkt =
-+ (mcc_short_frame *) (((short_frame *) data)->data);
-+ }
-+
-+ switch (mcc_short_pkt->h.type.type) {
-+ case TEST:
-+ if (mcc_short_pkt->h.type.cr == MCC_RSP) {
-+ TS0710_DEBUG("Received test command response\n");
-+
-+ if (ts0710->be_testing) {
-+ if ((mcc_short_pkt->h.length.ea) == 0) {
-+ mcc_long_frame *mcc_long_pkt;
-+ mcc_long_pkt =
-+ (mcc_long_frame *) mcc_short_pkt;
-+ if (GET_LONG_LENGTH
-+ (mcc_long_pkt->h.length) !=
-+ TEST_PATTERN_SIZE) {
-+ ts0710->test_errs =
-+ TEST_PATTERN_SIZE;
-+ TS0710_DEBUG
-+ ("Err: received test pattern is %d bytes long, not expected %d\n",
-+ GET_LONG_LENGTH
-+ (mcc_long_pkt->h.length),
-+ TEST_PATTERN_SIZE);
-+ } else {
-+ ts0710->test_errs = 0;
-+ for (j = 0;
-+ j < TEST_PATTERN_SIZE;
-+ j++) {
-+ if (mcc_long_pkt->
-+ value[j] !=
-+ (j & 0xFF)) {
-+ (ts0710->
-+ test_errs)++;
-+ }
-+ }
-+ }
-+
-+ } else {
-+
-+#if TEST_PATTERN_SIZE < 128
-+ if (mcc_short_pkt->h.length.len !=
-+ TEST_PATTERN_SIZE) {
-+#endif
-+
-+ ts0710->test_errs =
-+ TEST_PATTERN_SIZE;
-+ TS0710_DEBUG
-+ ("Err: received test pattern is %d bytes long, not expected %d\n",
-+ mcc_short_pkt->h.length.
-+ len, TEST_PATTERN_SIZE);
-+
-+#if TEST_PATTERN_SIZE < 128
-+ } else {
-+ ts0710->test_errs = 0;
-+ for (j = 0;
-+ j < TEST_PATTERN_SIZE;
-+ j++) {
-+ if (mcc_short_pkt->
-+ value[j] !=
-+ (j & 0xFF)) {
-+ (ts0710->
-+ test_errs)++;
-+ }
-+ }
-+ }
-+#endif
-+
-+ }
-+
-+ ts0710->be_testing = 0; /* Clear the flag */
-+ wake_up_interruptible(&ts0710->test_wait);
-+ } else {
-+ TS0710_DEBUG
-+ ("Err: shouldn't or late to get test cmd response\n");
-+ }
-+ } else {
-+ tbuf = (__u8 *) kmalloc(len + 32, GFP_ATOMIC);
-+ if (!tbuf) {
-+ break;
-+ }
-+
-+ if ((mcc_short_pkt->h.length.ea) == 0) {
-+ mcc_long_frame *mcc_long_pkt;
-+ mcc_long_pkt = (mcc_long_frame *) mcc_short_pkt;
-+ ts0710_test_msg(ts0710, mcc_long_pkt->value,
-+ GET_LONG_LENGTH(mcc_long_pkt->h.
-+ length),
-+ MCC_RSP, tbuf);
-+ } else {
-+ ts0710_test_msg(ts0710, mcc_short_pkt->value,
-+ mcc_short_pkt->h.length.len,
-+ MCC_RSP, tbuf);
-+ }
-+
-+ kfree(tbuf);
-+ }
-+ break;
-+
-+ case FCON: /*Flow control on command */
-+ TS0710_PRINTK
-+ ("MUX Received Flow control(all channels) on command\n");
-+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
-+ ts0710->dlci[0].state = CONNECTED;
-+ ts0710_fcon_msg(ts0710, MCC_RSP);
-+ mux_sched_send();
-+ }
-+ break;
-+
-+ case FCOFF: /*Flow control off command */
-+ TS0710_PRINTK
-+ ("MUX Received Flow control(all channels) off command\n");
-+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
-+ for (j = 0; j < TS0710_MAX_CHN; j++) {
-+ ts0710->dlci[j].state = FLOW_STOPPED;
-+ }
-+ ts0710_fcoff_msg(ts0710, MCC_RSP);
-+ }
-+ break;
-+
-+ case MSC: /*Modem status command */
-+ {
-+ __u8 dlci;
-+ __u8 v24_sigs;
-+
-+ dlci = (mcc_short_pkt->value[0]) >> 2;
-+ v24_sigs = mcc_short_pkt->value[1];
-+
-+ if ((ts0710->dlci[dlci].state != CONNECTED)
-+ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
-+ send_dm(ts0710, dlci);
-+ break;
-+ }
-+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
-+ TS0710_DEBUG("Received Modem status command\n");
-+ if (v24_sigs & 2) {
-+ if (ts0710->dlci[dlci].state ==
-+ CONNECTED) {
-+ TS0710_LOG
-+ ("MUX Received Flow off on dlci %d\n",
-+ dlci);
-+ ts0710->dlci[dlci].state =
-+ FLOW_STOPPED;
-+ }
-+ } else {
-+ if (ts0710->dlci[dlci].state ==
-+ FLOW_STOPPED) {
-+ ts0710->dlci[dlci].state =
-+ CONNECTED;
-+ TS0710_LOG
-+ ("MUX Received Flow on on dlci %d\n",
-+ dlci);
-+ mux_sched_send();
-+ }
-+ }
-+
-+ ts0710_msc_msg(ts0710, v24_sigs, MCC_RSP, dlci);
-+/*
-+ if (!(ts0710->dlci[dlci].initiated) && !(ts0710->dlci[dlci].initiator)) {
-+ ts0710_msc_msg(ts0710, EA | RTR | RTC | DV, MCC_CMD, dlci);
-+ ts0710->dlci[dlci].initiated = 1;
-+ }
-+*/
-+ } else {
-+ TS0710_DEBUG
-+ ("Received Modem status response\n");
-+
-+ if (v24_sigs & 2) {
-+ TS0710_DEBUG("Flow stop accepted\n");
-+ }
-+ }
-+ break;
-+ }
-+
-+ /* case RPN: *//*Remote port negotiation command */
-+
-+/* {
-+ __u8 dlci;
-+
-+ dlci = (mcc_short_pkt->value[0]) >> 2;
-+
-+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
-+ if (mcc_short_pkt->h.length.len == 1) {
-+ TS0710_DEBUG("Received Remote port negotiation command\n");
-+ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
-+ } else {
-+*/
-+ /* Accept the other sides settings (accept all for now) */
-+/* TS0710_DEBUG("Received Remote port negotiation respons\n");
-+ memcpy(&rpn_val, &mcc_short_pkt->value[1], 8);
-+ ts0710_rpn_msg(ts0710, MCC_RSP, dlci, 0);
-+*/
-+ /* Zero the parametermask after response */
-+/* memset(&rpn_val.pm, 0, 2);
-+ }
-+ }
-+ break;
-+ }
-+*/
-+/*
-+ case RLS: *//*Remote line status */
-+/* {
-+ __u8 dlci;
-+ __u8 err_code;
-+
-+ TS0710_DEBUG("Received Remote line status\n");
-+ if (mcc_short_pkt->h.type.cr == MCC_CMD) {
-+ dlci = mcc_short_pkt->value[0] >> 2;
-+ err_code = mcc_short_pkt->value[1];
-+
-+ ts0710_rls_msg(ts0710, MCC_RSP, dlci, err_code);
-+ }
-+ break;
-+ }
-+*/
-+ case PN: /*DLC parameter negotiation */
-+ {
-+ __u8 dlci;
-+ __u16 frame_size;
-+ pn_msg *pn_pkt;
-+
-+ pn_pkt = (pn_msg *) data;
-+ dlci = pn_pkt->dlci;
-+ frame_size = GET_PN_MSG_FRAME_SIZE(pn_pkt);
-+ TS0710_DEBUG
-+ ("Received DLC parameter negotiation, PN\n");
-+ if (pn_pkt->mcc_s_head.type.cr == MCC_CMD) {
-+ TS0710_DEBUG("received PN command with:\n");
-+ TS0710_DEBUG("Frame size:%d\n", frame_size);
-+
-+ frame_size =
-+ min(frame_size, ts0710->dlci[dlci].mtu);
-+ send_pn_msg(ts0710, pn_pkt->prior, frame_size,
-+ 0, 0, dlci, MCC_RSP);
-+ ts0710->dlci[dlci].mtu = frame_size;
-+ TS0710_DEBUG("process_mcc : mtu set to %d\n",
-+ ts0710->dlci[dlci].mtu);
-+ } else {
-+ TS0710_DEBUG("received PN response with:\n");
-+ TS0710_DEBUG("Frame size:%d\n", frame_size);
-+
-+ frame_size =
-+ min(frame_size, ts0710->dlci[dlci].mtu);
-+ ts0710->dlci[dlci].mtu = frame_size;
-+
-+ TS0710_DEBUG
-+ ("process_mcc : mtu set on dlci:%d to %d\n",
-+ dlci, ts0710->dlci[dlci].mtu);
-+
-+ if (ts0710->dlci[dlci].state == NEGOTIATING) {
-+ ts0710->dlci[dlci].state = CONNECTING;
-+ wake_up_interruptible(&ts0710->
-+ dlci[dlci].
-+ open_wait);
-+ }
-+ }
-+ break;
-+ }
-+
-+ case NSC: /*Non supported command resonse */
-+ TS0710_LOG("MUX Received Non supported command response\n");
-+ break;
-+
-+ default: /*Non supported command received */
-+ TS0710_LOG("MUX Received a non supported command\n");
-+ send_nsc_msg(ts0710, mcc_short_pkt->h.type, MCC_RSP);
-+ break;
-+ }
-+}
-+
-+static mux_recv_packet *get_mux_recv_packet(__u32 size)
-+{
-+ mux_recv_packet *recv_packet;
-+
-+ TS0710_DEBUG("Enter into get_mux_recv_packet");
-+
-+ recv_packet =
-+ (mux_recv_packet *) kmalloc(sizeof(mux_recv_packet), GFP_ATOMIC);
-+ if (!recv_packet) {
-+ return 0;
-+ }
-+
-+ recv_packet->data = (__u8 *) kmalloc(size, GFP_ATOMIC);
-+ if (!(recv_packet->data)) {
-+ kfree(recv_packet);
-+ return 0;
-+ }
-+ recv_packet->length = 0;
-+ recv_packet->next = 0;
-+ return recv_packet;
-+}
-+
-+static void free_mux_recv_packet(mux_recv_packet * recv_packet)
-+{
-+ TS0710_DEBUG("Enter into free_mux_recv_packet");
-+
-+ if (!recv_packet) {
-+ return;
-+ }
-+
-+ if (recv_packet->data) {
-+ kfree(recv_packet->data);
-+ }
-+ kfree(recv_packet);
-+}
-+
-+static void free_mux_recv_struct(mux_recv_struct * recv_info)
-+{
-+ mux_recv_packet *recv_packet1, *recv_packet2;
-+
-+ if (!recv_info) {
-+ return;
-+ }
-+
-+ recv_packet1 = recv_info->mux_packet;
-+ while (recv_packet1) {
-+ recv_packet2 = recv_packet1->next;
-+ free_mux_recv_packet(recv_packet1);
-+ recv_packet1 = recv_packet2;
-+ }
-+
-+ kfree(recv_info);
-+}
-+
-+static inline void add_post_recv_queue(mux_recv_struct ** head,
-+ mux_recv_struct * new_item)
-+{
-+ new_item->next = *head;
-+ *head = new_item;
-+}
-+
-+static void ts0710_flow_on(__u8 dlci, ts0710_con * ts0710)
-+{
-+ int i;
-+ __u8 cmdtty;
-+ __u8 datatty;
-+ struct tty_struct *tty;
-+ mux_recv_struct *recv_info;
-+
-+ if ((ts0710->dlci[0].state != CONNECTED)
-+ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
-+ return;
-+ } else if ((ts0710->dlci[dlci].state != CONNECTED)
-+ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
-+ return;
-+ }
-+
-+ if (!(ts0710->dlci[dlci].flow_control)) {
-+ return;
-+ }
-+
-+ cmdtty = dlci2tty[dlci].cmdtty;
-+ datatty = dlci2tty[dlci].datatty;
-+
-+ if (cmdtty != datatty) {
-+ /* Check AT cmd tty */
-+ tty = mux_table[cmdtty];
-+ if (mux_tty[cmdtty] && tty) {
-+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
-+ return;
-+ }
-+ }
-+ recv_info = mux_recv_info[cmdtty];
-+ if (mux_recv_info_flags[cmdtty] && recv_info) {
-+ if (recv_info->total) {
-+ return;
-+ }
-+ }
-+
-+ /* Check data tty */
-+ tty = mux_table[datatty];
-+ if (mux_tty[datatty] && tty) {
-+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
-+ return;
-+ }
-+ }
-+ recv_info = mux_recv_info[datatty];
-+ if (mux_recv_info_flags[datatty] && recv_info) {
-+ if (recv_info->total) {
-+ return;
-+ }
-+ }
-+ }
-+
-+ for (i = 0; i < 3; i++) {
-+ if (ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, dlci) <
-+ 0) {
-+ continue;
-+ } else {
-+ TS0710_LOG("MUX send Flow on on dlci %d\n", dlci);
-+ ts0710->dlci[dlci].flow_control = 0;
-+ break;
-+ }
-+ }
-+}
-+
-+static void ts0710_flow_off(struct tty_struct *tty, __u8 dlci,
-+ ts0710_con * ts0710)
-+{
-+ int i;
-+
-+ if (test_and_set_bit(TTY_THROTTLED, &tty->flags)) {
-+ return;
-+ }
-+
-+ if ((ts0710->dlci[0].state != CONNECTED)
-+ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
-+ return;
-+ } else if ((ts0710->dlci[dlci].state != CONNECTED)
-+ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
-+ return;
-+ }
-+
-+ if (ts0710->dlci[dlci].flow_control) {
-+ return;
-+ }
-+
-+ for (i = 0; i < 3; i++) {
-+ if (ts0710_msc_msg
-+ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
-+ continue;
-+ } else {
-+ TS0710_LOG("MUX send Flow off on dlci %d\n", dlci);
-+ ts0710->dlci[dlci].flow_control = 1;
-+ break;
-+ }
-+ }
-+}
-+
-+int ts0710_recv_data(ts0710_con * ts0710, char *data, int len)
-+{
-+ short_frame *short_pkt;
-+ long_frame *long_pkt;
-+ __u8 *uih_data_start;
-+ __u32 uih_len;
-+ __u8 dlci;
-+ __u8 be_connecting;
-+#ifdef TS0710DEBUG
-+ unsigned long t;
-+#endif
-+
-+ short_pkt = (short_frame *) data;
-+
-+ dlci = short_pkt->h.addr.server_chn << 1 | short_pkt->h.addr.d;
-+ switch (CLR_PF(short_pkt->h.control)) {
-+ case SABM:
-+ TS0710_DEBUG("SABM-packet received\n");
-+
-+/*For BP UART problem
-+ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
-+ break;
-+*/
-+
-+ if (!dlci) {
-+ TS0710_DEBUG("server channel == 0\n");
-+ ts0710->dlci[0].state = CONNECTED;
-+
-+ TS0710_DEBUG("sending back UA - control channel\n");
-+ send_ua(ts0710, dlci);
-+ wake_up_interruptible(&ts0710->dlci[0].open_wait);
-+
-+ } else if (valid_dlci(dlci)) {
-+
-+ TS0710_DEBUG("Incomming connect on channel %d\n", dlci);
-+
-+ TS0710_DEBUG("sending UA, dlci %d\n", dlci);
-+ send_ua(ts0710, dlci);
-+
-+ ts0710->dlci[dlci].state = CONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
-+
-+ } else {
-+ TS0710_DEBUG("invalid dlci %d, sending DM\n", dlci);
-+ send_dm(ts0710, dlci);
-+ }
-+
-+ break;
-+
-+ case UA:
-+ TS0710_DEBUG("UA packet received\n");
-+
-+/*For BP UART problem
-+ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
-+ break;
-+*/
-+
-+ if (!dlci) {
-+ TS0710_DEBUG("server channel == 0\n");
-+
-+ if (ts0710->dlci[0].state == CONNECTING) {
-+ ts0710->dlci[0].state = CONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[0].
-+ open_wait);
-+ } else if (ts0710->dlci[0].state == DISCONNECTING) {
-+ ts0710_upon_disconnect();
-+ } else {
-+ TS0710_DEBUG
-+ (" Something wrong receiving UA packet\n");
-+ }
-+ } else if (valid_dlci(dlci)) {
-+ TS0710_DEBUG("Incomming UA on channel %d\n", dlci);
-+
-+ if (ts0710->dlci[dlci].state == CONNECTING) {
-+ ts0710->dlci[dlci].state = CONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[dlci].
-+ open_wait);
-+ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
-+ ts0710->dlci[dlci].state = DISCONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[dlci].
-+ open_wait);
-+ wake_up_interruptible(&ts0710->dlci[dlci].
-+ close_wait);
-+ ts0710_reset_dlci(dlci);
-+ } else {
-+ TS0710_DEBUG
-+ (" Something wrong receiving UA packet\n");
-+ }
-+ } else {
-+ TS0710_DEBUG("invalid dlci %d\n", dlci);
-+ }
-+
-+ break;
-+
-+ case DM:
-+ TS0710_DEBUG("DM packet received\n");
-+
-+/*For BP UART problem
-+ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
-+ break;
-+*/
-+
-+ if (!dlci) {
-+ TS0710_DEBUG("server channel == 0\n");
-+
-+ if (ts0710->dlci[0].state == CONNECTING) {
-+ be_connecting = 1;
-+ } else {
-+ be_connecting = 0;
-+ }
-+ ts0710_upon_disconnect();
-+ if (be_connecting) {
-+ ts0710->dlci[0].state = REJECTED;
-+ }
-+ } else if (valid_dlci(dlci)) {
-+ TS0710_DEBUG("Incomming DM on channel %d\n", dlci);
-+
-+ if (ts0710->dlci[dlci].state == CONNECTING) {
-+ ts0710->dlci[dlci].state = REJECTED;
-+ } else {
-+ ts0710->dlci[dlci].state = DISCONNECTED;
-+ }
-+ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
-+ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
-+ ts0710_reset_dlci(dlci);
-+ } else {
-+ TS0710_DEBUG("invalid dlci %d\n", dlci);
-+ }
-+
-+ break;
-+
-+ case DISC:
-+ TS0710_DEBUG("DISC packet received\n");
-+
-+/*For BP UART problem
-+ if( crc_check((__u8*) short_pkt, SHORT_CRC_CHECK, short_pkt->data[0]) )
-+ break;
-+*/
-+
-+ if (!dlci) {
-+ TS0710_DEBUG("server channel == 0\n");
-+
-+ send_ua(ts0710, dlci);
-+ TS0710_DEBUG("DISC, sending back UA\n");
-+
-+ ts0710_upon_disconnect();
-+ } else if (valid_dlci(dlci)) {
-+ TS0710_DEBUG("Incomming DISC on channel %d\n", dlci);
-+
-+ send_ua(ts0710, dlci);
-+ TS0710_DEBUG("DISC, sending back UA\n");
-+
-+ ts0710->dlci[dlci].state = DISCONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
-+ wake_up_interruptible(&ts0710->dlci[dlci].close_wait);
-+ ts0710_reset_dlci(dlci);
-+ } else {
-+ TS0710_DEBUG("invalid dlci %d\n", dlci);
-+ }
-+
-+ break;
-+
-+ case UIH:
-+ TS0710_DEBUG("UIH packet received\n");
-+
-+ if ((dlci >= TS0710_MAX_CHN)) {
-+ TS0710_DEBUG("invalid dlci %d\n", dlci);
-+ send_dm(ts0710, dlci);
-+ break;
-+ }
-+
-+ if (GET_PF(short_pkt->h.control)) {
-+ TS0710_LOG
-+ ("MUX Error %s: UIH packet with P/F set, discard it!\n",
-+ __FUNCTION__);
-+ break;
-+ }
-+
-+ if ((ts0710->dlci[dlci].state != CONNECTED)
-+ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
-+ TS0710_LOG
-+ ("MUX Error %s: DLCI %d not connected, discard it!\n",
-+ __FUNCTION__, dlci);
-+ send_dm(ts0710, dlci);
-+ break;
-+ }
-+
-+ if ((short_pkt->h.length.ea) == 0) {
-+ TS0710_DEBUG("Long UIH packet received\n");
-+ long_pkt = (long_frame *) data;
-+ uih_len = GET_LONG_LENGTH(long_pkt->h.length);
-+ uih_data_start = long_pkt->h.data;
-+ TS0710_DEBUG("long packet length %d\n", uih_len);
-+
-+/*For BP UART problem
-+ if (crc_check(data, LONG_CRC_CHECK, *(uih_data_start + uih_len)))
-+ break;
-+*/
-+ } else {
-+ TS0710_DEBUG("Short UIH pkt received\n");
-+ uih_len = short_pkt->h.length.len;
-+ uih_data_start = short_pkt->data;
-+
-+/*For BP UART problem
-+ if (crc_check(data, SHORT_CRC_CHECK, *(uih_data_start + uih_len)))
-+ break;
-+*/
-+ }
-+
-+ if (dlci == 0) {
-+ TS0710_DEBUG("UIH on serv_channel 0\n");
-+ process_mcc(data, len, ts0710,
-+ !(short_pkt->h.length.ea));
-+ } else if (valid_dlci(dlci)) {
-+ /* do tty dispatch */
-+ __u8 tag;
-+ __u8 tty_idx;
-+ struct tty_struct *tty;
-+ __u8 queue_data;
-+ __u8 post_recv;
-+ __u8 flow_control;
-+ mux_recv_struct *recv_info;
-+ int recv_room;
-+ mux_recv_packet *recv_packet, *recv_packet2;
-+
-+ TS0710_DEBUG("UIH on channel %d\n", dlci);
-+
-+ if (uih_len > ts0710->dlci[dlci].mtu) {
-+ TS0710_PRINTK
-+ ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
-+ dlci, uih_len, ts0710->dlci[dlci].mtu);
-+ break;
-+ }
-+
-+ tag = *uih_data_start;
-+ uih_data_start++;
-+ uih_len--;
-+
-+ if (!uih_len) {
-+ break;
-+ }
-+
-+ switch (tag) {
-+ case CMDTAG:
-+ tty_idx = dlci2tty[dlci].cmdtty;
-+ TS0710_DEBUG("CMDTAG on DLCI:%d, /dev/mux%d\n",
-+ dlci, tty_idx);
-+ TS0710_DEBUGSTR(uih_data_start, uih_len);
-+ if (!(iscmdtty[tty_idx])) {
-+ TS0710_PRINTK
-+ ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
-+ __FUNCTION__, dlci, tty_idx);
-+ }
-+ break;
-+ case DATATAG:
-+ default:
-+ tty_idx = dlci2tty[dlci].datatty;
-+ TS0710_DEBUG
-+ ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
-+ dlci, tty_idx);
-+ if (iscmdtty[tty_idx]) {
-+ TS0710_PRINTK
-+ ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
-+ __FUNCTION__, dlci, tty_idx);
-+ }
-+ break;
-+ }
-+ tty = mux_table[tty_idx];
-+ if ((!mux_tty[tty_idx]) || (!tty)) {
-+ TS0710_PRINTK
-+ ("MUX: No application waiting for, discard it! /dev/mux%d\n",
-+ tty_idx);
-+ } else { /* Begin processing received data */
-+ if ((!mux_recv_info_flags[tty_idx])
-+ || (!mux_recv_info[tty_idx])) {
-+ TS0710_PRINTK
-+ ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
-+ tty_idx);
-+ break;
-+ }
-+
-+ recv_info = mux_recv_info[tty_idx];
-+ if (recv_info->total > 8192) {
-+ TS0710_PRINTK
-+ ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
-+ tty_idx);
-+ break;
-+ }
-+
-+ queue_data = 0;
-+ post_recv = 0;
-+ flow_control = 0;
-+ recv_room = 65535;
-+ if (tty->receive_room)
-+ recv_room = tty->receive_room;
-+
-+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
-+ queue_data = 1;
-+ } else {
-+ if (test_bit
-+ (TTY_DONT_FLIP, &tty->flags)) {
-+ queue_data = 1;
-+ post_recv = 1;
-+ } else if (recv_info->total) {
-+ queue_data = 1;
-+ post_recv = 1;
-+ } else if (recv_room < uih_len) {
-+ queue_data = 1;
-+ flow_control = 1;
-+ }
-+
-+ if ((recv_room -
-+ (uih_len + recv_info->total)) <
-+ ts0710->dlci[dlci].mtu) {
-+ flow_control = 1;
-+ }
-+ }
-+
-+ if (!queue_data) {
-+ /* Put received data into read buffer of tty */
-+ TS0710_DEBUG
-+ ("Put received data into read buffer of /dev/mux%d",
-+ tty_idx);
-+
-+#ifdef TS0710DEBUG
-+ t = jiffies;
-+#endif
-+
-+ (tty->ldisc.receive_buf) (tty,
-+ uih_data_start,
-+ NULL,
-+ uih_len);
-+
-+#ifdef TS0710DEBUG
-+ TS0710_DEBUG
-+ ("tty->ldisc.receive_buf take ticks: %lu",
-+ (jiffies - t));
-+#endif
-+
-+ } else { /* Queue data */
-+
-+ TS0710_DEBUG
-+ ("Put received data into recv queue of /dev/mux%d",
-+ tty_idx);
-+ if (recv_info->total) {
-+ /* recv_info is already linked into mux_recv_queue */
-+
-+ recv_packet =
-+ get_mux_recv_packet
-+ (uih_len);
-+ if (!recv_packet) {
-+ TS0710_PRINTK
-+ ("MUX %s: no memory\n",
-+ __FUNCTION__);
-+ break;
-+ }
-+
-+ memcpy(recv_packet->data,
-+ uih_data_start, uih_len);
-+ recv_packet->length = uih_len;
-+ recv_info->total += uih_len;
-+ recv_packet->next = NULL;
-+
-+ if (!(recv_info->mux_packet)) {
-+ recv_info->mux_packet =
-+ recv_packet;
-+ } else {
-+ recv_packet2 =
-+ recv_info->
-+ mux_packet;
-+ while (recv_packet2->
-+ next) {
-+ recv_packet2 =
-+ recv_packet2->
-+ next;
-+ }
-+ recv_packet2->next =
-+ recv_packet;
-+ } /* End if( !(recv_info->mux_packet) ) */
-+ } else { /* recv_info->total == 0 */
-+ if (uih_len >
-+ TS0710MUX_RECV_BUF_SIZE) {
-+ TS0710_PRINTK
-+ ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
-+ tty_idx, uih_len);
-+ uih_len =
-+ TS0710MUX_RECV_BUF_SIZE;
-+ }
-+ memcpy(recv_info->data,
-+ uih_data_start, uih_len);
-+ recv_info->length = uih_len;
-+ recv_info->total = uih_len;
-+
-+ add_post_recv_queue
-+ (&mux_recv_queue,
-+ recv_info);
-+ } /* End recv_info->total == 0 */
-+ } /* End Queue data */
-+
-+ if (flow_control) {
-+ /* Do something for flow control */
-+ ts0710_flow_off(tty, dlci, ts0710);
-+ }
-+
-+ if (tty_idx ==
-+ dlci2tty[TS0710MUX_GPRS1_DLCI].datatty) {
-+ if (add_count
-+ (TS0710MUX_GPRS1_RECV_COUNT_IDX,
-+ uih_len) < 0) {
-+ post_recv_count_flag = 1;
-+ post_recv = 1;
-+ mux_data_count2
-+ [TS0710MUX_GPRS1_RECV_COUNT_IDX]
-+ += uih_len;
-+ }
-+ } else if (tty_idx ==
-+ dlci2tty[TS0710MUX_GPRS2_DLCI].
-+ datatty) {
-+ if (add_count
-+ (TS0710MUX_GPRS2_RECV_COUNT_IDX,
-+ uih_len) < 0) {
-+ post_recv_count_flag = 1;
-+ post_recv = 1;
-+ mux_data_count2
-+ [TS0710MUX_GPRS2_RECV_COUNT_IDX]
-+ += uih_len;
-+ }
-+ }
-+
-+ if (post_recv)
-+ schedule_work(&post_recv_tqueue);
-+ } /* End processing received data */
-+ } else {
-+ TS0710_DEBUG("invalid dlci %d\n", dlci);
-+ }
-+
-+ break;
-+
-+ default:
-+ TS0710_DEBUG("illegal packet\n");
-+ break;
-+ }
-+ return 0;
-+}
-+
-+/*
-+int ts0710_send_data(ts0710_con *ts0710, __u8 dlci, __u8 *data, __u32 count)
-+{
-+ __u32 c, total = 0;
-+ __u8 tag, first;
-+
-+ if( ts0710->dlci[0].state == FLOW_STOPPED ){
-+ TS0710_DEBUG("Flow stopped on all channels, returning zero\n");
-+*/
-+/*
-+ return -EFLOWSTOPPED;
-+ } else if( ts0710->dlci[dlci].state == FLOW_STOPPED ){
-+ TS0710_DEBUG("Flow stopped, returning zero\n");
-+*/
-+/*
-+ return -EFLOWSTOPPED;
-+ } else if( ts0710->dlci[dlci].state == CONNECTED ){
-+
-+ TS0710_DEBUG("trying to send %d bytes\n", count);
-+ tag = *data;
-+ first = 1;
-+*/
-+ /* The first byte is always a Cmd/Data tag */
-+/*
-+ while( count > 1 ){
-+
-+ c = min(count, ts0710->dlci[dlci].mtu);
-+ if( queue_uih(data, c, ts0710, dlci) <= 0 ) {
-+ break;
-+ }
-+
-+ total += (c - 1);
-+ data += (c - 1);
-+ *data = tag;
-+ count -= (c - 1);
-+
-+ if( first ) {
-+ first = 0;
-+ total++;
-+ }
-+ }
-+ TS0710_DEBUG("sent %d bytes\n", total);
-+ return total;
-+ } else {
-+ TS0710_DEBUG("DLCI %d not connected\n", dlci);
-+ return -EDISCONNECTED;
-+ }
-+}
-+*/
-+
-+/* Close ts0710 channel */
-+static void ts0710_close_channel(__u8 dlci)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int try;
-+ unsigned long t;
-+
-+ TS0710_DEBUG("ts0710_disc_command on channel %d\n", dlci);
-+
-+ if ((ts0710->dlci[dlci].state == DISCONNECTED)
-+ || (ts0710->dlci[dlci].state == REJECTED)) {
-+ return;
-+ } else if (ts0710->dlci[dlci].state == DISCONNECTING) {
-+ /* Reentry */
-+ return;
-+ } else {
-+ ts0710->dlci[dlci].state = DISCONNECTING;
-+ try = 3;
-+ while (try--) {
-+ t = jiffies;
-+ send_disc(ts0710, dlci);
-+ interruptible_sleep_on_timeout(&ts0710->dlci[dlci].
-+ close_wait,
-+ TS0710MUX_TIME_OUT);
-+ if (ts0710->dlci[dlci].state == DISCONNECTED) {
-+ break;
-+ } else if (signal_pending(current)) {
-+ TS0710_PRINTK
-+ ("MUX DLCI %d Send DISC got signal!\n",
-+ dlci);
-+ break;
-+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-+ TS0710_PRINTK
-+ ("MUX DLCI %d Send DISC timeout!\n", dlci);
-+ continue;
-+ }
-+ }
-+
-+ if (ts0710->dlci[dlci].state != DISCONNECTED) {
-+ if (dlci == 0) { /* Control Channel */
-+ ts0710_upon_disconnect();
-+ } else { /* Other Channel */
-+ ts0710->dlci[dlci].state = DISCONNECTED;
-+ wake_up_interruptible(&ts0710->dlci[dlci].
-+ close_wait);
-+ ts0710_reset_dlci(dlci);
-+ }
-+ }
-+ }
-+}
-+
-+int ts0710_open_channel(__u8 dlci)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int try;
-+ int retval;
-+ unsigned long t;
-+
-+ retval = -ENODEV;
-+ if (dlci == 0) { // control channel
-+ if ((ts0710->dlci[0].state == CONNECTED)
-+ || (ts0710->dlci[0].state == FLOW_STOPPED)) {
-+ return 0;
-+ } else if (ts0710->dlci[0].state == CONNECTING) {
-+ /* Reentry */
-+ TS0710_PRINTK
-+ ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
-+ current->pid, current->comm);
-+ try = 11;
-+ while (try--) {
-+ t = jiffies;
-+ interruptible_sleep_on_timeout(&ts0710->dlci[0].
-+ open_wait,
-+ TS0710MUX_TIME_OUT);
-+ if ((ts0710->dlci[0].state == CONNECTED)
-+ || (ts0710->dlci[0].state ==
-+ FLOW_STOPPED)) {
-+ retval = 0;
-+ break;
-+ } else if (ts0710->dlci[0].state == REJECTED) {
-+ retval = -EREJECTED;
-+ break;
-+ } else if (ts0710->dlci[0].state ==
-+ DISCONNECTED) {
-+ break;
-+ } else if (signal_pending(current)) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Wait for connecting got signal!\n",
-+ dlci);
-+ retval = -EAGAIN;
-+ break;
-+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Wait for connecting timeout!\n",
-+ dlci);
-+ continue;
-+ } else if (ts0710->dlci[0].state == CONNECTING) {
-+ continue;
-+ }
-+ }
-+
-+ if (ts0710->dlci[0].state == CONNECTING) {
-+ ts0710->dlci[0].state = DISCONNECTED;
-+ }
-+ } else if ((ts0710->dlci[0].state != DISCONNECTED)
-+ && (ts0710->dlci[0].state != REJECTED)) {
-+ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
-+ return retval;
-+ } else {
-+ ts0710->initiator = 1;
-+ ts0710->dlci[0].state = CONNECTING;
-+ ts0710->dlci[0].initiator = 1;
-+ try = 10;
-+ while (try--) {
-+ t = jiffies;
-+ send_sabm(ts0710, 0);
-+ interruptible_sleep_on_timeout(&ts0710->dlci[0].
-+ open_wait,
-+ TS0710MUX_TIME_OUT);
-+ if ((ts0710->dlci[0].state == CONNECTED)
-+ || (ts0710->dlci[0].state ==
-+ FLOW_STOPPED)) {
-+ retval = 0;
-+ break;
-+ } else if (ts0710->dlci[0].state == REJECTED) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send SABM got rejected!\n",
-+ dlci);
-+ retval = -EREJECTED;
-+ break;
-+ } else if (signal_pending(current)) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send SABM got signal!\n",
-+ dlci);
-+ retval = -EAGAIN;
-+ break;
-+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send SABM timeout!\n",
-+ dlci);
-+ continue;
-+ }
-+ }
-+
-+ if (ts0710->dlci[0].state == CONNECTING) {
-+ ts0710->dlci[0].state = DISCONNECTED;
-+ }
-+ wake_up_interruptible(&ts0710->dlci[0].open_wait);
-+ }
-+ } else { // other channel
-+ if ((ts0710->dlci[0].state != CONNECTED)
-+ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
-+ return retval;
-+ } else if ((ts0710->dlci[dlci].state == CONNECTED)
-+ || (ts0710->dlci[dlci].state == FLOW_STOPPED)) {
-+ return 0;
-+ } else if ((ts0710->dlci[dlci].state == NEGOTIATING)
-+ || (ts0710->dlci[dlci].state == CONNECTING)) {
-+ /* Reentry */
-+ try = 8;
-+ while (try--) {
-+ t = jiffies;
-+ interruptible_sleep_on_timeout(&ts0710->
-+ dlci[dlci].
-+ open_wait,
-+ TS0710MUX_TIME_OUT);
-+ if ((ts0710->dlci[dlci].state == CONNECTED)
-+ || (ts0710->dlci[dlci].state ==
-+ FLOW_STOPPED)) {
-+ retval = 0;
-+ break;
-+ } else if (ts0710->dlci[dlci].state == REJECTED) {
-+ retval = -EREJECTED;
-+ break;
-+ } else if (ts0710->dlci[dlci].state ==
-+ DISCONNECTED) {
-+ break;
-+ } else if (signal_pending(current)) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Wait for connecting got signal!\n",
-+ dlci);
-+ retval = -EAGAIN;
-+ break;
-+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Wait for connecting timeout!\n",
-+ dlci);
-+ continue;
-+ } else
-+ if ((ts0710->dlci[dlci].state ==
-+ NEGOTIATING)
-+ || (ts0710->dlci[dlci].state ==
-+ CONNECTING)) {
-+ continue;
-+ }
-+ }
-+
-+ if ((ts0710->dlci[dlci].state == NEGOTIATING)
-+ || (ts0710->dlci[dlci].state == CONNECTING)) {
-+ ts0710->dlci[dlci].state = DISCONNECTED;
-+ }
-+ } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
-+ && (ts0710->dlci[dlci].state != REJECTED)) {
-+ TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
-+ return retval;
-+ } else {
-+ ts0710->dlci[dlci].state = NEGOTIATING;
-+ ts0710->dlci[dlci].initiator = 1;
-+ try = 3;
-+ while (try--) {
-+ t = jiffies;
-+ send_pn_msg(ts0710, 7, ts0710->dlci[dlci].mtu,
-+ 0, 0, dlci, 1);
-+ interruptible_sleep_on_timeout(&ts0710->
-+ dlci[dlci].
-+ open_wait,
-+ TS0710MUX_TIME_OUT);
-+ if (ts0710->dlci[dlci].state == CONNECTING) {
-+ break;
-+ } else if (signal_pending(current)) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send pn_msg got signal!\n",
-+ dlci);
-+ retval = -EAGAIN;
-+ break;
-+ } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send pn_msg timeout!\n",
-+ dlci);
-+ continue;
-+ }
-+ }
-+
-+ if (ts0710->dlci[dlci].state == CONNECTING) {
-+ try = 3;
-+ while (try--) {
-+ t = jiffies;
-+ send_sabm(ts0710, dlci);
-+ interruptible_sleep_on_timeout(&ts0710->
-+ dlci
-+ [dlci].
-+ open_wait,
-+ TS0710MUX_TIME_OUT);
-+ if ((ts0710->dlci[dlci].state ==
-+ CONNECTED)
-+ || (ts0710->dlci[dlci].state ==
-+ FLOW_STOPPED)) {
-+ retval = 0;
-+ break;
-+ } else if (ts0710->dlci[dlci].state ==
-+ REJECTED) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send SABM got rejected!\n",
-+ dlci);
-+ retval = -EREJECTED;
-+ break;
-+ } else if (signal_pending(current)) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send SABM got signal!\n",
-+ dlci);
-+ retval = -EAGAIN;
-+ break;
-+ } else if ((jiffies - t) >=
-+ TS0710MUX_TIME_OUT) {
-+ TS0710_PRINTK
-+ ("MUX DLCI:%d Send SABM timeout!\n",
-+ dlci);
-+ continue;
-+ }
-+ }
-+ }
-+
-+ if ((ts0710->dlci[dlci].state == NEGOTIATING)
-+ || (ts0710->dlci[dlci].state == CONNECTING)) {
-+ ts0710->dlci[dlci].state = DISCONNECTED;
-+ }
-+ wake_up_interruptible(&ts0710->dlci[dlci].open_wait);
-+ }
-+ }
-+ return retval;
-+}
-+
-+static int ts0710_exec_test_cmd(void)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ __u8 *f_buf; /* Frame buffer */
-+ __u8 *d_buf; /* Data buffer */
-+ int retval = -EFAULT;
-+ int j;
-+ unsigned long t;
-+
-+ if (ts0710->be_testing) {
-+ /* Reentry */
-+ t = jiffies;
-+ interruptible_sleep_on_timeout(&ts0710->test_wait,
-+ 3 * TS0710MUX_TIME_OUT);
-+ if (ts0710->be_testing == 0) {
-+ if (ts0710->test_errs == 0) {
-+ retval = 0;
-+ } else {
-+ retval = -EFAULT;
-+ }
-+ } else if (signal_pending(current)) {
-+ TS0710_DEBUG
-+ ("Wait for Test_cmd response got signal!\n");
-+ retval = -EAGAIN;
-+ } else if ((jiffies - t) >= 3 * TS0710MUX_TIME_OUT) {
-+ TS0710_DEBUG("Wait for Test_cmd response timeout!\n");
-+ retval = -EFAULT;
-+ }
-+ } else {
-+ ts0710->be_testing = 1; /* Set the flag */
-+
-+ f_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
-+ d_buf = (__u8 *) kmalloc(TEST_PATTERN_SIZE + 32, GFP_KERNEL);
-+ if ((!f_buf) || (!d_buf)) {
-+ if (f_buf) {
-+ kfree(f_buf);
-+ }
-+ if (d_buf) {
-+ kfree(d_buf);
-+ }
-+
-+ ts0710->be_testing = 0; /* Clear the flag */
-+ ts0710->test_errs = TEST_PATTERN_SIZE;
-+ wake_up_interruptible(&ts0710->test_wait);
-+ return -ENOMEM;
-+ }
-+
-+ for (j = 0; j < TEST_PATTERN_SIZE; j++) {
-+ d_buf[j] = j & 0xFF;
-+ }
-+
-+ t = jiffies;
-+ ts0710_test_msg(ts0710, d_buf, TEST_PATTERN_SIZE, MCC_CMD,
-+ f_buf);
-+ interruptible_sleep_on_timeout(&ts0710->test_wait,
-+ 2 * TS0710MUX_TIME_OUT);
-+ if (ts0710->be_testing == 0) {
-+ if (ts0710->test_errs == 0) {
-+ retval = 0;
-+ } else {
-+ retval = -EFAULT;
-+ }
-+ } else if (signal_pending(current)) {
-+ TS0710_DEBUG("Send Test_cmd got signal!\n");
-+ retval = -EAGAIN;
-+ } else if ((jiffies - t) >= 2 * TS0710MUX_TIME_OUT) {
-+ TS0710_DEBUG("Send Test_cmd timeout!\n");
-+ ts0710->test_errs = TEST_PATTERN_SIZE;
-+ retval = -EFAULT;
-+ }
-+
-+ ts0710->be_testing = 0; /* Clear the flag */
-+ wake_up_interruptible(&ts0710->test_wait);
-+
-+ /* Release buffer */
-+ if (f_buf) {
-+ kfree(f_buf);
-+ }
-+ if (d_buf) {
-+ kfree(d_buf);
-+ }
-+ }
-+
-+ return retval;
-+}
-+
-+static void mux_sched_send(void)
-+{
-+
-+#ifdef USB_FOR_MUX
-+ schedule_work(&send_tqueue);
-+#else
-+ if (!tq_serial_for_mux) {
-+ TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
-+ __FUNCTION__);
-+ return;
-+ }
-+ schedule_work(&send_tqueue);
-+ mark_bh(SERIAL_BH);
-+#endif
-+
-+}
-+
-+/****************************
-+ * TTY driver routines
-+*****************************/
-+
-+static void mux_close(struct tty_struct *tty, struct file *filp)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int line;
-+ __u8 dlci;
-+ __u8 cmdtty;
-+ __u8 datatty;
-+
-+ UNUSED_PARAM(filp);
-+
-+ if (!tty) {
-+ return;
-+ }
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ return;
-+ }
-+ if (mux_tty[line] > 0)
-+ mux_tty[line]--;
-+
-+ dlci = tty2dlci[line];
-+ cmdtty = dlci2tty[dlci].cmdtty;
-+ datatty = dlci2tty[dlci].datatty;
-+ if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
-+ if (dlci == 1) {
-+ ts0710_close_channel(0);
-+ TS0710_PRINTK
-+ ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
-+ TS0710_SIG2APLOGD();
-+ }
-+ ts0710_close_channel(dlci);
-+ }
-+
-+ if (mux_tty[line] == 0) {
-+ if ((mux_send_info_flags[line])
-+ && (mux_send_info[line])
-+ /*&& (mux_send_info[line]->filled == 0) */
-+ ) {
-+ mux_send_info_flags[line] = 0;
-+ kfree(mux_send_info[line]);
-+ mux_send_info[line] = 0;
-+ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
-+ }
-+
-+ if ((mux_recv_info_flags[line])
-+ && (mux_recv_info[line])
-+ && (mux_recv_info[line]->total == 0)) {
-+ mux_recv_info_flags[line] = 0;
-+ free_mux_recv_struct(mux_recv_info[line]);
-+ mux_recv_info[line] = 0;
-+ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
-+ }
-+
-+ ts0710_flow_on(dlci, ts0710);
-+ schedule_work(&post_recv_tqueue);
-+
-+ wake_up_interruptible(&tty->read_wait);
-+ wake_up_interruptible(&tty->write_wait);
-+ tty->packet = 0;
-+ }
-+}
-+
-+static void mux_throttle(struct tty_struct *tty)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int line;
-+ int i;
-+ __u8 dlci;
-+
-+ if (!tty) {
-+ return;
-+ }
-+
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ return;
-+ }
-+
-+ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
-+ line);
-+
-+ dlci = tty2dlci[line];
-+ if ((ts0710->dlci[0].state != CONNECTED)
-+ && (ts0710->dlci[0].state != FLOW_STOPPED)) {
-+ return;
-+ } else if ((ts0710->dlci[dlci].state != CONNECTED)
-+ && (ts0710->dlci[dlci].state != FLOW_STOPPED)) {
-+ return;
-+ }
-+
-+ if (ts0710->dlci[dlci].flow_control) {
-+ return;
-+ }
-+
-+ for (i = 0; i < 3; i++) {
-+ if (ts0710_msc_msg
-+ (ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, dlci) < 0) {
-+ continue;
-+ } else {
-+ TS0710_LOG("MUX Send Flow off on dlci %d\n", dlci);
-+ ts0710->dlci[dlci].flow_control = 1;
-+ break;
-+ }
-+ }
-+}
-+
-+static void mux_unthrottle(struct tty_struct *tty)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int line;
-+ __u8 dlci;
-+ mux_recv_struct *recv_info;
-+
-+ if (!tty) {
-+ return;
-+ }
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ return;
-+ }
-+
-+ if ((!mux_recv_info_flags[line]) || (!mux_recv_info[line])) {
-+ return;
-+ }
-+
-+ TS0710_DEBUG("Enter into %s, minor number is: %d\n", __FUNCTION__,
-+ line);
-+
-+ recv_info = mux_recv_info[line];
-+ dlci = tty2dlci[line];
-+
-+ if (recv_info->total) {
-+ recv_info->post_unthrottle = 1;
-+ schedule_work(&post_recv_tqueue);
-+ } else {
-+ ts0710_flow_on(dlci, ts0710);
-+ }
-+}
-+
-+static int mux_chars_in_buffer(struct tty_struct *tty)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int retval;
-+ int line;
-+ __u8 dlci;
-+ mux_send_struct *send_info;
-+
-+ retval = TS0710MUX_MAX_CHARS_IN_BUF;
-+ if (!tty) {
-+ goto out;
-+ }
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ goto out;
-+ }
-+
-+ dlci = tty2dlci[line];
-+ if (ts0710->dlci[0].state == FLOW_STOPPED) {
-+ TS0710_DEBUG
-+ ("Flow stopped on all channels, returning MAX chars in buffer\n");
-+ goto out;
-+ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped, returning MAX chars in buffer\n");
-+ goto out;
-+ } else if (ts0710->dlci[dlci].state != CONNECTED) {
-+ TS0710_DEBUG("DLCI %d not connected\n", dlci);
-+ goto out;
-+ }
-+
-+ if (!(mux_send_info_flags[line])) {
-+ goto out;
-+ }
-+ send_info = mux_send_info[line];
-+ if (!send_info) {
-+ goto out;
-+ }
-+ if (send_info->filled) {
-+ goto out;
-+ }
-+
-+ retval = 0;
-+
-+ out:
-+ return retval;
-+}
-+
-+static int mux_chars_in_serial_buffer(struct tty_struct *tty)
-+{
-+ UNUSED_PARAM(tty);
-+
-+ if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
-+ TS0710_PRINTK
-+ ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
-+ __FUNCTION__);
-+
-+#ifndef USB_FOR_MUX
-+ TS0710_PRINTK
-+ ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
-+ __FUNCTION__);
-+ TS0710_SIG2APLOGD();
-+#endif
-+
-+ return 0;
-+ }
-+ return COMM_FOR_MUX_DRIVER->chars_in_buffer(COMM_FOR_MUX_TTY);
-+}
-+
-+static int mux_write(struct tty_struct *tty,
-+ const unsigned char *buf, int count)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int line;
-+ __u8 dlci;
-+ mux_send_struct *send_info;
-+ __u8 *d_buf;
-+ __u16 c;
-+ __u8 post_recv;
-+
-+ if (count <= 0) {
-+ return 0;
-+ }
-+
-+ if (!tty) {
-+ return 0;
-+ }
-+
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS))
-+ return -ENODEV;
-+
-+ dlci = tty2dlci[line];
-+ if (ts0710->dlci[0].state == FLOW_STOPPED) {
-+ TS0710_DEBUG
-+ ("Flow stopped on all channels, returning zero /dev/mux%d\n",
-+ line);
-+ return 0;
-+ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped, returning zero /dev/mux%d\n", line);
-+ return 0;
-+ } else if (ts0710->dlci[dlci].state == CONNECTED) {
-+
-+ if (!(mux_send_info_flags[line])) {
-+ TS0710_PRINTK
-+ ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
-+ line);
-+ return -ENODEV;
-+ }
-+ send_info = mux_send_info[line];
-+ if (!send_info) {
-+ TS0710_PRINTK
-+ ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
-+ line);
-+ return -ENODEV;
-+ }
-+
-+ c = min(count, (ts0710->dlci[dlci].mtu - 1));
-+ if (c <= 0) {
-+ return 0;
-+ }
-+
-+ if (test_and_set_bit(BUF_BUSY, &send_info->flags))
-+ return 0;
-+
-+ if (send_info->filled) {
-+ clear_bit(BUF_BUSY, &send_info->flags);
-+ return 0;
-+ }
-+
-+ d_buf = ((__u8 *) send_info->buf) + TS0710MUX_SEND_BUF_OFFSET;
-+ memcpy(&d_buf[1], buf, c);
-+
-+ TS0710_DEBUG("Prepare to send %d bytes from /dev/mux%d", c,
-+ line);
-+ if (iscmdtty[line]) {
-+ TS0710_DEBUGSTR(&d_buf[1], c);
-+ TS0710_DEBUG("CMDTAG");
-+ d_buf[0] = CMDTAG;
-+ } else {
-+ TS0710_DEBUG("DATATAG");
-+ d_buf[0] = DATATAG;
-+ }
-+
-+ TS0710_DEBUGHEX(d_buf, c + 1);
-+
-+ send_info->frame = d_buf;
-+ queue_uih(send_info, c + 1, ts0710, dlci);
-+ send_info->filled = 1;
-+ clear_bit(BUF_BUSY, &send_info->flags);
-+
-+ post_recv = 0;
-+ if (dlci == TS0710MUX_GPRS1_DLCI) {
-+ if (add_count
-+ (TS0710MUX_GPRS1_SEND_COUNT_IDX, c) < 0) {
-+ post_recv_count_flag = 1;
-+ post_recv = 1;
-+ mux_data_count2[TS0710MUX_GPRS1_SEND_COUNT_IDX]
-+ += c;
-+ }
-+ } else if (dlci == TS0710MUX_GPRS2_DLCI) {
-+ if (add_count
-+ (TS0710MUX_GPRS2_SEND_COUNT_IDX, c) < 0) {
-+ post_recv_count_flag = 1;
-+ post_recv = 1;
-+ mux_data_count2[TS0710MUX_GPRS2_SEND_COUNT_IDX]
-+ += c;
-+ }
-+ }
-+
-+ if (post_recv)
-+ schedule_work(&post_recv_tqueue);
-+
-+ if (mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY) == 0) {
-+ /* Sending bottom half should be
-+ run after return from this function */
-+ mux_sched_send();
-+ }
-+ return c;
-+ } else {
-+ TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
-+ return -EDISCONNECTED;
-+ }
-+}
-+
-+static int mux_write_room(struct tty_struct *tty)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int retval;
-+ int line;
-+ __u8 dlci;
-+ mux_send_struct *send_info;
-+
-+ retval = 0;
-+ if (!tty) {
-+ goto out;
-+ }
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ goto out;
-+ }
-+
-+ dlci = tty2dlci[line];
-+ if (ts0710->dlci[0].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped on all channels, returning ZERO\n");
-+ goto out;
-+ } else if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped, returning ZERO\n");
-+ goto out;
-+ } else if (ts0710->dlci[dlci].state != CONNECTED) {
-+ TS0710_DEBUG("DLCI %d not connected\n", dlci);
-+ goto out;
-+ }
-+
-+ if (!(mux_send_info_flags[line])) {
-+ goto out;
-+ }
-+ send_info = mux_send_info[line];
-+ if (!send_info) {
-+ goto out;
-+ }
-+ if (send_info->filled) {
-+ goto out;
-+ }
-+
-+ retval = ts0710->dlci[dlci].mtu - 1;
-+
-+ out:
-+ return retval;
-+}
-+
-+static int mux_ioctl(struct tty_struct *tty, struct file *file,
-+ unsigned int cmd, unsigned long arg)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int line;
-+ __u8 dlci;
-+
-+ UNUSED_PARAM(file);
-+ UNUSED_PARAM(arg);
-+
-+ if (!tty) {
-+ return -EIO;
-+ }
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ return -ENODEV;
-+ }
-+
-+ dlci = tty2dlci[line];
-+ switch (cmd) {
-+ case TS0710MUX_IO_MSC_HANGUP:
-+ if (ts0710_msc_msg(ts0710, EA | RTR | DV, MCC_CMD, dlci) < 0) {
-+ return -EAGAIN;
-+ } else {
-+ return 0;
-+ }
-+
-+ case TS0710MUX_IO_TEST_CMD:
-+ return ts0710_exec_test_cmd();
-+/*
-+ case TS0710MUX_IO_DLCI_FC_ON:
-+ if( line == 0 ) {
-+ break;
-+ }
-+ if( ts0710_msc_msg(ts0710, EA | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
-+ return -EAGAIN;
-+ } else {
-+ return 0;
-+ }
-+
-+ case TS0710MUX_IO_DLCI_FC_OFF:
-+ if( line == 0 ) {
-+ break;
-+ }
-+ if( ts0710_msc_msg(ts0710, EA | FC | RTC | RTR | DV, MCC_CMD, (__u8)line) < 0) {
-+ return -EAGAIN;
-+ } else {
-+ return 0;
-+ }
-+
-+ case TS0710MUX_IO_FC_ON:
-+ if( line != 0 ) {
-+ break;
-+ }
-+ if( ts0710_fcon_msg(ts0710, MCC_CMD) < 0) {
-+ return -EAGAIN;
-+ } else {
-+ return 0;
-+ }
-+
-+ case TS0710MUX_IO_FC_OFF:
-+ if( line != 0 ) {
-+ break;
-+ }
-+ if( ts0710_fcoff_msg(ts0710, MCC_CMD) < 0) {
-+ return -EAGAIN;
-+ } else {
-+ return 0;
-+ }
-+*/
-+ default:
-+ break;
-+ }
-+ return -ENOIOCTLCMD;
-+}
-+
-+static void mux_flush_buffer(struct tty_struct *tty)
-+{
-+ int line;
-+
-+ if (!tty) {
-+ return;
-+ }
-+
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ return;
-+ }
-+
-+ TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
-+
-+ if ((mux_send_info_flags[line])
-+ && (mux_send_info[line])
-+ && (mux_send_info[line]->filled)) {
-+
-+ mux_send_info[line]->filled = 0;
-+ }
-+
-+ wake_up_interruptible(&tty->write_wait);
-+#ifdef SERIAL_HAVE_POLL_WAIT
-+ wake_up_interruptible(&tty->poll_wait);
-+#endif
-+ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
-+ tty->ldisc.write_wakeup) {
-+ (tty->ldisc.write_wakeup) (tty);
-+ }
-+
-+/*
-+ if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
-+ TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
-+
-+#ifndef USB_FOR_MUX
-+ TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
-+ TS0710_SIG2APLOGD();
-+#endif
-+
-+ return;
-+ }
-+ return COMM_FOR_MUX_DRIVER->flush_buffer(COMM_FOR_MUX_TTY);
-+*/
-+}
-+
-+static int mux_open(struct tty_struct *tty, struct file *filp)
-+{
-+ int retval;
-+ int line;
-+ __u8 dlci;
-+ __u8 cmdtty;
-+ __u8 datatty;
-+ mux_send_struct *send_info;
-+ mux_recv_struct *recv_info;
-+
-+ UNUSED_PARAM(filp);
-+
-+ retval = -ENODEV;
-+ if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
-+
-+#ifdef USB_FOR_MUX
-+ TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
-+#else
-+ TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
-+#endif
-+
-+ goto out;
-+ }
-+
-+ if (!tty) {
-+ goto out;
-+ }
-+ line = tty->index;
-+ if ((line < 0) || (line >= NR_MUXS)) {
-+ goto out;
-+ }
-+#ifdef TS0710SERVER
-+ /* do nothing as a server */
-+ mux_tty[line]++;
-+ retval = 0;
-+#else
-+ mux_tty[line]++;
-+ dlci = tty2dlci[line];
-+
-+/* if( dlci == 1 ) { */
-+ /* Open server channel 0 first */
-+ if ((retval = ts0710_open_channel(0)) != 0) {
-+ TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
-+ ts0710_init();
-+
-+ mux_tty[line]--;
-+ goto out;
-+ }
-+/* } */
-+
-+ /* Allocate memory first. As soon as connection has been established, MUX may receive */
-+ if (mux_send_info_flags[line] == 0) {
-+ send_info =
-+ (mux_send_struct *) kmalloc(sizeof(mux_send_struct),
-+ GFP_KERNEL);
-+ if (!send_info) {
-+ retval = -ENOMEM;
-+
-+ mux_tty[line]--;
-+ goto out;
-+ }
-+ send_info->length = 0;
-+ send_info->flags = 0;
-+ send_info->filled = 0;
-+ mux_send_info[line] = send_info;
-+ mux_send_info_flags[line] = 1;
-+ TS0710_DEBUG("Allocate mux_send_info for /dev/mux%d", line);
-+ }
-+
-+ if (mux_recv_info_flags[line] == 0) {
-+ recv_info =
-+ (mux_recv_struct *) kmalloc(sizeof(mux_recv_struct),
-+ GFP_KERNEL);
-+ if (!recv_info) {
-+ mux_send_info_flags[line] = 0;
-+ kfree(mux_send_info[line]);
-+ mux_send_info[line] = 0;
-+ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
-+ retval = -ENOMEM;
-+
-+ mux_tty[line]--;
-+ goto out;
-+ }
-+ recv_info->length = 0;
-+ recv_info->total = 0;
-+ recv_info->mux_packet = 0;
-+ recv_info->next = 0;
-+ recv_info->no_tty = line;
-+ recv_info->post_unthrottle = 0;
-+ mux_recv_info[line] = recv_info;
-+ mux_recv_info_flags[line] = 1;
-+ TS0710_DEBUG("Allocate mux_recv_info for /dev/mux%d", line);
-+ }
-+
-+ /* Now establish DLCI connection */
-+ cmdtty = dlci2tty[dlci].cmdtty;
-+ datatty = dlci2tty[dlci].datatty;
-+ if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
-+ if ((retval = ts0710_open_channel(dlci)) != 0) {
-+ TS0710_PRINTK("MUX: Can't connected channel %d!\n",
-+ dlci);
-+ ts0710_reset_dlci(dlci);
-+
-+ mux_send_info_flags[line] = 0;
-+ kfree(mux_send_info[line]);
-+ mux_send_info[line] = 0;
-+ TS0710_DEBUG("Free mux_send_info for /dev/mux%d", line);
-+
-+ mux_recv_info_flags[line] = 0;
-+ free_mux_recv_struct(mux_recv_info[line]);
-+ mux_recv_info[line] = 0;
-+ TS0710_DEBUG("Free mux_recv_info for /dev/mux%d", line);
-+
-+ mux_tty[line]--;
-+ goto out;
-+ }
-+ }
-+
-+ retval = 0;
-+#endif
-+ out:
-+ return retval;
-+}
-+
-+/* mux dispatcher, call from serial.c receiver_chars() */
-+void mux_dispatcher(struct tty_struct *tty)
-+{
-+ UNUSED_PARAM(tty);
-+
-+ schedule_work(&receive_tqueue);
-+}
-+
-+/*For BP UART problem Begin*/
-+#ifdef TS0710SEQ2
-+static int send_ack(ts0710_con * ts0710, __u8 seq_num, __u8 bp_seq1,
-+ __u8 bp_seq2)
-+#else
-+static int send_ack(ts0710_con * ts0710, __u8 seq_num)
-+#endif
-+{
-+ __u8 buf[20];
-+ short_frame *ack;
-+
-+#ifdef TS0710SEQ2
-+ static __u16 ack_seq = 0;
-+#endif
-+
-+ ack = (short_frame *) (buf + 1);
-+ ack->h.addr.ea = 1;
-+ ack->h.addr.cr = ((ts0710->initiator) & 0x1);
-+ ack->h.addr.d = 0;
-+ ack->h.addr.server_chn = 0;
-+ ack->h.control = ACK;
-+ ack->h.length.ea = 1;
-+
-+#ifdef TS0710SEQ2
-+ ack->h.length.len = 5;
-+ ack->data[0] = seq_num;
-+ ack->data[1] = bp_seq1;
-+ ack->data[2] = bp_seq2;
-+ ack->data[3] = (ack_seq & 0xFF);
-+ ack->data[4] = (ack_seq >> 8) & 0xFF;
-+ ack_seq++;
-+ ack->data[5] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
-+#else
-+ ack->h.length.len = 1;
-+ ack->data[0] = seq_num;
-+ ack->data[1] = crc_calc((__u8 *) ack, SHORT_CRC_CHECK);
-+#endif
-+
-+ return basic_write(ts0710, buf,
-+ (sizeof(short_frame) + FCS_SIZE +
-+ ack->h.length.len));
-+}
-+
-+/*For BP UART problem End*/
-+
-+static void receive_worker(void *private_)
-+{
-+ struct tty_struct *tty = COMM_FOR_MUX_TTY;
-+ int i, count;
-+ static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
-+ static unsigned char *tbuf_ptr = &tbuf[0];
-+ static unsigned char *start_flag = 0;
-+ unsigned char *search, *to, *from;
-+ short_frame *short_pkt;
-+ long_frame *long_pkt;
-+ static int framelen = -1;
-+
-+ /*For BP UART problem Begin */
-+ static __u8 expect_seq = 0;
-+ __u32 crc_error;
-+ __u8 *uih_data_start;
-+ __u32 uih_len;
-+ /*For BP UART problem End */
-+
-+ UNUSED_PARAM(private_);
-+
-+ if (!tty)
-+ return;
-+
-+#ifdef USB_FOR_MUX
-+ TS0710_DEBUG("Receive following bytes from IPC-USB");
-+#else
-+ TS0710_DEBUG("Receive following bytes from UART");
-+#endif
-+
-+ TS0710_DEBUGHEX(cp, count);
-+
-+ if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
-+ TS0710_PRINTK
-+ ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
-+ count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
-+ }
-+
-+ count = tty_buffer_request_room(tty, count);
-+
-+ for (i = 0; i < count; i++)
-+ tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
-+
-+ tbuf_ptr += count;
-+ search = &tbuf[0];
-+
-+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
-+ schedule_work(&receive_tqueue);
-+ return;
-+ }
-+
-+ if ((start_flag != 0) && (framelen != -1)) {
-+ if ((tbuf_ptr - start_flag) < framelen) {
-+ clear_bit(RECV_RUNNING, &mux_recv_flags);
-+ return;
-+ }
-+ }
-+
-+ while (1) {
-+ if (start_flag == 0) { /* Frame Start Flag not found */
-+ framelen = -1;
-+ while (search < tbuf_ptr) {
-+ if (*search == TS0710_BASIC_FLAG) {
-+ start_flag = search;
-+ break;
-+ }
-+#ifdef TS0710LOG
-+ else {
-+ TS0710_LOG(">S %02x %c\n", *search,
-+ *search);
-+ }
-+#endif
-+
-+ search++;
-+ }
-+
-+ if (start_flag == 0) {
-+ tbuf_ptr = &tbuf[0];
-+ break;
-+ }
-+ } else { /* Frame Start Flag found */
-+ /* 1 start flag + 1 address + 1 control + 1 or 2 length + lengths data + 1 FCS + 1 end flag */
-+ /* For BP UART problem 1 start flag + 1 seq_num + 1 address + ...... */
-+ /*if( (framelen == -1) && ((tbuf_ptr - start_flag) > TS0710_MAX_HDR_SIZE) ) */
-+ if ((framelen == -1) && ((tbuf_ptr - start_flag) > (TS0710_MAX_HDR_SIZE + SEQ_FIELD_SIZE))) { /*For BP UART problem */
-+ /*short_pkt = (short_frame *) (start_flag + 1); */
-+ short_pkt = (short_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
-+ if (short_pkt->h.length.ea == 1) { /* short frame */
-+ /*framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1; */
-+ framelen = TS0710_MAX_HDR_SIZE + short_pkt->h.length.len + 1 + SEQ_FIELD_SIZE; /*For BP UART problem */
-+ } else { /* long frame */
-+ /*long_pkt = (long_frame *) (start_flag + 1); */
-+ long_pkt = (long_frame *) (start_flag + ADDRESS_FIELD_OFFSET); /*For BP UART problem */
-+ /*framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH( long_pkt->h.length ) + 2; */
-+ framelen = TS0710_MAX_HDR_SIZE + GET_LONG_LENGTH(long_pkt->h.length) + 2 + SEQ_FIELD_SIZE; /*For BP UART problem */
-+ }
-+
-+ /*if( framelen > TS0710MUX_MAX_TOTAL_FRAME_SIZE ) { */
-+ if (framelen > (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)) { /*For BP UART problem */
-+ TS0710_LOGSTR_FRAME(0, start_flag,
-+ (tbuf_ptr -
-+ start_flag));
-+ TS0710_PRINTK
-+ ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
-+ /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
-+ __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
-+ search = start_flag + 1;
-+ start_flag = 0;
-+ framelen = -1;
-+ continue;
-+ }
-+ }
-+
-+ if ((framelen != -1)
-+ && ((tbuf_ptr - start_flag) >= framelen)) {
-+ if (*(start_flag + framelen - 1) == TS0710_BASIC_FLAG) { /* OK, We got one frame */
-+
-+ /*For BP UART problem Begin */
-+ TS0710_LOGSTR_FRAME(0, start_flag,
-+ framelen);
-+ TS0710_DEBUGHEX(start_flag, framelen);
-+
-+ short_pkt =
-+ (short_frame *) (start_flag +
-+ ADDRESS_FIELD_OFFSET);
-+ if ((short_pkt->h.length.ea) == 0) {
-+ long_pkt =
-+ (long_frame *) (start_flag +
-+ ADDRESS_FIELD_OFFSET);
-+ uih_len =
-+ GET_LONG_LENGTH(long_pkt->h.
-+ length);
-+ uih_data_start =
-+ long_pkt->h.data;
-+
-+ crc_error =
-+ crc_check((__u8
-+ *) (start_flag +
-+ SLIDE_BP_SEQ_OFFSET),
-+ LONG_CRC_CHECK +
-+ 1,
-+ *(uih_data_start +
-+ uih_len));
-+ } else {
-+ uih_len =
-+ short_pkt->h.length.len;
-+ uih_data_start =
-+ short_pkt->data;
-+
-+ crc_error =
-+ crc_check((__u8
-+ *) (start_flag +
-+ SLIDE_BP_SEQ_OFFSET),
-+ SHORT_CRC_CHECK +
-+ 1,
-+ *(uih_data_start +
-+ uih_len));
-+ }
-+
-+ if (!crc_error) {
-+ if (expect_seq ==
-+ *(start_flag +
-+ SLIDE_BP_SEQ_OFFSET)) {
-+ expect_seq++;
-+ if (expect_seq >= 4) {
-+ expect_seq = 0;
-+ }
-+#ifdef TS0710SEQ2
-+ send_ack
-+ (&ts0710_connection,
-+ expect_seq,
-+ *(start_flag +
-+ FIRST_BP_SEQ_OFFSET),
-+ *(start_flag +
-+ SECOND_BP_SEQ_OFFSET));
-+#else
-+ send_ack
-+ (&ts0710_connection,
-+ expect_seq);
-+#endif
-+
-+ ts0710_recv_data
-+ (&ts0710_connection,
-+ start_flag +
-+ ADDRESS_FIELD_OFFSET,
-+ framelen - 2 -
-+ SEQ_FIELD_SIZE);
-+ } else {
-+
-+#ifdef TS0710DEBUG
-+ if (*
-+ (start_flag +
-+ SLIDE_BP_SEQ_OFFSET)
-+ != 0x9F) {
-+#endif
-+
-+ TS0710_LOG
-+ ("MUX sequence number %d is not expected %d, discard data!\n",
-+ *
-+ (start_flag
-+ +
-+ SLIDE_BP_SEQ_OFFSET),
-+ expect_seq);
-+
-+#ifdef TS0710SEQ2
-+ send_ack
-+ (&ts0710_connection,
-+ expect_seq,
-+ *
-+ (start_flag
-+ +
-+ FIRST_BP_SEQ_OFFSET),
-+ *
-+ (start_flag
-+ +
-+ SECOND_BP_SEQ_OFFSET));
-+#else
-+ send_ack
-+ (&ts0710_connection,
-+ expect_seq);
-+#endif
-+
-+#ifdef TS0710DEBUG
-+ } else {
-+ *(uih_data_start
-+ + uih_len) =
-+ 0;
-+ TS0710_PRINTK
-+ ("MUX bp log: %s\n",
-+ uih_data_start);
-+ }
-+#endif
-+
-+ }
-+ } else { /* crc_error */
-+ search = start_flag + 1;
-+ start_flag = 0;
-+ framelen = -1;
-+ continue;
-+ } /*End if(!crc_error) */
-+
-+ /*For BP UART problem End */
-+
-+/*For BP UART problem
-+ TS0710_LOGSTR_FRAME(0, start_flag, framelen);
-+ TS0710_DEBUGHEX(start_flag, framelen);
-+ ts0710_recv_data(&ts0710_connection, start_flag + 1, framelen - 2);
-+*/
-+ search = start_flag + framelen;
-+ } else {
-+ TS0710_LOGSTR_FRAME(0, start_flag,
-+ framelen);
-+ TS0710_DEBUGHEX(start_flag, framelen);
-+ TS0710_PRINTK
-+ ("MUX: Lost synchronization!\n");
-+ search = start_flag + 1;
-+ }
-+
-+ start_flag = 0;
-+ framelen = -1;
-+ continue;
-+ }
-+
-+ if (start_flag != &tbuf[0]) {
-+ to = tbuf;
-+ from = start_flag;
-+ count = tbuf_ptr - start_flag;
-+ while (count--) {
-+ *to++ = *from++;
-+ }
-+
-+ tbuf_ptr -= (start_flag - tbuf);
-+ start_flag = tbuf;
-+ }
-+ break;
-+ } /* End Frame Start Flag found */
-+ } /* End while(1) */
-+
-+ clear_bit(RECV_RUNNING, &mux_recv_flags);
-+}
-+
-+static void post_recv_worker(void *private_)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ int tty_idx;
-+ struct tty_struct *tty;
-+ __u8 post_recv;
-+ __u8 flow_control;
-+ __u8 dlci;
-+ mux_recv_struct *recv_info, *recv_info2, *post_recv_q;
-+ int recv_room;
-+ mux_recv_packet *recv_packet, *recv_packet2;
-+ __u8 j;
-+
-+ UNUSED_PARAM(private_);
-+
-+ if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
-+ schedule_work(&post_recv_tqueue);
-+ return;
-+ }
-+
-+ TS0710_DEBUG("Enter into post_recv_worker");
-+
-+ post_recv = 0;
-+ if (!mux_recv_queue) {
-+ goto out;
-+ }
-+
-+ post_recv_q = NULL;
-+ recv_info2 = mux_recv_queue;
-+ while ((recv_info = recv_info2)) {
-+ recv_info2 = recv_info->next;
-+
-+ if (!(recv_info->total)) {
-+ TS0710_PRINTK
-+ ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
-+ __FUNCTION__);
-+ continue;
-+ }
-+
-+ tty_idx = recv_info->no_tty;
-+ dlci = tty2dlci[tty_idx];
-+ tty = mux_table[tty_idx];
-+ if ((!mux_tty[tty_idx]) || (!tty)) {
-+ TS0710_PRINTK
-+ ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
-+ tty_idx);
-+ mux_recv_info_flags[tty_idx] = 0;
-+ free_mux_recv_struct(mux_recv_info[tty_idx]);
-+ mux_recv_info[tty_idx] = 0;
-+ ts0710_flow_on(dlci, ts0710);
-+ continue;
-+ }
-+
-+ TS0710_DEBUG("/dev/mux%d recv_info->total is: %d", tty_idx,
-+ recv_info->total);
-+
-+ if (test_bit(TTY_THROTTLED, &tty->flags)) {
-+ add_post_recv_queue(&post_recv_q, recv_info);
-+ continue;
-+ } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ post_recv = 1;
-+ add_post_recv_queue(&post_recv_q, recv_info);
-+ continue;
-+ }
-+
-+ flow_control = 0;
-+ recv_packet2 = recv_info->mux_packet;
-+ while (recv_info->total) {
-+ recv_room = 65535;
-+ if (tty->receive_room)
-+ recv_room = tty->receive_room;
-+
-+ if (recv_info->length) {
-+ if (recv_room < recv_info->length) {
-+ flow_control = 1;
-+ break;
-+ }
-+
-+ /* Put queued data into read buffer of tty */
-+ TS0710_DEBUG
-+ ("Put queued recv data into read buffer of /dev/mux%d",
-+ tty_idx);
-+ TS0710_DEBUGHEX(recv_info->data,
-+ recv_info->length);
-+ (tty->ldisc.receive_buf) (tty, recv_info->data,
-+ NULL,
-+ recv_info->length);
-+ recv_info->total -= recv_info->length;
-+ recv_info->length = 0;
-+ } else { /* recv_info->length == 0 */
-+ if ((recv_packet = recv_packet2)) {
-+ recv_packet2 = recv_packet->next;
-+
-+ if (recv_room < recv_packet->length) {
-+ flow_control = 1;
-+ recv_info->mux_packet =
-+ recv_packet;
-+ break;
-+ }
-+
-+ /* Put queued data into read buffer of tty */
-+ TS0710_DEBUG
-+ ("Put queued recv data into read buffer of /dev/mux%d",
-+ tty_idx);
-+ TS0710_DEBUGHEX(recv_packet->data,
-+ recv_packet->length);
-+ (tty->ldisc.receive_buf) (tty,
-+ recv_packet->
-+ data, NULL,
-+ recv_packet->
-+ length);
-+ recv_info->total -= recv_packet->length;
-+ free_mux_recv_packet(recv_packet);
-+ } else {
-+ TS0710_PRINTK
-+ ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
-+ __FUNCTION__, recv_info->total);
-+ }
-+ } /* End recv_info->length == 0 */
-+ } /* End while( recv_info->total ) */
-+
-+ if (!(recv_info->total)) {
-+ /* Important clear */
-+ recv_info->mux_packet = 0;
-+
-+ if (recv_info->post_unthrottle) {
-+ /* Do something for post_unthrottle */
-+ ts0710_flow_on(dlci, ts0710);
-+ recv_info->post_unthrottle = 0;
-+ }
-+ } else {
-+ add_post_recv_queue(&post_recv_q, recv_info);
-+
-+ if (flow_control) {
-+ /* Do something for flow control */
-+ if (recv_info->post_unthrottle) {
-+ set_bit(TTY_THROTTLED, &tty->flags);
-+ recv_info->post_unthrottle = 0;
-+ } else {
-+ ts0710_flow_off(tty, dlci, ts0710);
-+ }
-+ } /* End if( flow_control ) */
-+ }
-+ } /* End while( (recv_info = recv_info2) ) */
-+
-+ mux_recv_queue = post_recv_q;
-+
-+ out:
-+ if (post_recv_count_flag) {
-+ post_recv_count_flag = 0;
-+ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
-+ if (mux_data_count2[j] > 0) {
-+ if (add_count(j, mux_data_count2[j]) == 0) {
-+ mux_data_count2[j] = 0;
-+ } else {
-+ post_recv_count_flag = 1;
-+ post_recv = 1;
-+ }
-+ }
-+ } /* End for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) */
-+ }
-+ /* End if( post_recv_count_flag ) */
-+ if (post_recv)
-+ schedule_work(&post_recv_tqueue);
-+ clear_bit(RECV_RUNNING, &mux_recv_flags);
-+}
-+
-+/* mux sender, call from serial.c transmit_chars() */
-+void mux_sender(void)
-+{
-+ mux_send_struct *send_info;
-+ int chars;
-+ __u8 idx;
-+
-+ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
-+ if (!chars) {
-+ /* chars == 0 */
-+ TS0710_LOG("<[]\n");
-+ mux_sched_send();
-+ return;
-+ }
-+
-+ idx = mux_send_info_idx;
-+ if ((idx < NR_MUXS) && (mux_send_info_flags[idx])) {
-+ send_info = mux_send_info[idx];
-+ if ((send_info)
-+ && (send_info->filled)
-+ && (send_info->length <=
-+ (TS0710MUX_SERIAL_BUF_SIZE - chars))) {
-+
-+ mux_sched_send();
-+ }
-+ }
-+}
-+
-+static void send_worker(void *private_)
-+{
-+ ts0710_con *ts0710 = &ts0710_connection;
-+ __u8 j;
-+ mux_send_struct *send_info;
-+ int chars;
-+ struct tty_struct *tty;
-+ __u8 dlci;
-+
-+ UNUSED_PARAM(private_);
-+
-+ TS0710_DEBUG("Enter into send_worker");
-+
-+ mux_send_info_idx = NR_MUXS;
-+
-+ if (ts0710->dlci[0].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped on all channels\n");
-+ return;
-+ }
-+
-+ for (j = 0; j < NR_MUXS; j++) {
-+
-+ if (!(mux_send_info_flags[j])) {
-+ continue;
-+ }
-+
-+ send_info = mux_send_info[j];
-+ if (!send_info) {
-+ continue;
-+ }
-+
-+ if (!(send_info->filled)) {
-+ continue;
-+ }
-+
-+ dlci = tty2dlci[j];
-+ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
-+ dlci);
-+ continue;
-+ } else if (ts0710->dlci[dlci].state != CONNECTED) {
-+ TS0710_DEBUG("DLCI %d not connected\n", dlci);
-+ send_info->filled = 0;
-+ continue;
-+ }
-+
-+ chars = mux_chars_in_serial_buffer(COMM_FOR_MUX_TTY);
-+ if (send_info->length <= (TS0710MUX_SERIAL_BUF_SIZE - chars)) {
-+ TS0710_DEBUG("Send queued UIH for /dev/mux%d", j);
-+ basic_write(ts0710, (__u8 *) send_info->frame,
-+ send_info->length);
-+ send_info->length = 0;
-+ send_info->filled = 0;
-+ } else {
-+ mux_send_info_idx = j;
-+ break;
-+ }
-+ } /* End for() loop */
-+
-+ /* Queue UIH data to be transmitted */
-+ for (j = 0; j < NR_MUXS; j++) {
-+
-+ if (!(mux_send_info_flags[j])) {
-+ continue;
-+ }
-+
-+ send_info = mux_send_info[j];
-+ if (!send_info) {
-+ continue;
-+ }
-+
-+ if (send_info->filled) {
-+ continue;
-+ }
-+
-+ /* Now queue UIH data to send_info->buf */
-+
-+ if (!mux_tty[j]) {
-+ continue;
-+ }
-+
-+ tty = mux_table[j];
-+ if (!tty) {
-+ continue;
-+ }
-+
-+ dlci = tty2dlci[j];
-+ if (ts0710->dlci[dlci].state == FLOW_STOPPED) {
-+ TS0710_DEBUG("Flow stopped on channel DLCI: %d\n",
-+ dlci);
-+ continue;
-+ } else if (ts0710->dlci[dlci].state != CONNECTED) {
-+ TS0710_DEBUG("DLCI %d not connected\n", dlci);
-+ continue;
-+ }
-+
-+ if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP))
-+ && tty->ldisc.write_wakeup) {
-+ (tty->ldisc.write_wakeup) (tty);
-+ }
-+ wake_up_interruptible(&tty->write_wait);
-+
-+#ifdef SERIAL_HAVE_POLL_WAIT
-+ wake_up_interruptible(&tty->poll_wait);
-+#endif
-+
-+ if (send_info->filled) {
-+ if (j < mux_send_info_idx) {
-+ mux_send_info_idx = j;
-+ }
-+ }
-+ } /* End for() loop */
-+}
-+
-+static int get_count(__u8 idx)
-+{
-+ int ret;
-+
-+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
-+ TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
-+ return -1;
-+ }
-+
-+ down(&mux_data_count_mutex[idx]);
-+ ret = mux_data_count[idx];
-+ up(&mux_data_count_mutex[idx]);
-+
-+ return ret;
-+}
-+
-+static int set_count(__u8 idx, int count)
-+{
-+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
-+ TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
-+ return -1;
-+ }
-+ if (count < 0) {
-+ TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
-+ return -1;
-+ }
-+
-+ down(&mux_data_count_mutex[idx]);
-+ mux_data_count[idx] = count;
-+ up(&mux_data_count_mutex[idx]);
-+
-+ return 0;
-+}
-+
-+static int add_count(__u8 idx, int count)
-+{
-+ if (idx > TS0710MUX_COUNT_MAX_IDX) {
-+ TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
-+ return -1;
-+ }
-+ if (count <= 0) {
-+ TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
-+ return -1;
-+ }
-+
-+ if (down_trylock(&mux_data_count_mutex[idx]))
-+ return -1;
-+ mux_data_count[idx] += count;
-+ up(&mux_data_count_mutex[idx]);
-+
-+ return 0;
-+}
-+
-+ssize_t file_proc_read(struct file * file, char *buf, size_t size,
-+ loff_t * ppos)
-+{
-+ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
-+ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
-+
-+ UNUSED_PARAM(file);
-+ UNUSED_PARAM(size);
-+ UNUSED_PARAM(ppos);
-+
-+ gprsData[0].recvBytes = get_count(TS0710MUX_GPRS1_RECV_COUNT_IDX);
-+ gprsData[0].sentBytes = get_count(TS0710MUX_GPRS1_SEND_COUNT_IDX);
-+ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes =
-+ get_count(TS0710MUX_GPRS2_RECV_COUNT_IDX);
-+ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes =
-+ get_count(TS0710MUX_GPRS2_SEND_COUNT_IDX);
-+
-+ copy_to_user(buf, gprsData, bufLen);
-+
-+ return bufLen;
-+}
-+
-+ssize_t file_proc_write(struct file * file, const char *buf, size_t count,
-+ loff_t * ppos)
-+{
-+ gprs_bytes gprsData[TS0710MUX_GPRS_SESSION_MAX];
-+ int bufLen = sizeof(gprs_bytes) * TS0710MUX_GPRS_SESSION_MAX;
-+
-+ UNUSED_PARAM(file);
-+ UNUSED_PARAM(count);
-+ UNUSED_PARAM(ppos);
-+
-+ memset(gprsData, 0, bufLen);
-+
-+ copy_from_user(gprsData, buf, bufLen);
-+
-+ set_count(TS0710MUX_GPRS1_RECV_COUNT_IDX, gprsData[0].recvBytes);
-+ set_count(TS0710MUX_GPRS1_SEND_COUNT_IDX, gprsData[0].sentBytes);
-+ set_count(TS0710MUX_GPRS2_RECV_COUNT_IDX,
-+ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].recvBytes);
-+ set_count(TS0710MUX_GPRS2_SEND_COUNT_IDX,
-+ gprsData[TS0710MUX_GPRS_SESSION_MAX - 1].sentBytes);
-+
-+ return bufLen;
-+}
-+
-+static void gprs_proc_init(void)
-+{
-+ gprs_proc_file =
-+ create_proc_entry("gprsbytes", S_IRUSR | S_IWUSR, NULL);
-+ gprs_proc_file->proc_fops = &file_proc_operations;
-+}
-+
-+static void gprs_proc_exit(void)
-+{
-+ remove_proc_entry("gprsbytes", gprs_proc_file);
-+}
-+
-+static int __init mux_init(void)
-+{
-+ __u8 j;
-+
-+ if (COMM_FOR_MUX_DRIVER == NULL) {
-+
-+#ifdef USB_FOR_MUX
-+ panic("please install IPC-USB first\n");
-+#else
-+ panic("please install ttyS0 first\n");
-+#endif
-+
-+ }
-+
-+ ts0710_init();
-+
-+ for (j = 0; j < NR_MUXS; j++) {
-+ mux_send_info_flags[j] = 0;
-+ mux_send_info[j] = 0;
-+ mux_recv_info_flags[j] = 0;
-+ mux_recv_info[j] = 0;
-+ }
-+ mux_send_info_idx = NR_MUXS;
-+ mux_recv_queue = NULL;
-+ mux_recv_flags = 0;
-+
-+ for (j = 0; j < TS0710MUX_COUNT_IDX_NUM; j++) {
-+ mux_data_count[j] = 0;
-+ mux_data_count2[j] = 0;
-+ init_MUTEX(&mux_data_count_mutex[j]);
-+ }
-+ post_recv_count_flag = 0;
-+
-+ INIT_WORK(&send_tqueue, send_worker, NULL);
-+ INIT_WORK(&receive_tqueue, receive_worker, NULL);
-+ INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
-+
-+ memset(&mux_driver, 0, sizeof(struct tty_driver));
-+ memset(&mux_tty, 0, sizeof(mux_tty));
-+ mux_driver.magic = TTY_DRIVER_MAGIC;
-+ mux_driver.driver_name = "ts0710mux";
-+ mux_driver.name = "ts0710mux";
-+ mux_driver.major = TS0710MUX_MAJOR;
-+ mux_driver.minor_start = TS0710MUX_MINOR_START;
-+ mux_driver.num = NR_MUXS;
-+ mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
-+ mux_driver.subtype = SERIAL_TYPE_NORMAL;
-+ mux_driver.init_termios = tty_std_termios;
-+ mux_driver.init_termios.c_iflag = 0;
-+ mux_driver.init_termios.c_oflag = 0;
-+ mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
-+ mux_driver.init_termios.c_lflag = 0;
-+ mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
-+
-+ mux_driver.ttys = mux_table;
-+ mux_driver.termios = mux_termios;
-+ mux_driver.termios_locked = mux_termios_locked;
-+// mux_driver.driver_state = mux_state;
-+ mux_driver.other = NULL;
-+
-+ mux_driver.open = mux_open;
-+ mux_driver.close = mux_close;
-+ mux_driver.write = mux_write;
-+ mux_driver.write_room = mux_write_room;
-+ mux_driver.flush_buffer = mux_flush_buffer;
-+ mux_driver.chars_in_buffer = mux_chars_in_buffer;
-+ mux_driver.throttle = mux_throttle;
-+ mux_driver.unthrottle = mux_unthrottle;
-+ mux_driver.ioctl = mux_ioctl;
-+ mux_driver.owner = THIS_MODULE;
-+
-+ if (tty_register_driver(&mux_driver))
-+ panic("Couldn't register mux driver");
-+
-+ COMM_MUX_DISPATCHER = mux_dispatcher;
-+ COMM_MUX_SENDER = mux_sender;
-+
-+ gprs_proc_init();
-+
-+ return 0;
-+}
-+
-+static void __exit mux_exit(void)
-+{
-+ __u8 j;
-+
-+ COMM_MUX_DISPATCHER = NULL;
-+ COMM_MUX_SENDER = NULL;
-+
-+ gprs_proc_exit();
-+
-+ mux_send_info_idx = NR_MUXS;
-+ mux_recv_queue = NULL;
-+ for (j = 0; j < NR_MUXS; j++) {
-+ if ((mux_send_info_flags[j]) && (mux_send_info[j])) {
-+ kfree(mux_send_info[j]);
-+ }
-+ mux_send_info_flags[j] = 0;
-+ mux_send_info[j] = 0;
-+
-+ if ((mux_recv_info_flags[j]) && (mux_recv_info[j])) {
-+ free_mux_recv_struct(mux_recv_info[j]);
-+ }
-+ mux_recv_info_flags[j] = 0;
-+ mux_recv_info[j] = 0;
-+ }
-+
-+ if (tty_unregister_driver(&mux_driver))
-+ panic("Couldn't unregister mux driver");
-+}
-+
-+module_init(mux_init);
-+module_exit(mux_exit);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
-+MODULE_DESCRIPTION("TS 07.10 Multiplexer");
-Index: linux-2.6.20.7/drivers/char/ts0710_mux.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/char/ts0710_mux.h 2007-04-21 18:04:56.000000000 +0200
-@@ -0,0 +1,103 @@
-+/*
-+ * mux_macro.h
-+ *
-+ * Copyright (C) 2002 2005 Motorola
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+ * 11/18/2002 (Motorola) - Initial version
-+ *
-+ */
-+
-+/*
-+* This header file should be included by both MUX and other applications
-+* which access MUX device files. It gives the additional macro definitions
-+* shared between MUX and applications.
-+*/
-+
-+/* MUX DLCI(Data Link Connection Identifier) Configuration */
-+/*
-+* DLCI Service
-+* 0 Control Channel
-+* 1 Voice Call & Network-related
-+* 2 SMS MO
-+* 3 SMS MT
-+* 4 Phonebook & related
-+* 5 MISC
-+* 6 CSD/FAX
-+* 7 GPRS1
-+* 8 GPRS2
-+* 9 Logger CMD
-+* 10 Logger Data
-+* 11 Test CMD
-+* 12 AGPS
-+* 13 Net Monitor
-+*/
-+
-+/* Mapping between DLCI and MUX device files */
-+/*
-+* File Name Minor DLCI AT Command/Data
-+* /dev/mux0 0 1 AT Command
-+* /dev/mux1 1 2 AT Command
-+* /dev/mux2 2 3 AT Command
-+* /dev/mux3 3 4 AT Command
-+* /dev/mux4 4 5 AT Command
-+* /dev/mux5 5 6 AT Command
-+* /dev/mux6 6 7 AT Command
-+* /dev/mux7 7 8 AT Command
-+* /dev/mux8 8 6 Data
-+* /dev/mux9 9 7 Data
-+* /dev/mux10 10 8 Data
-+* /dev/mux11 11 9 Data
-+* /dev/mux12 12 10 Data
-+* /dev/mux13 13 11 Data
-+* /dev/mux14 14 12 Data
-+* /dev/mux15 15 13 Data
-+*/
-+
-+#define MUX_CMD_FILE_VOICE_CALL "/dev/mux0"
-+#define MUX_CMD_FILE_SMS_MO "/dev/mux1"
-+#define MUX_CMD_FILE_SMS_MT "/dev/mux2"
-+#define MUX_CMD_FILE_PHONEBOOK "/dev/mux3"
-+#define MUX_CMD_FILE_MISC "/dev/mux4"
-+#define MUX_CMD_FILE_CSD "/dev/mux5"
-+#define MUX_CMD_FILE_GPRS1 "/dev/mux6"
-+#define MUX_CMD_FILE_GPRS2 "/dev/mux7"
-+
-+#define MUX_DATA_FILE_CSD "/dev/mux8"
-+#define MUX_DATA_FILE_GPRS1 "/dev/mux9"
-+#define MUX_DATA_FILE_GPRS2 "/dev/mux10"
-+#define MUX_DATA_FILE_LOGGER_CMD "/dev/mux11"
-+#define MUX_DATA_FILE_LOGGER_DATA "/dev/mux12"
-+#define MUX_DATA_FILE_TEST_CMD "/dev/mux13"
-+#define MUX_DATA_FILE_AGPS "/dev/mux14"
-+#define MUX_DATA_FILE_NET_MONITOR "/dev/mux15"
-+
-+#define NUM_MUX_CMD_FILES 8
-+#define NUM_MUX_DATA_FILES 8
-+#define NUM_MUX_FILES ( NUM_MUX_CMD_FILES + NUM_MUX_DATA_FILES )
-+
-+/* Special ioctl() upon a MUX device file for hanging up a call */
-+#define TS0710MUX_IO_MSC_HANGUP 0x54F0
-+
-+/* Special ioctl() upon a MUX device file for MUX loopback test */
-+#define TS0710MUX_IO_TEST_CMD 0x54F1
-+
-+/* Special Error code might be return from write() to a MUX device file */
-+#define EDISCONNECTED 900 /* Logical data link is disconnected */
-+
-+/* Special Error code might be return from open() to a MUX device file */
-+#define EREJECTED 901 /* Logical data link connection request is rejected */
-Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-21 18:07:45.000000000 +0200
-@@ -0,0 +1,868 @@
-+/*
-+ * linux/drivers/usb/ipcusb.c
-+ *
-+ * Implementation of a ipc driver based Intel's Bulverde USB Host
-+ * Controller.
-+ *
-+ * Copyright (C) 2003-2005 Motorola
-+ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * 2003-Nov-03 - (Motorola) created
-+ * 2004-Feb-20 - (Motorola) Add Power Manager codes
-+ * 2004-Apr-14 - (Motorola) Update Suspend/Resume codes
-+ * 2004-May-10 - (Motorola) Add unlink_urbs codes and do some updates of send
-+ * out urb sequence
-+ * 2006-Jun-22 - (Harald Welte) port to Linux 2.6.x
-+ *
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/list.h>
-+#include <linux/errno.h>
-+#include <asm/uaccess.h>
-+#include <asm/hardware.h>
-+#include <asm/arch/hardware.h>
-+#include <asm/arch-pxa/pxa-regs.h>
-+#include <asm/arch-pxa/ezx.h>
-+#include <linux/slab.h>
-+#include <linux/miscdevice.h>
-+#include <linux/init.h>
-+#include <linux/timer.h>
-+#include <linux/delay.h>
-+#include <linux/sched.h>
-+#include <linux/tty.h>
-+#include <linux/tty_driver.h>
-+#include <linux/tty_flip.h>
-+#include <linux/circ_buf.h>
-+#include <linux/usb.h>
-+
-+#include "ts0710_mux_usb.h"
-+
-+/*Macro defined for this driver*/
-+#define DRIVER_VERSION "1.0alpha1"
-+#define DRIVER_AUTHOR "Motorola / Harald Welte <laforge@openezx.org>"
-+#define DRIVER_DESC "USB IPC Driver (TS07.10 lowlevel)"
-+#define MOTO_IPC_VID 0x22b8
-+#define MOTO_IPC_PID 0x3006
-+#define IBUF_SIZE 32 /*urb size*/
-+#define IPC_USB_XMIT_SIZE 1024
-+#define IPC_URB_SIZE 32
-+#define IPC_USB_WRITE_INIT 0
-+#define IPC_USB_WRITE_XMIT 1
-+#define IPC_USB_PROBE_READY 3
-+#define IPC_USB_PROBE_NOT_READY 4
-+#define DBG_MAX_BUF_SIZE 1024
-+#define ICL_EVENT_INTERVAL (HZ)
-+#undef BVD_DEBUG
-+
-+#define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
-+#define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
-+#define IS_EP_BULK_OUT(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)
-+/*End defined macro*/
-+
-+/*global values defined*/
-+static struct usb_driver usb_ipc_driver;
-+static struct timer_list ipcusb_timer;
-+static struct timer_list suspend_timer;
-+static struct timer_list wakeup_timer;
-+static struct tty_struct ipcusb_tty; /* the coresponding tty struct, we just use flip buffer here. */
-+static struct tty_driver ipcusb_tty_driver; /* the coresponding tty driver, we just use write and chars in buff here*/
-+struct tty_driver *usb_for_mux_driver = NULL;
-+struct tty_struct *usb_for_mux_tty = NULL;
-+void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
-+void (*usb_mux_sender)(void) = NULL;
-+void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
-+void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
-+EXPORT_SYMBOL(usb_for_mux_driver);
-+EXPORT_SYMBOL(usb_for_mux_tty);
-+EXPORT_SYMBOL(usb_mux_dispatcher);
-+EXPORT_SYMBOL(usb_mux_sender);
-+EXPORT_SYMBOL(ipcusb_ap_to_bp);
-+EXPORT_SYMBOL(ipcusb_bp_to_ap);
-+static int sumbit_times = 0;
-+static int callback_times = 0;
-+//static unsigned long last_jiff = 0;
-+extern int usbh_finished_resume;
-+/*end global values defined*/
-+
-+MODULE_AUTHOR(DRIVER_AUTHOR);
-+MODULE_DESCRIPTION(DRIVER_DESC);
-+MODULE_LICENSE("GPL");
-+
-+#ifdef BVD_DEBUG
-+#define bvd_dbg(format, arg...) printk(__FILE__ ": " format "\n" , ## arg)
-+#else
-+#define bvd_dbg(format, arg...) do {} while (0)
-+#endif
-+
-+/* USB device context */
-+typedef struct {
-+ struct list_head list;
-+ int size;
-+ char *body;
-+} buf_list_t;
-+
-+struct ipc_usb_data {
-+ u_int8_t write_finished_flag;
-+ u_int8_t write_flag,
-+ ipc_flag,
-+ suspend_flag;
-+ struct usb_device *ipc_dev;
-+ struct urb readurb_mux,
-+ writeurb_mux,
-+ writeurb_dsplog;
-+ char *obuf, *ibuf;
-+ int writesize; /* max packet size for the
-+ output bulk endpoint *
-+ transfer buffers */
-+
-+ struct circ_buf xmit; /* write cric bufffer */
-+ struct list_head in_buf_list;
-+ char bulk_in_ep_mux,
-+ bulk_out_ep_mux,
-+ bulk_in_ep_dsplog;
-+ unsigned int ifnum;
-+
-+ struct tasklet_struct bh,
-+ bh_bp;
-+
-+ spinlock_t lock;
-+};
-+
-+struct ipc_usb_data *bvd_ipc;
-+
-+#ifdef BVD_DEBUG
-+static void bvd_dbg_hex(__u8 *buf, int len)
-+{
-+ static unsigned char tbuf[DBG_MAX_BUF_SIZE];
-+ int i, c;
-+
-+ if (len <= 0)
-+ return;
-+
-+ c = 0;
-+ for (i=0; (i < len) && (c < (DBG_MAX_BUF_SIZE - 3)); i++) {
-+ sprintf(&tbuf[c], "%02x ",buf[i]);
-+ c += 3;
-+ }
-+ tbuf[c] = 0;
-+
-+ printk("%s: %s\n", __FUNCTION__, tbuf);
-+}
-+#else
-+#define bvd_dbg_hex(buf, len)
-+#endif
-+
-+static int unlink_urbs(struct urb *urb)
-+{
-+ unsigned long flags;
-+ int retval;
-+
-+ spin_lock_irqsave(&bvd_ipc->lock, flags);
-+
-+ retval = usb_unlink_urb(urb);
-+ if (retval != -EINPROGRESS && retval != 0)
-+ printk("unlink urb err, %d", retval);
-+
-+ spin_unlock_irqrestore(&bvd_ipc->lock, flags);
-+ return retval;
-+}
-+
-+static void append_to_inbuf_list(struct urb *urb)
-+{
-+ buf_list_t *inbuf;
-+ int count = urb->actual_length;
-+
-+ inbuf = kmalloc(sizeof(buf_list_t), GFP_KERNEL);
-+ if (!inbuf) {
-+ printk("append_to_inbuf_list: (%d) out of memory!\n",
-+ sizeof(buf_list_t));
-+ return;
-+ }
-+
-+ inbuf->size = count;
-+ inbuf->body = kmalloc(sizeof(char)*count, GFP_KERNEL);
-+ if (!inbuf->body) {
-+ kfree(inbuf);
-+ printk("append_to_inbuf_list: (%d) out of memory!\n",
-+ sizeof(char)*count);
-+ return;
-+ }
-+ memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
-+ list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
-+}
-+
-+static void ipcusb_timeout(unsigned long data)
-+{
-+ struct tty_struct *tty = &ipcusb_tty;
-+ struct urb *urb = (struct urb *)data;
-+
-+ bvd_dbg("ipcusb_timeout***");
-+
-+ while (!(list_empty(&bvd_ipc->in_buf_list))) {
-+ int count;
-+ buf_list_t *inbuf;
-+ struct list_head *ptr = NULL;
-+
-+ ptr = bvd_ipc->in_buf_list.next;
-+ inbuf = list_entry (ptr, buf_list_t, list);
-+ count = inbuf->size;
-+ if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
-+ list_del(ptr);
-+ kfree(inbuf->body);
-+ inbuf->body = NULL;
-+ kfree(inbuf);
-+ } else {
-+ bvd_dbg("ipcusb_timeout: bvd_ipc->in_buf_list empty!");
-+ break;
-+ }
-+ }
-+
-+ if (usb_mux_dispatcher)
-+ usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
-+
-+ if (list_empty(&bvd_ipc->in_buf_list)) {
-+ urb->actual_length = 0;
-+ urb->dev = bvd_ipc->ipc_dev;
-+ if (usb_submit_urb(urb, GFP_ATOMIC))
-+ bvd_dbg("ipcusb_timeout: failed resubmitting read urb");
-+ bvd_dbg("ipcusb_timeout: resubmited read urb");
-+ } else {
-+ ipcusb_timer.data = (unsigned long)urb;
-+ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
-+ }
-+}
-+
-+static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
-+{
-+ buf_list_t *inbuf;
-+ int count = urb->actual_length;
-+ struct tty_struct *tty = &ipcusb_tty;
-+
-+ bvd_dbg("usb_ipc_read_bulk: begining!");
-+ if (urb->status)
-+ printk("nonzero read bulk status received: %d\n", urb->status);
-+
-+ bvd_dbg("usb_ipc_read_bulk: urb->actual_length=%d", urb->actual_length);
-+ bvd_dbg("usb_ipc_read_bulk: urb->transfer_buffer:");
-+
-+ bvd_dbg_hex((unsigned char*)urb->transfer_buffer, urb->actual_length);
-+
-+ if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
-+ (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
-+
-+ if (!(list_empty(&bvd_ipc->in_buf_list))) {
-+ int need_mux = 0;
-+
-+ bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
-+ if (count > 0) {
-+ bvd_ipc->suspend_flag = 1;
-+ append_to_inbuf_list(urb); /* append the current received urb */
-+#if 0
-+ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
-+ {
-+ last_jiff = jiffies;
-+ queue_apm_event(KRNL_ICL, NULL);
-+ }
-+#endif
-+ }
-+
-+ while (!(list_empty(&bvd_ipc->in_buf_list))) {
-+ struct list_head* ptr = NULL;
-+ ptr = bvd_ipc->in_buf_list.next;
-+ inbuf = list_entry(ptr, buf_list_t, list);
-+ count = inbuf->size;
-+ need_mux = 1;
-+
-+ tty_insert_flip_string(tty, inbuf->body, count);
-+
-+ list_del(ptr);
-+ kfree(inbuf->body);
-+ inbuf->body = NULL;
-+ kfree(inbuf);
-+ }
-+
-+ if (usb_mux_dispatcher && need_mux)
-+ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
-+
-+ if (list_empty(&bvd_ipc->in_buf_list)) {
-+ urb->actual_length = 0;
-+ urb->dev = bvd_ipc->ipc_dev;
-+ if (usb_submit_urb(urb, GFP_ATOMIC))
-+ bvd_dbg("usb_ipc_read_bulk: "
-+ "failed resubmitting read urb");
-+ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
-+ } else {
-+ ipcusb_timer.data = (unsigned long)urb;
-+ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
-+ }
-+ } else if (count > 0) {
-+ bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
-+ bvd_ipc->suspend_flag = 1;
-+
-+ if (tty_insert_flip_string(tty, urb->transfer_buffer,
-+ count) < count) {
-+ bvd_ipc->suspend_flag = 1;
-+ append_to_inbuf_list(urb);
-+ ipcusb_timer.data = (unsigned long)urb;
-+ mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
-+#if 0
-+ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
-+ {
-+ last_jiff = jiffies;
-+ queue_apm_event(KRNL_ICL, NULL);
-+ }
-+#endif
-+ }
-+
-+ if (usb_mux_dispatcher)
-+ usb_mux_dispatcher(tty); /* call Liu changhui's func. */
-+
-+ urb->actual_length = 0;
-+ urb->dev = bvd_ipc->ipc_dev;
-+ if (usb_submit_urb(urb, GFP_ATOMIC))
-+ bvd_dbg("failed resubmitting read urb");
-+#if 0
-+ if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
-+ {
-+ last_jiff = jiffies;
-+ queue_apm_event(KRNL_ICL, NULL);
-+ }
-+#endif
-+ bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
-+ }
-+
-+ bvd_dbg("usb_ipc_read_bulk: completed!!!");
-+}
-+
-+static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
-+{
-+ callback_times++;
-+ bvd_ipc->write_finished_flag = 1;
-+
-+ bvd_dbg("usb_ipc_write_bulk: begining!");
-+ //printk("%s: write_finished_flag=%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
-+
-+ if (urb->status)
-+ printk("nonzero write bulk status received: %d\n", urb->status);
-+
-+ if (usb_mux_sender)
-+ usb_mux_sender(); /**call Liu changhui's func**/
-+
-+ //printk("usb_ipc_write_bulk: mark ipcusb_softint!\n");
-+ tasklet_schedule(&bvd_ipc->bh);
-+
-+ bvd_dbg("usb_ipc_write_bulk: finished!");
-+}
-+
-+static void wakeup_timeout(unsigned long data)
-+{
-+ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
-+ bvd_dbg("wakup_timeout: send GPIO_MCU_INT_SW signal!");
-+}
-+
-+static void suspend_timeout(unsigned long data)
-+{
-+ if (bvd_ipc->suspend_flag == 1) {
-+ bvd_ipc->suspend_flag = 0;
-+ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
-+ bvd_dbg("suspend_timeout: add the suspend timer again");
-+ } else {
-+ unlink_urbs(&bvd_ipc->readurb_mux);
-+ UHCRHPS3 = 0x4;
-+ mdelay(40);
-+ bvd_dbg("suspend_timeout: send SUSPEND signal! UHCRHPS3=0x%x",
-+ UHCRHPS3);
-+ }
-+}
-+
-+static void ipcusb_xmit_data(void)
-+{
-+ int c, count = IPC_URB_SIZE;
-+ int result = 0;
-+ int buf_flag = 0;
-+ int buf_num = 0;
-+
-+ //printk("%s: sumbit_times=%d, callback_times=%d\n", __FUNCTION__, sumbit_times, callback_times);
-+ if (bvd_ipc->write_finished_flag == 0)
-+ return;
-+
-+ while (1) {
-+ c = CIRC_CNT_TO_END(bvd_ipc->xmit.head, bvd_ipc->xmit.tail,
-+ IPC_USB_XMIT_SIZE);
-+ if (count < c)
-+ c = count;
-+ if (c <= 0)
-+ break;
-+
-+ memcpy(bvd_ipc->obuf+buf_num,
-+ bvd_ipc->xmit.buf + bvd_ipc->xmit.tail, c);
-+ buf_flag = 1;
-+ bvd_ipc->xmit.tail = ((bvd_ipc->xmit.tail + c)
-+ & (IPC_USB_XMIT_SIZE-1));
-+ count -= c;
-+ buf_num += c;
-+ }
-+
-+ if (buf_num == 0) {
-+ bvd_dbg("ipcusb_xmit_data: buf_num=%d, add suspend_timer",
-+ buf_num);
-+ bvd_ipc->suspend_flag = 0;
-+ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
-+ }
-+
-+ bvd_dbg("ipcusb_xmit_data: buf_num=%d", buf_num);
-+ bvd_dbg("ipcusb_xmit_data: bvd_ipc->obuf: ");
-+
-+ bvd_dbg_hex((bvd_ipc->obuf)-buf_num, buf_num);
-+
-+ if (buf_flag) {
-+ bvd_ipc->writeurb_mux.transfer_buffer_length = buf_num;
-+ bvd_dbg("ipcusb_xmit_data: copy data to write urb finished! ");
-+
-+ if ((UHCRHPS3 & 0x4) == 0x4) {
-+ static int ret;
-+ int time = 0;
-+
-+ /* if BP sleep, wake up BP first */
-+ pxa_gpio_mode(GPIO_IN | 41);
-+ if (GPIO_is_high(41)) {
-+ if (GPIO_is_high(GPIO_MCU_INT_SW))
-+ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
-+ else
-+ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
-+
-+ time = jiffies;
-+ while (GPIO_is_high(41) && (jiffies < (time+HZ)));
-+
-+ if (GPIO_is_high(41)) {
-+ printk("%s: Wakeup BP timeout! BP state is %d\n",
-+ __FUNCTION__, GPIO_is_high(41));
-+ }
-+ if (GPIO_is_high(GPIO_MCU_INT_SW))
-+ GPCR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
-+ else
-+ GPSR(GPIO_MCU_INT_SW) = GPIO_bit(GPIO_MCU_INT_SW);
-+ }
-+
-+ /* Resume BP */
-+ UHCRHPS3 = 0x8;
-+ mdelay(40);
-+ bvd_dbg("ipcusb_xmit_data: Send RESUME signal! UHCRHPS3=0x%x",
-+ UHCRHPS3);
-+ /*send IN token*/
-+ bvd_ipc->readurb_mux.actual_length = 0;
-+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
-+ if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
-+ printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
-+ "failed! status=%d\n", ret);
-+ bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
-+ }
-+
-+ sumbit_times++;
-+ bvd_ipc->write_finished_flag = 0;
-+ //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
-+ bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
-+ if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
-+ warn("ipcusb_xmit_data: funky result! result=%d\n", result);
-+
-+ bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
-+
-+ }
-+}
-+
-+static void usbipc_bh_func(unsigned long param)
-+{
-+ ipcusb_xmit_data();
-+}
-+
-+extern void get_halted_bit(void);
-+
-+static void usbipc_bh_bp_func(unsigned long param)
-+{
-+ if ((UHCRHPS3 & 0x4) == 0x4) {
-+ UHCRHPS3 = 0x8;
-+ mdelay(40);
-+ bvd_dbg("ipcusb_softint_send_readurb: Send RESUME signal! "
-+ "UHCRHPS3=0x%x", UHCRHPS3);
-+ }
-+ if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
-+ get_halted_bit();
-+
-+ /*send a IN token*/
-+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
-+ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) {
-+ bvd_dbg("ipcusb_softint_send_readurb: "
-+ "usb_submit_urb(read mux bulk) failed!");
-+ }
-+ bvd_dbg("ipcusb_softint_send_readurb: Send a IN token successfully!");
-+ bvd_ipc->suspend_flag = 0;
-+ bvd_dbg("ipcusb_softint_send_readurb: add suspend_timer");
-+ mod_timer(&suspend_timer, jiffies+(5000*HZ/1000));
-+ }
-+}
-+
-+static int usb_ipc_write(struct tty_struct *tty,
-+ const unsigned char *buf, int count)
-+{
-+ int c, ret = 0;
-+
-+ bvd_dbg("usb_ipc_write: count=%d, buf: ", count);
-+ bvd_dbg_hex(buf, count);
-+
-+ if (count <= 0)
-+ return 0;
-+
-+ if (*ipcusb_ap_to_bp != NULL)
-+ (*ipcusb_ap_to_bp)(buf, count);
-+
-+ bvd_ipc->suspend_flag = 1;
-+
-+ if ((bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) &&
-+ (bvd_ipc->xmit.head == bvd_ipc->xmit.tail)) {
-+ bvd_dbg("usb_ipc_write: set write_flag");
-+ bvd_ipc->write_flag = IPC_USB_WRITE_XMIT;
-+ }
-+
-+ while (1) {
-+ c = CIRC_SPACE_TO_END(bvd_ipc->xmit.head,
-+ bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
-+ if (count < c)
-+ c = count;
-+ if (c <= 0)
-+ break;
-+
-+ memcpy(bvd_ipc->xmit.buf + bvd_ipc->xmit.head, buf, c);
-+ bvd_ipc->xmit.head = ((bvd_ipc->xmit.head + c)
-+ & (IPC_USB_XMIT_SIZE-1));
-+ buf += c;
-+ count -= c;
-+ ret += c;
-+ }
-+ bvd_dbg("usb_ipc_write: ret=%d, bvd_ipc->xmit.buf: ", ret);
-+
-+ bvd_dbg_hex(bvd_ipc->xmit.buf, ret);
-+
-+ if (bvd_ipc->write_flag == IPC_USB_WRITE_XMIT) {
-+ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
-+ bvd_dbg("usb_ipc_write: mark ipcusb_softint");
-+ tasklet_schedule(&bvd_ipc->bh);
-+ }
-+
-+ bvd_dbg("usb_ipc_write: ret=%d\n", ret);
-+ return ret;
-+}
-+
-+static int usb_ipc_chars_in_buffer(struct tty_struct *tty)
-+{
-+ return CIRC_CNT(bvd_ipc->xmit.head, bvd_ipc->xmit.tail, IPC_USB_XMIT_SIZE);
-+}
-+
-+void usb_send_readurb(void)
-+{
-+ //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
-+
-+ if (usbh_finished_resume == 0)
-+ return;
-+
-+ tasklet_schedule(&bvd_ipc->bh_bp);
-+}
-+
-+static int usb_ipc_probe(struct usb_interface *intf,
-+ const struct usb_device_id *id)
-+{
-+ struct usb_device *usbdev = interface_to_usbdev(intf);
-+ struct usb_config_descriptor *ipccfg;
-+ struct usb_interface_descriptor *interface;
-+ struct usb_endpoint_descriptor *endpoint;
-+ int ep_cnt, readsize, writesize;
-+ char have_bulk_in_mux, have_bulk_out_mux;
-+
-+ bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
-+ usbdev->descriptor.idVendor, usbdev->descriptor.idProduct);
-+
-+ if ((usbdev->descriptor.idVendor != MOTO_IPC_VID) ||
-+ (usbdev->descriptor.idProduct != MOTO_IPC_PID))
-+ return -ENODEV;
-+
-+ /* a2590c : dsplog interface is not supported by this driver */
-+ if (intf->minor == 2) /* dsplog interface number is 2 */
-+ return -1;
-+
-+ bvd_dbg("usb_ipc_probe: USB dev address:%p", usbdev);
-+ bvd_dbg("usb_ipc_probe: ifnum:%u", intf->minor);
-+
-+ ipccfg = &usbdev->actconfig->desc;
-+ bvd_dbg("usb_ipc_prob: config%d", ipccfg->bConfigurationValue);
-+ bvd_dbg("usb_ipc_prob: bNumInterfaces = %d", ipccfg->bNumInterfaces);
-+
-+ /* After this point we can be a little noisy about what we are trying
-+ * to configure, hehe. */
-+ if (usbdev->descriptor.bNumConfigurations != 1) {
-+ info("usb_ipc_probe: Only one device configuration "
-+ "is supported.");
-+ return -1;
-+ }
-+
-+ if (usbdev->config[0].desc.bNumInterfaces != 3) {
-+ info("usb_ipc_probe: Only three device interfaces are "
-+ "supported.");
-+ return -1;
-+ }
-+
-+ interface = &intf->cur_altsetting->desc;
-+ endpoint = &intf->cur_altsetting->endpoint[0].desc;
-+ /* Start checking for two bulk endpoints or ... FIXME: This is a future
-+ * enhancement...*/
-+ bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
-+ (int) interface->bNumEndpoints);
-+ if (interface->bNumEndpoints != 2) {
-+ info("usb_ipc_probe: Only two endpoints supported.");
-+ return -1;
-+ }
-+
-+ ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
-+
-+ bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
-+ (&endpoint[0])->bEndpointAddress);
-+ bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
-+ (&endpoint[1])->bEndpointAddress);
-+
-+ while (ep_cnt < interface->bNumEndpoints) {
-+
-+ if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
-+ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
-+ (&endpoint[ep_cnt])->bEndpointAddress);
-+ have_bulk_in_mux =
-+ (&endpoint[ep_cnt])->bEndpointAddress;
-+ readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
-+ bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
-+ ep_cnt++;
-+ continue;
-+ }
-+
-+ if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
-+ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
-+ (&endpoint[ep_cnt])->bEndpointAddress);
-+ have_bulk_out_mux =
-+ (&endpoint[ep_cnt])->bEndpointAddress;
-+ writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
-+ bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
-+ ep_cnt++;
-+ continue;
-+ }
-+
-+ info("usb_ipc_probe: Undetected endpoint ^_^ ");
-+ /* Shouldn't ever get here unless we have something weird */
-+ return -1;
-+ }
-+
-+ /* Perform a quick check to make sure that everything worked as it
-+ * should have. */
-+
-+ switch (interface->bNumEndpoints) {
-+ case 2:
-+ if (!have_bulk_in_mux || !have_bulk_out_mux) {
-+ info("usb_ipc_probe: Two bulk endpoints required.");
-+ return -1;
-+ }
-+ break;
-+ default:
-+ info("usb_ipc_probe: Endpoint determination failed ^_^ ");
-+ return -1;
-+ }
-+
-+ /* Ok, now initialize all the relevant values */
-+ if (!(bvd_ipc->obuf = (char *)kmalloc(writesize, GFP_KERNEL))) {
-+ err("usb_ipc_probe: Not enough memory for the output buffer.");
-+ kfree(bvd_ipc);
-+ return -1;
-+ }
-+ bvd_dbg("usb_ipc_probe: obuf address:%p", bvd_ipc->obuf);
-+
-+ if (!(bvd_ipc->ibuf = (char *)kmalloc(readsize, GFP_KERNEL))) {
-+ err("usb_ipc_probe: Not enough memory for the input buffer.");
-+ kfree(bvd_ipc->obuf);
-+ kfree(bvd_ipc);
-+ return -1;
-+ }
-+ bvd_dbg("usb_ipc_probe: ibuf address:%p", bvd_ipc->ibuf);
-+
-+ bvd_ipc->ipc_flag = IPC_USB_PROBE_READY;
-+ bvd_ipc->write_finished_flag = 1;
-+ bvd_ipc->suspend_flag = 1;
-+ bvd_ipc->bulk_in_ep_mux= have_bulk_in_mux;
-+ bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
-+ bvd_ipc->ipc_dev = usbdev;
-+ bvd_ipc->writesize = writesize;
-+ INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
-+
-+ bvd_ipc->bh.func = usbipc_bh_func;
-+ bvd_ipc->bh.data = (unsigned long) bvd_ipc;
-+
-+ bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
-+ bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
-+
-+ /*Build a write urb*/
-+ usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
-+ usb_sndbulkpipe(bvd_ipc->ipc_dev,
-+ bvd_ipc->bulk_out_ep_mux),
-+ bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
-+ bvd_ipc);
-+ //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
-+
-+ /*Build a read urb and send a IN token first time*/
-+ usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
-+ usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
-+ bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
-+ //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
-+
-+ usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
-+ //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
-+
-+ // a2590c: dsplog is not supported by this driver
-+ // usb_driver_claim_interface(&usb_ipc_driver,
-+ // &ipccfg->interface[2], bvd_ipc);
-+ /*send a IN token first time*/
-+ bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
-+ if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
-+ printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
-+
-+ bvd_dbg("usb_ipc_prob: Send a IN token successfully!");
-+
-+ if (bvd_ipc->xmit.head != bvd_ipc->xmit.tail) {
-+ printk("usb_ipc_probe: mark ipcusb_softint!\n");
-+ tasklet_schedule(&bvd_ipc->bh);
-+ }
-+
-+ printk("usb_ipc_probe: completed probe!");
-+ usb_set_intfdata(intf, &bvd_ipc);
-+ return 0;
-+}
-+
-+static void usb_ipc_disconnect(struct usb_interface *intf)
-+{
-+ //struct usb_device *usbdev = interface_to_usbdev(intf);
-+ struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
-+
-+ printk("usb_ipc_disconnect:*** \n");
-+
-+ if ((UHCRHPS3 & 0x4) == 0)
-+ usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
-+
-+ usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
-+
-+ bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
-+ kfree(bvd_ipc_disconnect->ibuf);
-+ kfree(bvd_ipc_disconnect->obuf);
-+
-+ usb_driver_release_interface(&usb_ipc_driver,
-+ bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
-+ usb_driver_release_interface(&usb_ipc_driver,
-+ bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
-+
-+ //a2590c: dsplog interface is not supported by this driver
-+ //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
-+
-+ bvd_ipc_disconnect->ipc_dev = NULL;
-+
-+ usb_set_intfdata(intf, NULL);
-+
-+ printk("usb_ipc_disconnect completed!\n");
-+}
-+
-+static struct usb_device_id usb_ipc_id_table[] = {
-+ { USB_DEVICE(MOTO_IPC_VID, MOTO_IPC_PID) },
-+ { } /* Terminating entry */
-+};
-+
-+static struct usb_driver usb_ipc_driver = {
-+ .name = "usb ipc",
-+ .probe = usb_ipc_probe,
-+ .disconnect = usb_ipc_disconnect,
-+ .id_table = usb_ipc_id_table,
-+};
-+
-+static int __init usb_ipc_init(void)
-+{
-+ int result;
-+
-+ bvd_dbg("init usb_ipc");
-+ /* register driver at the USB subsystem */
-+ result = usb_register(&usb_ipc_driver);
-+ if (result < 0) {
-+ err ("usb ipc driver could not be registered");
-+ return result;
-+ }
-+
-+ /*init the related mux interface*/
-+ if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
-+ err("usb_ipc_init: Out of memory.");
-+ usb_deregister(&usb_ipc_driver);
-+ return -ENOMEM;
-+ }
-+ bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
-+
-+ if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
-+ err("usb_ipc_init: Not enough memory for the input buffer.");
-+ kfree(bvd_ipc);
-+ usb_deregister(&usb_ipc_driver);
-+ return -ENOMEM;
-+ }
-+ bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
-+ bvd_ipc->xmit.buf);
-+ bvd_ipc->ipc_dev = NULL;
-+ bvd_ipc->xmit.head = bvd_ipc->xmit.tail = 0;
-+ bvd_ipc->write_flag = IPC_USB_WRITE_INIT;
-+
-+ ipcusb_tty_driver.write = usb_ipc_write;
-+ ipcusb_tty_driver.chars_in_buffer = usb_ipc_chars_in_buffer;
-+
-+ usb_for_mux_driver = &ipcusb_tty_driver;
-+ usb_for_mux_tty = &ipcusb_tty;
-+
-+ /* init timers for ipcusb read process and usb suspend */
-+ init_timer(&ipcusb_timer);
-+ ipcusb_timer.function = ipcusb_timeout;
-+
-+ init_timer(&suspend_timer);
-+ suspend_timer.function = suspend_timeout;
-+
-+ init_timer(&wakeup_timer);
-+ wakeup_timer.function = wakeup_timeout;
-+
-+ info("USB Host(Bulverde) IPC driver registered.");
-+ info(DRIVER_VERSION ":" DRIVER_DESC);
-+
-+ return 0;
-+}
-+
-+static void __exit usb_ipc_exit(void)
-+{
-+ bvd_dbg("cleanup bvd_ipc");
-+
-+ kfree(bvd_ipc->xmit.buf);
-+ kfree(bvd_ipc);
-+ usb_deregister(&usb_ipc_driver);
-+
-+ info("USB Host(Bulverde) IPC driver deregistered.");
-+}
-+
-+module_init(usb_ipc_init);
-+module_exit(usb_ipc_exit);
-+EXPORT_SYMBOL(usb_send_readurb);
-Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.h 2007-04-21 18:07:21.000000000 +0200
-@@ -0,0 +1,29 @@
-+/*
-+ * linux/drivers/usb/ipcusb.h
-+ *
-+ * Implementation of a ipc driver based Intel's Bulverde USB Host
-+ * Controller.
-+ *
-+ * Copyright (C) 2003-2005 Motorola
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * 2003-Nov-18 - (Motorola) created
-+ *
-+ */
-+extern struct tty_driver *usb_for_mux_driver;
-+extern struct tty_struct *usb_for_mux_tty;
-+extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
-+extern void (*usb_mux_sender)(void);
diff --git a/packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch b/packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch
deleted file mode 100644
index fc9daf5297..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/usb_add_epalloc-r3.patch
+++ /dev/null
@@ -1,282 +0,0 @@
-Index: linux-2.6.20.7/drivers/usb/gadget/epautoconf.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/epautoconf.c 2007-04-21 11:24:21.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/epautoconf.c 2007-04-21 11:27:53.000000000 -0300
-@@ -228,14 +228,19 @@
- *
- * On failure, this returns a null endpoint descriptor.
- */
--struct usb_ep * __devinit usb_ep_autoconfig (
-+struct usb_ep * usb_ep_autoconfig (
- struct usb_gadget *gadget,
-- struct usb_endpoint_descriptor *desc
-+ struct usb_endpoint_descriptor *desc,
-+ struct usb_endpoint_config *epconfig, int numconfigs
- )
- {
- struct usb_ep *ep;
- u8 type;
-
-+ /* Use device specific ep allocation code if provided */
-+ if (gadget->ops->ep_alloc)
-+ return gadget->ops->ep_alloc(gadget, desc, epconfig, numconfigs);
-+
- type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
-
- /* First, apply chip-specific "best usage" knowledge.
-Index: linux-2.6.20.7/drivers/usb/gadget/ether.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/ether.c 2007-04-21 11:27:52.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/ether.c 2007-04-21 11:27:53.000000000 -0300
-@@ -2219,7 +2219,8 @@
- struct eth_dev *dev;
- struct net_device *net;
- u8 cdc = 1, zlp = 1, rndis = 1;
-- struct usb_ep *in_ep, *out_ep, *status_ep = NULL;
-+ struct usb_ep *in_ep = NULL , *out_ep = NULL, *status_ep = NULL;
-+ struct usb_endpoint_config ep_config[2];
- int status = -ENOMEM;
- int gcnum;
-
-@@ -2318,7 +2319,26 @@
-
- /* all we really need is bulk IN/OUT */
- usb_ep_autoconfig_reset (gadget);
-- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc);
-+
-+ ep_config[0].config = DEV_CONFIG_VALUE;
-+#if defined(DEV_CONFIG_CDC)
-+ ep_config[0].interface = data_intf.bInterfaceNumber;
-+ ep_config[0].altinterface = data_intf.bAlternateSetting;
-+#else /* DEV_CONFIG_SUBSET */
-+ ep_config[0].interface = subset_data_intf.bInterfaceNumber;
-+ ep_config[0].altinterface = subset_data_intf.bAlternateSetting;
-+#endif
-+
-+#ifdef CONFIG_USB_ETH_RNDIS
-+ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE;
-+ ep_config[1].interface = rndis_data_intf.bInterfaceNumber;
-+ ep_config[1].altinterface = rndis_data_intf.bAlternateSetting;
-+
-+ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2);
-+#else
-+ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 1);
-+#endif
-+
- if (!in_ep) {
- autoconf_fail:
- dev_err (&gadget->dev,
-@@ -2328,7 +2348,12 @@
- }
- in_ep->driver_data = in_ep; /* claim */
-
-- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
-+#ifdef CONFIG_USB_ETH_RNDIS
-+ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2);
-+#else
-+ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 1);
-+#endif
-+
- if (!out_ep)
- goto autoconf_fail;
- out_ep->driver_data = out_ep; /* claim */
-@@ -2338,7 +2363,25 @@
- * Since some hosts expect one, try to allocate one anyway.
- */
- if (cdc || rndis) {
-- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc);
-+#ifdef DEV_CONFIG_CDC
-+ ep_config[0].config = DEV_CONFIG_VALUE;
-+ ep_config[0].interface = control_intf.bInterfaceNumber;
-+ ep_config[0].altinterface = control_intf.bAlternateSetting;
-+#endif
-+#ifdef CONFIG_USB_ETH_RNDIS
-+ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE;
-+ ep_config[1].interface = rndis_control_intf.bInterfaceNumber;
-+ ep_config[1].altinterface = rndis_control_intf.bAlternateSetting;
-+#endif
-+
-+#if defined(DEV_CONFIG_CDC) && defined(CONFIG_USB_ETH_RNDIS)
-+ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 2);
-+#elif defined(CONFIG_USB_ETH_RNDIS)
-+ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[1], 1);
-+#else
-+ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 1);
-+#endif
-+
- if (status_ep) {
- status_ep->driver_data = status_ep; /* claim */
- } else if (rndis) {
-Index: linux-2.6.20.7/drivers/usb/gadget/file_storage.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/file_storage.c 2007-04-21 11:24:21.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/file_storage.c 2007-04-21 11:27:53.000000000 -0300
-@@ -3850,6 +3850,7 @@
- struct usb_ep *ep;
- struct usb_request *req;
- char *pathbuf, *p;
-+ struct usb_endpoint_config ep_config;
-
- fsg->gadget = gadget;
- set_gadget_data(gadget, fsg);
-@@ -3920,21 +3921,25 @@
- }
-
- /* Find all the endpoints we will use */
-+ ep_config.config = CONFIG_VALUE;
-+ ep_config.interface = intf_desc.bInterfaceNumber;
-+ ep_config.altinterface = intf_desc.bAlternateSetting;
-+
- usb_ep_autoconfig_reset(gadget);
-- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc);
-+ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, &ep_config, 1);
- if (!ep)
- goto autoconf_fail;
- ep->driver_data = fsg; // claim the endpoint
- fsg->bulk_in = ep;
-
-- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc);
-+ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, &ep_config, 1);
- if (!ep)
- goto autoconf_fail;
- ep->driver_data = fsg; // claim the endpoint
- fsg->bulk_out = ep;
-
- if (transport_is_cbi()) {
-- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc);
-+ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, &ep_config, 1);
- if (!ep)
- goto autoconf_fail;
- ep->driver_data = fsg; // claim the endpoint
-Index: linux-2.6.20.7/drivers/usb/gadget/serial.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/serial.c 2007-04-21 11:24:21.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/serial.c 2007-04-21 11:27:53.000000000 -0300
-@@ -1357,6 +1357,7 @@
- struct usb_ep *ep;
- struct gs_dev *dev;
- int gcnum;
-+ struct usb_endpoint_config ep_config[2];
-
- /* Some controllers can't support CDC ACM:
- * - sh doesn't support multiple interfaces or configs;
-@@ -1377,22 +1378,33 @@
- __constant_cpu_to_le16(GS_VERSION_NUM|0x0099);
- }
-
-+ ep_config[0].config = GS_BULK_CONFIG_ID;
-+ ep_config[0].interface = gs_bulk_interface_desc.bInterfaceNumber;
-+ ep_config[0].altinterface = gs_bulk_interface_desc.bAlternateSetting;
-+ ep_config[1].config = GS_ACM_CONFIG_ID;
-+ ep_config[1].interface = gs_data_interface_desc.bInterfaceNumber;
-+ ep_config[1].altinterface = gs_data_interface_desc.bAlternateSetting;
-+
- usb_ep_autoconfig_reset(gadget);
-
-- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc);
-+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, &ep_config[0], 2);
- if (!ep)
- goto autoconf_fail;
- EP_IN_NAME = ep->name;
- ep->driver_data = ep; /* claim the endpoint */
-
-- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc);
-+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, &ep_config[0], 2);
- if (!ep)
- goto autoconf_fail;
- EP_OUT_NAME = ep->name;
- ep->driver_data = ep; /* claim the endpoint */
-
- if (use_acm) {
-- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
-+ ep_config[0].config = GS_ACM_CONFIG_ID;
-+ ep_config[0].interface = gs_control_interface_desc.bInterfaceNumber;
-+ ep_config[0].altinterface = gs_control_interface_desc.bAlternateSetting;
-+
-+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, &ep_config[0], 1);
- if (!ep) {
- printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
- goto autoconf_fail;
-Index: linux-2.6.20.7/drivers/usb/gadget/zero.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/zero.c 2007-04-21 11:24:21.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/zero.c 2007-04-21 11:27:53.000000000 -0300
-@@ -1144,6 +1144,7 @@
- struct zero_dev *dev;
- struct usb_ep *ep;
- int gcnum;
-+ struct usb_endpoint_config ep_config[2];
-
- /* FIXME this can't yet work right with SH ... it has only
- * one configuration, numbered one.
-@@ -1156,7 +1157,15 @@
- * but there may also be important quirks to address.
- */
- usb_ep_autoconfig_reset (gadget);
-- ep = usb_ep_autoconfig (gadget, &fs_source_desc);
-+
-+ ep_config[0].config = CONFIG_SOURCE_SINK;
-+ ep_config[0].interface = source_sink_intf.bInterfaceNumber;
-+ ep_config[0].altinterface = source_sink_intf.bAlternateSetting;
-+ ep_config[1].config = CONFIG_LOOPBACK;
-+ ep_config[1].interface = loopback_intf.bInterfaceNumber;
-+ ep_config[1].altinterface = loopback_intf.bAlternateSetting;
-+
-+ ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2);
- if (!ep) {
- autoconf_fail:
- printk (KERN_ERR "%s: can't autoconfigure on %s\n",
-@@ -1166,7 +1175,7 @@
- EP_IN_NAME = ep->name;
- ep->driver_data = ep; /* claim */
-
-- ep = usb_ep_autoconfig (gadget, &fs_sink_desc);
-+ ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2);
- if (!ep)
- goto autoconf_fail;
- EP_OUT_NAME = ep->name;
-Index: linux-2.6.20.7/include/linux/usb_gadget.h
-===================================================================
---- linux-2.6.20.7.orig/include/linux/usb_gadget.h 2007-04-21 11:24:21.000000000 -0300
-+++ linux-2.6.20.7/include/linux/usb_gadget.h 2007-04-21 11:27:53.000000000 -0300
-@@ -445,10 +445,28 @@
-
- struct usb_gadget;
-
-+/**
-+ * struct usb_endpoint_config - possible configurations of a given endpoint
-+ * @config: the configuration number
-+ * @interface: the interface number
-+ * @altinterface: the altinterface number
-+ *
-+ * Used as an array to pass information about the possible configurations
-+ * of a given endpoint to the bus controller.
-+ */
-+struct usb_endpoint_config {
-+ u8 config;
-+ u8 interface;
-+ u8 altinterface;
-+};
-+
- /* the rest of the api to the controller hardware: device operations,
- * which don't involve endpoints (or i/o).
- */
- struct usb_gadget_ops {
-+ struct usb_ep* (*ep_alloc)(struct usb_gadget *,
-+ struct usb_endpoint_descriptor *,
-+ struct usb_endpoint_config *, int);
- int (*get_frame)(struct usb_gadget *);
- int (*wakeup)(struct usb_gadget *);
- int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered);
-@@ -872,7 +890,10 @@
- /* utility wrapping a simple endpoint selection policy */
-
- extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *,
-- struct usb_endpoint_descriptor *) __devinit;
-+ struct usb_endpoint_descriptor *,
-+ struct usb_endpoint_config *,
-+ int numconfigs
-+);
-
- extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit;
-
diff --git a/packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch b/packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch
deleted file mode 100644
index 2e60d5b9ce..0000000000
--- a/packages/linux/linux-ezx-2.6.20.7/usb_pxa27x_udc-r3.patch
+++ /dev/null
@@ -1,2868 +0,0 @@
- arch/arm/mach-pxa/spitz.c | 27
- drivers/usb/gadget/Kconfig | 20
- drivers/usb/gadget/Makefile | 1
- drivers/usb/gadget/ether.c | 12
- drivers/usb/gadget/pxa27x_udc.c | 2412 ++++++++++++++++++++++++++++++++++++++++
- drivers/usb/gadget/pxa27x_udc.h | 298 ++++
- drivers/usb/gadget/pxa2xx_udc.h | 7
- 7 files changed, 2774 insertions(+), 3 deletions(-)
-
-Index: linux-2.6.20.7/arch/arm/mach-pxa/spitz.c
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/spitz.c 2007-04-21 12:21:53.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/spitz.c 2007-04-21 12:22:00.000000000 -0300
-@@ -348,6 +348,32 @@
-
-
- /*
-+ * USB Client (Gadget/UDC)
-+ */
-+static void spitz_udc_command(int cmd)
-+{
-+ switch(cmd) {
-+ case PXA2XX_UDC_CMD_CONNECT:
-+ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE;
-+ break;
-+ case PXA2XX_UDC_CMD_DISCONNECT:
-+ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE;
-+ break;
-+ }
-+}
-+
-+static int spitz_udc_detect(void)
-+{
-+ return 1;
-+}
-+
-+static struct pxa2xx_udc_mach_info spitz_udc_info __initdata = {
-+ .udc_is_connected = spitz_udc_detect,
-+ .udc_command = spitz_udc_command,
-+};
-+
-+
-+/*
- * USB Host (OHCI)
- */
- static int spitz_ohci_init(struct device *dev)
-@@ -498,6 +524,7 @@
- pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN);
-
- platform_add_devices(devices, ARRAY_SIZE(devices));
-+ pxa_set_udc_info(&spitz_udc_info);
- pxa_set_mci_info(&spitz_mci_platform_data);
- pxa_set_ohci_info(&spitz_ohci_platform_data);
- pxa_set_ficp_info(&spitz_ficp_platform_data);
-Index: linux-2.6.20.7/drivers/usb/gadget/Kconfig
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/Kconfig 2007-04-21 12:21:53.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/Kconfig 2007-04-21 12:22:00.000000000 -0300
-@@ -121,6 +121,26 @@
- default y if USB_ETH
- default y if USB_G_SERIAL
-
-+config USB_GADGET_PXA27X
-+ boolean "PXA 27x"
-+ depends on ARCH_PXA && PXA27x
-+ help
-+ Intel's PXA 27x series XScale ARM-5TE processors include
-+ an integrated full speed USB 1.1 device controller.
-+
-+ It has 23 endpoints, as well as endpoint zero (for control
-+ transfers).
-+
-+ Say "y" to link the driver statically, or "m" to build a
-+ dynamically linked module called "pxa27x_udc" and force all
-+ gadget drivers to also be dynamically linked.
-+
-+config USB_PXA27X
-+ tristate
-+ depends on USB_GADGET_PXA27X
-+ default USB_GADGET
-+ select USB_GADGET_SELECTED
-+
- config USB_GADGET_GOKU
- boolean "Toshiba TC86C001 'Goku-S'"
- depends on PCI
-Index: linux-2.6.20.7/drivers/usb/gadget/Makefile
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/Makefile 2007-04-21 12:21:53.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/Makefile 2007-04-21 12:22:00.000000000 -0300
-@@ -4,6 +4,7 @@
- obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o
- obj-$(CONFIG_USB_NET2280) += net2280.o
- obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
-+obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o
- obj-$(CONFIG_USB_GOKU) += goku_udc.o
- obj-$(CONFIG_USB_OMAP) += omap_udc.o
- obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
-Index: linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.c 2007-04-21 12:29:05.000000000 -0300
-@@ -0,0 +1,2412 @@
-+/*
-+ * Handles the Intel 27x USB Device Controller (UDC)
-+ *
-+ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker)
-+ * Copyright (C) 2003 Robert Schwebel, Pengutronix
-+ * Copyright (C) 2003 Benedikt Spranger, Pengutronix
-+ * Copyright (C) 2003 David Brownell
-+ * Copyright (C) 2003 Joshua Wise
-+ * Copyright (C) 2004 Intel Corporation
-+ * Copyright (C) 2005 SDG Systems, LLC (Aric Blumer)
-+ * Copyright (C) 2005-2006 Openedhand Ltd. (Richard Purdie)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#undef DEBUG
-+//#define DEBUG 1
-+//#define VERBOSE DBG_VERBOSE
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/ioport.h>
-+#include <linux/types.h>
-+#include <linux/version.h>
-+#include <linux/errno.h>
-+#include <linux/platform_device.h>
-+#include <linux/delay.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/init.h>
-+#include <linux/timer.h>
-+#include <linux/list.h>
-+#include <linux/interrupt.h>
-+#include <linux/proc_fs.h>
-+#include <linux/mm.h>
-+#include <linux/device.h>
-+#include <linux/dma-mapping.h>
-+
-+#include <asm/byteorder.h>
-+#include <asm/dma.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/system.h>
-+#include <asm/mach-types.h>
-+#include <asm/unaligned.h>
-+#include <asm/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#include <linux/usb_ch9.h>
-+#include <linux/usb_gadget.h>
-+
-+#include <asm/arch/udc.h>
-+
-+/*
-+ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x
-+ * series processors.
-+ *
-+ * Such controller drivers work with a gadget driver. The gadget driver
-+ * returns descriptors, implements configuration and data protocols used
-+ * by the host to interact with this device, and allocates endpoints to
-+ * the different protocol interfaces. The controller driver virtualizes
-+ * usb hardware so that the gadget drivers will be more portable.
-+ *
-+ * This UDC hardware wants to implement a bit too much USB protocol. The
-+ * biggest issue is that the endpoints have to be setup before the controller
-+ * can be enabled and each endpoint can only have one configuration, interface
-+ * and alternative interface number. Once enabled, these cannot be changed
-+ * without a controller reset.
-+ *
-+ * Intel Errata #22 mentions issues when changing alternate interface.
-+ * The exact meaning of this remains uncertain as gadget drivers using alternate
-+ * interfaces such as CDC-Ethernet appear to work...
-+ */
-+
-+#define DRIVER_VERSION "01-01-2006"
-+#define DRIVER_DESC "PXA 27x USB Device Controller driver"
-+
-+static const char driver_name [] = "pxa27x_udc";
-+
-+static const char ep0name [] = "ep0";
-+
-+
-+#define USE_DMA
-+//#undef USE_DMA
-+
-+#ifdef CONFIG_PROC_FS
-+#define UDC_PROC_FILE
-+#endif
-+
-+#include "pxa27x_udc.h"
-+
-+#ifdef USE_DMA
-+static int use_dma = 1;
-+module_param(use_dma, bool, 0);
-+MODULE_PARM_DESC(use_dma, "true to use dma");
-+
-+static void dma_nodesc_handler(int dmach, void *_ep);
-+static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req);
-+
-+#define DMASTR " (dma support)"
-+
-+#else /* !USE_DMA */
-+#define DMASTR " (pio only)"
-+#endif
-+
-+#define UDCISR0_IR0 0x3
-+#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP)
-+#define UDCICR_INT_MASK UDCISR_INT_MASK
-+
-+#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME)
-+
-+static void pxa27x_ep_fifo_flush(struct usb_ep *ep);
-+static void nuke(struct pxa27x_ep *, int status);
-+static void udc_init_ep(struct pxa27x_udc *dev);
-+
-+
-+/*
-+ * Endpoint Functions
-+ */
-+static void pio_irq_enable(int ep_num)
-+{
-+ if (ep_num < 16)
-+ UDCICR0 |= 3 << (ep_num * 2);
-+ else {
-+ ep_num -= 16;
-+ UDCICR1 |= 3 << (ep_num * 2);
-+ }
-+}
-+
-+static void pio_irq_disable(int ep_num)
-+{
-+ ep_num &= 0xf;
-+ if (ep_num < 16)
-+ UDCICR0 &= ~(3 << (ep_num * 2));
-+ else {
-+ ep_num -= 16;
-+ UDCICR1 &= ~(3 << (ep_num * 2));
-+ }
-+}
-+
-+/* The UDCCR reg contains mask and interrupt status bits,
-+ * so using '|=' isn't safe as it may ack an interrupt.
-+ */
-+#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE)
-+
-+static inline void udc_set_mask_UDCCR(int mask)
-+{
-+ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS);
-+}
-+
-+static inline void udc_clear_mask_UDCCR(int mask)
-+{
-+ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS);
-+}
-+
-+static inline void udc_ack_int_UDCCR(int mask)
-+{
-+ /* udccr contains the bits we dont want to change */
-+ __u32 udccr = UDCCR & UDCCR_MASK_BITS;
-+
-+ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS);
-+}
-+
-+/*
-+ * Endpoint enable/disable
-+ *
-+ * Not much to do here as the ep_alloc function sets up most things. Once
-+ * enabled, not much of the pxa27x configuration can be changed.
-+ *
-+ */
-+static int pxa27x_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)
-+{
-+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ struct pxa27x_ep *ep = virt_ep->pxa_ep;
-+ struct pxa27x_udc *dev;
-+
-+ if (!_ep || !desc || _ep->name == ep0name
-+ || desc->bDescriptorType != USB_DT_ENDPOINT
-+ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) {
-+ dev_err(ep->dev->dev, "%s, bad ep or descriptor\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ /* xfer types must match, except that interrupt ~= bulk */
-+ if( ep->ep_type != USB_ENDPOINT_XFER_BULK
-+ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) {
-+ dev_err(ep->dev->dev, "%s, %s type mismatch\n", __FUNCTION__, _ep->name);
-+ return -EINVAL;
-+ }
-+
-+ /* hardware _could_ do smaller, but driver doesn't */
-+ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
-+ && le16_to_cpu (desc->wMaxPacketSize)
-+ != BULK_FIFO_SIZE)
-+ || !desc->wMaxPacketSize) {
-+ dev_err(ep->dev->dev, "%s, bad %s maxpacket\n", __FUNCTION__, _ep->name);
-+ return -ERANGE;
-+ }
-+
-+ dev = ep->dev;
-+ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) {
-+ dev_err(ep->dev->dev, "%s, bogus device state\n", __FUNCTION__);
-+ return -ESHUTDOWN;
-+ }
-+
-+ ep->desc = desc;
-+ ep->dma = -1;
-+ ep->stopped = 0;
-+ ep->pio_irqs = ep->dma_irqs = 0;
-+ ep->usb_ep->maxpacket = le16_to_cpu(desc->wMaxPacketSize);
-+
-+ /* flush fifo (mostly for OUT buffers) */
-+ pxa27x_ep_fifo_flush(_ep);
-+
-+ /* ... reset halt state too, if we could ... */
-+
-+#ifdef USE_DMA
-+ /* for (some) bulk and ISO endpoints, try to get a DMA channel and
-+ * bind it to the endpoint. otherwise use PIO.
-+ */
-+ dev_dbg(ep->dev->dev, "%s: called attributes=%d\n", __FUNCTION__, ep->ep_type);
-+ switch (ep->ep_type) {
-+ case USB_ENDPOINT_XFER_ISOC:
-+ if (le16_to_cpu(desc->wMaxPacketSize) % 32)
-+ break;
-+ // fall through
-+ case USB_ENDPOINT_XFER_BULK:
-+ if (!use_dma || !ep->reg_drcmr)
-+ break;
-+ ep->dma = pxa_request_dma((char *)_ep->name, (le16_to_cpu(desc->wMaxPacketSize) > 64)
-+ ? DMA_PRIO_MEDIUM : DMA_PRIO_LOW, dma_nodesc_handler, ep);
-+ if (ep->dma >= 0) {
-+ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma;
-+ dev_dbg(ep->dev->dev, "%s using dma%d\n", _ep->name, ep->dma);
-+ }
-+ default:
-+ break;
-+ }
-+#endif
-+ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name);
-+ return 0;
-+}
-+
-+static int pxa27x_ep_disable(struct usb_ep *_ep)
-+{
-+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ struct pxa27x_ep *ep = virt_ep->pxa_ep;
-+ unsigned long flags;
-+
-+ if (!_ep || !ep->desc) {
-+ dev_err(ep->dev->dev, "%s, %s not enabled\n", __FUNCTION__,
-+ _ep ? _ep->name : NULL);
-+ return -EINVAL;
-+ }
-+ local_irq_save(flags);
-+ nuke(ep, -ESHUTDOWN);
-+
-+#ifdef USE_DMA
-+ if (ep->dma >= 0) {
-+ *ep->reg_drcmr = 0;
-+ pxa_free_dma(ep->dma);
-+ ep->dma = -1;
-+ }
-+#endif
-+
-+ /* flush fifo (mostly for IN buffers) */
-+ pxa27x_ep_fifo_flush(_ep);
-+
-+ ep->desc = 0;
-+ ep->stopped = 1;
-+
-+ local_irq_restore(flags);
-+ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name);
-+ return 0;
-+}
-+
-+
-+
-+/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers
-+ * must still pass correctly initialized endpoints, since other controller
-+ * drivers may care about how it's currently set up (dma issues etc).
-+ */
-+
-+/*
-+ * pxa27x_ep_alloc_request - allocate a request data structure
-+ */
-+static struct usb_request *
-+pxa27x_ep_alloc_request(struct usb_ep *_ep, unsigned gfp_flags)
-+{
-+ struct pxa27x_request *req;
-+
-+ req = kzalloc(sizeof *req, gfp_flags);
-+ if (!req)
-+ return 0;
-+
-+ INIT_LIST_HEAD(&req->queue);
-+ return &req->req;
-+}
-+
-+
-+/*
-+ * pxa27x_ep_free_request - deallocate a request data structure
-+ */
-+static void
-+pxa27x_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
-+{
-+ struct pxa27x_request *req;
-+
-+ req = container_of(_req, struct pxa27x_request, req);
-+ WARN_ON(!list_empty(&req->queue));
-+ kfree(req);
-+}
-+
-+
-+/* PXA cache needs flushing with DMA I/O (it's dma-incoherent), but there's
-+ * no device-affinity and the heap works perfectly well for i/o buffers.
-+ * It wastes much less memory than dma_alloc_coherent() would, and even
-+ * prevents cacheline (32 bytes wide) sharing problems.
-+ */
-+static void *
-+pxa27x_ep_alloc_buffer(struct usb_ep *_ep, unsigned bytes, dma_addr_t *dma, unsigned gfp_flags)
-+{
-+ char *retval;
-+
-+ retval = kmalloc(bytes, gfp_flags & ~(__GFP_DMA|__GFP_HIGHMEM));
-+ if (retval)
-+ *dma = virt_to_bus(retval);
-+ return retval;
-+}
-+
-+static void
-+pxa27x_ep_free_buffer(struct usb_ep *_ep, void *buf, dma_addr_t dma, unsigned bytes)
-+{
-+ kfree(buf);
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * done - retire a request; caller blocked irqs
-+ */
-+static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status)
-+{
-+ list_del_init(&req->queue);
-+ if (likely (req->req.status == -EINPROGRESS))
-+ req->req.status = status;
-+ else
-+ status = req->req.status;
-+
-+ if (status && status != -ESHUTDOWN)
-+ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n",
-+ ep->usb_ep->name, &req->req, status,
-+ req->req.actual, req->req.length);
-+
-+ /* don't modify queue heads during completion callback */
-+ req->req.complete(ep->usb_ep, &req->req);
-+}
-+
-+
-+static inline void ep0_idle(struct pxa27x_udc *dev)
-+{
-+ dev->ep0state = EP0_IDLE;
-+}
-+
-+static int write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max)
-+{
-+ u32 *buf;
-+ int length, count, remain;
-+
-+ buf = (u32*)(req->req.buf + req->req.actual);
-+ prefetch(buf);
-+
-+ /* how big will this packet be? */
-+ length = min(req->req.length - req->req.actual, max);
-+ req->req.actual += length;
-+
-+ remain = length & 0x3;
-+ count = length & ~(0x3);
-+
-+ //dev_dbg(ep->dev->dev, "Length %d, Remain %d, Count %d\n",length, remain, count);
-+
-+ while (likely(count)) {
-+ //dev_dbg(ep->dev->dev, "Sending:0x%x\n", *buf);
-+ *uddr = *buf++;
-+ count -= 4;
-+ }
-+
-+ if (remain) {
-+ volatile u8* reg=(u8*)uddr;
-+ char *rd =(u8*)buf;
-+
-+ while (remain--) {
-+ *reg=*rd++;
-+ }
-+ }
-+
-+ return length;
-+}
-+
-+/*
-+ * write to an IN endpoint fifo, as many packets as possible.
-+ * irqs will use this to write the rest later.
-+ * caller guarantees at least one packet buffer is ready (or a zlp).
-+ */
-+static int
-+write_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
-+{
-+ unsigned max;
-+
-+ max = le16_to_cpu(ep->desc->wMaxPacketSize);
-+ do {
-+ int count, is_last, is_short;
-+
-+ //dev_dbg(ep->dev->dev, "write_fifo7 %x\n", *ep->reg_udccsr);
-+
-+ if (*ep->reg_udccsr & UDCCSR_PC) {
-+ //dev_dbg(ep->dev->dev, "Transmit Complete\n");
-+ *ep->reg_udccsr = UDCCSR_PC | (*ep->reg_udccsr & UDCCSR_MASK);
-+ }
-+
-+ if (*ep->reg_udccsr & UDCCSR_TRN) {
-+ //dev_dbg(ep->dev->dev, "Clearing Underrun\n");
-+ *ep->reg_udccsr = UDCCSR_TRN | (*ep->reg_udccsr & UDCCSR_MASK);
-+ }
-+ //dev_dbg(ep->dev->dev, "write_fifo8 %x\n", *ep->reg_udccsr);
-+
-+ count = write_packet(ep->reg_udcdr, req, max);
-+
-+ /* last packet is usually short (or a zlp) */
-+ if (unlikely (count != max))
-+ is_last = is_short = 1;
-+ else {
-+ if (likely(req->req.length != req->req.actual)
-+ || req->req.zero)
-+ is_last = 0;
-+ else
-+ is_last = 1;
-+ /* interrupt/iso maxpacket may not fill the fifo */
-+ is_short = unlikely (max < ep->fifo_size);
-+ }
-+
-+ //dev_dbg(ep->dev->dev, "write_fifo0 %x\n", *ep->reg_udccsr);
-+
-+ dev_dbg(ep->dev->dev, "wrote %s count:%d bytes%s%s %d left %p\n",
-+ ep->usb_ep->name, count,
-+ is_last ? "/L" : "", is_short ? "/S" : "",
-+ req->req.length - req->req.actual, &req->req);
-+
-+ /* let loose that packet. maybe try writing another one,
-+ * double buffering might work.
-+ */
-+
-+ if (is_short)
-+ *ep->reg_udccsr = UDCCSR_SP | (*ep->reg_udccsr & UDCCSR_MASK);
-+
-+ dev_dbg(ep->dev->dev, "write_fifo0.5 %x\n", *ep->reg_udccsr);
-+
-+ /* requests complete when all IN data is in the FIFO */
-+ if (is_last) {
-+ done(ep, req, 0);
-+ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) {
-+ pio_irq_disable(ep->pxa_ep_num);
-+ //dev_dbg(ep->dev->dev, "write_fifo1 %x\n", *ep->reg_udccsr);
-+#ifdef USE_DMA
-+ /* unaligned data and zlps couldn't use dma */
-+ if (unlikely(!list_empty(&ep->queue))) {
-+ req = list_entry(ep->queue.next,
-+ struct pxa27x_request, queue);
-+ kick_dma(ep,req);
-+ return 0;
-+ }
-+#endif
-+ }
-+ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr);
-+ return 1;
-+ }
-+
-+ // TODO experiment: how robust can fifo mode tweaking be?
-+ // double buffering is off in the default fifo mode, which
-+ // prevents TFS from being set here.
-+
-+ } while (*ep->reg_udccsr & UDCCSR_FS);
-+ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr);
-+ return 0;
-+}
-+
-+/* caller asserts req->pending (ep0 irq status nyet cleared); starts
-+ * ep0 data stage. these chips want very simple state transitions.
-+ */
-+static inline
-+void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag)
-+{
-+ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC;
-+ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP);
-+ dev->req_pending = 0;
-+ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n",
-+ __FUNCTION__, tag, UDCCSR0, flags);
-+}
-+
-+static int
-+write_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
-+{
-+ unsigned count;
-+ int is_short;
-+
-+ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE);
-+ ep->dev->stats.write.bytes += count;
-+
-+ /* last packet "must be" short (or a zlp) */
-+ is_short = (count != EP0_FIFO_SIZE);
-+
-+ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count,
-+ req->req.length - req->req.actual, &req->req);
-+
-+ if (unlikely (is_short)) {
-+ if (ep->dev->req_pending)
-+ ep0start(ep->dev, UDCCSR0_IPR, "short IN");
-+ else
-+ UDCCSR0 = UDCCSR0_IPR;
-+
-+ count = req->req.length;
-+ done(ep, req, 0);
-+ ep0_idle(ep->dev);
-+#if 0
-+ /* This seems to get rid of lost status irqs in some cases:
-+ * host responds quickly, or next request involves config
-+ * change automagic, or should have been hidden, or ...
-+ *
-+ * FIXME get rid of all udelays possible...
-+ */
-+ if (count >= EP0_FIFO_SIZE) {
-+ count = 100;
-+ do {
-+ if ((UDCCSR0 & UDCCSR0_OPC) != 0) {
-+ /* clear OPC, generate ack */
-+ UDCCSR0 = UDCCSR0_OPC;
-+ break;
-+ }
-+ count--;
-+ udelay(1);
-+ } while (count);
-+ }
-+#endif
-+ } else if (ep->dev->req_pending)
-+ ep0start(ep->dev, 0, "IN");
-+ return is_short;
-+}
-+
-+
-+/*
-+ * read_fifo - unload packet(s) from the fifo we use for usb OUT
-+ * transfers and put them into the request. caller should have made
-+ * sure there's at least one packet ready.
-+ *
-+ * returns true if the request completed because of short packet or the
-+ * request buffer having filled (and maybe overran till end-of-packet).
-+ */
-+static int read_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
-+{
-+ for (;;) {
-+ u32 *buf;
-+ int bufferspace, count, is_short;
-+
-+ /* make sure there's a packet in the FIFO.*/
-+ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0))
-+ break;
-+ buf =(u32*) (req->req.buf + req->req.actual);
-+ prefetchw(buf);
-+ bufferspace = req->req.length - req->req.actual;
-+
-+ /* read all bytes from this packet */
-+ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) {
-+ count = 0x3ff & *ep->reg_udcbcr;
-+ req->req.actual += min(count, bufferspace);
-+ } else /* zlp */
-+ count = 0;
-+
-+ is_short = (count < ep->usb_ep->maxpacket);
-+ dev_dbg(ep->dev->dev, "read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n",
-+ ep->usb_ep->name, *ep->reg_udccsr, count,
-+ is_short ? "/S" : "",
-+ &req->req, req->req.actual, req->req.length);
-+
-+ count = min(count, bufferspace);
-+ while (likely (count > 0)) {
-+ *buf++ = *ep->reg_udcdr;
-+ count -= 4;
-+ }
-+ dev_dbg(ep->dev->dev, "Buf:0x%p\n", req->req.buf);
-+
-+ *ep->reg_udccsr = UDCCSR_PC;
-+ /* RPC/RSP/RNE could now reflect the other packet buffer */
-+
-+ /* completion */
-+ if (is_short || req->req.actual == req->req.length) {
-+ done(ep, req, 0);
-+ if (list_empty(&ep->queue))
-+ pio_irq_disable(ep->pxa_ep_num);
-+ return 1;
-+ }
-+
-+ /* finished that packet. the next one may be waiting... */
-+ }
-+ return 0;
-+}
-+
-+/*
-+ * special ep0 version of the above. no UBCR0 or double buffering; status
-+ * handshaking is magic. most device protocols don't need control-OUT.
-+ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other
-+ * protocols do use them.
-+ */
-+static int read_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req)
-+{
-+ u32 *buf, word;
-+ unsigned bufferspace;
-+
-+ buf = (u32*) (req->req.buf + req->req.actual);
-+ bufferspace = req->req.length - req->req.actual;
-+
-+ while (UDCCSR0 & UDCCSR0_RNE) {
-+ word = UDCDR0;
-+
-+ if (unlikely (bufferspace == 0)) {
-+ /* this happens when the driver's buffer
-+ * is smaller than what the host sent.
-+ * discard the extra data.
-+ */
-+ if (req->req.status != -EOVERFLOW)
-+ dev_info(ep->dev->dev, "%s overflow\n", ep->usb_ep->name);
-+ req->req.status = -EOVERFLOW;
-+ } else {
-+ *buf++ = word;
-+ req->req.actual += 4;
-+ bufferspace -= 4;
-+ }
-+ }
-+
-+ UDCCSR0 = UDCCSR0_OPC ;
-+
-+ /* completion */
-+ if (req->req.actual >= req->req.length)
-+ return 1;
-+
-+ /* finished that packet. the next one may be waiting... */
-+ return 0;
-+}
-+
-+#ifdef USE_DMA
-+
-+#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE)
-+static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req)
-+{
-+ u32 dcmd = 0;
-+ u32 len = req->req.length;
-+ u32 buf = req->req.dma;
-+ u32 fifo = io_v2p((u32)ep->reg_udcdr);
-+
-+ buf += req->req.actual;
-+ len -= req->req.actual;
-+ ep->dma_con = 0;
-+
-+ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n",
-+ __FUNCTION__, &req->req, req->req.length,
-+ req->req.actual,ep->dma);
-+
-+ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */
-+ DCSR(ep->dma) = DCSR_NODESC;
-+ if (buf & 0x3)
-+ DALGN |= 1 << ep->dma;
-+ else
-+ DALGN &= ~(1 << ep->dma);
-+
-+ if (ep->dir_in) {
-+ DSADR(ep->dma) = buf;
-+ DTADR(ep->dma) = fifo;
-+ if (len > MAX_IN_DMA) {
-+ len= MAX_IN_DMA;
-+ ep->dma_con =1 ;
-+ } else if (len >= ep->usb_ep->maxpacket) {
-+ if ((ep->dma_con = (len % ep->usb_ep->maxpacket) != 0))
-+ len = ep->usb_ep->maxpacket;
-+ }
-+ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
-+ | DCMD_FLOWTRG | DCMD_INCSRCADDR;
-+ } else {
-+ DSADR(ep->dma) = fifo;
-+ DTADR(ep->dma) = buf;
-+ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN
-+ | DCMD_FLOWSRC | DCMD_INCTRGADDR;
-+ }
-+ *ep->reg_udccsr = UDCCSR_DME;
-+ DCMD(ep->dma) = dcmd;
-+ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \
-+ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0);
-+ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD;
-+ DCSR(ep->dma) |= DCSR_RUN;
-+}
-+
-+static void cancel_dma(struct pxa27x_ep *ep)
-+{
-+ struct pxa27x_request *req;
-+ u32 tmp;
-+
-+ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue))
-+ return;
-+
-+ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma));
-+ DCSR(ep->dma) = 0;
-+ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0)
-+ cpu_relax();
-+
-+ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
-+ tmp = DCMD(ep->dma) & DCMD_LENGTH;
-+ req->req.actual = req->req.length - tmp;
-+
-+ /* the last tx packet may be incomplete, so flush the fifo.
-+ * FIXME correct req.actual if we can
-+ */
-+ *ep->reg_udccsr = UDCCSR_FEF;
-+}
-+
-+static void dma_nodesc_handler(int dmach, void *_ep)
-+{
-+ struct pxa27x_ep *ep = _ep;
-+ struct pxa27x_request *req, *req_next;
-+ u32 dcsr, tmp, completed;
-+
-+ local_irq_disable();
-+
-+ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
-+
-+ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf);
-+
-+ ep->dma_irqs++;
-+ ep->dev->stats.irqs++;
-+
-+ completed = 0;
-+
-+ dcsr = DCSR(dmach);
-+ DCSR(ep->dma) &= ~DCSR_RUN;
-+
-+ if (dcsr & DCSR_BUSERR) {
-+ DCSR(dmach) = DCSR_BUSERR;
-+ dev_err(ep->dev->dev, "DMA Bus Error\n");
-+ req->req.status = -EIO;
-+ completed = 1;
-+ } else if (dcsr & DCSR_ENDINTR) {
-+ DCSR(dmach) = DCSR_ENDINTR;
-+ if (ep->dir_in) {
-+ tmp = req->req.length - req->req.actual;
-+ /* Last packet is a short one*/
-+ if (tmp < ep->usb_ep->maxpacket) {
-+ int count = 0;
-+
-+ *ep->reg_udccsr = UDCCSR_SP | \
-+ (*ep->reg_udccsr & UDCCSR_MASK);
-+ /*Wait for packet out */
-+ while( (count++ < 10000) && \
-+ !(*ep->reg_udccsr & UDCCSR_FS));
-+ if (count >= 10000)
-+ DMSG("Failed to send packet\n");
-+ else
-+ DMSG("%s: short packet sent len:%d,"
-+ "length:%d,actual:%d\n", __FUNCTION__,
-+ tmp, req->req.length, req->req.actual);
-+ req->req.actual = req->req.length;
-+ completed = 1;
-+ /* There are still packets to transfer */
-+ } else if ( ep->dma_con) {
-+ DMSG("%s: more packets,length:%d,actual:%d\n",
-+ __FUNCTION__,req->req.length,
-+ req->req.actual);
-+ req->req.actual += ep->usb_ep->maxpacket;
-+ completed = 0;
-+ } else {
-+ DMSG("%s: no more packets,length:%d,"
-+ "actual:%d\n", __FUNCTION__,
-+ req->req.length, req->req.actual);
-+ req->req.actual = req->req.length;
-+ completed = 1;
-+ }
-+ } else {
-+ req->req.actual = req->req.length;
-+ completed = 1;
-+ }
-+ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA
-+ int remain,udccsr ;
-+
-+ DCSR(dmach) = DCSR_EORINTR;
-+ remain = DCMD(dmach) & DCMD_LENGTH;
-+ req->req.actual = req->req.length - remain;
-+
-+ udccsr = *ep->reg_udccsr;
-+ if (udccsr & UDCCSR_SP) {
-+ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK);
-+ completed = 1;
-+ }
-+ DMSG("%s: length:%d actual:%d\n",
-+ __FUNCTION__, req->req.length, req->req.actual);
-+ } else
-+ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n",
-+ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach));
-+
-+ if (likely(completed)) {
-+ if (req->queue.next != &ep->queue) {
-+ req_next = list_entry(req->queue.next,
-+ struct pxa27x_request, queue);
-+ kick_dma(ep, req_next);
-+ }
-+ done(ep, req, 0);
-+ } else {
-+ kick_dma(ep, req);
-+ }
-+
-+ local_irq_enable();
-+}
-+
-+#endif
-+/*-------------------------------------------------------------------------*/
-+
-+static int
-+pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned gfp_flags)
-+{
-+ struct pxa27x_virt_ep *virt_ep;
-+ struct pxa27x_ep *ep;
-+ struct pxa27x_request *req;
-+ struct pxa27x_udc *dev;
-+ unsigned long flags;
-+
-+ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ ep = virt_ep->pxa_ep;
-+
-+ req = container_of(_req, struct pxa27x_request, req);
-+ if (unlikely (!_req || !_req->complete || !_req->buf||
-+ !list_empty(&req->queue))) {
-+ DMSG("%s, bad params\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))) {
-+ DMSG("%s, bad ep\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+
-+ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num);
-+
-+ dev = ep->dev;
-+ if (unlikely (!dev->driver
-+ || dev->gadget.speed == USB_SPEED_UNKNOWN)) {
-+ DMSG("%s, bogus device state\n", __FUNCTION__);
-+ return -ESHUTDOWN;
-+ }
-+
-+ /* iso is always one packet per request, that's the only way
-+ * we can report per-packet status. that also helps with dma.
-+ */
-+ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC
-+ && req->req.length > le16_to_cpu
-+ (ep->desc->wMaxPacketSize)))
-+ return -EMSGSIZE;
-+
-+#ifdef USE_DMA
-+ // FIXME caller may already have done the dma mapping
-+ if (ep->dma >= 0) {
-+ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length,
-+ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
-+ }
-+#endif
-+
-+ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n",
-+ _ep->name, _req, _req->length, _req->buf);
-+
-+ local_irq_save(flags);
-+
-+ _req->status = -EINPROGRESS;
-+ _req->actual = 0;
-+
-+ /* kickstart this i/o queue? */
-+ if (list_empty(&ep->queue) && !ep->stopped) {
-+ if (ep->desc == 0 /* ep0 */) {
-+ unsigned length = _req->length;
-+
-+ switch (dev->ep0state) {
-+ case EP0_IN_DATA_PHASE:
-+ dev->stats.write.ops++;
-+ if (write_ep0_fifo(ep, req))
-+ req = 0;
-+ break;
-+
-+ case EP0_OUT_DATA_PHASE:
-+ dev->stats.read.ops++;
-+ if (dev->req_pending)
-+ ep0start(dev, UDCCSR0_IPR, "OUT");
-+ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0
-+ && read_ep0_fifo(ep, req))) {
-+ ep0_idle(dev);
-+ done(ep, req, 0);
-+ req = 0;
-+ }
-+ break;
-+ case EP0_NO_ACTION:
-+ ep0_idle(dev);
-+ req=0;
-+ break;
-+ default:
-+ DMSG("ep0 i/o, odd state %d\n", dev->ep0state);
-+ local_irq_restore (flags);
-+ return -EL2HLT;
-+ }
-+#ifdef USE_DMA
-+ /* either start dma or prime pio pump */
-+ } else if (ep->dma >= 0) {
-+ kick_dma(ep, req);
-+#endif
-+ /* can the FIFO can satisfy the request immediately? */
-+ } else if (ep->dir_in && (*ep->reg_udccsr & UDCCSR_FS) != 0
-+ && write_fifo(ep, req)) {
-+ req = 0;
-+ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0
-+ && read_fifo(ep, req)) {
-+ req = 0;
-+ }
-+ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma);
-+ if (likely (req && ep->desc) && ep->dma < 0)
-+ pio_irq_enable(ep->pxa_ep_num);
-+ }
-+
-+ /* pio or dma irq handler advances the queue. */
-+ if (likely (req != 0))
-+ list_add_tail(&req->queue, &ep->queue);
-+ local_irq_restore(flags);
-+
-+ return 0;
-+}
-+
-+
-+/*
-+ * nuke - dequeue ALL requests
-+ */
-+static void nuke(struct pxa27x_ep *ep, int status)
-+{
-+ struct pxa27x_request *req;
-+
-+ /* called with irqs blocked */
-+#ifdef USE_DMA
-+ if (ep->dma >= 0 && !ep->stopped)
-+ cancel_dma(ep);
-+#endif
-+ while (!list_empty(&ep->queue)) {
-+ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
-+ done(ep, req, status);
-+ }
-+ if (ep->desc)
-+ pio_irq_disable(ep->pxa_ep_num);
-+}
-+
-+
-+/* dequeue JUST ONE request */
-+static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
-+{
-+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ struct pxa27x_ep *ep = virt_ep->pxa_ep;
-+ struct pxa27x_request *req;
-+ unsigned long flags;
-+
-+ if (!_ep || _ep->name == ep0name)
-+ return -EINVAL;
-+
-+ local_irq_save(flags);
-+
-+ /* make sure it's actually queued on this endpoint */
-+ list_for_each_entry(req, &ep->queue, queue) {
-+ if (&req->req == _req)
-+ break;
-+ }
-+ if (&req->req != _req) {
-+ local_irq_restore(flags);
-+ return -EINVAL;
-+ }
-+
-+#ifdef USE_DMA
-+ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) {
-+ cancel_dma(ep);
-+ done(ep, req, -ECONNRESET);
-+ /* restart i/o */
-+ if (!list_empty(&ep->queue)) {
-+ req = list_entry(ep->queue.next,
-+ struct pxa27x_request, queue);
-+ kick_dma(ep, req);
-+ }
-+ } else
-+#endif
-+ done(ep, req, -ECONNRESET);
-+
-+ local_irq_restore(flags);
-+ return 0;
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value)
-+{
-+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ struct pxa27x_ep *ep = virt_ep->pxa_ep;
-+ unsigned long flags;
-+
-+ DMSG("%s is called\n", __FUNCTION__);
-+ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))
-+ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) {
-+ DMSG("%s, bad ep\n", __FUNCTION__);
-+ return -EINVAL;
-+ }
-+ if (value == 0) {
-+ /* this path (reset toggle+halt) is needed to implement
-+ * SET_INTERFACE on normal hardware. but it can't be
-+ * done from software on the PXA UDC, and the hardware
-+ * forgets to do it as part of SET_INTERFACE automagic.
-+ */
-+ DMSG("only host can clear %s halt\n", _ep->name);
-+ return -EROFS;
-+ }
-+
-+ local_irq_save(flags);
-+
-+ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0
-+ || !list_empty(&ep->queue))) {
-+ local_irq_restore(flags);
-+ return -EAGAIN;
-+ }
-+
-+ /* FST bit is the same for control, bulk in, bulk out, interrupt in */
-+ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF;
-+
-+ /* ep0 needs special care */
-+ if (!ep->desc) {
-+ start_watchdog(ep->dev);
-+ ep->dev->req_pending = 0;
-+ ep->dev->ep0state = EP0_STALL;
-+
-+ /* and bulk/intr endpoints like dropping stalls too */
-+ } else {
-+ unsigned i;
-+ for (i = 0; i < 1000; i += 20) {
-+ if (*ep->reg_udccsr & UDCCSR_SST)
-+ break;
-+ udelay(20);
-+ }
-+ }
-+ local_irq_restore(flags);
-+
-+ DBG(DBG_VERBOSE, "%s halt\n", _ep->name);
-+ return 0;
-+}
-+
-+static int pxa27x_ep_fifo_status(struct usb_ep *_ep)
-+{
-+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ struct pxa27x_ep *ep = virt_ep->pxa_ep;
-+
-+ if (!_ep) {
-+ DMSG("%s, bad ep\n", __FUNCTION__);
-+ return -ENODEV;
-+ }
-+ /* pxa can't report unclaimed bytes from IN fifos */
-+ if (ep->dir_in)
-+ return -EOPNOTSUPP;
-+ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN
-+ || (*ep->reg_udccsr & UDCCSR_FS) == 0)
-+ return 0;
-+ else
-+ return (*ep->reg_udcbcr & 0xfff) + 1;
-+}
-+
-+static void pxa27x_ep_fifo_flush(struct usb_ep *_ep)
-+{
-+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+ struct pxa27x_ep *ep = virt_ep->pxa_ep;
-+
-+ DMSG("pxa27x_ep_fifo_flush\n");
-+
-+ if (!_ep || _ep->name == ep0name || !list_empty(&ep->queue)) {
-+ DMSG("%s, bad ep\n", __FUNCTION__);
-+ return;
-+ }
-+
-+ /* toggle and halt bits stay unchanged */
-+
-+ /* for OUT, just read and discard the FIFO contents. */
-+ if (!ep->dir_in) {
-+ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0)
-+ (void) *ep->reg_udcdr;
-+ return;
-+ }
-+
-+ /* most IN status is the same, but ISO can't stall */
-+ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN
-+ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC)
-+ ? 0 : UDCCSR_SST;
-+}
-+
-+
-+static struct usb_ep_ops pxa27x_ep_ops = {
-+ .enable = pxa27x_ep_enable,
-+ .disable = pxa27x_ep_disable,
-+
-+ .alloc_request = pxa27x_ep_alloc_request,
-+ .free_request = pxa27x_ep_free_request,
-+
-+ .alloc_buffer = pxa27x_ep_alloc_buffer,
-+ .free_buffer = pxa27x_ep_free_buffer,
-+
-+ .queue = pxa27x_ep_queue,
-+ .dequeue = pxa27x_ep_dequeue,
-+
-+ .set_halt = pxa27x_ep_set_halt,
-+ .fifo_status = pxa27x_ep_fifo_status,
-+ .fifo_flush = pxa27x_ep_fifo_flush,
-+};
-+
-+
-+/* ---------------------------------------------------------------------------
-+ * device-scoped parts of the api to the usb controller hardware
-+ * ---------------------------------------------------------------------------
-+ */
-+
-+static inline unsigned int validate_fifo_size(u8 bmAttributes)
-+{
-+ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_CONTROL:
-+ return EP0_FIFO_SIZE;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ return ISO_FIFO_SIZE;
-+ break;
-+ case USB_ENDPOINT_XFER_BULK:
-+ return BULK_FIFO_SIZE;
-+ break;
-+ case USB_ENDPOINT_XFER_INT:
-+ return INT_FIFO_SIZE;
-+ break;
-+ default:
-+ break;
-+ }
-+}
-+
-+static void pxa27x_ep_free(struct usb_gadget *gadget, struct usb_ep *_ep)
-+{
-+ struct pxa27x_udc *dev = the_controller;
-+ struct pxa27x_virt_ep *virt_ep;
-+ int i;
-+
-+ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep);
-+
-+ for (i = 1; i < UDC_EP_NUM; i++) {
-+ if (dev->ep[i].usb_ep == &virt_ep->usb_ep) {
-+ if (dev->ep[i].desc) {
-+ virt_ep->pxa_ep = &dev->ep[i];
-+ pxa27x_ep_disable(&virt_ep->usb_ep);
-+ }
-+ dev->ep[i].usb_ep = NULL;
-+ }
-+ }
-+
-+ if (!list_empty(&virt_ep->usb_ep.ep_list))
-+ list_del_init(&virt_ep->usb_ep.ep_list);
-+
-+ kfree(virt_ep->usb_ep.name);
-+ kfree(virt_ep);
-+}
-+
-+static void pxa27x_ep_freeall(struct usb_gadget *gadget)
-+{
-+ struct pxa27x_udc *dev = the_controller;
-+ int i;
-+
-+ for (i = 1; i < UDC_EP_NUM; i++) {
-+ if(dev->ep[i].usb_ep)
-+ pxa27x_ep_free(gadget, dev->ep[i].usb_ep);
-+ }
-+}
-+
-+#define NAME_SIZE 18
-+
-+static int pxa27x_find_free_ep(struct pxa27x_udc *dev)
-+{
-+ int i;
-+ for (i = 1; i < UDC_EP_NUM; i++) {
-+ if(!dev->ep[i].assigned)
-+ return i;
-+ }
-+ return -1;
-+}
-+
-+/*
-+ * Endpoint Allocation/Configuration
-+ *
-+ * pxa27x endpoint configuration is fixed when the device is enabled. Any pxa
-+ * endpoint is only active in one configuration, interface and alternate
-+ * interface combination so to support gadget drivers, we map one usb_ep to
-+ * one of several pxa ep's. One pxa endpoint is assigned per configuration
-+ * combination.
-+ */
-+static struct usb_ep* pxa27x_ep_alloc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *desc,
-+ struct usb_endpoint_config *epconfig, int configs)
-+{
-+ struct pxa27x_udc *dev = the_controller;
-+ struct pxa27x_virt_ep *virt_ep;
-+ unsigned int i, fifo_size;
-+ char *name;
-+
-+ if (unlikely(configs < 1)) {
-+ dev_err(dev->dev, "%s: Error in config data\n", __FUNCTION__);
-+ return NULL;
-+ }
-+
-+ virt_ep = kmalloc(sizeof(struct pxa27x_virt_ep), GFP_KERNEL);
-+ name = kmalloc(NAME_SIZE, GFP_KERNEL);
-+ if (!virt_ep || !name) {
-+ dev_err(dev->dev, "%s: -ENOMEM\n", __FUNCTION__);
-+ kfree(name);
-+ kfree(virt_ep);
-+ return NULL;
-+ }
-+
-+ if (!(desc->wMaxPacketSize)) {
-+ fifo_size = validate_fifo_size(desc->bmAttributes);
-+ desc->wMaxPacketSize = fifo_size;
-+ } else {
-+ fifo_size = desc->wMaxPacketSize;
-+ }
-+
-+ DMSG("pxa27x_ep_alloc: bLength: %d, bDescriptorType: %x, bEndpointAddress: %x,\n"
-+ " bmAttributes: %x, wMaxPacketSize: %d\n", desc->bLength,
-+ desc->bDescriptorType, desc->bEndpointAddress, desc->bmAttributes,
-+ desc->wMaxPacketSize);
-+
-+ if (!(desc->bEndpointAddress & 0xF))
-+ desc->bEndpointAddress |= dev->ep_num;
-+
-+ for (i = 0; i < configs; i++)
-+ {
-+ struct pxa27x_ep *pxa_ep;
-+ int j;
-+
-+ DMSG("pxa27x_ep_alloc: config: %d, interface: %d, altinterface: %x,\n",
-+ epconfig->config, epconfig->interface, epconfig->altinterface);
-+
-+ j = pxa27x_find_free_ep(dev);
-+
-+ if (unlikely(j < 0)) {
-+ dev_err(dev->dev, "pxa27x_ep_alloc: Failed to find a spare endpoint\n");
-+ pxa27x_ep_free(gadget, &virt_ep->usb_ep);
-+ return NULL;
-+ }
-+
-+ pxa_ep = &dev->ep[j];
-+
-+ if (i == 0)
-+ virt_ep->pxa_ep = pxa_ep;
-+
-+ pxa_ep->assigned = 1;
-+ pxa_ep->ep_num = dev->ep_num;
-+ pxa_ep->pxa_ep_num = j;
-+ pxa_ep->usb_ep = &virt_ep->usb_ep;
-+ pxa_ep->dev = dev;
-+ pxa_ep->desc = desc;
-+ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0;
-+ pxa_ep->dma = -1;
-+
-+ pxa_ep->fifo_size = fifo_size;
-+ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0;
-+ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
-+ pxa_ep->stopped = 1;
-+ pxa_ep->dma_con = 0;
-+ pxa_ep->config = epconfig->config;
-+ pxa_ep->interface = epconfig->interface;
-+ pxa_ep->aisn = epconfig->altinterface;
-+
-+ pxa_ep->reg_udccsr = &UDCCSR0 + j;
-+ pxa_ep->reg_udcbcr = &UDCBCR0 + j;
-+ pxa_ep->reg_udcdr = &UDCDR0 + j ;
-+ pxa_ep->reg_udccr = &UDCCRA - 1 + j;
-+#ifdef USE_DMA
-+ pxa_ep->reg_drcmr = &DRCMR24 + j;
-+#endif
-+
-+ /* Configure UDCCR */
-+ *pxa_ep->reg_udccr = ((pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN)
-+ | ((pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN)
-+ | ((pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN)
-+ | ((dev->ep_num << UDCCONR_EN_S) & UDCCONR_EN)
-+ | ((pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET)
-+ | ((pxa_ep->dir_in) ? UDCCONR_ED : 0)
-+ | ((min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) << UDCCONR_MPS_S ) & UDCCONR_MPS)
-+ | UDCCONR_EE;
-+// | UDCCONR_DE | UDCCONR_EE;
-+
-+
-+
-+#ifdef USE_DMA
-+ /* Only BULK use DMA */
-+ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\
-+ == USB_ENDPOINT_XFER_BULK)
-+ *pxa_ep->reg_udccsr = UDCCSR_DME;
-+#endif
-+
-+ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr);
-+
-+ epconfig++;
-+ }
-+
-+ /* Fill ep name*/
-+ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_BULK:
-+ sprintf(name, "ep%d%s-bulk", dev->ep_num,
-+ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
-+ break;
-+ case USB_ENDPOINT_XFER_INT:
-+ sprintf(name, "ep%d%s-intr", dev->ep_num,
-+ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
-+ break;
-+ default:
-+ sprintf(name, "ep%d%s", dev->ep_num,
-+ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out"));
-+ break;
-+ }
-+
-+ virt_ep->desc = desc;
-+ virt_ep->usb_ep.name = name;
-+ virt_ep->usb_ep.ops = &pxa27x_ep_ops;
-+ virt_ep->usb_ep.maxpacket = min((ushort)fifo_size, desc->wMaxPacketSize);
-+
-+ list_add_tail(&virt_ep->usb_ep.ep_list, &gadget->ep_list);
-+
-+ dev->ep_num++;
-+ return &virt_ep->usb_ep;
-+}
-+
-+static int pxa27x_udc_get_frame(struct usb_gadget *_gadget)
-+{
-+ return (UDCFNR & 0x7FF);
-+}
-+
-+static int pxa27x_udc_wakeup(struct usb_gadget *_gadget)
-+{
-+ /* host may not have enabled remote wakeup */
-+ if ((UDCCR & UDCCR_DWRE) == 0)
-+ return -EHOSTUNREACH;
-+ udc_set_mask_UDCCR(UDCCR_UDR);
-+ return 0;
-+}
-+
-+static const struct usb_gadget_ops pxa27x_udc_ops = {
-+ .ep_alloc = pxa27x_ep_alloc,
-+ .get_frame = pxa27x_udc_get_frame,
-+ .wakeup = pxa27x_udc_wakeup,
-+ // current versions must always be self-powered
-+};
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+#ifdef UDC_PROC_FILE
-+
-+static const char proc_node_name [] = "driver/udc";
-+
-+static int
-+udc_proc_read(char *page, char **start, off_t off, int count,
-+ int *eof, void *_dev)
-+{
-+ char *buf = page;
-+ struct pxa27x_udc *dev = _dev;
-+ char *next = buf;
-+ unsigned size = count;
-+ unsigned long flags;
-+ int i, t;
-+ u32 tmp;
-+
-+ if (off != 0)
-+ return 0;
-+
-+ local_irq_save(flags);
-+
-+ /* basic device status */
-+ t = scnprintf(next, size, DRIVER_DESC "\n"
-+ "%s version: %s\nGadget driver: %s\n",
-+ driver_name, DRIVER_VERSION DMASTR,
-+ dev->driver ? dev->driver->driver.name : "(none)");
-+ size -= t;
-+ next += t;
-+
-+ /* registers for device and ep0 */
-+ t = scnprintf(next, size,
-+ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n",
-+ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
-+ size -= t;
-+ next += t;
-+
-+ tmp = UDCCR;
-+ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp,
-+ (tmp & UDCCR_OEN) ? " oen":"",
-+ (tmp & UDCCR_AALTHNP) ? " aalthnp":"",
-+ (tmp & UDCCR_AHNP) ? " rem" : "",
-+ (tmp & UDCCR_BHNP) ? " rstir" : "",
-+ (tmp & UDCCR_DWRE) ? " dwre" : "",
-+ (tmp & UDCCR_SMAC) ? " smac" : "",
-+ (tmp & UDCCR_EMCE) ? " emce" : "",
-+ (tmp & UDCCR_UDR) ? " udr" : "",
-+ (tmp & UDCCR_UDA) ? " uda" : "",
-+ (tmp & UDCCR_UDE) ? " ude" : "",
-+ (tmp & UDCCR_ACN) >> UDCCR_ACN_S,
-+ (tmp & UDCCR_AIN) >> UDCCR_AIN_S,
-+ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S );
-+
-+ size -= t;
-+ next += t;
-+
-+ tmp = UDCCSR0;
-+ t = scnprintf(next, size,
-+ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp,
-+ (tmp & UDCCSR0_SA) ? " sa" : "",
-+ (tmp & UDCCSR0_RNE) ? " rne" : "",
-+ (tmp & UDCCSR0_FST) ? " fst" : "",
-+ (tmp & UDCCSR0_SST) ? " sst" : "",
-+ (tmp & UDCCSR0_DME) ? " dme" : "",
-+ (tmp & UDCCSR0_IPR) ? " ipr" : "",
-+ (tmp & UDCCSR0_OPC) ? " opc" : "");
-+ size -= t;
-+ next += t;
-+
-+ if (!dev->driver)
-+ goto done;
-+
-+ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n",
-+ dev->stats.write.bytes, dev->stats.write.ops,
-+ dev->stats.read.bytes, dev->stats.read.ops,
-+ dev->stats.irqs);
-+ size -= t;
-+ next += t;
-+
-+ /* dump endpoint queues */
-+ for (i = 0; i < UDC_EP_NUM; i++) {
-+ struct pxa27x_ep *ep = &dev->ep [i];
-+ struct pxa27x_request *req;
-+ int t;
-+
-+ if (i != 0) {
-+ const struct usb_endpoint_descriptor *d;
-+
-+ d = ep->desc;
-+ if (!d)
-+ continue;
-+ tmp = *dev->ep [i].reg_udccsr;
-+ t = scnprintf(next, size,
-+ "%d max %d %s udccs %02x udccr:0x%x\n",
-+ i, le16_to_cpu (d->wMaxPacketSize),
-+ (ep->dma >= 0) ? "dma" : "pio", tmp,
-+ *dev->ep[i].reg_udccr);
-+ /* TODO translate all five groups of udccs bits! */
-+
-+ } else /* ep0 should only have one transfer queued */
-+ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n",
-+ ep->pio_irqs);
-+ if (t <= 0 || t > size)
-+ goto done;
-+ size -= t;
-+ next += t;
-+
-+ if (list_empty(&ep->queue)) {
-+ t = scnprintf(next, size, "\t(nothing queued)\n");
-+ if (t <= 0 || t > size)
-+ goto done;
-+ size -= t;
-+ next += t;
-+ continue;
-+ }
-+ list_for_each_entry(req, &ep->queue, queue) {
-+#ifdef USE_DMA
-+ if (ep->dma >= 0 && req->queue.prev == &ep->queue)
-+ t = scnprintf(next, size, "\treq %p len %d/%d "
-+ "buf %p (dma%d dcmd %08x)\n",
-+ &req->req, req->req.actual,
-+ req->req.length, req->req.buf,
-+ ep->dma, DCMD(ep->dma)
-+ /* low 13 bits == bytes-to-go */);
-+ else
-+#endif
-+ t = scnprintf(next, size,
-+ "\treq %p len %d/%d buf %p\n",
-+ &req->req, req->req.actual,
-+ req->req.length, req->req.buf);
-+ if (t <= 0 || t > size)
-+ goto done;
-+ size -= t;
-+ next += t;
-+ }
-+ }
-+
-+done:
-+ local_irq_restore(flags);
-+ *eof = 1;
-+ return count - size;
-+}
-+
-+#define create_proc_files() \
-+ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev)
-+#define remove_proc_files() \
-+ remove_proc_entry(proc_node_name, NULL)
-+
-+#else /* !UDC_PROC_FILE */
-+#define create_proc_files() do {} while (0)
-+#define remove_proc_files() do {} while (0)
-+
-+#endif /* UDC_PROC_FILE */
-+
-+/* "function" sysfs attribute */
-+static ssize_t show_function(struct device *_dev, struct device_attribute *attr, char *buf)
-+{
-+ struct pxa27x_udc *dev = dev_get_drvdata(_dev);
-+
-+ if (!dev->driver || !dev->driver->function
-+ || strlen(dev->driver->function) > PAGE_SIZE)
-+ return 0;
-+ return scnprintf(buf, PAGE_SIZE, "%s\n", dev->driver->function);
-+}
-+static DEVICE_ATTR(function, S_IRUGO, show_function, NULL);
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * udc_disable - disable USB device controller
-+ */
-+static void udc_disable(struct pxa27x_udc *dev)
-+{
-+ UDCICR0 = UDCICR1 = 0x00000000;
-+
-+ udc_clear_mask_UDCCR(UDCCR_UDE);
-+
-+ /* Disable clock for USB device */
-+ pxa_set_cken(CKEN11_USB, 0);
-+
-+ ep0_idle(dev);
-+ dev->gadget.speed = USB_SPEED_UNKNOWN;
-+ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
-+}
-+
-+
-+/*
-+ * udc_reinit - initialize software state
-+ */
-+static void udc_reinit(struct pxa27x_udc *dev)
-+{
-+ u32 i;
-+
-+ dev->ep0state = EP0_IDLE;
-+
-+ /* basic endpoint records init */
-+ for (i = 0; i < UDC_EP_NUM; i++) {
-+ struct pxa27x_ep *ep = &dev->ep[i];
-+
-+ ep->stopped = 0;
-+ ep->pio_irqs = ep->dma_irqs = 0;
-+ }
-+ dev->configuration = 0;
-+ dev->interface = 0;
-+ dev->alternate = 0;
-+ /* the rest was statically initialized, and is read-only */
-+}
-+
-+/* until it's enabled, this UDC should be completely invisible
-+ * to any USB host.
-+ */
-+static void udc_enable(struct pxa27x_udc *dev)
-+{
-+ udc_clear_mask_UDCCR(UDCCR_UDE);
-+
-+ /* Enable clock for USB device */
-+ pxa_set_cken(CKEN11_USB, 1);
-+
-+ UDCICR0 = UDCICR1 = 0;
-+
-+ ep0_idle(dev);
-+ dev->gadget.speed = USB_SPEED_FULL;
-+ dev->stats.irqs = 0;
-+
-+ udc_set_mask_UDCCR(UDCCR_UDE);
-+ udelay(2);
-+ if (UDCCR & UDCCR_EMCE)
-+ dev_err(dev->dev, "There are error in configuration, udc disabled\n");
-+
-+ /* caller must be able to sleep in order to cope
-+ * with startup transients.
-+ */
-+ msleep(100);
-+
-+ /* enable suspend/resume and reset irqs */
-+ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS;
-+
-+ /* enable ep0 irqs */
-+ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK);
-+
-+ DMSG("Connecting\n");
-+ /* RPFIXME */
-+ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
-+ //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
-+}
-+
-+
-+/* when a driver is successfully registered, it will receive
-+ * control requests including set_configuration(), which enables
-+ * non-control requests. then usb traffic follows until a
-+ * disconnect is reported. then a host may connect again, or
-+ * the driver might get unbound.
-+ */
-+int usb_gadget_register_driver(struct usb_gadget_driver *driver)
-+{
-+ struct pxa27x_udc *dev = the_controller;
-+ int retval;
-+
-+ if (!driver || driver->speed != USB_SPEED_FULL || !driver->bind
-+ || !driver->unbind || !driver->disconnect || !driver->setup)
-+ return -EINVAL;
-+ if (!dev)
-+ return -ENODEV;
-+ if (dev->driver)
-+ return -EBUSY;
-+
-+ udc_disable(dev);
-+ udc_init_ep(dev);
-+ udc_reinit(dev);
-+
-+ /* first hook up the driver ... */
-+ dev->driver = driver;
-+ dev->gadget.dev.driver = &driver->driver;
-+ dev->ep_num = 1;
-+
-+ retval = device_add(&dev->gadget.dev);
-+ if (retval) {
-+ DMSG("device_add error %d\n", retval);
-+ goto add_fail;
-+ }
-+ retval = driver->bind(&dev->gadget);
-+ if (retval) {
-+ DMSG("bind to driver %s --> error %d\n",
-+ driver->driver.name, retval);
-+ goto bind_fail;
-+ }
-+ retval = device_create_file(dev->dev, &dev_attr_function);
-+ if (retval) {
-+ DMSG("device_create_file failed: %d\n", retval);
-+ goto create_file_fail;
-+ }
-+
-+ /* ... then enable host detection and ep0; and we're ready
-+ * for set_configuration as well as eventual disconnect.
-+ * NOTE: this shouldn't power up until later.
-+ */
-+ DMSG("registered gadget driver '%s'\n", driver->driver.name);
-+ udc_enable(dev);
-+ dump_state(dev);
-+ return 0;
-+
-+create_file_fail:
-+ driver->unbind(&dev->gadget);
-+bind_fail:
-+ device_del(&dev->gadget.dev);
-+add_fail:
-+ dev->driver = 0;
-+ dev->gadget.dev.driver = 0;
-+ return retval;
-+}
-+EXPORT_SYMBOL(usb_gadget_register_driver);
-+
-+static void
-+stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver)
-+{
-+ int i;
-+
-+ DMSG("Trace path 1\n");
-+ /* don't disconnect drivers more than once */
-+ if (dev->gadget.speed == USB_SPEED_UNKNOWN)
-+ driver = 0;
-+ dev->gadget.speed = USB_SPEED_UNKNOWN;
-+
-+ /* prevent new request submissions, kill any outstanding requests */
-+ for (i = 0; i < UDC_EP_NUM; i++) {
-+ struct pxa27x_ep *ep = &dev->ep[i];
-+
-+ ep->stopped = 1;
-+ nuke(ep, -ESHUTDOWN);
-+ }
-+ del_timer_sync(&dev->timer);
-+
-+ /* report disconnect; the driver is already quiesced */
-+ if (driver)
-+ driver->disconnect(&dev->gadget);
-+
-+ /* re-init driver-visible data structures */
-+ udc_reinit(dev);
-+}
-+
-+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
-+{
-+ struct pxa27x_udc *dev = the_controller;
-+
-+ if (!dev)
-+ return -ENODEV;
-+ if (!driver || driver != dev->driver)
-+ return -EINVAL;
-+
-+ local_irq_disable();
-+ udc_disable(dev);
-+ stop_activity(dev, driver);
-+ local_irq_enable();
-+
-+ driver->unbind(&dev->gadget);
-+ pxa27x_ep_freeall(&dev->gadget);
-+ dev->driver = 0;
-+
-+ device_del(&dev->gadget.dev);
-+ device_remove_file(dev->dev, &dev_attr_function);
-+
-+ DMSG("unregistered gadget driver '%s'\n", driver->driver.name);
-+ dump_state(dev);
-+ return 0;
-+}
-+EXPORT_SYMBOL(usb_gadget_unregister_driver);
-+
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static inline void clear_ep_state(struct pxa27x_udc *dev)
-+{
-+ unsigned i;
-+
-+ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint
-+ * fifos, and pending transactions mustn't be continued in any case.
-+ */
-+ for (i = 1; i < UDC_EP_NUM; i++)
-+ nuke(&dev->ep[i], -ECONNABORTED);
-+}
-+
-+static void udc_watchdog(unsigned long _dev)
-+{
-+ struct pxa27x_udc *dev = (void *)_dev;
-+
-+ local_irq_disable();
-+ if (dev->ep0state == EP0_STALL
-+ && (UDCCSR0 & UDCCSR0_FST) == 0
-+ && (UDCCSR0 & UDCCSR0_SST) == 0) {
-+ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF;
-+ DBG(DBG_VERBOSE, "ep0 re-stall\n");
-+ start_watchdog(dev);
-+ }
-+ local_irq_enable();
-+}
-+
-+static void handle_ep0(struct pxa27x_udc *dev)
-+{
-+ u32 udccsr0 = UDCCSR0;
-+ struct pxa27x_ep *ep = &dev->ep[0];
-+ struct pxa27x_request *req;
-+ union {
-+ struct usb_ctrlrequest r;
-+ u8 raw[8];
-+ u32 word[2];
-+ } u;
-+
-+ if (list_empty(&ep->queue))
-+ req = 0;
-+ else
-+ req = list_entry(ep->queue.next, struct pxa27x_request, queue);
-+
-+ /* clear stall status */
-+ if (udccsr0 & UDCCSR0_SST) {
-+ nuke(ep, -EPIPE);
-+ UDCCSR0 = UDCCSR0_SST;
-+ del_timer(&dev->timer);
-+ ep0_idle(dev);
-+ }
-+
-+ /* previous request unfinished? non-error iff back-to-back ... */
-+ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) {
-+ nuke(ep, 0);
-+ del_timer(&dev->timer);
-+ ep0_idle(dev);
-+ }
-+
-+ switch (dev->ep0state) {
-+ case EP0_NO_ACTION:
-+ dev_info(dev->dev, "%s: Busy\n", __FUNCTION__);
-+ /*Fall through */
-+ case EP0_IDLE:
-+ /* late-breaking status? */
-+ udccsr0 = UDCCSR0;
-+
-+ /* start control request? */
-+ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))
-+ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) {
-+ int i;
-+
-+ nuke(ep, -EPROTO);
-+ /* read SETUP packet */
-+ for (i = 0; i < 2; i++) {
-+ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) {
-+bad_setup:
-+ DMSG("SETUP %d!\n", i);
-+ goto stall;
-+ }
-+ u.word [i] = UDCDR0;
-+ }
-+ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0))
-+ goto bad_setup;
-+
-+ le16_to_cpus(&u.r.wValue);
-+ le16_to_cpus(&u.r.wIndex);
-+ le16_to_cpus(&u.r.wLength);
-+
-+ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n",
-+ u.r.bRequestType, u.r.bRequest,
-+ u.r.wValue, u.r.wIndex, u.r.wLength);
-+ /* cope with automagic for some standard requests. */
-+ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK)
-+ == USB_TYPE_STANDARD;
-+ dev->req_config = 0;
-+ dev->req_pending = 1;
-+#if 0
-+ switch (u.r.bRequest) {
-+ /* hardware was supposed to hide this */
-+ case USB_REQ_SET_CONFIGURATION:
-+ case USB_REQ_SET_INTERFACE:
-+ case USB_REQ_SET_ADDRESS:
-+ dev_err(dev->dev, "Should not come here\n");
-+ break;
-+ }
-+
-+#endif
-+ if (u.r.bRequestType & USB_DIR_IN)
-+ dev->ep0state = EP0_IN_DATA_PHASE;
-+ else
-+ dev->ep0state = EP0_OUT_DATA_PHASE;
-+ i = dev->driver->setup(&dev->gadget, &u.r);
-+
-+ if (i < 0) {
-+ /* hardware automagic preventing STALL... */
-+ if (dev->req_config) {
-+ /* hardware sometimes neglects to tell
-+ * tell us about config change events,
-+ * so later ones may fail...
-+ */
-+ WARN("config change %02x fail %d?\n",
-+ u.r.bRequest, i);
-+ return;
-+ /* TODO experiment: if has_cfr,
-+ * hardware didn't ACK; maybe we
-+ * could actually STALL!
-+ */
-+ }
-+ DBG(DBG_VERBOSE, "protocol STALL, "
-+ "%02x err %d\n", UDCCSR0, i);
-+stall:
-+ /* the watchdog timer helps deal with cases
-+ * where udc seems to clear FST wrongly, and
-+ * then NAKs instead of STALLing.
-+ */
-+ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall");
-+ start_watchdog(dev);
-+ dev->ep0state = EP0_STALL;
-+
-+ /* deferred i/o == no response yet */
-+ } else if (dev->req_pending) {
-+ if (likely(dev->ep0state == EP0_IN_DATA_PHASE
-+ || dev->req_std || u.r.wLength))
-+ ep0start(dev, 0, "defer");
-+ else
-+ ep0start(dev, UDCCSR0_IPR, "defer/IPR");
-+ }
-+
-+ /* expect at least one data or status stage irq */
-+ return;
-+
-+ } else {
-+ /* some random early IRQ:
-+ * - we acked FST
-+ * - IPR cleared
-+ * - OPC got set, without SA (likely status stage)
-+ */
-+ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC);
-+ }
-+ break;
-+ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */
-+ if (udccsr0 & UDCCSR0_OPC) {
-+ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF;
-+ DBG(DBG_VERBOSE, "ep0in premature status\n");
-+ if (req)
-+ done(ep, req, 0);
-+ ep0_idle(dev);
-+ } else /* irq was IPR clearing */ {
-+ if (req) {
-+ /* this IN packet might finish the request */
-+ (void) write_ep0_fifo(ep, req);
-+ } /* else IN token before response was written */
-+ }
-+ break;
-+ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */
-+ if (udccsr0 & UDCCSR0_OPC) {
-+ if (req) {
-+ /* this OUT packet might finish the request */
-+ if (read_ep0_fifo(ep, req))
-+ done(ep, req, 0);
-+ /* else more OUT packets expected */
-+ } /* else OUT token before read was issued */
-+ } else /* irq was IPR clearing */ {
-+ DBG(DBG_VERBOSE, "ep0out premature status\n");
-+ if (req)
-+ done(ep, req, 0);
-+ ep0_idle(dev);
-+ }
-+ break;
-+ case EP0_STALL:
-+ UDCCSR0 = UDCCSR0_FST;
-+ break;
-+ }
-+ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK);
-+}
-+
-+
-+static void handle_ep(struct pxa27x_ep *ep)
-+{
-+ struct pxa27x_request *req;
-+ int completed;
-+ u32 udccsr=0;
-+
-+ DMSG("%s is called\n", __FUNCTION__);
-+ do {
-+ completed = 0;
-+ if (likely (!list_empty(&ep->queue))) {
-+ req = list_entry(ep->queue.next,
-+ struct pxa27x_request, queue);
-+ } else
-+ req = 0;
-+
-+// udccsr = *ep->reg_udccsr;
-+ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__,
-+ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr);
-+ if (unlikely(ep->dir_in)) {
-+ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
-+ if (unlikely (udccsr))
-+ *ep->reg_udccsr = udccsr;
-+
-+ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0))
-+ completed = write_fifo(ep, req);
-+
-+ } else {
-+ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr;
-+ if (unlikely(udccsr))
-+ *ep->reg_udccsr = udccsr;
-+
-+ /* fifos can hold packets, ready for reading... */
-+ if (likely(req)) {
-+ completed = read_fifo(ep, req);
-+ } else {
-+ pio_irq_disable (ep->pxa_ep_num);
-+ //*ep->reg_udccsr = UDCCSR_FEF;
-+ DMSG("%s: no req for out data\n",
-+ __FUNCTION__);
-+ }
-+ }
-+ ep->pio_irqs++;
-+ } while (completed);
-+}
-+
-+static void pxa27x_update_eps(struct pxa27x_udc *dev)
-+{
-+ struct pxa27x_virt_ep *virt_ep;
-+ int i;
-+
-+ for (i = 1; i < UDC_EP_NUM; i++) {
-+ if(!dev->ep[i].assigned || !dev->ep[i].usb_ep)
-+ continue;
-+ virt_ep = container_of(dev->ep[i].usb_ep, struct pxa27x_virt_ep, usb_ep);
-+
-+ DMSG("%s, Updating eps %d:%d, %d:%d, %d:%d, %p,%p\n", __FUNCTION__, dev->ep[i].config, dev->configuration
-+ ,dev->ep[i].interface, dev->interface, dev->ep[i].aisn, dev->alternate, virt_ep->pxa_ep, &dev->ep[i]);
-+
-+ if(dev->ep[i].config == dev->configuration && virt_ep->pxa_ep != &dev->ep[i]) {
-+ if ((dev->ep[i].interface == dev->interface &&
-+ dev->ep[i].aisn == dev->alternate) || virt_ep->pxa_ep->config != dev->configuration) {
-+
-+ if (virt_ep->pxa_ep->desc) {
-+ DMSG("%s, Changing end point to %d (en/dis)\n", __FUNCTION__, i);
-+ pxa27x_ep_disable(&virt_ep->usb_ep);
-+ virt_ep->pxa_ep = &dev->ep[i];
-+ pxa27x_ep_enable(&virt_ep->usb_ep, virt_ep->desc);
-+ } else {
-+ DMSG("%s, Changing end point to %d (no en/dis)\n", __FUNCTION__, i);
-+ virt_ep->pxa_ep = &dev->ep[i];
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+static void pxa27x_change_configuration(struct pxa27x_udc *dev)
-+{
-+ struct usb_ctrlrequest req ;
-+
-+ pxa27x_update_eps(dev);
-+
-+ req.bRequestType = 0;
-+ req.bRequest = USB_REQ_SET_CONFIGURATION;
-+ req.wValue = dev->configuration;
-+ req.wIndex = 0;
-+ req.wLength = 0;
-+
-+ dev->ep0state = EP0_NO_ACTION;
-+ dev->driver->setup(&dev->gadget, &req);
-+}
-+
-+static void pxa27x_change_interface(struct pxa27x_udc *dev)
-+{
-+ struct usb_ctrlrequest req;
-+
-+ pxa27x_update_eps(dev);
-+
-+ req.bRequestType = USB_RECIP_INTERFACE;
-+ req.bRequest = USB_REQ_SET_INTERFACE;
-+ req.wValue = dev->alternate;
-+ req.wIndex = dev->interface;
-+ req.wLength = 0;
-+
-+ dev->ep0state = EP0_NO_ACTION;
-+ dev->driver->setup(&dev->gadget, &req);
-+}
-+
-+/*
-+ * pxa27x_udc_irq - interrupt handler
-+ *
-+ * avoid delays in ep0 processing. the control handshaking isn't always
-+ * under software control (pxa250c0 and the pxa255 are better), and delays
-+ * could cause usb protocol errors.
-+ */
-+static irqreturn_t pxa27x_udc_irq(int irq, void *_dev)
-+{
-+ struct pxa27x_udc *dev = _dev;
-+ int handled;
-+
-+ dev->stats.irqs++;
-+
-+ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, "
-+ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR);
-+ do {
-+ u32 udcir = UDCISR1 & 0xF8000000;
-+
-+ handled = 0;
-+
-+ /* SUSpend Interrupt Request */
-+ if (unlikely(udcir & UDCISR1_IRSU)) {
-+ UDCISR1 = UDCISR1_IRSU;
-+ handled = 1;
-+ DBG(DBG_VERBOSE, "USB suspend\n");
-+ if (dev->gadget.speed != USB_SPEED_UNKNOWN
-+ && dev->driver
-+ && dev->driver->suspend)
-+ dev->driver->suspend(&dev->gadget);
-+ ep0_idle(dev);
-+ }
-+
-+ /* RESume Interrupt Request */
-+ if (unlikely(udcir & UDCISR1_IRRU)) {
-+ UDCISR1 = UDCISR1_IRRU;
-+ handled = 1;
-+ DBG(DBG_VERBOSE, "USB resume\n");
-+
-+ if (dev->gadget.speed != USB_SPEED_UNKNOWN
-+ && dev->driver
-+ && dev->driver->resume)
-+ dev->driver->resume(&dev->gadget);
-+ }
-+
-+ if (unlikely(udcir & UDCISR1_IRCC)) {
-+ unsigned config, interface, alternate;
-+
-+ handled = 1;
-+ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or "
-+ "SET_INTERFACE command received\n");
-+
-+ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S;
-+
-+ if (dev->configuration != config) {
-+ dev->configuration = config;
-+ pxa27x_change_configuration(dev) ;
-+ }
-+
-+ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S;
-+ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S;
-+
-+ if ((dev->interface != interface) || (dev->alternate != alternate)) {
-+ dev->interface = interface;
-+ dev->alternate = alternate;
-+ pxa27x_change_interface(dev);
-+ }
-+
-+ UDCCR |= UDCCR_SMAC;
-+
-+ UDCISR1 = UDCISR1_IRCC;
-+ DMSG("%s: con:%d,inter:%d,alt:%d\n",
-+ __FUNCTION__, config,interface, alternate);
-+ }
-+
-+ /* ReSeT Interrupt Request - USB reset */
-+ if (unlikely(udcir & UDCISR1_IRRS)) {
-+ UDCISR1 = UDCISR1_IRRS;
-+ handled = 1;
-+
-+ if ((UDCCR & UDCCR_UDA) == 0) {
-+ DBG(DBG_VERBOSE, "USB reset start\n");
-+
-+ /* reset driver and endpoints,
-+ * in case that's not yet done
-+ */
-+ stop_activity(dev, dev->driver);
-+ }
-+ INFO("USB reset\n");
-+ dev->gadget.speed = USB_SPEED_FULL;
-+ memset(&dev->stats, 0, sizeof dev->stats);
-+
-+ } else {
-+ u32 udcisr0 = UDCISR0 ;
-+ u32 udcisr1 = UDCISR1 & 0xFFFF;
-+ int i;
-+
-+ if (unlikely (!udcisr0 && !udcisr1))
-+ continue;
-+
-+ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0);
-+
-+ /* control traffic */
-+ if (udcisr0 & UDCISR0_IR0) {
-+ dev->ep[0].pio_irqs++;
-+ handle_ep0(dev);
-+ handled = 1;
-+ }
-+
-+ udcisr0 >>= 2;
-+ /* endpoint data transfers */
-+ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) {
-+ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK);
-+
-+ if (udcisr0 & UDC_INT_FIFOERROR)
-+ dev_err(dev->dev, " Endpoint %d Fifo error\n", i);
-+ if (udcisr0 & UDC_INT_PACKETCMP) {
-+ handle_ep(&dev->ep[i]);
-+ handled = 1;
-+ }
-+
-+ }
-+
-+ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) {
-+ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK);
-+
-+ if (udcisr1 & UDC_INT_FIFOERROR) {
-+ dev_err(dev->dev, "Endpoint %d fifo error\n", (i+16));
-+ }
-+
-+ if (udcisr1 & UDC_INT_PACKETCMP) {
-+ handle_ep(&dev->ep[i+16]);
-+ handled = 1;
-+ }
-+ }
-+ }
-+
-+ /* we could also ask for 1 msec SOF (SIR) interrupts */
-+
-+ } while (handled);
-+ return IRQ_HANDLED;
-+}
-+
-+int write_ep0_zlp(void)
-+{
-+ UDCCSR0 = UDCCSR0_IPR;
-+ return 0;
-+}
-+EXPORT_SYMBOL(write_ep0_zlp);
-+
-+static void udc_init_ep(struct pxa27x_udc *dev)
-+{
-+ int i;
-+
-+ INIT_LIST_HEAD(&dev->gadget.ep_list);
-+ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list);
-+
-+ for (i = 0; i < UDC_EP_NUM; i++) {
-+ struct pxa27x_ep *ep = &dev->ep[i];
-+
-+ ep->dma = -1;
-+ if (i != 0) {
-+ memset(ep, 0, sizeof(*ep));
-+ }
-+ INIT_LIST_HEAD(&ep->queue);
-+ }
-+}
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static void nop_release(struct device *dev)
-+{
-+ DMSG("%s %s\n", __FUNCTION__, dev->bus_id);
-+}
-+
-+/* this uses load-time allocation and initialization (instead of
-+ * doing it at run-time) to save code, eliminate fault paths, and
-+ * be more obviously correct.
-+ */
-+
-+static struct pxa27x_udc memory = {
-+ .gadget = {
-+ .ops = &pxa27x_udc_ops,
-+ .ep0 = &memory.virt_ep0.usb_ep,
-+ .name = driver_name,
-+ .dev = {
-+ .bus_id = "gadget",
-+ .release = nop_release,
-+ },
-+ },
-+
-+ /* control endpoint */
-+ .virt_ep0 = {
-+ .pxa_ep = &memory.ep[0],
-+ .usb_ep = {
-+ .name = ep0name,
-+ .ops = &pxa27x_ep_ops,
-+ .maxpacket = EP0_FIFO_SIZE,
-+ },
-+ },
-+
-+ .ep[0] = {
-+ .usb_ep = &memory.virt_ep0.usb_ep,
-+ .dev = &memory,
-+ .reg_udccsr = &UDCCSR0,
-+ .reg_udcdr = &UDCDR0,
-+ },
-+};
-+
-+static int __init pxa27x_udc_probe(struct platform_device *_dev)
-+{
-+ struct pxa27x_udc *dev = &memory;
-+ int retval;
-+
-+ /* other non-static parts of init */
-+ dev->dev = &_dev->dev;
-+ dev->mach = _dev->dev.platform_data;
-+
-+ /* RPFIXME */
-+ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE;
-+
-+ init_timer(&dev->timer);
-+ dev->timer.function = udc_watchdog;
-+ dev->timer.data = (unsigned long) dev;
-+
-+ device_initialize(&dev->gadget.dev);
-+ dev->gadget.dev.parent = &_dev->dev;
-+ dev->gadget.dev.dma_mask = _dev->dev.dma_mask;
-+
-+ the_controller = dev;
-+ platform_set_drvdata(_dev, dev);
-+
-+ udc_disable(dev);
-+ udc_init_ep(dev);
-+ udc_reinit(dev);
-+
-+ /* irq setup after old hardware state is cleaned up */
-+ retval = request_irq(IRQ_USB, pxa27x_udc_irq,
-+ SA_INTERRUPT, driver_name, dev);
-+ if (retval != 0) {
-+ dev_err(dev->dev, "%s: can't get irq %i, err %d\n",
-+ driver_name, IRQ_USB, retval);
-+ return -EBUSY;
-+ }
-+ dev->got_irq = 1;
-+
-+ create_proc_files();
-+
-+ return 0;
-+}
-+
-+static int pxa27x_udc_remove(struct platform_device *_dev)
-+{
-+ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
-+
-+ udc_disable(dev);
-+ remove_proc_files();
-+ usb_gadget_unregister_driver(dev->driver);
-+
-+ pxa27x_ep_freeall(&dev->gadget);
-+
-+ if (dev->got_irq) {
-+ free_irq(IRQ_USB, dev);
-+ dev->got_irq = 0;
-+ }
-+ platform_set_drvdata(_dev, 0);
-+ the_controller = 0;
-+ return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+static void pxa27x_udc_shutdown(struct platform_device *_dev)
-+{
-+ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
-+
-+ udc_disable(dev);
-+}
-+
-+static int pxa27x_udc_suspend(struct platform_device *_dev, pm_message_t state)
-+{
-+ int i;
-+ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
-+
-+ DMSG("%s is called\n", __FUNCTION__);
-+
-+ dev->udccsr0 = UDCCSR0;
-+ for(i=1; (i<UDC_EP_NUM); i++) {
-+ if (dev->ep[i].assigned) {
-+ struct pxa27x_ep *ep = &dev->ep[i];
-+ ep->udccsr_value = *ep->reg_udccsr;
-+ ep->udccr_value = *ep->reg_udccr;
-+ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
-+ i, *ep->reg_udccsr, *ep->reg_udccr);
-+ }
-+ }
-+
-+ udc_clear_mask_UDCCR(UDCCR_UDE);
-+ pxa_set_cken(CKEN11_USB, 0);
-+
-+ return 0;
-+}
-+
-+static int pxa27x_udc_resume(struct platform_device *_dev)
-+{
-+ int i;
-+ struct pxa27x_udc *dev = platform_get_drvdata(_dev);
-+
-+ DMSG("%s is called\n", __FUNCTION__);
-+ UDCCSR0 = dev->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME);
-+ for (i=1; i < UDC_EP_NUM; i++) {
-+ if (dev->ep[i].assigned) {
-+ struct pxa27x_ep *ep = &dev->ep[i];
-+ *ep->reg_udccsr = ep->udccsr_value;
-+ *ep->reg_udccr = ep->udccr_value;
-+ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n",
-+ i, *ep->reg_udccsr, *ep->reg_udccr);
-+ }
-+ }
-+
-+ udc_enable(dev);
-+
-+ /* OTGPH bit is set when sleep mode is entered.
-+ * it indicates that OTG pad is retaining its state.
-+ * Upon exit from sleep mode and before clearing OTGPH,
-+ * Software must configure the USB OTG pad, UDC, and UHC
-+ * to the state they were in before entering sleep mode.*/
-+ PSSR |= PSSR_OTGPH;
-+
-+ return 0;
-+}
-+#endif
-+
-+/*-------------------------------------------------------------------------*/
-+
-+static struct platform_driver udc_driver = {
-+ .driver = {
-+ .name = "pxa2xx-udc",
-+ },
-+ .probe = pxa27x_udc_probe,
-+ .remove = pxa27x_udc_remove,
-+#ifdef CONFIG_PM
-+ .shutdown = pxa27x_udc_shutdown,
-+ .suspend = pxa27x_udc_suspend,
-+ .resume = pxa27x_udc_resume
-+#endif
-+};
-+
-+static int __init udc_init(void)
-+{
-+ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
-+ return platform_driver_register(&udc_driver);
-+}
-+module_init(udc_init);
-+
-+static void __exit udc_exit(void)
-+{
-+ platform_driver_unregister(&udc_driver);
-+}
-+module_exit(udc_exit);
-+
-+MODULE_DESCRIPTION(DRIVER_DESC);
-+MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell");
-+MODULE_LICENSE("GPL");
-Index: linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/drivers/usb/gadget/pxa27x_udc.h 2007-04-21 12:22:00.000000000 -0300
-@@ -0,0 +1,298 @@
-+/*
-+ * linux/drivers/usb/gadget/pxa27x_udc.h
-+ * Intel PXA27x on-chip full speed USB device controller
-+ *
-+ * Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
-+ * Copyright (C) 2003 David Brownell
-+ * Copyright (C) 2004 Intel Corporation
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+#ifndef __LINUX_USB_GADGET_PXA27X_H
-+#define __LINUX_USB_GADGET_PXA27X_H
-+
-+#include <linux/types.h>
-+
-+struct pxa27x_udc;
-+
-+struct pxa27x_ep {
-+ struct pxa27x_udc *dev;
-+ struct usb_ep *usb_ep;
-+ const struct usb_endpoint_descriptor *desc;
-+
-+ struct list_head queue;
-+ unsigned long pio_irqs;
-+ unsigned long dma_irqs;
-+
-+ unsigned pxa_ep_num;
-+ int dma;
-+ unsigned fifo_size;
-+ unsigned ep_type;
-+
-+ unsigned stopped : 1;
-+ unsigned dma_con : 1;
-+ unsigned dir_in : 1;
-+ unsigned assigned : 1;
-+
-+ unsigned ep_num;
-+ unsigned config;
-+ unsigned interface;
-+ unsigned aisn;
-+ /* UDCCSR = UDC Control/Status Register for this EP
-+ * UBCR = UDC Byte Count Remaining (contents of OUT fifo)
-+ * UDCDR = UDC Endpoint Data Register (the fifo)
-+ * UDCCR = UDC Endpoint Configuration Registers
-+ * DRCM = DMA Request Channel Map
-+ */
-+ volatile u32 *reg_udccsr;
-+ volatile u32 *reg_udcbcr;
-+ volatile u32 *reg_udcdr;
-+ volatile u32 *reg_udccr;
-+#ifdef USE_DMA
-+ volatile u32 *reg_drcmr;
-+#define drcmr(n) .reg_drcmr = & DRCMR ## n ,
-+#else
-+#define drcmr(n)
-+#endif
-+
-+#ifdef CONFIG_PM
-+ unsigned udccsr_value;
-+ unsigned udccr_value;
-+#endif
-+};
-+
-+struct pxa27x_virt_ep {
-+ struct usb_ep usb_ep;
-+ const struct usb_endpoint_descriptor *desc;
-+ struct pxa27x_ep *pxa_ep;
-+};
-+
-+struct pxa27x_request {
-+ struct usb_request req;
-+ struct list_head queue;
-+};
-+
-+enum ep0_state {
-+ EP0_IDLE,
-+ EP0_IN_DATA_PHASE,
-+ EP0_OUT_DATA_PHASE,
-+// EP0_END_XFER,
-+ EP0_STALL,
-+ EP0_NO_ACTION
-+};
-+
-+#define EP0_FIFO_SIZE ((unsigned)16)
-+#define BULK_FIFO_SIZE ((unsigned)64)
-+#define ISO_FIFO_SIZE ((unsigned)256)
-+#define INT_FIFO_SIZE ((unsigned)8)
-+
-+struct udc_stats {
-+ struct ep0stats {
-+ unsigned long ops;
-+ unsigned long bytes;
-+ } read, write;
-+ unsigned long irqs;
-+};
-+
-+#define UDC_EP_NUM 24
-+
-+
-+struct pxa27x_udc {
-+ struct usb_gadget gadget;
-+ struct usb_gadget_driver *driver;
-+
-+ enum ep0_state ep0state;
-+ struct udc_stats stats;
-+ unsigned got_irq : 1,
-+ has_cfr : 1,
-+ req_pending : 1,
-+ req_std : 1,
-+ req_config : 1;
-+
-+#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200))
-+ struct timer_list timer;
-+
-+ struct device *dev;
-+ struct pxa2xx_udc_mach_info *mach;
-+ u64 dma_mask;
-+ struct pxa27x_virt_ep virt_ep0;
-+ struct pxa27x_ep ep[UDC_EP_NUM];
-+ unsigned int ep_num;
-+
-+ unsigned configuration,
-+ interface,
-+ alternate;
-+#ifdef CONFIG_PM
-+ unsigned udccsr0;
-+#endif
-+};
-+
-+static struct pxa27x_udc *the_controller;
-+
-+#if 0
-+/*-------------------------------------------------------------------------*/
-+
-+
-+/* one GPIO should be used to detect host disconnect */
-+static inline int is_usb_connected(void)
-+{
-+ if (!the_controller->mach->udc_is_connected)
-+ return 1;
-+ return the_controller->mach->udc_is_connected();
-+}
-+
-+/* one GPIO should force the host to see this device (or not) */
-+static inline void make_usb_disappear(void)
-+{
-+ if (!the_controller->mach->udc_command)
-+ return;
-+ the_controller->mach->udc_command(PXA27X_UDC_CMD_DISCONNECT);
-+}
-+
-+static inline void let_usb_appear(void)
-+{
-+ if (!the_controller->mach->udc_command)
-+ return;
-+ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
-+}
-+#endif
-+
-+/*-------------------------------------------------------------------------*/
-+
-+/*
-+ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be
-+ * mostly silent during normal use/testing, with no timing side-effects.
-+ */
-+#define DBG_NORMAL 1 /* error paths, device state transitions */
-+#define DBG_VERBOSE 2 /* add some success path trace info */
-+#define DBG_NOISY 3 /* ... even more: request level */
-+#define DBG_VERY_NOISY 4 /* ... even more: packet level */
-+
-+#ifdef DEBUG
-+static const char *state_name[] = {
-+ "EP0_IDLE",
-+ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE",
-+ "EP0_END_XFER", "EP0_STALL"
-+};
-+
-+#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff)
-+
-+#ifdef VERBOSE
-+# define UDC_DEBUG DBG_VERBOSE
-+#else
-+# define UDC_DEBUG DBG_NORMAL
-+#endif
-+
-+static void __attribute__ ((__unused__))
-+dump_udccr(const char *label)
-+{
-+ u32 udccr = UDCCR;
-+ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n",
-+ label, udccr,
-+ (udccr & UDCCR_OEN) ? " oen":"",
-+ (udccr & UDCCR_AALTHNP) ? " aalthnp":"",
-+ (udccr & UDCCR_AHNP) ? " rem" : "",
-+ (udccr & UDCCR_BHNP) ? " rstir" : "",
-+ (udccr & UDCCR_DWRE) ? " dwre" : "",
-+ (udccr & UDCCR_SMAC) ? " smac" : "",
-+ (udccr & UDCCR_EMCE) ? " emce" : "",
-+ (udccr & UDCCR_UDR) ? " udr" : "",
-+ (udccr & UDCCR_UDA) ? " uda" : "",
-+ (udccr & UDCCR_UDE) ? " ude" : "",
-+ (udccr & UDCCR_ACN) >> UDCCR_ACN_S,
-+ (udccr & UDCCR_AIN) >> UDCCR_AIN_S,
-+ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S );
-+}
-+
-+static void __attribute__ ((__unused__))
-+dump_udccsr0(const char *label)
-+{
-+ u32 udccsr0 = UDCCSR0;
-+
-+ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n",
-+ label, state_name[the_controller->ep0state], udccsr0,
-+ (udccsr0 & UDCCSR0_SA) ? " sa" : "",
-+ (udccsr0 & UDCCSR0_RNE) ? " rne" : "",
-+ (udccsr0 & UDCCSR0_FST) ? " fst" : "",
-+ (udccsr0 & UDCCSR0_SST) ? " sst" : "",
-+ (udccsr0 & UDCCSR0_DME) ? " dme" : "",
-+ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "",
-+ (udccsr0 & UDCCSR0_OPC) ? " opr" : "");
-+}
-+
-+static void __attribute__ ((__unused__))
-+dump_state(struct pxa27x_udc *dev)
-+{
-+ unsigned i;
-+
-+ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n",
-+ state_name[dev->ep0state],
-+ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR);
-+ dump_udccr("udccr");
-+
-+ if (!dev->driver) {
-+ DMSG("no gadget driver bound\n");
-+ return;
-+ } else
-+ DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
-+
-+
-+ dump_udccsr0 ("udccsr0");
-+ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
-+ dev->stats.write.bytes, dev->stats.write.ops,
-+ dev->stats.read.bytes, dev->stats.read.ops);
-+
-+ for (i = 1; i < UDC_EP_NUM; i++) {
-+ if (dev->ep[i].assigned)
-+ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr);
-+ }
-+}
-+
-+#if 0
-+static void dump_regs(u8 ep)
-+{
-+ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n",
-+ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep));
-+}
-+static void dump_req (struct pxa27x_request *req)
-+{
-+ struct usb_request *r = &req->req;
-+
-+ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n",
-+ __FUNCTION__, (unsigned)r->buf, r->length,
-+ r->dma, r->actual);
-+}
-+#endif
-+
-+#else
-+
-+#define DMSG(stuff...) do{}while(0)
-+
-+#define dump_udccr(x) do{}while(0)
-+#define dump_udccsr0(x) do{}while(0)
-+#define dump_state(x) do{}while(0)
-+
-+#define UDC_DEBUG ((unsigned)4)
-+
-+#endif
-+
-+#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
-+
-+#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
-+#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
-+
-+
-+#endif /* __LINUX_USB_GADGET_PXA27X_H */
-Index: linux-2.6.20.7/drivers/usb/gadget/pxa2xx_udc.h
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/pxa2xx_udc.h 2007-04-21 12:21:53.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/pxa2xx_udc.h 2007-04-21 12:22:00.000000000 -0300
-@@ -259,7 +259,8 @@
- unsigned i;
-
- DMSG("%s %s, uicr %02X.%02X, usir %02X.%02x, ufnr %02X.%02X\n",
-- is_usb_connected() ? "host " : "disconnected",
-+ //is_usb_connected() ? "host " : "disconnected",
-+ "host ",
- state_name[dev->ep0state],
- UICR1, UICR0, USIR1, USIR0, UFNRH, UFNRL);
- dump_udccr("udccr");
-@@ -276,8 +277,8 @@
- } else
- DMSG("ep0 driver '%s'\n", dev->driver->driver.name);
-
-- if (!is_usb_connected())
-- return;
-+ //if (!is_usb_connected())
-+ // return;
-
- dump_udccs0 ("udccs0");
- DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n",
-Index: linux-2.6.20.7/drivers/usb/gadget/ether.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/usb/gadget/ether.c 2007-04-21 12:21:53.000000000 -0300
-+++ linux-2.6.20.7/drivers/usb/gadget/ether.c 2007-04-21 12:29:18.000000000 -0300
-@@ -1275,6 +1275,10 @@
- /* done sending after USB_CDC_GET_ENCAPSULATED_RESPONSE */
- }
-
-+#ifdef CONFIG_USB_GADGET_PXA27X
-+int write_ep0_zlp(void);
-+#endif
-+
- static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req)
- {
- struct eth_dev *dev = ep->driver_data;
-@@ -1285,6 +1289,10 @@
- status = rndis_msg_parser (dev->rndis_config, (u8 *) req->buf);
- if (status < 0)
- ERROR(dev, "%s: rndis parse error %d\n", __FUNCTION__, status);
-+
-+#ifdef CONFIG_USB_GADGET_PXA27X
-+ write_ep0_zlp();
-+#endif
- spin_unlock(&dev->lock);
- }
-
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch b/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
deleted file mode 100644
index 7c020a2d96..0000000000
--- a/packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c 2007-04-30 20:33:19.000000000 -0300
-@@ -0,0 +1,109 @@
-+#include <linux/input.h>
-+#include <asm/arch/kbd.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
-+
-+#if defined(CONFIG_PXA_EZX_E680)
-+static unsigned char ezx_keycode[] = {
-+ /* row 0 */
-+ KEY_UP, KEY_RIGHT, KEY_RESERVED, KEY_PHONE,
-+ /* row 1 */
-+ KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN,
-+ /* row 2 */
-+ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_KPENTER,
-+};
-+
-+static unsigned char ezx_direct_keycode[] = {
-+ KEY_CAMERA,
-+ KEYPAD_RESERVED,
-+ KEYPAD_RESERVED,
-+ KEYPAD_HOME,
-+ KEY_POWER,
-+ KEYPAD_MENU,
-+};
-+#elif defined(CONFIG_PXA_EZX_A780)
-+static unsigned char ezx_keycode[] = {
-+ /* row 0 */
-+ KEY_KPENTER, KEY_MENU, KEY_CANCEL, KEY_PAGEUP, KEY_UP,
-+ /* row 1 */
-+ KEY_KP1, KEY_KP2, KEY_KP3, KEY_ENTER, KEY_KPENTER, /*center joypad */
-+ /* row 2 */
-+ KEY_KP4, KEY_KP5, KEY_KP6, KEY_PAGEDOWN, KEY_PHONE,
-+ /* row 3 */
-+ KEY_KP7, KEY_KP8, KEY_KP9, KEY_PHONE, KEY_LEFT,
-+ /* row 4 */
-+ KEY_KPASTERISK, KEY_KP0, KEY_KPDOT, KEY_PAGEDOWN, KEY_DOWN,
-+};
-+static unsigned char ezx_direct_keycode[] = {
-+ KEY_CAMERA,
-+};
-+#else
-+#error "no EZX subarchitecture defined"
-+#endif
-+
-+static int ezx_kbd_init(void)
-+{
-+#if defined(CONFIG_PXA_EZX_E680)
-+ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, VR Key */
-+ pxa_gpio_mode(96 | GPIO_ALT_FN_1_IN); /* KP_DKIN<3>, GAME_A */
-+ pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN); /* KP_DKIN<4>, power key */
-+ pxa_gpio_mode(98 | GPIO_ALT_FN_1_IN); /* KP_DKIN<5>, GAME_B */
-+ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
-+ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
-+ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
-+ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
-+ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
-+ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
-+ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
-+ pxa_gpio_mode(GPIO_TC_MM_EN);
-+ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN);
-+ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN);
-+ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
-+#elif defined(CONFIG_PXA_EZX_A780)
-+ pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, voice_rec */
-+ pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */
-+ pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */
-+ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
-+ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
-+ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
-+ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
-+ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
-+ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
-+ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
-+ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
-+#endif
-+ return 0;
-+}
-+
-+static struct pxakbd_platform_data ezx_kbd_platform_data = {
-+ .init = &ezx_kbd_init,
-+ .scan_interval = HZ/40,
-+ .matrix = {
-+ .keycode = ezx_keycode,
-+#if defined(CONFIG_PXA_EZX_E680)
-+ .cols = 4,
-+ .rows = 3,
-+#elif defined(CONFIG_PXA_EZX_A780)
-+ .cols = 5,
-+ .rows = 5,
-+#endif
-+ },
-+ .direct = {
-+ .keycode = ezx_direct_keycode,
-+#if defined(CONFIG_PXA_EZX_E680)
-+ .num = 6,
-+#elif defined(CONFIG_PXA_EZX_A780)
-+ .num = 1,
-+#endif
-+ },
-+};
-+
-+
-+int __init __ezx_kbd_init (void)
-+{
-+ pxa_set_kbd_info(&ezx_kbd_platform_data);
-+ return 0;
-+}
-+
-+arch_initcall(__ezx_kbd_init);
-Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-04-30 20:09:21.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-04-30 20:09:34.000000000 -0300
-@@ -18,7 +18,7 @@
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
--obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o ezx-kbd.o
- obj-$(CONFIG_PXA_EZX_EMU) += ezx-emu.o
-
- # Support for blinky lights
-Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
-===================================================================
---- linux-2.6.21.orig/drivers/input/keyboard/pxakbd.c 2007-04-30 20:47:29.000000000 -0300
-+++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-04-30 20:49:32.000000000 -0300
-@@ -213,6 +213,7 @@
- if (!input_dev)
- goto out_pxa;
-
-+ spin_lock_init(&pxakbd->lock);
- pxakbd->irq = platform_get_irq(pdev, 0);
- r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!r || pxakbd->irq == NO_IRQ) {
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-mci.patch b/packages/linux/linux-ezx-2.6.21/ezx-mci.patch
deleted file mode 100644
index d16693e3e4..0000000000
--- a/packages/linux/linux-ezx-2.6.21/ezx-mci.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-Index: linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.20.7/arch/arm/mach-pxa/ezx-mci.c 2007-04-20 01:10:13.000000000 -0300
-@@ -0,0 +1,159 @@
-+/*
-+ * linux/arch/arm/mach-ezx/a780.c
-+ *
-+ * Support for the Motorola Ezx A780 Development Platform.
-+ *
-+ * Author: Zhuang Xiaofan
-+ * Created: Nov 25, 2003
-+ * Copyright: Motorola Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/mmc/host.h>
-+#include <linux/irq.h>
-+#include <asm/irq.h>
-+#include <asm/arch/pxa-regs.h>
-+#include <asm/arch/ezx-pcap.h>
-+#include <asm/arch/mmc.h>
-+#include <asm/arch/hardware.h>
-+
-+extern int ezx_pcap_mmcsd_power(int);
-+extern void ezx_pcap_mmcsd_voltage(u_int32_t);
-+
-+static struct pxamci_platform_data ezx_mci_platform_data;
-+
-+static int ezx_mci_init(struct device *dev,
-+ irqreturn_t (*ezx_detect_int)(int, void *),
-+ void *data)
-+{
-+ int err;
-+ printk("%s entered\n", __FUNCTION__);
-+
-+ /* Setup GPIO for PXA27x MMC/SD controller */
-+ pxa_gpio_mode(GPIO32_MMCCLK_MD);
-+ pxa_gpio_mode(GPIO112_MMCCMD_MD);
-+ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
-+ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
-+ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
-+ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
-+
-+ ezx_pcap_mmcsd_power(1);
-+
-+ ezx_mci_platform_data.detect_delay = msecs_to_jiffies(250);
-+
-+ err = request_irq(0x49, ezx_detect_int, SA_INTERRUPT,
-+ "MMC card detect", data);
-+ if (err) {
-+ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
-+ "MMC card detect IRQ\n");
-+ return -1;
-+ }
-+
-+ set_irq_type(0x0b, IRQT_BOTHEDGE);
-+
-+ return 0;
-+}
-+
-+static int ezx_mci_get_ro(struct device *dev)
-+{
-+ printk("%s entered\n", __FUNCTION__);
-+#if defined(CONFIG_PXA_EZX_E680)
-+ /* this is only e680, i guess */
-+ // return GPIO_is_high(96+4);
-+ return (GPLR3 & 0x800);
-+#else
-+ return 0;
-+#endif
-+}
-+
-+#if defined(CONFIG_PXA_EZX_A780)
-+static u_int8_t mmc_voltage[] = {
-+ [MMC_VDD_160] = 5,
-+ [MMC_VDD_170] = 5,
-+ [MMC_VDD_180] = 6,
-+ [MMC_VDD_190] = 6,
-+ [MMC_VDD_200] = 7,
-+ [MMC_VDD_210] = 7,
-+ [MMC_VDD_220] = 8,
-+ [MMC_VDD_230] = 8,
-+ [MMC_VDD_240] = 9,
-+ [MMC_VDD_250] = 9,
-+ [MMC_VDD_260] = 10,
-+ [MMC_VDD_270] = 10,
-+ [MMC_VDD_280] = 11,
-+ [MMC_VDD_290] = 11,
-+ [MMC_VDD_300] = 12,
-+ [MMC_VDD_310] = 12,
-+ [MMC_VDD_320] = 13,
-+ [MMC_VDD_330] = 13,
-+ [MMC_VDD_340] = 14,
-+ [MMC_VDD_350] = 14,
-+ [MMC_VDD_360] = 15,
-+};
-+#elif defined(CONFIG_PXA_EZX_E680)
-+static u_int8_t mmc_voltage[] = {
-+ [MMC_VDD_160] = 3,
-+ [MMC_VDD_170] = 3,
-+ [MMC_VDD_180] = 3,
-+ [MMC_VDD_190] = 3,
-+ [MMC_VDD_200] = 3,
-+ [MMC_VDD_210] = 3,
-+ [MMC_VDD_220] = 3,
-+ [MMC_VDD_230] = 3,
-+ [MMC_VDD_240] = 3,
-+ [MMC_VDD_250] = 3,
-+ [MMC_VDD_260] = 3,
-+ [MMC_VDD_270] = 3,
-+ [MMC_VDD_280] = 3,
-+ [MMC_VDD_290] = 3,
-+ [MMC_VDD_300] = 3,
-+ [MMC_VDD_310] = 3,
-+ [MMC_VDD_320] = 3,
-+ [MMC_VDD_330] = 3,
-+ [MMC_VDD_340] = 3,
-+ [MMC_VDD_350] = 3,
-+ [MMC_VDD_360] = 3,
-+};
-+#endif
-+
-+static void ezx_mci_setpower(struct device *dev, unsigned int vdd)
-+{
-+ printk("%s(vdd=%u) entered\n", __FUNCTION__, vdd);
-+ if (vdd <= MMC_VDD_360)
-+ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
-+
-+ ezx_pcap_mmcsd_power(1);
-+}
-+
-+static void ezx_mci_exit(struct device *dev, void *data)
-+{
-+ printk("%s entered\n", __FUNCTION__);
-+ ezx_pcap_mmcsd_power(0);
-+ free_irq(0x49, data);
-+}
-+
-+static struct pxamci_platform_data ezx_mci_platform_data = {
-+#if defined(CONFIG_PXA_EZX_E680)
-+ .ocr_mask = MMC_VDD_27_28,
-+#elif defined(CONFIG_PXA_EZX_A780)
-+ .ocr_mask = MMC_VDD_160_165|MMC_VDD_18_19|MMC_VDD_20_21
-+ |MMC_VDD_22_23|MMC_VDD_24_25|MMC_VDD_26_27
-+ |MMC_VDD_28_29|MMC_VDD_30_31|MMC_VDD_32_33
-+ |MMC_VDD_34_35|MMC_VDD_35_36,
-+#endif
-+ .init = ezx_mci_init,
-+ .get_ro = ezx_mci_get_ro,
-+ .setpower = ezx_mci_setpower,
-+ .exit = ezx_mci_exit,
-+};
-+
-+int __init __ezx_mci_init (void)
-+{
-+ pxa_set_mci_info(&ezx_mci_platform_data);
-+ return 0;
-+}
-+
-+arch_initcall(__ezx_mci_init);
-Index: linux-2.6.20.7/arch/arm/mach-pxa/Makefile
-===================================================================
---- linux-2.6.20.7.orig/arch/arm/mach-pxa/Makefile 2007-04-21 02:56:16.000000000 -0300
-+++ linux-2.6.20.7/arch/arm/mach-pxa/Makefile 2007-04-21 03:00:03.000000000 -0300
-@@ -18,7 +18,7 @@
- obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
- obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
- obj-$(CONFIG_MACH_TOSA) += tosa.o
--obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
-
- # Support for blinky lights
- led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch b/packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch
deleted file mode 100644
index 9f30cc35fe..0000000000
--- a/packages/linux/linux-ezx-2.6.21/ezx-serial-bug-workaround.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Work around some errata in the pxa serial code (copied from motorolas 2.4.x tree)
-
-Index: linux-2.6.20.7/drivers/serial/pxa.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/serial/pxa.c 2007-04-21 13:57:46.000000000 -0300
-+++ linux-2.6.20.7/drivers/serial/pxa.c 2007-04-21 14:05:03.000000000 -0300
-@@ -29,6 +29,10 @@
- #define SUPPORT_SYSRQ
- #endif
-
-+#define pxa_buggy_port(x) ({ \
-+ int cpu_ver; asm("mrc%? p15, 0, %0, c0, c0" : "=r" (cpu_ver)); \
-+ ((x) == PORT_PXA && (cpu_ver & ~1) == 0x69052100); })
-+
- #include <linux/module.h>
- #include <linux/ioport.h>
- #include <linux/init.h>
-@@ -195,7 +199,7 @@
- if (uart_circ_empty(xmit))
- serial_pxa_stop_tx(&up->port);
- }
--
-+static inline irqreturn_t serial_pxa_irq(int, void *);
- static void serial_pxa_start_tx(struct uart_port *port)
- {
- struct uart_pxa_port *up = (struct uart_pxa_port *)port;
-@@ -203,6 +207,8 @@
- if (!(up->ier & UART_IER_THRI)) {
- up->ier |= UART_IER_THRI;
- serial_out(up, UART_IER, up->ier);
-+ if (pxa_buggy_port(up->port.type))
-+ serial_pxa_irq(up->port.irq, NULL);
- }
- }
-
-@@ -298,6 +304,9 @@
-
- mcr |= up->mcr;
-
-+ if (pxa_buggy_port(up->port.type) && up->port.irq != 0)
-+ mcr ^= UART_MCR_OUT2;
-+
- serial_out(up, UART_MCR, mcr);
- }
-
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-ts.patch b/packages/linux/linux-ezx-2.6.21/ezx-ts.patch
deleted file mode 100644
index 1dd88efd6e..0000000000
--- a/packages/linux/linux-ezx-2.6.21/ezx-ts.patch
+++ /dev/null
@@ -1,399 +0,0 @@
-Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
-===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-04-26 05:08:32.000000000 +0200
-+++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-04-26 23:27:05.000000000 +0200
-@@ -164,4 +164,16 @@
- To compile this driver as a module, choose M here: the
- module will be called ucb1400_ts.
-
-+config TOUCHSCREEN_PCAP
-+ tristate "Motorola PCAP touchscreen"
-+ depends on PXA_EZX_PCAP
-+ help
-+ Say Y here if you have a Motorola EZX (E680, A780) telephone
-+ and want to support the built-in touchscreen.
-+
-+ If unsure, say N.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called hp680_ts_input.
-+
- endif
-Index: linux-2.6.21/drivers/input/touchscreen/Makefile
-===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-04-26 05:08:32.000000000 +0200
-+++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-04-26 23:27:52.000000000 +0200
-@@ -16,3 +16,4 @@
- obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
- obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
- obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o
-+obj-$(CONFIG_TOUCHSCREEN_PCAP) += pcap_ts.o
-Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-04-26 23:27:05.000000000 +0200
-@@ -0,0 +1,364 @@
-+/*
-+ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
-+ * in the EZX phone platform.
-+ *
-+ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
-+ *
-+ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * TODO:
-+ * split this in a hardirq handler and a tasklet/bh
-+ * suspend/resume support
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/fs.h>
-+#include <linux/string.h>
-+#include <linux/pm.h>
-+#include <linux/timer.h>
-+#include <linux/config.h>
-+#include <linux/interrupt.h>
-+#include <linux/platform_device.h>
-+#include <linux/input.h>
-+
-+#include <asm/arch/hardware.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#include "../../misc/ezx/ssp_pcap.h"
-+
-+#if 1
-+#define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
-+#else
-+#define DEBUGP(x, args ...)
-+#endif
-+
-+#define PRESSURE 1
-+#define COORDINATE 2
-+
-+struct pcap_ts {
-+ int irq_xy;
-+ int irq_touch;
-+ struct input_dev *input;
-+ struct timer_list timer;
-+
-+ u_int16_t x, y;
-+ u_int16_t pressure, pressure_last;
-+
-+ u_int8_t read_state;
-+};
-+
-+#define X_AXIS_MIN 0
-+#define X_AXIS_MAX 1023
-+
-+#define Y_AXIS_MAX X_AXIS_MAX
-+#define Y_AXIS_MIN X_AXIS_MIN
-+
-+#define PRESSURE_MAX X_AXIS_MAX
-+#define PRESSURE_MIN X_AXIS_MIN
-+
-+static int pcap_ts_mode(u_int32_t mode)
-+{
-+ int ret;
-+
-+ u_int32_t tmp;
-+
-+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
-+ tmp |= mode;
-+ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
-+
-+ DEBUGP("set ts mode ");
-+ if (mode == PCAP_TS_POSITION_XY_MEASUREMENT)
-+ DEBUGP("COORD\n");
-+ else if (mode == PCAP_TS_PRESSURE_MEASUREMENT)
-+ DEBUGP("PRESS\n");
-+ else if (mode == PCAP_TS_STANDBY_MODE)
-+ DEBUGP("STANDBY\n");
-+ else
-+ printk("UNKNOWN\n");
-+
-+ return ret;
-+}
-+
-+/* issue a XY read command to the ADC of PCAP2. Well get an ADCDONE2 interrupt
-+ * once the result of the conversion is available */
-+static int pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
-+{
-+ int ret;
-+ u_int32_t tmp;
-+ DEBUGP("start xy read in mode %s\n",
-+ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
-+
-+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
-+ tmp |= SSP_PCAP_ADC_START_VALUE;
-+
-+ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ ret = ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
-+
-+ return ret;
-+}
-+
-+/* read the XY result from the ADC of PCAP2 */
-+static int pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
-+{
-+ int ret;
-+ u_int32_t tmp;
-+
-+ DEBUGP("get xy value in mode %s\n",
-+ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
-+
-+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ if (tmp & 0x00400000)
-+ return -EIO;
-+
-+ if (pcap_ts->read_state == COORDINATE) {
-+ pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
-+ pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
-+ >>SSP_PCAP_ADD2_VALUE_SHIFT;
-+ } else {
-+ pcap_ts->pressure_last = pcap_ts->pressure;
-+ pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
-+ >>SSP_PCAP_ADD2_VALUE_SHIFT;
-+ }
-+
-+ return 0;
-+}
-+
-+/* PCAP2 interrupts us when ADC conversion result is available */
-+static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ struct pcap_ts *pcap_ts = dev_id;
-+
-+ if (pcap_ts_get_xy_value(pcap_ts) < 0) {
-+ printk("pcap_ts: error reading XY value\n");
-+ return IRQ_HANDLED;
-+ }
-+
-+ DEBUGP("%s X=%4d, Y=%4d Z=%4d\n",
-+ pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
-+ pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
-+
-+ if (pcap_ts->read_state == PRESSURE) {
-+ input_report_abs(pcap_ts->input, ABS_PRESSURE,
-+ pcap_ts->pressure);
-+ if ((pcap_ts->pressure >= PRESSURE_MAX ||
-+ pcap_ts->pressure <= PRESSURE_MIN ) &&
-+ pcap_ts->pressure == pcap_ts->pressure_last) {
-+ /* pen has been released */
-+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
-+ input_sync(pcap_ts->input);
-+
-+ pcap_ts->x = pcap_ts->y = 0;
-+
-+ /* ask PCAP2 to interrupt us if touch event happens
-+ * again */
-+ pcap_ts->read_state = PRESSURE;
-+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+
-+ /* no need for timer, we'll get interrupted with
-+ * next touch down event */
-+ del_timer(&pcap_ts->timer);
-+ } else {
-+ /* pen has been touched down */
-+ input_report_key(pcap_ts->input, BTN_TOUCH, 1);
-+ /* don't input_sync(), we don't know position yet */
-+
-+ /* switch state machine into coordinate read mode */
-+ pcap_ts->read_state = COORDINATE;
-+ pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
-+ pcap_ts_start_xy_read(pcap_ts);
-+
-+ mod_timer(&pcap_ts->timer, jiffies + HZ/20);
-+ }
-+ } else {
-+ /* we are in coordinate mode */
-+ if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
-+ pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
-+ DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
-+#if 0
-+ input_report_key(pcap_ts->input, BTN_TOUCH, 0);
-+ pcap_ts->x = pcap_ts->y = 0;
-+#endif
-+ } else {
-+ input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
-+ input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
-+ }
-+ input_sync(pcap_ts->input);
-+
-+ /* switch back to pressure read mode */
-+ pcap_ts->read_state = PRESSURE;
-+ pcap_ts_mode(PCAP_TS_STANDBY_MODE);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+ }
-+
-+ return IRQ_HANDLED;
-+}
-+
-+/* PCAP2 interrupts us if the pen touches down */
-+static irqreturn_t pcap_ts_irq_touch(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ struct pcap_ts *pcap_ts = dev_id;
-+ DEBUGP("entered\n");
-+
-+ /* mask Touchscreen interrupt bit, prevents further touch events
-+ * from being reported to us until we're finished with reading
-+ * both pressure and x/y from ADC */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
-+ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
-+ pcap_ts->read_state = PRESSURE;
-+ pcap_ts_start_xy_read(pcap_ts);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static void pcap_ts_timer_fn(unsigned long data)
-+{
-+ struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
-+ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
-+ pcap_ts->read_state = PRESSURE;
-+ pcap_ts_start_xy_read(pcap_ts);
-+}
-+
-+static int __init ezxts_probe(struct platform_device *pdev)
-+{
-+ struct pcap_ts *pcap_ts;
-+ struct input_dev *input_dev;
-+ int err = -ENOMEM;
-+
-+ pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
-+ input_dev = input_allocate_device();
-+ if (!pcap_ts || !input_dev)
-+ goto fail;
-+
-+ pcap_ts->irq_xy = platform_get_irq(pdev, 0);
-+ if (pcap_ts->irq_xy < 0) {
-+ err = pcap_ts->irq_xy;
-+ goto fail;
-+ }
-+
-+ pcap_ts->irq_touch = platform_get_irq(pdev, 1);
-+ if (pcap_ts->irq_touch < 0) {
-+ err = pcap_ts->irq_touch;
-+ goto fail;
-+ }
-+
-+ ssp_pcap_open(SSP_PCAP_TS_OPEN);
-+
-+ err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
-+ "PCAP Touchscreen XY", pcap_ts);
-+ if (err < 0) {
-+ printk(KERN_ERR "pcap_ts: can't grab xy irq %d: %d\n",
-+ pcap_ts->irq_xy, err);
-+ goto fail;
-+ }
-+
-+ err = request_irq(pcap_ts->irq_touch, pcap_ts_irq_touch, SA_INTERRUPT,
-+ "PCAP Touchscreen Touch", pcap_ts);
-+ if (err < 0) {
-+ printk(KERN_ERR "pcap_ts: can't grab touch irq %d: %d\n",
-+ pcap_ts->irq_touch, err);
-+ goto fail_xy;
-+ }
-+
-+ pcap_ts->input = input_dev;
-+ pcap_ts->read_state = PRESSURE;
-+ init_timer(&pcap_ts->timer);
-+ pcap_ts->timer.data = (unsigned long) pcap_ts;
-+ pcap_ts->timer.function = &pcap_ts_timer_fn;
-+
-+ platform_set_drvdata(pdev, pcap_ts);
-+
-+ /* enable pressure interrupt */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+
-+ input_dev->name = "EZX PCAP2 Touchscreen";
-+ input_dev->phys = "ezxts/input0";
-+ input_dev->id.bustype = BUS_HOST;
-+ input_dev->id.vendor = 0x0001;
-+ input_dev->id.product = 0x0002;
-+ input_dev->id.version = 0x0100;
-+ input_dev->cdev.dev = &pdev->dev;
-+ input_dev->private = pcap_ts;
-+
-+ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
-+ input_dev->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
-+ input_set_abs_params(input_dev, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
-+ input_set_abs_params(input_dev, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
-+ input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN,
-+ PRESSURE_MAX, 0, 0);
-+
-+ input_register_device(pcap_ts->input);
-+
-+ return 0;
-+
-+fail_xy:
-+ free_irq(pcap_ts->irq_xy, pcap_ts);
-+fail:
-+ input_free_device(input_dev);
-+ kfree(pcap_ts);
-+
-+ return err;
-+}
-+
-+static int ezxts_remove(struct platform_device *pdev)
-+{
-+ struct pcap_ts *pcap_ts = platform_get_drvdata(pdev);
-+
-+ del_timer_sync(&pcap_ts->timer);
-+
-+ free_irq(pcap_ts->irq_touch, pcap_ts);
-+ free_irq(pcap_ts->irq_xy, pcap_ts);
-+
-+ input_unregister_device(pcap_ts->input);
-+ kfree(pcap_ts);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ezxts_driver = {
-+ .probe = ezxts_probe,
-+ .remove = ezxts_remove,
-+ //.suspend = ezxts_suspend,
-+ //.resume = ezxts_resume,
-+ .driver = {
-+ .name = "pcap-ts",
-+ },
-+};
-+
-+static int __devinit ezxts_init(void)
-+{
-+ return platform_driver_register(&ezxts_driver);
-+}
-+
-+static void __exit ezxts_exit(void)
-+{
-+ platform_driver_unregister(&ezxts_driver);
-+}
-+
-+module_init(ezxts_init);
-+module_exit(ezxts_exit);
-+
-+MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
-+MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch b/packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch
deleted file mode 100644
index 716ef86fd1..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-fix-init-errorpath.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:10:32.000000000 +0100
-+++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:42:23.000000000 +0100
-@@ -811,7 +811,6 @@
- /*init the related mux interface*/
- if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
- err("usb_ipc_init: Out of memory.");
-- usb_deregister(&usb_ipc_driver);
- return -ENOMEM;
- }
- bvd_dbg("usb_ipc_init: Address of bvd_ipc:%p", bvd_ipc);
-@@ -819,7 +818,6 @@
- if (!(bvd_ipc->xmit.buf = kmalloc(IPC_USB_XMIT_SIZE, GFP_KERNEL))) {
- err("usb_ipc_init: Not enough memory for the input buffer.");
- kfree(bvd_ipc);
-- usb_deregister(&usb_ipc_driver);
- return -ENOMEM;
- }
- bvd_dbg("usb_ipc_init: bvd_ipc->xmit.buf address:%p",
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch b/packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch
deleted file mode 100644
index 2e1aabd952..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-fix-tty-driver.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 10:51:31.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 10:53:05.000000000 +0200
-@@ -241,7 +241,8 @@
- static volatile __u8 mux_recv_info_flags[NR_MUXS];
- static mux_recv_struct *mux_recv_queue = NULL;
-
--static struct tty_driver mux_driver;
-+// Local for 2.6?
-+static struct tty_driver *mux_driver;
-
- #ifdef USB_FOR_MUX
- #define COMM_FOR_MUX_DRIVER usb_for_mux_driver
-@@ -3007,6 +3008,7 @@
- #else
- mux_tty[line]++;
- dlci = tty2dlci[line];
-+ mux_table[line] = tty;
-
- /* if( dlci == 1 ) { */
- /* Open server channel 0 first */
-@@ -3087,6 +3089,7 @@
- }
- }
-
-+
- retval = 0;
- #endif
- out:
-@@ -3894,43 +3897,50 @@
- INIT_WORK(&receive_tqueue, receive_worker, NULL);
- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
-
-- memset(&mux_driver, 0, sizeof(struct tty_driver));
-- memset(&mux_tty, 0, sizeof(mux_tty));
-- mux_driver.magic = TTY_DRIVER_MAGIC;
-- mux_driver.driver_name = "ts0710mux";
-- mux_driver.name = "ts0710mux";
-- mux_driver.major = TS0710MUX_MAJOR;
-- mux_driver.minor_start = TS0710MUX_MINOR_START;
-- mux_driver.num = NR_MUXS;
-- mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
-- mux_driver.subtype = SERIAL_TYPE_NORMAL;
-- mux_driver.init_termios = tty_std_termios;
-- mux_driver.init_termios.c_iflag = 0;
-- mux_driver.init_termios.c_oflag = 0;
-- mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
-- mux_driver.init_termios.c_lflag = 0;
-- mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
--
-- mux_driver.ttys = mux_table;
-- mux_driver.termios = mux_termios;
-- mux_driver.termios_locked = mux_termios_locked;
-+ mux_driver = alloc_tty_driver(NR_MUXS);
-+ if (!mux_driver)
-+ return -ENOMEM;
-+
-+ mux_driver->owner = THIS_MODULE;
-+ mux_driver->driver_name = "ts0710mux";
-+ mux_driver->name = "mux";
-+ mux_driver->devfs_name = "mux";
-+ mux_driver->major = TS0710MUX_MAJOR;
-+ mux_driver->minor_start = TS0710MUX_MINOR_START;
-+ mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
-+ mux_driver->subtype = SERIAL_TYPE_NORMAL;
-+ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
-+
-+ mux_driver->init_termios = tty_std_termios;
-+ mux_driver->init_termios.c_iflag = 0;
-+ mux_driver->init_termios.c_oflag = 0;
-+ mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
-+ mux_driver->init_termios.c_lflag = 0;
-+
-+// mux_driver.ttys = mux_table;
-+ mux_driver->termios = mux_termios;
-+ mux_driver->termios_locked = mux_termios_locked;
- // mux_driver.driver_state = mux_state;
-- mux_driver.other = NULL;
-+ mux_driver->other = NULL;
-
-- mux_driver.open = mux_open;
-- mux_driver.close = mux_close;
-- mux_driver.write = mux_write;
-- mux_driver.write_room = mux_write_room;
-- mux_driver.flush_buffer = mux_flush_buffer;
-- mux_driver.chars_in_buffer = mux_chars_in_buffer;
-- mux_driver.throttle = mux_throttle;
-- mux_driver.unthrottle = mux_unthrottle;
-- mux_driver.ioctl = mux_ioctl;
-- mux_driver.owner = THIS_MODULE;
-+ mux_driver->open = mux_open;
-+ mux_driver->close = mux_close;
-+ mux_driver->write = mux_write;
-+ mux_driver->write_room = mux_write_room;
-+ mux_driver->flush_buffer = mux_flush_buffer;
-+ mux_driver->chars_in_buffer = mux_chars_in_buffer;
-+ mux_driver->throttle = mux_throttle;
-+ mux_driver->unthrottle = mux_unthrottle;
-+ mux_driver->ioctl = mux_ioctl;
-
-- if (tty_register_driver(&mux_driver))
-+ // FIXME: No panic() here
-+ if (tty_register_driver(mux_driver))
- panic("Couldn't register mux driver");
-
-+ for (j=0; j<NR_MUXS; j++)
-+ tty_register_device(mux_driver, j, NULL);
-+
-+
- COMM_MUX_DISPATCHER = mux_dispatcher;
- COMM_MUX_SENDER = mux_sender;
-
-@@ -3964,7 +3974,10 @@
- mux_recv_info[j] = 0;
- }
-
-- if (tty_unregister_driver(&mux_driver))
-+ for (j=0; j<NR_MUXS; j++)
-+ tty_unregister_device(mux_driver, j);
-+
-+ if (tty_unregister_driver(mux_driver))
- panic("Couldn't unregister mux driver");
- }
-
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-fix.patch
deleted file mode 100644
index b820762f41..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-fix.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-21 18:07:45.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-21 20:55:13.000000000 +0200
-@@ -626,7 +626,6 @@
- }
-
- interface = &intf->cur_altsetting->desc;
-- endpoint = &intf->cur_altsetting->endpoint[0].desc;
- /* Start checking for two bulk endpoints or ... FIXME: This is a future
- * enhancement...*/
- bvd_dbg("usb_ipc_probe: Number of Endpoints:%d",
-@@ -638,30 +637,26 @@
-
- ep_cnt = have_bulk_in_mux = have_bulk_out_mux = 0;
-
-- bvd_dbg("usb_ipc_probe: endpoint[0] is:%x",
-- (&endpoint[0])->bEndpointAddress);
-- bvd_dbg("usb_ipc_probe: endpoint[1] is:%x ",
-- (&endpoint[1])->bEndpointAddress);
--
- while (ep_cnt < interface->bNumEndpoints) {
--
-- if (!have_bulk_in_mux && IS_EP_BULK_IN(endpoint[ep_cnt])) {
-- bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is:%x ",
-- (&endpoint[ep_cnt])->bEndpointAddress);
-- have_bulk_in_mux =
-- (&endpoint[ep_cnt])->bEndpointAddress;
-- readsize = (&endpoint[ep_cnt])->wMaxPacketSize;
-+ endpoint = &intf->cur_altsetting->endpoint[ep_cnt].desc;
-+ bvd_dbg("usb_ipc_probe: endpoint[%i] is: %x", ep_cnt,
-+ endpoint->bEndpointAddress);
-+
-+ if (!have_bulk_in_mux && IS_EP_BULK_IN(*endpoint)) {
-+ bvd_dbg("usb_ipc_probe: bEndpointAddress(IN) is: %x ",
-+ endpoint->bEndpointAddress);
-+ have_bulk_in_mux = endpoint->bEndpointAddress;
-+ readsize = endpoint->wMaxPacketSize;
- bvd_dbg("usb_ipc_probe: readsize=%d", readsize);
- ep_cnt++;
- continue;
- }
-
-- if (!have_bulk_out_mux && IS_EP_BULK_OUT(endpoint[ep_cnt])) {
-- bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is:%x ",
-- (&endpoint[ep_cnt])->bEndpointAddress);
-- have_bulk_out_mux =
-- (&endpoint[ep_cnt])->bEndpointAddress;
-- writesize = (&endpoint[ep_cnt])->wMaxPacketSize;
-+ if (!have_bulk_out_mux && IS_EP_BULK_OUT(*endpoint)) {
-+ bvd_dbg("usb_ipc_probe: bEndpointAddress(OUT) is: %x ",
-+ endpoint->bEndpointAddress);
-+ have_bulk_out_mux = endpoint->bEndpointAddress;
-+ writesize = endpoint->wMaxPacketSize;
- bvd_dbg("usb_ipc_probe: writesize=%d", writesize);
- ep_cnt++;
- continue;
-@@ -718,21 +713,27 @@
- bvd_ipc->bh_bp.func = usbipc_bh_bp_func;
- bvd_ipc->bh_bp.data = (unsigned long) bvd_ipc;
-
-+ bvd_dbg("after assignements");
- /*Build a write urb*/
-+ usb_init_urb(&bvd_ipc->writeurb_mux);
- usb_fill_bulk_urb(&bvd_ipc->writeurb_mux, usbdev,
- usb_sndbulkpipe(bvd_ipc->ipc_dev,
- bvd_ipc->bulk_out_ep_mux),
- bvd_ipc->obuf, writesize, usb_ipc_write_bulk,
- bvd_ipc);
- //bvd_ipc->writeurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
-+ bvd_dbg("after write urb");
-
- /*Build a read urb and send a IN token first time*/
-+ usb_init_urb(&bvd_ipc->readurb_mux);
- usb_fill_bulk_urb(&bvd_ipc->readurb_mux, usbdev,
- usb_rcvbulkpipe(usbdev, bvd_ipc->bulk_in_ep_mux),
- bvd_ipc->ibuf, readsize, usb_ipc_read_bulk, bvd_ipc);
- //bvd_ipc->readurb_mux.transfer_flags |= USB_ASYNC_UNLINK;
-+ bvd_dbg("after read urb");
-
-- usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
-+ //usb_driver_claim_interface(&usb_ipc_driver, intf, bvd_ipc);
-+ bvd_dbg("after claim interface");
- //usb_driver_claim_interface(&usb_ipc_driver, &ipccfg->interface[1], bvd_ipc);
-
- // a2590c: dsplog is not supported by this driver
-@@ -740,6 +741,8 @@
- // &ipccfg->interface[2], bvd_ipc);
- /*send a IN token first time*/
- bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
-+ bvd_dbg("after assignement");
-+
- if (usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
- printk("usb_ipc_prob: usb_submit_urb(read mux bulk) failed!\n");
-
-@@ -750,7 +753,7 @@
- tasklet_schedule(&bvd_ipc->bh);
- }
-
-- printk("usb_ipc_probe: completed probe!");
-+ printk("usb_ipc_probe: completed probe!\n");
- usb_set_intfdata(intf, &bvd_ipc);
- return 0;
- }
-@@ -760,21 +763,23 @@
- //struct usb_device *usbdev = interface_to_usbdev(intf);
- struct ipc_usb_data *bvd_ipc_disconnect = usb_get_intfdata(intf);
-
-- printk("usb_ipc_disconnect:*** \n");
-
-+ printk("usb_ipc_disconnect. bvd_ipc_disconnect address: %p\n", bvd_ipc_disconnect);
-+
-+ //FIXME: Memory leak?
- if ((UHCRHPS3 & 0x4) == 0)
-- usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
-+ // usb_unlink_urb(&bvd_ipc_disconnect->readurb_mux);
-
-- usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
-+ //usb_unlink_urb(&bvd_ipc_disconnect->writeurb_mux);
-
- bvd_ipc_disconnect->ipc_flag = IPC_USB_PROBE_NOT_READY;
- kfree(bvd_ipc_disconnect->ibuf);
- kfree(bvd_ipc_disconnect->obuf);
-
-- usb_driver_release_interface(&usb_ipc_driver,
-- bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
-- usb_driver_release_interface(&usb_ipc_driver,
-- bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
-+ //usb_driver_release_interface(&usb_ipc_driver,
-+ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[0]);
-+ //usb_driver_release_interface(&usb_ipc_driver,
-+ // bvd_ipc_disconnect->ipc_dev->actconfig->interface[1]);
-
- //a2590c: dsplog interface is not supported by this driver
- //usb_driver_release_interface(&usb_ipc_driver, &bvd_ipc_disconnect->ipc_dev->actconfig->interface[2]);
-@@ -803,13 +808,6 @@
- int result;
-
- bvd_dbg("init usb_ipc");
-- /* register driver at the USB subsystem */
-- result = usb_register(&usb_ipc_driver);
-- if (result < 0) {
-- err ("usb ipc driver could not be registered");
-- return result;
-- }
--
- /*init the related mux interface*/
- if (!(bvd_ipc = kzalloc(sizeof(struct ipc_usb_data), GFP_KERNEL))) {
- err("usb_ipc_init: Out of memory.");
-@@ -836,6 +834,14 @@
- usb_for_mux_driver = &ipcusb_tty_driver;
- usb_for_mux_tty = &ipcusb_tty;
-
-+ /* register driver at the USB subsystem */
-+ // this was called before bvd_ipc was allocated
-+ result = usb_register(&usb_ipc_driver);
-+ if (result < 0) {
-+ err ("usb ipc driver could not be registered");
-+ return result;
-+ }
-+
- /* init timers for ipcusb read process and usb suspend */
- init_timer(&ipcusb_timer);
- ipcusb_timer.function = ipcusb_timeout;
diff --git a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch b/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
deleted file mode 100644
index cab7490118..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-Index: linux-2.6.20.7/drivers/char/ts0710.h
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
-@@ -45,7 +45,7 @@
- * 11/18/2002 Modified
- */
-
--#include <linux/config.h>
-+//#include <linux/config.h>
- #include <linux/module.h>
-
- #include <linux/errno.h>
-@@ -58,7 +58,7 @@
- #include <linux/major.h>
- #include <linux/mm.h>
- #include <linux/init.h>
--#include <linux/devfs_fs_kernel.h>
-+//#include <linux/devfs_fs_kernel.h>
-
- #include <asm/uaccess.h>
- #include <asm/system.h>
-Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-24 16:04:23.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-24 16:26:58.000000000 +0200
-@@ -46,7 +46,7 @@
- * 11/18/2002 Second version
- * 04/21/2004 Add GPRS PROC
- */
--#include <linux/config.h>
-+//#include <linux/config.h>
- #include <linux/module.h>
- #include <linux/types.h>
-
-@@ -70,7 +70,7 @@
- #include <linux/mm.h>
- #include <linux/slab.h>
- #include <linux/init.h>
--#include <linux/devfs_fs_kernel.h>
-+//#include <linux/devfs_fs_kernel.h>
- //#include <syslog.h>
-
- #include <asm/uaccess.h>
-@@ -268,8 +268,8 @@
- static struct work_struct post_recv_tqueue;
-
- static struct tty_struct *mux_table[NR_MUXS];
--static struct termios *mux_termios[NR_MUXS];
--static struct termios *mux_termios_locked[NR_MUXS];
-+static struct ktermios *mux_termios[NR_MUXS];
-+static struct ktermios *mux_termios_locked[NR_MUXS];
- static volatile short int mux_tty[NR_MUXS];
-
- #ifdef min
-@@ -1894,11 +1894,14 @@
- if (test_bit(TTY_THROTTLED, &tty->flags)) {
- queue_data = 1;
- } else {
-+ /*
- if (test_bit
- (TTY_DONT_FLIP, &tty->flags)) {
- queue_data = 1;
- post_recv = 1;
-- } else if (recv_info->total) {
-+ } else
-+ */
-+ if (recv_info->total) {
- queue_data = 1;
- post_recv = 1;
- } else if (recv_room < uih_len) {
-@@ -3149,7 +3152,7 @@
-
- /*For BP UART problem End*/
-
--static void receive_worker(void *private_)
-+static void receive_worker(struct work_struct *private_)
- {
- struct tty_struct *tty = COMM_FOR_MUX_TTY;
- int i, count, tbuf_free, tbuf_read;
-@@ -3440,7 +3443,7 @@
- clear_bit(RECV_RUNNING, &mux_recv_flags);
- }
-
--static void post_recv_worker(void *private_)
-+static void post_recv_worker(struct work_struct *private_)
- {
- ts0710_con *ts0710 = &ts0710_connection;
- int tty_idx;
-@@ -3499,11 +3502,14 @@
- if (test_bit(TTY_THROTTLED, &tty->flags)) {
- add_post_recv_queue(&post_recv_q, recv_info);
- continue;
-- } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
-+ }
-+ /*
-+ else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
- post_recv = 1;
- add_post_recv_queue(&post_recv_q, recv_info);
- continue;
- }
-+ */
-
- flow_control = 0;
- recv_packet2 = recv_info->mux_packet;
-@@ -3635,7 +3641,7 @@
- }
- }
-
--static void send_worker(void *private_)
-+static void send_worker(struct work_struct *private_)
- {
- ts0710_con *ts0710 = &ts0710_connection;
- __u8 j;
-@@ -3893,9 +3899,9 @@
- }
- post_recv_count_flag = 0;
-
-- INIT_WORK(&send_tqueue, send_worker, NULL);
-- INIT_WORK(&receive_tqueue, receive_worker, NULL);
-- INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
-+ INIT_WORK(&send_tqueue, send_worker);
-+ INIT_WORK(&receive_tqueue, receive_worker);
-+ INIT_WORK(&post_recv_tqueue, post_recv_worker);
-
- mux_driver = alloc_tty_driver(NR_MUXS);
- if (!mux_driver)
-@@ -3904,12 +3910,12 @@
- mux_driver->owner = THIS_MODULE;
- mux_driver->driver_name = "ts0710mux";
- mux_driver->name = "mux";
-- mux_driver->devfs_name = "mux";
-+ //mux_driver->devfs_name = "mux";
- mux_driver->major = TS0710MUX_MAJOR;
- mux_driver->minor_start = TS0710MUX_MINOR_START;
- mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
- mux_driver->subtype = SERIAL_TYPE_NORMAL;
-- mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
-+ mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
-
- mux_driver->init_termios = tty_std_termios;
- mux_driver->init_termios.c_iflag = 0;
-@@ -3917,10 +3923,10 @@
- mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
- mux_driver->init_termios.c_lflag = 0;
-
--// mux_driver.ttys = mux_table;
-+ //mux_driver.ttys = mux_table;
- mux_driver->termios = mux_termios;
- mux_driver->termios_locked = mux_termios_locked;
--// mux_driver.driver_state = mux_state;
-+ //mux_driver.driver_state = mux_state;
- mux_driver->other = NULL;
-
- mux_driver->open = mux_open;
-Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-24 16:27:30.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-24 16:31:51.000000000 +0200
-@@ -86,8 +86,8 @@
- struct tty_struct *usb_for_mux_tty = NULL;
- void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
- void (*usb_mux_sender)(void) = NULL;
--void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
--void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
-+void (*ipcusb_ap_to_bp)(const unsigned char*, int) = NULL;
-+void (*ipcusb_bp_to_ap)(const unsigned char*, int) = NULL;
- EXPORT_SYMBOL(usb_for_mux_driver);
- EXPORT_SYMBOL(usb_for_mux_tty);
- EXPORT_SYMBOL(usb_mux_dispatcher);
-@@ -222,7 +222,7 @@
- inbuf = list_entry(ptr, buf_list_t, list);
- src_count = inbuf->size;
- if (dst_count >= src_count) {
-- memcpy(buf, inbuf->body, src_count);
-+ memcpy((char *)buf, inbuf->body, src_count);
- ret = src_count;
- list_del(ptr);
- kfree(inbuf->body);
-@@ -282,7 +282,7 @@
- spin_unlock(&bvd_ipc->in_buf_lock);
- }
-
--static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
-+static void usb_ipc_read_bulk(struct urb *urb)
- {
- buf_list_t *inbuf;
- int count = urb->actual_length;
-@@ -319,7 +319,7 @@
- bvd_dbg("usb_ipc_read_bulk: completed!!!");
- }
-
--static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
-+static void usb_ipc_write_bulk(struct urb *urb)
- {
- callback_times++;
- bvd_ipc->write_finished_flag = 1;
-@@ -437,7 +437,7 @@
- /*send IN token*/
- bvd_ipc->readurb_mux.actual_length = 0;
- bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
-- if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
-+ if ( (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) )
- printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
- "failed! status=%d\n", ret);
- bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
-@@ -447,7 +447,7 @@
- bvd_ipc->write_finished_flag = 0;
- //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
- bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
-- if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
-+ if ( (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC)) )
- warn("ipcusb_xmit_data: funky result! result=%d\n", result);
-
- bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
-@@ -556,7 +556,7 @@
- struct usb_config_descriptor *ipccfg;
- struct usb_interface_descriptor *interface;
- struct usb_endpoint_descriptor *endpoint;
-- int ep_cnt, readsize, writesize;
-+ int ep_cnt, readsize=0, writesize=0;
- char have_bulk_in_mux, have_bulk_out_mux;
-
- bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",
diff --git a/packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch b/packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch
deleted file mode 100644
index d4781f9fc7..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-remove-flipbuffers.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:25.000000000 +0100
-+++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 00:52:26.000000000 +0100
-@@ -133,6 +133,7 @@
-
- struct circ_buf xmit; /* write cric bufffer */
- struct list_head in_buf_list;
-+ spinlock_t in_buf_lock;
- char bulk_in_ep_mux,
- bulk_out_ep_mux,
- bulk_in_ep_dsplog;
-@@ -204,9 +205,39 @@
- return;
- }
- memcpy(inbuf->body, (unsigned char*)urb->transfer_buffer, count);
-+ spin_lock(&bvd_ipc->in_buf_lock);
- list_add_tail(&inbuf->list, &bvd_ipc->in_buf_list);
-+ spin_unlock(&bvd_ipc->in_buf_lock);
- }
-
-+int get_from_inbuf_list(const unsigned char *buf, int dst_count)
-+{
-+ int ret = 0;
-+ spin_lock(&bvd_ipc->in_buf_lock);
-+ if (!(list_empty(&bvd_ipc->in_buf_list))) {
-+ int src_count;
-+ buf_list_t *inbuf;
-+ struct list_head *ptr;
-+
-+ ptr = bvd_ipc->in_buf_list.next;
-+ inbuf = list_entry(ptr, buf_list_t, list);
-+ src_count = inbuf->size;
-+ if (dst_count >= src_count) {
-+ memcpy(buf, inbuf->body, src_count);
-+ ret = src_count;
-+ list_del(ptr);
-+ kfree(inbuf->body);
-+ kfree(inbuf);
-+ } else {
-+ bvd_dbg("get_from_inbuf_list: not enough space in destination buffer");
-+ }
-+ }
-+ spin_unlock(&bvd_ipc->in_buf_lock);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL(get_from_inbuf_list);
-+
- static void ipcusb_timeout(unsigned long data)
- {
- struct tty_struct *tty = &ipcusb_tty;
-@@ -214,13 +245,14 @@
-
- bvd_dbg("ipcusb_timeout***");
-
-+ spin_lock(&bvd_ipc->in_buf_lock);
- while (!(list_empty(&bvd_ipc->in_buf_list))) {
- int count;
- buf_list_t *inbuf;
- struct list_head *ptr = NULL;
-
- ptr = bvd_ipc->in_buf_list.next;
-- inbuf = list_entry (ptr, buf_list_t, list);
-+ inbuf = list_entry(ptr, buf_list_t, list);
- count = inbuf->size;
- if (tty_insert_flip_string(tty, inbuf->body, count) >= count) {
- list_del(ptr);
-@@ -232,10 +264,12 @@
- break;
- }
- }
-+ spin_unlock(&bvd_ipc->in_buf_lock);
-
- if (usb_mux_dispatcher)
- usb_mux_dispatcher(tty); /**call Liu changhui's func.**/
-
-+ spin_lock(&bvd_ipc->in_buf_lock);
- if (list_empty(&bvd_ipc->in_buf_list)) {
- urb->actual_length = 0;
- urb->dev = bvd_ipc->ipc_dev;
-@@ -246,6 +280,7 @@
- ipcusb_timer.data = (unsigned long)urb;
- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
- }
-+ spin_unlock(&bvd_ipc->in_buf_lock);
- }
-
- static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
-@@ -266,69 +301,11 @@
- if (count > 0 && ((*ipcusb_bp_to_ap) != NULL))
- (*ipcusb_bp_to_ap)(urb->transfer_buffer, urb->actual_length);
-
-- if (!(list_empty(&bvd_ipc->in_buf_list))) {
-- int need_mux = 0;
--
-- bvd_dbg("usb_ipc_read_bulk: some urbs in_buf_list");
-- if (count > 0) {
-- bvd_ipc->suspend_flag = 1;
-- append_to_inbuf_list(urb); /* append the current received urb */
--#if 0
-- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
-- {
-- last_jiff = jiffies;
-- queue_apm_event(KRNL_ICL, NULL);
-- }
--#endif
-- }
--
-- while (!(list_empty(&bvd_ipc->in_buf_list))) {
-- struct list_head* ptr = NULL;
-- ptr = bvd_ipc->in_buf_list.next;
-- inbuf = list_entry(ptr, buf_list_t, list);
-- count = inbuf->size;
-- need_mux = 1;
--
-- tty_insert_flip_string(tty, inbuf->body, count);
--
-- list_del(ptr);
-- kfree(inbuf->body);
-- inbuf->body = NULL;
-- kfree(inbuf);
-- }
--
-- if (usb_mux_dispatcher && need_mux)
-- usb_mux_dispatcher(tty); /* call Liu changhui's func. */
--
-- if (list_empty(&bvd_ipc->in_buf_list)) {
-- urb->actual_length = 0;
-- urb->dev = bvd_ipc->ipc_dev;
-- if (usb_submit_urb(urb, GFP_ATOMIC))
-- bvd_dbg("usb_ipc_read_bulk: "
-- "failed resubmitting read urb");
-- bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
-- } else {
-- ipcusb_timer.data = (unsigned long)urb;
-- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
-- }
-- } else if (count > 0) {
-- bvd_dbg("usb_ipc_read_bulk: no urbs in_buf_list");
-+ if (count > 0) {
-+ bvd_dbg("usb_ipc_read_bulk: inserting buffer into in_buf_list");
- bvd_ipc->suspend_flag = 1;
-
-- if (tty_insert_flip_string(tty, urb->transfer_buffer,
-- count) < count) {
-- bvd_ipc->suspend_flag = 1;
-- append_to_inbuf_list(urb);
-- ipcusb_timer.data = (unsigned long)urb;
-- mod_timer(&ipcusb_timer, jiffies+(10*HZ/1000));
--#if 0
-- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
-- {
-- last_jiff = jiffies;
-- queue_apm_event(KRNL_ICL, NULL);
-- }
--#endif
-- }
-+ append_to_inbuf_list(urb);
-
- if (usb_mux_dispatcher)
- usb_mux_dispatcher(tty); /* call Liu changhui's func. */
-@@ -337,13 +314,6 @@
- urb->dev = bvd_ipc->ipc_dev;
- if (usb_submit_urb(urb, GFP_ATOMIC))
- bvd_dbg("failed resubmitting read urb");
--#if 0
-- if(jiffies - last_jiff > ICL_EVENT_INTERVAL)
-- {
-- last_jiff = jiffies;
-- queue_apm_event(KRNL_ICL, NULL);
-- }
--#endif
- bvd_dbg("usb_ipc_read_bulk: resubmited read urb");
- }
-
-@@ -705,7 +675,8 @@
- bvd_ipc->bulk_out_ep_mux= have_bulk_out_mux;
- bvd_ipc->ipc_dev = usbdev;
- bvd_ipc->writesize = writesize;
-- INIT_LIST_HEAD (&bvd_ipc->in_buf_list);
-+ INIT_LIST_HEAD(&bvd_ipc->in_buf_list);
-+ bvd_ipc->in_buf_lock = SPIN_LOCK_UNLOCKED;
-
- bvd_ipc->bh.func = usbipc_bh_func;
- bvd_ipc->bh.data = (unsigned long) bvd_ipc;
-Index: linux-2.6.16/drivers/char/ts0710_mux.c
-===================================================================
---- linux-2.6.16.orig/drivers/char/ts0710_mux.c 2007-01-17 00:52:23.000000000 +0100
-+++ linux-2.6.16/drivers/char/ts0710_mux.c 2007-01-17 00:52:26.000000000 +0100
-@@ -3149,7 +3149,7 @@
- static void receive_worker(void *private_)
- {
- struct tty_struct *tty = COMM_FOR_MUX_TTY;
-- int i, count;
-+ int i, count, tbuf_free, tbuf_read;
- static unsigned char tbuf[TS0710MUX_MAX_BUF_SIZE];
- static unsigned char *tbuf_ptr = &tbuf[0];
- static unsigned char *start_flag = 0;
-@@ -3167,29 +3167,39 @@
-
- UNUSED_PARAM(private_);
-
-- if (!tty)
-- return;
-+ if (!tty)
-+ return;
-+
-+ while (1) {
-+ tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
-+ TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
-+ tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
-+ if (tbuf_read == 0) {
-+ break;
-+ } else {
-+ TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
-+ };
-+ tbuf_ptr += tbuf_read;
-+ };
-+
-+ count = (tbuf_ptr - tbuf);
-+
-+ // Should be impossible?
-+ //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
-+ // TS0710_PRINTK
-+ // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
-+ // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
-+ //}
-
- #ifdef USB_FOR_MUX
-- TS0710_DEBUG("Receive following bytes from IPC-USB");
-+ TS0710_DEBUG("Received following bytes from IPC-USB");
- #else
-- TS0710_DEBUG("Receive following bytes from UART");
-+ TS0710_DEBUG("Received following bytes from UART");
- #endif
--
-- TS0710_DEBUGHEX(cp, count);
--
-- if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
-- TS0710_PRINTK
-- ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
-- count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
-- }
--
-- count = tty_buffer_request_room(tty, count);
--
-- for (i = 0; i < count; i++)
-- tty_insert_flip_char(tty, tbuf_ptr[i], TTY_NORMAL);
--
-- tbuf_ptr += count;
-+ TS0710_DEBUGHEX(tbuf, count);
-+
-+ //gets updated above
-+ //tbuf_ptr += count;
- search = &tbuf[0];
-
- if (test_and_set_bit(RECV_RUNNING, &mux_recv_flags)) {
-Index: linux-2.6.16/drivers/char/ts0710_mux_usb.h
-===================================================================
---- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:23.000000000 +0100
-+++ linux-2.6.16/drivers/char/ts0710_mux_usb.h 2007-01-17 00:52:26.000000000 +0100
-@@ -27,3 +27,6 @@
- extern struct tty_struct *usb_for_mux_tty;
- extern void (*usb_mux_dispatcher)(struct tty_struct *tty);
- extern void (*usb_mux_sender)(void);
-+
-+extern int get_from_inbuf_list(const unsigned char *buf, int dst_count);
-+
diff --git a/packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch b/packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch
deleted file mode 100644
index 0ebe27d03b..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-remove-get_halted_bit.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:21.000000000 +0100
-+++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:06:31.000000000 +0100
-@@ -461,7 +461,7 @@
- ipcusb_xmit_data();
- }
-
--extern void get_halted_bit(void);
-+//extern void get_halted_bit(void);
-
- static void usbipc_bh_bp_func(unsigned long param)
- {
-@@ -472,7 +472,7 @@
- "UHCRHPS3=0x%x", UHCRHPS3);
- }
- if (bvd_ipc->ipc_flag == IPC_USB_PROBE_READY) {
-- get_halted_bit();
-+ //get_halted_bit();
-
- /*send a IN token*/
- bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
diff --git a/packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch b/packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch
deleted file mode 100644
index c415ded428..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux-remove-usbh_finished_resume.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: linux-2.6.16/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.16.orig/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:23.000000000 +0100
-+++ linux-2.6.16/drivers/char/ts0710_mux_usb.c 2007-01-17 01:12:37.000000000 +0100
-@@ -97,7 +97,6 @@
- static int sumbit_times = 0;
- static int callback_times = 0;
- //static unsigned long last_jiff = 0;
--extern int usbh_finished_resume;
- /*end global values defined*/
-
- MODULE_AUTHOR(DRIVER_AUTHOR);
-@@ -546,9 +545,6 @@
- void usb_send_readurb(void)
- {
- //printk("usb_send_readurb: begining!UHCRHPS3=0x%x, usbh_finished_resume=%d\n", UHCRHPS3, usbh_finished_resume);
--
-- if (usbh_finished_resume == 0)
-- return;
-
- tasklet_schedule(&bvd_ipc->bh_bp);
- }
diff --git a/packages/linux/linux-ezx-2.6.21/mux_debug.patch b/packages/linux/linux-ezx-2.6.21/mux_debug.patch
deleted file mode 100644
index 58cb25a0b6..0000000000
--- a/packages/linux/linux-ezx-2.6.21/mux_debug.patch
+++ /dev/null
@@ -1,551 +0,0 @@
-Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-22 12:24:18.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-22 12:26:47.000000000 +0200
-@@ -85,6 +85,9 @@
- #include "ts0710.h"
- #include "ts0710_mux.h"
-
-+#define TS0710DEBUG
-+#define PRINT_OUTPUT_PRINTK
-+
- #define TS0710MUX_GPRS_SESSION_MAX 2
- #define TS0710MUX_MAJOR 250
- #define TS0710MUX_MINOR_START 0
-@@ -316,7 +319,7 @@
- #ifdef TS0710DEBUG
-
- #ifdef PRINT_OUTPUT_PRINTK
--#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX " __FUNCTION__ ": " fmt "\n" , ## arg)
-+#define TS0710_DEBUG(fmt, arg...) printk(KERN_INFO "MUX %s: " fmt "\n" , __func__, ## arg)
- #else
- #include "ezxlog.h"
- static __u8 strDebug[256];
-@@ -530,10 +533,10 @@
- if (strncmp(p->comm, "aplogd", 6) == 0) {
- sig = 1;
- if (send_sig(SIGUSR2, p, 1) == 0) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX: success to send SIGUSR2 to aplogd!\n");
- } else {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX: failure to send SIGUSR2 to aplogd!\n");
- }
- break;
-@@ -542,7 +545,7 @@
- read_unlock(&tasklist_lock);
-
- if (!sig) {
-- TS0710_PRINTK("MUX: not found aplogd!\n");
-+ TS0710_DEBUG("MUX: not found aplogd!\n");
- }
- }
- #else
-@@ -559,11 +562,11 @@
- buf[len + 1] = TS0710_BASIC_FLAG;
-
- if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX basic_write: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n");
-
- #ifndef USB_FOR_MUX
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX basic_write: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n");
- TS0710_SIG2APLOGD();
- #endif
-@@ -577,7 +580,7 @@
- res = COMM_FOR_MUX_DRIVER->write(COMM_FOR_MUX_TTY, buf, len + 2);
-
- if (res != len + 2) {
-- TS0710_PRINTK("MUX basic_write: Write Error!\n");
-+ TS0710_DEBUG("MUX basic_write: Write Error!\n");
- return -1;
- }
-
-@@ -601,7 +604,7 @@
- TS0710_DEBUG("crc_check: CRC check OK\n");
- return 0;
- } else {
-- TS0710_PRINTK("MUX crc_check: CRC check failed\n");
-+ TS0710_DEBUG("MUX crc_check: CRC check failed\n");
- return 1;
- }
- }
-@@ -1266,7 +1269,7 @@
- break;
-
- case FCON: /*Flow control on command */
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Received Flow control(all channels) on command\n");
- if (mcc_short_pkt->h.type.cr == MCC_CMD) {
- ts0710->dlci[0].state = CONNECTED;
-@@ -1276,7 +1279,7 @@
- break;
-
- case FCOFF: /*Flow control off command */
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Received Flow control(all channels) off command\n");
- if (mcc_short_pkt->h.type.cr == MCC_CMD) {
- for (j = 0; j < TS0710_MAX_CHN; j++) {
-@@ -1823,7 +1826,7 @@
- TS0710_DEBUG("UIH on channel %d\n", dlci);
-
- if (uih_len > ts0710->dlci[dlci].mtu) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: DLCI:%d, uih_len:%d is bigger than mtu:%d, discard data!\n",
- dlci, uih_len, ts0710->dlci[dlci].mtu);
- break;
-@@ -1844,7 +1847,7 @@
- dlci, tty_idx);
- TS0710_DEBUGSTR(uih_data_start, uih_len);
- if (!(iscmdtty[tty_idx])) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: %s: Wrong CMDTAG on DLCI:%d, /dev/mux%d\n",
- __FUNCTION__, dlci, tty_idx);
- }
-@@ -1856,7 +1859,7 @@
- ("NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
- dlci, tty_idx);
- if (iscmdtty[tty_idx]) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: %s: Wrong NON-CMDTAG on DLCI:%d, /dev/mux%d\n",
- __FUNCTION__, dlci, tty_idx);
- }
-@@ -1864,13 +1867,14 @@
- }
- tty = mux_table[tty_idx];
- if ((!mux_tty[tty_idx]) || (!tty)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX: No application waiting for, discard it! /dev/mux%d\n",
- tty_idx);
-+ TS0710_DEBUG("MUX: mux_tty[%d] = %d, tty is at %i", tty_idx, mux_tty[tty_idx], tty);
- } else { /* Begin processing received data */
- if ((!mux_recv_info_flags[tty_idx])
- || (!mux_recv_info[tty_idx])) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: No mux_recv_info, discard it! /dev/mux%d\n",
- tty_idx);
- break;
-@@ -1878,7 +1882,7 @@
-
- recv_info = mux_recv_info[tty_idx];
- if (recv_info->total > 8192) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX : discard data for tty_idx:%d, recv_info->total > 8192 \n",
- tty_idx);
- break;
-@@ -1949,7 +1953,7 @@
- get_mux_recv_packet
- (uih_len);
- if (!recv_packet) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX %s: no memory\n",
- __FUNCTION__);
- break;
-@@ -1980,7 +1984,7 @@
- } else { /* recv_info->total == 0 */
- if (uih_len >
- TS0710MUX_RECV_BUF_SIZE) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: tty_idx:%d, uih_len == %d is too big\n",
- tty_idx, uih_len);
- uih_len =
-@@ -2120,12 +2124,12 @@
- if (ts0710->dlci[dlci].state == DISCONNECTED) {
- break;
- } else if (signal_pending(current)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI %d Send DISC got signal!\n",
- dlci);
- break;
- } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI %d Send DISC timeout!\n", dlci);
- continue;
- }
-@@ -2158,7 +2162,7 @@
- return 0;
- } else if (ts0710->dlci[0].state == CONNECTING) {
- /* Reentry */
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI: 0, reentry to open DLCI 0, pid: %d, %s !\n",
- current->pid, current->comm);
- try = 11;
-@@ -2179,13 +2183,13 @@
- DISCONNECTED) {
- break;
- } else if (signal_pending(current)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Wait for connecting got signal!\n",
- dlci);
- retval = -EAGAIN;
- break;
- } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Wait for connecting timeout!\n",
- dlci);
- continue;
-@@ -2199,7 +2203,7 @@
- }
- } else if ((ts0710->dlci[0].state != DISCONNECTED)
- && (ts0710->dlci[0].state != REJECTED)) {
-- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
-+ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
- return retval;
- } else {
- ts0710->initiator = 1;
-@@ -2218,19 +2222,19 @@
- retval = 0;
- break;
- } else if (ts0710->dlci[0].state == REJECTED) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send SABM got rejected!\n",
- dlci);
- retval = -EREJECTED;
- break;
- } else if (signal_pending(current)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send SABM got signal!\n",
- dlci);
- retval = -EAGAIN;
- break;
- } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send SABM timeout!\n",
- dlci);
- continue;
-@@ -2271,13 +2275,13 @@
- DISCONNECTED) {
- break;
- } else if (signal_pending(current)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Wait for connecting got signal!\n",
- dlci);
- retval = -EAGAIN;
- break;
- } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Wait for connecting timeout!\n",
- dlci);
- continue;
-@@ -2296,7 +2300,7 @@
- }
- } else if ((ts0710->dlci[dlci].state != DISCONNECTED)
- && (ts0710->dlci[dlci].state != REJECTED)) {
-- TS0710_PRINTK("MUX DLCI:%d state is invalid!\n", dlci);
-+ TS0710_DEBUG("MUX DLCI:%d state is invalid!\n", dlci);
- return retval;
- } else {
- ts0710->dlci[dlci].state = NEGOTIATING;
-@@ -2313,13 +2317,13 @@
- if (ts0710->dlci[dlci].state == CONNECTING) {
- break;
- } else if (signal_pending(current)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send pn_msg got signal!\n",
- dlci);
- retval = -EAGAIN;
- break;
- } else if ((jiffies - t) >= TS0710MUX_TIME_OUT) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send pn_msg timeout!\n",
- dlci);
- continue;
-@@ -2344,20 +2348,20 @@
- break;
- } else if (ts0710->dlci[dlci].state ==
- REJECTED) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send SABM got rejected!\n",
- dlci);
- retval = -EREJECTED;
- break;
- } else if (signal_pending(current)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send SABM got signal!\n",
- dlci);
- retval = -EAGAIN;
- break;
- } else if ((jiffies - t) >=
- TS0710MUX_TIME_OUT) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX DLCI:%d Send SABM timeout!\n",
- dlci);
- continue;
-@@ -2468,7 +2472,7 @@
- schedule_work(&send_tqueue);
- #else
- if (!tq_serial_for_mux) {
-- TS0710_PRINTK("MUX Error: %s: tq_serial_for_mux == 0\n",
-+ TS0710_DEBUG("MUX Error: %s: tq_serial_for_mux == 0\n",
- __FUNCTION__);
- return;
- }
-@@ -2508,7 +2512,7 @@
- if ((mux_tty[cmdtty] == 0) && (mux_tty[datatty] == 0)) {
- if (dlci == 1) {
- ts0710_close_channel(0);
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX mux_close: tapisrv might be down!!! Close DLCI 1\n");
- TS0710_SIG2APLOGD();
- }
-@@ -2673,12 +2677,12 @@
- UNUSED_PARAM(tty);
-
- if ((COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n",
- __FUNCTION__);
-
- #ifndef USB_FOR_MUX
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n",
- __FUNCTION__);
- TS0710_SIG2APLOGD();
-@@ -2724,14 +2728,14 @@
- } else if (ts0710->dlci[dlci].state == CONNECTED) {
-
- if (!(mux_send_info_flags[line])) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: mux_write: mux_send_info_flags[%d] == 0\n",
- line);
- return -ENODEV;
- }
- send_info = mux_send_info[line];
- if (!send_info) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: mux_write: mux_send_info[%d] == 0\n",
- line);
- return -ENODEV;
-@@ -2800,7 +2804,7 @@
- }
- return c;
- } else {
-- TS0710_PRINTK("MUX mux_write: DLCI %d not connected\n", dlci);
-+ TS0710_DEBUG("MUX mux_write: DLCI %d not connected\n", dlci);
- return -EDISCONNECTED;
- }
- }
-@@ -2940,7 +2944,7 @@
- return;
- }
-
-- TS0710_PRINTK("MUX %s: line is:%d\n", __FUNCTION__, line);
-+ TS0710_DEBUG("MUX %s: line is:%d\n", __FUNCTION__, line);
-
- if ((mux_send_info_flags[line])
- && (mux_send_info[line])
-@@ -2960,10 +2964,10 @@
-
- /*
- if( (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0) ) {
-- TS0710_PRINTK("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
-+ TS0710_DEBUG("MUX %s: (COMM_FOR_MUX_DRIVER == 0) || (COMM_FOR_MUX_TTY == 0)\n", __FUNCTION__);
-
- #ifndef USB_FOR_MUX
-- TS0710_PRINTK("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
-+ TS0710_DEBUG("MUX %s: tapisrv might be down!!! (serial_for_mux_driver == 0) || (serial_for_mux_tty == 0)\n", __FUNCTION__);
- TS0710_SIG2APLOGD();
- #endif
-
-@@ -2989,9 +2993,9 @@
- if ((COMM_FOR_MUX_DRIVER == NULL) || (COMM_FOR_MUX_TTY == NULL)) {
-
- #ifdef USB_FOR_MUX
-- TS0710_PRINTK("MUX: please install and open IPC-USB first\n");
-+ TS0710_DEBUG("MUX: please install and open IPC-USB first\n");
- #else
-- TS0710_PRINTK("MUX: please install and open ttyS0 first\n");
-+ TS0710_DEBUG("MUX: please install and open ttyS0 first\n");
- #endif
-
- goto out;
-@@ -3016,7 +3020,7 @@
- /* if( dlci == 1 ) { */
- /* Open server channel 0 first */
- if ((retval = ts0710_open_channel(0)) != 0) {
-- TS0710_PRINTK("MUX: Can't connect server channel 0!\n");
-+ TS0710_DEBUG("MUX: Can't connect server channel 0!\n");
- ts0710_init();
-
- mux_tty[line]--;
-@@ -3073,7 +3077,7 @@
- datatty = dlci2tty[dlci].datatty;
- if ((mux_tty[cmdtty] > 0) || (mux_tty[datatty] > 0)) {
- if ((retval = ts0710_open_channel(dlci)) != 0) {
-- TS0710_PRINTK("MUX: Can't connected channel %d!\n",
-+ TS0710_DEBUG("MUX: Can't connected channel %d!\n",
- dlci);
- ts0710_reset_dlci(dlci);
-
-@@ -3096,6 +3100,7 @@
- retval = 0;
- #endif
- out:
-+ TS0710_DEBUG("returning %d for open of /dev/mux%d (mux_tty[%d] = %d", retval, line, line, mux_tty[line]);
- return retval;
- }
-
-@@ -3178,12 +3183,12 @@
-
- while (1) {
- tbuf_free = TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf);
-- TS0710_PRINTK("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
-+ TS0710_DEBUG("Reading max %i bytes from ts0710_mux_usb inbuf.\n", tbuf_free);
- tbuf_read = get_from_inbuf_list(tbuf_ptr, tbuf_free);
- if (tbuf_read == 0) {
- break;
- } else {
-- TS0710_PRINTK("Read %i bytes.\n", tbuf_read);
-+ TS0710_DEBUG("Read %i bytes.\n", tbuf_read);
- };
- tbuf_ptr += tbuf_read;
- };
-@@ -3192,7 +3197,7 @@
-
- // Should be impossible?
- //if (count > (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf))) {
-- // TS0710_PRINTK
-+ // TS0710_DEBUG
- // ("MUX receive_worker: !!!!! Exceed buffer boundary !!!!!\n");
- // count = (TS0710MUX_MAX_BUF_SIZE - (tbuf_ptr - tbuf));
- //}
-@@ -3264,7 +3269,7 @@
- TS0710_LOGSTR_FRAME(0, start_flag,
- (tbuf_ptr -
- start_flag));
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: %s: frame length:%d is bigger than Max total frame size:%d\n",
- /*__FUNCTION__, framelen, TS0710MUX_MAX_TOTAL_FRAME_SIZE);*/
- __FUNCTION__, framelen, (TS0710MUX_MAX_TOTAL_FRAME_SIZE + SEQ_FIELD_SIZE)); /*For BP UART problem */
-@@ -3389,7 +3394,7 @@
- *(uih_data_start
- + uih_len) =
- 0;
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX bp log: %s\n",
- uih_data_start);
- }
-@@ -3415,7 +3420,7 @@
- TS0710_LOGSTR_FRAME(0, start_flag,
- framelen);
- TS0710_DEBUGHEX(start_flag, framelen);
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX: Lost synchronization!\n");
- search = start_flag + 1;
- }
-@@ -3476,7 +3481,7 @@
- recv_info2 = recv_info->next;
-
- if (!(recv_info->total)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: %s: Should not get here, recv_info->total == 0 \n",
- __FUNCTION__);
- continue;
-@@ -3486,7 +3491,7 @@
- dlci = tty2dlci[tty_idx];
- tty = mux_table[tty_idx];
- if ((!mux_tty[tty_idx]) || (!tty)) {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX: No application waiting for, free recv_info! tty_idx:%d\n",
- tty_idx);
- mux_recv_info_flags[tty_idx] = 0;
-@@ -3560,7 +3565,7 @@
- recv_info->total -= recv_packet->length;
- free_mux_recv_packet(recv_packet);
- } else {
-- TS0710_PRINTK
-+ TS0710_DEBUG
- ("MUX Error: %s: Should not get here, recv_info->total is:%u \n",
- __FUNCTION__, recv_info->total);
- }
-@@ -3760,7 +3765,7 @@
- int ret;
-
- if (idx > TS0710MUX_COUNT_MAX_IDX) {
-- TS0710_PRINTK("MUX get_count: invalid idx: %d!\n", idx);
-+ TS0710_DEBUG("MUX get_count: invalid idx: %d!\n", idx);
- return -1;
- }
-
-@@ -3774,11 +3779,11 @@
- static int set_count(__u8 idx, int count)
- {
- if (idx > TS0710MUX_COUNT_MAX_IDX) {
-- TS0710_PRINTK("MUX set_count: invalid idx: %d!\n", idx);
-+ TS0710_DEBUG("MUX set_count: invalid idx: %d!\n", idx);
- return -1;
- }
- if (count < 0) {
-- TS0710_PRINTK("MUX set_count: invalid count: %d!\n", count);
-+ TS0710_DEBUG("MUX set_count: invalid count: %d!\n", count);
- return -1;
- }
-
-@@ -3792,11 +3797,11 @@
- static int add_count(__u8 idx, int count)
- {
- if (idx > TS0710MUX_COUNT_MAX_IDX) {
-- TS0710_PRINTK("MUX add_count: invalid idx: %d!\n", idx);
-+ TS0710_DEBUG("MUX add_count: invalid idx: %d!\n", idx);
- return -1;
- }
- if (count <= 0) {
-- TS0710_PRINTK("MUX add_count: invalid count: %d!\n", count);
-+ TS0710_DEBUG("MUX add_count: invalid count: %d!\n", count);
- return -1;
- }
-
-Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
-===================================================================
---- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
-+++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-22 12:26:47.000000000 +0200
-@@ -72,7 +72,8 @@
- #define IPC_USB_PROBE_NOT_READY 4
- #define DBG_MAX_BUF_SIZE 1024
- #define ICL_EVENT_INTERVAL (HZ)
--#undef BVD_DEBUG
-+
-+#define BVD_DEBUG
-
- #define IS_EP_BULK(ep) ((ep).bmAttributes == USB_ENDPOINT_XFER_BULK ? 1 : 0)
- #define IS_EP_BULK_IN(ep) (IS_EP_BULK(ep) && ((ep).bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN)
diff --git a/packages/efl/files/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/patches/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/efl/files/.mtn2git_empty
+++ b/packages/linux/linux-ezx-2.6.21/patches/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX b/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX
new file mode 100755
index 0000000000..7e7e0f2898
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX
@@ -0,0 +1,51 @@
+# Makefile used to build binary images of OpenEZX kernels
+#
+# If you are currently in the linux kernel toplevel dir,
+# you can call this Makefile with:
+# $ make -f path_to/Makefile.OpenEZX
+#
+# Note that you can set the CROSS_COMPILE and QUILT_PATCHES variable
+# in your environment.
+#
+
+PHONES = a780 e680 a1200 e2 e6
+
+CROSS_COMPILE ?= /home/wyrm/ezx/dev/cross/bin/arm-angstrom-linux-gnueabi-
+QUILT_PATCHES ?= patches
+
+DATE = $(shell date +%Y%m%d)
+
+all: $(foreach p, $(PHONES), zImage-$(p) modules-$(p).tar.gz)
+
+zImages: $(foreach p, $(PHONES), zImage-$(p))
+
+modules: $(foreach p, $(PHONES), modules-$(p).tar.gz)
+
+release: $(foreach p, $(PHONES), tag-$(p))
+ cat md5sums.tmp | gpg --clearsign > md5sums
+ tar -rf ezxrelease.tar md5sums
+ rm -f md5sums.tmp md5sums
+ mv ezxrelease.tar ezxrelease-$(DATE).tar
+
+tag-%: zImage-% modules-%.tar.gz
+ p=$(patsubst tag-%,%,$@) && \
+ tag=$(shell cat include/config/kernel.release)-$(DATE) && \
+ cp zImage-$$p zImage-$$tag-$$p && \
+ cp modules-$$p.tar.gz modules-$$tag-$$p.tar.gz && \
+ tar -rf ezxrelease.tar zImage-$$tag-$$p modules-$$tag-$$p.tar.gz && \
+ md5sum zImage-$$tag-$$p modules-$$tag-$$p.tar.gz >> md5sums.tmp && \
+ rm -f zImage-$$tag-$$p modules-$$tag-$$p.tar.gz
+
+zImage-%: $(QUILT_PATCHES)/defconfig-%
+ cp $< ./.config
+ make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zImage
+ mv arch/arm/boot/zImage $@
+
+modules-%.tar.gz: $(QUILT_PATCHES)/defconfig-%
+ cp $< ./.config
+ -find . -name "*.ko" -print0 | xargs -r0 rm
+ mkdir /tmp/$@
+ make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) \
+ INSTALL_MOD_PATH=/tmp/$@ modules modules_install
+ tar -C /tmp/$@ -czf $@ .
+ rm -rf /tmp/$@
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
new file mode 100755
index 0000000000..0d2640a2e7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
@@ -0,0 +1,135 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:31.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:44:29.000000000 -0300
+@@ -97,6 +97,7 @@
+ config PXA_EZX_A1200
+ bool "Motorola A1200 GSM Phone"
+ select PXA27x
++ select EZX_MCI_TF
+
+ config PXA_EZX_E6
+ bool "Motorola E6 GSM Phone"
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:32:26.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:44:56.000000000 -0300
+@@ -13,11 +13,14 @@
+ #include <linux/init.h>
+ #include <linux/platform_device.h>
+ #include <linux/fb.h>
++#include <linux/mmc/host.h>
++#include <linux/irq.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
++#include <asm/arch/mmc.h>
+
+ #include "generic.h"
+ #include "ezx.h"
+@@ -25,6 +28,95 @@
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+
++#ifdef CONFIG_EZX_PCAP
++extern int ezx_pcap_mmcsd_power(int);
++extern void ezx_pcap_mmcsd_voltage(u_int32_t);
++#else
++#define ezx_pcap_mmcsd_voltage(x) {}
++#define ezx_pcap_mmcsd_power(x) {}
++#endif
++
++static struct pxamci_platform_data a1200_mci_platform_data;
++
++static u_int8_t mmc_voltage[] = {
++ [MMC_VDD_160] = 5,
++ [MMC_VDD_170] = 5,
++ [MMC_VDD_180] = 6,
++ [MMC_VDD_190] = 6,
++ [MMC_VDD_200] = 7,
++ [MMC_VDD_210] = 7,
++ [MMC_VDD_220] = 8,
++ [MMC_VDD_230] = 8,
++ [MMC_VDD_240] = 9,
++ [MMC_VDD_250] = 9,
++ [MMC_VDD_260] = 10,
++ [MMC_VDD_270] = 10,
++ [MMC_VDD_280] = 11,
++ [MMC_VDD_290] = 11,
++ [MMC_VDD_300] = 12,
++ [MMC_VDD_310] = 12,
++ [MMC_VDD_320] = 13,
++ [MMC_VDD_330] = 13,
++ [MMC_VDD_340] = 14,
++ [MMC_VDD_350] = 14,
++ [MMC_VDD_360] = 15,
++};
++
++static int a1200_mci_init(struct device *dev,
++ irqreturn_t (*ezx_detect_int)(int, void *),
++ void *data)
++{
++ int err;
++
++ /* Setup GPIO for PXA27x MMC/SD controller */
++ pxa_gpio_mode(GPIO32_MMCCLK_MD);
++ pxa_gpio_mode(GPIO112_MMCCMD_MD);
++ pxa_gpio_mode(GPIO92_MMCDAT0_MD);
++ pxa_gpio_mode(GPIO109_MMCDAT1_MD);
++ pxa_gpio_mode(GPIO110_MMCDAT2_MD);
++ pxa_gpio_mode(GPIO111_MMCDAT3_MD);
++
++ ezx_pcap_mmcsd_power(1);
++
++ a1200_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(0x49, ezx_detect_int, SA_INTERRUPT,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "ezx_mci_detect: MMC/SD: can't request "
++ "MMC card detect IRQ\n");
++ return -1;
++ }
++
++ set_irq_type(0x0b, IRQT_BOTHEDGE);
++
++ return 0;
++}
++
++static void a1200_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ if (vdd <= MMC_VDD_360)
++ ezx_pcap_mmcsd_voltage(mmc_voltage[vdd]);
++
++ ezx_pcap_mmcsd_power(1);
++}
++
++static void a1200_mci_exit(struct device *dev, void *data)
++{
++ ezx_pcap_mmcsd_power(0);
++ free_irq(0x49, data);
++}
++
++static struct pxamci_platform_data a1200_mci_platform_data = {
++ .ocr_mask = MMC_VDD_160_165|MMC_VDD_18_19|MMC_VDD_20_21
++ |MMC_VDD_22_23|MMC_VDD_24_25|MMC_VDD_26_27
++ |MMC_VDD_28_29|MMC_VDD_30_31|MMC_VDD_32_33
++ |MMC_VDD_34_35|MMC_VDD_35_36,
++ .init = a1200_mci_init,
++ .setpower = a1200_mci_setpower,
++ .exit = a1200_mci_exit,
++};
++
+ static struct pxafb_mode_info mode_a1200 = {
+ .pixclock = 192308,
+ .xres = 240,
+@@ -54,6 +146,7 @@
+ static void __init a1200_init(void)
+ {
+ set_pxa_fb_info(&a1200_fb_info);
++ pxa_set_mci_info(&a1200_mci_platform_data);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ }
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
new file mode 100755
index 0000000000..a7ca6362b0
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
@@ -0,0 +1,40 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:32:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:33:41.000000000 -0300
+@@ -117,6 +117,27 @@
+ .exit = a1200_mci_exit,
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct pxafb_mode_info mode_a1200 = {
+ .pixclock = 192308,
+ .xres = 240,
+@@ -141,6 +162,7 @@
+ };
+
+ static struct platform_device *devices[] __initdata = {
++ &pcap_ts_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/a780-flip.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
index 56f1e4336d..b93b1b14e4 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/a780-flip.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 13:23:57.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 13:26:53.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:47.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:50.000000000 +0200
@@ -17,6 +17,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,7 +10,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -193,7 +194,30 @@
+@@ -214,8 +215,31 @@
},
};
@@ -37,6 +37,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+
+
static struct platform_device *devices[] __initdata = {
+ &pcap_ts_device,
+ &a780flip_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/a780-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
index 383839d639..902889abe6 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/a780-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-17 22:04:57.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-17 22:05:05.000000000 +0200
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:54:38.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:56:22.000000000 -0300
@@ -16,18 +16,21 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
@@ -86,5 +86,5 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
pxa_set_mci_info(&a780_mci_platform_data);
+ pxa_set_kbd_info(&a780_kbd_platform_data);
- platform_add_devices(devices, ARRAY_SIZE(devices));
- }
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
diff --git a/packages/linux/linux-ezx-2.6.21/a780-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
index 09913df2ca..5a9a9383f7 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/a780-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-05-08 04:09:08.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-05-08 14:09:03.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-06-08 18:33:45.000000000 +0200
++++ linux-2.6.21/drivers/leds/Kconfig 2007-06-08 18:39:04.000000000 +0200
@@ -104,6 +104,13 @@
These triggers allow kernel events to drive the LEDs and can
be configured via sysfs. If unsure, say Y.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-05-08 04:09:08.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Makefile 2007-05-08 14:09:03.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-06-08 18:33:45.000000000 +0200
++++ linux-2.6.21/drivers/leds/Makefile 2007-06-08 18:39:04.000000000 +0200
@@ -16,6 +16,7 @@
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
@@ -36,7 +36,7 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-05-08 14:09:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-06-08 18:39:04.000000000 +0200
@@ -0,0 +1,122 @@
+/*
+ * EZX Platform LED Driver for the Motorola A780 GSM Phone
@@ -162,9 +162,9 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 14:09:13.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 14:11:37.000000000 -0300
-@@ -215,9 +215,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:50.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:39:04.000000000 +0200
+@@ -236,10 +236,15 @@
},
};
@@ -174,6 +174,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+};
static struct platform_device *devices[] __initdata = {
+ &pcap_ts_device,
&a780flip_device,
+ &a780led_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/a780-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
index b9d601856a..4877bfffa5 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/a780-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 03:46:17.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 04:05:48.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:44:14.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:47:01.000000000 -0300
@@ -14,11 +14,14 @@
#include <linux/init.h>
#include <linux/platform_device.h>
@@ -119,5 +119,17 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
set_pxa_fb_info(&a780_fb_info);
+ pxa_set_mci_info(&a780_mci_platform_data);
- platform_add_devices(devices, ARRAY_SIZE(devices));
- }
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-24 00:47:13.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:11.000000000 -0300
+@@ -87,6 +87,7 @@
+ config PXA_EZX_A780
+ bool "Motorola A780 GSM Phone"
+ select PXA27x
++ select EZX_MCI_TF
+
+ config PXA_EZX_E2
+ bool "Motorola E2 GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
new file mode 100755
index 0000000000..a4a476ac59
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
@@ -0,0 +1,40 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 20:32:48.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 20:33:10.000000000 -0300
+@@ -121,6 +121,27 @@
+ .exit = a780_mci_exit,
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct pxafb_mode_info mode_a780 = {
+ .pixclock = 150000,
+ .xres = 240,
+@@ -194,6 +215,7 @@
+ };
+
+ static struct platform_device *devices[] __initdata = {
++ &pcap_ts_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/a780-vibrator.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
index 7436c40f5f..7436c40f5f 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/a780-vibrator.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
diff --git a/packages/linux/linux-ezx-2.6.21/asoc-pxa-ssp.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
index 1fc8283ca2..1fc8283ca2 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/asoc-pxa-ssp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/defconfig-a780 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200
index a9300a61f5..36021906b7 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/defconfig-a780
+++ b/packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200
@@ -1,11 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20.7
-# Sun Apr 22 15:03:36 2007
+# Linux kernel version: 2.6.21.4
+# Wed Jun 13 17:26:12 2007
#
CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
+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
@@ -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_ARCH_MTD_XIP=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -24,6 +28,7 @@ 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
#
@@ -34,23 +39,22 @@ CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
+# CONFIG_IKCONFIG is not set
# 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 is not set
+CONFIG_EMBEDDED=y
CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
@@ -59,11 +63,11 @@ CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-CONFIG_SHMEM=y
+# CONFIG_SHMEM is not set
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
+CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
@@ -89,14 +93,14 @@ CONFIG_BLOCK=y
# 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_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="anticipatory"
+CONFIG_DEFAULT_IOSCHED="deadline"
#
# System Type
@@ -122,6 +126,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# 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
@@ -142,8 +147,14 @@ CONFIG_ARCH_PXA=y
# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA_EZX=y
# CONFIG_PXA_EZX_E680 is not set
-CONFIG_PXA_EZX_A780=y
+# CONFIG_PXA_EZX_A780 is not set
# CONFIG_PXA_EZX_E2 is not set
+CONFIG_PXA_EZX_A1200=y
+# CONFIG_PXA_EZX_E6 is not set
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+CONFIG_EZX_MCI_TF=y
+# CONFIG_EZX_EMU is not set
CONFIG_PXA27x=y
CONFIG_PXA_SSP=y
@@ -164,6 +175,7 @@ CONFIG_CPU_CP15_MMU=y
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
CONFIG_IWMMXT=y
CONFIG_XSCALE_PMU=y
@@ -179,11 +191,11 @@ CONFIG_XSCALE_PMU=y
#
# Kernel Features
#
-# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
+# CONFIG_OABI_COMPAT is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -194,6 +206,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
CONFIG_ALIGNMENT_TRAP=y
#
@@ -201,8 +214,9 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0
CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# Floating point emulation
@@ -211,9 +225,6 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# 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
@@ -225,8 +236,11 @@ CONFIG_BINFMT_MISC=m
#
# Power management options
#
-# CONFIG_PM is not set
-# CONFIG_APM is not set
+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
@@ -240,9 +254,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
@@ -261,11 +272,10 @@ CONFIG_SYN_COOKIES=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_DIAG=y
-CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -313,27 +323,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-
-#
-# Bluetooth device drivers
-#
-# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-# CONFIG_BT_HCIUART_BCSP is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
+# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set
#
@@ -346,7 +336,6 @@ CONFIG_BT_HCIUART_H4=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
-# CONFIG_DEBUG_DRIVER is not set
# CONFIG_SYS_HYPERVISOR is not set
#
@@ -357,93 +346,7 @@ CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLKDEVS=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_NOSWAP=y
-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-# CONFIG_MTD_CFI_I2 is not set
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-CONFIG_MTD_XIP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SHARP_SL is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD is not set
#
# Parallel port support
@@ -453,17 +356,17 @@ CONFIG_MTD_XIP=y
#
# 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_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
@@ -541,8 +444,17 @@ CONFIG_DUMMY=y
# Wan interfaces
#
# CONFIG_WAN is not set
-# CONFIG_PPP is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE 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
@@ -562,10 +474,7 @@ 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_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_TSDEV=y
CONFIG_INPUT_TSDEV_SCREEN_X=240
@@ -583,6 +492,8 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
CONFIG_INPUT_TOUCHSCREEN=y
@@ -595,14 +506,13 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_TOUCHSCREEN_PCAP=y
# 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_SERIO is not set
# CONFIG_GAMEPORT is not set
#
@@ -639,7 +549,7 @@ CONFIG_LEGACY_PTY_COUNT=8
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
+CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
@@ -653,8 +563,8 @@ CONFIG_LEGACY_PTY_COUNT=8
#
# I2C support
#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
#
# I2C Algorithms
@@ -666,7 +576,7 @@ CONFIG_I2C_CHARDEV=y
#
# I2C Hardware Bus support
#
-CONFIG_I2C_PXA=y
+CONFIG_I2C_PXA=m
# CONFIG_I2C_PXA_SLAVE is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
@@ -692,18 +602,18 @@ CONFIG_I2C_PXA=y
# SPI support
#
CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_PXA2XX=y
+CONFIG_SPI_PXA2XX=m
#
# SPI Protocol Masters
#
+# CONFIG_SPI_AT25 is not set
#
# Dallas's 1-wire bus
@@ -719,7 +629,11 @@ CONFIG_SPI_PXA2XX=y
#
# Misc devices
#
-# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
#
# LED devices
@@ -752,15 +666,25 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Graphics support
#
-# CONFIG_FIRMWARE_EDID is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_EZX is not set
CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
CONFIG_FB_PXA_PARAMETERS=y
@@ -790,53 +714,17 @@ CONFIG_FONT_MINI_4x6=y
# Logo configuration
#
# CONFIG_LOGO is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Sound
#
-CONFIG_SOUND=y
-
-#
-# Advanced Linux Sound Architecture
-#
-CONFIG_SND=y
-# CONFIG_SND_SEQUENCER is not set
-# CONFIG_SND_MIXER_OSS is not set
-# CONFIG_SND_PCM_OSS is not set
-# CONFIG_SND_DYNAMIC_MINORS is not set
-# CONFIG_SND_SUPPORT_OLD_API is not set
-# CONFIG_SND_VERBOSE_PROCFS is not set
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
-
-#
-# Generic devices
-#
-# CONFIG_SND_DUMMY is not set
-# CONFIG_SND_MTPAV is not set
-# CONFIG_SND_SERIAL_U16550 is not set
-# CONFIG_SND_MPU401 is not set
-
-#
-# ALSA ARM devices
-#
-# CONFIG_SND_PXA2XX_AC97 is not set
-
-#
-# USB devices
-#
-# CONFIG_SND_USB_AUDIO is not set
-
-#
-# Open Sound System
-#
-# CONFIG_SOUND_PRIME is not set
+# CONFIG_SOUND is not set
#
# HID Devices
#
CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
#
# USB support
@@ -851,8 +739,8 @@ CONFIG_USB=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_OTG is not set
#
@@ -860,7 +748,8 @@ CONFIG_USB=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
@@ -901,6 +790,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=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
@@ -916,7 +806,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
+# CONFIG_USB_MON is not set
#
# USB port drivers
@@ -937,6 +827,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
@@ -946,6 +837,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
#
# USB DSL modem support
@@ -959,13 +851,15 @@ CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_AT91 is not set
-CONFIG_USB_GADGET_DUMMY_HCD=y
-CONFIG_USB_DUMMY_HCD=y
-CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
# CONFIG_USB_ETH_RNDIS is not set
@@ -981,43 +875,12 @@ CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
#
# Real Time Clock
#
CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_CLASS is not set
#
# File systems
@@ -1059,7 +922,9 @@ CONFIG_AUTOFS4_FS=y
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
# CONFIG_UDF_FS is not set
#
@@ -1078,8 +943,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1094,8 +958,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1105,27 +968,35 @@ CONFIG_CRAMFS=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_V3_ACL=y
# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
-# CONFIG_ROOT_NFS is not set
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
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=m
# CONFIG_SMB_NLS_DEFAULT is not set
-# CONFIG_CIFS is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
@@ -1200,30 +1071,11 @@ CONFIG_NLS_UTF8=m
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
-CONFIG_DEBUG_KERNEL=y
-CONFIG_LOG_BUF_SHIFT=16
-CONFIG_DETECT_SOFTLOCKUP=y
-# CONFIG_SCHEDSTATS is not set
-# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_RT_MUTEXES=y
-CONFIG_DEBUG_PI_LIST=y
-# CONFIG_RT_MUTEX_TESTER is not set
-CONFIG_DEBUG_SPINLOCK=y
-CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_RWSEMS=y
-CONFIG_DEBUG_SPINLOCK_SLEEP=y
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_FRAME_POINTER=y
-CONFIG_FORCED_INLINING=y
-# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_ERRORS=y
-# CONFIG_DEBUG_LL is not set
#
# Security options
@@ -1240,10 +1092,12 @@ CONFIG_DEBUG_ERRORS=y
# Library routines
#
CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=y
+CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/defconfig-a780 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-a780
index 85701ae3d1..bd794af856 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/defconfig-a780
+++ b/packages/linux/linux-ezx-2.6.21/patches/defconfig-a780
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21
-# Tue May 8 15:14:00 2007
+# Sat Jun 2 19:52:36 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -149,8 +149,11 @@ CONFIG_PXA_EZX=y
# CONFIG_PXA_EZX_E680 is not set
CONFIG_PXA_EZX_A780=y
# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
+CONFIG_EZX_MCI_TF=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -323,21 +326,21 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# 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=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP=y
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
+CONFIG_BT_HIDP=y
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIBCM203X is not set
@@ -366,17 +369,18 @@ CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=m
+CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
+# 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_CHAR=y
# CONFIG_MTD_BLKDEVS is not set
# CONFIG_MTD_BLOCK is not set
# CONFIG_MTD_BLOCK_RO is not set
@@ -389,24 +393,29 @@ CONFIG_MTD_CHAR=m
#
# RAM/ROM/Flash chip drivers
#
-CONFIG_MTD_CFI=m
+CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I2 is not set
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
+# 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=m
+CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -416,13 +425,16 @@ CONFIG_MTD_XIP=y
#
# Mapping drivers for chip access
#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
-CONFIG_MTD_EZX=m
-# CONFIG_MTD_EZX_A780 is not set
-CONFIG_MTD_EZX_A780_ALTERNATE=y
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
# CONFIG_MTD_EZX_E2 is not set
# CONFIG_MTD_PLATRAM is not set
@@ -831,7 +843,7 @@ CONFIG_FONT_MINI_4x6=y
#
# HID Devices
#
-CONFIG_HID=m
+CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
#
@@ -988,37 +1000,7 @@ 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 is not set
-# CONFIG_RTC_INTF_PROC is not set
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_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
+# CONFIG_RTC_CLASS is not set
#
# File systems
@@ -1097,7 +1079,7 @@ CONFIG_RAMFS=y
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1107,7 +1089,7 @@ CONFIG_CRAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
# CONFIG_NFS_V4 is not set
@@ -1118,13 +1100,12 @@ CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_ACL_SUPPORT=m
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=m
@@ -1206,7 +1187,7 @@ CONFIG_NLS_UTF8=m
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=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
@@ -1236,7 +1217,7 @@ CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
diff --git a/packages/linux/linux-ezx/defconfig-rokr-e2 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2
index 6345a77a34..be512457d9 100644..100755
--- a/packages/linux/linux-ezx/defconfig-rokr-e2
+++ b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2
@@ -1,11 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.19.1
-# Thu Jan 4 18:45:14 2007
+# Linux kernel version: 2.6.21.4
+# Wed Jun 13 17:29:50 2007
#
CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
+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
@@ -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_ARCH_MTD_XIP=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -24,31 +28,32 @@ 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
#
# General setup
#
-CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
-CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE 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_EMBEDDED=y
CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
@@ -58,11 +63,11 @@ CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-CONFIG_SHMEM=y
+# CONFIG_SHMEM is not set
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-# CONFIG_TINY_SHMEM is not set
+CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
@@ -71,10 +76,10 @@ 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_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
+CONFIG_KMOD=y
#
# Block layer
@@ -89,13 +94,13 @@ CONFIG_BLOCK=y
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_IOSCHED_DEADLINE=y
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_DEADLINE=y
# CONFIG_DEFAULT_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
#
# System Type
@@ -121,6 +126,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
# 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
@@ -136,13 +142,20 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_LUBBOCK is not set
# CONFIG_MACH_LOGICPD_PXA270 is not set
# CONFIG_MACH_MAINSTONE is not set
-CONFIG_ARCH_EZX=y
# CONFIG_ARCH_PXA_IDP is not set
# CONFIG_PXA_SHARPSL is not set
# CONFIG_MACH_TRIZEPS4 is not set
-CONFIG_ARCH_EZX_SUMATRA=y
-# CONFIG_ARCH_EZX_A780 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+CONFIG_PXA_EZX_E2=y
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+# CONFIG_EZX_EMU is not set
CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
#
# Processor Type
@@ -161,6 +174,7 @@ CONFIG_CPU_CP15_MMU=y
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
CONFIG_IWMMXT=y
CONFIG_XSCALE_PMU=y
@@ -176,10 +190,11 @@ CONFIG_XSCALE_PMU=y
#
# Kernel Features
#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ 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 is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -190,15 +205,17 @@ 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="mem=32M console=tty0 video=pxafb:mode:240x320-8,active root=/dev/mmcblk0p1 rootdelay=1"
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# Floating point emulation
@@ -207,16 +224,13 @@ CONFIG_CMDLINE="mem=32M console=tty0 video=pxafb:mode:240x320-8,active root=/dev
#
# At least one emulation must be selected
#
-# CONFIG_FPE_NWFPE is not set
-# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
#
# Power management options
@@ -225,7 +239,7 @@ 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_APM_EMULATION=y
#
# Networking
@@ -236,12 +250,55 @@ CONFIG_NET=y
# Networking options
#
# CONFIG_NETDEBUG is not set
-# CONFIG_PACKET is not set
-# CONFIG_UNIX is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
-# CONFIG_INET is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT 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 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
@@ -251,6 +308,7 @@ CONFIG_NET=y
# 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
#
@@ -275,97 +333,19 @@ CONFIG_NET=y
# Generic Driver Options
#
CONFIG_STANDALONE=y
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-# CONFIG_FW_LOADER is not set
+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
+CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_MTD_CONCAT is not set
-# CONFIG_MTD_PARTITIONS is not set
-
-#
-# User Modules And Translation Layers
-#
-# CONFIG_MTD_CHAR is not set
-# CONFIG_MTD_BLOCK is not set
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=y
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_XIP is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_SHARP_SL is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD is not set
#
# Parallel port support
@@ -375,15 +355,17 @@ CONFIG_MTD_CFI_UTIL=y
#
# 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_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
@@ -425,7 +407,55 @@ CONFIG_MTD_CFI_UTIL=y
#
# Network device support
#
-# CONFIG_NETDEVICES is not set
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=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 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
@@ -443,19 +473,26 @@ CONFIG_INPUT=y
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
-# CONFIG_INPUT_KEYBOARD is not set
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
@@ -484,9 +521,13 @@ CONFIG_HW_CONSOLE=y
#
# Non-8250 serial port support
#
-# CONFIG_SERIAL_PXA is not set
+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
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
#
# IPMI
@@ -497,7 +538,7 @@ CONFIG_UNIX98_PTYS=y
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
+CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
@@ -511,8 +552,8 @@ CONFIG_UNIX98_PTYS=y
#
# I2C support
#
-CONFIG_I2C=y
-# CONFIG_I2C_CHARDEV is not set
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
#
# I2C Algorithms
@@ -524,7 +565,8 @@ CONFIG_I2C=y
#
# I2C Hardware Bus support
#
-# CONFIG_I2C_PXA is not set
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_STUB is not set
@@ -555,11 +597,12 @@ CONFIG_SPI_MASTER=y
# SPI Master Controller Drivers
#
# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_PXA2XX=y
+CONFIG_SPI_PXA2XX=m
#
# SPI Protocol Masters
#
+# CONFIG_SPI_AT25 is not set
#
# Dallas's 1-wire bus
@@ -575,12 +618,17 @@ CONFIG_SPI_PXA2XX=y
#
# Misc devices
#
-# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
#
# LED devices
#
-# CONFIG_NEW_LEDS is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
#
# LED drivers
@@ -589,6 +637,9 @@ CONFIG_SPI_PXA2XX=y
#
# LED Triggers
#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
@@ -598,19 +649,31 @@ CONFIG_SPI_PXA2XX=y
#
# Digital Video Broadcasting Devices
#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
#
# Graphics support
#
-# CONFIG_FIRMWARE_EDID is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_EZX 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=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
CONFIG_FB_PXA_PARAMETERS=y
@@ -627,11 +690,11 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
# CONFIG_FONT_8x16 is not set
-CONFIG_FONT_6x11=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_MINI_4x6=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
@@ -640,11 +703,6 @@ CONFIG_FONT_6x11=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
#
# Sound
@@ -654,7 +712,8 @@ CONFIG_LCD_DEVICE=y
#
# HID Devices
#
-# CONFIG_HID is not set
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
#
# USB support
@@ -662,21 +721,127 @@ CONFIG_LCD_DEVICE=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
-# CONFIG_USB is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON 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
+
+#
+# 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_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
# CONFIG_USB_PXA2XX_SMALL is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
@@ -686,7 +851,7 @@ CONFIG_USB_PXA2XX=y
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
-CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_ETH_RNDIS is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
@@ -699,48 +864,21 @@ CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
#
# Real Time Clock
#
CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
-
-#
-# RTC interfaces
-#
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_M48T86 is not set
-CONFIG_RTC_DRV_SA1100=y
-# CONFIG_RTC_DRV_TEST is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_CLASS is not set
#
# File systems
#
-# CONFIG_EXT2_FS is not set
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
@@ -749,7 +887,12 @@ CONFIG_EXT3_FS_SECURITY=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
-# CONFIG_REISERFS_FS is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
@@ -757,24 +900,30 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
-# CONFIG_INOTIFY 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_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
-# CONFIG_ISO9660_FS is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
-# CONFIG_MSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
+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
#
@@ -783,8 +932,7 @@ CONFIG_DNOTIFY=y
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-CONFIG_TMPFS=y
-# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -799,8 +947,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-# CONFIG_CRAMFS is not set
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -810,6 +957,39 @@ CONFIG_RAMFS=y
#
# Network File Systems
#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
#
# Partition Types
@@ -821,45 +1001,50 @@ CONFIG_MSDOS_PARTITION=y
# Native Language Support
#
CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="utf-8"
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-CONFIG_NLS_UTF8=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
#
# Profiling support
@@ -877,7 +1062,7 @@ CONFIG_NLS_UTF8=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_KERNEL is not set
CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_USER is not set
@@ -896,9 +1081,12 @@ CONFIG_FRAME_POINTER=y
# Library routines
#
CONFIG_BITREVERSE=y
-# CONFIG_CRC_CCITT is not set
-# CONFIG_CRC16 is not set
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e6 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e6
new file mode 100755
index 0000000000..75ee2803d9
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e6
@@ -0,0 +1,1102 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21.4
+# Wed Jun 13 17:29:19 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-ezxdev"
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG 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=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+# CONFIG_SHMEM is not set
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
+CONFIG_PXA_EZX=y
+# CONFIG_PXA_EZX_E680 is not set
+# CONFIG_PXA_EZX_A780 is not set
+# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+CONFIG_PXA_EZX_E6=y
+# CONFIG_EZX_BP is not set
+CONFIG_EZX_PCAP=y
+# CONFIG_EZX_EMU is not set
+CONFIG_PXA27x=y
+CONFIG_PXA_SSP=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+CONFIG_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM_EMULATION=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT 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 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=m
+
+#
+# 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_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=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 is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_PXA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+CONFIG_TOUCHSCREEN_PCAP=y
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=8
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=m
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_PXA2XX=m
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_EZX is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_MBX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+# CONFIG_FONT_8x8 is not set
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+CONFIG_FONT_MINI_4x6=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+# CONFIG_USB_DEVICEFS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_GTCO is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET_MII is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON 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
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+# CONFIG_NFS_V4 is not set
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_MUST_CHECK is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/defconfig-e680 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e680
index 59b639f910..d180351886 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/defconfig-e680
+++ b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e680
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21
-# Tue May 8 14:31:50 2007
+# Sat Jun 2 18:29:02 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -149,8 +149,11 @@ CONFIG_PXA_EZX=y
CONFIG_PXA_EZX_E680=y
# CONFIG_PXA_EZX_A780 is not set
# CONFIG_PXA_EZX_E2 is not set
+# CONFIG_PXA_EZX_A1200 is not set
+# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
+CONFIG_EZX_MCI_SD=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -323,21 +326,21 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# 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=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP=y
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
+CONFIG_BT_HIDP=y
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIBCM203X is not set
@@ -366,17 +369,18 @@ CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=m
+CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_CONCAT=m
+# 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_CHAR=y
# CONFIG_MTD_BLKDEVS is not set
# CONFIG_MTD_BLOCK is not set
# CONFIG_MTD_BLOCK_RO is not set
@@ -389,24 +393,29 @@ CONFIG_MTD_CHAR=m
#
# RAM/ROM/Flash chip drivers
#
-CONFIG_MTD_CFI=m
+CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=m
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I2 is not set
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
+# 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=m
+CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -416,13 +425,16 @@ CONFIG_MTD_XIP=y
#
# Mapping drivers for chip access
#
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
-CONFIG_MTD_EZX=m
-# CONFIG_MTD_EZX_A780 is not set
-CONFIG_MTD_EZX_A780_ALTERNATE=y
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
# CONFIG_MTD_EZX_E2 is not set
# CONFIG_MTD_PLATRAM is not set
@@ -664,7 +676,8 @@ CONFIG_HW_RANDOM=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TS0710_MUX is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
#
# I2C support
@@ -754,8 +767,10 @@ CONFIG_LEDS_CLASS=y
#
# LED Triggers
#
-# CONFIG_LEDS_TRIGGERS is not set
+CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_E680=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
@@ -828,7 +843,7 @@ CONFIG_FONT_MINI_4x6=y
#
# HID Devices
#
-CONFIG_HID=m
+CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
#
@@ -985,37 +1000,7 @@ 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 is not set
-# CONFIG_RTC_INTF_PROC is not set
-CONFIG_RTC_INTF_DEV=y
-# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-
-#
-# RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
-# CONFIG_RTC_DRV_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
+# CONFIG_RTC_CLASS is not set
#
# File systems
@@ -1094,7 +1079,7 @@ CONFIG_RAMFS=y
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=y
+CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1104,7 +1089,7 @@ CONFIG_CRAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
# CONFIG_NFS_V4 is not set
@@ -1115,13 +1100,12 @@ CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_ACL_SUPPORT=m
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=m
@@ -1203,7 +1187,7 @@ CONFIG_NLS_UTF8=m
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_ENABLE_MUST_CHECK=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
@@ -1233,7 +1217,7 @@ CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
diff --git a/packages/linux/linux-ezx-2.6.21/patches/dmesg-a780.log b/packages/linux/linux-ezx-2.6.21/patches/dmesg-a780.log
new file mode 100755
index 0000000000..6b15077676
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/dmesg-a780.log
@@ -0,0 +1,299 @@
+<5>Linux version 2.6.21-ezxdev (wyrm@vault) (gcc version 4.1.1) #222 PREEMPT Tue May 8 15:19:34 BRT 2007
+<4>CPU: XScale-PXA270 [69054117] revision 7 (ARMv5TE), cr=0000397f
+<4>Machine: Motorola Ezx Platform
+<4>Memory policy: ECC disabled, Data cache writeback
+<7>On node 0 totalpages: 12288
+<7> DMA zone: 416 pages used for memmap
+<7> DMA zone: 0 pages reserved
+<7> DMA zone: 11872 pages, LIFO batch:1
+<7> Normal zone: 0 pages used for memmap
+<6>Run Mode clock: 195.00MHz (*15)
+<6>Turbo Mode clock: 292.50MHz (*1.5, active)
+<6>Memory clock: 195.00MHz (/2)
+<6>System bus clock: 195.00MHz
+<4>CPU0: D VIVT undefined 5 cache
+<4>CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
+<4>CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
+<4>Built 1 zonelists. Total pages: 11872
+<5>Kernel command line: console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000
+<4>PID hash table entries: 256 (order: 8, 1024 bytes)
+<4>Console: colour dummy device 80x30
+<4>Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
+<4>Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
+<6>Memory: 32MB 16MB = 48MB total
+<5>Memory: 46084KB available (2264K code, 217K data, 84K init)
+<7>Calibrating delay loop... 291.63 BogoMIPS (lpj=1458176)
+<4>Mount-cache hash table entries: 512
+<6>CPU: Testing write buffer coherency: ok
+<6>NET: Registered protocol family 16
+<6>usbcore: registered new interface driver usbfs
+<6>usbcore: registered new interface driver hub
+<6>usbcore: registered new device driver usb
+<6>Time: pxa_timer clocksource has been installed.
+<6>NET: Registered protocol family 2
+<4>IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
+<4>TCP established hash table entries: 2048 (order: 2, 16384 bytes)
+<4>TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
+<6>TCP: Hash tables configured (established 2048 bind 2048)
+<6>TCP reno registered
+<4>bp handshake entered!
+<4>ezx-bp: handshake step 2
+<4>BP rdy irq
+<4>bp handshake entered!
+<5>ezx-bp: handshake passed
+<4>ezx-pcap: ssp driver registered
+<6>io scheduler noop registered
+<6>io scheduler deadline registered (default)
+<4>pxa2xx-fb pxa2xx-fb: machine LCCR0 setting contains illegal bits: 00200878
+<4>pxa2xx-fb pxa2xx-fb: machine LCCR3 setting contains illegal bits: 00300008
+<4>Console: switching to colour frame buffer device 60x53
+<6>usbcore: registered new interface driver usb ipc
+<6>drivers/char/ts0710_mux_usb.c: USB Host(Bulverde) IPC driver registered.
+<6>drivers/char/ts0710_mux_usb.c: 1.0alpha1:USB IPC Driver (TS07.10 lowlevel)
+<6>pxa2xx-uart.0: ttyS0 at MMIO 0x40100000 (irq = 22) is a FFUART
+<6>pxa2xx-uart.1: ttyS1 at MMIO 0x40200000 (irq = 21) is a BTUART
+<6>pxa2xx-uart.2: ttyS2 at MMIO 0x40700000 (irq = 20) is a STUART
+<7>ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
+<6>pxa27x-ohci pxa27x-ohci: PXA27x OHCI
+<6>pxa27x-ohci pxa27x-ohci: new USB bus registered, assigned bus number 1
+<6>pxa27x-ohci pxa27x-ohci: irq 3, io mem 0x4c000000
+<6>usb usb1: configuration #1 chosen from 1 choice
+<6>hub 1-0:1.0: USB hub found
+<6>hub 1-0:1.0: 3 ports detected
+<6>pxa27x_udc: version 08-Feb-2007
+<5>USB cmd disconnect
+<5>USB cmd disconnect
+<4>ether gadget: using random self ethernet address
+<4>ether gadget: using random host ethernet address
+<6>usb0: Ethernet Gadget, version: May Day 2005
+<6>usb0: using pxa27x_udc, OUT Bulk-out-2 IN Bulk-in-1
+<6>usb0: MAC 46:86:e0:79:e7:fb
+<5>USB cmd connect
+<5>USB cmd connect
+<6>input: gpio-keys as /class/input/input0
+<6>input: pxa-keyboard as /class/input/input1
+<6>input: pcap-touchscreen as /class/input/input2
+<6>sa1100-rtc sa1100-rtc: rtc core: registered sa1100-rtc as rtc0
+<6>Registered led device: a780:main
+<6>Registered led device: a780:aux
+<6>Registered led device: a780:vibrator
+<6>TCP cubic registered
+<6>NET: Registered protocol family 1
+<6>NET: Registered protocol family 17
+<6>XScale iWMMXt coprocessor detected.
+<6>sa1100-rtc sa1100-rtc: setting the system clock to 1970-01-01 00:00:16 (16)
+<6>mmcblk0: mmc0:bffc SU02G 1985024KiB
+<6>udc: USB reset
+<6> mmcblk0:<6>usb 1-3: new full speed USB device using pxa27x-ohci and address 2
+<4> p1 p2 p3 < p5 p6 p7 >
+<6>udc: USB reset
+<3>usb 1-3: device descriptor read/64, error -62
+<6>usb0: full speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet Subset
+<3>usb 1-3: device descriptor read/64, error -62
+<6>usb 1-3: new full speed USB device using pxa27x-ohci and address 3
+<3>usb 1-3: device descriptor read/64, error -62
+<4>IP-Config: Complete:
+<4> device=usb0, addr=169.254.1.11, mask=255.255.255.254, gw=169.254.1.10,
+<4> host=ezx, domain=, nis-domain=(none),
+<4> bootserver=169.254.1.10, rootserver=169.254.1.10, rootpath=
+<6>kjournald starting. Commit interval 5 seconds
+<4>EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
+<6>EXT3 FS on mmcblk0p2, internal journal
+<6>EXT3-fs: recovery complete.
+<6>EXT3-fs: mounted filesystem with ordered data mode.
+<4>VFS: Mounted root (ext3 filesystem).
+<6>Freeing init memory: 84K
+<3>usb 1-3: device descriptor read/64, error -110
+<6>usb 1-3: new full speed USB device using pxa27x-ohci and address 4
+<3>usb 1-3: device descriptor read/8, error -62
+<4>usb 1-3: config 1 has an invalid interface number: 13 but max is 2
+<4>usb 1-3: config 1 has an invalid interface number: 6 but max is 2
+<4>usb 1-3: config 1 has an invalid interface number: 7 but max is 2
+<4>usb 1-3: config 1 has no interface number 0
+<4>usb 1-3: config 1 has no interface number 1
+<4>usb 1-3: config 1 has no interface number 2
+<6>usb 1-3: configuration #1 chosen from 1 choice
+<4>usb_ipc_probe: completed probe!
+<6>drivers/char/ts0710_mux_usb.c: usb_ipc_probe: Only two endpoints supported.
+<4>usb ipc: probe of 1-3:1.6 failed with error -1
+<6>drivers/char/ts0710_mux_usb.c: usb_ipc_probe: Only two endpoints supported.
+<4>usb ipc: probe of 1-3:1.7 failed with error -1
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2009 bytes from ts0710_mux_usb inbuf.
+<4>Read 21 bytes.
+<4>Reading max 1988 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 11 bytes.
+<4>Reading max 2037 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 17 bytes.
+<4>Reading max 2031 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 11 bytes.
+<4>Reading max 2037 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 7 bytes.
+<4>Reading max 2041 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 11 bytes.
+<4>Reading max 2037 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1984 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1952 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1920 bytes from ts0710_mux_usb inbuf.
+<4>Read 6 bytes.
+<4>Reading max 1914 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1882 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1850 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1818 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1786 bytes from ts0710_mux_usb inbuf.
+<4>Read 6 bytes.
+<4>Reading max 1780 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1748 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1716 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1684 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1652 bytes from ts0710_mux_usb inbuf.
+<4>Read 6 bytes.
+<4>Reading max 1646 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1984 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1952 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1920 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1888 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1856 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1824 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1792 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1760 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1728 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1696 bytes from ts0710_mux_usb inbuf.
+<4>Read 16 bytes.
+<4>Reading max 1680 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1984 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1952 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1920 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1888 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1856 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1824 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1792 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1760 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1728 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 1696 bytes from ts0710_mux_usb inbuf.
+<4>Read 13 bytes.
+<4>Reading max 1683 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 14 bytes.
+<4>Reading max 2034 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>Read 32 bytes.
+<4>Reading max 2016 bytes from ts0710_mux_usb inbuf.
+<4>Read 2 bytes.
+<4>Reading max 2014 bytes from ts0710_mux_usb inbuf.
+<4>Reading max 2048 bytes from ts0710_mux_usb inbuf.
+<4>nonzero read bulk status received: -104
diff --git a/packages/linux/linux-ezx-2.6.21/e680-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
index 054c567d6b..2a2d9c7a72 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/e680-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 13:03:53.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 14:21:56.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:54:39.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:56:30.000000000 -0300
@@ -15,18 +15,21 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
@@ -89,5 +89,5 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
pxa_set_mci_info(&e680_mci_platform_data);
+ pxa_set_kbd_info(&e680_kbd_platform_data);
- platform_add_devices(devices, ARRAY_SIZE(devices));
- }
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
diff --git a/packages/linux/linux-ezx-2.6.21/e680-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
index 37d47f89dc..82dc93b611 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/e680-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-05-08 14:31:16.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-05-08 14:31:17.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-06-08 18:39:04.000000000 +0200
++++ linux-2.6.21/drivers/leds/Kconfig 2007-06-08 18:39:12.000000000 +0200
@@ -111,6 +111,13 @@
This option enables support for the LEDs on the
Motorola A780 GSM Phone.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-05-08 14:31:16.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Makefile 2007-05-08 14:31:17.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-06-08 18:39:04.000000000 +0200
++++ linux-2.6.21/drivers/leds/Makefile 2007-06-08 18:39:12.000000000 +0200
@@ -17,6 +17,7 @@
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
@@ -36,7 +36,7 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-e680.c 2007-05-08 14:44:39.000000000 -0300
++++ linux-2.6.21/drivers/leds/leds-e680.c 2007-06-08 18:39:12.000000000 +0200
@@ -0,0 +1,309 @@
+/*
+ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone
@@ -349,9 +349,9 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 14:23:29.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 14:31:17.000000000 -0300
-@@ -221,8 +221,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:59.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:39:12.000000000 +0200
+@@ -242,9 +242,15 @@
},
};
@@ -361,6 +361,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+};
+
static struct platform_device *devices[] __initdata = {
+ &pcap_ts_device,
&e680locksw_device,
+ &e680led_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/e680-locksw.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
index 91fab24d44..36b52a916a 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/e680-locksw.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 14:23:12.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 14:23:29.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:48.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:59.000000000 +0200
@@ -16,6 +16,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,7 +10,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -199,7 +200,29 @@
+@@ -220,8 +221,30 @@
},
};
@@ -36,6 +36,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+};
+
static struct platform_device *devices[] __initdata = {
+ &pcap_ts_device,
+ &e680locksw_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/e680-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
index 1bf69176ef..b5bb2931f1 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/e680-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 03:47:41.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 13:03:53.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:43:08.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:48:20.000000000 -0300
@@ -13,11 +13,14 @@
#include <linux/init.h>
#include <linux/platform_device.h>
@@ -123,5 +123,17 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
set_pxa_fb_info(&e680_fb_info);
+ pxa_set_mci_info(&e680_mci_platform_data);
- platform_add_devices(devices, ARRAY_SIZE(devices));
- }
+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:28.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:55.000000000 -0300
+@@ -83,6 +83,7 @@
+ config PXA_EZX_E680
+ bool "Motorola E680 GSM Phone"
+ select PXA27x
++ select EZX_MCI_SD
+
+ config PXA_EZX_A780
+ bool "Motorola A780 GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
new file mode 100755
index 0000000000..52f9ce34b5
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
@@ -0,0 +1,40 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 20:32:49.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 20:33:26.000000000 -0300
+@@ -124,6 +124,27 @@
+ .exit = e680_mci_exit,
+ };
+
++/* PCAP_TS */
++struct resource pcap_ts_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_ADCDONE2,
++ .end = EZX_IRQ_ADCDONE2,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_TS,
++ .end = EZX_IRQ_TS,
++ .flags = IORESOURCE_IRQ,
++ }
++};
++
++struct platform_device pcap_ts_device = {
++ .name = "pcap-ts",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(pcap_ts_resources),
++ .resource = pcap_ts_resources,
++};
++
+ static struct pxafb_mode_info mode_e680 = {
+ .pixclock = 150000,
+ .xres = 240,
+@@ -200,6 +221,7 @@
+ };
+
+ static struct platform_device *devices[] __initdata = {
++ &pcap_ts_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-backlight.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
index ec48d46746..7054ef549b 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-backlight.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/video/backlight/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/video/backlight/Kconfig 2007-05-08 14:19:18.000000000 -0300
-+++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-05-08 14:22:22.000000000 -0300
+--- linux-2.6.21.orig/drivers/video/backlight/Kconfig 2007-06-02 20:03:06.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-06-02 20:26:49.000000000 -0300
@@ -63,3 +63,12 @@
help
If you have a Frontpath ProGear say Y to enable the
@@ -22,8 +22,8 @@ Index: linux-2.6.21/drivers/video/backlight/Kconfig
+
Index: linux-2.6.21/drivers/video/backlight/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/video/backlight/Makefile 2007-05-08 14:19:18.000000000 -0300
-+++ linux-2.6.21/drivers/video/backlight/Makefile 2007-05-08 14:22:22.000000000 -0300
+--- linux-2.6.21.orig/drivers/video/backlight/Makefile 2007-06-02 20:03:06.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/Makefile 2007-06-02 20:26:49.000000000 -0300
@@ -6,3 +6,4 @@
obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
@@ -32,7 +32,7 @@ Index: linux-2.6.21/drivers/video/backlight/Makefile
Index: linux-2.6.21/drivers/video/backlight/ezx_bl.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/video/backlight/ezx_bl.c 2007-05-08 14:24:16.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/ezx_bl.c 2007-06-02 20:26:49.000000000 -0300
@@ -0,0 +1,142 @@
+/*
+ * Backlight Driver for Motorola A780 and E680(i) GSM Phones.
@@ -178,8 +178,8 @@ Index: linux-2.6.21/drivers/video/backlight/ezx_bl.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-08 14:22:21.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-08 14:22:22.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 20:19:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:26:49.000000000 -0300
@@ -67,6 +67,12 @@
#endif
EXPORT_SYMBOL(ezx_backlight_power);
@@ -193,10 +193,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
/* SSP */
struct platform_device ezxssp_device = {
.name = "ezx-ssp",
-@@ -204,6 +210,7 @@
+@@ -179,6 +185,7 @@
+ &ezxbp_device,
&ezxpcap_device,
&ezxemu_device,
- &pcap_ts_device,
+ &ezxbacklight_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-bp.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
index a8a7e08086..a0b3b61b12 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-bp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-12 20:40:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-14 21:12:37.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:03:12.000000000 -0300
@@ -100,9 +100,41 @@
.init = ezx_ohci_init,
};
@@ -46,9 +46,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
static int __init ezx_init(void)
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-12 20:40:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-14 21:12:37.000000000 -0300
-@@ -94,6 +94,9 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 14:48:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:03:11.000000000 -0300
+@@ -102,6 +102,9 @@
endchoice
@@ -61,8 +61,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c 2007-05-12 21:28:07.000000000 -0300
-@@ -0,0 +1,250 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c 2007-06-02 18:26:22.000000000 -0300
+@@ -0,0 +1,249 @@
+/*
+ * BP handshake code for Motorola EZX phones
+ *
@@ -110,7 +110,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+{
+ if (pxa_gpio_get_value(GPIO_BB_WDI2) == 0) {
+ DEBUGP("BP request poweroff!\n");
-+ pm_power_off();
++// pm_power_off();
+ }
+}
+
@@ -133,7 +133,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+ pxa_gpio_mode(GPIO_MCU_INT_SW | GPIO_IN);
+ pxa_gpio_mode(GPIO_BP_RDY | GPIO_IN);
+
-+ while ( timeout -- ) {
++ while (timeout--) {
+ if (pxa_gpio_get_value(GPIO_MCU_INT_SW) == 0
+ || pxa_gpio_get_value(GPIO_BP_RDY) == 0) {
+ step ++;
@@ -202,7 +202,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+static irqreturn_t bp_wdi2_handler(int irq, void *dev_id)
+{
+ DEBUGP("BP request poweroff!\n");
-+ pm_power_off();
++// pm_power_off();
+ return IRQ_HANDLED;
+}
+
@@ -250,7 +250,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+ pxa_gpio_set_value(GPIO_BB_RESET, 1);
+
+ check_power_off();
-+
+ handshake();
+
+ return 0;
@@ -315,12 +314,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-12 20:40:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-14 21:12:37.000000000 -0300
-@@ -22,6 +22,7 @@
- obj-$(CONFIG_PXA_EZX_A780) += ezx-a780.o
- obj-$(CONFIG_PXA_EZX_E680) += ezx-e680.o
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 14:49:50.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 20:03:11.000000000 -0300
+@@ -24,6 +24,7 @@
obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
+ obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
+ obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
+obj-$(CONFIG_EZX_BP) += ezx-bp.o
# Support for blinky lights
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
index d70b685a0f..c0e9435723 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-core.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-05-08 03:43:23.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-06-02 14:46:25.000000000 -0300
@@ -53,3 +53,6 @@
str r1, [r0, #0x18]
#endif
@@ -11,8 +11,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
+#endif
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-08 03:43:23.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 14:48:52.000000000 -0300
@@ -37,6 +37,10 @@
bool "Keith und Koep Trizeps4 DIMM-Module"
select PXA27x
@@ -24,7 +24,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endchoice
if PXA_SHARPSL
-@@ -71,6 +75,27 @@
+@@ -71,6 +75,35 @@
endif
@@ -45,6 +45,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+ bool "Motorola E2 GSM Phone"
+ select PXA27x
+
++config PXA_EZX_A1200
++ bool "Motorola A1200 GSM Phone"
++ select PXA27x
++
++config PXA_EZX_E6
++ bool "Motorola E6 GSM Phone"
++ select PXA27x
++
+endchoice
+
+endif
@@ -52,7 +60,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endmenu
config MACH_POODLE
-@@ -144,4 +169,5 @@
+@@ -144,4 +177,5 @@
tristate
help
Enable support for PXA2xx SSP ports
@@ -60,9 +68,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-08 03:43:23.000000000 -0300
-@@ -18,6 +18,10 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 14:49:50.000000000 -0300
+@@ -18,6 +18,12 @@
obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
obj-$(CONFIG_MACH_TOSA) += tosa.o
@@ -70,14 +78,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+obj-$(CONFIG_PXA_EZX_A780) += ezx-a780.o
+obj-$(CONFIG_PXA_EZX_E680) += ezx-e680.o
+obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
++obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
++obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
# Support for blinky lights
led-y := leds.o
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-08 03:43:23.000000000 -0300
-@@ -0,0 +1,141 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 14:46:25.000000000 -0300
+@@ -0,0 +1,135 @@
+/*
+ * ezx.c - Common code for EZX platform.
+ *
@@ -201,12 +211,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+ pxa_gpio_mode(GPIO44_BTCTS_MD);
+ pxa_gpio_mode(GPIO45_BTRTS_MD);
+
-+ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
-+ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
-+ clr_GPIO(GPIO_EMU_MUX1);
-+ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
-+ clr_GPIO(GPIO_EMU_MUX2);
-+
+ /* Standard UART */
+ pxa_gpio_mode(GPIO46_STRXD_MD);
+ pxa_gpio_mode(GPIO47_STTXD_MD);
@@ -222,7 +226,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-05-08 03:43:23.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-06-02 14:46:25.000000000 -0300
@@ -0,0 +1,225 @@
+/*
+ * linux/include/asm-arm/arch-pxa/ezx.h
@@ -451,8 +455,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
+
Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-08 03:43:23.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-02 14:46:25.000000000 -0300
@@ -849,6 +849,8 @@
#define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
#define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
@@ -568,8 +572,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
#define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
Index: linux-2.6.21/arch/arm/boot/compressed/head.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-05-08 03:43:23.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-06-02 14:46:25.000000000 -0300
@@ -117,6 +117,9 @@
mov r0, r0
.endr
@@ -582,8 +586,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head.S
.word start @ absolute load/run zImage address
Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-05-08 03:43:23.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-06-02 14:46:25.000000000 -0300
@@ -14,14 +14,14 @@
#define STUART ((volatile unsigned long *)0x40700000)
#define HWUART ((volatile unsigned long *)0x41600000)
@@ -605,7 +609,7 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-05-08 03:43:23.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-06-02 14:46:25.000000000 -0300
@@ -0,0 +1,126 @@
+/*
+ * SSP control code for Motorola EZX phones
@@ -736,7 +740,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-05-08 03:43:23.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-06-02 14:46:25.000000000 -0300
@@ -0,0 +1,9 @@
+#include <asm/arch/ezx.h>
+
@@ -749,8 +753,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
+
Index: linux-2.6.21/arch/arm/mm/init.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mm/init.c 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/arch/arm/mm/init.c 2007-05-08 03:43:23.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mm/init.c 2007-06-02 14:46:22.000000000 -0300
++++ linux-2.6.21/arch/arm/mm/init.c 2007-06-02 14:46:25.000000000 -0300
@@ -241,6 +241,10 @@
*/
reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
@@ -765,8 +769,8 @@ Index: linux-2.6.21/arch/arm/mm/init.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-08 03:46:17.000000000 -0300
-@@ -0,0 +1,82 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 14:46:25.000000000 -0300
+@@ -0,0 +1,88 @@
+/*
+ * ezx-a780.c - Code specific to A780 GSM Phone.
+ *
@@ -836,6 +840,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+
+ set_pxa_fb_info(&a780_fb_info);
+
++ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
++ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX1);
++ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX2);
++
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+}
+
@@ -852,7 +862,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-05-08 03:47:56.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-06-02 14:46:25.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e2.c - Code specific to E2 GSM Phone.
@@ -901,7 +911,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
+ .lccr0 = 0x022008B8,
+ .lccr3 = 0xC130FF13,
+ .pxafb_backlight_power = ezx_backlight_power,
-+ .pxafb_lcd_power = &pxafb_lcd_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
+};
+
+static struct platform_device *devices[] __initdata = {
@@ -927,8 +937,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-08 03:47:41.000000000 -0300
-@@ -0,0 +1,81 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 14:46:25.000000000 -0300
+@@ -0,0 +1,87 @@
+/*
+ * ezx-e680.c - Code specific to E680 GSM Phone.
+ *
@@ -997,6 +1007,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+
+ set_pxa_fb_info(&e680_fb_info);
+
++ /* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
++ pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX1);
++ pxa_gpio_mode(GPIO_EMU_MUX2|GPIO_OUT);
++ clr_GPIO(GPIO_EMU_MUX2);
++
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+}
+
@@ -1010,3 +1026,153 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+ .timer = &pxa_timer,
+ .init_machine = e680_init,
+MACHINE_END
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 14:46:25.000000000 -0300
+@@ -0,0 +1,70 @@
++/*
++ * ezx-a1200.c - Code specific to A1200 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++
++#include "generic.h"
++#include "ezx.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_a1200 = {
++ .pixclock = 192308,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info a1200_fb_info = {
++ .modes = &mode_a1200,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init a1200_init(void)
++{
++ set_pxa_fb_info(&a1200_fb_info);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = pxa_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = a1200_init,
++MACHINE_END
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-06-02 14:48:08.000000000 -0300
+@@ -0,0 +1,70 @@
++/*
++ * ezx-e6.c - Code specific to E6 GSM Phone.
++ *
++ * Copyright (c) 2007 OpenEZX Team (www.openezx.org)
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/fb.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxafb.h>
++
++#include "generic.h"
++#include "ezx.h"
++
++extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
++extern void ezx_backlight_power(int);
++
++static struct pxafb_mode_info mode_e6 = {
++ .pixclock = 192308,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 8,
++ .hsync_len = 10,
++ .left_margin = 20,
++ .right_margin = 10,
++ .vsync_len = 2,
++ .upper_margin = 3,
++ .lower_margin = 2,
++ .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
++};
++
++static struct pxafb_mach_info e6_fb_info = {
++ .modes = &mode_e6,
++ .num_modes = 1,
++ .lccr0 = 0x022008B8,
++ .lccr3 = 0xC130FF13,
++ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_lcd_power = &ezx_lcd_power,
++};
++
++static struct platform_device *devices[] __initdata = {
++};
++
++static void __init e6_init(void)
++{
++ set_pxa_fb_info(&e6_fb_info);
++
++ platform_add_devices(devices, ARRAY_SIZE(devices));
++}
++
++MACHINE_START(EZX, "Motorola Ezx Platform")
++ /* Maintainer: OpenEZX Team (www.openezx.org) */
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = pxa_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = e6_init,
++MACHINE_END
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
index 7f089315a5..94581d4531 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-emu.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-05-08 02:31:16.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-06-02 20:32:34.000000000 -0300
@@ -0,0 +1,215 @@
+/*
+ * EMU Driver for Motorola EZX phones
@@ -220,8 +220,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-08 02:28:47.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-08 02:31:16.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:34.000000000 -0300
@@ -73,6 +73,7 @@
endchoice
@@ -230,9 +230,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
if PXA_EZX
-@@ -100,6 +101,28 @@
- config EZX_PCAP
- bool "PCAP Support"
+@@ -117,6 +118,28 @@
+ config EZX_MCI_TF
+ bool
+config EZX_EMU
+ bool "Motorola Enchanced Mini Usb"
@@ -261,8 +261,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endmenu
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-08 02:28:47.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-08 02:31:16.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 20:32:28.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:32:34.000000000 -0300
@@ -150,11 +150,35 @@
.resource = ezxpcap_resources,
};
@@ -301,10 +301,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
/* PM */
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-08 02:28:47.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-08 02:31:16.000000000 -0300
-@@ -24,6 +24,7 @@
- obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 20:32:28.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 20:32:34.000000000 -0300
+@@ -26,6 +26,7 @@
+ obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
obj-$(CONFIG_EZX_BP) += ezx-bp.o
obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
+obj-$(CONFIG_EZX_EMU) += ezx-emu.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-enable-stuart.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-enable-stuart.patch
new file mode 100755
index 0000000000..6f1a2c1ba4
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-enable-stuart.patch
@@ -0,0 +1,99 @@
+Index: linux-2.6.21/arch/arm/boot/compressed/head.S
+===================================================================
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-05-19 11:22:56.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-05-19 11:50:29.000000000 -0300
+@@ -10,6 +10,7 @@
+ */
+ #include <linux/linkage.h>
+
++#define DEBUG
+ /*
+ * Debugging stuff
+ *
+@@ -117,6 +118,8 @@
+ mov r0, r0
+ .endr
+
++ inituart r10, r11
++
+ mov r1, #0x300 @ mach_id 0x363 is official EZX
+ orr r1, r1, #0x63 @ bootloader JUMP doesn't set r1
+
+Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-05-19 11:22:56.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-05-19 11:30:38.000000000 -0300
+@@ -19,9 +19,9 @@
+
+ static inline void putc(char c)
+ {
+-/* while (!(UART[5] & 0x40))
++ while (!(UART[5] & 0x40))
+ barrier();
+- UART[0] = c;*/
++ UART[0] = c;
+ }
+
+ /*
+Index: linux-2.6.21/include/asm-arm/arch-pxa/debug-macro.S
+===================================================================
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/debug-macro.S 2007-05-19 11:30:54.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/debug-macro.S 2007-05-19 11:49:35.000000000 -0300
+@@ -14,11 +14,52 @@
+ #include "hardware.h"
+
+ .macro addruart,rx
+- mrc p15, 0, \rx, c1, c0
+- tst \rx, #1 @ MMU enabled?
+- moveq \rx, #0x40000000 @ physical
+- movne \rx, #io_p2v(0x40000000) @ virtual
+- orr \rx, \rx, #0x00100000
++@ mrc p15, 0, \rx, c1, c0
++@ tst \rx, #1 @ MMU enabled?
++ mov \rx, #0x40000000
++@ moveq \rx, #0x40000000 @ physical
++@ movne \rx, #io_p2v(0x40000000) @ virtual
++ orr \rx, \rx, #0x00700000
++ .endm
++
++ .macro inituart,rd,rx
++ ldr \rd, =0x41300004 @ CKEN
++ ldr \rx, [\rd]
++ orr \rx, \rx, #0x20
++ str \rx, [\rd]
++
++ ldr \rd, =0x40E0005C
++ ldr \rx, [\rd]
++ bic \rx, \rx, #0xF0000000 @ clear GPIO46/47 config
++ orr \rx, \rx, #0x60000000 @ set GPIO46: AF2, GPIO47: AF1
++ str \rx, [\rd]
++ ldr \rd, =0x40E00010
++ ldr \rx, [\rd]
++ bic \rx, \rx, #0x0000c000 @ clear GPIO46/47 direction
++ orr \rx, \rx, #0x00008000 @ set GPIO 47 out, 46 in
++ str \rx, [\rd]
++
++ addruart \rd
++ mov \rx, #0x83 @ DLAB = 1
++ strb \rx, [\rd, #0x0c]
++
++ mov \rx, #0x08 @ Divisor 8 => 115200 bps
++ strb \rx, [\rd, #0x00]
++
++ mov \rx, #0x00
++ strb \rx, [\rd, #0x04] @ Divisor high = 0
++
++ mov \rx, #0x03
++ strb \rx, [\rd, #0x0c] @ DLAB = 0, n81
++
++ mov \rx, #0x00
++ strb \rx, [\rd, #0x10] @ MCR = 0
++
++ mov \rx, #0x00
++ strb \rx, [\rd, #0x28] @ disable autobaud
++
++ mov \rx, #0x40
++ strb \rx, [\rd, #0x04] @ IER UUE (UART Enable)
+ .endm
+
+ #define UART_SHIFT 2
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
index 7ef42f0ffc..7ef42f0ffc 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-mtd-map.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
index 41903260e6..6af6317a6e 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
@@ -1,19 +1,17 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-05-08 16:13:29.000000000 -0300
-@@ -0,0 +1,428 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-06-07 21:39:37.000000000 -0300
+@@ -0,0 +1,472 @@
+/* Driver for Motorola PCAP2 as present in EZX phones
+ *
+ * This is both a SPI device driver for PCAP itself, as well as
+ * an IRQ demultiplexer for handling PCAP generated events such as
+ * headphone jack sense by downstream drivers.
+ *
-+ * (C) 2006 by Harald Welte <laforge@openezx.org>
++ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ * Copyright (C) 2007 Daniel Ribeiro <drwyrm@gmail.com>
+ *
-+ * 2007, April - Daniel Ribeiro <drwyrm@gmail.com>
-+ * Altered to work with corgi's SSP code.
-+ * Fixed irq handling routine.
+ */
+
+#include <linux/module.h>
@@ -21,6 +19,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+#include <linux/platform_device.h>
+#include <linux/interrupt.h>
+#include <linux/kernel_stat.h>
++#include <linux/proc_fs.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
@@ -41,7 +40,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+
+extern unsigned long ezx_ssp_pcap_putget(ulong);
+
-+
+int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
+{
+ value &= SSP_PCAP_REGISTER_VALUE_MASK;
@@ -107,6 +105,47 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
+
++/* /proc/pcap support */
++#ifdef CONFIG_PROC_FS
++
++static struct proc_dir_entry *proc_pcap;
++
++char *pcap_registers[] = {
++ "ISR\t", "MSR\t", "PSTAT\t", NULL, NULL, NULL, "VREG2\t", "VREG\t",
++ "BATT_DAC", "ADC1\t", "ADC2\t", "AUD_CODEC", "AUD_RX_AMPS",
++ "AUD_ST_DAC", NULL, NULL, NULL, NULL, NULL, NULL, "BUSCTRL\t",
++ "PERIPH\t", NULL, NULL, "LOWPWR\t", NULL, "AUD_TX_AMPS", "GP\t",
++ NULL, NULL, NULL, NULL, NULL
++};
++
++static int pcap_read_proc(char *page, char **start, off_t off, int count,
++ int *eof, void *data_unused)
++{
++ int len = 0;
++ u_int8_t r;
++ u_int32_t v;
++ off_t begin = 0;
++
++ for(r=0;r<32;r++) {
++ if (pcap_registers[r] == NULL)
++ continue;
++ ezx_pcap_read(r, &v);
++ len += sprintf(page+len, "%s\t%08X\n", pcap_registers[r], v);
++ if(len + begin > off + count)
++ goto done;
++ if(len + begin < off) {
++ begin += len;
++ len = 0;
++ }
++ }
++ *eof = 1;
++done:
++ if (off >= len+begin)
++ return 0;
++ *start = page + (off-begin);
++ return ((count < begin+len-off) ? count : begin+len-off);
++}
++#endif
+
+void ezx_pcap_vibrator_level(u_int32_t value)
+{
@@ -131,7 +170,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, PCAP_CLEAR_INTERRUPT_REGISTER);
+
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
++// ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
+
+ /* set SW1 sleep to keep SW1 1.3v in sync mode */
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
@@ -170,7 +209,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
+
-+ PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
++// PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
+
+ return 0;
+}
@@ -180,10 +219,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ unsigned int tmp;
+ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
-+#if defined(CONFIG_PXA_EZX_E680)
++#if defined(CONFIG_EZX_MCI_SD)
+ tmp &= 0xffffff9f; /* zero all vaux2 bits */
+ tmp |= (bits & 0x3) << 5;
-+#elif defined(CONFIG_PXA_EZX_A780)
++#elif defined(CONFIG_EZX_MCI_TF)
+ tmp &= 0xfffff0ff; /* zero all vaux3 bits */
+ tmp |= (bits & 0xf) << 8;
+#endif
@@ -193,19 +232,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+
+int ezx_pcap_mmcsd_power(int on)
+{
-+ if (on) {
-+#if defined(CONFIG_PXA_EZX_E680)
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
-+#else
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 1);
++ if (on > 0) on = 1;
++ else on = 0;
++#if defined(CONFIG_EZX_MCI_SD)
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, on);
++#elif defined(CONFIG_EZX_MCI_TF)
++ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, on);
+#endif
-+ } else {
-+#if defined(CONFIG_PXA_EZX_E680)
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 0);
-+#else
-+ return ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX3_EN, 0);
-+#endif
-+ }
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_mmcsd_power);
+
@@ -416,11 +449,22 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+static int __init ezx_pcap_init(void)
+{
+ DEBUGP("ezx_pcap_init entered\n");
++
++#ifdef CONFIG_PROC_FS
++ if((proc_pcap = create_proc_entry("pcap", 0, NULL)))
++ proc_pcap->read_proc = pcap_read_proc;
++#endif
++
+ return platform_driver_register(&ezxpcap_driver);
+}
+
+static void __exit ezx_pcap_exit(void)
+{
++#ifdef CONFIG_PROC_FS
++ if (proc_pcap)
++ remove_proc_entry("pcap", NULL);
++#endif
++
+ return platform_driver_unregister(&ezxpcap_driver);
+}
+
@@ -434,7 +478,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h 2007-05-08 04:03:42.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h 2007-06-03 11:14:40.000000000 -0300
@@ -0,0 +1,665 @@
+/* (c) Copyright Motorola Beijing 2002 all rights reserved.
+
@@ -1103,8 +1147,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx-pcap.h
+#endif
Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/irqs.h 2007-05-08 03:43:19.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-05-08 04:03:42.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/irqs.h 2007-06-03 02:17:12.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/irqs.h 2007-06-03 11:14:40.000000000 -0300
@@ -176,7 +176,8 @@
#define NR_IRQS (IRQ_LOCOMO_SPI_TEND + 1)
#elif defined(CONFIG_ARCH_LUBBOCK) || \
@@ -1131,8 +1175,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/irqs.h
+#define EZX_IRQ_ADCDONE2 EZX_IRQ(6) /* TS x/y ADC ready */
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-08 04:03:40.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-08 16:29:06.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-03 11:14:40.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-09 14:57:44.000000000 -0300
@@ -131,11 +131,30 @@
.resource = ezxbp_resources,
};
@@ -1166,25 +1210,31 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
/* PM */
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-08 04:03:37.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-08 16:29:06.000000000 -0300
-@@ -97,6 +97,9 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-03 11:14:40.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-09 14:57:46.000000000 -0300
+@@ -105,6 +105,15 @@
config EZX_BP
bool "BP Control code for EZX Platform"
+config EZX_PCAP
+ bool "PCAP Support"
+
++config EZX_MCI_SD
++ bool
++
++config EZX_MCI_TF
++ bool
++
endif
endmenu
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-05-08 04:03:37.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-05-08 16:29:06.000000000 -0300
-@@ -23,6 +23,7 @@
- obj-$(CONFIG_PXA_EZX_E680) += ezx-e680.o
- obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-03 11:14:40.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-09 14:57:44.000000000 -0300
+@@ -25,6 +25,7 @@
+ obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
+ obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
obj-$(CONFIG_EZX_BP) += ezx-bp.o
+obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
diff --git a/packages/linux/linux-ezx-2.6.21/ezx-pm.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
index 85b6f5c15d..85b6f5c15d 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/ezx-pm.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-serial-bug-workaround.patch
index 9f30cc35fe..9f30cc35fe 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/ezx-serial-bug-workaround.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-serial-bug-workaround.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-fix-init-errorpath.patch
index 716ef86fd1..716ef86fd1 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux-fix-init-errorpath.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-fix-init-errorpath.patch
diff --git a/packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-fix-makefile.patch
index 31452da847..31452da847 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/mux-fix-makefile.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-fix-makefile.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-fix-tty-driver.patch
index 2e1aabd952..2e1aabd952 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux-fix-tty-driver.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-fix-tty-driver.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-fix.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-fix.patch
index b820762f41..b820762f41 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux-fix.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-fix.patch
diff --git a/packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-ifdef-ezx-features.patch
index e7935a2598..e7935a2598 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/mux-ifdef-ezx-features.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-ifdef-ezx-features.patch
diff --git a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-linux-2.6.21-fix.patch
index 8d5299e3bd..8d5299e3bd 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-linux-2.6.21-fix.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-remove-flipbuffers.patch
index d4781f9fc7..d4781f9fc7 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux-remove-flipbuffers.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-remove-flipbuffers.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-remove-get_halted_bit.patch
index 0ebe27d03b..0ebe27d03b 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux-remove-get_halted_bit.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-remove-get_halted_bit.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch b/packages/linux/linux-ezx-2.6.21/patches/mux-remove-usbh_finished_resume.patch
index c415ded428..c415ded428 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux-remove-usbh_finished_resume.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux-remove-usbh_finished_resume.patch
diff --git a/packages/linux/linux-ezx-2.6.21/mux_cli.patch b/packages/linux/linux-ezx-2.6.21/patches/mux_cli.patch
index b3974a5996..b3974a5996 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/mux_cli.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux_cli.patch
diff --git a/packages/linux/linux-ezx-2.6.20.7/mux_debug.patch b/packages/linux/linux-ezx-2.6.21/patches/mux_debug.patch
index 58cb25a0b6..58cb25a0b6 100644..100755
--- a/packages/linux/linux-ezx-2.6.20.7/mux_debug.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/mux_debug.patch
diff --git a/packages/linux/linux-ezx-2.6.21/patches/patch-2.6.21.4 b/packages/linux/linux-ezx-2.6.21/patches/patch-2.6.21.4
new file mode 100644
index 0000000000..2c2ed60433
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/patch-2.6.21.4
@@ -0,0 +1,2816 @@
+diff --git a/Makefile b/Makefile
+index d970cb1..e5c5531 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,7 +1,7 @@
+ VERSION = 2
+ PATCHLEVEL = 6
+ SUBLEVEL = 21
+-EXTRAVERSION =
++EXTRAVERSION = .4
+ NAME = Nocturnal Monster Puppy
+
+ # *DOCUMENTATION*
+diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c
+index 2409560..7ed141f 100644
+--- a/arch/arm/kernel/traps.c
++++ b/arch/arm/kernel/traps.c
+@@ -273,6 +273,7 @@ asmlinkage void do_undefinstr(struct pt_regs *regs)
+ struct undef_hook *hook;
+ siginfo_t info;
+ void __user *pc;
++ unsigned long flags;
+
+ /*
+ * According to the ARM ARM, PC is 2 or 4 bytes ahead,
+@@ -291,7 +292,7 @@ asmlinkage void do_undefinstr(struct pt_regs *regs)
+ get_user(instr, (u32 __user *)pc);
+ }
+
+- spin_lock_irq(&undef_lock);
++ spin_lock_irqsave(&undef_lock, flags);
+ list_for_each_entry(hook, &undef_hook, node) {
+ if ((instr & hook->instr_mask) == hook->instr_val &&
+ (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) {
+@@ -301,7 +302,7 @@ asmlinkage void do_undefinstr(struct pt_regs *regs)
+ }
+ }
+ }
+- spin_unlock_irq(&undef_lock);
++ spin_unlock_irqrestore(&undef_lock, flags);
+
+ #ifdef CONFIG_DEBUG_USER
+ if (user_debug & UDBG_UNDEFINED) {
+diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
+index 89ec70e..d907a2a 100644
+--- a/arch/arm/mach-iop13xx/pci.c
++++ b/arch/arm/mach-iop13xx/pci.c
+@@ -1023,7 +1023,7 @@ int iop13xx_pci_setup(int nr, struct pci_sys_data *sys)
+ << IOP13XX_ATUX_PCIXSR_FUNC_NUM;
+ __raw_writel(pcixsr, IOP13XX_ATUX_PCIXSR);
+
+- res[0].start = IOP13XX_PCIX_LOWER_IO_PA;
++ res[0].start = IOP13XX_PCIX_LOWER_IO_PA + IOP13XX_PCIX_IO_BUS_OFFSET;
+ res[0].end = IOP13XX_PCIX_UPPER_IO_PA;
+ res[0].name = "IQ81340 ATUX PCI I/O Space";
+ res[0].flags = IORESOURCE_IO;
+@@ -1033,7 +1033,7 @@ int iop13xx_pci_setup(int nr, struct pci_sys_data *sys)
+ res[1].name = "IQ81340 ATUX PCI Memory Space";
+ res[1].flags = IORESOURCE_MEM;
+ sys->mem_offset = IOP13XX_PCIX_MEM_OFFSET;
+- sys->io_offset = IOP13XX_PCIX_IO_OFFSET;
++ sys->io_offset = IOP13XX_PCIX_LOWER_IO_PA;
+ break;
+ case IOP13XX_INIT_ATU_ATUE:
+ /* Note: the function number field in the PCSR is ro */
+@@ -1044,7 +1044,7 @@ int iop13xx_pci_setup(int nr, struct pci_sys_data *sys)
+
+ __raw_writel(pcsr, IOP13XX_ATUE_PCSR);
+
+- res[0].start = IOP13XX_PCIE_LOWER_IO_PA;
++ res[0].start = IOP13XX_PCIE_LOWER_IO_PA + IOP13XX_PCIE_IO_BUS_OFFSET;
+ res[0].end = IOP13XX_PCIE_UPPER_IO_PA;
+ res[0].name = "IQ81340 ATUE PCI I/O Space";
+ res[0].flags = IORESOURCE_IO;
+@@ -1054,7 +1054,7 @@ int iop13xx_pci_setup(int nr, struct pci_sys_data *sys)
+ res[1].name = "IQ81340 ATUE PCI Memory Space";
+ res[1].flags = IORESOURCE_MEM;
+ sys->mem_offset = IOP13XX_PCIE_MEM_OFFSET;
+- sys->io_offset = IOP13XX_PCIE_IO_OFFSET;
++ sys->io_offset = IOP13XX_PCIE_LOWER_IO_PA;
+ sys->map_irq = iop13xx_pcie_map_irq;
+ break;
+ default:
+diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c
+index 16300ad..0cc26da 100644
+--- a/arch/arm/plat-iop/time.c
++++ b/arch/arm/plat-iop/time.c
+@@ -32,22 +32,22 @@ static unsigned long next_jiffy_time;
+
+ unsigned long iop_gettimeoffset(void)
+ {
+- unsigned long offset, temp1, temp2;
++ unsigned long offset, temp;
+
+ /* enable cp6, if necessary, to avoid taking the overhead of an
+ * undefined instruction trap
+ */
+ asm volatile (
+ "mrc p15, 0, %0, c15, c1, 0\n\t"
+- "ands %1, %0, #(1 << 6)\n\t"
++ "tst %0, #(1 << 6)\n\t"
+ "orreq %0, %0, #(1 << 6)\n\t"
+ "mcreq p15, 0, %0, c15, c1, 0\n\t"
+-#ifdef CONFIG_XSCALE
++#ifdef CONFIG_CPU_XSCALE
+ "mrceq p15, 0, %0, c15, c1, 0\n\t"
+ "moveq %0, %0\n\t"
+ "subeq pc, pc, #4\n\t"
+ #endif
+- : "=r"(temp1), "=r"(temp2) : : "cc");
++ : "=r"(temp) : : "cc");
+
+ offset = next_jiffy_time - read_tcr1();
+
+diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c
+index 837b041..ca3e1d3 100644
+--- a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c
++++ b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c
+@@ -341,15 +341,17 @@ static int powernow_acpi_init(void)
+ pc.val = (unsigned long) acpi_processor_perf->states[0].control;
+ for (i = 0; i < number_scales; i++) {
+ u8 fid, vid;
+- unsigned int speed;
++ struct acpi_processor_px *state =
++ &acpi_processor_perf->states[i];
++ unsigned int speed, speed_mhz;
+
+- pc.val = (unsigned long) acpi_processor_perf->states[i].control;
++ pc.val = (unsigned long) state->control;
+ dprintk ("acpi: P%d: %d MHz %d mW %d uS control %08x SGTC %d\n",
+ i,
+- (u32) acpi_processor_perf->states[i].core_frequency,
+- (u32) acpi_processor_perf->states[i].power,
+- (u32) acpi_processor_perf->states[i].transition_latency,
+- (u32) acpi_processor_perf->states[i].control,
++ (u32) state->core_frequency,
++ (u32) state->power,
++ (u32) state->transition_latency,
++ (u32) state->control,
+ pc.bits.sgtc);
+
+ vid = pc.bits.vid;
+@@ -360,6 +362,18 @@ static int powernow_acpi_init(void)
+ powernow_table[i].index |= (vid << 8); /* upper 8 bits */
+
+ speed = powernow_table[i].frequency;
++ speed_mhz = speed / 1000;
++
++ /* processor_perflib will multiply the MHz value by 1000 to
++ * get a KHz value (e.g. 1266000). However, powernow-k7 works
++ * with true KHz values (e.g. 1266768). To ensure that all
++ * powernow frequencies are available, we must ensure that
++ * ACPI doesn't restrict them, so we round up the MHz value
++ * to ensure that perflib's computed KHz value is greater than
++ * or equal to powernow's KHz value.
++ */
++ if (speed % 1000 > 0)
++ speed_mhz++;
+
+ if ((fid_codes[fid] % 10)==5) {
+ if (have_a0 == 1)
+@@ -368,10 +382,16 @@ static int powernow_acpi_init(void)
+
+ dprintk (" FID: 0x%x (%d.%dx [%dMHz]) "
+ "VID: 0x%x (%d.%03dV)\n", fid, fid_codes[fid] / 10,
+- fid_codes[fid] % 10, speed/1000, vid,
++ fid_codes[fid] % 10, speed_mhz, vid,
+ mobile_vid_table[vid]/1000,
+ mobile_vid_table[vid]%1000);
+
++ if (state->core_frequency != speed_mhz) {
++ state->core_frequency = speed_mhz;
++ dprintk(" Corrected ACPI frequency to %d\n",
++ speed_mhz);
++ }
++
+ if (latency < pc.bits.sgtc)
+ latency = pc.bits.sgtc;
+
+@@ -602,7 +622,7 @@ static int __init powernow_cpu_init (struct cpufreq_policy *policy)
+ result = powernow_acpi_init();
+ if (result) {
+ printk (KERN_INFO PFX "ACPI and legacy methods failed\n");
+- printk (KERN_INFO PFX "See http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.shtml\n");
++ printk (KERN_INFO PFX "See http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.html\n");
+ }
+ } else {
+ /* SGTC use the bus clock as timer */
+diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+index fe3b670..e295d87 100644
+--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
++++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+@@ -521,7 +521,7 @@ static int check_supported_cpu(unsigned int cpu)
+
+ if ((eax & CPUID_XFAM) == CPUID_XFAM_K8) {
+ if (((eax & CPUID_USE_XFAM_XMOD) != CPUID_USE_XFAM_XMOD) ||
+- ((eax & CPUID_XMOD) > CPUID_XMOD_REV_G)) {
++ ((eax & CPUID_XMOD) > CPUID_XMOD_REV_MASK)) {
+ printk(KERN_INFO PFX "Processor cpuid %x not supported\n", eax);
+ goto out;
+ }
+diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.h b/arch/i386/kernel/cpu/cpufreq/powernow-k8.h
+index 0fb2a30..575541f 100644
+--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.h
++++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.h
+@@ -46,8 +46,8 @@ struct powernow_k8_data {
+ #define CPUID_XFAM 0x0ff00000 /* extended family */
+ #define CPUID_XFAM_K8 0
+ #define CPUID_XMOD 0x000f0000 /* extended model */
+-#define CPUID_XMOD_REV_G 0x00060000
+-#define CPUID_XFAM_10H 0x00100000 /* family 0x10 */
++#define CPUID_XMOD_REV_MASK 0x00080000
++#define CPUID_XFAM_10H 0x00100000 /* family 0x10 */
+ #define CPUID_USE_XFAM_XMOD 0x00000f00
+ #define CPUID_GET_MAX_CAPABILITIES 0x80000000
+ #define CPUID_FREQ_VOLT_CAPABILITIES 0x80000007
+diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c
+index fb9bf1e..f56569f 100644
+--- a/arch/sparc64/kernel/of_device.c
++++ b/arch/sparc64/kernel/of_device.c
+@@ -508,6 +508,13 @@ static int __init build_one_resource(struct device_node *parent,
+ return 0;
+ }
+
++ /* When we miss an I/O space match on PCI, just pass it up
++ * to the next PCI bridge and/or controller.
++ */
++ if (!strcmp(bus->name, "pci") &&
++ (addr[0] & 0x03000000) == 0x01000000)
++ return 0;
++
+ return 1;
+ }
+
+diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c
+index 0917c24..3494adf 100644
+--- a/arch/sparc64/kernel/prom.c
++++ b/arch/sparc64/kernel/prom.c
+@@ -1555,10 +1555,21 @@ static struct device_node * __init create_node(phandle node, struct device_node
+
+ static struct device_node * __init build_tree(struct device_node *parent, phandle node, struct device_node ***nextp)
+ {
++ struct device_node *ret = NULL, *prev_sibling = NULL;
+ struct device_node *dp;
+
+- dp = create_node(node, parent);
+- if (dp) {
++ while (1) {
++ dp = create_node(node, parent);
++ if (!dp)
++ break;
++
++ if (prev_sibling)
++ prev_sibling->sibling = dp;
++
++ if (!ret)
++ ret = dp;
++ prev_sibling = dp;
++
+ *(*nextp) = dp;
+ *nextp = &dp->allnext;
+
+@@ -1567,10 +1578,10 @@ static struct device_node * __init build_tree(struct device_node *parent, phandl
+
+ dp->child = build_tree(dp, prom_getchild(node), nextp);
+
+- dp->sibling = build_tree(parent, prom_getsibling(node), nextp);
++ node = prom_getsibling(node);
+ }
+
+- return dp;
++ return ret;
+ }
+
+ void __init prom_build_devicetree(void)
+diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
+index fc99f7b..8ad7bdb 100644
+--- a/arch/sparc64/kernel/smp.c
++++ b/arch/sparc64/kernel/smp.c
+@@ -566,6 +566,9 @@ static void hypervisor_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t
+ unsigned long flags, status;
+ int cnt, retries, this_cpu, prev_sent, i;
+
++ if (cpus_empty(mask))
++ return;
++
+ /* We have to do this whole thing with interrupts fully disabled.
+ * Otherwise if we send an xcall from interrupt context it will
+ * corrupt both our mondo block and cpu list state.
+diff --git a/arch/x86_64/kernel/vsyscall.c b/arch/x86_64/kernel/vsyscall.c
+index b43c698..fc9f042 100644
+--- a/arch/x86_64/kernel/vsyscall.c
++++ b/arch/x86_64/kernel/vsyscall.c
+@@ -132,7 +132,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv)
+
+ /* convert to usecs and add to timespec: */
+ tv->tv_usec += nsec_delta / NSEC_PER_USEC;
+- while (tv->tv_usec > USEC_PER_SEC) {
++ while (tv->tv_usec >= USEC_PER_SEC) {
+ tv->tv_sec += 1;
+ tv->tv_usec -= USEC_PER_SEC;
+ }
+diff --git a/crypto/api.c b/crypto/api.c
+index 55af8bb..33734fd 100644
+--- a/crypto/api.c
++++ b/crypto/api.c
+@@ -48,8 +48,10 @@ EXPORT_SYMBOL_GPL(crypto_mod_get);
+
+ void crypto_mod_put(struct crypto_alg *alg)
+ {
++ struct module *module = alg->cra_module;
++
+ crypto_alg_put(alg);
+- module_put(alg->cra_module);
++ module_put(module);
+ }
+ EXPORT_SYMBOL_GPL(crypto_mod_put);
+
+diff --git a/drivers/acpi/tables/tbfadt.c b/drivers/acpi/tables/tbfadt.c
+index 807c711..d341491 100644
+--- a/drivers/acpi/tables/tbfadt.c
++++ b/drivers/acpi/tables/tbfadt.c
+@@ -347,6 +347,20 @@ static void acpi_tb_convert_fadt(void)
+ acpi_gbl_xpm1b_enable.space_id = acpi_gbl_FADT.xpm1a_event_block.space_id;
+
+ }
++ /*
++ * _CST object and C States change notification start with
++ * ACPI 2.0 (FADT r3). Although the field should be Reserved
++ * and 0 before then, some pre-r3 FADT set this field and
++ * it results in SMM-related boot failures. For them, clear it.
++ */
++ if ((acpi_gbl_FADT.header.revision < 3) &&
++ (acpi_gbl_FADT.cst_control != 0)) {
++ ACPI_WARNING((AE_INFO,
++ "Ignoring BIOS FADT r%u C-state control",
++ acpi_gbl_FADT.header.revision));
++ acpi_gbl_FADT.cst_control = 0;
++ }
++
+ }
+
+ /******************************************************************************
+diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
+index 2ffcca0..4d63974 100644
+--- a/drivers/ata/libata-sff.c
++++ b/drivers/ata/libata-sff.c
+@@ -557,12 +557,30 @@ ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int
+ int i, p = 0;
+ void __iomem * const *iomap;
+
++ /* Discard disabled ports. Some controllers show their
++ unused channels this way */
++ if (ata_resources_present(pdev, 0) == 0)
++ ports &= ~ATA_PORT_PRIMARY;
++ if (ata_resources_present(pdev, 1) == 0)
++ ports &= ~ATA_PORT_SECONDARY;
++
+ /* iomap BARs */
+- for (i = 0; i < 4; i++) {
+- if (pcim_iomap(pdev, i, 0) == NULL) {
+- dev_printk(KERN_ERR, &pdev->dev,
+- "failed to iomap PCI BAR %d\n", i);
+- return NULL;
++ if (ports & ATA_PORT_PRIMARY) {
++ for (i = 0; i <= 1; i++) {
++ if (pcim_iomap(pdev, i, 0) == NULL) {
++ dev_printk(KERN_ERR, &pdev->dev,
++ "failed to iomap PCI BAR %d\n", i);
++ return NULL;
++ }
++ }
++ }
++ if (ports & ATA_PORT_SECONDARY) {
++ for (i = 2; i <= 3; i++) {
++ if (pcim_iomap(pdev, i, 0) == NULL) {
++ dev_printk(KERN_ERR, &pdev->dev,
++ "failed to iomap PCI BAR %d\n", i);
++ return NULL;
++ }
+ }
+ }
+
+@@ -577,13 +595,6 @@ ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int
+ probe_ent->irq = pdev->irq;
+ probe_ent->irq_flags = IRQF_SHARED;
+
+- /* Discard disabled ports. Some controllers show their
+- unused channels this way */
+- if (ata_resources_present(pdev, 0) == 0)
+- ports &= ~ATA_PORT_PRIMARY;
+- if (ata_resources_present(pdev, 1) == 0)
+- ports &= ~ATA_PORT_SECONDARY;
+-
+ if (ports & ATA_PORT_PRIMARY) {
+ probe_ent->port[p].cmd_addr = iomap[0];
+ probe_ent->port[p].altstatus_addr =
+diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
+index 598e6a2..ea6efca 100644
+--- a/drivers/ata/sata_via.c
++++ b/drivers/ata/sata_via.c
+@@ -97,6 +97,10 @@ static struct pci_driver svia_pci_driver = {
+ .name = DRV_NAME,
+ .id_table = svia_pci_tbl,
+ .probe = svia_init_one,
++#ifdef CONFIG_PM
++ .suspend = ata_pci_device_suspend,
++ .resume = ata_pci_device_resume,
++#endif
+ .remove = ata_pci_remove_one,
+ };
+
+@@ -116,6 +120,10 @@ static struct scsi_host_template svia_sht = {
+ .slave_configure = ata_scsi_slave_config,
+ .slave_destroy = ata_scsi_slave_destroy,
+ .bios_param = ata_std_bios_param,
++#ifdef CONFIG_PM
++ .suspend = ata_scsi_device_suspend,
++ .resume = ata_scsi_device_resume,
++#endif
+ };
+
+ static const struct ata_port_operations vt6420_sata_ops = {
+diff --git a/drivers/base/core.c b/drivers/base/core.c
+index d7fcf82..a8dfee2 100644
+--- a/drivers/base/core.c
++++ b/drivers/base/core.c
+@@ -93,6 +93,9 @@ static void device_release(struct kobject * kobj)
+ {
+ struct device * dev = to_dev(kobj);
+
++ kfree(dev->devt_attr);
++ dev->devt_attr = NULL;
++
+ if (dev->release)
+ dev->release(dev);
+ else if (dev->type && dev->type->release)
+@@ -765,10 +768,8 @@ void device_del(struct device * dev)
+
+ if (parent)
+ klist_del(&dev->knode_parent);
+- if (dev->devt_attr) {
++ if (dev->devt_attr)
+ device_remove_file(dev, dev->devt_attr);
+- kfree(dev->devt_attr);
+- }
+ if (dev->class) {
+ sysfs_remove_link(&dev->kobj, "subsystem");
+ /* If this is not a "fake" compatible device, remove the
+diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
+index e221465..cc13ebc 100644
+--- a/drivers/char/ipmi/ipmi_si_intf.c
++++ b/drivers/char/ipmi/ipmi_si_intf.c
+@@ -1859,10 +1859,10 @@ static __devinit int try_init_acpi(struct SPMITable *spmi)
+
+ if (spmi->addr.space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY) {
+ info->io_setup = mem_setup;
+- info->io.addr_type = IPMI_IO_ADDR_SPACE;
++ info->io.addr_type = IPMI_MEM_ADDR_SPACE;
+ } else if (spmi->addr.space_id == ACPI_ADR_SPACE_SYSTEM_IO) {
+ info->io_setup = port_setup;
+- info->io.addr_type = IPMI_MEM_ADDR_SPACE;
++ info->io.addr_type = IPMI_IO_ADDR_SPACE;
+ } else {
+ kfree(info);
+ printk("ipmi_si: Unknown ACPI I/O Address type\n");
+diff --git a/drivers/char/random.c b/drivers/char/random.c
+index b9dc7aa..fa5b95b 100644
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
+@@ -760,7 +760,7 @@ static size_t account(struct entropy_store *r, size_t nbytes, int min,
+
+ static void extract_buf(struct entropy_store *r, __u8 *out)
+ {
+- int i, x;
++ int i;
+ __u32 data[16], buf[5 + SHA_WORKSPACE_WORDS];
+
+ sha_init(buf);
+@@ -772,9 +772,11 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
+ * attempts to find previous ouputs), unless the hash
+ * function can be inverted.
+ */
+- for (i = 0, x = 0; i < r->poolinfo->poolwords; i += 16, x+=2) {
+- sha_transform(buf, (__u8 *)r->pool+i, buf + 5);
+- add_entropy_words(r, &buf[x % 5], 1);
++ for (i = 0; i < r->poolinfo->poolwords; i += 16) {
++ /* hash blocks of 16 words = 512 bits */
++ sha_transform(buf, (__u8 *)(r->pool + i), buf + 5);
++ /* feed back portion of the resulting hash */
++ add_entropy_words(r, &buf[i % 5], 1);
+ }
+
+ /*
+@@ -782,7 +784,7 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
+ * portion of the pool while mixing, and hash one
+ * final time.
+ */
+- __add_entropy_words(r, &buf[x % 5], 1, data);
++ __add_entropy_words(r, &buf[i % 5], 1, data);
+ sha_transform(buf, (__u8 *)data, buf + 5);
+
+ /*
+@@ -1022,37 +1024,44 @@ random_poll(struct file *file, poll_table * wait)
+ return mask;
+ }
+
+-static ssize_t
+-random_write(struct file * file, const char __user * buffer,
+- size_t count, loff_t *ppos)
++static int
++write_pool(struct entropy_store *r, const char __user *buffer, size_t count)
+ {
+- int ret = 0;
+ size_t bytes;
+ __u32 buf[16];
+ const char __user *p = buffer;
+- size_t c = count;
+
+- while (c > 0) {
+- bytes = min(c, sizeof(buf));
++ while (count > 0) {
++ bytes = min(count, sizeof(buf));
++ if (copy_from_user(&buf, p, bytes))
++ return -EFAULT;
+
+- bytes -= copy_from_user(&buf, p, bytes);
+- if (!bytes) {
+- ret = -EFAULT;
+- break;
+- }
+- c -= bytes;
++ count -= bytes;
+ p += bytes;
+
+- add_entropy_words(&input_pool, buf, (bytes + 3) / 4);
+- }
+- if (p == buffer) {
+- return (ssize_t)ret;
+- } else {
+- struct inode *inode = file->f_path.dentry->d_inode;
+- inode->i_mtime = current_fs_time(inode->i_sb);
+- mark_inode_dirty(inode);
+- return (ssize_t)(p - buffer);
++ add_entropy_words(r, buf, (bytes + 3) / 4);
+ }
++
++ return 0;
++}
++
++static ssize_t
++random_write(struct file * file, const char __user * buffer,
++ size_t count, loff_t *ppos)
++{
++ size_t ret;
++ struct inode *inode = file->f_path.dentry->d_inode;
++
++ ret = write_pool(&blocking_pool, buffer, count);
++ if (ret)
++ return ret;
++ ret = write_pool(&nonblocking_pool, buffer, count);
++ if (ret)
++ return ret;
++
++ inode->i_mtime = current_fs_time(inode->i_sb);
++ mark_inode_dirty(inode);
++ return (ssize_t)count;
+ }
+
+ static int
+@@ -1091,8 +1100,8 @@ random_ioctl(struct inode * inode, struct file * file,
+ return -EINVAL;
+ if (get_user(size, p++))
+ return -EFAULT;
+- retval = random_write(file, (const char __user *) p,
+- size, &file->f_pos);
++ retval = write_pool(&input_pool, (const char __user *)p,
++ size);
+ if (retval < 0)
+ return retval;
+ credit_entropy_store(&input_pool, ent_count);
+diff --git a/drivers/crypto/geode-aes.c b/drivers/crypto/geode-aes.c
+index 6d3840e..6a86958 100644
+--- a/drivers/crypto/geode-aes.c
++++ b/drivers/crypto/geode-aes.c
+@@ -102,10 +102,15 @@ geode_aes_crypt(struct geode_aes_op *op)
+ u32 flags = 0;
+ unsigned long iflags;
+
+- if (op->len == 0 || op->src == op->dst)
++ if (op->len == 0)
+ return 0;
+
+- if (op->flags & AES_FLAGS_COHERENT)
++ /* If the source and destination is the same, then
++ * we need to turn on the coherent flags, otherwise
++ * we don't need to worry
++ */
++
++ if (op->src == op->dst)
+ flags |= (AES_CTRL_DCA | AES_CTRL_SCA);
+
+ if (op->dir == AES_DIR_ENCRYPT)
+@@ -120,7 +125,7 @@ geode_aes_crypt(struct geode_aes_op *op)
+ _writefield(AES_WRITEIV0_REG, op->iv);
+ }
+
+- if (op->flags & AES_FLAGS_USRKEY) {
++ if (!(op->flags & AES_FLAGS_HIDDENKEY)) {
+ flags |= AES_CTRL_WRKEY;
+ _writefield(AES_WRITEKEY0_REG, op->key);
+ }
+@@ -289,6 +294,7 @@ static struct crypto_alg geode_cbc_alg = {
+ .setkey = geode_setkey,
+ .encrypt = geode_cbc_encrypt,
+ .decrypt = geode_cbc_decrypt,
++ .ivsize = AES_IV_LENGTH,
+ }
+ }
+ };
+diff --git a/drivers/crypto/geode-aes.h b/drivers/crypto/geode-aes.h
+index 8003a36..f479686 100644
+--- a/drivers/crypto/geode-aes.h
++++ b/drivers/crypto/geode-aes.h
+@@ -20,8 +20,7 @@
+ #define AES_DIR_DECRYPT 0
+ #define AES_DIR_ENCRYPT 1
+
+-#define AES_FLAGS_USRKEY (1 << 0)
+-#define AES_FLAGS_COHERENT (1 << 1)
++#define AES_FLAGS_HIDDENKEY (1 << 0)
+
+ struct geode_aes_op {
+
+diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
+index 97ee870..3a95cc5 100644
+--- a/drivers/md/raid1.c
++++ b/drivers/md/raid1.c
+@@ -271,21 +271,25 @@ static int raid1_end_read_request(struct bio *bio, unsigned int bytes_done, int
+ */
+ update_head_pos(mirror, r1_bio);
+
+- if (uptodate || (conf->raid_disks - conf->mddev->degraded) <= 1) {
+- /*
+- * Set R1BIO_Uptodate in our master bio, so that
+- * we will return a good error code for to the higher
+- * levels even if IO on some other mirrored buffer fails.
+- *
+- * The 'master' represents the composite IO operation to
+- * user-side. So if something waits for IO, then it will
+- * wait for the 'master' bio.
++ if (uptodate)
++ set_bit(R1BIO_Uptodate, &r1_bio->state);
++ else {
++ /* If all other devices have failed, we want to return
++ * the error upwards rather than fail the last device.
++ * Here we redefine "uptodate" to mean "Don't want to retry"
+ */
+- if (uptodate)
+- set_bit(R1BIO_Uptodate, &r1_bio->state);
++ unsigned long flags;
++ spin_lock_irqsave(&conf->device_lock, flags);
++ if (r1_bio->mddev->degraded == conf->raid_disks ||
++ (r1_bio->mddev->degraded == conf->raid_disks-1 &&
++ !test_bit(Faulty, &conf->mirrors[mirror].rdev->flags)))
++ uptodate = 1;
++ spin_unlock_irqrestore(&conf->device_lock, flags);
++ }
+
++ if (uptodate)
+ raid_end_bio_io(r1_bio);
+- } else {
++ else {
+ /*
+ * oops, read error:
+ */
+@@ -992,13 +996,14 @@ static void error(mddev_t *mddev, mdk_rdev_t *rdev)
+ unsigned long flags;
+ spin_lock_irqsave(&conf->device_lock, flags);
+ mddev->degraded++;
++ set_bit(Faulty, &rdev->flags);
+ spin_unlock_irqrestore(&conf->device_lock, flags);
+ /*
+ * if recovery is running, make sure it aborts.
+ */
+ set_bit(MD_RECOVERY_ERR, &mddev->recovery);
+- }
+- set_bit(Faulty, &rdev->flags);
++ } else
++ set_bit(Faulty, &rdev->flags);
+ set_bit(MD_CHANGE_DEVS, &mddev->flags);
+ printk(KERN_ALERT "raid1: Disk failure on %s, disabling device. \n"
+ " Operation continuing on %d devices\n",
+diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
+index 85f21b5..2eb5741 100644
+--- a/drivers/message/fusion/mptspi.c
++++ b/drivers/message/fusion/mptspi.c
+@@ -726,13 +726,15 @@ static int mptspi_slave_configure(struct scsi_device *sdev)
+ struct _MPT_SCSI_HOST *hd =
+ (struct _MPT_SCSI_HOST *)sdev->host->hostdata;
+ VirtTarget *vtarget = scsi_target(sdev)->hostdata;
+- int ret = mptscsih_slave_configure(sdev);
++ int ret;
++
++ mptspi_initTarget(hd, vtarget, sdev);
++
++ ret = mptscsih_slave_configure(sdev);
+
+ if (ret)
+ return ret;
+
+- mptspi_initTarget(hd, vtarget, sdev);
+-
+ ddvprintk((MYIOC_s_INFO_FMT "id=%d min_period=0x%02x"
+ " max_offset=0x%02x max_width=%d\n", hd->ioc->name,
+ sdev->id, spi_min_period(scsi_target(sdev)),
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index a3d46ea..32a3003 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2929,11 +2929,6 @@ endif #NETDEVICES
+ config NETPOLL
+ def_bool NETCONSOLE
+
+-config NETPOLL_RX
+- bool "Netpoll support for trapping incoming packets"
+- default n
+- depends on NETPOLL
+-
+ config NETPOLL_TRAP
+ bool "Netpoll traffic trapping"
+ default n
+diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
+index e85f5ec..5006c67 100644
+--- a/drivers/net/bnx2.c
++++ b/drivers/net/bnx2.c
+@@ -54,8 +54,8 @@
+
+ #define DRV_MODULE_NAME "bnx2"
+ #define PFX DRV_MODULE_NAME ": "
+-#define DRV_MODULE_VERSION "1.5.8"
+-#define DRV_MODULE_RELDATE "April 24, 2007"
++#define DRV_MODULE_VERSION "1.5.8.1"
++#define DRV_MODULE_RELDATE "May 7, 2007"
+
+ #define RUN_AT(x) (jiffies + (x))
+
+@@ -4510,8 +4510,7 @@ bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev)
+ vlan_tag_flags |=
+ (TX_BD_FLAGS_VLAN_TAG | (vlan_tx_tag_get(skb) << 16));
+ }
+- if ((mss = skb_shinfo(skb)->gso_size) &&
+- (skb->len > (bp->dev->mtu + ETH_HLEN))) {
++ if ((mss = skb_shinfo(skb)->gso_size)) {
+ u32 tcp_opt_len, ip_tcp_len;
+
+ if (skb_header_cloned(skb) &&
+@@ -5565,6 +5564,9 @@ bnx2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+ case SIOCGMIIREG: {
+ u32 mii_regval;
+
++ if (!netif_running(dev))
++ return -EAGAIN;
++
+ spin_lock_bh(&bp->phy_lock);
+ err = bnx2_read_phy(bp, data->reg_num & 0x1f, &mii_regval);
+ spin_unlock_bh(&bp->phy_lock);
+@@ -5578,6 +5580,9 @@ bnx2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+ if (!capable(CAP_NET_ADMIN))
+ return -EPERM;
+
++ if (!netif_running(dev))
++ return -EAGAIN;
++
+ spin_lock_bh(&bp->phy_lock);
+ err = bnx2_write_phy(bp, data->reg_num & 0x1f, data->val_in);
+ spin_unlock_bh(&bp->phy_lock);
+@@ -6143,6 +6148,7 @@ bnx2_suspend(struct pci_dev *pdev, pm_message_t state)
+ reset_code = BNX2_DRV_MSG_CODE_SUSPEND_NO_WOL;
+ bnx2_reset_chip(bp, reset_code);
+ bnx2_free_skbs(bp);
++ pci_save_state(pdev);
+ bnx2_set_power_state(bp, pci_choose_state(pdev, state));
+ return 0;
+ }
+@@ -6156,6 +6162,7 @@ bnx2_resume(struct pci_dev *pdev)
+ if (!netif_running(dev))
+ return 0;
+
++ pci_restore_state(pdev);
+ bnx2_set_power_state(bp, PCI_D0);
+ netif_device_attach(dev);
+ bnx2_init_nic(bp);
+diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
+index b2a3b19..ce547af 100644
+--- a/drivers/net/sis900.c
++++ b/drivers/net/sis900.c
+@@ -1754,6 +1754,7 @@ static int sis900_rx(struct net_device *net_dev)
+ sis_priv->rx_ring[entry].cmdsts = RX_BUF_SIZE;
+ } else {
+ struct sk_buff * skb;
++ struct sk_buff * rx_skb;
+
+ pci_unmap_single(sis_priv->pci_dev,
+ sis_priv->rx_ring[entry].bufptr, RX_BUF_SIZE,
+@@ -1787,10 +1788,10 @@ static int sis900_rx(struct net_device *net_dev)
+ }
+
+ /* give the socket buffer to upper layers */
+- skb = sis_priv->rx_skbuff[entry];
+- skb_put(skb, rx_size);
+- skb->protocol = eth_type_trans(skb, net_dev);
+- netif_rx(skb);
++ rx_skb = sis_priv->rx_skbuff[entry];
++ skb_put(rx_skb, rx_size);
++ rx_skb->protocol = eth_type_trans(rx_skb, net_dev);
++ netif_rx(rx_skb);
+
+ /* some network statistics */
+ if ((rx_status & BCAST) == MCAST)
+diff --git a/drivers/net/skge.c b/drivers/net/skge.c
+index d476a3c..5ef9023 100644
+--- a/drivers/net/skge.c
++++ b/drivers/net/skge.c
+@@ -135,10 +135,13 @@ static void skge_get_regs(struct net_device *dev, struct ethtool_regs *regs,
+ /* Wake on Lan only supported on Yukon chips with rev 1 or above */
+ static u32 wol_supported(const struct skge_hw *hw)
+ {
+- if (hw->chip_id == CHIP_ID_YUKON && hw->chip_rev != 0)
+- return WAKE_MAGIC | WAKE_PHY;
+- else
++ if (hw->chip_id == CHIP_ID_GENESIS)
++ return 0;
++
++ if (hw->chip_id == CHIP_ID_YUKON && hw->chip_rev == 0)
+ return 0;
++
++ return WAKE_MAGIC | WAKE_PHY;
+ }
+
+ static u32 pci_wake_enabled(struct pci_dev *dev)
+@@ -3583,7 +3586,9 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
+ skge->duplex = -1;
+ skge->speed = -1;
+ skge->advertising = skge_supported_modes(hw);
+- skge->wol = pci_wake_enabled(hw->pdev) ? wol_supported(hw) : 0;
++
++ if (pci_wake_enabled(hw->pdev))
++ skge->wol = wol_supported(hw) & WAKE_MAGIC;
+
+ hw->dev[port] = dev;
+
+@@ -3789,6 +3794,9 @@ static int skge_suspend(struct pci_dev *pdev, pm_message_t state)
+ struct skge_hw *hw = pci_get_drvdata(pdev);
+ int i, err, wol = 0;
+
++ if (!hw)
++ return 0;
++
+ err = pci_save_state(pdev);
+ if (err)
+ return err;
+@@ -3817,6 +3825,9 @@ static int skge_resume(struct pci_dev *pdev)
+ struct skge_hw *hw = pci_get_drvdata(pdev);
+ int i, err;
+
++ if (!hw)
++ return 0;
++
+ err = pci_set_power_state(pdev, PCI_D0);
+ if (err)
+ goto out;
+@@ -3855,6 +3866,9 @@ static void skge_shutdown(struct pci_dev *pdev)
+ struct skge_hw *hw = pci_get_drvdata(pdev);
+ int i, wol = 0;
+
++ if (!hw)
++ return;
++
+ for (i = 0; i < hw->ports; i++) {
+ struct net_device *dev = hw->dev[i];
+ struct skge_port *skge = netdev_priv(dev);
+diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
+index ac36152..b6b444b 100644
+--- a/drivers/net/sky2.c
++++ b/drivers/net/sky2.c
+@@ -123,16 +123,13 @@ static const struct pci_device_id sky2_id_table[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, /* 88E8050 */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, /* 88E8055 */
+-#ifdef broken
+- /* This device causes data corruption problems that are not resolved */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4364) }, /* 88E8056 */
+-#endif
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4366) }, /* 88EC036 */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4367) }, /* 88EC032 */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4368) }, /* 88EC034 */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4369) }, /* 88EC042 */
+ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436A) }, /* 88E8058 */
+- { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436B) }, /* 88E8071 */
++// { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x436B) }, /* 88E8071 */
+ { 0 }
+ };
+
+@@ -3722,6 +3719,7 @@ err_out_free_regions:
+ pci_release_regions(pdev);
+ pci_disable_device(pdev);
+ err_out:
++ pci_set_drvdata(pdev, NULL);
+ return err;
+ }
+
+@@ -3774,6 +3772,9 @@ static int sky2_suspend(struct pci_dev *pdev, pm_message_t state)
+ struct sky2_hw *hw = pci_get_drvdata(pdev);
+ int i, wol = 0;
+
++ if (!hw)
++ return 0;
++
+ del_timer_sync(&hw->idle_timer);
+ netif_poll_disable(hw->dev[0]);
+
+@@ -3805,6 +3806,9 @@ static int sky2_resume(struct pci_dev *pdev)
+ struct sky2_hw *hw = pci_get_drvdata(pdev);
+ int i, err;
+
++ if (!hw)
++ return 0;
++
+ err = pci_set_power_state(pdev, PCI_D0);
+ if (err)
+ goto out;
+@@ -3851,6 +3855,9 @@ static void sky2_shutdown(struct pci_dev *pdev)
+ struct sky2_hw *hw = pci_get_drvdata(pdev);
+ int i, wol = 0;
+
++ if (!hw)
++ return;
++
+ del_timer_sync(&hw->idle_timer);
+ netif_poll_disable(hw->dev[0]);
+
+diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
+index c956141..0b89812 100644
+--- a/drivers/net/smc911x.c
++++ b/drivers/net/smc911x.c
+@@ -499,7 +499,7 @@ static inline void smc911x_rcv(struct net_device *dev)
+ SMC_SET_RX_CFG(RX_CFG_RX_END_ALGN4_ | ((2<<8) & RX_CFG_RXDOFF_));
+ SMC_PULL_DATA(data, pkt_len+2+3);
+
+- DBG(SMC_DEBUG_PKTS, "%s: Received packet\n", dev->name,);
++ DBG(SMC_DEBUG_PKTS, "%s: Received packet\n", dev->name);
+ PRINT_PKT(data, ((pkt_len - 4) <= 64) ? pkt_len - 4 : 64);
+ dev->last_rx = jiffies;
+ skb->dev = dev;
+diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
+index 256969e..3d20115 100644
+--- a/drivers/net/tg3.c
++++ b/drivers/net/tg3.c
+@@ -64,8 +64,8 @@
+
+ #define DRV_MODULE_NAME "tg3"
+ #define PFX DRV_MODULE_NAME ": "
+-#define DRV_MODULE_VERSION "3.75"
+-#define DRV_MODULE_RELDATE "March 23, 2007"
++#define DRV_MODULE_VERSION "3.75.1"
++#define DRV_MODULE_RELDATE "May 7, 2007"
+
+ #define TG3_DEF_MAC_MODE 0
+ #define TG3_DEF_RX_MODE 0
+@@ -3895,8 +3895,7 @@ static int tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
+ entry = tp->tx_prod;
+ base_flags = 0;
+ mss = 0;
+- if (skb->len > (tp->dev->mtu + ETH_HLEN) &&
+- (mss = skb_shinfo(skb)->gso_size) != 0) {
++ if ((mss = skb_shinfo(skb)->gso_size) != 0) {
+ int tcp_opt_len, ip_tcp_len;
+
+ if (skb_header_cloned(skb) &&
+@@ -4053,8 +4052,7 @@ static int tg3_start_xmit_dma_bug(struct sk_buff *skb, struct net_device *dev)
+ if (skb->ip_summed == CHECKSUM_PARTIAL)
+ base_flags |= TXD_FLAG_TCPUDP_CSUM;
+ mss = 0;
+- if (skb->len > (tp->dev->mtu + ETH_HLEN) &&
+- (mss = skb_shinfo(skb)->gso_size) != 0) {
++ if ((mss = skb_shinfo(skb)->gso_size) != 0) {
+ int tcp_opt_len, ip_tcp_len, hdr_len;
+
+ if (skb_header_cloned(skb) &&
+@@ -5936,7 +5934,7 @@ static int tg3_load_tso_firmware(struct tg3 *tp)
+
+
+ /* tp->lock is held. */
+-static void __tg3_set_mac_addr(struct tg3 *tp)
++static void __tg3_set_mac_addr(struct tg3 *tp, int skip_mac_1)
+ {
+ u32 addr_high, addr_low;
+ int i;
+@@ -5948,6 +5946,8 @@ static void __tg3_set_mac_addr(struct tg3 *tp)
+ (tp->dev->dev_addr[4] << 8) |
+ (tp->dev->dev_addr[5] << 0));
+ for (i = 0; i < 4; i++) {
++ if (i == 1 && skip_mac_1)
++ continue;
+ tw32(MAC_ADDR_0_HIGH + (i * 8), addr_high);
+ tw32(MAC_ADDR_0_LOW + (i * 8), addr_low);
+ }
+@@ -5974,7 +5974,7 @@ static int tg3_set_mac_addr(struct net_device *dev, void *p)
+ {
+ struct tg3 *tp = netdev_priv(dev);
+ struct sockaddr *addr = p;
+- int err = 0;
++ int err = 0, skip_mac_1 = 0;
+
+ if (!is_valid_ether_addr(addr->sa_data))
+ return -EINVAL;
+@@ -5985,22 +5985,21 @@ static int tg3_set_mac_addr(struct net_device *dev, void *p)
+ return 0;
+
+ if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) {
+- /* Reset chip so that ASF can re-init any MAC addresses it
+- * needs.
+- */
+- tg3_netif_stop(tp);
+- tg3_full_lock(tp, 1);
++ u32 addr0_high, addr0_low, addr1_high, addr1_low;
+
+- tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
+- err = tg3_restart_hw(tp, 0);
+- if (!err)
+- tg3_netif_start(tp);
+- tg3_full_unlock(tp);
+- } else {
+- spin_lock_bh(&tp->lock);
+- __tg3_set_mac_addr(tp);
+- spin_unlock_bh(&tp->lock);
++ addr0_high = tr32(MAC_ADDR_0_HIGH);
++ addr0_low = tr32(MAC_ADDR_0_LOW);
++ addr1_high = tr32(MAC_ADDR_1_HIGH);
++ addr1_low = tr32(MAC_ADDR_1_LOW);
++
++ /* Skip MAC addr 1 if ASF is using it. */
++ if ((addr0_high != addr1_high || addr0_low != addr1_low) &&
++ !(addr1_high == 0 && addr1_low == 0))
++ skip_mac_1 = 1;
+ }
++ spin_lock_bh(&tp->lock);
++ __tg3_set_mac_addr(tp, skip_mac_1);
++ spin_unlock_bh(&tp->lock);
+
+ return err;
+ }
+@@ -6317,7 +6316,7 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
+ tp->rx_jumbo_ptr);
+
+ /* Initialize MAC address and backoff seed. */
+- __tg3_set_mac_addr(tp);
++ __tg3_set_mac_addr(tp, 0);
+
+ /* MTU + ethernet header + FCS + optional VLAN tag */
+ tw32(MAC_RX_MTU_SIZE, tp->dev->mtu + ETH_HLEN + 8);
+@@ -6348,8 +6347,7 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
+ tp->pci_chip_rev_id != CHIPREV_ID_5705_A0) ||
+ (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5750)) {
+ if (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE &&
+- (tp->pci_chip_rev_id == CHIPREV_ID_5705_A1 ||
+- tp->pci_chip_rev_id == CHIPREV_ID_5705_A2)) {
++ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) {
+ rdmac_mode |= RDMAC_MODE_FIFO_SIZE_128;
+ } else if (!(tr32(TG3PCI_PCISTATE) & PCISTATE_BUS_SPEED_HIGH) &&
+ !(tp->tg3_flags2 & TG3_FLG2_IS_5788)) {
+diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
+index 65d6f23..5af9125 100644
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -1737,18 +1737,20 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
+ quirk_nvidia_ck804_pcie_aer_ext_cap);
+
+ #ifdef CONFIG_PCI_MSI
+-/* The Serverworks PCI-X chipset does not support MSI. We cannot easily rely
+- * on setting PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
+- * some other busses controlled by the chipset even if Linux is not aware of it.
+- * Instead of setting the flag on all busses in the machine, simply disable MSI
+- * globally.
++/* Some chipsets do not support MSI. We cannot easily rely on setting
++ * PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
++ * some other busses controlled by the chipset even if Linux is not
++ * aware of it. Instead of setting the flag on all busses in the
++ * machine, simply disable MSI globally.
+ */
+-static void __init quirk_svw_msi(struct pci_dev *dev)
++static void __init quirk_disable_all_msi(struct pci_dev *dev)
+ {
+ pci_no_msi();
+ printk(KERN_WARNING "PCI: MSI quirk detected. MSI deactivated.\n");
+ }
+-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_svw_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
+
+ /* Disable MSI on chipsets that are known to not support it */
+ static void __devinit quirk_disable_msi(struct pci_dev *dev)
+diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c
+index 40d4856..c3a6bd2 100644
+--- a/drivers/serial/sunhv.c
++++ b/drivers/serial/sunhv.c
+@@ -493,6 +493,10 @@ static struct of_device_id hv_match[] = {
+ .name = "console",
+ .compatible = "qcn",
+ },
++ {
++ .name = "console",
++ .compatible = "SUNW,sun4v-console",
++ },
+ {},
+ };
+ MODULE_DEVICE_TABLE(of, hv_match);
+diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
+index 3dfa3e4..3257d94 100644
+--- a/drivers/usb/atm/cxacru.c
++++ b/drivers/usb/atm/cxacru.c
+@@ -146,6 +146,12 @@ enum cxacru_info_idx {
+ CXINF_MAX = 0x1c,
+ };
+
++enum poll_state {
++ CX_INIT,
++ CX_POLLING,
++ CX_ABORT
++};
++
+ struct cxacru_modem_type {
+ u32 pll_f_clk;
+ u32 pll_b_clk;
+@@ -159,6 +165,8 @@ struct cxacru_data {
+
+ int line_status;
+ struct delayed_work poll_work;
++ struct mutex poll_state_serialize;
++ enum poll_state poll_state;
+
+ /* contol handles */
+ struct mutex cm_serialize;
+@@ -356,7 +364,7 @@ static int cxacru_atm_start(struct usbatm_data *usbatm_instance,
+ /*
+ struct atm_dev *atm_dev = usbatm_instance->atm_dev;
+ */
+- int ret;
++ int ret, start_polling = 1;
+
+ dbg("cxacru_atm_start");
+
+@@ -376,7 +384,15 @@ static int cxacru_atm_start(struct usbatm_data *usbatm_instance,
+ }
+
+ /* Start status polling */
+- cxacru_poll_status(&instance->poll_work.work);
++ mutex_lock(&instance->poll_state_serialize);
++ if (instance->poll_state == CX_INIT)
++ instance->poll_state = CX_POLLING;
++ else /* poll_state == CX_ABORT */
++ start_polling = 0;
++ mutex_unlock(&instance->poll_state_serialize);
++
++ if (start_polling)
++ cxacru_poll_status(&instance->poll_work.work);
+ return 0;
+ }
+
+@@ -685,6 +701,9 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,
+ instance->usbatm = usbatm_instance;
+ instance->modem_type = (struct cxacru_modem_type *) id->driver_info;
+
++ mutex_init(&instance->poll_state_serialize);
++ instance->poll_state = CX_INIT;
++
+ instance->rcv_buf = (u8 *) __get_free_page(GFP_KERNEL);
+ if (!instance->rcv_buf) {
+ dbg("cxacru_bind: no memory for rcv_buf");
+@@ -744,6 +763,7 @@ static void cxacru_unbind(struct usbatm_data *usbatm_instance,
+ struct usb_interface *intf)
+ {
+ struct cxacru_data *instance = usbatm_instance->driver_data;
++ int stop_polling = 1;
+
+ dbg("cxacru_unbind entered");
+
+@@ -752,8 +772,20 @@ static void cxacru_unbind(struct usbatm_data *usbatm_instance,
+ return;
+ }
+
+- while (!cancel_delayed_work(&instance->poll_work))
+- flush_scheduled_work();
++ mutex_lock(&instance->poll_state_serialize);
++ if (instance->poll_state != CX_POLLING) {
++ /* Polling hasn't started yet and with
++ * the mutex locked it can be prevented
++ * from starting.
++ */
++ instance->poll_state = CX_ABORT;
++ stop_polling = 0;
++ }
++ mutex_unlock(&instance->poll_state_serialize);
++
++ if (stop_polling)
++ while (!cancel_delayed_work(&instance->poll_work))
++ flush_scheduled_work();
+
+ usb_kill_urb(instance->snd_urb);
+ usb_kill_urb(instance->rcv_urb);
+diff --git a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c
+index a8b3d66..488d61b 100644
+--- a/drivers/usb/input/hiddev.c
++++ b/drivers/usb/input/hiddev.c
+@@ -51,6 +51,7 @@ struct hiddev {
+ wait_queue_head_t wait;
+ struct hid_device *hid;
+ struct list_head list;
++ spinlock_t list_lock;
+ };
+
+ struct hiddev_list {
+@@ -161,7 +162,9 @@ static void hiddev_send_event(struct hid_device *hid,
+ {
+ struct hiddev *hiddev = hid->hiddev;
+ struct hiddev_list *list;
++ unsigned long flags;
+
++ spin_lock_irqsave(&hiddev->list_lock, flags);
+ list_for_each_entry(list, &hiddev->list, node) {
+ if (uref->field_index != HID_FIELD_INDEX_NONE ||
+ (list->flags & HIDDEV_FLAG_REPORT) != 0) {
+@@ -171,6 +174,7 @@ static void hiddev_send_event(struct hid_device *hid,
+ kill_fasync(&list->fasync, SIGIO, POLL_IN);
+ }
+ }
++ spin_unlock_irqrestore(&hiddev->list_lock, flags);
+
+ wake_up_interruptible(&hiddev->wait);
+ }
+@@ -235,9 +239,13 @@ static int hiddev_fasync(int fd, struct file *file, int on)
+ static int hiddev_release(struct inode * inode, struct file * file)
+ {
+ struct hiddev_list *list = file->private_data;
++ unsigned long flags;
+
+ hiddev_fasync(-1, file, 0);
++
++ spin_lock_irqsave(&list->hiddev->list_lock, flags);
+ list_del(&list->node);
++ spin_unlock_irqrestore(&list->hiddev->list_lock, flags);
+
+ if (!--list->hiddev->open) {
+ if (list->hiddev->exist)
+@@ -257,6 +265,7 @@ static int hiddev_release(struct inode * inode, struct file * file)
+ static int hiddev_open(struct inode *inode, struct file *file)
+ {
+ struct hiddev_list *list;
++ unsigned long flags;
+
+ int i = iminor(inode) - HIDDEV_MINOR_BASE;
+
+@@ -267,7 +276,11 @@ static int hiddev_open(struct inode *inode, struct file *file)
+ return -ENOMEM;
+
+ list->hiddev = hiddev_table[i];
++
++ spin_lock_irqsave(&list->hiddev->list_lock, flags);
+ list_add_tail(&list->node, &hiddev_table[i]->list);
++ spin_unlock_irqrestore(&list->hiddev->list_lock, flags);
++
+ file->private_data = list;
+
+ if (!list->hiddev->open++)
+@@ -773,6 +786,7 @@ int hiddev_connect(struct hid_device *hid)
+
+ init_waitqueue_head(&hiddev->wait);
+ INIT_LIST_HEAD(&hiddev->list);
++ spin_lock_init(&hiddev->list_lock);
+ hiddev->hid = hid;
+ hiddev->exist = 1;
+
+diff --git a/fs/fat/dir.c b/fs/fat/dir.c
+index c16af24..ccf161d 100644
+--- a/fs/fat/dir.c
++++ b/fs/fat/dir.c
+@@ -422,7 +422,7 @@ EODir:
+ EXPORT_SYMBOL_GPL(fat_search_long);
+
+ struct fat_ioctl_filldir_callback {
+- struct dirent __user *dirent;
++ void __user *dirent;
+ int result;
+ /* for dir ioctl */
+ const char *longname;
+@@ -647,62 +647,85 @@ static int fat_readdir(struct file *filp, void *dirent, filldir_t filldir)
+ return __fat_readdir(inode, filp, dirent, filldir, 0, 0);
+ }
+
+-static int fat_ioctl_filldir(void *__buf, const char *name, int name_len,
+- loff_t offset, u64 ino, unsigned int d_type)
++#define FAT_IOCTL_FILLDIR_FUNC(func, dirent_type) \
++static int func(void *__buf, const char *name, int name_len, \
++ loff_t offset, u64 ino, unsigned int d_type) \
++{ \
++ struct fat_ioctl_filldir_callback *buf = __buf; \
++ struct dirent_type __user *d1 = buf->dirent; \
++ struct dirent_type __user *d2 = d1 + 1; \
++ \
++ if (buf->result) \
++ return -EINVAL; \
++ buf->result++; \
++ \
++ if (name != NULL) { \
++ /* dirent has only short name */ \
++ if (name_len >= sizeof(d1->d_name)) \
++ name_len = sizeof(d1->d_name) - 1; \
++ \
++ if (put_user(0, d2->d_name) || \
++ put_user(0, &d2->d_reclen) || \
++ copy_to_user(d1->d_name, name, name_len) || \
++ put_user(0, d1->d_name + name_len) || \
++ put_user(name_len, &d1->d_reclen)) \
++ goto efault; \
++ } else { \
++ /* dirent has short and long name */ \
++ const char *longname = buf->longname; \
++ int long_len = buf->long_len; \
++ const char *shortname = buf->shortname; \
++ int short_len = buf->short_len; \
++ \
++ if (long_len >= sizeof(d1->d_name)) \
++ long_len = sizeof(d1->d_name) - 1; \
++ if (short_len >= sizeof(d1->d_name)) \
++ short_len = sizeof(d1->d_name) - 1; \
++ \
++ if (copy_to_user(d2->d_name, longname, long_len) || \
++ put_user(0, d2->d_name + long_len) || \
++ put_user(long_len, &d2->d_reclen) || \
++ put_user(ino, &d2->d_ino) || \
++ put_user(offset, &d2->d_off) || \
++ copy_to_user(d1->d_name, shortname, short_len) || \
++ put_user(0, d1->d_name + short_len) || \
++ put_user(short_len, &d1->d_reclen)) \
++ goto efault; \
++ } \
++ return 0; \
++efault: \
++ buf->result = -EFAULT; \
++ return -EFAULT; \
++}
++
++FAT_IOCTL_FILLDIR_FUNC(fat_ioctl_filldir, dirent)
++
++static int fat_ioctl_readdir(struct inode *inode, struct file *filp,
++ void __user *dirent, filldir_t filldir,
++ int short_only, int both)
+ {
+- struct fat_ioctl_filldir_callback *buf = __buf;
+- struct dirent __user *d1 = buf->dirent;
+- struct dirent __user *d2 = d1 + 1;
+-
+- if (buf->result)
+- return -EINVAL;
+- buf->result++;
+-
+- if (name != NULL) {
+- /* dirent has only short name */
+- if (name_len >= sizeof(d1->d_name))
+- name_len = sizeof(d1->d_name) - 1;
+-
+- if (put_user(0, d2->d_name) ||
+- put_user(0, &d2->d_reclen) ||
+- copy_to_user(d1->d_name, name, name_len) ||
+- put_user(0, d1->d_name + name_len) ||
+- put_user(name_len, &d1->d_reclen))
+- goto efault;
+- } else {
+- /* dirent has short and long name */
+- const char *longname = buf->longname;
+- int long_len = buf->long_len;
+- const char *shortname = buf->shortname;
+- int short_len = buf->short_len;
+-
+- if (long_len >= sizeof(d1->d_name))
+- long_len = sizeof(d1->d_name) - 1;
+- if (short_len >= sizeof(d1->d_name))
+- short_len = sizeof(d1->d_name) - 1;
+-
+- if (copy_to_user(d2->d_name, longname, long_len) ||
+- put_user(0, d2->d_name + long_len) ||
+- put_user(long_len, &d2->d_reclen) ||
+- put_user(ino, &d2->d_ino) ||
+- put_user(offset, &d2->d_off) ||
+- copy_to_user(d1->d_name, shortname, short_len) ||
+- put_user(0, d1->d_name + short_len) ||
+- put_user(short_len, &d1->d_reclen))
+- goto efault;
++ struct fat_ioctl_filldir_callback buf;
++ int ret;
++
++ buf.dirent = dirent;
++ buf.result = 0;
++ mutex_lock(&inode->i_mutex);
++ ret = -ENOENT;
++ if (!IS_DEADDIR(inode)) {
++ ret = __fat_readdir(inode, filp, &buf, filldir,
++ short_only, both);
+ }
+- return 0;
+-efault:
+- buf->result = -EFAULT;
+- return -EFAULT;
++ mutex_unlock(&inode->i_mutex);
++ if (ret >= 0)
++ ret = buf.result;
++ return ret;
+ }
+
+-static int fat_dir_ioctl(struct inode * inode, struct file * filp,
+- unsigned int cmd, unsigned long arg)
++static int fat_dir_ioctl(struct inode *inode, struct file *filp,
++ unsigned int cmd, unsigned long arg)
+ {
+- struct fat_ioctl_filldir_callback buf;
+- struct dirent __user *d1;
+- int ret, short_only, both;
++ struct dirent __user *d1 = (struct dirent __user *)arg;
++ int short_only, both;
+
+ switch (cmd) {
+ case VFAT_IOCTL_READDIR_SHORT:
+@@ -717,7 +740,6 @@ static int fat_dir_ioctl(struct inode * inode, struct file * filp,
+ return fat_generic_ioctl(inode, filp, cmd, arg);
+ }
+
+- d1 = (struct dirent __user *)arg;
+ if (!access_ok(VERIFY_WRITE, d1, sizeof(struct dirent[2])))
+ return -EFAULT;
+ /*
+@@ -728,69 +750,48 @@ static int fat_dir_ioctl(struct inode * inode, struct file * filp,
+ if (put_user(0, &d1->d_reclen))
+ return -EFAULT;
+
+- buf.dirent = d1;
+- buf.result = 0;
+- mutex_lock(&inode->i_mutex);
+- ret = -ENOENT;
+- if (!IS_DEADDIR(inode)) {
+- ret = __fat_readdir(inode, filp, &buf, fat_ioctl_filldir,
+- short_only, both);
+- }
+- mutex_unlock(&inode->i_mutex);
+- if (ret >= 0)
+- ret = buf.result;
+- return ret;
++ return fat_ioctl_readdir(inode, filp, d1, fat_ioctl_filldir,
++ short_only, both);
+ }
+
+ #ifdef CONFIG_COMPAT
+ #define VFAT_IOCTL_READDIR_BOTH32 _IOR('r', 1, struct compat_dirent[2])
+ #define VFAT_IOCTL_READDIR_SHORT32 _IOR('r', 2, struct compat_dirent[2])
+
+-static long fat_compat_put_dirent32(struct dirent *d,
+- struct compat_dirent __user *d32)
+-{
+- if (!access_ok(VERIFY_WRITE, d32, sizeof(struct compat_dirent)))
+- return -EFAULT;
+-
+- __put_user(d->d_ino, &d32->d_ino);
+- __put_user(d->d_off, &d32->d_off);
+- __put_user(d->d_reclen, &d32->d_reclen);
+- if (__copy_to_user(d32->d_name, d->d_name, d->d_reclen))
+- return -EFAULT;
++FAT_IOCTL_FILLDIR_FUNC(fat_compat_ioctl_filldir, compat_dirent)
+
+- return 0;
+-}
+-
+-static long fat_compat_dir_ioctl(struct file *file, unsigned cmd,
++static long fat_compat_dir_ioctl(struct file *filp, unsigned cmd,
+ unsigned long arg)
+ {
+- struct compat_dirent __user *p = compat_ptr(arg);
+- int ret;
+- mm_segment_t oldfs = get_fs();
+- struct dirent d[2];
++ struct inode *inode = filp->f_path.dentry->d_inode;
++ struct compat_dirent __user *d1 = compat_ptr(arg);
++ int short_only, both;
+
+ switch (cmd) {
+- case VFAT_IOCTL_READDIR_BOTH32:
+- cmd = VFAT_IOCTL_READDIR_BOTH;
+- break;
+ case VFAT_IOCTL_READDIR_SHORT32:
+- cmd = VFAT_IOCTL_READDIR_SHORT;
++ short_only = 1;
++ both = 0;
++ break;
++ case VFAT_IOCTL_READDIR_BOTH32:
++ short_only = 0;
++ both = 1;
+ break;
+ default:
+ return -ENOIOCTLCMD;
+ }
+
+- set_fs(KERNEL_DS);
+- lock_kernel();
+- ret = fat_dir_ioctl(file->f_path.dentry->d_inode, file,
+- cmd, (unsigned long) &d);
+- unlock_kernel();
+- set_fs(oldfs);
+- if (ret >= 0) {
+- ret |= fat_compat_put_dirent32(&d[0], p);
+- ret |= fat_compat_put_dirent32(&d[1], p + 1);
+- }
+- return ret;
++ if (!access_ok(VERIFY_WRITE, d1, sizeof(struct compat_dirent[2])))
++ return -EFAULT;
++ /*
++ * Yes, we don't need this put_user() absolutely. However old
++ * code didn't return the right value. So, app use this value,
++ * in order to check whether it is EOF.
++ */
++ if (put_user(0, &d1->d_reclen))
++ return -EFAULT;
++
++ return fat_ioctl_readdir(inode, filp, d1, fat_compat_ioctl_filldir,
++ short_only, both);
+ }
+ #endif /* CONFIG_COMPAT */
+
+diff --git a/fs/jfs/jfs_logmgr.c b/fs/jfs/jfs_logmgr.c
+index 5065baa..3760d02 100644
+--- a/fs/jfs/jfs_logmgr.c
++++ b/fs/jfs/jfs_logmgr.c
+@@ -2354,12 +2354,13 @@ int jfsIOWait(void *arg)
+ lbmStartIO(bp);
+ spin_lock_irq(&log_redrive_lock);
+ }
+- spin_unlock_irq(&log_redrive_lock);
+
+ if (freezing(current)) {
++ spin_unlock_irq(&log_redrive_lock);
+ refrigerator();
+ } else {
+ set_current_state(TASK_INTERRUPTIBLE);
++ spin_unlock_irq(&log_redrive_lock);
+ schedule();
+ current->state = TASK_RUNNING;
+ }
+diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
+index 6f24768..79bd03b 100644
+--- a/fs/nfsd/export.c
++++ b/fs/nfsd/export.c
+@@ -469,6 +469,13 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)
+ nd.dentry = NULL;
+ exp.ex_path = NULL;
+
++ /* fs locations */
++ exp.ex_fslocs.locations = NULL;
++ exp.ex_fslocs.locations_count = 0;
++ exp.ex_fslocs.migrated = 0;
++
++ exp.ex_uuid = NULL;
++
+ if (mesg[mlen-1] != '\n')
+ return -EINVAL;
+ mesg[mlen-1] = 0;
+@@ -509,13 +516,6 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)
+ if (exp.h.expiry_time == 0)
+ goto out;
+
+- /* fs locations */
+- exp.ex_fslocs.locations = NULL;
+- exp.ex_fslocs.locations_count = 0;
+- exp.ex_fslocs.migrated = 0;
+-
+- exp.ex_uuid = NULL;
+-
+ /* flags */
+ err = get_int(&mesg, &an_int);
+ if (err == -ENOENT)
+diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
+index c8178b7..2cac562 100644
+--- a/fs/reiserfs/xattr.c
++++ b/fs/reiserfs/xattr.c
+@@ -68,7 +68,7 @@ static struct dentry *get_xa_root(struct super_block *sb, int flags)
+ if (!privroot)
+ return ERR_PTR(-ENODATA);
+
+- mutex_lock(&privroot->d_inode->i_mutex);
++ mutex_lock_nested(&privroot->d_inode->i_mutex, I_MUTEX_XATTR);
+ if (REISERFS_SB(sb)->xattr_root) {
+ xaroot = dget(REISERFS_SB(sb)->xattr_root);
+ goto out;
+diff --git a/fs/udf/namei.c b/fs/udf/namei.c
+index fe361cd..b254375 100644
+--- a/fs/udf/namei.c
++++ b/fs/udf/namei.c
+@@ -878,7 +878,7 @@ static int udf_rmdir(struct inode * dir, struct dentry * dentry)
+ inode->i_nlink);
+ clear_nlink(inode);
+ inode->i_size = 0;
+- inode_dec_link_count(inode);
++ inode_dec_link_count(dir);
+ inode->i_ctime = dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb);
+ mark_inode_dirty(dir);
+
+diff --git a/include/asm-arm/arch-iop13xx/iop13xx.h b/include/asm-arm/arch-iop13xx/iop13xx.h
+index d26b755..74d7498 100644
+--- a/include/asm-arm/arch-iop13xx/iop13xx.h
++++ b/include/asm-arm/arch-iop13xx/iop13xx.h
+@@ -27,19 +27,24 @@ static inline int iop13xx_cpu_id(void)
+ #define IOP13XX_PCI_OFFSET IOP13XX_MAX_RAM_SIZE
+
+ /* PCI MAP
+- * 0x0000.0000 - 0x8000.0000 1:1 mapping with Physical RAM
+- * 0x8000.0000 - 0x8800.0000 PCIX/PCIE memory window (128MB)
+-*/
++ * bus range cpu phys cpu virt note
++ * 0x0000.0000 + 2GB (n/a) (n/a) inbound, 1:1 mapping with Physical RAM
++ * 0x8000.0000 + 928M 0x1.8000.0000 (ioremap) PCIX outbound memory window
++ * 0x8000.0000 + 928M 0x2.8000.0000 (ioremap) PCIE outbound memory window
++ *
++ * IO MAP
++ * 0x1000 + 64K 0x0.fffb.1000 0xfec6.1000 PCIX outbound i/o window
++ * 0x1000 + 64K 0x0.fffd.1000 0xfed7.1000 PCIE outbound i/o window
++ */
+ #define IOP13XX_PCIX_IO_WINDOW_SIZE 0x10000UL
+ #define IOP13XX_PCIX_LOWER_IO_PA 0xfffb0000UL
+ #define IOP13XX_PCIX_LOWER_IO_VA 0xfec60000UL
+-#define IOP13XX_PCIX_LOWER_IO_BA 0x0fff0000UL
++#define IOP13XX_PCIX_LOWER_IO_BA 0x0UL /* OIOTVR */
++#define IOP13XX_PCIX_IO_BUS_OFFSET 0x1000UL
+ #define IOP13XX_PCIX_UPPER_IO_PA (IOP13XX_PCIX_LOWER_IO_PA +\
+ IOP13XX_PCIX_IO_WINDOW_SIZE - 1)
+ #define IOP13XX_PCIX_UPPER_IO_VA (IOP13XX_PCIX_LOWER_IO_VA +\
+ IOP13XX_PCIX_IO_WINDOW_SIZE - 1)
+-#define IOP13XX_PCIX_IO_OFFSET (IOP13XX_PCIX_LOWER_IO_VA -\
+- IOP13XX_PCIX_LOWER_IO_BA)
+ #define IOP13XX_PCIX_IO_PHYS_TO_VIRT(addr) (u32) ((u32) addr -\
+ (IOP13XX_PCIX_LOWER_IO_PA\
+ - IOP13XX_PCIX_LOWER_IO_VA))
+@@ -65,15 +70,14 @@ static inline int iop13xx_cpu_id(void)
+ #define IOP13XX_PCIE_IO_WINDOW_SIZE 0x10000UL
+ #define IOP13XX_PCIE_LOWER_IO_PA 0xfffd0000UL
+ #define IOP13XX_PCIE_LOWER_IO_VA 0xfed70000UL
+-#define IOP13XX_PCIE_LOWER_IO_BA 0x0fff0000UL
++#define IOP13XX_PCIE_LOWER_IO_BA 0x0UL /* OIOTVR */
++#define IOP13XX_PCIE_IO_BUS_OFFSET 0x1000UL
+ #define IOP13XX_PCIE_UPPER_IO_PA (IOP13XX_PCIE_LOWER_IO_PA +\
+ IOP13XX_PCIE_IO_WINDOW_SIZE - 1)
+ #define IOP13XX_PCIE_UPPER_IO_VA (IOP13XX_PCIE_LOWER_IO_VA +\
+ IOP13XX_PCIE_IO_WINDOW_SIZE - 1)
+ #define IOP13XX_PCIE_UPPER_IO_BA (IOP13XX_PCIE_LOWER_IO_BA +\
+ IOP13XX_PCIE_IO_WINDOW_SIZE - 1)
+-#define IOP13XX_PCIE_IO_OFFSET (IOP13XX_PCIE_LOWER_IO_VA -\
+- IOP13XX_PCIE_LOWER_IO_BA)
+ #define IOP13XX_PCIE_IO_PHYS_TO_VIRT(addr) (u32) ((u32) addr -\
+ (IOP13XX_PCIE_LOWER_IO_PA\
+ - IOP13XX_PCIE_LOWER_IO_VA))
+diff --git a/include/asm-sparc64/openprom.h b/include/asm-sparc64/openprom.h
+index e01b805..26ec046 100644
+--- a/include/asm-sparc64/openprom.h
++++ b/include/asm-sparc64/openprom.h
+@@ -177,7 +177,7 @@ struct linux_nodeops {
+ /* More fun PROM structures for device probing. */
+ #define PROMREG_MAX 24
+ #define PROMVADDR_MAX 16
+-#define PROMINTR_MAX 15
++#define PROMINTR_MAX 32
+
+ struct linux_prom_registers {
+ unsigned which_io; /* hi part of physical address */
+diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h
+index daa4940..bf92c26 100644
+--- a/include/linux/clocksource.h
++++ b/include/linux/clocksource.h
+@@ -48,6 +48,7 @@ struct clocksource;
+ * @shift: cycle to nanosecond divisor (power of two)
+ * @flags: flags describing special properties
+ * @vread: vsyscall based read
++ * @resume: resume function for the clocksource, if necessary
+ * @cycle_interval: Used internally by timekeeping core, please ignore.
+ * @xtime_interval: Used internally by timekeeping core, please ignore.
+ */
+@@ -61,6 +62,7 @@ struct clocksource {
+ u32 shift;
+ unsigned long flags;
+ cycle_t (*vread)(void);
++ void (*resume)(void);
+
+ /* timekeeping specific data, ignore */
+ cycle_t cycle_last, cycle_interval;
+@@ -198,6 +200,7 @@ static inline void clocksource_calculate_interval(struct clocksource *c,
+ extern int clocksource_register(struct clocksource*);
+ extern struct clocksource* clocksource_get_next(void);
+ extern void clocksource_change_rating(struct clocksource *cs, int rating);
++extern void clocksource_resume(void);
+
+ #ifdef CONFIG_GENERIC_TIME_VSYSCALL
+ extern void update_vsyscall(struct timespec *ts, struct clocksource *c);
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index 1a52854..b1b0f68 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -647,8 +647,10 @@ static inline void netif_start_queue(struct net_device *dev)
+ static inline void netif_wake_queue(struct net_device *dev)
+ {
+ #ifdef CONFIG_NETPOLL_TRAP
+- if (netpoll_trap())
++ if (netpoll_trap()) {
++ clear_bit(__LINK_STATE_XOFF, &dev->state);
+ return;
++ }
+ #endif
+ if (test_and_clear_bit(__LINK_STATE_XOFF, &dev->state))
+ __netif_schedule(dev);
+@@ -656,10 +658,6 @@ static inline void netif_wake_queue(struct net_device *dev)
+
+ static inline void netif_stop_queue(struct net_device *dev)
+ {
+-#ifdef CONFIG_NETPOLL_TRAP
+- if (netpoll_trap())
+- return;
+-#endif
+ set_bit(__LINK_STATE_XOFF, &dev->state);
+ }
+
+diff --git a/include/linux/netfilter/nf_conntrack_proto_gre.h b/include/linux/netfilter/nf_conntrack_proto_gre.h
+index 4e6bbce..535e421 100644
+--- a/include/linux/netfilter/nf_conntrack_proto_gre.h
++++ b/include/linux/netfilter/nf_conntrack_proto_gre.h
+@@ -87,24 +87,6 @@ int nf_ct_gre_keymap_add(struct nf_conn *ct, enum ip_conntrack_dir dir,
+ /* delete keymap entries */
+ void nf_ct_gre_keymap_destroy(struct nf_conn *ct);
+
+-/* get pointer to gre key, if present */
+-static inline __be32 *gre_key(struct gre_hdr *greh)
+-{
+- if (!greh->key)
+- return NULL;
+- if (greh->csum || greh->routing)
+- return (__be32 *)(greh+sizeof(*greh)+4);
+- return (__be32 *)(greh+sizeof(*greh));
+-}
+-
+-/* get pointer ot gre csum, if present */
+-static inline __sum16 *gre_csum(struct gre_hdr *greh)
+-{
+- if (!greh->csum)
+- return NULL;
+- return (__sum16 *)(greh+sizeof(*greh));
+-}
+-
+ extern void nf_ct_gre_keymap_flush(void);
+ extern void nf_nat_need_gre(void);
+
+diff --git a/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h b/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
+index e371e0f..d0f36f5 100644
+--- a/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
++++ b/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
+@@ -90,25 +90,6 @@ int ip_ct_gre_keymap_add(struct ip_conntrack *ct,
+ /* delete keymap entries */
+ void ip_ct_gre_keymap_destroy(struct ip_conntrack *ct);
+
+-
+-/* get pointer to gre key, if present */
+-static inline __be32 *gre_key(struct gre_hdr *greh)
+-{
+- if (!greh->key)
+- return NULL;
+- if (greh->csum || greh->routing)
+- return (__be32 *) (greh+sizeof(*greh)+4);
+- return (__be32 *) (greh+sizeof(*greh));
+-}
+-
+-/* get pointer ot gre csum, if present */
+-static inline __sum16 *gre_csum(struct gre_hdr *greh)
+-{
+- if (!greh->csum)
+- return NULL;
+- return (__sum16 *) (greh+sizeof(*greh));
+-}
+-
+ #endif /* __KERNEL__ */
+
+ #endif /* _CONNTRACK_PROTO_GRE_H */
+diff --git a/kernel/cpuset.c b/kernel/cpuset.c
+index f382b0f..9e45dd1 100644
+--- a/kernel/cpuset.c
++++ b/kernel/cpuset.c
+@@ -1751,12 +1751,7 @@ static ssize_t cpuset_tasks_read(struct file *file, char __user *buf,
+ {
+ struct ctr_struct *ctr = file->private_data;
+
+- if (*ppos + nbytes > ctr->bufsz)
+- nbytes = ctr->bufsz - *ppos;
+- if (copy_to_user(buf, ctr->buf + *ppos, nbytes))
+- return -EFAULT;
+- *ppos += nbytes;
+- return nbytes;
++ return simple_read_from_buffer(buf, nbytes, ppos, ctr->buf, ctr->bufsz);
+ }
+
+ static int cpuset_tasks_release(struct inode *unused_inode, struct file *file)
+diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
+index fe5c7db..5baee91 100644
+--- a/kernel/time/clocksource.c
++++ b/kernel/time/clocksource.c
+@@ -74,6 +74,8 @@ static struct clocksource *watchdog;
+ static struct timer_list watchdog_timer;
+ static DEFINE_SPINLOCK(watchdog_lock);
+ static cycle_t watchdog_last;
++static int watchdog_resumed;
++
+ /*
+ * Interval: 0.5sec Treshold: 0.0625s
+ */
+@@ -98,15 +100,26 @@ static void clocksource_watchdog(unsigned long data)
+ struct clocksource *cs, *tmp;
+ cycle_t csnow, wdnow;
+ int64_t wd_nsec, cs_nsec;
++ int resumed;
+
+ spin_lock(&watchdog_lock);
+
++ resumed = watchdog_resumed;
++ if (unlikely(resumed))
++ watchdog_resumed = 0;
++
+ wdnow = watchdog->read();
+ wd_nsec = cyc2ns(watchdog, (wdnow - watchdog_last) & watchdog->mask);
+ watchdog_last = wdnow;
+
+ list_for_each_entry_safe(cs, tmp, &watchdog_list, wd_list) {
+ csnow = cs->read();
++
++ if (unlikely(resumed)) {
++ cs->wd_last = csnow;
++ continue;
++ }
++
+ /* Initialized ? */
+ if (!(cs->flags & CLOCK_SOURCE_WATCHDOG)) {
+ if ((cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) &&
+@@ -136,6 +149,13 @@ static void clocksource_watchdog(unsigned long data)
+ }
+ spin_unlock(&watchdog_lock);
+ }
++static void clocksource_resume_watchdog(void)
++{
++ spin_lock(&watchdog_lock);
++ watchdog_resumed = 1;
++ spin_unlock(&watchdog_lock);
++}
++
+ static void clocksource_check_watchdog(struct clocksource *cs)
+ {
+ struct clocksource *cse;
+@@ -182,9 +202,34 @@ static void clocksource_check_watchdog(struct clocksource *cs)
+ if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS)
+ cs->flags |= CLOCK_SOURCE_VALID_FOR_HRES;
+ }
++
++static inline void clocksource_resume_watchdog(void) { }
+ #endif
+
+ /**
++ * clocksource_resume - resume the clocksource(s)
++ */
++void clocksource_resume(void)
++{
++ struct list_head *tmp;
++ unsigned long flags;
++
++ spin_lock_irqsave(&clocksource_lock, flags);
++
++ list_for_each(tmp, &clocksource_list) {
++ struct clocksource *cs;
++
++ cs = list_entry(tmp, struct clocksource, list);
++ if (cs->resume)
++ cs->resume();
++ }
++
++ clocksource_resume_watchdog();
++
++ spin_unlock_irqrestore(&clocksource_lock, flags);
++}
++
++/**
+ * clocksource_get_next - Returns the selected clocksource
+ *
+ */
+diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
+index bfda3f7..a96ec9a 100644
+--- a/kernel/time/tick-common.c
++++ b/kernel/time/tick-common.c
+@@ -31,7 +31,7 @@ DEFINE_PER_CPU(struct tick_device, tick_cpu_device);
+ */
+ ktime_t tick_next_period;
+ ktime_t tick_period;
+-static int tick_do_timer_cpu = -1;
++int tick_do_timer_cpu __read_mostly = -1;
+ DEFINE_SPINLOCK(tick_device_lock);
+
+ /*
+@@ -295,6 +295,12 @@ static void tick_shutdown(unsigned int *cpup)
+ clockevents_exchange_device(dev, NULL);
+ td->evtdev = NULL;
+ }
++ /* Transfer the do_timer job away from this cpu */
++ if (*cpup == tick_do_timer_cpu) {
++ int cpu = first_cpu(cpu_online_map);
++
++ tick_do_timer_cpu = (cpu != NR_CPUS) ? cpu : -1;
++ }
+ spin_unlock_irqrestore(&tick_device_lock, flags);
+ }
+
+diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
+index c9d203b..bb13f27 100644
+--- a/kernel/time/tick-internal.h
++++ b/kernel/time/tick-internal.h
+@@ -5,6 +5,7 @@ DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
+ extern spinlock_t tick_device_lock;
+ extern ktime_t tick_next_period;
+ extern ktime_t tick_period;
++extern int tick_do_timer_cpu __read_mostly;
+
+ extern void tick_setup_periodic(struct clock_event_device *dev, int broadcast);
+ extern void tick_handle_periodic(struct clock_event_device *dev);
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index 51556b9..f4fc867 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -221,6 +221,18 @@ void tick_nohz_stop_sched_tick(void)
+ ts->tick_stopped = 1;
+ ts->idle_jiffies = last_jiffies;
+ }
++
++ /*
++ * If this cpu is the one which updates jiffies, then
++ * give up the assignment and let it be taken by the
++ * cpu which runs the tick timer next, which might be
++ * this cpu as well. If we don't drop this here the
++ * jiffies might be stale and do_timer() never
++ * invoked.
++ */
++ if (cpu == tick_do_timer_cpu)
++ tick_do_timer_cpu = -1;
++
+ /*
+ * calculate the expiry time for the next timer wheel
+ * timer
+@@ -338,12 +350,24 @@ static void tick_nohz_handler(struct clock_event_device *dev)
+ {
+ struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched);
+ struct pt_regs *regs = get_irq_regs();
++ int cpu = smp_processor_id();
+ ktime_t now = ktime_get();
+
+ dev->next_event.tv64 = KTIME_MAX;
+
++ /*
++ * Check if the do_timer duty was dropped. We don't care about
++ * concurrency: This happens only when the cpu in charge went
++ * into a long sleep. If two cpus happen to assign themself to
++ * this duty, then the jiffies update is still serialized by
++ * xtime_lock.
++ */
++ if (unlikely(tick_do_timer_cpu == -1))
++ tick_do_timer_cpu = cpu;
++
+ /* Check, if the jiffies need an update */
+- tick_do_update_jiffies64(now);
++ if (tick_do_timer_cpu == cpu)
++ tick_do_update_jiffies64(now);
+
+ /*
+ * When we are idle and the tick is stopped, we have to touch
+@@ -431,9 +455,23 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer)
+ struct hrtimer_cpu_base *base = timer->base->cpu_base;
+ struct pt_regs *regs = get_irq_regs();
+ ktime_t now = ktime_get();
++ int cpu = smp_processor_id();
++
++#ifdef CONFIG_NO_HZ
++ /*
++ * Check if the do_timer duty was dropped. We don't care about
++ * concurrency: This happens only when the cpu in charge went
++ * into a long sleep. If two cpus happen to assign themself to
++ * this duty, then the jiffies update is still serialized by
++ * xtime_lock.
++ */
++ if (unlikely(tick_do_timer_cpu == -1))
++ tick_do_timer_cpu = cpu;
++#endif
+
+ /* Check, if the jiffies need an update */
+- tick_do_update_jiffies64(now);
++ if (tick_do_timer_cpu == cpu)
++ tick_do_update_jiffies64(now);
+
+ /*
+ * Do not call, when we are not in irq context and have
+diff --git a/kernel/timer.c b/kernel/timer.c
+index dd6c2c1..e045774 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1903,6 +1903,8 @@ unregister_time_interpolator(struct time_interpolator *ti)
+ prev = &curr->next;
+ }
+
++ clocksource_resume();
++
+ write_seqlock_irqsave(&xtime_lock, flags);
+ if (ti == time_interpolator) {
+ /* we lost the best time-interpolator: */
+diff --git a/lib/zlib_inflate/inflate.c b/lib/zlib_inflate/inflate.c
+index fceb97c..7e1e311 100644
+--- a/lib/zlib_inflate/inflate.c
++++ b/lib/zlib_inflate/inflate.c
+@@ -743,12 +743,14 @@ int zlib_inflate(z_streamp strm, int flush)
+
+ strm->data_type = state->bits + (state->last ? 64 : 0) +
+ (state->mode == TYPE ? 128 : 0);
+- if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
+- ret = Z_BUF_ERROR;
+
+ if (flush == Z_PACKET_FLUSH && ret == Z_OK &&
+- (strm->avail_out != 0 || strm->avail_in == 0))
++ strm->avail_out != 0 && strm->avail_in == 0)
+ return zlib_inflateSyncPacket(strm);
++
++ if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
++ ret = Z_BUF_ERROR;
++
+ return ret;
+ }
+
+diff --git a/mm/hugetlb.c b/mm/hugetlb.c
+index 36db012..88e708b 100644
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -140,6 +140,8 @@ static struct page *alloc_huge_page(struct vm_area_struct *vma,
+ return page;
+
+ fail:
++ if (vma->vm_flags & VM_MAYSHARE)
++ resv_huge_pages++;
+ spin_unlock(&hugetlb_lock);
+ return NULL;
+ }
+diff --git a/mm/oom_kill.c b/mm/oom_kill.c
+index 3791edf..b3a3dd6 100644
+--- a/mm/oom_kill.c
++++ b/mm/oom_kill.c
+@@ -397,6 +397,7 @@ void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask, int order)
+ struct task_struct *p;
+ unsigned long points = 0;
+ unsigned long freed = 0;
++ int constraint;
+
+ blocking_notifier_call_chain(&oom_notify_list, 0, &freed);
+ if (freed > 0)
+@@ -411,14 +412,15 @@ void out_of_memory(struct zonelist *zonelist, gfp_t gfp_mask, int order)
+ show_mem();
+ }
+
+- cpuset_lock();
+- read_lock(&tasklist_lock);
+-
+ /*
+ * Check if there were limitations on the allocation (only relevant for
+ * NUMA) that may require different handling.
+ */
+- switch (constrained_alloc(zonelist, gfp_mask)) {
++ constraint = constrained_alloc(zonelist, gfp_mask);
++ cpuset_lock();
++ read_lock(&tasklist_lock);
++
++ switch (constraint) {
+ case CONSTRAINT_MEMORY_POLICY:
+ oom_kill_process(current, points,
+ "No available memory (MPOL_BIND)");
+diff --git a/mm/slob.c b/mm/slob.c
+index 5adc29c..c683d35 100644
+--- a/mm/slob.c
++++ b/mm/slob.c
+@@ -150,15 +150,6 @@ static void slob_free(void *block, int size)
+ spin_unlock_irqrestore(&slob_lock, flags);
+ }
+
+-static int FASTCALL(find_order(int size));
+-static int fastcall find_order(int size)
+-{
+- int order = 0;
+- for ( ; size > 4096 ; size >>=1)
+- order++;
+- return order;
+-}
+-
+ void *__kmalloc(size_t size, gfp_t gfp)
+ {
+ slob_t *m;
+@@ -174,7 +165,7 @@ void *__kmalloc(size_t size, gfp_t gfp)
+ if (!bb)
+ return 0;
+
+- bb->order = find_order(size);
++ bb->order = get_order(size);
+ bb->pages = (void *)__get_free_pages(gfp, bb->order);
+
+ if (bb->pages) {
+@@ -284,7 +275,7 @@ void *kmem_cache_alloc(struct kmem_cache *c, gfp_t flags)
+ if (c->size < PAGE_SIZE)
+ b = slob_alloc(c->size, flags, c->align);
+ else
+- b = (void *)__get_free_pages(flags, find_order(c->size));
++ b = (void *)__get_free_pages(flags, get_order(c->size));
+
+ if (c->ctor)
+ c->ctor(b, c, SLAB_CTOR_CONSTRUCTOR);
+@@ -311,7 +302,7 @@ void kmem_cache_free(struct kmem_cache *c, void *b)
+ if (c->size < PAGE_SIZE)
+ slob_free(b, c->size);
+ else
+- free_pages((unsigned long)b, find_order(c->size));
++ free_pages((unsigned long)b, get_order(c->size));
+ }
+ EXPORT_SYMBOL(kmem_cache_free);
+
+diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
+index cac06c4..444a56b 100644
+--- a/net/ipv4/fib_frontend.c
++++ b/net/ipv4/fib_frontend.c
+@@ -777,6 +777,10 @@ static void nl_fib_lookup(struct fib_result_nl *frn, struct fib_table *tb )
+ .tos = frn->fl_tos,
+ .scope = frn->fl_scope } } };
+
++#ifdef CONFIG_IP_MULTIPLE_TABLES
++ res.r = NULL;
++#endif
++
+ frn->err = -ENOENT;
+ if (tb) {
+ local_bh_disable();
+diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c
+index 23b99ae..75bd597 100644
+--- a/net/ipv4/netfilter/ip_conntrack_core.c
++++ b/net/ipv4/netfilter/ip_conntrack_core.c
+@@ -302,7 +302,6 @@ destroy_conntrack(struct nf_conntrack *nfct)
+ {
+ struct ip_conntrack *ct = (struct ip_conntrack *)nfct;
+ struct ip_conntrack_protocol *proto;
+- struct ip_conntrack_helper *helper;
+ typeof(ip_conntrack_destroyed) destroyed;
+
+ DEBUGP("destroy_conntrack(%p)\n", ct);
+@@ -312,10 +311,6 @@ destroy_conntrack(struct nf_conntrack *nfct)
+ ip_conntrack_event(IPCT_DESTROY, ct);
+ set_bit(IPS_DYING_BIT, &ct->status);
+
+- helper = ct->helper;
+- if (helper && helper->destroy)
+- helper->destroy(ct);
+-
+ /* To make sure we don't get any weird locking issues here:
+ * destroy_conntrack() MUST NOT be called with a write lock
+ * to ip_conntrack_lock!!! -HW */
+@@ -356,6 +351,11 @@ destroy_conntrack(struct nf_conntrack *nfct)
+ static void death_by_timeout(unsigned long ul_conntrack)
+ {
+ struct ip_conntrack *ct = (void *)ul_conntrack;
++ struct ip_conntrack_helper *helper;
++
++ helper = ct->helper;
++ if (helper && helper->destroy)
++ helper->destroy(ct);
+
+ write_lock_bh(&ip_conntrack_lock);
+ /* Inside lock so preempt is disabled on module removal path.
+diff --git a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
+index e694299..b86479a 100644
+--- a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
++++ b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
+@@ -460,7 +460,8 @@ static int sctp_new(struct ip_conntrack *conntrack,
+ SCTP_CONNTRACK_NONE, sch->type);
+
+ /* Invalid: delete conntrack */
+- if (newconntrack == SCTP_CONNTRACK_MAX) {
++ if (newconntrack == SCTP_CONNTRACK_NONE ||
++ newconntrack == SCTP_CONNTRACK_MAX) {
+ DEBUGP("ip_conntrack_sctp: invalid new deleting.\n");
+ return 0;
+ }
+diff --git a/net/ipv4/netfilter/ip_nat_proto_gre.c b/net/ipv4/netfilter/ip_nat_proto_gre.c
+index 9581020..e3146a3 100644
+--- a/net/ipv4/netfilter/ip_nat_proto_gre.c
++++ b/net/ipv4/netfilter/ip_nat_proto_gre.c
+@@ -70,6 +70,11 @@ gre_unique_tuple(struct ip_conntrack_tuple *tuple,
+ __be16 *keyptr;
+ unsigned int min, i, range_size;
+
++ /* If there is no master conntrack we are not PPTP,
++ do not change tuples */
++ if (!conntrack->master)
++ return 0;
++
+ if (maniptype == IP_NAT_MANIP_SRC)
+ keyptr = &tuple->src.u.gre.key;
+ else
+@@ -122,18 +127,9 @@ gre_manip_pkt(struct sk_buff **pskb,
+ if (maniptype == IP_NAT_MANIP_DST) {
+ /* key manipulation is always dest */
+ switch (greh->version) {
+- case 0:
+- if (!greh->key) {
+- DEBUGP("can't nat GRE w/o key\n");
+- break;
+- }
+- if (greh->csum) {
+- /* FIXME: Never tested this code... */
+- nf_proto_csum_replace4(gre_csum(greh), *pskb,
+- *(gre_key(greh)),
+- tuple->dst.u.gre.key, 0);
+- }
+- *(gre_key(greh)) = tuple->dst.u.gre.key;
++ case GRE_VERSION_1701:
++ /* We do not currently NAT any GREv0 packets.
++ * Try to behave like "ip_nat_proto_unknown" */
+ break;
+ case GRE_VERSION_PPTP:
+ DEBUGP("call_id -> 0x%04x\n",
+diff --git a/net/ipv4/netfilter/nf_nat_proto_gre.c b/net/ipv4/netfilter/nf_nat_proto_gre.c
+index e5a34c1..ca3ff84 100644
+--- a/net/ipv4/netfilter/nf_nat_proto_gre.c
++++ b/net/ipv4/netfilter/nf_nat_proto_gre.c
+@@ -72,6 +72,11 @@ gre_unique_tuple(struct nf_conntrack_tuple *tuple,
+ __be16 *keyptr;
+ unsigned int min, i, range_size;
+
++ /* If there is no master conntrack we are not PPTP,
++ do not change tuples */
++ if (!conntrack->master)
++ return 0;
++
+ if (maniptype == IP_NAT_MANIP_SRC)
+ keyptr = &tuple->src.u.gre.key;
+ else
+@@ -122,18 +127,9 @@ gre_manip_pkt(struct sk_buff **pskb, unsigned int iphdroff,
+ if (maniptype != IP_NAT_MANIP_DST)
+ return 1;
+ switch (greh->version) {
+- case 0:
+- if (!greh->key) {
+- DEBUGP("can't nat GRE w/o key\n");
+- break;
+- }
+- if (greh->csum) {
+- /* FIXME: Never tested this code... */
+- nf_proto_csum_replace4(gre_csum(greh), *pskb,
+- *(gre_key(greh)),
+- tuple->dst.u.gre.key, 0);
+- }
+- *(gre_key(greh)) = tuple->dst.u.gre.key;
++ case GRE_VERSION_1701:
++ /* We do not currently NAT any GREv0 packets.
++ * Try to behave like "nf_nat_proto_unknown" */
+ break;
+ case GRE_VERSION_PPTP:
+ DEBUGP("call_id -> 0x%04x\n", ntohs(tuple->dst.u.gre.key));
+diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
+index 3834b10..824c6b9 100644
+--- a/net/ipv4/tcp.c
++++ b/net/ipv4/tcp.c
+@@ -1759,8 +1759,7 @@ int tcp_disconnect(struct sock *sk, int flags)
+ tcp_clear_retrans(tp);
+ inet_csk_delack_init(sk);
+ sk->sk_send_head = NULL;
+- tp->rx_opt.saw_tstamp = 0;
+- tcp_sack_reset(&tp->rx_opt);
++ memset(&tp->rx_opt, 0, sizeof(tp->rx_opt));
+ __sk_dst_reset(sk);
+
+ BUG_TRAP(!inet->num || icsk->icsk_bind_hash);
+diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
+index 452a82c..a541137 100644
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
+@@ -2281,8 +2281,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
+ break;
+
+ case NETDEV_CHANGENAME:
+-#ifdef CONFIG_SYSCTL
+ if (idev) {
++ snmp6_unregister_dev(idev);
++#ifdef CONFIG_SYSCTL
+ addrconf_sysctl_unregister(&idev->cnf);
+ neigh_sysctl_unregister(idev->nd_parms);
+ neigh_sysctl_register(dev, idev->nd_parms,
+@@ -2290,8 +2291,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
+ &ndisc_ifinfo_sysctl_change,
+ NULL);
+ addrconf_sysctl_register(idev, &idev->cnf);
+- }
+ #endif
++ snmp6_register_dev(idev);
++ }
+ break;
+ };
+
+@@ -4060,6 +4062,10 @@ int __init addrconf_init(void)
+ return err;
+
+ ip6_null_entry.rt6i_idev = in6_dev_get(&loopback_dev);
++#ifdef CONFIG_IPV6_MULTIPLE_TABLES
++ ip6_prohibit_entry.rt6i_idev = in6_dev_get(&loopback_dev);
++ ip6_blk_hole_entry.rt6i_idev = in6_dev_get(&loopback_dev);
++#endif
+
+ register_netdevice_notifier(&ipv6_dev_notf);
+
+diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
+index fb39604..794b930 100644
+--- a/net/ipv6/exthdrs.c
++++ b/net/ipv6/exthdrs.c
+@@ -396,6 +396,7 @@ static int ipv6_rthdr_rcv(struct sk_buff **skbp)
+
+ switch (hdr->type) {
+ #ifdef CONFIG_IPV6_MIP6
++ case IPV6_SRCRT_TYPE_2:
+ break;
+ #endif
+ case IPV6_SRCRT_TYPE_0:
+@@ -651,6 +652,14 @@ EXPORT_SYMBOL_GPL(ipv6_invert_rthdr);
+ Hop-by-hop options.
+ **********************************/
+
++/*
++ * Note: we cannot rely on skb->dst before we assign it in ip6_route_input().
++ */
++static inline struct inet6_dev *ipv6_skb_idev(struct sk_buff *skb)
++{
++ return skb->dst ? ip6_dst_idev(skb->dst) : __in6_dev_get(skb->dev);
++}
++
+ /* Router Alert as of RFC 2711 */
+
+ static int ipv6_hop_ra(struct sk_buff **skbp, int optoff)
+@@ -677,25 +686,25 @@ static int ipv6_hop_jumbo(struct sk_buff **skbp, int optoff)
+ if (skb->nh.raw[optoff+1] != 4 || (optoff&3) != 2) {
+ LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n",
+ skb->nh.raw[optoff+1]);
+- IP6_INC_STATS_BH(ip6_dst_idev(skb->dst),
++ IP6_INC_STATS_BH(ipv6_skb_idev(skb),
+ IPSTATS_MIB_INHDRERRORS);
+ goto drop;
+ }
+
+ pkt_len = ntohl(*(__be32*)(skb->nh.raw+optoff+2));
+ if (pkt_len <= IPV6_MAXPLEN) {
+- IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS);
++ IP6_INC_STATS_BH(ipv6_skb_idev(skb), IPSTATS_MIB_INHDRERRORS);
+ icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff+2);
+ return 0;
+ }
+ if (skb->nh.ipv6h->payload_len) {
+- IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INHDRERRORS);
++ IP6_INC_STATS_BH(ipv6_skb_idev(skb), IPSTATS_MIB_INHDRERRORS);
+ icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff);
+ return 0;
+ }
+
+ if (pkt_len > skb->len - sizeof(struct ipv6hdr)) {
+- IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INTRUNCATEDPKTS);
++ IP6_INC_STATS_BH(ipv6_skb_idev(skb), IPSTATS_MIB_INTRUNCATEDPKTS);
+ goto drop;
+ }
+
+diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
+index 61e7a6c..1b34ee5 100644
+--- a/net/ipv6/ip6_input.c
++++ b/net/ipv6/ip6_input.c
+@@ -235,7 +235,7 @@ int ip6_mc_input(struct sk_buff *skb)
+ IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS);
+
+ hdr = skb->nh.ipv6h;
+- deliver = likely(!(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI))) ||
++ deliver = unlikely(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI)) ||
+ ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL);
+
+ /*
+diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
+index 3055169..9fa3ffb 100644
+--- a/net/ipv6/ip6_output.c
++++ b/net/ipv6/ip6_output.c
+@@ -449,10 +449,17 @@ int ip6_forward(struct sk_buff *skb)
+ */
+ if (xrlim_allow(dst, 1*HZ))
+ ndisc_send_redirect(skb, n, target);
+- } else if (ipv6_addr_type(&hdr->saddr)&(IPV6_ADDR_MULTICAST|IPV6_ADDR_LOOPBACK
+- |IPV6_ADDR_LINKLOCAL)) {
++ } else {
++ int addrtype = ipv6_addr_type(&hdr->saddr);
++
+ /* This check is security critical. */
+- goto error;
++ if (addrtype & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LOOPBACK))
++ goto error;
++ if (addrtype & IPV6_ADDR_LINKLOCAL) {
++ icmpv6_send(skb, ICMPV6_DEST_UNREACH,
++ ICMPV6_NOT_NEIGHBOUR, 0, skb->dev);
++ goto error;
++ }
+ }
+
+ if (skb->len > dst_mtu(dst)) {
+diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c
+index fa3fb50..d57853d 100644
+--- a/net/ipv6/proc.c
++++ b/net/ipv6/proc.c
+@@ -236,6 +236,7 @@ int snmp6_unregister_dev(struct inet6_dev *idev)
+ return -EINVAL;
+ remove_proc_entry(idev->stats.proc_dir_entry->name,
+ proc_net_devsnmp6);
++ idev->stats.proc_dir_entry = NULL;
+ return 0;
+ }
+
+diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c
+index 93c4223..dff33cc 100644
+--- a/net/ipv6/xfrm6_tunnel.c
++++ b/net/ipv6/xfrm6_tunnel.c
+@@ -261,7 +261,7 @@ static int xfrm6_tunnel_rcv(struct sk_buff *skb)
+ __be32 spi;
+
+ spi = xfrm6_tunnel_spi_lookup((xfrm_address_t *)&iph->saddr);
+- return xfrm6_rcv_spi(skb, spi);
++ return xfrm6_rcv_spi(skb, spi) > 0 ? : 0;
+ }
+
+ static int xfrm6_tunnel_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
+diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
+index b3a70eb..ce28fdd 100644
+--- a/net/netfilter/nf_conntrack_core.c
++++ b/net/netfilter/nf_conntrack_core.c
+@@ -315,7 +315,6 @@ static void
+ destroy_conntrack(struct nf_conntrack *nfct)
+ {
+ struct nf_conn *ct = (struct nf_conn *)nfct;
+- struct nf_conn_help *help = nfct_help(ct);
+ struct nf_conntrack_l3proto *l3proto;
+ struct nf_conntrack_l4proto *l4proto;
+ typeof(nf_conntrack_destroyed) destroyed;
+@@ -327,9 +326,6 @@ destroy_conntrack(struct nf_conntrack *nfct)
+ nf_conntrack_event(IPCT_DESTROY, ct);
+ set_bit(IPS_DYING_BIT, &ct->status);
+
+- if (help && help->helper && help->helper->destroy)
+- help->helper->destroy(ct);
+-
+ /* To make sure we don't get any weird locking issues here:
+ * destroy_conntrack() MUST NOT be called with a write lock
+ * to nf_conntrack_lock!!! -HW */
+@@ -375,6 +371,10 @@ destroy_conntrack(struct nf_conntrack *nfct)
+ static void death_by_timeout(unsigned long ul_conntrack)
+ {
+ struct nf_conn *ct = (void *)ul_conntrack;
++ struct nf_conn_help *help = nfct_help(ct);
++
++ if (help && help->helper && help->helper->destroy)
++ help->helper->destroy(ct);
+
+ write_lock_bh(&nf_conntrack_lock);
+ /* Inside lock so preempt is disabled on module removal path.
+diff --git a/net/netfilter/nf_conntrack_proto_sctp.c b/net/netfilter/nf_conntrack_proto_sctp.c
+index 3c80558..b53bc64 100644
+--- a/net/netfilter/nf_conntrack_proto_sctp.c
++++ b/net/netfilter/nf_conntrack_proto_sctp.c
+@@ -469,7 +469,8 @@ static int sctp_new(struct nf_conn *conntrack, const struct sk_buff *skb,
+ SCTP_CONNTRACK_NONE, sch->type);
+
+ /* Invalid: delete conntrack */
+- if (newconntrack == SCTP_CONNTRACK_MAX) {
++ if (newconntrack == SCTP_CONNTRACK_NONE ||
++ newconntrack == SCTP_CONNTRACK_MAX) {
+ DEBUGP("nf_conntrack_sctp: invalid new deleting.\n");
+ return 0;
+ }
+diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c
+index de889f2..a86f36b 100644
+--- a/net/sched/sch_prio.c
++++ b/net/sched/sch_prio.c
+@@ -74,7 +74,7 @@ prio_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
+ band = res.classid;
+ }
+ band = TC_H_MIN(band) - 1;
+- if (band > q->bands)
++ if (band >= q->bands)
+ return q->queues[q->prio2band[0]];
+
+ return q->queues[band];
+diff --git a/net/sctp/socket.c b/net/sctp/socket.c
+index a1d026f..843c928 100644
+--- a/net/sctp/socket.c
++++ b/net/sctp/socket.c
+@@ -3847,7 +3847,7 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len,
+ memcpy(&temp, &from->ipaddr, sizeof(temp));
+ sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
+ addrlen = sctp_get_af_specific(sk->sk_family)->sockaddr_len;
+- if(space_left < addrlen)
++ if (space_left < addrlen)
+ return -ENOMEM;
+ if (copy_to_user(to, &temp, addrlen))
+ return -EFAULT;
+@@ -3936,8 +3936,9 @@ done:
+ /* Helper function that copies local addresses to user and returns the number
+ * of addresses copied.
+ */
+-static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_addrs,
+- void __user *to)
++static int sctp_copy_laddrs_old(struct sock *sk, __u16 port,
++ int max_addrs, void *to,
++ int *bytes_copied)
+ {
+ struct list_head *pos, *next;
+ struct sctp_sockaddr_entry *addr;
+@@ -3954,10 +3955,10 @@ static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_add
+ sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
+ &temp);
+ addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
+- if (copy_to_user(to, &temp, addrlen))
+- return -EFAULT;
++ memcpy(to, &temp, addrlen);
+
+ to += addrlen;
++ *bytes_copied += addrlen;
+ cnt ++;
+ if (cnt >= max_addrs) break;
+ }
+@@ -3965,8 +3966,8 @@ static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_add
+ return cnt;
+ }
+
+-static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port,
+- void __user **to, size_t space_left)
++static int sctp_copy_laddrs(struct sock *sk, __u16 port, void *to,
++ size_t space_left, int *bytes_copied)
+ {
+ struct list_head *pos, *next;
+ struct sctp_sockaddr_entry *addr;
+@@ -3983,14 +3984,14 @@ static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port,
+ sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk),
+ &temp);
+ addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
+- if(space_left<addrlen)
++ if (space_left < addrlen)
+ return -ENOMEM;
+- if (copy_to_user(*to, &temp, addrlen))
+- return -EFAULT;
++ memcpy(to, &temp, addrlen);
+
+- *to += addrlen;
++ to += addrlen;
+ cnt ++;
+ space_left -= addrlen;
++ bytes_copied += addrlen;
+ }
+
+ return cnt;
+@@ -4014,6 +4015,9 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,
+ int addrlen;
+ rwlock_t *addr_lock;
+ int err = 0;
++ void *addrs;
++ void *buf;
++ int bytes_copied = 0;
+
+ if (len != sizeof(struct sctp_getaddrs_old))
+ return -EINVAL;
+@@ -4041,6 +4045,15 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,
+
+ to = getaddrs.addrs;
+
++ /* Allocate space for a local instance of packed array to hold all
++ * the data. We store addresses here first and then put write them
++ * to the user in one shot.
++ */
++ addrs = kmalloc(sizeof(union sctp_addr) * getaddrs.addr_num,
++ GFP_KERNEL);
++ if (!addrs)
++ return -ENOMEM;
++
+ sctp_read_lock(addr_lock);
+
+ /* If the endpoint is bound to 0.0.0.0 or ::0, get the valid
+@@ -4050,38 +4063,42 @@ static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len,
+ addr = list_entry(bp->address_list.next,
+ struct sctp_sockaddr_entry, list);
+ if (sctp_is_any(&addr->a)) {
+- cnt = sctp_copy_laddrs_to_user_old(sk, bp->port,
+- getaddrs.addr_num,
+- to);
+- if (cnt < 0) {
+- err = cnt;
+- goto unlock;
+- }
++ cnt = sctp_copy_laddrs_old(sk, bp->port,
++ getaddrs.addr_num,
++ addrs, &bytes_copied);
+ goto copy_getaddrs;
+ }
+ }
+
++ buf = addrs;
+ list_for_each(pos, &bp->address_list) {
+ addr = list_entry(pos, struct sctp_sockaddr_entry, list);
+ memcpy(&temp, &addr->a, sizeof(temp));
+ sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
+ addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
+- if (copy_to_user(to, &temp, addrlen)) {
+- err = -EFAULT;
+- goto unlock;
+- }
+- to += addrlen;
++ memcpy(buf, &temp, addrlen);
++ buf += addrlen;
++ bytes_copied += addrlen;
+ cnt ++;
+ if (cnt >= getaddrs.addr_num) break;
+ }
+
+ copy_getaddrs:
++ sctp_read_unlock(addr_lock);
++
++ /* copy the entire address list into the user provided space */
++ if (copy_to_user(to, addrs, bytes_copied)) {
++ err = -EFAULT;
++ goto error;
++ }
++
++ /* copy the leading structure back to user */
+ getaddrs.addr_num = cnt;
+ if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs_old)))
+ err = -EFAULT;
+
+-unlock:
+- sctp_read_unlock(addr_lock);
++error:
++ kfree(addrs);
+ return err;
+ }
+
+@@ -4101,7 +4118,9 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
+ rwlock_t *addr_lock;
+ int err = 0;
+ size_t space_left;
+- int bytes_copied;
++ int bytes_copied = 0;
++ void *addrs;
++ void *buf;
+
+ if (len <= sizeof(struct sctp_getaddrs))
+ return -EINVAL;
+@@ -4129,6 +4148,9 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
+ to = optval + offsetof(struct sctp_getaddrs,addrs);
+ space_left = len - sizeof(struct sctp_getaddrs) -
+ offsetof(struct sctp_getaddrs,addrs);
++ addrs = kmalloc(space_left, GFP_KERNEL);
++ if (!addrs)
++ return -ENOMEM;
+
+ sctp_read_lock(addr_lock);
+
+@@ -4139,41 +4161,47 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
+ addr = list_entry(bp->address_list.next,
+ struct sctp_sockaddr_entry, list);
+ if (sctp_is_any(&addr->a)) {
+- cnt = sctp_copy_laddrs_to_user(sk, bp->port,
+- &to, space_left);
++ cnt = sctp_copy_laddrs(sk, bp->port, addrs,
++ space_left, &bytes_copied);
+ if (cnt < 0) {
+ err = cnt;
+- goto unlock;
++ goto error;
+ }
+ goto copy_getaddrs;
+ }
+ }
+
++ buf = addrs;
+ list_for_each(pos, &bp->address_list) {
+ addr = list_entry(pos, struct sctp_sockaddr_entry, list);
+ memcpy(&temp, &addr->a, sizeof(temp));
+ sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp);
+ addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len;
+- if(space_left < addrlen)
+- return -ENOMEM; /*fixme: right error?*/
+- if (copy_to_user(to, &temp, addrlen)) {
+- err = -EFAULT;
+- goto unlock;
++ if (space_left < addrlen) {
++ err = -ENOMEM; /*fixme: right error?*/
++ goto error;
+ }
+- to += addrlen;
++ memcpy(buf, &temp, addrlen);
++ buf += addrlen;
++ bytes_copied += addrlen;
+ cnt ++;
+ space_left -= addrlen;
+ }
+
+ copy_getaddrs:
++ sctp_read_unlock(addr_lock);
++
++ if (copy_to_user(to, addrs, bytes_copied)) {
++ err = -EFAULT;
++ goto error;
++ }
+ if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num))
+ return -EFAULT;
+- bytes_copied = ((char __user *)to) - optval;
+ if (put_user(bytes_copied, optlen))
+ return -EFAULT;
+
+-unlock:
+- sctp_read_unlock(addr_lock);
++error:
++ kfree(addrs);
+ return err;
+ }
+
+@@ -4961,7 +4989,12 @@ int sctp_inet_listen(struct socket *sock, int backlog)
+ /* Allocate HMAC for generating cookie. */
+ if (sctp_hmac_alg) {
+ tfm = crypto_alloc_hash(sctp_hmac_alg, 0, CRYPTO_ALG_ASYNC);
+- if (!tfm) {
++ if (IS_ERR(tfm)) {
++ if (net_ratelimit()) {
++ printk(KERN_INFO
++ "SCTP: failed to load transform for %s: %ld\n",
++ sctp_hmac_alg, PTR_ERR(tfm));
++ }
+ err = -ENOSYS;
+ goto out;
+ }
+diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
+index db298b5..c678f5f 100644
+--- a/net/sunrpc/auth_gss/svcauth_gss.c
++++ b/net/sunrpc/auth_gss/svcauth_gss.c
+@@ -1196,13 +1196,7 @@ svcauth_gss_wrap_resp_integ(struct svc_rqst *rqstp)
+ if (xdr_buf_subsegment(resbuf, &integ_buf, integ_offset,
+ integ_len))
+ BUG();
+- if (resbuf->page_len == 0
+- && resbuf->head[0].iov_len + RPC_MAX_AUTH_SIZE
+- < PAGE_SIZE) {
+- BUG_ON(resbuf->tail[0].iov_len);
+- /* Use head for everything */
+- resv = &resbuf->head[0];
+- } else if (resbuf->tail[0].iov_base == NULL) {
++ if (resbuf->tail[0].iov_base == NULL) {
+ if (resbuf->head[0].iov_len + RPC_MAX_AUTH_SIZE > PAGE_SIZE)
+ goto out_err;
+ resbuf->tail[0].iov_base = resbuf->head[0].iov_base
+diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
+index 785c3e3..ba89293 100644
+--- a/net/xfrm/xfrm_policy.c
++++ b/net/xfrm/xfrm_policy.c
+@@ -782,6 +782,10 @@ struct xfrm_policy *xfrm_policy_byid(u8 type, int dir, u32 id, int delete,
+ struct hlist_head *chain;
+ struct hlist_node *entry;
+
++ *err = -ENOENT;
++ if (xfrm_policy_id2dir(id) != dir)
++ return NULL;
++
+ *err = 0;
+ write_lock_bh(&xfrm_policy_lock);
+ chain = xfrm_policy_byidx + idx_hash(id);
+diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
+index 6bc7e7c..8912c0f 100644
+--- a/scripts/basic/fixdep.c
++++ b/scripts/basic/fixdep.c
+@@ -249,6 +249,8 @@ void parse_config_file(char *map, size_t len)
+ found:
+ if (!memcmp(q - 7, "_MODULE", 7))
+ q -= 7;
++ if( (q-p-7) < 0 )
++ continue;
+ use_config(p+7, q-p-7);
+ }
+ }
+diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
+index c94291b..a6f8992 100644
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -1751,6 +1751,7 @@ static int stac92xx_resume(struct hda_codec *codec)
+
+ stac92xx_init(codec);
+ stac92xx_set_config_regs(codec);
++ snd_hda_resume_ctls(codec, spec->mixer);
+ for (i = 0; i < spec->num_mixers; i++)
+ snd_hda_resume_ctls(codec, spec->mixers[i]);
+ if (spec->multiout.dig_out_nid)
diff --git a/packages/linux/linux-ezx-2.6.21/pcap-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch
index d2b44b3c9a..28b9c557d3 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/pcap-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-05-08 14:19:21.000000000 -0300
-+++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-05-08 14:22:21.000000000 -0300
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-06-02 20:17:58.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-06-02 20:18:40.000000000 -0300
@@ -164,4 +164,13 @@
To compile this driver as a module, choose M here: the
module will be called ucb1400_ts.
@@ -19,13 +19,14 @@ Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-05-08 14:28:43.000000000 -0300
-@@ -0,0 +1,375 @@
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-06-02 20:19:39.000000000 -0300
+@@ -0,0 +1,372 @@
+/*
+ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
+ * in the EZX phone platform.
+ *
+ * Copyright (C) 2006 Harald Welte <laforge@openezx.org>
++ * Copyright (C) 2007 Daniel Ribeiro <drwyrm@gmail.com>
+ *
+ * Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
+ *
@@ -33,10 +34,6 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
-+ * May 3, 2007 - Daniel Ribeiro <drwyrm@gmail.com>
-+ * Major cleanup
-+ * PM Callbacks
-+ *
+ * TODO:
+ * split this in a hardirq handler and a tasklet/bh
+ */
@@ -396,51 +393,10 @@ Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+MODULE_DESCRIPTION("Motorola PCAP2 touchscreen driver");
+MODULE_AUTHOR("Harald Welte <laforge@openezx.org>");
+MODULE_LICENSE("GPL");
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-08 14:19:21.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-08 14:52:47.000000000 -0300
-@@ -174,11 +174,36 @@
- .resource = ezxemu_resources,
- };
-
-+/* PCAP_TS */
-+struct resource pcap_ts_resources[] = {
-+ [0] = {
-+ .start = EZX_IRQ_ADCDONE2,
-+ .end = EZX_IRQ_ADCDONE2,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [1] = {
-+ .start = EZX_IRQ_TS,
-+ .end = EZX_IRQ_TS,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+struct platform_device pcap_ts_device = {
-+ .name = "pcap-ts",
-+ .id = -1,
-+ .dev = {
-+ .parent = &ezxpcap_device.dev,
-+ },
-+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
-+ .resource = pcap_ts_resources,
-+};
-+
- static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
- &ezxbp_device,
- &ezxpcap_device,
- &ezxemu_device,
-+ &pcap_ts_device,
- };
-
- /* PM */
Index: linux-2.6.21/drivers/input/touchscreen/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-05-08 14:19:21.000000000 -0300
-+++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-05-08 14:22:21.000000000 -0300
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile 2007-06-02 20:17:58.000000000 -0300
++++ linux-2.6.21/drivers/input/touchscreen/Makefile 2007-06-02 20:18:40.000000000 -0300
@@ -16,3 +16,4 @@
obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
diff --git a/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/pxa-kbd.patch
index 83a3585ba2..425a5b984c 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/pxa-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/pxa-kbd.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/generic.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/generic.c 2007-05-17 20:04:53.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/generic.c 2007-05-17 20:06:02.000000000 +0200
+--- linux-2.6.21.orig/arch/arm/mach-pxa/generic.c 2007-06-01 20:04:10.000000000 +0200
++++ linux-2.6.21/arch/arm/mach-pxa/generic.c 2007-06-01 20:04:45.000000000 +0200
@@ -42,6 +42,7 @@
#include <asm/arch/mmc.h>
#include <asm/arch/irda.h>
@@ -51,8 +51,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/generic.c
static int __init pxa_init(void)
Index: linux-2.6.21/drivers/input/keyboard/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/input/keyboard/Kconfig 2007-05-17 20:04:53.000000000 +0200
-+++ linux-2.6.21/drivers/input/keyboard/Kconfig 2007-05-17 20:06:02.000000000 +0200
+--- linux-2.6.21.orig/drivers/input/keyboard/Kconfig 2007-06-01 20:04:10.000000000 +0200
++++ linux-2.6.21/drivers/input/keyboard/Kconfig 2007-06-01 20:04:45.000000000 +0200
@@ -229,4 +229,11 @@
To compile this driver as a module, choose M here: the
module will be called gpio-keys.
@@ -67,8 +67,8 @@ Index: linux-2.6.21/drivers/input/keyboard/Kconfig
endif
Index: linux-2.6.21/drivers/input/keyboard/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/input/keyboard/Makefile 2007-05-17 20:04:53.000000000 +0200
-+++ linux-2.6.21/drivers/input/keyboard/Makefile 2007-05-17 20:06:02.000000000 +0200
+--- linux-2.6.21.orig/drivers/input/keyboard/Makefile 2007-06-01 20:04:10.000000000 +0200
++++ linux-2.6.21/drivers/input/keyboard/Makefile 2007-06-01 20:04:45.000000000 +0200
@@ -19,4 +19,4 @@
obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
obj-$(CONFIG_KEYBOARD_AAED2000) += aaed2000_kbd.o
@@ -78,7 +78,7 @@ Index: linux-2.6.21/drivers/input/keyboard/Makefile
Index: linux-2.6.21/include/asm-arm/arch-pxa/kbd.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/kbd.h 2007-05-17 20:06:02.000000000 +0200
++++ linux-2.6.21/include/asm-arm/arch-pxa/kbd.h 2007-06-01 20:04:45.000000000 +0200
@@ -0,0 +1,28 @@
+/*
+ * kbd_pxa.h
@@ -111,8 +111,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/kbd.h
Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-05-18 16:59:36.000000000 +0200
-@@ -0,0 +1,385 @@
++++ linux-2.6.21/drivers/input/keyboard/pxakbd.c 2007-06-02 10:41:13.000000000 +0200
+@@ -0,0 +1,403 @@
+/*
+ * Driver for Motorola EZX phone "keyboard"
+ *
@@ -182,25 +182,37 @@ Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+}
+
+/* read the full 8x8 matrix from the PXA27x keypad controller */
-+static void __read_matrix(u_int8_t *matrix)
++static inline void __read_matrix(u_int8_t *matrix)
+{
+ u_int32_t tmp;
++ u_int8_t row;
++
++ /* Fill the matrix by rows */
+
+ tmp = KPASMKP0;
-+ matrix[0] = tmp & 0x000000ff;
-+ matrix[1] = (tmp & 0x00ff0000) >> 16;
++ for (row=0; row<8; row++) {
++ /* zero the matrix on the first time, then keep ORing */
++ matrix[row] = ((tmp >> row) & 1);
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 1;
++ }
+
+ tmp = KPASMKP1;
-+ matrix[2] = tmp & 0x000000ff;
-+ matrix[3] = (tmp & 0x00ff0000) >> 16;
++ for (row=0; row<8; row++) {
++ matrix[row] |= ((tmp >> row) & 1) << 2;
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 3;
++ }
+
+ tmp = KPASMKP2;
-+ matrix[4] = tmp & 0x000000ff;
-+ matrix[5] = (tmp & 0x00ff0000) >> 16;
++ for (row=0; row<8; row++) {
++ matrix[row] |= ((tmp >> row) & 1) << 4;
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 5;
++ }
+
+ tmp = KPASMKP3;
-+ matrix[6] = tmp & 0x000000ff;
-+ matrix[7] = (tmp & 0x00ff0000) >> 16;
++ for (row=0; row<8; row++) {
++ matrix[row] |= ((tmp >> row) & 1) << 6;
++ matrix[row] |= ((tmp >> (16 + row)) & 1) << 7;
++ }
+}
+
+/* compare current matrix with last, generate 'diff' events */
@@ -327,6 +339,12 @@ Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+
+ int rows, cols, n_direct;
+
++ if (!pdev->dev.platform_data) {
++ printk(KERN_ERR "pxakbd: platform data not set\n");
++ ret = -ENODEV;
++ goto out;
++ }
++
+ pxakbd = kzalloc(sizeof(*pxakbd), GFP_KERNEL);
+ if (!pxakbd)
+ goto out;
@@ -500,8 +518,8 @@ Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-17 20:06:01.000000000 +0200
-+++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-05-17 20:06:02.000000000 +0200
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-01 20:04:45.000000000 +0200
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-01 20:04:45.000000000 +0200
@@ -2165,6 +2165,11 @@
#define KPMK_MKP (0x1 << 31)
#define KPAS_SO (0x1 << 31)
diff --git a/packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch b/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-support.2.patch
index d35e40f046..d35e40f046 100644..100755
--- a/packages/linux/linux-ezx-2.6.21/pxa27x-udc-support.2.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-support.2.patch
diff --git a/packages/linux/linux-ezx-2.6.21/patches/series b/packages/linux/linux-ezx-2.6.21/patches/series
new file mode 100755
index 0000000000..5580b74bf8
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/series
@@ -0,0 +1,93 @@
+patch-2.6.21.4
+
+ezx-core.patch
+# ezx-core TODO: should be ezx-common
+# look at the pxa-regs.h diff and put each definition on the proper patch
+# register a machine type for each phone model
+
+# enable this patch ONLY if you have STUART connected and dont forget
+# to change your cmdline if you want console on STUART.
+#ezx-enable-stuart.patch
+
+ezx-bp.patch
+# ezx-bp TODO:
+# try to run this as a module - this may solve timing issues for opentapi.
+# suspend/resume (not sure if it can be handled here)
+# implement 2nd gen handshake support
+# move platform device to ezx-phone.c
+
+ezx-pm.patch
+
+ezx-pcap.patch
+# ezx-pcap TODO:
+# implement a per board init reg array
+# move mmc functions to the ezx-phone.c mmc init
+# move vibrator level function to the vibrator driver
+
+
+a780-mci.patch
+e680-mci.patch
+a1200-mci.patch
+
+pxa27x-udc-support.2.patch
+
+ezx-emu.patch
+# ezx-emu TODO:
+# userspace interface for controling emu
+# read adc to find which accessory is plugged
+
+ezx-mtd-map.patch
+# ezx-mtd-map TODO:
+# at least the original partition should go on the ezx-phone.c file
+
+ezx-serial-bug-workaround.patch
+# ezx-serial-bug TODO:
+# does anyone have a phone with this bug?
+
+pxa-kbd.patch
+# pxa-kbd TODO:
+# test multi-key presses
+# ask Harald about driver status/sending mainline
+
+a780-kbd.patch
+e680-kbd.patch
+
+pcap-ts.patch
+a780-ts.patch
+e680-ts.patch
+a1200-ts.patch
+
+ezx-backlight.patch
+
+a780-flip.patch
+e680-locksw.patch
+
+a780-leds.patch
+e680-leds.patch
+
+a780-vibrator.patch
+
+# mux_cli patches
+mux_cli.patch
+mux-fix.patch
+mux-fix-init-errorpath.patch
+mux-remove-flipbuffers.patch
+mux-remove-get_halted_bit.patch
+mux-remove-usbh_finished_resume.patch
+mux-fix-makefile.patch
+mux-fix-tty-driver.patch
+mux-linux-2.6.21-fix.patch
+#mux-ifdef-ezx-features.patch
+#mux_debug.patch
+# mux_cli TODO:
+# merge patches
+# try to understand the code and cleanup (painful)
+
+# Global TODO:
+# compile everything as module and test for insmod/rmmod
+# can NOT run as module (yet)
+# pxa-ohci, ts0710_mux, ts0710_mux_usb, ezx-bp
+
+# incomplete
+#asoc-pxa-ssp.patch
+#ezx-asoc.patch
diff --git a/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch b/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
deleted file mode 100644
index d46033bc80..0000000000
--- a/packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
+++ /dev/null
@@ -1,237 +0,0 @@
-Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
-===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/pcap_ts.c 2007-05-01 16:28:00.000000000 +0200
-+++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-05-01 16:28:03.000000000 +0200
-@@ -21,15 +21,14 @@
- #include <linux/string.h>
- #include <linux/pm.h>
- #include <linux/timer.h>
--#include <linux/config.h>
-+//#include <linux/config.h>
- #include <linux/interrupt.h>
- #include <linux/platform_device.h>
- #include <linux/input.h>
-
- #include <asm/arch/hardware.h>
- #include <asm/arch/pxa-regs.h>
--
--#include "../../misc/ezx/ssp_pcap.h"
-+#include <asm/arch/ezx-pcap.h>
-
- #if 1
- #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
-@@ -61,6 +60,9 @@
- #define PRESSURE_MAX X_AXIS_MAX
- #define PRESSURE_MIN X_AXIS_MIN
-
-+#define SAMPLE_INTERVAL (HZ/100)
-+
-+
- static int pcap_ts_mode(u_int32_t mode)
- {
- int ret;
-@@ -157,8 +159,6 @@
- pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
-
- if (pcap_ts->read_state == PRESSURE) {
-- input_report_abs(pcap_ts->input, ABS_PRESSURE,
-- pcap_ts->pressure);
- if ((pcap_ts->pressure >= PRESSURE_MAX ||
- pcap_ts->pressure <= PRESSURE_MIN ) &&
- pcap_ts->pressure == pcap_ts->pressure_last) {
-@@ -166,6 +166,8 @@
- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
- input_sync(pcap_ts->input);
-
-+ input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
-+
- pcap_ts->x = pcap_ts->y = 0;
-
- /* ask PCAP2 to interrupt us if touch event happens
-@@ -182,18 +184,24 @@
- input_report_key(pcap_ts->input, BTN_TOUCH, 1);
- /* don't input_sync(), we don't know position yet */
-
-+ if (pcap_ts->pressure == 0)
-+ pcap_ts->pressure = pcap_ts->pressure_last;
-+
-+ input_report_abs(pcap_ts->input, ABS_PRESSURE,
-+ pcap_ts->pressure);
-+
- /* switch state machine into coordinate read mode */
- pcap_ts->read_state = COORDINATE;
- pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
- pcap_ts_start_xy_read(pcap_ts);
--
-- mod_timer(&pcap_ts->timer, jiffies + HZ/20);
- }
- } else {
- /* we are in coordinate mode */
- if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
- pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
- DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
-+
-+ pcap_ts->pressure = 0;
- #if 0
- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
- pcap_ts->x = pcap_ts->y = 0;
-@@ -206,8 +214,8 @@
-
- /* switch back to pressure read mode */
- pcap_ts->read_state = PRESSURE;
-- pcap_ts_mode(PCAP_TS_STANDBY_MODE);
-- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+ pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
-+ mod_timer(&pcap_ts->timer, jiffies + SAMPLE_INTERVAL);
- }
-
- return IRQ_HANDLED;
-@@ -234,18 +242,19 @@
- {
- struct pcap_ts *pcap_ts = (struct pcap_ts *) data;
-
-- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 1);
-- pcap_ts_mode(PCAP_TS_PRESSURE_MEASUREMENT);
-- pcap_ts->read_state = PRESSURE;
- pcap_ts_start_xy_read(pcap_ts);
- }
-
- static int __init ezxts_probe(struct platform_device *pdev)
- {
-+ int ret;
-+ u_int32_t tmp;
- struct pcap_ts *pcap_ts;
- struct input_dev *input_dev;
- int err = -ENOMEM;
-
-+ printk(KERN_DEBUG "Start probing TS!\n");
-+
- pcap_ts = kzalloc(sizeof(*pcap_ts), GFP_KERNEL);
- input_dev = input_allocate_device();
- if (!pcap_ts || !input_dev)
-@@ -263,7 +272,46 @@
- goto fail;
- }
-
-- ssp_pcap_open(SSP_PCAP_TS_OPEN);
-+ // Some initialization before done in ssp_pcap_open()
-+ //ssp_pcap_open(SSP_PCAP_TS_OPEN);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_TS_REFENB, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_ADCDONE2I, 1);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ISR_TSI, 1);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_MSR_ADCDONE2M, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC1, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC2_ADINC2, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO0, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO1, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO2, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATO3, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_ATOX, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR1, 0);
-+ ezx_pcap_bit_set( SSP_PCAP_ADJ_BIT_ADC1_MTR2, 0);
-+
-+ //SSP_PCAP_TSI_mode_set(PCAP_TS_STANDBY_MODE);
-+ ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ tmp &= (~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK);
-+ tmp |= PCAP_TS_STANDBY_MODE;
-+
-+ ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
-+ if (ret < 0)
-+ return ret;
-+
-+ /* send the usb accessory infomation to PM */
-+ /*
-+ if((ACCESSORY_TYPE) sspUsbAccessoryInfo.type == ACCESSORY_DEVICE_USB_PORT)
-+ {
-+ if( (ACCESSORY_DEVICE_STATUS )sspUsbAccessoryInfo.status == ACCESSORY_DEVICE_STATUS_ATTACHED )
-+ apm_queue_event(KRNL_ACCS_ATTACH);
-+ else
-+ apm_queue_event(KRNL_ACCS_DETACH);
-+ }
-+ */
-+
-
- err = request_irq(pcap_ts->irq_xy, pcap_ts_irq_xy, SA_INTERRUPT,
- "PCAP Touchscreen XY", pcap_ts);
-@@ -343,10 +391,11 @@
- //.resume = ezxts_resume,
- .driver = {
- .name = "pcap-ts",
-+ .owner = THIS_MODULE,
- },
- };
-
--static int __devinit ezxts_init(void)
-+static int __init ezxts_init(void)
- {
- return platform_driver_register(&ezxts_driver);
- }
-Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
-===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig 2007-05-01 16:28:00.000000000 +0200
-+++ linux-2.6.21/drivers/input/touchscreen/Kconfig 2007-05-01 16:28:03.000000000 +0200
-@@ -166,7 +166,7 @@
-
- config TOUCHSCREEN_PCAP
- tristate "Motorola PCAP touchscreen"
-- depends on PXA_EZX_PCAP
-+ depends on PXA_EZX
- help
- Say Y here if you have a Motorola EZX (E680, A780) telephone
- and want to support the built-in touchscreen.
-@@ -174,6 +174,6 @@
- If unsure, say N.
-
- To compile this driver as a module, choose M here: the
-- module will be called hp680_ts_input.
-+ module will be called pcap_ts.
-
- endif
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-05-01 16:28:00.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-05-01 16:28:03.000000000 +0200
-@@ -116,6 +116,31 @@
- .resource = ezxemu_resources,
- };
-
-+/* PCAP_TS */
-+struct resource pcap_ts_resources[] = {
-+ [0] = {
-+ .start = EZX_IRQ_ADCDONE2,
-+ .end = EZX_IRQ_ADCDONE2,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [1] = {
-+ .start = EZX_IRQ_TS,
-+ .end = EZX_IRQ_TS,
-+ .flags = IORESOURCE_IRQ,
-+ }
-+};
-+
-+struct platform_device pcap_ts_device = {
-+ .name = "pcap-ts",
-+ .id = -1,
-+ .dev = {
-+ .parent = &ezxpcap_device.dev,
-+ },
-+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
-+ .resource = pcap_ts_resources,
-+};
-+
-+
- /* OHCI Controller */
-
- static int ezx_ohci_init(struct device *dev)
-@@ -342,6 +367,7 @@
- &ezxpcap_device,
- &ezxbp_device,
- &ezxemu_device,
-+ &pcap_ts_device,
- };
-
- static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch b/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
deleted file mode 100644
index 9f4ce980ad..0000000000
--- a/packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
-Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
-===================================================================
---- linux-2.6.21.orig/drivers/input/touchscreen/pcap_ts.c 2007-04-30 21:55:41.000000000 +0200
-+++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c 2007-04-30 21:55:41.000000000 +0200
-@@ -128,10 +128,7 @@
- if (ret < 0)
- return ret;
-
-- if (tmp & 0x00400000)
-- return -EIO;
--
-- if (pcap_ts->read_state == COORDINATE) {
-+ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) {
- pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
- pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
- >>SSP_PCAP_ADD2_VALUE_SHIFT;
diff --git a/packages/linux/linux-ezx-2.6.21/update_patches.sh b/packages/linux/linux-ezx-2.6.21/update_patches.sh
new file mode 100644
index 0000000000..d63a1e8e7d
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/update_patches.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -e
+
+# Helper script to update patches and speedup filling the SRC_URI section of our .bb
+# Run it while in packages/linux/linux-ezx-2.6.x/
+
+[ -d patches ] && mtn drop -R patches
+rm -rf patches
+
+svn --quiet co http://svn.openezx.org/trunk/src/kernel-2.6/patches/ patches
+find patches -type f -print0
+mtn add patches patches/*
+
+cat patches/series | grep ^[0-9A-Za-z] | sed -e 's/.*/\tfile:\/\/patches\/\0;patch=1 \\/'
+ls -1 patches/defconfig-* | sed -e 's/.*/\tfile:\/\/\0 \\/'
+
diff --git a/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff b/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
deleted file mode 100644
index 6e424c626c..0000000000
--- a/packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
+++ /dev/null
@@ -1,124 +0,0 @@
-Ignores read interrupts after penUP events until a penDOWN interrupt arrives.
-Some other changes i dont remember exactly. :)
-Signed-off-by: Daniel Ribeiro <drwyrm@gmail.com>
-Index: linux-2.6.16/drivers/input/touchscreen/pcap_ts.c
-===================================================================
---- linux-2.6.16.orig/drivers/input/touchscreen/pcap_ts.c 2007-03-09 21:26:25.000000000 -0300
-+++ linux-2.6.16/drivers/input/touchscreen/pcap_ts.c 2007-03-09 21:26:42.000000000 -0300
-@@ -31,7 +31,7 @@
-
- #include "../../misc/ezx/ssp_pcap.h"
-
--#if 1
-+#if 0
- #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
- #else
- #define DEBUGP(x, args ...)
-@@ -39,6 +39,7 @@
-
- #define PRESSURE 1
- #define COORDINATE 2
-+#define STANDBY 3
-
- struct pcap_ts {
- int irq_xy;
-@@ -97,7 +98,7 @@
- int ret;
- u_int32_t tmp;
- DEBUGP("start xy read in mode %s\n",
-- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
-+ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
-
- ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
- if (ret < 0)
-@@ -122,7 +123,7 @@
- u_int32_t tmp;
-
- DEBUGP("get xy value in mode %s\n",
-- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
-+ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
-
- ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
- if (ret < 0)
-@@ -145,7 +146,16 @@
- static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
- {
- struct pcap_ts *pcap_ts = dev_id;
-+// DEBUGP("read_state: %d\n", pcap_ts->read_state);
-
-+ /*
-+ * Ignore further read interrupts after we set STANDBY - WM
-+ */
-+ if (pcap_ts->read_state == STANDBY)
-+ {
-+ DEBUGP("ignored\n");
-+ return IRQ_HANDLED;
-+ }
- if (pcap_ts_get_xy_value(pcap_ts) < 0) {
- printk("pcap_ts: error reading XY value\n");
- return IRQ_HANDLED;
-@@ -160,33 +170,32 @@
- pcap_ts->pressure <= PRESSURE_MIN ) &&
- pcap_ts->pressure == pcap_ts->pressure_last) {
- /* pen has been released */
-+ DEBUGP("UP\n");
- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
-- input_sync(pcap_ts->input);
--
- input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
-+ input_sync(pcap_ts->input);
-
- pcap_ts->x = pcap_ts->y = 0;
-
-+ /* no need for timer, we'll get interrupted with
-+ * next touch down event */
-+ del_timer(&pcap_ts->timer);
-+
- /* ask PCAP2 to interrupt us if touch event happens
- * again */
-- pcap_ts->read_state = PRESSURE;
-+ pcap_ts->read_state = STANDBY;
- pcap_ts_mode(PCAP_TS_STANDBY_MODE);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
--
-- /* no need for timer, we'll get interrupted with
-- * next touch down event */
-- del_timer(&pcap_ts->timer);
- } else {
- /* pen has been touched down */
-+ DEBUGP("DOWN\n");
-+
- input_report_key(pcap_ts->input, BTN_TOUCH, 1);
- /* don't input_sync(), we don't know position yet */
-
- if (pcap_ts->pressure == 0)
- pcap_ts->pressure = pcap_ts->pressure_last;
-
-- input_report_abs(pcap_ts->input, ABS_PRESSURE,
-- pcap_ts->pressure);
--
- /* switch state machine into coordinate read mode */
- pcap_ts->read_state = COORDINATE;
- pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
-@@ -196,18 +205,14 @@
- /* we are in coordinate mode */
- if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
- pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
-- DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
--
-+ DEBUGP("PEN_UP?\n");
- pcap_ts->pressure = 0;
--#if 0
-- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
-- pcap_ts->x = pcap_ts->y = 0;
--#endif
- } else {
-+ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
- input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
- input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
-+ input_sync(pcap_ts->input);
- }
-- input_sync(pcap_ts->input);
-
- /* switch back to pressure read mode */
- pcap_ts->read_state = PRESSURE;
diff --git a/packages/linux/linux-ezx/defconfig-a780 b/packages/linux/linux-ezx/defconfig-a780
deleted file mode 100644
index 313540dc4c..0000000000
--- a/packages/linux/linux-ezx/defconfig-a780
+++ /dev/null
@@ -1,1317 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.13
-# Sun Jan 21 10:52:04 2007
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_ARCH_MTD_XIP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-# CONFIG_LOCALVERSION is not set
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_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=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=m
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_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
-CONFIG_PXA_EZX=y
-
-#
-# 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_PXA_EZX_E680 is not set
-CONFIG_PXA_EZX_A780=y
-CONFIG_PXA27x=y
-CONFIG_IWMMXT=y
-CONFIG_PXA_SPI=y
-CONFIG_PXA_EZX_PCAP=y
-CONFIG_PXA_EZX_PCAP_EMU=m
-CONFIG_PXA_EZX_PCAP_EMU_USB=y
-# CONFIG_PXA_EZX_PCAP_EMU_UART is not set
-
-#
-# Processor Type
-#
-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
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-CONFIG_NET_KEY=m
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST 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 is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_TUNNEL=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_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=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_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_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_NETBIOS_NS=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_PPTP=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_MATCH_POLICY=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_POLICY=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# 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
-CONFIG_NET_CLS_ROUTE=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=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-CONFIG_CONNECTOR=m
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=m
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=3
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-CONFIG_MTD_CFI_ADV_OPTIONS=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=m
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=m
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-CONFIG_MTD_XIP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_SHARP_SL is not set
-CONFIG_MTD_PXA27x=m
-# 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_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=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x0
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH is not set
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=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
-# CONFIG_ARCH_EZX_ROFLASH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# PHY device support
-#
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-# 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=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=m
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
-CONFIG_INPUT_EVDEV=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_PXA=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_PCAP=y
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=m
-# 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_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=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_LINUX_LED is not set
-# CONFIG_BULVERDE_SRAM_DEV is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_TS0710_MUX=y
-CONFIG_TS0710_MUX_USB=y
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-CONFIG_I2C_PXA_SLAVE=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
-# CONFIG_I2C_ADCM2700 is not set
-# CONFIG_I2C_A780_CAMERA is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=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
-#
-
-#
-# Motorola EZX devices
-#
-CONFIG_KEYPAD_A780=y
-# CONFIG_KEYPAD_E680 is not set
-CONFIG_KEYLIGHT_A780=y
-CONFIG_VIBRATOR_A780=y
-# CONFIG_FMRADIO_E680 is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_A780=y
-CONFIG_LEDS_TRIGGER_TIMER=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=y
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_HP680 is not set
-CONFIG_BACKLIGHT_EZX=y
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-# CONFIG_USB_STORAGE 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_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_DEBUG_FILES=y
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=y
-# CONFIG_USB_PXA27X_DMA 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 is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS 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=m
-# CONFIG_INOTIFY is not set
-# CONFIG_QUOTA is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS 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=m
-CONFIG_CONFIGFS_FS=m
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=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_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=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=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-
-#
-# Dynamic Power Management
-#
-# CONFIG_DPM is not set
diff --git a/packages/linux/linux-ezx/defconfig-e680 b/packages/linux/linux-ezx/defconfig-e680
deleted file mode 100644
index ef5fef395f..0000000000
--- a/packages/linux/linux-ezx/defconfig-e680
+++ /dev/null
@@ -1,1314 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.13
-# Thu May 18 19:40:25 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="-ezx6"
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-# CONFIG_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=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
-CONFIG_HOTPLUG=y
-CONFIG_PRINTK=y
-CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-CONFIG_SLAB=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=m
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_KMOD is not set
-
-#
-# Block layer
-#
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
-CONFIG_DEFAULT_NOOP=y
-CONFIG_DEFAULT_IOSCHED="noop"
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_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
-CONFIG_PXA_EZX=y
-
-#
-# 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_PXA_EZX_E680=y
-# CONFIG_PXA_EZX_A780 is not set
-CONFIG_PXA27x=y
-CONFIG_IWMMXT=y
-CONFIG_PXA_SPI=y
-CONFIG_PXA_EZX_PCAP=y
-CONFIG_PXA_EZX_PCAP_EMU=m
-
-#
-# 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
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-# CONFIG_NO_IDLE_HZ is not set
-# CONFIG_AEABI is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
-CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_FLATMEM_MANUAL=y
-# CONFIG_DISCONTIGMEM_MANUAL is not set
-# CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-# CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="mem=32M root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=1 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off console=ttyS2,115200n8 console=tty0"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=y
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-CONFIG_NET_KEY=m
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST 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 is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_TUNNEL=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_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=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_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_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_NETBIOS_NS=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_PPTP=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_MATCH_POLICY=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_POLICY=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
-
-#
-# 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
-CONFIG_NET_CLS_ROUTE=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=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_DEBUG_DRIVER is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-CONFIG_CONNECTOR=m
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=m
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=3
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
-CONFIG_MTD_CFI_ADV_OPTIONS=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=m
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=m
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-CONFIG_MTD_XIP=y
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_SHARP_SL is not set
-CONFIG_MTD_PXA27x=m
-# 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_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=m
-CONFIG_MTD_DOCPROBE=m
-CONFIG_MTD_DOCECC=m
-# CONFIG_MTD_DOCPROBE_ADVANCED is not set
-CONFIG_MTD_DOCPROBE_ADDRESS=0
-
-#
-# NAND Flash Device Drivers
-#
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x0
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH is not set
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-
-#
-# OneNAND Flash Device Drivers
-#
-# CONFIG_MTD_ONENAND is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=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
-# CONFIG_ARCH_EZX_ROFLASH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-CONFIG_MD=y
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# PHY device support
-#
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-# 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=m
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=m
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
-CONFIG_INPUT_EVDEV=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_PXA=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_ADS7846 is not set
-# CONFIG_TOUCHSCREEN_GUNZE is not set
-# CONFIG_TOUCHSCREEN_ELO is not set
-# CONFIG_TOUCHSCREEN_MTOUCH is not set
-# CONFIG_TOUCHSCREEN_MK712 is not set
-CONFIG_TOUCHSCREEN_PCAP=y
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=m
-# 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_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
-# CONFIG_LEGACY_PTY_COUNT is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-CONFIG_SA1100_RTC=y
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_LINUX_LED is not set
-# CONFIG_BULVERDE_SRAM_DEV is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-CONFIG_I2C_PXA_SLAVE=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
-# CONFIG_I2C_ADCM2700 is not set
-# CONFIG_I2C_A780_CAMERA is not set
-# CONFIG_I2C_DEBUG_CORE is not set
-# CONFIG_I2C_DEBUG_ALGO is not set
-# CONFIG_I2C_DEBUG_BUS is not set
-# CONFIG_I2C_DEBUG_CHIP is not set
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=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
-#
-
-#
-# Motorola EZX devices
-#
-# CONFIG_KEYPAD_A780 is not set
-# CONFIG_KEYPAD_E680 is not set
-# CONFIG_KEYLIGHT_A780 is not set
-# CONFIG_FMRADIO_E680 is not set
-
-#
-# Multimedia Capabilities Port drivers
-#
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_E680=y
-# CONFIG_LEDS_A780 is not set
-CONFIG_LEDS_TRIGGER_TIMER=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=y
-# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_BACKLIGHT_EZX=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=m
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_BANDWIDTH is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD 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=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_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_MTOUCH is not set
-# CONFIG_USB_ITMTOUCH is not set
-# CONFIG_USB_EGALAX is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
-
-#
-# USB Network Adapters
-#
-# CONFIG_USB_CATC is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_RTL8150 is not set
-# CONFIG_USB_USBNET is not set
-CONFIG_USB_MON=y
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# CONFIG_USB_SERIAL is not set
-
-#
-# USB Miscellaneous drivers
-#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED is not set
-# CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
-# CONFIG_USB_IDMOUSE is not set
-# CONFIG_USB_LD is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_DEBUG_FILES=y
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=y
-# CONFIG_USB_PXA27X_DMA 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 is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# File systems
-#
-# CONFIG_EXT2_FS 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=m
-# CONFIG_INOTIFY is not set
-# CONFIG_QUOTA is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS 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=m
-CONFIG_CONFIGFS_FS=m
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-# CONFIG_JFFS2_FS is not set
-CONFIG_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
-# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
-CONFIG_NFSD_V3=y
-# CONFIG_NFSD_V3_ACL is not set
-# CONFIG_NFSD_V4 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_ROOT_NFS=y
-CONFIG_LOCKD=y
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-CONFIG_MAGIC_SYSRQ=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_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=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=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
-CONFIG_CRYPTO_SHA1=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_TGR192=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-
-#
-# Dynamic Power Management
-#
-# CONFIG_DPM is not set
diff --git a/packages/linux/linux-ezx/pxa-serial-gcc4.diff b/packages/linux/linux-ezx/pxa-serial-gcc4.diff
deleted file mode 100644
index 7f827965e9..0000000000
--- a/packages/linux/linux-ezx/pxa-serial-gcc4.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/pxa.c 2006-08-29 10:51:57.000000000 +0200
-+++ linux-2.6.16/drivers/serial/pxa.c 2006-08-29 10:52:38.545780000 +0200
-@@ -241,7 +241,7 @@
- /*
- * This handles the interrupt from one port.
- */
--static inline irqreturn_t
-+inline irqreturn_t
- serial_pxa_irq(int irq, void *dev_id, struct pt_regs *regs)
- {
- struct uart_pxa_port *up = (struct uart_pxa_port *)dev_id;
diff --git a/packages/linux/linux-ezx/sa1100-rtc-gcc4.diff b/packages/linux/linux-ezx/sa1100-rtc-gcc4.diff
deleted file mode 100644
index 6fd54ece3a..0000000000
--- a/packages/linux/linux-ezx/sa1100-rtc-gcc4.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/sa1100-rtc.c 2006-08-29 10:51:48.000000000 +0200
-+++ linux-2.6.16/drivers/char/sa1100-rtc.c 2006-08-29 10:52:14.995780000 +0200
-@@ -126,7 +126,7 @@
- tval->tm_mday = days + 1;
- }
-
--static irqreturn_t rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-+irqreturn_t rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
- {
- unsigned int rtsr = RTSR;
-
diff --git a/packages/linux/linux-ezx/wyrm-ts.diff b/packages/linux/linux-ezx/wyrm-ts.diff
deleted file mode 100644
index a7ec75613c..0000000000
--- a/packages/linux/linux-ezx/wyrm-ts.diff
+++ /dev/null
@@ -1,119 +0,0 @@
---- /tmp/pcap_ts.c 2007-02-04 16:55:21.000000000 -0200
-+++ linux-2.6.16/drivers/input/touchscreen/pcap_ts.c 2007-02-04 18:47:58.000000000 -0200
-@@ -31,7 +31,7 @@
-
- #include "../../misc/ezx/ssp_pcap.h"
-
--#if 1
-+#if 0
- #define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
- #else
- #define DEBUGP(x, args ...)
-@@ -39,6 +39,7 @@
-
- #define PRESSURE 1
- #define COORDINATE 2
-+#define STANDBY 3
-
- struct pcap_ts {
- int irq_xy;
-@@ -97,7 +98,7 @@
- int ret;
- u_int32_t tmp;
- DEBUGP("start xy read in mode %s\n",
-- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
-+ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
-
- ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
- if (ret < 0)
-@@ -122,7 +123,7 @@
- u_int32_t tmp;
-
- DEBUGP("get xy value in mode %s\n",
-- pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
-+ pcap_ts->read_state == COORDINATE ? "COORD" : (pcap_ts->read_state == PRESSURE ? "PRESS" : "STANDBY"));
-
- ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
- if (ret < 0)
-@@ -145,7 +146,16 @@
- static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
- {
- struct pcap_ts *pcap_ts = dev_id;
-+// DEBUGP("read_state: %d\n", pcap_ts->read_state);
-
-+ /*
-+ * Ignore further read interrupts after we set STANDBY - WM
-+ */
-+ if (pcap_ts->read_state == STANDBY)
-+ {
-+ DEBUGP("ignored\n");
-+ return IRQ_HANDLED;
-+ }
- if (pcap_ts_get_xy_value(pcap_ts) < 0) {
- printk("pcap_ts: error reading XY value\n");
- return IRQ_HANDLED;
-@@ -160,33 +170,32 @@
- pcap_ts->pressure <= PRESSURE_MIN ) &&
- pcap_ts->pressure == pcap_ts->pressure_last) {
- /* pen has been released */
-+ DEBUGP("UP\n");
- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
-- input_sync(pcap_ts->input);
--
- input_report_abs(pcap_ts->input, ABS_PRESSURE, 0);
-+ input_sync(pcap_ts->input);
-
- pcap_ts->x = pcap_ts->y = 0;
-
-+ /* no need for timer, we'll get interrupted with
-+ * next touch down event */
-+ del_timer(&pcap_ts->timer);
-+
- /* ask PCAP2 to interrupt us if touch event happens
- * again */
-- pcap_ts->read_state = PRESSURE;
-+ pcap_ts->read_state = STANDBY;
- pcap_ts_mode(PCAP_TS_STANDBY_MODE);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
--
-- /* no need for timer, we'll get interrupted with
-- * next touch down event */
-- del_timer(&pcap_ts->timer);
- } else {
- /* pen has been touched down */
-+ DEBUGP("DOWN\n");
-+
- input_report_key(pcap_ts->input, BTN_TOUCH, 1);
- /* don't input_sync(), we don't know position yet */
-
- if (pcap_ts->pressure == 0)
- pcap_ts->pressure = pcap_ts->pressure_last;
-
-- input_report_abs(pcap_ts->input, ABS_PRESSURE,
-- pcap_ts->pressure);
--
- /* switch state machine into coordinate read mode */
- pcap_ts->read_state = COORDINATE;
- pcap_ts_mode(PCAP_TS_POSITION_XY_MEASUREMENT);
-@@ -196,18 +205,14 @@
- /* we are in coordinate mode */
- if (pcap_ts->x <= X_AXIS_MIN || pcap_ts->x >= X_AXIS_MAX ||
- pcap_ts->y <= Y_AXIS_MIN || pcap_ts->y >= Y_AXIS_MAX) {
-- DEBUGP("invalid x/y coordinate position: PEN_UP?\n");
--
-+ DEBUGP("PEN_UP?\n");
- pcap_ts->pressure = 0;
--#if 0
-- input_report_key(pcap_ts->input, BTN_TOUCH, 0);
-- pcap_ts->x = pcap_ts->y = 0;
--#endif
- } else {
-+ input_report_abs(pcap_ts->input, ABS_PRESSURE, pcap_ts->pressure);
- input_report_abs(pcap_ts->input, ABS_X, pcap_ts->x);
- input_report_abs(pcap_ts->input, ABS_Y, pcap_ts->y);
-+ input_sync(pcap_ts->input);
- }
-- input_sync(pcap_ts->input);
-
- /* switch back to pressure read mode */
- pcap_ts->read_state = PRESSURE;
diff --git a/packages/linux/linux-ezx_2.6.16.13.bb b/packages/linux/linux-ezx_2.6.16.13.bb
deleted file mode 100644
index 1e6d3e2506..0000000000
--- a/packages/linux/linux-ezx_2.6.16.13.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
-SECTION = "kernel"
-AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
-HOMEPAGE = "http://www.openezx.org"
-LICENSE = "GPL"
-DEPENDS += "quilt-native"
-EZX = "ezx9"
-PR = "${EZX}-r2"
-
-inherit kernel
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
-RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
-
-##############################################################
-# source and patches
-#
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
- http://www.openezx.org/download/patches-2.6.16-2.6.16.13-${EZX}.tar.bz2 \
- \
- file://logo_linux_clut224.ppm \
- file://defconfig-a780 \
- file://defconfig-e680 \
- file://wyrm-ts.diff;patch=1"
-S = "${WORKDIR}/linux-2.6.16"
-
-##############################################################
-# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(a780|e680)'
-
-CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
-CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
-# uncomment if you want to boot over NFS
-#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
-# uncomment to enable dyntick
-#CMDLINE_OTHER = "dyntick=enable"
-CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
-CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
-CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} mem=32M@0xA0000000 mem=16M@0xAC000000"
-
-###############################################################
-# module configs specific to this kernel
-#
-module_autoload_pxaficp_ir = "pxaficp_ir"
-module_autoload_snd-pcm-oss = "snd-pcm-oss"
-
-do_ezxpatch() {
- mv ${WORKDIR}/patches ${S} && cd ${S} && quilt push -av
- rm -Rf patches .pc
-}
-
-do_configure() {
- install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
-
- if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
- die "No default configuration for ${MACHINE} available."
- fi
-
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
- echo "CONFIG_AEABI=y" >> ${S}/.config
- echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
- else
- echo "# CONFIG_AEABI is not set" >> ${S}/.config
- echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
- fi
-
- sed -e '/CONFIG_AEABI/d' \
- -e '/CONFIG_OABI_COMPAT=/d' \
- -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
- -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
-
- yes '' | oe_runmake oldconfig
-}
-
-###############################################################
-# check the kernel is below the 1024*1024 byte limit for the boot-over usb
-#
-do_compile_append() {
- size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
- if [ $size -ge 1294336 ]; then
- rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
- echo "Size is $size"
- die "This kernel is too big for your EZX Phone. Please reduce the size of the kernel by making more of it modular."
- fi
-}
-
-###############################################################
-# put into deploy directory
-#
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_package after do_install
-addtask ezxpatch before do_patch after do_unpack
diff --git a/packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb b/packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb
deleted file mode 100644
index b5202fc0f5..0000000000
--- a/packages/linux/linux-ezx_2.6.19+2.6.20-rc2.bb
+++ /dev/null
@@ -1,125 +0,0 @@
-DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
-SECTION = "kernel"
-AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
-HOMEPAGE = "http://www.openezx.org"
-LICENSE = "GPL"
-DEPENDS += "quilt-native"
-EZX = "ezx0"
-PR = "${EZX}-r2"
-
-DEFAULT_PREFERENCE = "-1"
-DEFAULT_PREFERENCE_rokr-e2 = "1"
-
-inherit kernel
-
-KERNEL_RELEASE = "2.6.20-rc2"
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
-
-RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
-DMSRC = "http://people.openezx.org/dotmonkey/patch"
-
-##############################################################
-# source and patches
-#
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/testing/patch-2.6.20-rc2.bz2;patch=1 \
- ${DMSRC}/Kconfig.patch;patch=1;pnum=5 \
- ${DMSRC}/Makefile.patch;patch=1;pnum=5 \
- ${DMSRC}/head-xscale.S.patch;patch=1;pnum=5 \
- ${DMSRC}/sumatra.c.patch;patch=1;pnum=1 \
- ${DMSRC}/uncompress.h.patch;patch=1;pnum=5 \
- file://logo_linux_clut224.ppm \
- file://defconfig-${MACHINE} \
- file://wyrm-ts.diff;patch=1"
-
-S = "${WORKDIR}/linux-2.6.19"
-
-##############################################################
-# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(a780|e680|a1200|rokr-e2)'
-
-CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
-CMDLINE_CON_rokr-e2 = "video=pxafb:mode:240x320-8,active console=ttyS2,115200n8 console=tty1"
-
-CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
-# uncomment if you want to boot over NFS
-#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
-# uncomment to enable dyntick
-#CMDLINE_OTHER = "dyntick=enable"
-CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
-CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
-CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} mem=32M@0xA0000000 mem=16M@0xAC000000"
-CMDLINE_rokr-e2 = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
-
-###############################################################
-# module configs specific to this kernel
-#
-module_autoload_pxaficp_ir = "pxaficp_ir"
-module_autoload_snd-pcm-oss = "snd-pcm-oss"
-
-do_ezxpatch() {
- #mv ${WORKDIR}/patches ${S} && cd ${S} && quilt push -av
- #rm -Rf patches .pc
- :
-}
-
-do_configure() {
- install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
-
- if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
- die "No default configuration for ${MACHINE} available."
- fi
-
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
- echo "CONFIG_AEABI=y" >> ${S}/.config
- echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
- else
- echo "# CONFIG_AEABI is not set" >> ${S}/.config
- echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
- fi
-
- sed -e '/CONFIG_AEABI/d' \
- -e '/CONFIG_OABI_COMPAT=/d' \
- -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
- -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
-
- yes '' | oe_runmake oldconfig
-}
-
-###############################################################
-# check the kernel is below the 1024*1024 byte limit for the boot-over usb
-#
-do_compile_append() {
- size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
- if [ $size -ge 1294336 ]; then
- rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
- echo "Size is $size"
- die "This kernel is too big for your EZX Phone. Please reduce the size of the kernel by making more of it modular."
- fi
-}
-
-###############################################################
-# put into deploy directory
-#
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_package after do_install
-addtask ezxpatch before do_patch after do_unpack
diff --git a/packages/linux/linux-ezx_2.6.20.7.bb b/packages/linux/linux-ezx_2.6.20.7.bb
deleted file mode 100644
index 7336fee762..0000000000
--- a/packages/linux/linux-ezx_2.6.20.7.bb
+++ /dev/null
@@ -1,125 +0,0 @@
-DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and E680"
-SECTION = "kernel"
-AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
-HOMEPAGE = "http://www.openezx.org"
-LICENSE = "GPL"
-DEPENDS += "quilt-native"
-EZX = "ezx0"
-PR = "${EZX}-r0"
-
-DEFAULT_PREFERENCE = "-1"
-
-
-inherit kernel
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
-RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
-
-##############################################################
-# source and patches
-#
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.20.7.tar.bz2 \
- \
- file://ezx-core.patch;patch=1 \
- file://ezx-pcap.patch;patch=1 \
- file://ezx-mci.patch;patch=1 \
- file://usb_pxa27x_udc-r3.patch;patch=1 \
- file://usb_add_epalloc-r3.patch;patch=1 \
- file://ezx-emu.patch;patch=1 \
- file://ezx-fix-usb_pxa27x_udc-r3.patch;patch=1 \
- file://ezx-mtd-map.patch;patch=1 \
- file://ezx-serial-bug-workaround.patch;patch=1 \
- file://mux_cli.patch;patch=1 \
- file://mux-fix.patch;patch=1 \
- file://mux-fix-init-errorpath.patch;patch=1 \
- file://mux-remove-flipbuffers.patch;patch=1 \
- file://mux-remove-get_halted_bit.patch;patch=1 \
- file://mux-remove-usbh_finished_resume.patch;patch=1 \
- file://mux-fix-makefile.patch;patch=1 \
- file://mux-fix-tty-driver.patch;patch=1 \
- \
- file://logo_linux_clut224.ppm \
- file://defconfig-a780 \
- file://defconfig-e680 \
- "
-
-S = "${WORKDIR}/linux-2.6.20.7"
-
-##############################################################
-# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(a780|e680)'
-
-CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
-CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
-# uncomment if you want to boot over NFS
-#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
-# uncomment to enable dyntick
-#CMDLINE_OTHER = "dyntick=enable"
-CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
-CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
-CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG} mem=32M@0xA0000000 mem=16M@0xAC000000"
-
-###############################################################
-# module configs specific to this kernel
-#
-module_autoload_pxaficp_ir = "pxaficp_ir"
-module_autoload_snd-pcm-oss = "snd-pcm-oss"
-
-do_configure() {
- install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
-
- if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
- die "No default configuration for ${MACHINE} available."
- fi
-
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
- echo "CONFIG_AEABI=y" >> ${S}/.config
- echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
- else
- echo "# CONFIG_AEABI is not set" >> ${S}/.config
- echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
- fi
-
- sed -e '/CONFIG_AEABI/d' \
- -e '/CONFIG_OABI_COMPAT=/d' \
- -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
- -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
-
- yes '' | oe_runmake oldconfig
-}
-
-###############################################################
-# check the kernel is below the 1024*1024 byte limit for the boot-over usb
-#
-do_compile_append() {
- size=`ls -l arch/${ARCH}/boot/${KERNEL_IMAGETYPE} | awk '{ print $5}'`
- if [ $size -ge 1294336 ]; then
- rm arch/${ARCH}/boot/${KERNEL_IMAGETYPE}
- echo "Size is $size"
- echo "This kernel is too big for your EZX Phone. Please reduce the size of the kernel by making more of it modular."
- fi
-}
-
-###############################################################
-# put into deploy directory
-#
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask deploy before do_package after do_install
diff --git a/packages/linux/linux-ezx_2.6.21.bb b/packages/linux/linux-ezx_2.6.21.bb
index 80c0122504..8b111a2c44 100644
--- a/packages/linux/linux-ezx_2.6.21.bb
+++ b/packages/linux/linux-ezx_2.6.21.bb
@@ -4,52 +4,59 @@ AUTHOR = "Harald Welte and the OpenEZX Team <openezx-devel@lists.openezx.org>"
HOMEPAGE = "http://www.openezx.org"
LICENSE = "GPL"
DEPENDS += "quilt-native"
-EZX = "ezx0"
-PR = "${EZX}-r5"
+EZX = "ezxdev"
+PR = "${EZX}-r6"
inherit kernel
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-ezx"
-RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
-
##############################################################
# source and patches
#
SRC_URI = " \
- ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- file://ezx-core.patch;patch=1 \
- file://ezx-bp.patch;patch=1 \
- file://ezx-pm.patch;patch=1 \
- file://ezx-pcap.patch;patch=1 \
- file://a780-mci.patch;patch=1 \
- file://e680-mci.patch;patch=1 \
- file://pxa27x-udc-support.2.patch;patch=1 \
- file://ezx-emu.patch;patch=1 \
- file://ezx-mtd-map.patch;patch=1 \
- file://ezx-serial-bug-workaround.patch;patch=1 \
- file://pxa-kbd.patch;patch=1 \
- file://a780-kbd.patch;patch=1 \
- file://e680-kbd.patch;patch=1 \
- file://pcap-ts.patch;patch=1 \
- file://ezx-backlight.patch;patch=1 \
- file://a780-flip.patch;patch=1 \
- file://e680-locksw.patch;patch=1 \
- file://a780-leds.patch;patch=1 \
- file://e680-leds.patch;patch=1 \
- file://a780-vibrator.patch;patch=1 \
- file://mux_cli.patch;patch=1 \
- file://mux-fix.patch;patch=1 \
- file://mux-fix-init-errorpath.patch;patch=1 \
- file://mux-remove-flipbuffers.patch;patch=1 \
- file://mux-remove-get_halted_bit.patch;patch=1 \
- file://mux-remove-usbh_finished_resume.patch;patch=1 \
- file://mux-fix-makefile.patch;patch=1 \
- file://mux-fix-tty-driver.patch;patch=1 \
- file://mux-linux-2.6.21-fix.patch;patch=1 \
- file://logo_linux_clut224.ppm \
- file://defconfig-a780 \
- file://defconfig-e680 \
- "
+ ${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://logo_linux_clut224.ppm \
+ \
+ file://patches/patch-2.6.21.4;patch=1 \
+ file://patches/ezx-core.patch;patch=1 \
+ file://patches/ezx-bp.patch;patch=1 \
+ file://patches/ezx-pm.patch;patch=1 \
+ file://patches/ezx-pcap.patch;patch=1 \
+ file://patches/a780-mci.patch;patch=1 \
+ file://patches/e680-mci.patch;patch=1 \
+ file://patches/a1200-mci.patch;patch=1 \
+ file://patches/pxa27x-udc-support.2.patch;patch=1 \
+ file://patches/ezx-emu.patch;patch=1 \
+ file://patches/ezx-mtd-map.patch;patch=1 \
+ file://patches/ezx-serial-bug-workaround.patch;patch=1 \
+ file://patches/pxa-kbd.patch;patch=1 \
+ file://patches/a780-kbd.patch;patch=1 \
+ file://patches/e680-kbd.patch;patch=1 \
+ file://patches/pcap-ts.patch;patch=1 \
+ file://patches/a780-ts.patch;patch=1 \
+ file://patches/e680-ts.patch;patch=1 \
+ file://patches/a1200-ts.patch;patch=1 \
+ file://patches/ezx-backlight.patch;patch=1 \
+ file://patches/a780-flip.patch;patch=1 \
+ file://patches/e680-locksw.patch;patch=1 \
+ file://patches/a780-leds.patch;patch=1 \
+ file://patches/e680-leds.patch;patch=1 \
+ file://patches/a780-vibrator.patch;patch=1 \
+ file://patches/mux_cli.patch;patch=1 \
+ file://patches/mux-fix.patch;patch=1 \
+ file://patches/mux-fix-init-errorpath.patch;patch=1 \
+ file://patches/mux-remove-flipbuffers.patch;patch=1 \
+ file://patches/mux-remove-get_halted_bit.patch;patch=1 \
+ file://patches/mux-remove-usbh_finished_resume.patch;patch=1 \
+ file://patches/mux-fix-makefile.patch;patch=1 \
+ file://patches/mux-fix-tty-driver.patch;patch=1 \
+ file://patches/mux-linux-2.6.21-fix.patch;patch=1 \
+ file://patches/defconfig-a1200 \
+ file://patches/defconfig-a780 \
+ file://patches/defconfig-e2 \
+ file://patches/defconfig-e6 \
+ file://patches/defconfig-e680 \
+ \
+ "
S = "${WORKDIR}/linux-${PV}"
@@ -61,7 +68,7 @@ FILES_kernel-image = ""
ALLOW_EMPTY = "1"
COMPATIBLE_HOST = "arm.*-linux"
-COMPATIBLE_MACHINE = '(a780|e680)'
+COMPATIBLE_MACHINE = '(a780|e680|a1200)'
# For now the code for serial console is disabled in compress.c
#CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 noinitrd"
@@ -79,13 +86,13 @@ CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDL
###############################################################
# module configs specific to this kernel
#
-module_autoload_pxaficp_ir = "pxaficp_ir"
-module_autoload_snd-pcm-oss = "snd-pcm-oss"
+#module_autoload_pxaficp_ir = "pxaficp_ir"
+#module_autoload_snd-pcm-oss = "snd-pcm-oss"
do_configure() {
install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
- if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
+ if [ ! -e ${WORKDIR}/patches/defconfig-${MACHINE} ]; then
die "No default configuration for ${MACHINE} available."
fi
@@ -99,6 +106,13 @@ do_configure() {
echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
fi
+ #
+ # Logo configuration
+ #
+ echo "CONFIG_LOGO=y" >> ${S}/.config
+ echo "CONFIG_LOGO_LINUX_CLUT224=y" >> ${S}/.config
+
+
sed -e '/CONFIG_AEABI/d' \
-e '/CONFIG_OABI_COMPAT=/d' \
-e '/CONFIG_CMDLINE=/d' \
@@ -106,7 +120,9 @@ do_configure() {
-e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
-e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
-e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
+ -e '/CONFIG_LOGO=/d' \
+ -e '/CONFIG_LOGO_LINUX_CLUT224=/d' \
+ '${WORKDIR}/patches/defconfig-${MACHINE}' >>'${S}/.config'
yes '' | oe_runmake oldconfig
}
@@ -128,10 +144,10 @@ do_compile_append() {
#
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${PV}-${PR}-${MACHINE}-${DATETIME}.tgz -C ${D} lib
}
do_deploy[dirs] = "${S}"
-addtask deploy before do_populate_staging after do_package
+addtask deploy before do_package after do_install
diff --git a/packages/linux/linux-gta01.inc b/packages/linux/linux-gta01.inc
index ee3c09e908..915e5633af 100644
--- a/packages/linux/linux-gta01.inc
+++ b/packages/linux/linux-gta01.inc
@@ -3,7 +3,7 @@ SECTION = "kernel"
AUTHOR = "Harald Welte <laforge@openmoko.org>"
HOMEPAGE = "N/A"
LICENSE = "GPL"
-DEPENDS += "u-boot-mkimage-gta01-native"
+DEPENDS += "quilt-native uboot-gta01"
inherit kernel
@@ -12,7 +12,7 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
##############################################################
# source and patches
#
-SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
+SRC_URI = "http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
file://defconfig-${VANILLA_VERSION}-${MACHINE}"
S = "${WORKDIR}/linux-${VANILLA_VERSION}"
@@ -22,9 +22,10 @@ S = "${WORKDIR}/linux-${VANILLA_VERSION}"
FILES_kernel-image = ""
ALLOW_EMPTY = "1"
+COMPATIBLE_HOST = "arm.*-linux"
COMPATIBLE_MACHINE = 'fic-gta01'
-CMDLINE_CON = ""
+CMDLINE_CON = "console=ttySAC0,115200n8"
#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
# uncomment if you want to boot over NFS
#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
@@ -37,10 +38,15 @@ CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDL
###############################################################
# 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"
-#module_autoload_snd-pcm-oss = "snd-pcm-oss"
-#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
+# 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
@@ -48,6 +54,8 @@ do_prepatch() {
}
do_configure() {
+ #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
if [ ! -e ${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE} ]; then
die "No default configuration for ${MACHINE} available."
fi
@@ -79,12 +87,12 @@ do_configure() {
#
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}.bin
tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
rm -f linux.bin.gz
gzip -9 linux.bin
- uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ ${STAGING_BINDIR_NATIVE}/uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}.bin
rm -f linux.bin.gz
}
diff --git a/packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta01 b/packages/linux/linux-gta01/defconfig-2.6.21.3-fic-gta01
index 9f2ff3de21..16b2ac1dab 100644
--- a/packages/linux/linux-gta01/defconfig-2.6.21.1-fic-gta01
+++ b/packages/linux/linux-gta01/defconfig-2.6.21.3-fic-gta01
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21.1
-# Fri May 18 12:58:24 2007
+# Linux kernel version: 2.6.21.3
+# Mon Jun 11 18:32:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -44,8 +44,7 @@ CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
+# CONFIG_IKCONFIG is not set
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
@@ -167,7 +166,7 @@ CONFIG_S3C2410_CLOCK=y
# CONFIG_MACH_OTOM is not set
# CONFIG_MACH_AML_M5900 is not set
# CONFIG_MACH_VR1000 is not set
-# CONFIG_MACH_QT2410 is not set
+CONFIG_MACH_QT2410=y
CONFIG_MACH_NEO1973_GTA01=y
#
@@ -188,6 +187,7 @@ CONFIG_ARCH_S3C2440=y
# CONFIG_MACH_NEXCODER_2440 is not set
CONFIG_SMDK2440_CPU2440=y
CONFIG_MACH_HXD8=y
+# CONFIG_MACH_NEO1973_GTA02 is not set
#
# S3C2442 Machines
@@ -237,8 +237,7 @@ CONFIG_ARM_THUMB=y
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=200
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
+# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -257,7 +256,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+CONFIG_CMDLINE="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
@@ -276,14 +275,16 @@ CONFIG_FPE_FASTFPE=y
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=m
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
#
# Power management options
#
CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+CONFIG_DISABLE_CONSOLE_SUSPEND=y
# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM_EMULATION=y
@@ -296,7 +297,7 @@ 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
@@ -314,7 +315,10 @@ CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP is not set
+CONFIG_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
@@ -838,6 +842,8 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+CONFIG_NET_PCI=y
+CONFIG_CS89x0=m
#
# Ethernet (1000 Mbit)
@@ -911,6 +917,7 @@ CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_STOWAWAY=m
CONFIG_KEYBOARD_GPIO=m
CONFIG_KEYBOARD_GTA01=y
+CONFIG_KEYBOARD_QT2410=y
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
@@ -1005,9 +1012,9 @@ CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#
-CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCF=m
-CONFIG_I2C_ALGOPCA=m
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
@@ -1025,11 +1032,12 @@ CONFIG_I2C_S3C2410=y
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_SENSORS_EEPROM is not set
CONFIG_SENSORS_PCF50606=y
+# CONFIG_SENSORS_PCF50633 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_TSL256X 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
@@ -1126,7 +1134,7 @@ CONFIG_LEDS_CLASS=y
#
# LED drivers
#
-# CONFIG_LEDS_S3C24XX is not set
+CONFIG_LEDS_S3C24XX=m
CONFIG_LEDS_GTA01=y
#
@@ -1134,7 +1142,7 @@ CONFIG_LEDS_GTA01=y
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
#
# Multimedia devices
@@ -1172,6 +1180,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_S3C2410=y
CONFIG_FB_S3C2410_DEBUG=y
+# CONFIG_FB_GLAMO is not set
# CONFIG_FB_VIRTUAL is not set
#
@@ -1266,11 +1275,11 @@ CONFIG_SND_SOC=y
#
# SoC Audio for the Samsung S3C24XX
#
-CONFIG_SND_S3C24XX_SOC=y
-CONFIG_SND_S3C24XX_SOC_I2S=y
+CONFIG_SND_S3C24XX_SOC=m
+CONFIG_SND_S3C24XX_SOC_I2S=m
CONFIG_SND_S3C24XX_SOC_SMDK2440=m
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
-CONFIG_SND_SOC_WM8753=y
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m
+CONFIG_SND_SOC_WM8753=m
CONFIG_SND_SOC_UDA1380=m
#
@@ -1515,7 +1524,7 @@ CONFIG_USB_ETH_RNDIS=y
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
-CONFIG_MMC_S3C=y
+CONFIG_MMC_S3C=m
#
# Real Time Clock
@@ -1566,11 +1575,7 @@ CONFIG_JBD=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_SECURITY is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
+# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -1623,7 +1628,16 @@ CONFIG_CONFIGFS_FS=m
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_YAFFS_FS is not set
+CONFIG_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
@@ -1653,6 +1667,7 @@ CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
+# CONFIG_ROOT_NFS is not set
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
@@ -1747,9 +1762,9 @@ CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
-CONFIG_TIMER_STATS=y
+# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT 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
@@ -1758,7 +1773,7 @@ CONFIG_TIMER_STATS=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_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
diff --git a/packages/linux/linux-gta01/fix-EVIOCGRAB-semantics.patch b/packages/linux/linux-gta01/fix-EVIOCGRAB-semantics.patch
new file mode 100644
index 0000000000..3c96faa271
--- /dev/null
+++ b/packages/linux/linux-gta01/fix-EVIOCGRAB-semantics.patch
@@ -0,0 +1,97 @@
+diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
+index 12c7ab8..c7e741b 100644
+--- a/drivers/input/evdev.c
++++ b/drivers/input/evdev.c
+@@ -29,7 +29,7 @@ struct evdev {
+ char name[16];
+ struct input_handle handle;
+ wait_queue_head_t wait;
+- struct evdev_list *grab;
++ int grab;
+ struct list_head list;
+ };
+
+@@ -37,6 +37,7 @@ struct evdev_list {
+ struct input_event buffer[EVDEV_BUFFER_SIZE];
+ int head;
+ int tail;
++ int grab;
+ struct fasync_struct *fasync;
+ struct evdev *evdev;
+ struct list_head node;
+@@ -49,8 +50,7 @@ static void evdev_event(struct input_han
+ struct evdev *evdev = handle->private;
+ struct evdev_list *list;
+
+- if (evdev->grab) {
+- list = evdev->grab;
++ list_for_each_entry(list, &evdev->list, node) {
+
+ do_gettimeofday(&list->buffer[list->head].time);
+ list->buffer[list->head].type = type;
+@@ -59,17 +59,7 @@ static void evdev_event(struct input_han
+ list->head = (list->head + 1) & (EVDEV_BUFFER_SIZE - 1);
+
+ kill_fasync(&list->fasync, SIGIO, POLL_IN);
+- } else
+- list_for_each_entry(list, &evdev->list, node) {
+-
+- do_gettimeofday(&list->buffer[list->head].time);
+- list->buffer[list->head].type = type;
+- list->buffer[list->head].code = code;
+- list->buffer[list->head].value = value;
+- list->head = (list->head + 1) & (EVDEV_BUFFER_SIZE - 1);
+-
+- kill_fasync(&list->fasync, SIGIO, POLL_IN);
+- }
++ }
+
+ wake_up_interruptible(&evdev->wait);
+ }
+@@ -104,9 +94,10 @@ static int evdev_release(struct inode *
+ {
+ struct evdev_list *list = file->private_data;
+
+- if (list->evdev->grab == list) {
+- input_release_device(&list->evdev->handle);
+- list->evdev->grab = NULL;
++ if (list->grab) {
++ if(!--list->evdev->grab && list->evdev->exist)
++ input_release_device(&list->evdev->handle);
++ list->grab = 0;
+ }
+
+ evdev_fasync(-1, file, 0);
+@@ -483,17 +474,19 @@ static long evdev_ioctl_handler(struct f
+
+ case EVIOCGRAB:
+ if (p) {
+- if (evdev->grab)
+- return -EBUSY;
+- if (input_grab_device(&evdev->handle))
++ if (list->grab)
+ return -EBUSY;
+- evdev->grab = list;
++ if (!evdev->grab++)
++ if (input_grab_device(&evdev->handle))
++ return -EBUSY;
++ list->grab = 0;
+ return 0;
+ } else {
+- if (evdev->grab != list)
++ if (!list->grab)
+ return -EINVAL;
+- input_release_device(&evdev->handle);
+- evdev->grab = NULL;
++ if (!--evdev->grab)
++ input_release_device(&evdev->handle);
++ list->grab = 0;
+ return 0;
+ }
+
+-
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at http://www.tux.org/lkml/
+
diff --git a/packages/linux/linux-gta01/udc-nomodule-misccr.patch b/packages/linux/linux-gta01/udc-nomodule-misccr.patch
deleted file mode 100644
index 0f84b56c2a..0000000000
--- a/packages/linux/linux-gta01/udc-nomodule-misccr.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: linux-2.6.17.14-fic1/drivers/usb/gadget/s3c2410_udc.c
-===================================================================
---- linux-2.6.17.14-fic1.orig/drivers/usb/gadget/s3c2410_udc.c 2006-11-03 01:22:14.000000000 +0100
-+++ linux-2.6.17.14-fic1/drivers/usb/gadget/s3c2410_udc.c 2006-11-03 12:41:52.000000000 +0100
-@@ -1492,7 +1492,7 @@
- return -ENODEV;
- if (udc->driver)
- return -EBUSY;
-- if (!driver->bind || !driver->unbind || !driver->setup
-+ if (!driver->bind || !driver->setup
- || driver->speed == USB_SPEED_UNKNOWN)
- return -EINVAL;
-
-@@ -1700,6 +1700,8 @@
- }
- dprintk(DEBUG_VERBOSE, "%s: got irq %i\n", gadget_name, IRQ_USBD);
-
-+ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND0|S3C2410_MISCCR_USBSUSPND1, 0);
-+
- #ifdef ENABLE_SYSFS
- /* create device files */
- device_create_file(&pdev->dev, &dev_attr_regs);
diff --git a/packages/linux/linux-gta01_2.6.17.14.bb b/packages/linux/linux-gta01_2.6.17.14.bb
deleted file mode 100644
index 8f3c37753a..0000000000
--- a/packages/linux/linux-gta01_2.6.17.14.bb
+++ /dev/null
@@ -1,101 +0,0 @@
-DESCRIPTION = "2.6 Linux Development Kernel for FIC Neo1973 (GTA01)"
-SECTION = "kernel"
-AUTHOR = "Harald Welte <laforge@openmoko.org>"
-HOMEPAGE = "N/A"
-LICENSE = "GPL"
-DEPENDS += "uboot-gta01"
-MOKOR = "moko7"
-PR = "${MOKOR}-r1"
-
-inherit kernel
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
-#HWSRC = "http://people.gta01.openmoko.org/laforge/src/kernel/20060806"
-
-##############################################################
-# source and patches
-#
-SRC_URI = "http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.14.tar.bz2 \
- svn://svn.openmoko.org/trunk/src/target/kernel;module=patches;proto=https \
- file://defconfig-${MACHINE}"
-S = "${WORKDIR}/linux-2.6.17.14"
-
-##############################################################
-# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-COMPATIBLE_MACHINE = 'fic-gta01'
-
-CMDLINE_CON = "console=ttySAC0,115200n8"
-#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
-# uncomment if you want to boot over NFS
-#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
-# uncomment to enable dyntick
-#CMDLINE_OTHER = "dyntick=enable"
-CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
-CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
-CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
-
-###############################################################
-# module configs specific to this kernel
-#
-module_autoload_ohci-hcd = "ohci-hcd"
-module_autoload_g_ether = "g_ether"
-#module_autoload_snd-pcm-oss = "snd-pcm-oss"
-#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
-
-do_prepatch() {
- mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
- rm -Rf patches .pc
-}
-
-do_configure() {
- #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
-
- if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
- die "No default configuration for ${MACHINE} available."
- fi
-
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-
- if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
- echo "CONFIG_AEABI=y" >> ${S}/.config
- echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
- else
- echo "# CONFIG_AEABI is not set" >> ${S}/.config
- echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
- fi
-
- sed -e '/CONFIG_AEABI/d' \
- -e '/CONFIG_OABI_COMPAT=/d' \
- -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
- -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
-
- yes '' | oe_runmake oldconfig
-}
-
-###############################################################
-# put into deploy directory and append u-boot header
-#
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
- arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
- rm -f linux.bin.gz
- gzip -9 linux.bin
- uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
- rm -f linux.bin.gz
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask prepatch before do_patch after do_unpack
-addtask deploy before do_package after do_install
-
diff --git a/packages/linux/linux-gta01_2.6.17.7.bb b/packages/linux/linux-gta01_2.6.17.7.bb
deleted file mode 100644
index cf4bfeb8ea..0000000000
--- a/packages/linux/linux-gta01_2.6.17.7.bb
+++ /dev/null
@@ -1,97 +0,0 @@
-DESCRIPTION = "2.6 Linux Development Kernel for FIC GTA01"
-SECTION = "kernel"
-AUTHOR = "Harald Welte <hwelte@hmw-consulting.de>"
-HOMEPAGE = "N/A"
-LICENSE = "GPL"
-DEPENDS += "uboot-gta01"
-PR = "r4"
-
-inherit kernel
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
-HWSRC = "http://people.gta01.hmw-consulting.de/laforge/src/kernel/20060806"
-
-##############################################################
-# source and patches
-#
-SRC_URI = "http://people.gta01.hmw-consulting.de/laforge/tmp/linux-2.6.17.7-gta01-lcm.tar.bz2 \
- file://defconfig-${MACHINE}"
-S = "${WORKDIR}/linux-2.6.17.7-new"
-
-##############################################################
-# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-COMPATIBLE_MACHINE = 'fic-gta01'
-
-CMDLINE_CON = "console=ttySAC0,115200n8"
-#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
-# uncomment if you want to boot over NFS
-#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
-# uncomment to enable dyntick
-#CMDLINE_OTHER = "dyntick=enable"
-CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
-CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
-CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
-
-###############################################################
-# module configs specific to this kernel
-#
-#module_autoload_pxaficp_ir = "pxaficp_ir"
-#module_autoload_snd-pcm-oss = "snd-pcm-oss"
-
-do_prepatch() {
- mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
- rm -Rf patches .pc
-}
-
-do_configure() {
- #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
-
- if [ ! -e ${WORKDIR}/defconfig-${MACHINE} ]; then
- die "No default configuration for ${MACHINE} available."
- fi
-
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-
- if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
- echo "CONFIG_AEABI=y" >> ${S}/.config
- echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
- else
- echo "# CONFIG_AEABI is not set" >> ${S}/.config
- echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
- fi
-
- sed -e '/CONFIG_AEABI/d' \
- -e '/CONFIG_OABI_COMPAT=/d' \
- -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
- -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${MACHINE}' >>'${S}/.config'
-
- yes '' | oe_runmake oldconfig
-}
-
-###############################################################
-# put into deploy directory and append u-boot header
-#
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
- arm-linux-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin
- rm -f linux.bin.gz
- gzip -9 linux.bin
- uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "Kernel Image QT2410" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${MACHINE}-${DATETIME}.bin
- rm -f linux.bin.gz
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask prepatch before do_patch after do_unpack
-addtask deploy before do_package after do_install
-
diff --git a/packages/linux/linux-gta01_2.6.20.bb b/packages/linux/linux-gta01_2.6.20.bb
deleted file mode 100644
index 2c8fe80b33..0000000000
--- a/packages/linux/linux-gta01_2.6.20.bb
+++ /dev/null
@@ -1,102 +0,0 @@
-DESCRIPTION = "2.6 Linux Development Kernel for FIC Neo1973 (GTA01)"
-SECTION = "kernel"
-AUTHOR = "Harald Welte <laforge@openmoko.org>"
-HOMEPAGE = "N/A"
-LICENSE = "GPL"
-DEPENDS += "u-boot-mkimage-gta01-native"
-MOKOR = "moko8"
-PR = "${MOKOR}-r2"
-
-VANILLA_VERSION = "2.6.20"
-
-inherit kernel
-
-FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-gta01"
-
-##############################################################
-# source and patches
-#
-SRC_URI = "http://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
- svn://svn.openmoko.org/branches/src/target/kernel/2.6.20.x;module=patches;proto=http \
- file://defconfig-${VANILLA_VERSION}-${MACHINE}"
-S = "${WORKDIR}/linux-${VANILLA_VERSION}"
-
-##############################################################
-# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
-COMPATIBLE_MACHINE = 'fic-gta01'
-
-CMDLINE_CON = ""
-#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
-# uncomment if you want to boot over NFS
-#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
-# uncomment to enable dyntick
-#CMDLINE_OTHER = "dyntick=enable"
-CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
-CMDLINE_IP = "ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off"
-CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
-
-###############################################################
-# module configs specific to this kernel
-#
-module_autoload_ohci-hcd = "ohci-hcd"
-module_autoload_g_ether = "g_ether"
-#module_autoload_snd-pcm-oss = "snd-pcm-oss"
-#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
-
-do_prepatch() {
- mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
- rm -Rf patches .pc
-}
-
-do_configure() {
- #install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
-
- if [ ! -e ${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE} ]; then
- die "No default configuration for ${MACHINE} available."
- fi
-
- echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
-
- if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
- echo "CONFIG_AEABI=y" >> ${S}/.config
- echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
- else
- echo "# CONFIG_AEABI is not set" >> ${S}/.config
- echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
- fi
-
- sed -e '/CONFIG_AEABI/d' \
- -e '/CONFIG_OABI_COMPAT=/d' \
- -e '/CONFIG_CMDLINE=/d' \
- -e '/CONFIG_MTD_MTDRAM_SA1100=/d' \
- -e '/CONFIG_MTDRAM_TOTAL_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ERASE_SIZE=/d' \
- -e '/CONFIG_MTDRAM_ABS_POS=/d' \
- '${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE}' >>'${S}/.config'
-
- yes '' | oe_runmake oldconfig
-}
-
-###############################################################
-# put into deploy directory and append u-boot header
-#
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${PR}-${MACHINE}.tgz -C ${D} lib
- ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
- rm -f linux.bin.gz
- gzip -9 linux.bin
- uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
- rm -f linux.bin.gz
-}
-
-do_deploy[dirs] = "${S}"
-
-addtask prepatch before do_patch after do_unpack
-addtask deploy before do_package after do_install
-
diff --git a/packages/linux/linux-gta01_2.6.21.1.bb b/packages/linux/linux-gta01_2.6.21.3.bb
index a9bf11126b..cccc4dd6a1 100644
--- a/packages/linux/linux-gta01_2.6.21.1.bb
+++ b/packages/linux/linux-gta01_2.6.21.3.bb
@@ -1,10 +1,10 @@
require linux-gta01.inc
-DEFAULT_PREFERENCE = "-6"
+SRC_URI += "svn://svn.openmoko.org/trunk/src/target/kernel;module=patches;proto=http"
+SRC_URI += "file://fix-EVIOCGRAB-semantics.patch;patch=1"
MOKOR = "moko10"
-PR = "${MOKOR}-r0"
-VANILLA_VERSION = "2.6.21.1"
+PR = "${MOKOR}-r3"
-SRC_URI += "svn://svn.openmoko.org/trunk/src/target/kernel;module=patches;proto=http"
+VANILLA_VERSION = "2.6.21.3"
diff --git a/packages/linux/linux-hackndev-2.6_svn.bb b/packages/linux/linux-hackndev-2.6_svn.bb
index fa2a209d50..64d74a357f 100644
--- a/packages/linux/linux-hackndev-2.6_svn.bb
+++ b/packages/linux/linux-hackndev-2.6_svn.bb
@@ -19,7 +19,7 @@ S = "${WORKDIR}/trunk"
K_MAJOR = "2"
K_MINOR = "6"
K_MICRO = "21"
-HHV="hnd1"
+HHV="hnd2"
PV = "${K_MAJOR}.${K_MINOR}.${K_MICRO}-${HHV}"
inherit kernel
diff --git a/packages/linux/linux-handhelds-2.6/aximx50/defconfig b/packages/linux/linux-handhelds-2.6/aximx50/defconfig
index 7b2c332d40..111b8bf0f9 100644
--- a/packages/linux/linux-handhelds-2.6/aximx50/defconfig
+++ b/packages/linux/linux-handhelds-2.6/aximx50/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:21 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:15 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/h2200/defconfig b/packages/linux/linux-handhelds-2.6/h2200/defconfig
index c40780e0d9..b9a1b826b6 100644
--- a/packages/linux/linux-handhelds-2.6/h2200/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:23 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:16 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/h3600/defconfig b/packages/linux/linux-handhelds-2.6/h3600/defconfig
index bd58264fd9..03d94d8ac9 100644
--- a/packages/linux/linux-handhelds-2.6/h3600/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3600/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:24 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:18 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/h3800/defconfig b/packages/linux/linux-handhelds-2.6/h3800/defconfig
index 8b93a0f93c..6affe42376 100644
--- a/packages/linux/linux-handhelds-2.6/h3800/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3800/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:26 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:20 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/h3900/defconfig b/packages/linux/linux-handhelds-2.6/h3900/defconfig
index 5fba9c979f..7e5f8d2d0e 100644
--- a/packages/linux/linux-handhelds-2.6/h3900/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h3900/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:28 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:22 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/h4000/defconfig b/packages/linux/linux-handhelds-2.6/h4000/defconfig
index 5720f82af4..259486ee78 100644
--- a/packages/linux/linux-handhelds-2.6/h4000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h4000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:30 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:24 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/h5000/defconfig b/packages/linux/linux-handhelds-2.6/h5000/defconfig
index 710f15a716..48c421e9d8 100644
--- a/packages/linux/linux-handhelds-2.6/h5000/defconfig
+++ b/packages/linux/linux-handhelds-2.6/h5000/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:32 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:26 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig b/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
index 36946e8e09..94714a6d7b 100644
--- a/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcblueangel/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:37 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:31 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
index b50b9e4d29..e679e5e847 100644
--- a/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcuniversal/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:39 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:33 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig b/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
index 0035d6189c..a2da0c17b3 100644
--- a/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
+++ b/packages/linux/linux-handhelds-2.6/htcwallaby/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:40 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:35 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/hx4700/defconfig b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
index 67e1c59d84..baba338606 100644
--- a/packages/linux/linux-handhelds-2.6/hx4700/defconfig
+++ b/packages/linux/linux-handhelds-2.6/hx4700/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:33 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:28 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6/magician/defconfig b/packages/linux/linux-handhelds-2.6/magician/defconfig
index c7c8c5cb91..7cd642f521 100644
--- a/packages/linux/linux-handhelds-2.6/magician/defconfig
+++ b/packages/linux/linux-handhelds-2.6/magician/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-hh8
-# Wed Jun 20 18:24:35 2007
+# Linux kernel version: 2.6.21-hh9
+# Fri Jun 22 18:35:29 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -49,7 +49,8 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
diff --git a/packages/linux/linux-handhelds-2.6_2.6.21-hh9.bb b/packages/linux/linux-handhelds-2.6_2.6.21-hh9.bb
new file mode 100644
index 0000000000..ec5844bfb5
--- /dev/null
+++ b/packages/linux/linux-handhelds-2.6_2.6.21-hh9.bb
@@ -0,0 +1,11 @@
+SECTION = "kernel"
+DESCRIPTION = "handhelds.org Linux kernel 2.6 for PocketPCs and other consumer handheld devices."
+LICENSE = "GPL"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+ file://defconfig"
+
+require linux-handhelds-2.6.inc
diff --git a/packages/linux/linux-jlime-current.bb b/packages/linux/linux-jlime-current.bb
new file mode 100644
index 0000000000..68bcd4ab04
--- /dev/null
+++ b/packages/linux/linux-jlime-current.bb
@@ -0,0 +1,19 @@
+###########################################################################
+# Currently supports :
+# HP Jornada 620/660/680/690
+# HP Jornada 710/720/728
+# Nec Mobilepro 900c
+# Nec Mobilpro 770/880
+
+DESCRIPTION = "2.6 Linux Development Kernel for JLime supported Machines."
+SECTION = "kernel"
+LICENSE = "GPL"
+
+inherit kernel
+
+PR = "r1"
+
+SRC_URI = "git://filip.eu.org/jlime-current.git;protocol=git \
+ git://filip.eu.org/jlime.git;protocol=git"
+
+S = "${WORKDIR}/jlime-current"
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-qemuarm b/packages/linux/linux-rp-2.6.17/defconfig-qemuarm
index abb6726556..e34fe5c090 100644
--- a/packages/linux/linux-rp-2.6.17/defconfig-qemuarm
+++ b/packages/linux/linux-rp-2.6.17/defconfig-qemuarm
@@ -616,10 +616,7 @@ 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_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
diff --git a/packages/linux/linux-rp-2.6.17/defconfig-qemux86 b/packages/linux/linux-rp-2.6.17/defconfig-qemux86
index fb66874b90..6fe280985f 100644
--- a/packages/linux/linux-rp-2.6.17/defconfig-qemux86
+++ b/packages/linux/linux-rp-2.6.17/defconfig-qemux86
@@ -39,7 +39,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_UID16=y
CONFIG_VM86=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_EMBEDDED is not set
+CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
@@ -812,13 +812,10 @@ 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_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
+CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
# CONFIG_INPUT_POWER is not set
@@ -831,8 +828,8 @@ CONFIG_KEYBOARD_ATKBD=y
# 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_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
@@ -880,8 +877,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_CORE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=y
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
@@ -1224,7 +1220,7 @@ CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
+CONFIG_USB_OHCI_HCD=y
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
@@ -1263,7 +1259,7 @@ CONFIG_USB_HIDINPUT=y
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
+CONFIG_USB_WACOM=y
# CONFIG_USB_ACECAD is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-akita b/packages/linux/linux-rp-2.6.20/defconfig-akita
index c20d0c2030..c89d954696 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-akita
+++ b/packages/linux/linux-rp-2.6.20/defconfig-akita
@@ -1,13 +1,23 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Thu Mar 23 22:11:12 2006
+# 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
@@ -24,16 +34,22 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# 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_UID16=y
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
@@ -45,11 +61,9 @@ 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_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
@@ -60,7 +74,6 @@ CONFIG_BASE_SMALL=0
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
@@ -68,6 +81,10 @@ CONFIG_KMOD=y
#
# Block layer
#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
#
# IO Schedulers
@@ -85,16 +102,28 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -102,20 +131,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_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_TRIZEPS4 is not set
# CONFIG_MACH_HX2750 is not set
# CONFIG_PXA_SHARPSL_25x is not set
CONFIG_PXA_SHARPSL_27x=y
@@ -123,10 +148,9 @@ 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
+# CONFIG_PXA_KEYS is not set
#
# Processor Type
@@ -137,13 +161,16 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
CONFIG_SHARP_PARAM=y
CONFIG_SHARPSL_PM=y
CONFIG_SHARP_SCOOP=y
@@ -171,7 +198,9 @@ CONFIG_PCMCIA_PXA2XX=y
#
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI 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
@@ -181,6 +210,7 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
CONFIG_ALIGNMENT_TRAP=y
#
@@ -188,7 +218,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 fbcon=rotate:1 dyntick=enable quiet"
# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
#
# CPU Frequency scaling
@@ -212,7 +244,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
@@ -220,6 +251,7 @@ 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
#
@@ -236,6 +268,7 @@ CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -249,11 +282,17 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
#
# IP: Virtual Server Configuration
@@ -261,11 +300,21 @@ CONFIG_TCP_CONG_BIC=y
# 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
@@ -273,22 +322,12 @@ CONFIG_NETFILTER=y
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
# CONFIG_NETFILTER_XTABLES is not set
#
# IP: Netfilter Configuration
#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=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
#
@@ -319,7 +358,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
@@ -378,6 +416,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
@@ -409,6 +448,8 @@ CONFIG_IEEE80211=m
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
@@ -421,6 +462,7 @@ 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
@@ -442,11 +484,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
@@ -472,6 +516,7 @@ CONFIG_MTD_ROM=y
# 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
@@ -481,7 +526,6 @@ CONFIG_MTD_SHARP_SL=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
#
@@ -496,6 +540,7 @@ CONFIG_MTD_SHARP_SL=y
#
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
@@ -525,7 +570,7 @@ CONFIG_BLK_DEV_LOOP=y
# 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_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -533,6 +578,7 @@ CONFIG_BLK_DEV_RAM_COUNT=16
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -562,6 +608,8 @@ CONFIG_IDE_GENERIC=y
#
# 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
#
@@ -581,20 +629,21 @@ 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
#
-# SCSI Transport Attributes
+# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DEBUG is not set
#
@@ -607,10 +656,17 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_PCMCIA_SYM53C500 is not set
#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=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
@@ -652,6 +708,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
#
# Ethernet (1000 Mbit)
@@ -669,6 +726,7 @@ CONFIG_MII=m
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
#
# Obsolete Wireless cards support (pre-802.11)
@@ -695,6 +753,7 @@ 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
@@ -728,6 +787,7 @@ CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -742,6 +802,7 @@ CONFIG_PPP_BSDCOMP=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
@@ -765,6 +826,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_CORGI is not set
CONFIG_KEYBOARD_SPITZ=y
# CONFIG_INPUT_MOUSE is not set
@@ -775,6 +837,10 @@ CONFIG_TOUCHSCREEN_CORGI=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
@@ -790,6 +856,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
#
@@ -820,15 +887,12 @@ CONFIG_UNIX98_PTYS=y
# 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
@@ -840,7 +904,6 @@ CONFIG_UNIX98_PTYS=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -860,6 +923,7 @@ CONFIG_I2C=y
#
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
@@ -899,10 +963,7 @@ CONFIG_I2C_PXA=y
#
# Misc devices
#
-
-#
-# Multimedia Capabilities Port drivers
-#
+# CONFIG_TIFM_CORE is not set
#
# Multi-Function Devices
@@ -913,11 +974,20 @@ CONFIG_I2C_PXA=y
#
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=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
@@ -928,66 +998,30 @@ 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_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_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
@@ -1013,14 +1047,20 @@ CONFIG_FONT_8x16=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_LCD_DEVICE=y
CONFIG_BACKLIGHT_CORGI=y
-# CONFIG_BACKLIGHT_HP680 is not set
#
# Sound
@@ -1033,23 +1073,27 @@ CONFIG_SOUND=m
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set
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
@@ -1070,6 +1114,8 @@ CONFIG_SND_USB_AUDIO=m
#
# PCMCIA devices
#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
#
# SoC audio support
@@ -1085,23 +1131,37 @@ CONFIG_SND_SOC=m
#
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
+# 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
@@ -1111,12 +1171,19 @@ CONFIG_SND_SOC_WM8750=m
# 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
@@ -1142,7 +1209,6 @@ 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
@@ -1164,13 +1230,13 @@ 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
@@ -1185,9 +1251,7 @@ 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_TOUCHSCREEN is not set
# CONFIG_USB_YEALINK is not set
CONFIG_USB_XPAD=m
CONFIG_USB_ATI_REMOTE=m
@@ -1202,31 +1266,23 @@ 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_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_ZD1201 is not set
CONFIG_USB_MON=y
#
@@ -1238,8 +1294,9 @@ 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
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
@@ -1247,6 +1304,7 @@ CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
@@ -1271,15 +1329,20 @@ 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_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
#
@@ -1287,16 +1350,20 @@ 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_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_TEST is not set
#
@@ -1316,6 +1383,7 @@ 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
@@ -1325,6 +1393,7 @@ 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
@@ -1333,13 +1402,16 @@ 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
@@ -1347,16 +1419,24 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
#
# RTC drivers
#
# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_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
@@ -1366,16 +1446,19 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=m
# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
+# 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 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
@@ -1402,11 +1485,12 @@ 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_RELAYFS_FS is not set
# CONFIG_CONFIGFS_FS is not set
#
@@ -1419,18 +1503,20 @@ 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_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
@@ -1450,9 +1536,14 @@ CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=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
@@ -1463,7 +1554,9 @@ 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
@@ -1536,6 +1629,11 @@ CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
CONFIG_PROFILING=y
@@ -1545,26 +1643,33 @@ 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_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_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 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
@@ -1578,7 +1683,12 @@ CONFIG_DEBUG_ERRORS=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
@@ -1587,9 +1697,14 @@ 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
@@ -1599,6 +1714,7 @@ 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
@@ -1610,10 +1726,14 @@ CONFIG_CRYPTO_TEST=m
#
# 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_SHARPSL_RC=n
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+CONFIG_SHARPSL_RC=m
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-c7x0 b/packages/linux/linux-rp-2.6.20/defconfig-c7x0
index ad7fca8861..452e0a669c 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-c7x0
+++ b/packages/linux/linux-rp-2.6.20/defconfig-c7x0
@@ -1,13 +1,23 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16
-# Mon May 22 09:00:01 2006
+# 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
@@ -24,16 +34,22 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# 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_UID16=y
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
@@ -45,11 +61,9 @@ 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_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
@@ -60,7 +74,6 @@ CONFIG_BASE_SMALL=0
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
@@ -68,6 +81,10 @@ CONFIG_KMOD=y
#
# Block layer
#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
#
# IO Schedulers
@@ -85,16 +102,28 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -102,20 +131,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_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_TRIZEPS4 is not set
# CONFIG_MACH_HX2750 is not set
CONFIG_PXA_SHARPSL_25x=y
# CONFIG_PXA_SHARPSL_27x is not set
@@ -125,9 +150,9 @@ 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
+# CONFIG_PXA_KEYS is not set
#
# Processor Type
@@ -138,13 +163,16 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_IWMMXT is not set
CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
CONFIG_SHARP_PARAM=y
CONFIG_SHARPSL_PM=y
CONFIG_SHARP_SCOOP=y
@@ -172,7 +200,9 @@ CONFIG_PCMCIA_PXA2XX=y
#
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
-# CONFIG_AEABI 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
@@ -182,6 +212,7 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
CONFIG_ALIGNMENT_TRAP=y
#
@@ -189,7 +220,10 @@ 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 quiet"
# CONFIG_XIP_KERNEL is not set
+CONFIG_CPU_FREQ_PXA25x=y
+CONFIG_KEXEC=y
#
# CPU Frequency scaling
@@ -206,7 +240,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
@@ -225,7 +258,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
@@ -233,6 +265,7 @@ 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
#
@@ -249,6 +282,7 @@ 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
@@ -262,11 +296,17 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
#
# IP: Virtual Server Configuration
@@ -274,11 +314,21 @@ CONFIG_TCP_CONG_BIC=y
# 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
@@ -286,22 +336,12 @@ CONFIG_NETFILTER=y
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
# CONFIG_NETFILTER_XTABLES is not set
#
# IP: Netfilter Configuration
#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=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
#
@@ -332,7 +372,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
@@ -391,6 +430,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
@@ -422,6 +462,8 @@ CONFIG_IEEE80211=m
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
@@ -434,6 +476,7 @@ 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
@@ -455,11 +498,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
@@ -485,6 +530,7 @@ CONFIG_MTD_ROM=y
# 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
@@ -494,7 +540,6 @@ CONFIG_MTD_SHARP_SL=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
#
@@ -509,6 +554,7 @@ CONFIG_MTD_SHARP_SL=y
#
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
@@ -538,7 +584,7 @@ CONFIG_BLK_DEV_LOOP=y
# 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_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -546,6 +592,7 @@ CONFIG_BLK_DEV_RAM_COUNT=16
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -575,6 +622,8 @@ CONFIG_IDE_GENERIC=y
#
# 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
#
@@ -594,20 +643,21 @@ 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
#
-# SCSI Transport Attributes
+# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DEBUG is not set
#
@@ -620,10 +670,17 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_PCMCIA_SYM53C500 is not set
#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=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
@@ -665,6 +722,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
#
# Ethernet (1000 Mbit)
@@ -682,6 +740,7 @@ CONFIG_MII=m
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
#
# Obsolete Wireless cards support (pre-802.11)
@@ -708,6 +767,7 @@ 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
@@ -741,6 +801,7 @@ CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -755,6 +816,7 @@ CONFIG_PPP_BSDCOMP=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
@@ -778,6 +840,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_KEYBOARD_CORGI=y
# CONFIG_KEYBOARD_SPITZ is not set
# CONFIG_INPUT_MOUSE is not set
@@ -788,6 +851,10 @@ CONFIG_TOUCHSCREEN_CORGI=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
@@ -803,6 +870,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
#
@@ -833,15 +901,12 @@ CONFIG_UNIX98_PTYS=y
# 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
@@ -853,7 +918,6 @@ CONFIG_UNIX98_PTYS=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -873,6 +937,7 @@ CONFIG_I2C_ALGOBIT=y
#
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
@@ -912,10 +977,7 @@ CONFIG_I2C_PXA=y
#
# Misc devices
#
-
-#
-# Multimedia Capabilities Port drivers
-#
+# CONFIG_TIFM_CORE is not set
#
# Multi-Function Devices
@@ -926,56 +988,93 @@ CONFIG_I2C_PXA=y
#
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=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 For Linux
+# Video Capture Adapters
#
#
-# Video 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_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER 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_RADIO_MAESTRO is not set
+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
@@ -1004,13 +1103,16 @@ 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
+# 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
-# CONFIG_BACKLIGHT_HP680 is not set
#
# Sound
@@ -1023,23 +1125,27 @@ CONFIG_SOUND=m
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set
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
@@ -1060,6 +1166,8 @@ CONFIG_SND_USB_AUDIO=m
#
# PCMCIA devices
#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
#
# SoC audio support
@@ -1075,23 +1183,37 @@ CONFIG_SND_SOC=m
#
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
+# 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
@@ -1101,12 +1223,19 @@ CONFIG_SND_SOC_WM8731=m
# 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
@@ -1129,7 +1258,6 @@ 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
@@ -1151,13 +1279,13 @@ 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
@@ -1172,9 +1300,7 @@ 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_TOUCHSCREEN is not set
# CONFIG_USB_YEALINK is not set
CONFIG_USB_XPAD=m
CONFIG_USB_ATI_REMOTE=m
@@ -1189,37 +1315,23 @@ 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_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_ZD1201 is not set
CONFIG_USB_MON=y
#
@@ -1231,8 +1343,9 @@ 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
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
@@ -1240,6 +1353,7 @@ CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
@@ -1264,14 +1378,20 @@ 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_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
#
@@ -1279,16 +1399,20 @@ 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_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_TEST is not set
#
@@ -1309,6 +1433,7 @@ CONFIG_USB_PXA2XX=y
# 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
@@ -1318,6 +1443,7 @@ 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
@@ -1326,13 +1452,16 @@ 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
@@ -1340,16 +1469,24 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
#
# RTC drivers
#
# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_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
@@ -1358,14 +1495,17 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
+# CONFIG_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_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
@@ -1392,11 +1532,12 @@ 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_RELAYFS_FS is not set
# CONFIG_CONFIGFS_FS is not set
#
@@ -1409,18 +1550,20 @@ 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_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
@@ -1440,9 +1583,14 @@ CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=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
@@ -1453,7 +1601,9 @@ 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
@@ -1526,6 +1676,11 @@ CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
CONFIG_PROFILING=y
@@ -1535,26 +1690,33 @@ CONFIG_OPROFILE=m
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_PREEMPT 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_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 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
@@ -1568,7 +1730,12 @@ CONFIG_DEBUG_ERRORS=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
@@ -1577,9 +1744,14 @@ 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
@@ -1589,6 +1761,7 @@ 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
@@ -1600,10 +1773,14 @@ CONFIG_CRYPTO_TEST=m
#
# 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_SHARPSL_RC=m
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+# CONFIG_SHARPSL_RC 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 1c6c0be8cc..422ed94df3 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-collie
+++ b/packages/linux/linux-rp-2.6.20/defconfig-collie
@@ -1736,3 +1736,4 @@ 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.20/defconfig-hx2000 b/packages/linux/linux-rp-2.6.20/defconfig-hx2000
index e0df2ae453..2a67a2d045 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-hx2000
+++ b/packages/linux/linux-rp-2.6.20/defconfig-hx2000
@@ -776,7 +776,10 @@ CONFIG_MFD_TSC2101=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -1159,4 +1162,4 @@ CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
CONFIG_IOMAP_COPY=y
-CONFIG_SHARPSL_RC=n
+# CONFIG_SHARPSL_RC 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 f332c72d56..13616c08f1 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-poodle
+++ b/packages/linux/linux-rp-2.6.20/defconfig-poodle
@@ -1653,4 +1653,4 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
-CONFIG_SHARPSL_RC=n
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-qemuarm b/packages/linux/linux-rp-2.6.20/defconfig-qemuarm
index ed8f122cb0..f70b6db7c7 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-qemuarm
+++ b/packages/linux/linux-rp-2.6.20/defconfig-qemuarm
@@ -415,7 +415,7 @@ CONFIG_BLK_DEV_LOOP=y
# 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_SIZE=51200
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -752,7 +752,9 @@ CONFIG_NEW_LEDS=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y
#
@@ -1188,4 +1190,4 @@ CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
-CONFIG_SHARPSL_RC=n
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-qemux86 b/packages/linux/linux-rp-2.6.20/defconfig-qemux86
index 39ca9ffea7..08e0a0c6c7 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-qemux86
+++ b/packages/linux/linux-rp-2.6.20/defconfig-qemux86
@@ -428,8 +428,10 @@ CONFIG_BLK_DEV_FD=y
# 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_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
@@ -975,7 +977,9 @@ CONFIG_HWMON=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y
#
@@ -1560,4 +1564,4 @@ CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y
-CONFIG_SHARPSL_RC=n
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-spitz b/packages/linux/linux-rp-2.6.20/defconfig-spitz
index ed290b2959..4ee5b814fb 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-spitz
+++ b/packages/linux/linux-rp-2.6.20/defconfig-spitz
@@ -1,15 +1,23 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17
-# Sun Sep 3 23:29:17 2006
+# Linux kernel version: 2.6.20
+# Tue Jun 26 23:12:35 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
@@ -26,17 +34,22 @@ CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
-CONFIG_SYSCTL=y
+# 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_UID16=y
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
@@ -49,6 +62,8 @@ 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
@@ -66,7 +81,10 @@ CONFIG_KMOD=y
#
# Block layer
#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
#
# IO Schedulers
@@ -84,18 +102,28 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -103,12 +131,6 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
-# CONFIG_ARCH_AT91RM9200 is not set
#
# Intel PXA2xx Implementations
@@ -118,6 +140,7 @@ 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_HX2750 is not set
# CONFIG_PXA_SHARPSL_25x is not set
CONFIG_PXA_SHARPSL_27x=y
@@ -125,10 +148,9 @@ 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
+# CONFIG_PXA_KEYS is not set
#
# Processor Type
@@ -139,13 +161,16 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
CONFIG_XSCALE_PMU=y
-CONFIG_KEXEC=y
CONFIG_SHARP_PARAM=y
CONFIG_SHARPSL_PM=y
CONFIG_SHARP_SCOOP=y
@@ -174,7 +199,8 @@ CONFIG_PCMCIA_PXA2XX=y
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
@@ -184,6 +210,7 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
CONFIG_ALIGNMENT_TRAP=y
#
@@ -191,8 +218,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/hda1 rootfstype=ext3 rw fbcon=rotate:1 dyntick=enable debug"
+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
@@ -216,7 +244,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
@@ -224,6 +251,7 @@ 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
#
@@ -240,6 +268,7 @@ CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -255,10 +284,15 @@ CONFIG_SYN_COOKIES=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_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
#
# IP: Virtual Server Configuration
@@ -270,9 +304,17 @@ CONFIG_IPV6=m
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
@@ -280,23 +322,12 @@ CONFIG_NETFILTER=y
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
# CONFIG_NETFILTER_XTABLES is not set
#
# IP: Netfilter Configuration
#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
-CONFIG_IP_NF_CT_PROTO_SCTP=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
#
@@ -327,7 +358,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
@@ -386,6 +416,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
@@ -431,6 +462,7 @@ 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
@@ -452,11 +484,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
@@ -482,6 +516,7 @@ CONFIG_MTD_ROM=y
# 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
@@ -505,6 +540,7 @@ CONFIG_MTD_SHARP_SL=y
#
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
@@ -542,6 +578,7 @@ CONFIG_BLK_DEV_LOOP=y
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -571,6 +608,8 @@ CONFIG_IDE_GENERIC=y
#
# 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
#
@@ -590,20 +629,21 @@ 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
#
-# SCSI Transport Attributes
+# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
#
# SCSI low-level drivers
#
# CONFIG_ISCSI_TCP is not set
-# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_DEBUG is not set
#
@@ -616,10 +656,17 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_PCMCIA_SYM53C500 is not set
#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=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
@@ -661,6 +708,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
#
# Ethernet (1000 Mbit)
@@ -705,6 +753,7 @@ 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
@@ -738,6 +787,7 @@ CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -752,6 +802,7 @@ CONFIG_PPP_BSDCOMP=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
@@ -775,6 +826,7 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_CORGI is not set
CONFIG_KEYBOARD_SPITZ=y
# CONFIG_INPUT_MOUSE is not set
@@ -785,6 +837,10 @@ CONFIG_TOUCHSCREEN_CORGI=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
@@ -800,6 +856,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
#
@@ -830,15 +887,12 @@ CONFIG_UNIX98_PTYS=y
# 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
@@ -850,7 +904,6 @@ CONFIG_UNIX98_PTYS=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -870,6 +923,7 @@ CONFIG_I2C=y
#
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
@@ -909,6 +963,7 @@ CONFIG_I2C_PXA=y
#
# Misc devices
#
+# CONFIG_TIFM_CORE is not set
#
# Multi-Function Devices
@@ -932,6 +987,7 @@ CONFIG_LEDS_SPITZ=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
@@ -941,49 +997,6 @@ 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_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
#
@@ -993,12 +1006,13 @@ 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_FIRMWARE_EDID=y
+# 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
@@ -1007,6 +1021,7 @@ 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
@@ -1036,10 +1051,10 @@ 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_OHAND_CLUT224=y
# CONFIG_LOGO_OZ240_CLUT224 is not set
# CONFIG_LOGO_OZ480_CLUT224 is not set
-CONFIG_LOGO_OZ640_CLUT224=y
+# CONFIG_LOGO_OZ640_CLUT224 is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
@@ -1079,7 +1094,6 @@ CONFIG_SND_DEBUG=y
# 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
@@ -1118,6 +1132,7 @@ CONFIG_SND_SOC=m
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
@@ -1128,15 +1143,25 @@ CONFIG_SND_PXA2xx_SOC_SPITZ=m
#
#
+# 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
@@ -1146,6 +1171,12 @@ CONFIG_SND_SOC_WM8750=m
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID Devices
+#
+CONFIG_HID=y
#
# USB support
@@ -1199,13 +1230,13 @@ 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
@@ -1241,16 +1272,17 @@ 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_ZD1201 is not set
CONFIG_USB_MON=y
#
@@ -1262,8 +1294,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
@@ -1297,16 +1329,20 @@ 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_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
#
@@ -1314,16 +1350,20 @@ 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_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_TEST is not set
#
@@ -1353,6 +1393,7 @@ 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
@@ -1361,6 +1402,7 @@ 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
@@ -1369,6 +1411,7 @@ CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
@@ -1376,17 +1419,24 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
#
# RTC drivers
#
# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_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
@@ -1396,16 +1446,19 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
-# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
@@ -1432,8 +1485,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
@@ -1448,18 +1503,20 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=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
@@ -1479,9 +1536,14 @@ CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
CONFIG_NFS_V4=y
# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=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
@@ -1492,7 +1554,9 @@ 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
@@ -1565,6 +1629,11 @@ CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
CONFIG_PROFILING=y
@@ -1574,27 +1643,33 @@ 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_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_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_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
@@ -1608,7 +1683,12 @@ CONFIG_DEBUG_ERRORS=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
@@ -1617,9 +1697,14 @@ 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
@@ -1629,6 +1714,7 @@ 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
@@ -1640,10 +1726,14 @@ CONFIG_CRYPTO_TEST=m
#
# 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_IOMAP_COPY=y
CONFIG_SHARPSL_RC=m
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-tosa b/packages/linux/linux-rp-2.6.20/defconfig-tosa
index 476f07cabe..4360f7a179 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-tosa
+++ b/packages/linux/linux-rp-2.6.20/defconfig-tosa
@@ -935,6 +935,9 @@ 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
@@ -1606,4 +1609,4 @@ CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_SHARPSL_RC=n
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch b/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch
index 8230d53392..da83fdf5eb 100644
--- a/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch
+++ b/packages/linux/linux-rp-2.6.20/sharpsl-rc-r1.patch
@@ -298,7 +298,7 @@ Index: linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
+ pxa_gpio_mode(REMOTE_GPIO_INT | GPIO_IN);
+ ret = request_irq(REMOTE_IRQ_INT,
+ sharpsl_rc_interrupt,
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_SHARED,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
+ "sharpsl_rc",
+ sharpsl_rc);
+ if (ret < 0) {
diff --git a/packages/elitaire/.mtn2git_empty b/packages/linux/linux-rp-2.6.21/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/elitaire/.mtn2git_empty
+++ b/packages/linux/linux-rp-2.6.21/.mtn2git_empty
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
new file mode 100644
index 0000000000..4414b21191
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/connectplus-remove-ide-HACK.patch
@@ -0,0 +1,12 @@
+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-gta01/defconfig-2.6.20-fic-gta01 b/packages/linux/linux-rp-2.6.21/defconfig-akita
index e0a885fa0d..748ab41d22 100644
--- a/packages/linux/linux-gta01/defconfig-2.6.20-fic-gta01
+++ b/packages/linux/linux-rp-2.6.21/defconfig-akita
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20
-# Thu Feb 15 23:04:12 2007
+# Thu Mar 29 12:24:24 2007
#
CONFIG_ARM=y
# CONFIG_GENERIC_TIME is not set
@@ -15,6 +15,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
# 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"
@@ -29,23 +30,24 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
-CONFIG_LOCALVERSION="-moko8"
-# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_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_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_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
@@ -88,14 +90,14 @@ CONFIG_BLOCK=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=m
-CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
CONFIG_IOSCHED_CFQ=m
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=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="deadline"
+CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
@@ -122,63 +124,42 @@ CONFIG_DEFAULT_IOSCHED="deadline"
# 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_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
-CONFIG_ARCH_S3C2410=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
#
-# S3C24XX Implementations
+# Intel PXA2xx Implementations
#
-# CONFIG_MACH_AML_M5900 is not set
-# CONFIG_MACH_ANUBIS is not set
-# CONFIG_MACH_OSIRIS is not set
-# CONFIG_ARCH_BAST is not set
-# CONFIG_ARCH_H1940 is not set
-# CONFIG_MACH_N30 is not set
-# CONFIG_ARCH_SMDK2410 is not set
-CONFIG_MACH_QT2410=y
-CONFIG_MACH_GTA01=y
-# CONFIG_ARCH_S3C2440 is not set
-# CONFIG_MACH_SMDK2413 is not set
-# CONFIG_MACH_VR1000 is not set
-# CONFIG_MACH_RX3715 is not set
-# CONFIG_MACH_OTOM is not set
-# CONFIG_MACH_NEXCODER_2440 is not set
-# CONFIG_MACH_VSTMS is not set
-CONFIG_S3C2410_CLOCK=y
-CONFIG_S3C2410_PM=y
-CONFIG_CPU_S3C2410_DMA=y
-CONFIG_CPU_S3C2410=y
-
-#
-# S3C2410 Boot
-#
-# CONFIG_S3C2410_BOOT_WATCHDOG is not set
-CONFIG_S3C2410_BOOT_ERROR_RESET=y
-
-#
-# S3C2410 Setup
-#
-CONFIG_S3C2410_DMA=y
-# CONFIG_S3C2410_DMA_DEBUG is not set
-# CONFIG_S3C2410_PM_DEBUG is not set
-# CONFIG_S3C2410_PM_CHECK is not set
-CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+# 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_ARM920T=y
-CONFIG_CPU_32v4T=y
-CONFIG_CPU_ABRT_EV4T=y
-CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=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
@@ -187,9 +168,12 @@ 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_IWMMXT=y
+CONFIG_XSCALE_PMU=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
#
# Bus support
@@ -198,15 +182,25 @@ CONFIG_ARM_THUMB=y
#
# PCCARD (PCMCIA/CardBus) support
#
-# CONFIG_PCCARD is not set
+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=200
-# CONFIG_AEABI 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
@@ -224,8 +218,14 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+CONFIG_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
@@ -234,24 +234,23 @@ CONFIG_CMDLINE="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.
#
# At least one emulation must be selected
#
-# CONFIG_FPE_NWFPE is not set
-CONFIG_FPE_FASTFPE=y
+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
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
#
# Power management options
#
CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-CONFIG_PM_DEBUG=y
-CONFIG_DISABLE_CONSOLE_SUSPEND=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM=y
@@ -264,43 +263,36 @@ CONFIG_NET=y
# Networking options
#
# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
+CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
-CONFIG_NET_KEY=m
+# 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_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
-CONFIG_IP_MULTIPLE_TABLES=y
-# CONFIG_IP_ROUTE_MULTIPATH is not set
-# CONFIG_IP_ROUTE_VERBOSE is not set
# CONFIG_IP_PNP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-# CONFIG_IP_MROUTE is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
+# CONFIG_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=y
+# CONFIG_TCP_MD5SIG is not set
#
# IP: Virtual Server Configuration
@@ -329,121 +321,19 @@ CONFIG_NETFILTER=y
#
# Core Netfilter Configuration
#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK_ENABLED=m
-CONFIG_NF_CONNTRACK_SUPPORT=y
-# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CT_ACCT=y
-CONFIG_NF_CONNTRACK_MARK=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK_ENABLED is not set
+# CONFIG_NETFILTER_XTABLES is not set
#
# IP: Netfilter Configuration
#
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_NF_NAT=m
-CONFIG_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_NF_NAT_SNMP_BASIC=m
-CONFIG_NF_NAT_PROTO_GRE=m
-CONFIG_NF_NAT_FTP=m
-CONFIG_NF_NAT_IRC=m
-CONFIG_NF_NAT_TFTP=m
-# CONFIG_NF_NAT_AMANDA is not set
-CONFIG_NF_NAT_PPTP=m
-CONFIG_NF_NAT_H323=m
-CONFIG_NF_NAT_SIP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_ARPTABLES is not set
+CONFIG_IP_NF_QUEUE=m
#
# IPv6: Netfilter Configuration (EXPERIMENTAL)
#
-CONFIG_NF_CONNTRACK_IPV6=m
# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -474,54 +364,59 @@ CONFIG_IP6_NF_TARGET_HL=m
#
# QoS and/or fair queueing
#
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_FIFO=y
-# CONFIG_NET_SCH_CLK_JIFFIES is not set
-CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
-# CONFIG_NET_SCH_CLK_CPU is not set
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_CLS_POLICE is not set
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_ESTIMATOR=y
+# 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_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
@@ -536,14 +431,25 @@ CONFIG_BT_HIDP=m
# Bluetooth device drivers
#
CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
-CONFIG_FIB_RULES=y
+# 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
@@ -554,14 +460,14 @@ CONFIG_FIB_RULES=y
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
+CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_SYS_HYPERVISOR is not set
#
# Connector - unified userspace <-> kernelspace linker
#
-CONFIG_CONNECTOR=m
+# CONFIG_CONNECTOR is not set
#
# Memory Technology Devices (MTD)
@@ -602,21 +508,21 @@ 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_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_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_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
@@ -635,13 +541,10 @@ CONFIG_MTD_CFI_I2=y
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_S3C2410=y
-CONFIG_MTD_NAND_S3C2410_BBT=y
-# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
-CONFIG_MTD_NAND_S3C2410_HWECC=y
-CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
# CONFIG_MTD_NAND_NANDSIM is not set
#
@@ -662,22 +565,43 @@ CONFIG_MTD_NAND_S3C2410_CLKSTOP=y
# Block devices
#
# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_UB=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
#
# ATA/ATAPI/MFM/RLL support
#
-# CONFIG_IDE is not set
+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
@@ -692,8 +616,8 @@ 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_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
@@ -702,10 +626,10 @@ CONFIG_CHR_DEV_SG=m
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
-# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
-CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_SCAN_ASYNC is not set
#
# SCSI Transports
@@ -723,6 +647,15 @@ CONFIG_SCSI_SCAN_ASYNC=y
# 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
@@ -736,9 +669,10 @@ 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_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
#
# Fusion MPT device support
@@ -774,8 +708,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
-CONFIG_NET_PCI=y
-CONFIG_CS89x0=m
+# CONFIG_SMC911X is not set
#
# Ethernet (1000 Mbit)
@@ -792,20 +725,66 @@ CONFIG_CS89x0=m
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_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=y
-CONFIG_PPP_FILTER=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
+# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
+# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
@@ -828,14 +807,15 @@ CONFIG_INPUT=y
#
# 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_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=m
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
#
# Input Device Drivers
@@ -846,18 +826,13 @@ CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_GTA01=y
-CONFIG_KEYBOARD_QT2410=y
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_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_ADS7846 is not set
-CONFIG_TOUCHSCREEN_S3C2410=y
-# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+CONFIG_TOUCHSCREEN_CORGI=y
# CONFIG_TOUCHSCREEN_GUNZE is not set
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
@@ -866,14 +841,13 @@ CONFIG_TOUCHSCREEN_S3C2410=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_UCB1400 is not set
-# CONFIG_INPUT_MISC is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
#
# 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
#
@@ -881,21 +855,24 @@ CONFIG_SERIO=y
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
-CONFIG_NR_TTY_DEVICES=4
CONFIG_HW_CONSOLE=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
-# CONFIG_SERIAL_8250 is not set
+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_S3C2410=y
-CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
@@ -909,36 +886,30 @@ CONFIG_UNIX98_PTYS=y
#
# Watchdog Cards
#
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_S3C2410_WATCHDOG=m
-
-#
-# USB-based Watchdog Cards
-#
-# CONFIG_USBPCWATCHDOG is not set
-# CONFIG_HW_RANDOM is not set
+# CONFIG_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
-# CONFIG_TS0710_MUX is not set
#
# I2C support
#
CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_CHARDEV is not set
#
# I2C Algorithms
@@ -950,9 +921,10 @@ CONFIG_I2C_CHARDEV=y
#
# I2C Hardware Bus support
#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
-CONFIG_I2C_S3C2410=y
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_PCA_ISA is not set
@@ -962,7 +934,6 @@ CONFIG_I2C_S3C2410=y
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_SENSORS_EEPROM is not set
-CONFIG_SENSORS_PCF50606=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
@@ -975,21 +946,8 @@ CONFIG_SENSORS_PCF50606=y
#
# SPI support
#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_S3C24XX_GPIO=y
-CONFIG_SPI_S3C24XX=y
-
-#
-# SPI Protocol Masters
-#
-CONFIG_SPI_SLAVE_JBT6K74=y
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
#
# Dallas's 1-wire bus
@@ -999,49 +957,8 @@ CONFIG_SPI_SLAVE_JBT6K74=y
#
# Hardware Monitoring support
#
-CONFIG_HWMON=y
+# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_ABITUGURU is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM70 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_PC87427 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47M192 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_VT1211 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83791D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83793 is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Misc devices
@@ -1049,38 +966,47 @@ CONFIG_HWMON=y
# CONFIG_TIFM_CORE is not set
#
+# Multi-Function Devices
+#
+
+#
# LED devices
#
CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
+CONFIG_LEDS_CLASS=y
#
# LED drivers
#
-CONFIG_LEDS_S3C24XX=m
+CONFIG_LEDS_SPITZ=y
+# CONFIG_LEDS_TOSA is not set
#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+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
+CONFIG_USB_DABUSB=m
#
# Graphics support
#
-# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FIRMWARE_EDID=y
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
@@ -1090,8 +1016,13 @@ CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_S3C2410=y
-# CONFIG_FB_S3C2410_DEBUG is not set
+CONFIG_FB_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
#
@@ -1100,11 +1031,11 @@ CONFIG_FB_S3C2410=y
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-CONFIG_FONT_6x11=y
+CONFIG_FONT_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
@@ -1117,44 +1048,54 @@ CONFIG_FONT_6x11=y
# Logo configuration
#
CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_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_GTA01=y
+CONFIG_BACKLIGHT_CORGI=y
#
# Sound
#
-CONFIG_SOUND=y
+CONFIG_SOUND=m
#
# Advanced Linux Sound Architecture
#
-CONFIG_SND=y
-CONFIG_SND_TIMER=y
-CONFIG_SND_PCM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
-# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY 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_SEQUENCER_OSS is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
-# CONFIG_SND_VERBOSE_PRINTK is not set
-# CONFIG_SND_DEBUG is not set
+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
@@ -1162,6 +1103,8 @@ CONFIG_SND_VERBOSE_PROCFS=y
#
# ALSA ARM devices
#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
#
# USB devices
@@ -1169,17 +1112,31 @@ CONFIG_SND_VERBOSE_PROCFS=y
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=y
+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
@@ -1192,9 +1149,6 @@ CONFIG_SND_SOC=y
#
# SoC Audio for the Samsung S3C24XX
#
-CONFIG_SND_S3C24XX_SOC=y
-CONFIG_SND_S3C24XX_SOC_I2S=y
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
#
# Soc Codecs
@@ -1203,13 +1157,13 @@ CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8731 is not set
-# CONFIG_SND_SOC_WM8750 is not set
-CONFIG_SND_SOC_WM8753=y
+CONFIG_SND_SOC_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=y
+# 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
@@ -1221,6 +1175,7 @@ CONFIG_SND_SOC_WM8976=y
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -1233,7 +1188,7 @@ CONFIG_HID=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=m
# CONFIG_USB_DEBUG is not set
#
@@ -1252,7 +1207,8 @@ CONFIG_USB_DEVICEFS=y
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
#
# USB Device Class drivers
@@ -1269,16 +1225,17 @@ CONFIG_USB_PRINTER=m
#
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_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
+# 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
@@ -1291,17 +1248,17 @@ CONFIG_USB_HID=m
#
# 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_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE 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 is not set
-# CONFIG_USB_ATI_REMOTE 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
@@ -1309,8 +1266,8 @@ CONFIG_USB_HID=m
#
# USB Imaging devices
#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
#
# USB Network Adapters
@@ -1323,17 +1280,12 @@ CONFIG_USB_USBNET_MII=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_GL620A=m
+# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
+# CONFIG_USB_NET_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
@@ -1346,17 +1298,17 @@ CONFIG_USB_MON=y
#
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_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=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
+# CONFIG_USB_SERIAL_CP2101 is not set
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
@@ -1366,33 +1318,33 @@ 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_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
+# CONFIG_USB_SERIAL_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_HP4X is not set
CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
-CONFIG_USB_SERIAL_SIERRAWIRELESS=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_OPTION is not set
CONFIG_USB_SERIAL_OMNINET=m
# CONFIG_USB_SERIAL_DEBUG is not set
CONFIG_USB_EZUSB=y
@@ -1400,22 +1352,22 @@ CONFIG_USB_EZUSB=y
#
# USB Miscellaneous drivers
#
-# CONFIG_USB_EMI62 is not set
-# CONFIG_USB_EMI26 is not set
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
# CONFIG_USB_ADUTUX is not set
-# CONFIG_USB_AUERSWALD is not set
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
-# CONFIG_USB_LCD is not set
-# CONFIG_USB_LED 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 is not set
+CONFIG_USB_CYTHERM=m
# CONFIG_USB_PHIDGET is not set
-# CONFIG_USB_IDMOUSE 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=m
+# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_TEST is not set
#
@@ -1425,26 +1377,26 @@ CONFIG_USB_TRANCEVIBRATOR=m
#
# USB Gadget Support
#
-CONFIG_USB_GADGET=y
+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_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_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
#
@@ -1453,16 +1405,17 @@ CONFIG_USB_ETH_RNDIS=y
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
# CONFIG_MMC_TIFM_SD is not set
-CONFIG_MMC_S3C=m
#
# Real Time Clock
#
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
-# CONFIG_RTC_HCTOSYS is not set
-CONFIG_RTC_DEBUG=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
@@ -1483,24 +1436,22 @@ CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
-# CONFIG_RTC_DRV_RS5C348 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
-CONFIG_RTC_DRV_S3C=m
# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_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=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 is not set
# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
+CONFIG_JBD=m
# CONFIG_JBD_DEBUG is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
@@ -1509,29 +1460,27 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
+# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
-CONFIG_AUTOFS4_FS=m
-CONFIG_FUSE_FS=m
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
+# CONFIG_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_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
@@ -1546,7 +1495,7 @@ CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-CONFIG_CONFIGFS_FS=m
+# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
@@ -1558,26 +1507,25 @@ CONFIG_CONFIGFS_FS=m
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_YAFFS_FS is not set
-# CONFIG_YAFFS_YAFFS1 is not set
-# CONFIG_YAFFS_DOES_ECC is not set
-# CONFIG_YAFFS_YAFFS2 is not set
-# CONFIG_YAFFS_AUTO_YAFFS2 is not set
-# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
-# CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS is not set
-# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
-# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
-# CONFIG_YAFFS_SHORT_NAMES_IN_RAM is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_SUMMARY=y
# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=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
@@ -1587,7 +1535,7 @@ CONFIG_CRAMFS=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=y
@@ -1597,18 +1545,20 @@ CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=y
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS 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=y
+# 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
@@ -1620,52 +1570,67 @@ CONFIG_CIFS_WEAK_PW_HASH=y
#
# Partition Types
#
-# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
#
# Native Language Support
#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS=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 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_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 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_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
@@ -1675,7 +1640,8 @@ CONFIG_NLS_UTF8=m
#
# Profiling support
#
-# CONFIG_PROFILING is not set
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
#
# Kernel hacking
@@ -1688,10 +1654,10 @@ CONFIG_MAGIC_SYSRQ=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_DETECT_SOFTLOCKUP is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
+# 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
@@ -1701,18 +1667,15 @@ CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_INFO=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_FORCED_INLINING is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_ERRORS is not set
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_DEBUG_S3C2410_PORT=y
-CONFIG_DEBUG_S3C2410_UART=0
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
#
# Security options
@@ -1725,24 +1688,24 @@ CONFIG_DEBUG_S3C2410_UART=0
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
-CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
+# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=y
+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_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_LRW=m
-CONFIG_CRYPTO_DES=y
+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
@@ -1755,6 +1718,7 @@ 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
@@ -1767,15 +1731,13 @@ CONFIG_CRYPTO_TEST=m
# Library routines
#
CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
+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_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
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
new file mode 100644
index 0000000000..d439d89813
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/defconfig-bootcdx86
@@ -0,0 +1,1606 @@
+#
+# 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
new file mode 100644
index 0000000000..e8efdd4de2
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/defconfig-c7x0
@@ -0,0 +1,1786 @@
+#
+# 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_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
new file mode 100644
index 0000000000..422ed94df3
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/defconfig-collie
@@ -0,0 +1,1739 @@
+#
+# 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.20/defconfig-ipaq-pxa270 b/packages/linux/linux-rp-2.6.21/defconfig-hx2000
index b31a1e4071..2a67a2d045 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-ipaq-pxa270
+++ b/packages/linux/linux-rp-2.6.21/defconfig-hx2000
@@ -1,20 +1,28 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-rc1-git7
-# Sat Nov 19 23:13:51 2005
+# Linux kernel version: 2.6.20-rc2
+# Mon Jan 1 01:49:04 2007
#
CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
CONFIG_MMU=y
-CONFIG_UID16=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
-# CONFIG_CLEAN_COMPILE is not set
-CONFIG_BROKEN=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -25,32 +33,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
# CONFIG_SWAP is not set
-# CONFIG_SYSVIPC is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
+CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
#
# Loadable module support
@@ -58,7 +73,6 @@ CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_KMOD is not set
@@ -66,6 +80,10 @@ CONFIG_OBSOLETE_MODPARM=y
#
# Block layer
#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
#
# IO Schedulers
@@ -83,17 +101,28 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
# CONFIG_ARCH_CLPS7500 is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
@@ -101,23 +130,20 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-# CONFIG_ARCH_AAEC2000 is not set
#
# Intel PXA2xx Implementations
#
# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_LOGICPD_PXA270 is not set
# CONFIG_MACH_MAINSTONE is not set
# CONFIG_ARCH_PXA_IDP is not set
# CONFIG_PXA_SHARPSL is not set
+# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_MACH_HX2750=y
CONFIG_PXA27x=y
-CONFIG_PXA_KEYS=y
CONFIG_PXA_SSP=y
+CONFIG_PXA_KEYS=y
#
# Processor Type
@@ -128,17 +154,20 @@ CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
CONFIG_ARM_THUMB=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_IWMMXT=y
CONFIG_XSCALE_PMU=y
#
# Bus support
#
-CONFIG_ISA_DMA_API=y
#
# PCCARD (PCMCIA/CardBus) support
@@ -159,6 +188,9 @@ CONFIG_PCMCIA_PXA2XX=y
#
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -168,6 +200,7 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
CONFIG_ALIGNMENT_TRAP=y
#
@@ -175,7 +208,9 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
#
# CPU Frequency scaling
@@ -199,14 +234,15 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
+CONFIG_PM_DEBUG=y
+# CONFIG_DISABLE_CONSOLE_SUSPEND is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM=y
#
@@ -217,9 +253,13 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -233,12 +273,21 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
#
@@ -250,6 +299,11 @@ CONFIG_TCP_CONG_BIC=y
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
@@ -259,7 +313,6 @@ CONFIG_TCP_CONG_BIC=y
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
@@ -280,6 +333,8 @@ CONFIG_IEEE80211=m
CONFIG_IEEE80211_CRYPT_WEP=m
# CONFIG_IEEE80211_CRYPT_CCMP is not set
# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -292,6 +347,7 @@ CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
#
# Connector - unified userspace <-> kernelspace linker
@@ -318,6 +374,7 @@ CONFIG_MTD_BLOCK=y
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
#
# RAM/ROM/Flash chip drivers
@@ -366,7 +423,6 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
@@ -405,6 +461,7 @@ CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -413,6 +470,7 @@ CONFIG_BLK_DEV_INITRD=y
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
+CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
#
@@ -441,6 +499,12 @@ CONFIG_IDE_GENERIC=y
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
+# CONFIG_SCSI_NETLINK is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
#
# Multi-device support (RAID and LVM)
@@ -455,7 +519,6 @@ CONFIG_IDE_GENERIC=y
#
# IEEE 1394 (FireWire) support
#
-# CONFIG_IEEE1394 is not set
#
# I2O device support
@@ -482,6 +545,7 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+# CONFIG_SMC911X is not set
#
# Ethernet (1000 Mbit)
@@ -499,6 +563,7 @@ CONFIG_MII=m
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
#
# Obsolete Wireless cards support (pre-802.11)
@@ -515,7 +580,6 @@ CONFIG_NET_RADIO=y
#
# Wireless 802.11b ISA/PCI cards support
#
-# CONFIG_AIRO is not set
CONFIG_HERMES=m
# CONFIG_ATMEL is not set
@@ -528,6 +592,7 @@ CONFIG_PCMCIA_SPECTRUM=m
# CONFIG_PCMCIA_WL3501 is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
+# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
CONFIG_HOSTAP_CS=m
CONFIG_NET_WIRELESS=y
@@ -558,6 +623,7 @@ CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
+CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
@@ -572,11 +638,12 @@ CONFIG_PPP_BSDCOMP=m
# Input device support
#
CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV=m
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
@@ -584,7 +651,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
# CONFIG_INPUT_TSDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_POWER is not set
+CONFIG_INPUT_POWER=y
#
# Input Device Drivers
@@ -597,6 +664,10 @@ CONFIG_INPUT_TOUCHSCREEN=y
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
CONFIG_TOUCHSCREEN_TSC2101=y
# CONFIG_INPUT_MISC is not set
@@ -612,6 +683,7 @@ CONFIG_TOUCHSCREEN_TSC2101=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
@@ -638,16 +710,12 @@ CONFIG_UNIX98_PTYS=y
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=m
# CONFIG_NVRAM is not set
-# CONFIG_SA1100_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
-# Ftape, the floppy tape device driver
-#
-
-#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
@@ -659,7 +727,6 @@ CONFIG_UNIX98_PTYS=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
-# CONFIG_TELCLOCK is not set
#
# I2C support
@@ -667,27 +734,52 @@ CONFIG_UNIX98_PTYS=y
# CONFIG_I2C is not set
#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
# Hardware Monitoring support
#
# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
#
# Misc devices
#
+# CONFIG_TIFM_CORE is not set
#
-# Multimedia Capabilities Port drivers
+# Multi-Function Devices
#
+CONFIG_MFD_TSC2101=y
#
-# Multi-Function Devices
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
#
-CONFIG_MFD_TSC2101=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
#
# Digital Video Broadcasting Devices
@@ -697,16 +789,22 @@ CONFIG_MFD_TSC2101=y
#
# Graphics support
#
+CONFIG_FIRMWARE_EDID=y
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+# CONFIG_FB_PXA_OVERLAY is not set
# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_MBX is not set
# CONFIG_FB_VIRTUAL is not set
#
@@ -723,7 +821,14 @@ CONFIG_FONT_8x16=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_OHAND_CLUT224=y
+# CONFIG_LOGO_OZ240_CLUT224 is not set
+# CONFIG_LOGO_OZ480_CLUT224 is not set
+# CONFIG_LOGO_OZ640_CLUT224 is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
@@ -737,10 +842,16 @@ CONFIG_BACKLIGHT_HX2750=y
# CONFIG_SOUND is not set
#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB is not set
#
@@ -759,14 +870,16 @@ CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
CONFIG_MMC_PXA=y
-# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TIFM_SD is not set
#
# Real Time Clock
#
+CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
@@ -774,15 +887,17 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
#
# RTC drivers
#
-# CONFIG_RTC_DRV_X1205 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_SA1100=y
# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -791,14 +906,17 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
+# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
@@ -825,12 +943,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# Pseudo filesystems
#
CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLBFS is not set
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
@@ -842,15 +961,14 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_SUMMARY=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=y
CONFIG_SQUASHFS=m
@@ -893,6 +1011,7 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
#
@@ -940,6 +1059,11 @@ CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_UTF8=y
#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
# Profiling support
#
# CONFIG_PROFILING is not set
@@ -948,24 +1072,33 @@ CONFIG_NLS_UTF8=y
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-CONFIG_DEBUG_KERNEL=y
+CONFIG_ENABLE_MUST_CHECK=y
# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_BUGVERBOSE is not set
# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_WAITQ is not set
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y
# CONFIG_DEBUG_ICEDCC is not set
@@ -980,7 +1113,11 @@ CONFIG_DEBUG_LL=y
# Cryptographic options
#
CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_MANAGER=m
# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
@@ -989,6 +1126,10 @@ CONFIG_CRYPTO=y
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_GF128MUL is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
@@ -1012,10 +1153,13 @@ CONFIG_CRYPTO_CRC32C=y
#
# Library routines
#
+CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
CONFIG_LIBCRC32C=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
-CONFIG_SHARPSL_RC=n
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-gta01/defconfig-fic-gta01 b/packages/linux/linux-rp-2.6.21/defconfig-poodle
index 40adbcd1a1..13616c08f1 100644
--- a/packages/linux/linux-gta01/defconfig-fic-gta01
+++ b/packages/linux/linux-rp-2.6.21/defconfig-poodle
@@ -1,13 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17.14
-# Tue Feb 13 20:26:21 2007
+# 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
#
@@ -15,17 +16,19 @@ CONFIG_VECTORS_BASE=0xffff0000
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
-CONFIG_LOCALVERSION="-moko7"
-# CONFIG_LOCALVERSION_AUTO is not set
+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_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
@@ -33,7 +36,7 @@ CONFIG_SYSCTL=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_UID16=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_EMBEDDED is not set
+CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -69,14 +72,14 @@ CONFIG_KMOD=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=m
-CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
CONFIG_IOSCHED_CFQ=m
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=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="deadline"
+CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
@@ -93,10 +96,10 @@ CONFIG_DEFAULT_IOSCHED="deadline"
# 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_PXA=y
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
-CONFIG_ARCH_S3C2410=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
@@ -108,57 +111,45 @@ CONFIG_ARCH_S3C2410=y
# CONFIG_ARCH_AT91RM9200 is not set
#
-# S3C24XX Implementations
+# Intel PXA2xx Implementations
#
-# CONFIG_MACH_ANUBIS is not set
-# CONFIG_MACH_OSIRIS is not set
-# CONFIG_ARCH_BAST is not set
-# CONFIG_ARCH_H1940 is not set
-# CONFIG_MACH_N30 is not set
-# CONFIG_ARCH_SMDK2410 is not set
-CONFIG_MACH_QT2410=y
-CONFIG_MACH_GTA01=y
-# CONFIG_ARCH_S3C2440 is not set
-# CONFIG_MACH_VR1000 is not set
-# CONFIG_MACH_RX3715 is not set
-# CONFIG_MACH_OTOM is not set
-# CONFIG_MACH_NEXCODER_2440 is not set
-CONFIG_CPU_S3C2410=y
-
-#
-# S3C2410 Boot
-#
-CONFIG_S3C2410_BOOT_ERROR_RESET=y
-
-#
-# S3C2410 Setup
-#
-CONFIG_S3C2410_DMA=y
-# CONFIG_S3C2410_DMA_DEBUG is not set
-CONFIG_S3C2410_PM_DEBUG=y
-CONFIG_S3C2410_PM_CHECK=y
-CONFIG_S3C2410_PM_CHECK_CHUNKSIZE=64
-CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
+# 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_ARM920T=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4T=y
-CONFIG_CPU_CACHE_V4WT=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=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_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
#
# Bus support
@@ -167,14 +158,23 @@ CONFIG_ARM_THUMB=y
#
# PCCARD (PCMCIA/CardBus) support
#
-# CONFIG_PCCARD is not set
+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 is not set
-# CONFIG_NO_IDLE_HZ is not set
-CONFIG_HZ=200
+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
@@ -192,33 +192,51 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+CONFIG_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 is not set
-CONFIG_FPE_FASTFPE=y
+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_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
# CONFIG_ARTHUR is not set
#
# Power management options
#
CONFIG_PM=y
-CONFIG_PM_LEGACY=y
-CONFIG_PM_DEBUG=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
CONFIG_APM=y
#
@@ -230,33 +248,28 @@ CONFIG_NET=y
# Networking options
#
# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
+CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
-CONFIG_NET_KEY=m
+# CONFIG_NET_KEY 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
-CONFIG_IP_PNP_DHCP=y
-# CONFIG_IP_PNP_BOOTP is not set
-# CONFIG_IP_PNP_RARP is not set
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE=m
-# CONFIG_NET_IPGRE_BROADCAST is not set
-# CONFIG_IP_MROUTE is not set
+# CONFIG_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=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_XFRM_TUNNEL=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_DIAG=y
-CONFIG_INET_TCP_DIAG=y
+# CONFIG_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
@@ -279,103 +292,30 @@ CONFIG_NETFILTER=y
#
# Core Netfilter Configuration
#
-CONFIG_NETFILTER_NETLINK=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# 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=y
+# CONFIG_IP_NF_CT_ACCT is not set
# CONFIG_IP_NF_CONNTRACK_MARK is not set
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
+# 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 is not set
-# CONFIG_IP_NF_AMANDA is not set
-CONFIG_IP_NF_PPTP=m
-CONFIG_IP_NF_H323=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_TOS=m
-# CONFIG_IP_NF_MATCH_RECENT is not set
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-# CONFIG_IP_NF_TARGET_SAME is not set
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_NAT_H323=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_TTL=m
-# CONFIG_IP_NF_RAW is not set
-# CONFIG_IP_NF_ARPTABLES is not set
+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
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-# CONFIG_IP6_NF_RAW is not set
#
# DCCP Configuration (EXPERIMENTAL)
@@ -407,53 +347,58 @@ CONFIG_IP6_NF_TARGET_HL=m
#
# QoS and/or fair queueing
#
-CONFIG_NET_SCHED=y
-# CONFIG_NET_SCH_CLK_JIFFIES is not set
-CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
-# CONFIG_NET_SCH_CLK_CPU is not set
-
-#
-# Queueing/Scheduling
-#
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_INGRESS=m
-
-#
-# Classification
-#
-CONFIG_NET_CLS=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_ROUTE=y
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_PERF=y
-# CONFIG_CLS_U32_MARK is not set
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-# CONFIG_NET_EMATCH is not set
-# CONFIG_NET_CLS_ACT is not set
-# CONFIG_NET_CLS_POLICE is not set
-# CONFIG_NET_CLS_IND is not set
-CONFIG_NET_ESTIMATOR=y
+# 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_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
@@ -468,13 +413,25 @@ CONFIG_BT_HIDP=m
# Bluetooth device drivers
#
CONFIG_BT_HCIUSB=m
-CONFIG_BT_HCIUSB_SCO=y
-# CONFIG_BT_HCIUART is not set
-# CONFIG_BT_HCIBCM203X is not set
-# CONFIG_BT_HCIBPA10X is not set
-# CONFIG_BT_HCIBFUSB is not set
-# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+# CONFIG_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
@@ -485,13 +442,13 @@ CONFIG_BT_HCIUSB_SCO=y
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
+CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
#
# Connector - unified userspace <-> kernelspace linker
#
-CONFIG_CONNECTOR=m
+# CONFIG_CONNECTOR is not set
#
# Memory Technology Devices (MTD)
@@ -510,9 +467,8 @@ CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
-CONFIG_NFTL=y
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
#
@@ -531,21 +487,20 @@ 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_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_COMPLEX_MAPPINGS=y
+CONFIG_MTD_SHARP_SL=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
@@ -563,12 +518,10 @@ CONFIG_MTD_CFI_I2=y
#
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_S3C2410=y
-CONFIG_MTD_NAND_S3C2410_BBT=y
-# CONFIG_MTD_NAND_S3C2410_DEBUG is not set
-# CONFIG_MTD_NAND_S3C2410_HWECC is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
# CONFIG_MTD_NAND_NANDSIM is not set
#
@@ -589,14 +542,12 @@ CONFIG_MTD_NAND_S3C2410_BBT=y
# Block devices
#
# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_UB=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_BLK_DEV_INITRD=y
+# CONFIG_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
@@ -612,7 +563,8 @@ 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_IDECD=y
+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
@@ -631,23 +583,24 @@ CONFIG_IDE_GENERIC=y
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-CONFIG_SCSI=y
+CONFIG_SCSI=m
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_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_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
@@ -667,16 +620,25 @@ CONFIG_BLK_DEV_SD=y
# 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_MD is not set
CONFIG_BLK_DEV_DM=m
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_EMC=m
#
# Fusion MPT device support
@@ -698,7 +660,7 @@ CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -712,8 +674,6 @@ CONFIG_NET_ETHERNET=y
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
-CONFIG_NET_PCI=y
-CONFIG_CS89x0=y
#
# Ethernet (1000 Mbit)
@@ -730,20 +690,65 @@ CONFIG_CS89x0=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_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=y
+# CONFIG_PPP_MULTILINK is not set
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
+# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
+# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
@@ -764,14 +769,15 @@ CONFIG_INPUT=y
#
# 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_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=m
+# CONFIG_INPUT_EVBUG is not set
+CONFIG_INPUT_POWER=y
#
# Input Device Drivers
@@ -780,30 +786,26 @@ 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_GTA01=m
-CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_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_ADS7846 is not set
-CONFIG_TOUCHSCREEN_S3C2410=y
-# CONFIG_TOUCHSCREEN_S3C2410_DEBUG is not set
+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 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
#
# 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
#
@@ -817,18 +819,21 @@ CONFIG_HW_CONSOLE=y
#
# Serial drivers
#
-# CONFIG_SERIAL_8250 is not set
+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_S3C2410=y
-CONFIG_SERIAL_S3C2410_CONSOLE=y
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_LEGACY_PTYS is not set
#
# IPMI
@@ -840,13 +845,19 @@ CONFIG_LEGACY_PTY_COUNT=256
#
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
-CONFIG_S3C2410_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
#
# Ftape, the floppy tape device driver
#
+
+#
+# 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
#
@@ -854,26 +865,26 @@ CONFIG_S3C2410_RTC=y
#
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
-# CONFIG_TS0710_MUX is not set
#
# I2C support
#
CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_CHARDEV is not set
#
# 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_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
-CONFIG_I2C_S3C2410=y
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_PCA_ISA is not set
@@ -883,7 +894,6 @@ CONFIG_I2C_S3C2410=y
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_SENSORS_EEPROM is not set
-CONFIG_SENSORS_PCF50606=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
@@ -896,21 +906,8 @@ CONFIG_SENSORS_PCF50606=y
#
# SPI support
#
-CONFIG_SPI=y
-# CONFIG_SPI_DEBUG is not set
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_S3C24XX_GPIO=y
-CONFIG_SPI_S3C24XX=y
-
-#
-# SPI Protocol Masters
-#
-CONFIG_SPI_SLAVE_JBT6K74=y
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
#
# Dallas's 1-wire bus
@@ -920,71 +917,101 @@ CONFIG_SPI_SLAVE_JBT6K74=y
#
# Hardware Monitoring support
#
-CONFIG_HWMON=y
+# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set
-# CONFIG_SENSORS_ADM1021 is not set
-# CONFIG_SENSORS_ADM1025 is not set
-# CONFIG_SENSORS_ADM1026 is not set
-# CONFIG_SENSORS_ADM1031 is not set
-# CONFIG_SENSORS_ADM9240 is not set
-# CONFIG_SENSORS_ASB100 is not set
-# CONFIG_SENSORS_ATXP1 is not set
-# CONFIG_SENSORS_DS1621 is not set
-# CONFIG_SENSORS_F71805F is not set
-# CONFIG_SENSORS_FSCHER is not set
-# CONFIG_SENSORS_FSCPOS is not set
-# CONFIG_SENSORS_GL518SM is not set
-# CONFIG_SENSORS_GL520SM is not set
-# CONFIG_SENSORS_IT87 is not set
-# CONFIG_SENSORS_LM63 is not set
-# CONFIG_SENSORS_LM75 is not set
-# CONFIG_SENSORS_LM77 is not set
-# CONFIG_SENSORS_LM78 is not set
-# CONFIG_SENSORS_LM80 is not set
-# CONFIG_SENSORS_LM83 is not set
-# CONFIG_SENSORS_LM85 is not set
-# CONFIG_SENSORS_LM87 is not set
-# CONFIG_SENSORS_LM90 is not set
-# CONFIG_SENSORS_LM92 is not set
-# CONFIG_SENSORS_MAX1619 is not set
-# CONFIG_SENSORS_PC87360 is not set
-# CONFIG_SENSORS_SMSC47M1 is not set
-# CONFIG_SENSORS_SMSC47B397 is not set
-# CONFIG_SENSORS_W83781D is not set
-# CONFIG_SENSORS_W83792D is not set
-# CONFIG_SENSORS_W83L785TS is not set
-# CONFIG_SENSORS_W83627HF is not set
-# CONFIG_SENSORS_W83627EHF is not set
-# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Misc devices
#
#
+# Multi-Function Devices
+#
+
+#
# LED devices
#
-# CONFIG_NEW_LEDS is not set
+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 is not set
+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 is not set
+CONFIG_USB_DABUSB=m
#
# Graphics support
@@ -995,11 +1022,12 @@ 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_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_S3C2410=y
-# CONFIG_FB_S3C2410_DEBUG is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_W100 is not set
# CONFIG_FB_VIRTUAL is not set
#
@@ -1008,15 +1036,15 @@ CONFIG_FB_S3C2410=y
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
# CONFIG_FONT_8x16 is not set
-CONFIG_FONT_6x11=y
+# CONFIG_FONT_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_MINI_4x6=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
@@ -1025,31 +1053,36 @@ CONFIG_FONT_6x11=y
# Logo configuration
#
CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_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=y
+CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
-CONFIG_BACKLIGHT_GTA01=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_LOCOMO=y
#
# Sound
#
-CONFIG_SOUND=y
+CONFIG_SOUND=m
#
# 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
@@ -1068,6 +1101,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
#
# ALSA ARM devices
#
+# CONFIG_SND_PXA2XX_AC97 is not set
#
# USB devices
@@ -1075,49 +1109,47 @@ CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_USB_AUDIO is not set
#
-# SoC audio support
+# PCMCIA devices
#
-CONFIG_SND_SOC=y
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
#
-# Soc Platforms
-#
-
-#
-# SoC Audio for the Intel PXA2xx
-#
-
-#
-# SoC Audio for the Atmel AT91
+# SoC audio support
#
+CONFIG_SND_SOC=m
#
-# SoC Audio for the Freescale i.MX
+# Soc Platforms
#
#
-# SoC Audio for the Samsung S3C24XX
+# SoC Audio for the Intel PXA2xx
#
-CONFIG_SND_S3C24XX_SOC=m
-CONFIG_SND_S3C24XX_SOC_I2S=m
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m
+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_WM8711 is not set
-# CONFIG_SND_SOC_WM8510 is not set
-# CONFIG_SND_SOC_WM8731 is not set
+CONFIG_SND_SOC_WM8731=m
# CONFIG_SND_SOC_WM8750 is not set
-CONFIG_SND_SOC_WM8753=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=m
# CONFIG_SND_SOC_WM8974 is not set
-# CONFIG_SND_SOC_WM8980 is not set
# CONFIG_SND_SOC_WM9713 is not set
# CONFIG_SND_SOC_WM9712 is not set
# CONFIG_SND_SOC_UDA1380 is not set
@@ -1132,9 +1164,9 @@ CONFIG_SND_SOC_WM8976=m
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=y
+CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
#
@@ -1150,10 +1182,8 @@ CONFIG_USB_DEVICEFS=y
# USB Host Controller Drivers
#
# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
-# CONFIG_USB_OHCI_BIG_ENDIAN is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
#
# USB Device Class drivers
@@ -1168,18 +1198,18 @@ CONFIG_USB_PRINTER=m
#
# may also be needed; see USB_STORAGE Help for more information
#
-CONFIG_USB_STORAGE=y
+CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_ISD200=y
-CONFIG_USB_STORAGE_DPCM=y
-CONFIG_USB_STORAGE_USBAT=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_USB_STORAGE_ALAUDA=y
-CONFIG_USB_LIBUSUAL=y
+# 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
@@ -1193,17 +1223,17 @@ CONFIG_USB_HIDINPUT=y
#
# USB HID Boot Protocol drivers
#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE 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 is not set
-# CONFIG_USB_ATI_REMOTE 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
@@ -1211,8 +1241,8 @@ CONFIG_USB_HIDINPUT=y
#
# USB Imaging devices
#
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
#
# USB Network Adapters
@@ -1224,17 +1254,13 @@ 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_GL620A is not set
CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
+# CONFIG_USB_NET_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
#
@@ -1246,17 +1272,17 @@ CONFIG_USB_MON=y
#
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_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=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP2101=m
+# CONFIG_USB_SERIAL_CP2101 is not set
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
+# CONFIG_USB_SERIAL_FUNSOFT is not set
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
@@ -1266,26 +1292,26 @@ 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_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=m
+# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_HP4X=m
+# CONFIG_USB_SERIAL_HP4X is not set
CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SAFE_PADDED=y
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
@@ -1295,17 +1321,17 @@ 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_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
@@ -1320,22 +1346,23 @@ 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_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_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_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
#
# MMC/SD Card support
@@ -1343,7 +1370,7 @@ CONFIG_USB_ETH_RNDIS=y
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
-CONFIG_MMC_S3C=y
+CONFIG_MMC_PXA=y
#
# Real Time Clock
@@ -1368,6 +1395,7 @@ CONFIG_RTC_INTF_DEV=y
# 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
#
@@ -1376,41 +1404,33 @@ 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=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_EXT3_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
-CONFIG_FS_POSIX_ACL=y
+# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
-CONFIG_ROMFS_FS=y
+# CONFIG_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
+# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-# CONFIG_ZISOFS is not set
+# 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_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
@@ -1423,7 +1443,7 @@ CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-CONFIG_CONFIGFS_FS=m
+# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
@@ -1435,18 +1455,23 @@ CONFIG_CONFIGFS_FS=m
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS_FS=m
-CONFIG_JFFS_FS_VERBOSE=0
-# CONFIG_JFFS_PROC_FS is not set
+# CONFIG_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_COMPRESSION_OPTIONS=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
-# CONFIG_JFFS2_RUBIN is not set
-CONFIG_CRAMFS=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
@@ -1456,27 +1481,26 @@ CONFIG_CRAMFS=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=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_NFSD is not set
+CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
-CONFIG_SUNRPC_GSS=y
-CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS 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
@@ -1485,57 +1509,73 @@ CONFIG_RPCSEC_GSS_KRB5=y
#
# Partition Types
#
-# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
#
# Native Language Support
#
-CONFIG_NLS=m
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS=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 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_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 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_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
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
#
# Kernel hacking
@@ -1547,25 +1587,23 @@ 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=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=y
-CONFIG_FORCED_INLINING=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 is not set
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ICEDCC is not set
-CONFIG_DEBUG_S3C2410_PORT=y
-CONFIG_DEBUG_S3C2410_UART=0
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
#
# Security options
@@ -1578,29 +1616,29 @@ CONFIG_DEBUG_S3C2410_UART=0
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_HMAC=y
-# CONFIG_CRYPTO_NULL is not set
-# CONFIG_CRYPTO_MD4 is not set
-CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_SHA1=m
-# CONFIG_CRYPTO_SHA256 is not set
-# CONFIG_CRYPTO_SHA512 is not set
-# CONFIG_CRYPTO_WP512 is not set
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
# CONFIG_CRYPTO_TGR192 is not set
-CONFIG_CRYPTO_DES=y
-# CONFIG_CRYPTO_BLOWFISH is not set
-# CONFIG_CRYPTO_TWOFISH is not set
-# CONFIG_CRYPTO_SERPENT is not set
-# CONFIG_CRYPTO_AES is not set
-# CONFIG_CRYPTO_CAST5 is not set
-# CONFIG_CRYPTO_CAST6 is not set
-# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_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 is not set
-# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_DEFLATE=m
-# CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
-# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
#
# Hardware crypto devices
@@ -1609,13 +1647,10 @@ CONFIG_CRYPTO_DEFLATE=m
#
# Library routines
#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-ezx/defconfig-a780-laforge b/packages/linux/linux-rp-2.6.21/defconfig-qemuarm
index 560530a1ce..f70b6db7c7 100644
--- a/packages/linux/linux-ezx/defconfig-a780-laforge
+++ b/packages/linux/linux-rp-2.6.21/defconfig-qemuarm
@@ -1,13 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16.13
-# Thu May 18 19:40:25 2006
+# 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_ARCH_MTD_XIP=y
+CONFIG_VECTORS_BASE=0xffff0000
#
# Code maturity level options
@@ -19,22 +20,24 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
# General setup
#
-CONFIG_LOCALVERSION="-ezx6"
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+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 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=y
+# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_KALLSYMS_EXTRA_PASS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
@@ -42,44 +45,40 @@ CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SHMEM=y
CONFIG_SLAB=y
-CONFIG_TINY_SHMEM=y
+# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
-CONFIG_OBSOLETE_INTERMODULE=m
+CONFIG_OBSOLETE_INTERMODULE=y
#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_OBSOLETE_MODPARM=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_BLK_DEV_IO_TRACE is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
+CONFIG_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=y
-CONFIG_DEFAULT_IOSCHED="noop"
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
#
# System Type
@@ -88,61 +87,63 @@ CONFIG_DEFAULT_IOSCHED="noop"
# 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_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_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
-CONFIG_PXA_EZX=y
#
-# Intel PXA2xx Implementations
+# Versatile platform type
#
-# 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_PXA_EZX_E680 is not set
-CONFIG_PXA_EZX_A780=y
-CONFIG_PXA27x=y
-CONFIG_IWMMXT=y
-CONFIG_PXA_SPI=y
-CONFIG_PXA_EZX_PCAP=y
-CONFIG_PXA_EZX_PCAP_EMU=m
+CONFIG_ARCH_VERSATILE_PB=y
+# CONFIG_MACH_VERSATILE_AB is not set
#
# Processor Type
#
CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
+CONFIG_CPU_ARM926T=y
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_XSCALE_PMU=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
@@ -154,6 +155,7 @@ CONFIG_XSCALE_PMU=y
#
# 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
@@ -164,6 +166,9 @@ 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
#
@@ -171,7 +176,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="mem=32M root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=1 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off console=ttyS2,115200n8 console=tty0"
+CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
#
@@ -184,6 +189,7 @@ CONFIG_CMDLINE="mem=32M root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=1 ip=192.1
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=y
#
# Userspace binary formats
@@ -197,9 +203,9 @@ CONFIG_BINFMT_ELF=y
# Power management options
#
CONFIG_PM=y
-CONFIG_PM_LEGACY=y
+# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
-CONFIG_APM=y
+# CONFIG_APM is not set
#
# Networking
@@ -210,147 +216,36 @@ CONFIG_NET=y
# Networking options
#
# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=m
+CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=m
-CONFIG_XFRM=y
-CONFIG_XFRM_USER=m
-CONFIG_NET_KEY=m
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
+CONFIG_IP_MULTICAST=y
# 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_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_TCP_DIAG=m
+# 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=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=m
-CONFIG_NETFILTER_NETLINK_QUEUE=m
-CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NETFILTER_XTABLES=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_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_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_SCTP=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-
-#
-# IP: Netfilter Configuration
-#
-CONFIG_IP_NF_CONNTRACK=m
-# CONFIG_IP_NF_CT_ACCT is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-CONFIG_IP_NF_CONNTRACK_EVENTS=y
-CONFIG_IP_NF_CONNTRACK_NETLINK=m
-CONFIG_IP_NF_CT_PROTO_SCTP=m
-CONFIG_IP_NF_FTP=m
-CONFIG_IP_NF_IRC=m
-CONFIG_IP_NF_NETBIOS_NS=m
-CONFIG_IP_NF_TFTP=m
-CONFIG_IP_NF_AMANDA=m
-CONFIG_IP_NF_PPTP=m
-# CONFIG_IP_NF_QUEUE is not set
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_IPRANGE=m
-CONFIG_IP_NF_MATCH_MULTIPORT=m
-CONFIG_IP_NF_MATCH_TOS=m
-CONFIG_IP_NF_MATCH_RECENT=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_DSCP=m
-CONFIG_IP_NF_MATCH_AH_ESP=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_MATCH_OWNER=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_HASHLIMIT=m
-CONFIG_IP_NF_MATCH_POLICY=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_TARGET_ULOG=m
-CONFIG_IP_NF_TARGET_TCPMSS=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_NAT_NEEDED=y
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_SAME=m
-CONFIG_IP_NF_NAT_SNMP_BASIC=m
-CONFIG_IP_NF_NAT_IRC=m
-CONFIG_IP_NF_NAT_FTP=m
-CONFIG_IP_NF_NAT_TFTP=m
-CONFIG_IP_NF_NAT_AMANDA=m
-CONFIG_IP_NF_NAT_PPTP=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_TOS=m
-# CONFIG_IP_NF_TARGET_ECN is not set
-CONFIG_IP_NF_TARGET_DSCP=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-
-#
-# IPv6: Netfilter Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP6_NF_QUEUE is not set
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_MULTIPORT=m
-CONFIG_IP6_NF_MATCH_OWNER=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_AHESP=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_POLICY=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_LOG=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_RAW=m
+# 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)
@@ -383,7 +278,6 @@ CONFIG_IP6_NF_RAW=m
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
-CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -391,32 +285,8 @@ CONFIG_NET_CLS_ROUTE=y
# 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_HCIVHCI=m
-CONFIG_IEEE80211=m
-# CONFIG_IEEE80211_DEBUG is not set
-CONFIG_IEEE80211_CRYPT_WEP=m
-CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
#
# Device Drivers
@@ -427,69 +297,65 @@ CONFIG_IEEE80211_CRYPT_CCMP=m
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
+# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
#
# Connector - unified userspace <-> kernelspace linker
#
-CONFIG_CONNECTOR=m
+# CONFIG_CONNECTOR is not set
#
# Memory Technology Devices (MTD)
#
-CONFIG_MTD=m
-CONFIG_MTD_DEBUG=y
-CONFIG_MTD_DEBUG_VERBOSE=3
+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
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_AFS_PARTS=y
#
# User Modules And Translation Layers
#
-CONFIG_MTD_CHAR=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-CONFIG_FTL=m
-CONFIG_NFTL=m
-CONFIG_NFTL_RW=y
-CONFIG_INFTL=m
-CONFIG_RFD_FTL=m
+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=m
-CONFIG_MTD_JEDECPROBE=m
-CONFIG_MTD_GEN_PROBE=m
+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_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 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
CONFIG_MTD_CFI_I1=y
-# CONFIG_MTD_CFI_I2 is not set
+CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
# CONFIG_MTD_OTP is not set
-CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=m
+CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
-CONFIG_MTD_XIP=y
#
# Mapping drivers for chip access
@@ -497,20 +363,15 @@ CONFIG_MTD_XIP=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_IMPA7 is not set
-# CONFIG_MTD_SHARP_SL is not set
-CONFIG_MTD_PXA27x=m
# 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_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
#
@@ -518,26 +379,12 @@ CONFIG_MTD_PXA27x=m
#
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
-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_DOC2001PLUS is not set
#
# NAND Flash Device Drivers
#
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_VERIFY_WRITE is not set
-# CONFIG_MTD_NAND_H1900 is not set
-CONFIG_MTD_NAND_IDS=m
-CONFIG_MTD_NAND_DISKONCHIP=m
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x0
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH is not set
-# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
-# CONFIG_MTD_NAND_SHARPSL is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND is not set
#
# OneNAND Flash Device Drivers
@@ -556,52 +403,119 @@ CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x0
#
# Block devices
#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=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
-# CONFIG_ARCH_EZX_ROFLASH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
+CONFIG_SCSI=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_MD is not set
CONFIG_BLK_DEV_DM=m
CONFIG_DM_CRYPT=m
-# CONFIG_DM_SNAPSHOT is not set
-# CONFIG_DM_MIRROR is not set
-# CONFIG_DM_ZERO is not set
-# CONFIG_DM_MULTIPATH is not set
+CONFIG_DM_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
@@ -610,28 +524,65 @@ CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN 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 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_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)
@@ -642,16 +593,11 @@ CONFIG_NETDEVICES=y
# Wan interfaces
#
# CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-# CONFIG_PPPOE 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
@@ -672,42 +618,37 @@ CONFIG_INPUT=y
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=m
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
-CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_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 is not set
+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_PXA=y
CONFIG_INPUT_MOUSE=y
-# CONFIG_MOUSE_PS2 is not set
+CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_TOUCHSCREEN_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_PCAP=m
-# CONFIG_INPUT_MISC 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=m
+CONFIG_SERIO=y
# CONFIG_SERIO_SERPORT is not set
-# CONFIG_SERIO_LIBPS2 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
@@ -727,13 +668,13 @@ CONFIG_HW_CONSOLE=y
#
# Non-8250 serial port support
#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
+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=y
-CONFIG_LEGACY_PTY_COUNT=256
+# CONFIG_LEGACY_PTYS is not set
#
# IPMI
@@ -745,16 +686,15 @@ CONFIG_LEGACY_PTY_COUNT=256
#
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
-CONFIG_SA1100_RTC=y
# 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
-# CONFIG_LINUX_LED is not set
-# CONFIG_BULVERDE_SRAM_DEV is not set
#
# TPM devices
@@ -765,96 +705,63 @@ CONFIG_SA1100_RTC=y
#
# I2C support
#
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=y
-CONFIG_I2C_PXA_SLAVE=y
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
-# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
-# CONFIG_I2C_ADCM2700 is not set
-# CONFIG_I2C_A780_CAMERA 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
+# CONFIG_I2C is not set
#
# SPI support
#
-CONFIG_SPI=y
-CONFIG_SPI_DEBUG=y
-CONFIG_SPI_MASTER=y
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
#
-# SPI Master Controller Drivers
+# Dallas's 1-wire bus
#
-CONFIG_SPI_BITBANG=m
+# CONFIG_W1 is not set
#
-# SPI Protocol Masters
+# 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
#
-# Dallas's 1-wire bus
+# Misc devices
#
-# CONFIG_W1 is not set
#
-# Hardware Monitoring support
+# Multi-Function Devices
#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
#
-# Misc devices
+# LED devices
#
+CONFIG_NEW_LEDS=y
+# CONFIG_LEDS_CLASS is not set
#
-# Motorola EZX devices
+# LED drivers
#
-# CONFIG_KEYPAD_A780 is not set
-# CONFIG_KEYPAD_E680 is not set
-# CONFIG_KEYLIGHT_A780 is not set
-# CONFIG_FMRADIO_E680 is not set
#
-# Multimedia Capabilities Port drivers
+# LED Triggers
#
+# CONFIG_LEDS_TRIGGERS is not set
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+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
@@ -864,31 +771,40 @@ 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_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_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
-# CONFIG_VGA_CONSOLE is not set
CONFIG_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
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
#
# Logo configuration
@@ -896,12 +812,12 @@ CONFIG_FONT_MINI_4x6=y
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
+# 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
@@ -913,7 +829,8 @@ CONFIG_LCD_DEVICE=y
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB=m
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
#
@@ -928,10 +845,12 @@ CONFIG_USB=m
#
# USB Host Controller Drivers
#
+# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
#
@@ -948,12 +867,12 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set
-CONFIG_USB_LIBUSUAL=y
+# CONFIG_USB_LIBUSUAL is not set
#
# USB Input Devices
#
-# CONFIG_USB_HID is not set
+CONFIG_USB_HID=y
#
# USB HID Boot Protocol drivers
@@ -961,13 +880,11 @@ CONFIG_USB_LIBUSUAL=y
# 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_WACOM=y
# 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
@@ -979,15 +896,7 @@ CONFIG_USB_LIBUSUAL=y
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
-
-#
-# USB Multimedia devices
-#
-# CONFIG_USB_DABUSB is not set
-
-#
-# Video4Linux support is needed for USB Multimedia device support
-#
+# CONFIG_USB_MICROTEK is not set
#
# USB Network Adapters
@@ -1031,52 +940,51 @@ CONFIG_USB_MON=y
#
# USB Gadget Support
#
-CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_DEBUG_FILES=y
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=y
-# CONFIG_USB_PXA27X_DMA 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 is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
-# CONFIG_USB_GADGETFS is not set
-# CONFIG_USB_FILE_STORAGE is not set
-# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_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 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 is not set
-CONFIG_EXT3_FS=y
-# CONFIG_EXT3_FS_XATTR is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
+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=m
-# CONFIG_INOTIFY is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set
-# CONFIG_DNOTIFY is not set
+CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
@@ -1090,11 +998,8 @@ CONFIG_ROMFS_FS=m
#
# 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_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
@@ -1102,11 +1007,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
-CONFIG_RELAYFS_FS=m
-CONFIG_CONFIGFS_FS=m
+# CONFIG_CONFIGFS_FS is not set
#
# Miscellaneous filesystems
@@ -1119,8 +1023,16 @@ CONFIG_CONFIGFS_FS=m
# 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_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
@@ -1130,25 +1042,26 @@ CONFIG_CRAMFS=y
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
-CONFIG_NFS_V4=y
+# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=m
+CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
+CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
-CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS 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
@@ -1158,13 +1071,28 @@ CONFIG_RPCSEC_GSS_KRB5=m
#
# Partition Types
#
-# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
#
# Native Language Support
#
-CONFIG_NLS=m
+CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
# CONFIG_NLS_CODEPAGE_437 is not set
# CONFIG_NLS_CODEPAGE_737 is not set
@@ -1208,7 +1136,8 @@ CONFIG_NLS_DEFAULT="iso8859-1"
#
# Profiling support
#
-# CONFIG_PROFILING is not set
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
#
# Kernel hacking
@@ -1217,25 +1146,25 @@ CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_DETECT_SOFTLOCKUP is not set
+CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_BUGVERBOSE 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_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=y
-# CONFIG_DEBUG_ICEDCC is not set
+# CONFIG_DEBUG_LL is not set
#
# Security options
@@ -1246,31 +1175,7 @@ CONFIG_DEBUG_LL=y
#
# 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=m
-CONFIG_CRYPTO_DES=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_MICHAEL_MIC=m
-CONFIG_CRYPTO_CRC32C=m
-CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO is not set
#
# Hardware crypto devices
@@ -1279,20 +1184,10 @@ CONFIG_CRYPTO_TEST=m
#
# Library routines
#
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
+# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_REED_SOLOMON=m
-CONFIG_REED_SOLOMON_DEC16=y
-CONFIG_TEXTSEARCH=y
-CONFIG_TEXTSEARCH_KMP=m
-CONFIG_TEXTSEARCH_BM=m
-CONFIG_TEXTSEARCH_FSM=m
-
-#
-# Dynamic Power Management
-#
-# CONFIG_DPM is not set
+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
new file mode 100644
index 0000000000..08e0a0c6c7
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/defconfig-qemux86
@@ -0,0 +1,1567 @@
+#
+# 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
+
+#
+# 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
new file mode 100644
index 0000000000..e1c2c10352
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/defconfig-spitz
@@ -0,0 +1,1741 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.21
+# Wed Jun 13 15:37:54 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
+
+#
+# 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 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_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
diff --git a/packages/linux/linux-rp-2.6.21/defconfig-tosa b/packages/linux/linux-rp-2.6.21/defconfig-tosa
new file mode 100644
index 0000000000..4360f7a179
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/defconfig-tosa
@@ -0,0 +1,1612 @@
+#
+# 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_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
new file mode 100644
index 0000000000..641fd19e50
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/hostap-monitor-mode.patch
@@ -0,0 +1,209 @@
+This is a patch that I've been maintaining for a few years, and I'd
+really like to see it added to the mainstream zaurus kernel so I can
+finally stop distributing my own.
+
+This patch only effects the card while in monitor mode, and does not
+cause any known stability issues.
+
+http://patches.aircrack-ng.org/hostap-kernel-2.6.18.patch
+
+Rick Farina (Zero_Chaos)
+
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_80211_tx.c 2006-09-21 01:30:18.000000000 -0400
+@@ -69,6 +69,9 @@
+ iface = netdev_priv(dev);
+ local = iface->local;
+
++ if (local->iw_mode == IW_MODE_MONITOR)
++ goto xmit;
++
+ if (skb->len < ETH_HLEN) {
+ printk(KERN_DEBUG "%s: hostap_data_start_xmit: short skb "
+ "(len=%d)\n", dev->name, skb->len);
+@@ -234,6 +237,7 @@
+ memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN);
+ }
+
++xmit:
+ iface->stats.tx_packets++;
+ iface->stats.tx_bytes += skb->len;
+
+@@ -404,8 +408,6 @@
+ }
+
+ if (skb->len < 24) {
+- printk(KERN_DEBUG "%s: hostap_master_start_xmit: short skb "
+- "(len=%d)\n", dev->name, skb->len);
+ ret = 0;
+ iface->stats.tx_dropped++;
+ goto fail;
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.orig
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_cs.c.rej
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_hw.c 2006-09-21 01:30:18.000000000 -0400
+@@ -1005,6 +1005,35 @@
+ return fid;
+ }
+
++static int prism2_monitor_enable(struct net_device *dev)
++{
++ if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE, 5)) {
++ printk(KERN_DEBUG "Port type setting for monitor mode "
++ "failed\n");
++ return -EOPNOTSUPP;
++ }
++
++ if (hfa384x_cmd(dev, HFA384X_CMDCODE_TEST | (0x0a << 8),
++ 0, NULL, NULL)) {
++ printk(KERN_DEBUG "Could not enter testmode 0x0a\n");
++ return -EOPNOTSUPP;
++ }
++
++ if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
++ HFA384X_WEPFLAGS_PRIVACYINVOKED |
++ HFA384X_WEPFLAGS_HOSTENCRYPT |
++ HFA384X_WEPFLAGS_HOSTDECRYPT)) {
++ printk(KERN_DEBUG "WEP flags setting failed\n");
++ return -EOPNOTSUPP;
++ }
++
++ if (hostap_set_word(dev, HFA384X_RID_PROMISCUOUSMODE, 1)) {
++ printk(KERN_DEBUG "Could not set promiscuous mode\n");
++ return -EOPNOTSUPP;
++ }
++
++ return 0;
++}
+
+ static int prism2_reset_port(struct net_device *dev)
+ {
+@@ -1031,6 +1060,10 @@
+ "port\n", dev->name);
+ }
+
++ if (local->iw_mode == IW_MODE_MONITOR)
++ /* force mode 0x0a after port 0 reset */
++ return prism2_monitor_enable(dev);
++
+ /* It looks like at least some STA firmware versions reset
+ * fragmentation threshold back to 2346 after enable command. Restore
+ * the configured value, if it differs from this default. */
+@@ -1466,6 +1499,10 @@
+ return 1;
+ }
+
++ if (local->iw_mode == IW_MODE_MONITOR)
++ /* force mode 0x0a after port 0 reset */
++ prism2_monitor_enable(dev);
++
+ local->hw_ready = 1;
+ local->hw_reset_tries = 0;
+ local->hw_resetting = 0;
+@@ -3156,6 +3193,7 @@
+ local->func->hw_config = prism2_hw_config;
+ local->func->hw_reset = prism2_hw_reset;
+ local->func->hw_shutdown = prism2_hw_shutdown;
++ local->func->monitor_enable = prism2_monitor_enable;
+ local->func->reset_port = prism2_reset_port;
+ local->func->schedule_reset = prism2_schedule_reset;
+ #ifdef PRISM2_DOWNLOAD_SUPPORT
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_hw.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_ioctl.c 2006-09-21 01:30:18.000000000 -0400
+@@ -1104,33 +1104,7 @@
+
+ printk(KERN_DEBUG "Enabling monitor mode\n");
+ hostap_monitor_set_type(local);
+-
+- if (hostap_set_word(dev, HFA384X_RID_CNFPORTTYPE,
+- HFA384X_PORTTYPE_PSEUDO_IBSS)) {
+- printk(KERN_DEBUG "Port type setting for monitor mode "
+- "failed\n");
+- return -EOPNOTSUPP;
+- }
+-
+- /* Host decrypt is needed to get the IV and ICV fields;
+- * however, monitor mode seems to remove WEP flag from frame
+- * control field */
+- if (hostap_set_word(dev, HFA384X_RID_CNFWEPFLAGS,
+- HFA384X_WEPFLAGS_HOSTENCRYPT |
+- HFA384X_WEPFLAGS_HOSTDECRYPT)) {
+- printk(KERN_DEBUG "WEP flags setting failed\n");
+- return -EOPNOTSUPP;
+- }
+-
+- if (local->func->reset_port(dev) ||
+- local->func->cmd(dev, HFA384X_CMDCODE_TEST |
+- (HFA384X_TEST_MONITOR << 8),
+- 0, NULL, NULL)) {
+- printk(KERN_DEBUG "Setting monitor mode failed\n");
+- return -EOPNOTSUPP;
+- }
+-
+- return 0;
++ return local->func->reset_port(dev);
+ }
+
+
+@@ -1199,7 +1173,7 @@
+ local->iw_mode = *mode;
+
+ if (local->iw_mode == IW_MODE_MONITOR)
+- hostap_monitor_mode_enable(local);
++ return hostap_monitor_mode_enable(local);
+ else if (local->iw_mode == IW_MODE_MASTER && !local->host_encrypt &&
+ !local->fw_encrypt_ok) {
+ printk(KERN_DEBUG "%s: defaulting to host-based encryption as "
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_main.c 2006-09-21 01:30:18.000000000 -0400
+@@ -331,7 +331,7 @@
+ if (local->iw_mode == IW_MODE_REPEAT)
+ return HFA384X_PORTTYPE_WDS;
+ if (local->iw_mode == IW_MODE_MONITOR)
+- return HFA384X_PORTTYPE_PSEUDO_IBSS;
++ return 5; /*HFA384X_PORTTYPE_PSEUDO_IBSS;*/
+ return HFA384X_PORTTYPE_HOSTAP;
+ }
+
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_main.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_pci.c 2006-09-21 01:30:18.000000000 -0400
+@@ -48,6 +48,8 @@
+ { 0x1260, 0x3873, PCI_ANY_ID, PCI_ANY_ID },
+ /* Samsung MagicLAN SWL-2210P */
+ { 0x167d, 0xa000, PCI_ANY_ID, PCI_ANY_ID },
++ /* NETGEAR MA311 */
++ { 0x1385, 0x3872, PCI_ANY_ID, PCI_ANY_ID },
+ { 0 }
+ };
+
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_pci.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_plx.c 2006-09-21 01:30:18.000000000 -0400
+@@ -101,6 +101,7 @@
+ { 0xc250, 0x0002 } /* EMTAC A2424i */,
+ { 0xd601, 0x0002 } /* Z-Com XI300 */,
+ { 0xd601, 0x0005 } /* Zcomax XI-325H 200mW */,
++ { 0xd601, 0x0010 } /* Zcomax XI-325H 100mW */,
+ { 0, 0}
+ };
+
+Only in linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap: hostap_plx.c.orig
+diff -ur linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h
+--- linux-2.6.18-gentoo/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:26:27.000000000 -0400
++++ linux-2.6.18-gentoo-rawtx/drivers/net/wireless/hostap/hostap_wlan.h 2006-09-21 01:30:18.000000000 -0400
+@@ -575,6 +575,7 @@
+ int (*hw_config)(struct net_device *dev, int initial);
+ void (*hw_reset)(struct net_device *dev);
+ void (*hw_shutdown)(struct net_device *dev, int no_disable);
++ int (*monitor_enable)(struct net_device *dev);
+ int (*reset_port)(struct net_device *dev);
+ void (*schedule_reset)(local_info_t *local);
+ int (*download)(local_info_t *local,
diff --git a/packages/linux/linux-rp-2.6.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
new file mode 100644
index 0000000000..380349f809
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/orinoco-remove-all-which-are-in-hostap-HACK.patch
@@ -0,0 +1,88 @@
+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
new file mode 100644
index 0000000000..bf20f46a05
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/pxa-serial-hack.patch
@@ -0,0 +1,90 @@
+---
+ drivers/serial/8250.c | 5 +++++
+ drivers/serial/serial_core.c | 1 +
+ drivers/serial/serial_cs.c | 12 +++++++++---
+ include/linux/serial_core.h | 1 +
+ 4 files changed, 16 insertions(+), 3 deletions(-)
+
+Index: linux-2.6.20/drivers/serial/8250.c
+===================================================================
+--- linux-2.6.20.orig/drivers/serial/8250.c 2007-04-27 13:37:26.000000000 +0100
++++ linux-2.6.20/drivers/serial/8250.c 2007-04-27 13:38:16.000000000 +0100
+@@ -2429,7 +2429,12 @@
+ .driver_name = "serial",
+ .dev_name = "ttyS",
+ .major = TTY_MAJOR,
++#ifdef CONFIG_SERIAL_PXA
++ .minor = 64 + 4,
++ .name_base = 4,
++#else
+ .minor = 64,
++#endif
+ .nr = UART_NR,
+ .cons = SERIAL8250_CONSOLE,
+ };
+Index: linux-2.6.20/drivers/serial/serial_core.c
+===================================================================
+--- linux-2.6.20.orig/drivers/serial/serial_core.c 2007-02-04 18:44:54.000000000 +0000
++++ linux-2.6.20/drivers/serial/serial_core.c 2007-04-27 13:39:39.000000000 +0100
+@@ -2068,7 +2068,8 @@
+ printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n",
+ port->dev ? port->dev->bus_id : "",
+ port->dev ? ": " : "",
+- drv->dev_name, port->line, address, port->irq, uart_type(port));
++ drv->dev_name, port->line + drv->name_base, address, port->irq,
++ uart_type(port));
+ }
+
+ static void
+@@ -2183,6 +2184,7 @@
+ normal->owner = drv->owner;
+ normal->driver_name = drv->driver_name;
+ normal->name = drv->dev_name;
++ normal->name_base = drv->name_base;
+ normal->major = drv->major;
+ normal->minor_start = drv->minor;
+ normal->type = TTY_DRIVER_TYPE_SERIAL;
+Index: linux-2.6.20/include/linux/serial_core.h
+===================================================================
+--- linux-2.6.20.orig/include/linux/serial_core.h 2007-02-04 18:44:54.000000000 +0000
++++ linux-2.6.20/include/linux/serial_core.h 2007-04-27 13:37:27.000000000 +0100
+@@ -341,6 +341,7 @@
+ struct module *owner;
+ const char *driver_name;
+ const char *dev_name;
++ int name_base;
+ int major;
+ int minor;
+ int nr;
+Index: linux-2.6.20/drivers/serial/serial_cs.c
+===================================================================
+--- linux-2.6.20.orig/drivers/serial/serial_cs.c 2007-02-04 18:44:54.000000000 +0000
++++ linux-2.6.20/drivers/serial/serial_cs.c 2007-04-27 13:40:34.000000000 +0100
+@@ -390,7 +390,7 @@
+ kio_addr_t iobase, int irq)
+ {
+ struct uart_port port;
+- int line;
++ int line, linestart;
+
+ memset(&port, 0, sizeof (struct uart_port));
+ port.iobase = iobase;
+@@ -411,10 +411,16 @@
+ return -EINVAL;
+ }
+
++#if CONFIG_SERIAL_PXA
++ linestart = 4;
++#else
++ linestart = 0;
++#endif
++
+ info->line[info->ndev] = line;
+- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
++ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
+ info->node[info->ndev].major = TTY_MAJOR;
+- info->node[info->ndev].minor = 0x40 + line;
++ info->node[info->ndev].minor = 0x40 + line + linestart;
+ if (info->ndev > 0)
+ info->node[info->ndev - 1].next = &info->node[info->ndev];
+ info->ndev++;
diff --git a/packages/linux/linux-rp-2.6.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
new file mode 100644
index 0000000000..18bf4268fc
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
@@ -0,0 +1,155 @@
+
+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/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.21/squashfs3.0-2.6.15.patch
new file mode 100644
index 0000000000..405d4ec124
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/squashfs3.0-2.6.15.patch
@@ -0,0 +1,4191 @@
+ fs/Kconfig | 65 +
+ fs/Makefile | 1
+ fs/squashfs/Makefile | 7
+ fs/squashfs/inode.c | 2124 +++++++++++++++++++++++++++++++++++++++++
+ fs/squashfs/squashfs.h | 86 +
+ fs/squashfs/squashfs2_0.c | 757 ++++++++++++++
+ include/linux/squashfs_fs.h | 911 +++++++++++++++++
+ include/linux/squashfs_fs_i.h | 45
+ include/linux/squashfs_fs_sb.h | 74 +
+ init/do_mounts_rd.c | 13
+ 10 files changed, 4083 insertions(+)
+
+Index: git/fs/Kconfig
+===================================================================
+--- git.orig/fs/Kconfig 2006-10-31 16:09:22.000000000 +0000
++++ git/fs/Kconfig 2006-10-31 21:26:45.000000000 +0000
+@@ -1407,6 +1407,71 @@ config CRAMFS
+
+ If unsure, say N.
+
++config SQUASHFS
++ tristate "SquashFS 3.0 - Squashed file system support"
++ select ZLIB_INFLATE
++ help
++ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File
++ System). Squashfs is a highly compressed read-only filesystem for Linux.
++ It uses zlib compression to compress both files, inodes and directories.
++ Inodes in the system are very small and all blocks are packed to minimise
++ data overhead. Block sizes greater than 4K are supported up to a maximum of 64K.
++ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full
++ uid/gid information, hard links and timestamps.
++
++ Squashfs is intended for general read-only filesystem use, for archival
++ use (i.e. in cases where a .tar.gz file may be used), and in embedded
++ systems where low overhead is needed. Further information and filesystem tools
++ are available from http://squashfs.sourceforge.net.
++
++ If you want to compile this as a module ( = code which can be
++ inserted in and removed from the running kernel whenever you want),
++ say M here and read <file:Documentation/modules.txt>. The module
++ will be called squashfs. Note that the root file system (the one
++ containing the directory /) cannot be compiled as a module.
++
++ If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++ bool "Additional options for memory-constrained systems"
++ depends on SQUASHFS
++ default n
++ help
++ Saying Y here allows you to specify cache sizes and how Squashfs
++ allocates memory. This is only intended for memory constrained
++ systems.
++
++ If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++ int "Number of fragments cached" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default "3"
++ help
++ By default SquashFS caches the last 3 fragments read from
++ the filesystem. Increasing this amount may mean SquashFS
++ has to re-read fragments less often from disk, at the expense
++ of extra system memory. Decreasing this amount will mean
++ SquashFS uses less memory at the expense of extra reads from disk.
++
++ Note there must be at least one cached fragment. Anything
++ much more than three will probably not make much difference.
++
++config SQUASHFS_VMALLOC
++ bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
++ depends on SQUASHFS
++ default n
++ help
++ By default SquashFS uses kmalloc to obtain fragment cache memory.
++ Kmalloc memory is the standard kernel allocator, but it can fail
++ on memory constrained systems. Because of the way Vmalloc works,
++ Vmalloc can succeed when kmalloc fails. Specifying this option
++ will make SquashFS always use Vmalloc to allocate the
++ fragment cache memory.
++
++ If unsure, say N.
++
+ config VXFS_FS
+ tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
+ depends on BLOCK
+Index: git/fs/Makefile
+===================================================================
+--- git.orig/fs/Makefile 2006-10-31 16:09:22.000000000 +0000
++++ git/fs/Makefile 2006-10-31 21:26:45.000000000 +0000
+@@ -67,6 +67,7 @@ obj-$(CONFIG_JBD) += jbd/
+ obj-$(CONFIG_JBD2) += jbd2/
+ obj-$(CONFIG_EXT2_FS) += ext2/
+ obj-$(CONFIG_CRAMFS) += cramfs/
++obj-$(CONFIG_SQUASHFS) += squashfs/
+ obj-$(CONFIG_RAMFS) += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
+Index: git/fs/squashfs/inode.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/inode.c 2006-11-01 18:01:32.000000000 +0000
+@@ -0,0 +1,2124 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++
++static void squashfs_put_super(struct super_block *);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static int squashfs_readpage(struct file *file, struct page *page);
++static int squashfs_readpage4K(struct file *file, struct page *page);
++static int squashfs_readdir(struct file *, void *, filldir_t);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
++ struct nameidata *);
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode);
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize);
++static int squashfs_get_sb(struct file_system_type *, int,
++ const char *, void *, struct vfsmount *);
++
++
++static z_stream stream;
++
++static struct file_system_type squashfs_fs_type = {
++ .owner = THIS_MODULE,
++ .name = "squashfs",
++ .get_sb = squashfs_get_sb,
++ .kill_sb = kill_block_super,
++ .fs_flags = FS_REQUIRES_DEV
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_symlink_aops = {
++ .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops = {
++ .readpage = squashfs_readpage
++};
++
++SQSH_EXTERN struct address_space_operations squashfs_aops_4K = {
++ .readpage = squashfs_readpage4K
++};
++
++static struct file_operations squashfs_dir_ops = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++ .lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++ int *cur_index, int *offset, int *c_byte)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned short temp;
++ struct buffer_head *bh;
++
++ if (!(bh = sb_bread(s, *cur_index)))
++ goto out;
++
++ if (msblk->devblksize - *offset == 1) {
++ if (msblk->swap)
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ else
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ if (msblk->swap)
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ bh->b_data);
++ else
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ bh->b_data);
++ *c_byte = temp;
++ *offset = 1;
++ } else {
++ if (msblk->swap) {
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ } else {
++ ((unsigned char *) &temp)[0] = *((unsigned char *)
++ (bh->b_data + *offset));
++ ((unsigned char *) &temp)[1] = *((unsigned char *)
++ (bh->b_data + *offset + 1));
++ }
++ *c_byte = temp;
++ *offset += 2;
++ }
++
++ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
++ if (*offset == msblk->devblksize) {
++ brelse(bh);
++ if (!(bh = sb_bread(s, ++(*cur_index))))
++ goto out;
++ *offset = 0;
++ }
++ if (*((unsigned char *) (bh->b_data + *offset)) !=
++ SQUASHFS_MARKER_BYTE) {
++ ERROR("Metadata block marker corrupt @ %x\n",
++ *cur_index);
++ brelse(bh);
++ goto out;
++ }
++ (*offset)++;
++ }
++ return bh;
++
++out:
++ return NULL;
++}
++
++
++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
++ msblk->devblksize_log2) + 2];
++ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
++ unsigned int cur_index = index >> msblk->devblksize_log2;
++ int bytes, avail_bytes, b = 0, k;
++ char *c_buffer;
++ unsigned int compressed;
++ unsigned int c_byte = length;
++
++ if (c_byte) {
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ if (!(bh[0] = sb_getblk(s, cur_index)))
++ goto block_release;
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b, bh);
++ } else {
++ if (!(bh[0] = get_block_length(s, &cur_index, &offset,
++ &c_byte)))
++ goto read_failure;
++
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED(c_byte);
++ c_buffer = compressed ? msblk->read_data : buffer;
++ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ for (b = 1; bytes < c_byte; b++) {
++ if (!(bh[b] = sb_getblk(s, ++cur_index)))
++ goto block_release;
++ bytes += msblk->devblksize;
++ }
++ ll_rw_block(READ, b - 1, bh + 1);
++ }
++
++ if (compressed)
++ down(&msblk->read_data_mutex);
++
++ for (bytes = 0, k = 0; k < b; k++) {
++ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++ msblk->devblksize - offset :
++ c_byte - bytes;
++ wait_on_buffer(bh[k]);
++ if (!buffer_uptodate(bh[k]))
++ goto block_release;
++ memcpy(c_buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++ bytes += avail_bytes;
++ offset = 0;
++ brelse(bh[k]);
++ }
++
++ /*
++ * uncompress block
++ */
++ if (compressed) {
++ int zlib_err;
++
++ stream.next_in = c_buffer;
++ stream.avail_in = c_byte;
++ stream.next_out = buffer;
++ stream.avail_out = msblk->read_size;
++
++ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) ||
++ ((zlib_err = zlib_inflate(&stream, Z_FINISH))
++ != Z_STREAM_END) || ((zlib_err =
++ zlib_inflateEnd(&stream)) != Z_OK)) {
++ ERROR("zlib_fs returned unexpected result 0x%x\n",
++ zlib_err);
++ bytes = 0;
++ } else
++ bytes = stream.total_out;
++
++ up(&msblk->read_data_mutex);
++ }
++
++ if (next_index)
++ *next_index = index + c_byte + (length ? 0 :
++ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
++ ? 3 : 2));
++ return bytes;
++
++block_release:
++ while (--b >= 0)
++ brelse(bh[b]);
++
++read_failure:
++ ERROR("sb_bread failed reading block 0x%x\n", cur_index);
++ return 0;
++}
++
++
++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ int n, i, bytes, return_length = length;
++ long long next_index;
++
++ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
++
++ while ( 1 ) {
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (msblk->block_cache[i].block == block)
++ break;
++
++ down(&msblk->block_cache_mutex);
++
++ if (i == SQUASHFS_CACHED_BLKS) {
++ /* read inode header block */
++ for (i = msblk->next_cache, n = SQUASHFS_CACHED_BLKS;
++ n ; n --, i = (i + 1) %
++ SQUASHFS_CACHED_BLKS)
++ if (msblk->block_cache[i].block !=
++ SQUASHFS_USED_BLK)
++ break;
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->waitq, &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->block_cache_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->waitq, &wait);
++ continue;
++ }
++ msblk->next_cache = (i + 1) % SQUASHFS_CACHED_BLKS;
++
++ if (msblk->block_cache[i].block ==
++ SQUASHFS_INVALID_BLK) {
++ if (!(msblk->block_cache[i].data =
++ kmalloc(SQUASHFS_METADATA_SIZE,
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate cache"
++ "block\n");
++ up(&msblk->block_cache_mutex);
++ goto out;
++ }
++ }
++
++ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
++ up(&msblk->block_cache_mutex);
++
++ if (!(msblk->block_cache[i].length =
++ squashfs_read_data(s,
++ msblk->block_cache[i].data,
++ block, 0, &next_index))) {
++ ERROR("Unable to read cache block [%llx:%x]\n",
++ block, offset);
++ goto out;
++ }
++
++ down(&msblk->block_cache_mutex);
++ wake_up(&msblk->waitq);
++ msblk->block_cache[i].block = block;
++ msblk->block_cache[i].next_index = next_index;
++ TRACE("Read cache block [%llx:%x]\n", block, offset);
++ }
++
++ if (msblk->block_cache[i].block != block) {
++ up(&msblk->block_cache_mutex);
++ continue;
++ }
++
++ if ((bytes = msblk->block_cache[i].length - offset) >= length) {
++ if (buffer)
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, length);
++ if (msblk->block_cache[i].length - offset == length) {
++ *next_block = msblk->block_cache[i].next_index;
++ *next_offset = 0;
++ } else {
++ *next_block = block;
++ *next_offset = offset + length;
++ }
++ up(&msblk->block_cache_mutex);
++ goto finish;
++ } else {
++ if (buffer) {
++ memcpy(buffer, msblk->block_cache[i].data +
++ offset, bytes);
++ buffer += bytes;
++ }
++ block = msblk->block_cache[i].next_index;
++ up(&msblk->block_cache_mutex);
++ length -= bytes;
++ offset = 0;
++ }
++ }
++
++finish:
++ return return_length;
++out:
++ return 0;
++}
++
++
++static int get_fragment_location(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment);
++ struct squashfs_fragment_entry fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment)
++{
++ down(&msblk->fragment_mutex);
++ fragment->locked --;
++ wake_up(&msblk->fragment_wait_queue);
++ up(&msblk->fragment_mutex);
++}
++
++
++SQSH_EXTERN struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length)
++{
++ int i, n, nf;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++
++ while ( 1 ) {
++ down(&msblk->fragment_mutex);
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS &&
++ msblk->fragment[i].block != start_block; i++);
++
++ if (i == SQUASHFS_CACHED_FRAGMENTS) {
++ nf = (msblk->next_fragment + 1) %
++ SQUASHFS_CACHED_FRAGMENTS;
++ for (i = msblk->next_fragment, n =
++ SQUASHFS_CACHED_FRAGMENTS; n &&
++ msblk->fragment[i].locked; n--, i = (i + 1) %
++ SQUASHFS_CACHED_FRAGMENTS);
++
++ if (n == 0) {
++ wait_queue_t wait;
++
++ init_waitqueue_entry(&wait, current);
++ add_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ set_current_state(TASK_UNINTERRUPTIBLE);
++ up(&msblk->fragment_mutex);
++ schedule();
++ set_current_state(TASK_RUNNING);
++ remove_wait_queue(&msblk->fragment_wait_queue,
++ &wait);
++ continue;
++ }
++ msblk->next_fragment = nf;
++
++ if (msblk->fragment[i].data == NULL)
++ if (!(msblk->fragment[i].data = SQUASHFS_ALLOC
++ (SQUASHFS_FILE_MAX_SIZE))) {
++ ERROR("Failed to allocate fragment "
++ "cache block\n");
++ up(&msblk->fragment_mutex);
++ goto out;
++ }
++
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].locked = 1;
++ up(&msblk->fragment_mutex);
++
++ if (!(msblk->fragment[i].length = squashfs_read_data(s,
++ msblk->fragment[i].data,
++ start_block, length, NULL))) {
++ ERROR("Unable to read fragment cache block "
++ "[%llx]\n", start_block);
++ msblk->fragment[i].locked = 0;
++ goto out;
++ }
++
++ msblk->fragment[i].block = start_block;
++ TRACE("New fragment %d, start block %lld, locked %d\n",
++ i, msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ msblk->fragment[i].locked++;
++ up(&msblk->fragment_mutex);
++ TRACE("Got fragment %d, start block %lld, locked %d\n", i,
++ msblk->fragment[i].block,
++ msblk->fragment[i].locked);
++ break;
++ }
++
++ return &msblk->fragment[i];
++
++out:
++ return NULL;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header *inodeb)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = inodeb->inode_number;
++ i->i_mtime.tv_sec = inodeb->mtime;
++ i->i_atime.tv_sec = inodeb->mtime;
++ i->i_ctime.tv_sec = inodeb->mtime;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header id, sid;
++ struct squashfs_base_inode_header *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_reg_inode_header *inodep = &id.reg;
++ struct squashfs_reg_inode_header *sinodep = &sid.reg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = 1;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_LREG_TYPE: {
++ unsigned int frag_size;
++ long long frag_blk;
++ struct squashfs_lreg_inode_header *inodep = &id.lreg;
++ struct squashfs_lreg_inode_header *sinodep = &sid.lreg;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %llx, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header *inodep = &id.dir;
++ struct squashfs_dir_inode_header *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops;
++ i->i_fop = &squashfs_dir_ops;
++ i->i_mode |= S_IFDIR;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header *inodep = &id.dev;
++ struct squashfs_dev_inode_header *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ struct squashfs_ipc_inode_header *inodep = &id.ipc;
++ struct squashfs_ipc_inode_header *sinodep = &sid.ipc;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb)) == NULL)
++ goto failed_read1;
++
++ i->i_nlink = inodep->nlink;
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int read_fragment_index_table(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ /* Allocate fragment index table */
++ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ long long fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES((&fragment),
++ &msblk->fragment_index[i], 1);
++ msblk->fragment_index[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int supported_squashfs_filesystem(struct squashfs_sb_info *msblk, int silent)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget;
++ msblk->read_blocklist = read_blocklist;
++ msblk->read_fragment_index_table = read_fragment_index_table;
++
++ if (sblk->s_major == 1) {
++ if (!squashfs_1_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 1.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 1.0 support enabled\n");
++ return 0;
++ }
++ } else if (sblk->s_major == 2) {
++ if (!squashfs_2_0_supported(msblk)) {
++ SERROR("Major/Minor mismatch, Squashfs 2.0 filesystems "
++ "are unsupported\n");
++ SERROR("Please recompile with "
++ "Squashfs 2.0 support enabled\n");
++ return 0;
++ }
++ } else if(sblk->s_major != SQUASHFS_MAJOR || sblk->s_minor >
++ SQUASHFS_MINOR) {
++ SERROR("Major/Minor mismatch, trying to mount newer %d.%d "
++ "filesystem\n", sblk->s_major, sblk->s_minor);
++ SERROR("Please update your kernel\n");
++ return 0;
++ }
++
++ return 1;
++}
++
++
++static int squashfs_fill_super(struct super_block *s, void *data, int silent)
++{
++ struct squashfs_sb_info *msblk;
++ struct squashfs_super_block *sblk;
++ int i;
++ char b[BDEVNAME_SIZE];
++ struct inode *root;
++
++ TRACE("Entered squashfs_read_superblock\n");
++
++ if (!(s->s_fs_info = kmalloc(sizeof(struct squashfs_sb_info),
++ GFP_KERNEL))) {
++ ERROR("Failed to allocate superblock\n");
++ goto failure;
++ }
++ memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info));
++ msblk = s->s_fs_info;
++ sblk = &msblk->sblk;
++
++ msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE);
++ msblk->devblksize_log2 = ffz(~msblk->devblksize);
++
++ init_MUTEX(&msblk->read_data_mutex);
++ init_MUTEX(&msblk->read_page_mutex);
++ init_MUTEX(&msblk->block_cache_mutex);
++ init_MUTEX(&msblk->fragment_mutex);
++ init_MUTEX(&msblk->meta_index_mutex);
++
++ init_waitqueue_head(&msblk->waitq);
++ init_waitqueue_head(&msblk->fragment_wait_queue);
++
++ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
++ sizeof(struct squashfs_super_block) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ SERROR("unable to read superblock\n");
++ goto failed_mount;
++ }
++
++ /* Check it is a SQUASHFS superblock */
++ msblk->swap = 0;
++ if ((s->s_magic = sblk->s_magic) != SQUASHFS_MAGIC) {
++ if (sblk->s_magic == SQUASHFS_MAGIC_SWAP) {
++ struct squashfs_super_block ssblk;
++
++ WARNING("Mounting a different endian SQUASHFS "
++ "filesystem on %s\n", bdevname(s->s_bdev, b));
++
++ SQUASHFS_SWAP_SUPER_BLOCK(&ssblk, sblk);
++ memcpy(sblk, &ssblk, sizeof(struct squashfs_super_block));
++ msblk->swap = 1;
++ } else {
++ SERROR("Can't find a SQUASHFS superblock on %s\n",
++ bdevname(s->s_bdev, b));
++ goto failed_mount;
++ }
++ }
++
++ /* Check the MAJOR & MINOR versions */
++ if(!supported_squashfs_filesystem(msblk, silent))
++ goto failed_mount;
++
++ TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b));
++ TRACE("Inodes are %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_INODES
++ (sblk->flags) ? "un" : "");
++ TRACE("Data is %scompressed\n",
++ SQUASHFS_UNCOMPRESSED_DATA(sblk->flags)
++ ? "un" : "");
++ TRACE("Check data is %s present in the filesystem\n",
++ SQUASHFS_CHECK_DATA(sblk->flags) ?
++ "" : "not");
++ TRACE("Filesystem size %lld bytes\n", sblk->bytes_used);
++ TRACE("Block size %d\n", sblk->block_size);
++ TRACE("Number of inodes %d\n", sblk->inodes);
++ if (sblk->s_major > 1)
++ TRACE("Number of fragments %d\n", sblk->fragments);
++ TRACE("Number of uids %d\n", sblk->no_uids);
++ TRACE("Number of gids %d\n", sblk->no_guids);
++ TRACE("sblk->inode_table_start %llx\n", sblk->inode_table_start);
++ TRACE("sblk->directory_table_start %llx\n", sblk->directory_table_start);
++ if (sblk->s_major > 1)
++ TRACE("sblk->fragment_table_start %llx\n",
++ sblk->fragment_table_start);
++ TRACE("sblk->uid_start %llx\n", sblk->uid_start);
++
++ s->s_flags |= MS_RDONLY;
++ s->s_op = &squashfs_ops;
++
++ /* Init inode_table block pointer array */
++ if (!(msblk->block_cache = kmalloc(sizeof(struct squashfs_cache) *
++ SQUASHFS_CACHED_BLKS, GFP_KERNEL))) {
++ ERROR("Failed to allocate block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
++
++ msblk->next_cache = 0;
++
++ /* Allocate read_data block */
++ msblk->read_size = (sblk->block_size < SQUASHFS_METADATA_SIZE) ?
++ SQUASHFS_METADATA_SIZE :
++ sblk->block_size;
++
++ if (!(msblk->read_data = kmalloc(msblk->read_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_data block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate read_page block */
++ if (!(msblk->read_page = kmalloc(sblk->block_size, GFP_KERNEL))) {
++ ERROR("Failed to allocate read_page block\n");
++ goto failed_mount;
++ }
++
++ /* Allocate uid and gid tables */
++ if (!(msblk->uid = kmalloc((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ goto failed_mount;
++ }
++ msblk->guid = msblk->uid + sblk->no_uids;
++
++ if (msblk->swap) {
++ unsigned int suid[sblk->no_uids + sblk->no_guids];
++
++ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++ SQUASHFS_SWAP_DATA(msblk->uid, suid, (sblk->no_uids +
++ sblk->no_guids), (sizeof(unsigned int) * 8));
++ } else
++ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start,
++ ((sblk->no_uids + sblk->no_guids) *
++ sizeof(unsigned int)) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read uid/gid table\n");
++ goto failed_mount;
++ }
++
++
++ if (sblk->s_major == 1 && squashfs_1_0_supported(msblk))
++ goto allocate_root;
++
++ if (!(msblk->fragment = kmalloc(sizeof(struct squashfs_fragment_cache) *
++ SQUASHFS_CACHED_FRAGMENTS, GFP_KERNEL))) {
++ ERROR("Failed to allocate fragment block cache\n");
++ goto failed_mount;
++ }
++
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) {
++ msblk->fragment[i].locked = 0;
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].data = NULL;
++ }
++
++ msblk->next_fragment = 0;
++
++ /* Allocate fragment index table */
++ if (msblk->read_fragment_index_table(s) == 0)
++ goto failed_mount;
++
++allocate_root:
++ if ((root = (msblk->iget)(s, sblk->root_inode)) == NULL)
++ goto failed_mount;
++
++ if ((s->s_root = d_alloc_root(root)) == NULL) {
++ ERROR("Root inode create failed\n");
++ iput(root);
++ goto failed_mount;
++ }
++
++ TRACE("Leaving squashfs_read_super\n");
++ return 0;
++
++failed_mount:
++ kfree(msblk->fragment_index);
++ kfree(msblk->fragment);
++ kfree(msblk->uid);
++ kfree(msblk->read_page);
++ kfree(msblk->read_data);
++ kfree(msblk->block_cache);
++ kfree(msblk->fragment_index_2);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ return -EINVAL;
++
++failure:
++ return -ENOMEM;
++}
++
++
++static int squashfs_statfs(struct dentry *dentry, struct kstatfs *buf)
++{
++ struct super_block *s = dentry->d_sb;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ TRACE("Entered squashfs_statfs\n");
++
++ buf->f_type = SQUASHFS_MAGIC;
++ buf->f_bsize = sblk->block_size;
++ buf->f_blocks = ((sblk->bytes_used - 1) >> sblk->block_log) + 1;
++ buf->f_bfree = buf->f_bavail = 0;
++ buf->f_files = sblk->inodes;
++ buf->f_ffree = 0;
++ buf->f_namelen = SQUASHFS_NAME_LEN;
++
++ return 0;
++}
++
++
++static int squashfs_symlink_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ int index = page->index << PAGE_CACHE_SHIFT, length, bytes;
++ long long block = SQUASHFS_I(inode)->start_block;
++ int offset = SQUASHFS_I(inode)->offset;
++ void *pageaddr = kmap(page);
++
++ TRACE("Entered squashfs_symlink_readpage, page index %ld, start block "
++ "%llx, offset %x\n", page->index,
++ SQUASHFS_I(inode)->start_block,
++ SQUASHFS_I(inode)->offset);
++
++ for (length = 0; length < index; length += bytes) {
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, NULL,
++ block, offset, PAGE_CACHE_SIZE, &block,
++ &offset))) {
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block,
++ offset);
++ goto skip_read;
++ }
++ }
++
++ if (length != index) {
++ ERROR("(squashfs_symlink_readpage) length != index\n");
++ bytes = 0;
++ goto skip_read;
++ }
++
++ bytes = (i_size_read(inode) - length) > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE :
++ i_size_read(inode) - length;
++
++ if (!(bytes = squashfs_get_cached_block(inode->i_sb, pageaddr, block,
++ offset, bytes, &block, &offset)))
++ ERROR("Unable to read symbolic link [%llx:%x]\n", block, offset);
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++struct meta_index *locate_meta_index(struct inode *inode, int index, int offset)
++{
++ struct meta_index *meta = NULL;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("locate_meta_index: index %d, offset %d\n", index, offset);
++
++ if(msblk->meta_index == NULL)
++ goto not_allocated;
++
++ for (i = 0; i < SQUASHFS_META_NUMBER; i ++)
++ if (msblk->meta_index[i].inode_number == inode->i_ino &&
++ msblk->meta_index[i].offset >= offset &&
++ msblk->meta_index[i].offset <= index &&
++ msblk->meta_index[i].locked == 0) {
++ TRACE("locate_meta_index: entry %d, offset %d\n", i,
++ msblk->meta_index[i].offset);
++ meta = &msblk->meta_index[i];
++ offset = meta->offset;
++ }
++
++ if (meta)
++ meta->locked = 1;
++
++not_allocated:
++ up(&msblk->meta_index_mutex);
++
++ return meta;
++}
++
++
++struct meta_index *empty_meta_index(struct inode *inode, int offset, int skip)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct meta_index *meta = NULL;
++ int i;
++
++ down(&msblk->meta_index_mutex);
++
++ TRACE("empty_meta_index: offset %d, skip %d\n", offset, skip);
++
++ if(msblk->meta_index == NULL) {
++ if (!(msblk->meta_index = kmalloc(sizeof(struct meta_index) *
++ SQUASHFS_META_NUMBER, GFP_KERNEL))) {
++ ERROR("Failed to allocate meta_index\n");
++ goto failed;
++ }
++ for(i = 0; i < SQUASHFS_META_NUMBER; i++) {
++ msblk->meta_index[i].inode_number = 0;
++ msblk->meta_index[i].locked = 0;
++ }
++ msblk->next_meta_index = 0;
++ }
++
++ for(i = SQUASHFS_META_NUMBER; i &&
++ msblk->meta_index[msblk->next_meta_index].locked; i --)
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ if(i == 0) {
++ TRACE("empty_meta_index: failed!\n");
++ goto failed;
++ }
++
++ TRACE("empty_meta_index: returned meta entry %d, %p\n",
++ msblk->next_meta_index,
++ &msblk->meta_index[msblk->next_meta_index]);
++
++ meta = &msblk->meta_index[msblk->next_meta_index];
++ msblk->next_meta_index = (msblk->next_meta_index + 1) %
++ SQUASHFS_META_NUMBER;
++
++ meta->inode_number = inode->i_ino;
++ meta->offset = offset;
++ meta->skip = skip;
++ meta->entries = 0;
++ meta->locked = 1;
++
++failed:
++ up(&msblk->meta_index_mutex);
++ return meta;
++}
++
++
++void release_meta_index(struct inode *inode, struct meta_index *meta)
++{
++ meta->locked = 0;
++}
++
++
++static int read_block_index(struct super_block *s, int blocks, char *block_list,
++ long long *start_block, int *offset)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ unsigned int *block_listp;
++ int block = 0;
++
++ if (msblk->swap) {
++ char sblock_list[blocks << 2];
++
++ if (!squashfs_get_cached_block(s, sblock_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++ SQUASHFS_SWAP_INTS(((unsigned int *)block_list),
++ ((unsigned int *)sblock_list), blocks);
++ } else
++ if (!squashfs_get_cached_block(s, block_list, *start_block,
++ *offset, blocks << 2, start_block, offset)) {
++ ERROR("Unable to read block list [%llx:%x]\n",
++ *start_block, *offset);
++ goto failure;
++ }
++
++ for (block_listp = (unsigned int *) block_list; blocks;
++ block_listp++, blocks --)
++ block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp);
++
++ return block;
++
++failure:
++ return -1;
++}
++
++
++#define SIZE 256
++
++static inline int calculate_skip(int blocks) {
++ int skip = (blocks - 1) / ((SQUASHFS_SLOTS * SQUASHFS_META_ENTRIES + 1) * SQUASHFS_META_INDEXES);
++ return skip >= 7 ? 7 : skip + 1;
++}
++
++
++static int get_meta_index(struct inode *inode, int index,
++ long long *index_block, int *index_offset,
++ long long *data_block, char *block_list)
++{
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int skip = calculate_skip(i_size_read(inode) >> sblk->block_log);
++ int offset = 0;
++ struct meta_index *meta;
++ struct meta_entry *meta_entry;
++ long long cur_index_block = SQUASHFS_I(inode)->u.s1.block_list_start;
++ int cur_offset = SQUASHFS_I(inode)->offset;
++ long long cur_data_block = SQUASHFS_I(inode)->start_block;
++ int i;
++
++ index /= SQUASHFS_META_INDEXES * skip;
++
++ while ( offset < index ) {
++ meta = locate_meta_index(inode, index, offset + 1);
++
++ if (meta == NULL) {
++ if ((meta = empty_meta_index(inode, offset + 1,
++ skip)) == NULL)
++ goto all_done;
++ } else {
++ offset = index < meta->offset + meta->entries ? index :
++ meta->offset + meta->entries - 1;
++ meta_entry = &meta->meta_entry[offset - meta->offset];
++ cur_index_block = meta_entry->index_block + sblk->inode_table_start;
++ cur_offset = meta_entry->offset;
++ cur_data_block = meta_entry->data_block;
++ TRACE("get_meta_index: offset %d, meta->offset %d, "
++ "meta->entries %d\n", offset, meta->offset,
++ meta->entries);
++ TRACE("get_meta_index: index_block 0x%llx, offset 0x%x"
++ " data_block 0x%llx\n", cur_index_block,
++ cur_offset, cur_data_block);
++ }
++
++ for (i = meta->offset + meta->entries; i <= index &&
++ i < meta->offset + SQUASHFS_META_ENTRIES; i++) {
++ int blocks = skip * SQUASHFS_META_INDEXES;
++
++ while (blocks) {
++ int block = blocks > (SIZE >> 2) ? (SIZE >> 2) :
++ blocks;
++ int res = read_block_index(inode->i_sb, block,
++ block_list, &cur_index_block,
++ &cur_offset);
++
++ if (res == -1)
++ goto failed;
++
++ cur_data_block += res;
++ blocks -= block;
++ }
++
++ meta_entry = &meta->meta_entry[i - meta->offset];
++ meta_entry->index_block = cur_index_block - sblk->inode_table_start;
++ meta_entry->offset = cur_offset;
++ meta_entry->data_block = cur_data_block;
++ meta->entries ++;
++ offset ++;
++ }
++
++ TRACE("get_meta_index: meta->offset %d, meta->entries %d\n",
++ meta->offset, meta->entries);
++
++ release_meta_index(inode, meta);
++ }
++
++all_done:
++ *index_block = cur_index_block;
++ *index_offset = cur_offset;
++ *data_block = cur_data_block;
++
++ return offset * SQUASHFS_META_INDEXES * skip;
++
++failed:
++ release_meta_index(inode, meta);
++ return -1;
++}
++
++
++static long long read_blocklist(struct inode *inode, int index,
++ int readahead_blks, char *block_list,
++ unsigned short **block_p, unsigned int *bsize)
++{
++ long long block_ptr;
++ int offset;
++ long long block;
++ int res = get_meta_index(inode, index, &block_ptr, &offset, &block,
++ block_list);
++
++ TRACE("read_blocklist: res %d, index %d, block_ptr 0x%llx, offset"
++ " 0x%x, block 0x%llx\n", res, index, block_ptr, offset,
++ block);
++
++ if(res == -1)
++ goto failure;
++
++ index -= res;
++
++ while ( index ) {
++ int blocks = index > (SIZE >> 2) ? (SIZE >> 2) : index;
++ int res = read_block_index(inode->i_sb, blocks, block_list,
++ &block_ptr, &offset);
++ if (res == -1)
++ goto failure;
++ block += res;
++ index -= blocks;
++ }
++
++ if (read_block_index(inode->i_sb, 1, block_list,
++ &block_ptr, &offset) == -1)
++ goto failure;
++ *bsize = *((unsigned int *) block_list);
++
++ return block;
++
++failure:
++ return 0;
++}
++
++
++static int squashfs_readpage(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char block_list[SIZE];
++ long long block;
++ unsigned int bsize, i = 0, bytes = 0, byte_offset = 0;
++ int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT);
++ void *pageaddr;
++ struct squashfs_fragment_cache *fragment = NULL;
++ char *data_ptr = msblk->read_page;
++
++ int mask = (1 << (sblk->block_log - PAGE_CACHE_SHIFT)) - 1;
++ int start_index = page->index & ~mask;
++ int end_index = start_index | mask;
++
++ TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT))
++ goto skip_read;
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ if ((block = (msblk->read_blocklist)(inode, index, 1,
++ block_list, NULL, &bsize)) == 0)
++ goto skip_read;
++
++ down(&msblk->read_page_mutex);
++
++ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
++ block, bsize, NULL))) {
++ ERROR("Unable to read page, block %llx, size %x\n", block,
++ bsize);
++ up(&msblk->read_page_mutex);
++ goto skip_read;
++ }
++ } else {
++ if ((fragment = get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)->u.s1.fragment_size))
++ == NULL) {
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ (int) SQUASHFS_I(inode)->
++ u.s1.fragment_size);
++ goto skip_read;
++ }
++ bytes = SQUASHFS_I(inode)->u.s1.fragment_offset +
++ (i_size_read(inode) & (sblk->block_size
++ - 1));
++ byte_offset = SQUASHFS_I(inode)->u.s1.fragment_offset;
++ data_ptr = fragment->data;
++ }
++
++ for (i = start_index; i <= end_index && byte_offset < bytes;
++ i++, byte_offset += PAGE_CACHE_SIZE) {
++ struct page *push_page;
++ int available_bytes = (bytes - byte_offset) > PAGE_CACHE_SIZE ?
++ PAGE_CACHE_SIZE : bytes - byte_offset;
++
++ TRACE("bytes %d, i %d, byte_offset %d, available_bytes %d\n",
++ bytes, i, byte_offset, available_bytes);
++
++ if (i == page->index) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++ } else if ((push_page =
++ grab_cache_page_nowait(page->mapping, i))) {
++ pageaddr = kmap_atomic(push_page, KM_USER0);
++
++ memcpy(pageaddr, data_ptr + byte_offset,
++ available_bytes);
++ memset(pageaddr + available_bytes, 0,
++ PAGE_CACHE_SIZE - available_bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(push_page);
++ SetPageUptodate(push_page);
++ unlock_page(push_page);
++ page_cache_release(push_page);
++ }
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || index < (i_size_read(inode) >>
++ sblk->block_log))
++ up(&msblk->read_page_mutex);
++ else
++ release_cached_fragment(msblk, fragment);
++
++ return 0;
++
++skip_read:
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++static int squashfs_readpage4K(struct file *file, struct page *page)
++{
++ struct inode *inode = page->mapping->host;
++ struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned char block_list[SIZE];
++ long long block;
++ unsigned int bsize, bytes = 0;
++ void *pageaddr;
++
++ TRACE("Entered squashfs_readpage4K, page index %lx, start block %llx\n",
++ page->index,
++ SQUASHFS_I(inode)->start_block);
++
++ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >>
++ PAGE_CACHE_SHIFT)) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ goto skip_read;
++ }
++
++ if (SQUASHFS_I(inode)->u.s1.fragment_start_block == SQUASHFS_INVALID_BLK
++ || page->index < (i_size_read(inode) >>
++ sblk->block_log)) {
++ block = (msblk->read_blocklist)(inode, page->index, 1,
++ block_list, NULL, &bsize);
++
++ down(&msblk->read_page_mutex);
++ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
++ bsize, NULL);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (bytes)
++ memcpy(pageaddr, msblk->read_page, bytes);
++ else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ block, bsize);
++ up(&msblk->read_page_mutex);
++ } else {
++ struct squashfs_fragment_cache *fragment =
++ get_cached_fragment(inode->i_sb,
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block,
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ if (fragment) {
++ bytes = i_size_read(inode) & (sblk->block_size - 1);
++ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
++ u.s1.fragment_offset, bytes);
++ release_cached_fragment(msblk, fragment);
++ } else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ SQUASHFS_I(inode)->
++ u.s1.fragment_start_block, (int)
++ SQUASHFS_I(inode)-> u.s1.fragment_size);
++ }
++
++skip_read:
++ memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(page);
++ SetPageUptodate(page);
++ unlock_page(page);
++
++ return 0;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ f_pos =- 3;
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length + 3;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer;
++ char str[SQUASHFS_NAME_LEN + 1];
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ return length + 3;
++}
++
++
++static int squashfs_readdir(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
++
++ TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset);
++
++ while(file->f_pos < 3) {
++ char *name;
++ int size, i_ino;
++
++ if(file->f_pos == 0) {
++ name = ".";
++ size = 1;
++ i_ino = i->i_ino;
++ } else {
++ name = "..";
++ size = 2;
++ i_ino = SQUASHFS_I(i)->u.s2.parent_inode;
++ }
++ TRACE("Calling filldir(%x, %s, %d, %d, %d, %d)\n",
++ (unsigned int) dirent, name, size, (int)
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]);
++
++ if (filldir(dirent, name, size,
++ file->f_pos, i_ino,
++ squashfs_filetype_table[1]) < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos += size;
++ dirs_read++;
++ }
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos,
++ dirh.inode_number + dire->inode_number,
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ dirs_read++;
++ }
++ }
++
++finish:
++ return dirs_read;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header dirh;
++ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN];
++ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %d\n", name,
++ dirh.start_block, dire->offset,
++ dirh.inode_number + dire->inode_number);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++static void squashfs_put_super(struct super_block *s)
++{
++ int i;
++
++ if (s->s_fs_info) {
++ struct squashfs_sb_info *sbi = s->s_fs_info;
++ if (sbi->block_cache)
++ for (i = 0; i < SQUASHFS_CACHED_BLKS; i++)
++ if (sbi->block_cache[i].block !=
++ SQUASHFS_INVALID_BLK)
++ kfree(sbi->block_cache[i].data);
++ if (sbi->fragment)
++ for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++)
++ SQUASHFS_FREE(sbi->fragment[i].data);
++ kfree(sbi->fragment);
++ kfree(sbi->block_cache);
++ kfree(sbi->read_data);
++ kfree(sbi->read_page);
++ kfree(sbi->uid);
++ kfree(sbi->fragment_index);
++ kfree(sbi->fragment_index_2);
++ kfree(sbi->meta_index);
++ kfree(s->s_fs_info);
++ s->s_fs_info = NULL;
++ }
++}
++
++
++static int squashfs_get_sb(struct file_system_type *fs_type,
++ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
++{
++ return get_sb_bdev(fs_type, flags, dev_name, data, squashfs_fill_super, mnt);
++}
++
++
++static int __init init_squashfs_fs(void)
++{
++ int err = init_inodecache();
++ if (err)
++ goto out;
++
++ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) "
++ "Phillip Lougher\n");
++
++ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) {
++ ERROR("Failed to allocate zlib workspace\n");
++ destroy_inodecache();
++ err = -ENOMEM;
++ goto out;
++ }
++
++ if ((err = register_filesystem(&squashfs_fs_type))) {
++ vfree(stream.workspace);
++ destroy_inodecache();
++ }
++
++out:
++ return err;
++}
++
++
++static void __exit exit_squashfs_fs(void)
++{
++ vfree(stream.workspace);
++ unregister_filesystem(&squashfs_fs_type);
++ destroy_inodecache();
++}
++
++
++static kmem_cache_t * squashfs_inode_cachep;
++
++
++static struct inode *squashfs_alloc_inode(struct super_block *sb)
++{
++ struct squashfs_inode_info *ei;
++ ei = kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
++ if (!ei)
++ return NULL;
++ return &ei->vfs_inode;
++}
++
++
++static void squashfs_destroy_inode(struct inode *inode)
++{
++ kmem_cache_free(squashfs_inode_cachep, SQUASHFS_I(inode));
++}
++
++
++static void init_once(void * foo, kmem_cache_t * cachep, unsigned long flags)
++{
++ struct squashfs_inode_info *ei = foo;
++
++ if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
++ SLAB_CTOR_CONSTRUCTOR)
++ inode_init_once(&ei->vfs_inode);
++}
++
++
++static int __init init_inodecache(void)
++{
++ squashfs_inode_cachep = kmem_cache_create("squashfs_inode_cache",
++ sizeof(struct squashfs_inode_info),
++ 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
++ init_once, NULL);
++ if (squashfs_inode_cachep == NULL)
++ return -ENOMEM;
++ return 0;
++}
++
++
++static void destroy_inodecache(void)
++{
++ kmem_cache_destroy(squashfs_inode_cachep);
++}
++
++
++module_init(init_squashfs_fs);
++module_exit(exit_squashfs_fs);
++MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem");
++MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
+Index: git/fs/squashfs/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/Makefile 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,7 @@
++#
++# Makefile for the linux squashfs routines.
++#
++
++obj-$(CONFIG_SQUASHFS) += squashfs.o
++squashfs-y += inode.o
++squashfs-y += squashfs2_0.o
+Index: git/fs/squashfs/squashfs2_0.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/squashfs2_0.c 2006-11-01 18:01:49.000000000 +0000
+@@ -0,0 +1,757 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs2_0.c
++ */
++
++#include <linux/types.h>
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/slab.h>
++#include <linux/fs.h>
++#include <linux/smp_lock.h>
++#include <linux/slab.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/init.h>
++#include <linux/dcache.h>
++#include <linux/wait.h>
++#include <linux/zlib.h>
++#include <linux/blkdev.h>
++#include <linux/vmalloc.h>
++#include <asm/uaccess.h>
++#include <asm/semaphore.h>
++
++#include "squashfs.h"
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir);
++static struct dentry *squashfs_lookup_2(struct inode *, struct dentry *,
++ struct nameidata *);
++
++static struct file_operations squashfs_dir_ops_2 = {
++ .read = generic_read_dir,
++ .readdir = squashfs_readdir_2
++};
++
++static struct inode_operations squashfs_dir_inode_ops_2 = {
++ .lookup = squashfs_lookup_2
++};
++
++static unsigned char squashfs_filetype_table[] = {
++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static int read_fragment_index_table_2(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ if (!(msblk->fragment_index_2 = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments), GFP_KERNEL))) {
++ ERROR("Failed to allocate uid/gid table\n");
++ return 0;
++ }
++
++ if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) &&
++ !squashfs_read_data(s, (char *)
++ msblk->fragment_index_2,
++ sblk->fragment_table_start,
++ SQUASHFS_FRAGMENT_INDEX_BYTES_2
++ (sblk->fragments) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) {
++ ERROR("unable to read fragment index table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ unsigned int fragment;
++
++ for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES_2(sblk->fragments);
++ i++) {
++ SQUASHFS_SWAP_FRAGMENT_INDEXES_2((&fragment),
++ &msblk->fragment_index_2[i], 1);
++ msblk->fragment_index_2[i] = fragment;
++ }
++ }
++
++ return 1;
++}
++
++
++static int get_fragment_location_2(struct super_block *s, unsigned int fragment,
++ long long *fragment_start_block,
++ unsigned int *fragment_size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start_block =
++ msblk->fragment_index_2[SQUASHFS_FRAGMENT_INDEX_2(fragment)];
++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET_2(fragment);
++ struct squashfs_fragment_entry_2 fragment_entry;
++
++ if (msblk->swap) {
++ struct squashfs_fragment_entry_2 sfragment_entry;
++
++ if (!squashfs_get_cached_block(s, (char *) &sfragment_entry,
++ start_block, offset,
++ sizeof(sfragment_entry), &start_block,
++ &offset))
++ goto out;
++ SQUASHFS_SWAP_FRAGMENT_ENTRY_2(&fragment_entry, &sfragment_entry);
++ } else
++ if (!squashfs_get_cached_block(s, (char *) &fragment_entry,
++ start_block, offset,
++ sizeof(fragment_entry), &start_block,
++ &offset))
++ goto out;
++
++ *fragment_start_block = fragment_entry.start_block;
++ *fragment_size = fragment_entry.size;
++
++ return 1;
++
++out:
++ return 0;
++}
++
++
++static struct inode *squashfs_new_inode(struct super_block *s,
++ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ struct inode *i = new_inode(s);
++
++ if (i) {
++ i->i_ino = ino;
++ i->i_mtime.tv_sec = sblk->mkfs_time;
++ i->i_atime.tv_sec = sblk->mkfs_time;
++ i->i_ctime.tv_sec = sblk->mkfs_time;
++ i->i_uid = msblk->uid[inodeb->uid];
++ i->i_mode = inodeb->mode;
++ i->i_nlink = 1;
++ i->i_size = 0;
++ if (inodeb->guid == SQUASHFS_GUIDS)
++ i->i_gid = i->i_uid;
++ else
++ i->i_gid = msblk->guid[inodeb->guid];
++ }
++
++ return i;
++}
++
++
++static struct inode *squashfs_iget_2(struct super_block *s, squashfs_inode_t inode)
++{
++ struct inode *i;
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned int block = SQUASHFS_INODE_BLK(inode) +
++ sblk->inode_table_start;
++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
++ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
++ - sblk->inode_table_start, offset);
++ long long next_block;
++ unsigned int next_offset;
++ union squashfs_inode_header_2 id, sid;
++ struct squashfs_base_inode_header_2 *inodeb = &id.base,
++ *sinodeb = &sid.base;
++
++ TRACE("Entered squashfs_iget\n");
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *) sinodeb, block,
++ offset, sizeof(*sinodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(inodeb, sinodeb,
++ sizeof(*sinodeb));
++ } else
++ if (!squashfs_get_cached_block(s, (char *) inodeb, block,
++ offset, sizeof(*inodeb), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ switch(inodeb->inode_type) {
++ case SQUASHFS_FILE_TYPE: {
++ struct squashfs_reg_inode_header_2 *inodep = &id.reg;
++ struct squashfs_reg_inode_header_2 *sinodep = &sid.reg;
++ long long frag_blk;
++ unsigned int frag_size;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_REG_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ frag_blk = SQUASHFS_INVALID_BLK;
++ if (inodep->fragment != SQUASHFS_INVALID_FRAG &&
++ !get_fragment_location_2(s,
++ inodep->fragment, &frag_blk, &frag_size))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_fop = &generic_ro_fops;
++ i->i_mode |= S_IFREG;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ i->i_blocks = ((i->i_size - 1) >> 9) + 1;
++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk;
++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size;
++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->u.s1.block_list_start = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++ if (sblk->block_size > 4096)
++ i->i_data.a_ops = &squashfs_aops;
++ else
++ i->i_data.a_ops = &squashfs_aops_4K;
++
++ TRACE("File inode %x:%x, start_block %x, "
++ "block_list_start %llx, offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, next_block,
++ next_offset);
++ break;
++ }
++ case SQUASHFS_DIR_TYPE: {
++ struct squashfs_dir_inode_header_2 *inodep = &id.dir;
++ struct squashfs_dir_inode_header_2 *sinodep = &sid.dir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DIR_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count = 0;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Directory inode %x:%x, start_block %x, offset "
++ "%x\n", SQUASHFS_INODE_BLK(inode),
++ offset, inodep->start_block,
++ inodep->offset);
++ break;
++ }
++ case SQUASHFS_LDIR_TYPE: {
++ struct squashfs_ldir_inode_header_2 *inodep = &id.ldir;
++ struct squashfs_ldir_inode_header_2 *sinodep = &sid.ldir;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_LDIR_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->file_size;
++ i->i_op = &squashfs_dir_inode_ops_2;
++ i->i_fop = &squashfs_dir_ops_2;
++ i->i_mode |= S_IFDIR;
++ i->i_mtime.tv_sec = inodep->mtime;
++ i->i_atime.tv_sec = inodep->mtime;
++ i->i_ctime.tv_sec = inodep->mtime;
++ SQUASHFS_I(i)->start_block = inodep->start_block;
++ SQUASHFS_I(i)->offset = inodep->offset;
++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block;
++ SQUASHFS_I(i)->u.s2.directory_index_offset =
++ next_offset;
++ SQUASHFS_I(i)->u.s2.directory_index_count =
++ inodep->i_count;
++ SQUASHFS_I(i)->u.s2.parent_inode = 0;
++
++ TRACE("Long directory inode %x:%x, start_block %x, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->start_block, inodep->offset);
++ break;
++ }
++ case SQUASHFS_SYMLINK_TYPE: {
++ struct squashfs_symlink_inode_header_2 *inodep =
++ &id.symlink;
++ struct squashfs_symlink_inode_header_2 *sinodep =
++ &sid.symlink;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(inodep,
++ sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_size = inodep->symlink_size;
++ i->i_op = &page_symlink_inode_operations;
++ i->i_data.a_ops = &squashfs_symlink_aops;
++ i->i_mode |= S_IFLNK;
++ SQUASHFS_I(i)->start_block = next_block;
++ SQUASHFS_I(i)->offset = next_offset;
++
++ TRACE("Symbolic link inode %x:%x, start_block %llx, "
++ "offset %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ next_block, next_offset);
++ break;
++ }
++ case SQUASHFS_BLKDEV_TYPE:
++ case SQUASHFS_CHRDEV_TYPE: {
++ struct squashfs_dev_inode_header_2 *inodep = &id.dev;
++ struct squashfs_dev_inode_header_2 *sinodep = &sid.dev;
++
++ if (msblk->swap) {
++ if (!squashfs_get_cached_block(s, (char *)
++ sinodep, block, offset,
++ sizeof(*sinodep), &next_block,
++ &next_offset))
++ goto failed_read;
++ SQUASHFS_SWAP_DEV_INODE_HEADER_2(inodep, sinodep);
++ } else
++ if (!squashfs_get_cached_block(s, (char *)
++ inodep, block, offset,
++ sizeof(*inodep), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type ==
++ SQUASHFS_CHRDEV_TYPE) ? S_IFCHR :
++ S_IFBLK;
++ init_special_inode(i, i->i_mode,
++ old_decode_dev(inodep->rdev));
++
++ TRACE("Device inode %x:%x, rdev %x\n",
++ SQUASHFS_INODE_BLK(inode), offset,
++ inodep->rdev);
++ break;
++ }
++ case SQUASHFS_FIFO_TYPE:
++ case SQUASHFS_SOCKET_TYPE: {
++ if ((i = squashfs_new_inode(s, inodeb, ino)) == NULL)
++ goto failed_read1;
++
++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE)
++ ? S_IFIFO : S_IFSOCK;
++ init_special_inode(i, i->i_mode, 0);
++ break;
++ }
++ default:
++ ERROR("Unknown inode type %d in squashfs_iget!\n",
++ inodeb->inode_type);
++ goto failed_read1;
++ }
++
++ insert_inode_hash(i);
++ return i;
++
++failed_read:
++ ERROR("Unable to read inode [%x:%x]\n", block, offset);
++
++failed_read1:
++ return NULL;
++}
++
++
++static int get_dir_index_using_offset(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ long long f_pos)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ struct squashfs_dir_index_2 index;
++
++ TRACE("Entered get_dir_index_using_offset, i_count %d, f_pos %d\n",
++ i_count, (unsigned int) f_pos);
++
++ if (f_pos == 0)
++ goto finish;
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(&index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) &index,
++ index_start, index_offset,
++ sizeof(index), &index_start,
++ &index_offset);
++
++ if (index.index > f_pos)
++ break;
++
++ squashfs_get_cached_block(s, NULL, index_start, index_offset,
++ index.size + 1, &index_start,
++ &index_offset);
++
++ length = index.index;
++ *next_block = index.start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++
++finish:
++ return length;
++}
++
++
++static int get_dir_index_using_name(struct super_block *s, long long
++ *next_block, unsigned int *next_offset,
++ long long index_start,
++ unsigned int index_offset, int i_count,
++ const char *name, int size)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ int i, length = 0;
++ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer;
++ char str[SQUASHFS_NAME_LEN + 1];
++
++ TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count);
++
++ strncpy(str, name, size);
++ str[size] = '\0';
++
++ for (i = 0; i < i_count; i++) {
++ if (msblk->swap) {
++ struct squashfs_dir_index_2 sindex;
++ squashfs_get_cached_block(s, (char *) &sindex,
++ index_start, index_offset,
++ sizeof(sindex), &index_start,
++ &index_offset);
++ SQUASHFS_SWAP_DIR_INDEX_2(index, &sindex);
++ } else
++ squashfs_get_cached_block(s, (char *) index,
++ index_start, index_offset,
++ sizeof(struct squashfs_dir_index_2),
++ &index_start, &index_offset);
++
++ squashfs_get_cached_block(s, index->name, index_start,
++ index_offset, index->size + 1,
++ &index_start, &index_offset);
++
++ index->name[index->size + 1] = '\0';
++
++ if (strcmp(index->name, str) > 0)
++ break;
++
++ length = index->index;
++ *next_block = index->start_block + sblk->directory_table_start;
++ }
++
++ *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE;
++ return length;
++}
++
++
++static int squashfs_readdir_2(struct file *file, void *dirent, filldir_t filldir)
++{
++ struct inode *i = file->f_dentry->d_inode;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1];
++ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
++
++ TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset);
++
++ length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count,
++ file->f_pos);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block, next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block, next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset,
++ dire->size + 1, &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (file->f_pos >= length)
++ continue;
++
++ dire->name[dire->size + 1] = '\0';
++
++ TRACE("Calling filldir(%x, %s, %d, %d, %x:%x, %d)\n",
++ (unsigned int) dirent, dire->name,
++ dire->size + 1, (int) file->f_pos,
++ dirh.start_block, dire->offset,
++ squashfs_filetype_table[dire->type]);
++
++ if (filldir(dirent, dire->name, dire->size + 1,
++ file->f_pos, SQUASHFS_MK_VFS_INODE(
++ dirh.start_block, dire->offset),
++ squashfs_filetype_table[dire->type])
++ < 0) {
++ TRACE("Filldir returned less than 0\n");
++ goto finish;
++ }
++ file->f_pos = length;
++ dirs_read++;
++ }
++ }
++
++finish:
++ return dirs_read;
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ return 0;
++}
++
++
++static struct dentry *squashfs_lookup_2(struct inode *i, struct dentry *dentry,
++ struct nameidata *nd)
++{
++ const unsigned char *name = dentry->d_name.name;
++ int len = dentry->d_name.len;
++ struct inode *inode = NULL;
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ long long next_block = SQUASHFS_I(i)->start_block +
++ sblk->directory_table_start;
++ int next_offset = SQUASHFS_I(i)->offset, length = 0,
++ dir_count;
++ struct squashfs_dir_header_2 dirh;
++ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN];
++ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer;
++ int sorted = sblk->s_major == 2 && sblk->s_minor >= 1;
++
++ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset);
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_loop;
++
++ length = get_dir_index_using_name(i->i_sb, &next_block, &next_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_start,
++ SQUASHFS_I(i)->u.s2.directory_index_offset,
++ SQUASHFS_I(i)->u.s2.directory_index_count, name,
++ len);
++
++ while (length < i_size_read(i)) {
++ /* read directory header */
++ if (msblk->swap) {
++ struct squashfs_dir_header_2 sdirh;
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &sdirh,
++ next_block, next_offset, sizeof(sdirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdirh);
++ SQUASHFS_SWAP_DIR_HEADER_2(&dirh, &sdirh);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *) &dirh,
++ next_block, next_offset, sizeof(dirh),
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += sizeof(dirh);
++ }
++
++ dir_count = dirh.count + 1;
++ while (dir_count--) {
++ if (msblk->swap) {
++ struct squashfs_dir_entry_2 sdire;
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ &sdire, next_block,next_offset,
++ sizeof(sdire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(sdire);
++ SQUASHFS_SWAP_DIR_ENTRY_2(dire, &sdire);
++ } else {
++ if (!squashfs_get_cached_block(i->i_sb, (char *)
++ dire, next_block,next_offset,
++ sizeof(*dire), &next_block,
++ &next_offset))
++ goto failed_read;
++
++ length += sizeof(*dire);
++ }
++
++ if (!squashfs_get_cached_block(i->i_sb, dire->name,
++ next_block, next_offset, dire->size + 1,
++ &next_block, &next_offset))
++ goto failed_read;
++
++ length += dire->size + 1;
++
++ if (sorted && name[0] < dire->name[0])
++ goto exit_loop;
++
++ if ((len == dire->size + 1) && !strncmp(name,
++ dire->name, len)) {
++ squashfs_inode_t ino =
++ SQUASHFS_MKINODE(dirh.start_block,
++ dire->offset);
++
++ TRACE("calling squashfs_iget for directory "
++ "entry %s, inode %x:%x, %lld\n", name,
++ dirh.start_block, dire->offset, ino);
++
++ inode = (msblk->iget)(i->i_sb, ino);
++
++ goto exit_loop;
++ }
++ }
++ }
++
++exit_loop:
++ d_add(dentry, inode);
++ return ERR_PTR(0);
++
++failed_read:
++ ERROR("Unable to read directory block [%llx:%x]\n", next_block,
++ next_offset);
++ goto exit_loop;
++}
++
++
++int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ msblk->iget = squashfs_iget_2;
++ msblk->read_fragment_index_table = read_fragment_index_table_2;
++
++ sblk->bytes_used = sblk->bytes_used_2;
++ sblk->uid_start = sblk->uid_start_2;
++ sblk->guid_start = sblk->guid_start_2;
++ sblk->inode_table_start = sblk->inode_table_start_2;
++ sblk->directory_table_start = sblk->directory_table_start_2;
++ sblk->fragment_table_start = sblk->fragment_table_start_2;
++
++ return 1;
++}
+Index: git/fs/squashfs/squashfs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/fs/squashfs/squashfs.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,86 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs.h
++ */
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#undef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++#endif
++
++#ifdef SQUASHFS_TRACE
++#define TRACE(s, args...) printk(KERN_NOTICE "SQUASHFS: "s, ## args)
++#else
++#define TRACE(s, args...) {}
++#endif
++
++#define ERROR(s, args...) printk(KERN_ERR "SQUASHFS error: "s, ## args)
++
++#define SERROR(s, args...) do { \
++ if (!silent) \
++ printk(KERN_ERR "SQUASHFS error: "s, ## args);\
++ } while(0)
++
++#define WARNING(s, args...) printk(KERN_WARNING "SQUASHFS: "s, ## args)
++
++static inline struct squashfs_inode_info *SQUASHFS_I(struct inode *inode)
++{
++ return list_entry(inode, struct squashfs_inode_info, vfs_inode);
++}
++
++#if defined(CONFIG_SQUASHFS_1_0_COMPATIBILITY ) || defined(CONFIG_SQUASHFS_2_0_COMPATIBILITY)
++#define SQSH_EXTERN
++extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++ long long index, unsigned int length,
++ long long *next_index);
++extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
++ long long block, unsigned int offset,
++ int length, long long *next_block,
++ unsigned int *next_offset);
++extern void release_cached_fragment(struct squashfs_sb_info *msblk, struct
++ squashfs_fragment_cache *fragment);
++extern struct squashfs_fragment_cache *get_cached_fragment(struct super_block
++ *s, long long start_block,
++ int length);
++extern struct address_space_operations squashfs_symlink_aops;
++extern struct address_space_operations squashfs_aops;
++extern struct address_space_operations squashfs_aops_4K;
++extern struct inode_operations squashfs_dir_inode_ops;
++#else
++#define SQSH_EXTERN static
++#endif
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++extern int squashfs_1_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_1_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++extern int squashfs_2_0_supported(struct squashfs_sb_info *msblk);
++#else
++static inline int squashfs_2_0_supported(struct squashfs_sb_info *msblk)
++{
++ return 0;
++}
++#endif
+Index: git/include/linux/squashfs_fs.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/linux/squashfs_fs.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,911 @@
++#ifndef SQUASHFS_FS
++#define SQUASHFS_FS
++
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs.h
++ */
++
++#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
++#endif
++
++#ifdef CONFIG_SQUASHFS_VMALLOC
++#define SQUASHFS_ALLOC(a) vmalloc(a)
++#define SQUASHFS_FREE(a) vfree(a)
++#else
++#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL)
++#define SQUASHFS_FREE(a) kfree(a)
++#endif
++#define SQUASHFS_CACHED_FRAGMENTS CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE
++#define SQUASHFS_MAJOR 3
++#define SQUASHFS_MINOR 0
++#define SQUASHFS_MAGIC 0x73717368
++#define SQUASHFS_MAGIC_SWAP 0x68737173
++#define SQUASHFS_START 0
++
++/* size of metadata (inode and directory) blocks */
++#define SQUASHFS_METADATA_SIZE 8192
++#define SQUASHFS_METADATA_LOG 13
++
++/* default size of data blocks */
++#define SQUASHFS_FILE_SIZE 65536
++#define SQUASHFS_FILE_LOG 16
++
++#define SQUASHFS_FILE_MAX_SIZE 65536
++
++/* Max number of uids and gids */
++#define SQUASHFS_UIDS 256
++#define SQUASHFS_GUIDS 255
++
++/* Max length of filename (not 255) */
++#define SQUASHFS_NAME_LEN 256
++
++#define SQUASHFS_INVALID ((long long) 0xffffffffffff)
++#define SQUASHFS_INVALID_FRAG ((unsigned int) 0xffffffff)
++#define SQUASHFS_INVALID_BLK ((long long) -1)
++#define SQUASHFS_USED_BLK ((long long) -2)
++
++/* Filesystem flags */
++#define SQUASHFS_NOI 0
++#define SQUASHFS_NOD 1
++#define SQUASHFS_CHECK 2
++#define SQUASHFS_NOF 3
++#define SQUASHFS_NO_FRAG 4
++#define SQUASHFS_ALWAYS_FRAG 5
++#define SQUASHFS_DUPLICATE 6
++
++#define SQUASHFS_BIT(flag, bit) ((flag >> bit) & 1)
++
++#define SQUASHFS_UNCOMPRESSED_INODES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOI)
++
++#define SQUASHFS_UNCOMPRESSED_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOD)
++
++#define SQUASHFS_UNCOMPRESSED_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NOF)
++
++#define SQUASHFS_NO_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_NO_FRAG)
++
++#define SQUASHFS_ALWAYS_FRAGMENTS(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_ALWAYS_FRAG)
++
++#define SQUASHFS_DUPLICATES(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_DUPLICATE)
++
++#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_CHECK)
++
++#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
++ duplicate_checking) (noi | (nod << 1) | (check_data << 2) \
++ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
++ (duplicate_checking << 6))
++
++/* Max number of types and file types */
++#define SQUASHFS_DIR_TYPE 1
++#define SQUASHFS_FILE_TYPE 2
++#define SQUASHFS_SYMLINK_TYPE 3
++#define SQUASHFS_BLKDEV_TYPE 4
++#define SQUASHFS_CHRDEV_TYPE 5
++#define SQUASHFS_FIFO_TYPE 6
++#define SQUASHFS_SOCKET_TYPE 7
++#define SQUASHFS_LDIR_TYPE 8
++#define SQUASHFS_LREG_TYPE 9
++
++/* 1.0 filesystem type definitions */
++#define SQUASHFS_TYPES 5
++#define SQUASHFS_IPC_TYPE 0
++
++/* Flag whether block is compressed or uncompressed, bit is set if block is
++ * uncompressed */
++#define SQUASHFS_COMPRESSED_BIT (1 << 15)
++
++#define SQUASHFS_COMPRESSED_SIZE(B) (((B) & ~SQUASHFS_COMPRESSED_BIT) ? \
++ (B) & ~SQUASHFS_COMPRESSED_BIT : SQUASHFS_COMPRESSED_BIT)
++
++#define SQUASHFS_COMPRESSED(B) (!((B) & SQUASHFS_COMPRESSED_BIT))
++
++#define SQUASHFS_COMPRESSED_BIT_BLOCK (1 << 24)
++
++#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B) (((B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
++ ~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
++
++#define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
++
++/*
++ * Inode number ops. Inodes consist of a compressed block number, and an
++ * uncompressed offset within that block
++ */
++#define SQUASHFS_INODE_BLK(a) ((unsigned int) ((a) >> 16))
++
++#define SQUASHFS_INODE_OFFSET(a) ((unsigned int) ((a) & 0xffff))
++
++#define SQUASHFS_MKINODE(A, B) ((squashfs_inode_t)(((squashfs_inode_t) (A)\
++ << 16) + (B)))
++
++/* Compute 32 bit VFS inode number from squashfs inode number */
++#define SQUASHFS_MK_VFS_INODE(a, b) ((unsigned int) (((a) << 8) + \
++ ((b) >> 2) + 1))
++/* XXX */
++
++/* Translate between VFS mode and squashfs mode */
++#define SQUASHFS_MODE(a) ((a) & 0xfff)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES(A) (A * sizeof(struct squashfs_fragment_entry))
++
++#define SQUASHFS_FRAGMENT_INDEX(A) (SQUASHFS_FRAGMENT_BYTES(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET(A) (SQUASHFS_FRAGMENT_BYTES(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES(A) ((SQUASHFS_FRAGMENT_BYTES(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\
++ sizeof(long long))
++
++/* cached data constants for filesystem */
++#define SQUASHFS_CACHED_BLKS 8
++
++#define SQUASHFS_MAX_FILE_SIZE_LOG 64
++
++#define SQUASHFS_MAX_FILE_SIZE ((long long) 1 << \
++ (SQUASHFS_MAX_FILE_SIZE_LOG - 2))
++
++#define SQUASHFS_MARKER_BYTE 0xff
++
++/* meta index cache */
++#define SQUASHFS_META_INDEXES (SQUASHFS_METADATA_SIZE / sizeof(unsigned int))
++#define SQUASHFS_META_ENTRIES 31
++#define SQUASHFS_META_NUMBER 8
++#define SQUASHFS_SLOTS 4
++
++struct meta_entry {
++ long long data_block;
++ unsigned int index_block;
++ unsigned short offset;
++ unsigned short pad;
++};
++
++struct meta_index {
++ unsigned int inode_number;
++ unsigned int offset;
++ unsigned short entries;
++ unsigned short skip;
++ unsigned short locked;
++ unsigned short pad;
++ struct meta_entry meta_entry[SQUASHFS_META_ENTRIES];
++};
++
++
++/*
++ * definitions for structures on disk
++ */
++
++typedef long long squashfs_block_t;
++typedef long long squashfs_inode_t;
++
++struct squashfs_super_block {
++ unsigned int s_magic;
++ unsigned int inodes;
++ unsigned int bytes_used_2;
++ unsigned int uid_start_2;
++ unsigned int guid_start_2;
++ unsigned int inode_table_start_2;
++ unsigned int directory_table_start_2;
++ unsigned int s_major:16;
++ unsigned int s_minor:16;
++ unsigned int block_size_1:16;
++ unsigned int block_log:16;
++ unsigned int flags:8;
++ unsigned int no_uids:8;
++ unsigned int no_guids:8;
++ unsigned int mkfs_time /* time of filesystem creation */;
++ squashfs_inode_t root_inode;
++ unsigned int block_size;
++ unsigned int fragments;
++ unsigned int fragment_table_start_2;
++ long long bytes_used;
++ long long uid_start;
++ long long guid_start;
++ long long inode_table_start;
++ long long directory_table_start;
++ long long fragment_table_start;
++ long long unused;
++} __attribute__ ((packed));
++
++struct squashfs_dir_index {
++ unsigned int index;
++ unsigned int start_block;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++#define SQUASHFS_BASE_INODE_HEADER \
++ unsigned int inode_type:4; \
++ unsigned int mode:12; \
++ unsigned int uid:8; \
++ unsigned int guid:8; \
++ unsigned int mtime; \
++ unsigned int inode_number;
++
++struct squashfs_base_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_lreg_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ squashfs_block_t start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ long long file_size;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int parent_inode;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header {
++ SQUASHFS_BASE_INODE_HEADER;
++ unsigned int nlink;
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int start_block;
++ unsigned int i_count:16;
++ unsigned int parent_inode;
++ struct squashfs_dir_index index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header {
++ struct squashfs_base_inode_header base;
++ struct squashfs_dev_inode_header dev;
++ struct squashfs_symlink_inode_header symlink;
++ struct squashfs_reg_inode_header reg;
++ struct squashfs_lreg_inode_header lreg;
++ struct squashfs_dir_inode_header dir;
++ struct squashfs_ldir_inode_header ldir;
++ struct squashfs_ipc_inode_header ipc;
++};
++
++struct squashfs_dir_entry {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ int inode_number:16;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_header {
++ unsigned int count:8;
++ unsigned int start_block;
++ unsigned int inode_number;
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry {
++ long long start_block;
++ unsigned int size;
++ unsigned int unused;
++} __attribute__ ((packed));
++
++extern int squashfs_uncompress_block(void *d, int dstlen, void *s, int srclen);
++extern int squashfs_uncompress_init(void);
++extern int squashfs_uncompress_exit(void);
++
++/*
++ * macros to convert each packed bitfield structure from little endian to big
++ * endian and vice versa. These are needed when creating or using a filesystem
++ * on a machine with different byte ordering to the target architecture.
++ *
++ */
++
++#define SQUASHFS_SWAP_START \
++ int bits;\
++ int b_pos;\
++ unsigned long long val;\
++ unsigned char *s;\
++ unsigned char *d;
++
++#define SQUASHFS_SWAP_SUPER_BLOCK(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_super_block));\
++ SQUASHFS_SWAP((s)->s_magic, d, 0, 32);\
++ SQUASHFS_SWAP((s)->inodes, d, 32, 32);\
++ SQUASHFS_SWAP((s)->bytes_used_2, d, 64, 32);\
++ SQUASHFS_SWAP((s)->uid_start_2, d, 96, 32);\
++ SQUASHFS_SWAP((s)->guid_start_2, d, 128, 32);\
++ SQUASHFS_SWAP((s)->inode_table_start_2, d, 160, 32);\
++ SQUASHFS_SWAP((s)->directory_table_start_2, d, 192, 32);\
++ SQUASHFS_SWAP((s)->s_major, d, 224, 16);\
++ SQUASHFS_SWAP((s)->s_minor, d, 240, 16);\
++ SQUASHFS_SWAP((s)->block_size_1, d, 256, 16);\
++ SQUASHFS_SWAP((s)->block_log, d, 272, 16);\
++ SQUASHFS_SWAP((s)->flags, d, 288, 8);\
++ SQUASHFS_SWAP((s)->no_uids, d, 296, 8);\
++ SQUASHFS_SWAP((s)->no_guids, d, 304, 8);\
++ SQUASHFS_SWAP((s)->mkfs_time, d, 312, 32);\
++ SQUASHFS_SWAP((s)->root_inode, d, 344, 64);\
++ SQUASHFS_SWAP((s)->block_size, d, 408, 32);\
++ SQUASHFS_SWAP((s)->fragments, d, 440, 32);\
++ SQUASHFS_SWAP((s)->fragment_table_start_2, d, 472, 32);\
++ SQUASHFS_SWAP((s)->bytes_used, d, 504, 64);\
++ SQUASHFS_SWAP((s)->uid_start, d, 568, 64);\
++ SQUASHFS_SWAP((s)->guid_start, d, 632, 64);\
++ SQUASHFS_SWAP((s)->inode_table_start, d, 696, 64);\
++ SQUASHFS_SWAP((s)->directory_table_start, d, 760, 64);\
++ SQUASHFS_SWAP((s)->fragment_table_start, d, 824, 64);\
++ SQUASHFS_SWAP((s)->unused, d, 888, 64);\
++}
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 64, 32);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ipc_inode_header))\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dev_inode_header)); \
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->rdev, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_symlink_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->symlink_size, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_reg_inode_header));\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 160, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 192, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 224, 32);\
++}
++
++#define SQUASHFS_SWAP_LREG_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_lreg_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 128, 64);\
++ SQUASHFS_SWAP((s)->fragment, d, 192, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 224, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 256, 64);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_dir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 147, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 160, 32);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 192, 32);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE(s, d, \
++ sizeof(struct squashfs_ldir_inode_header));\
++ SQUASHFS_SWAP((s)->nlink, d, 96, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 128, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 155, 13);\
++ SQUASHFS_SWAP((s)->start_block, d, 168, 32);\
++ SQUASHFS_SWAP((s)->i_count, d, 200, 16);\
++ SQUASHFS_SWAP((s)->parent_inode, d, 216, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index));\
++ SQUASHFS_SWAP((s)->index, d, 0, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 32, 32);\
++ SQUASHFS_SWAP((s)->size, d, 64, 8);\
++}
++
++#define SQUASHFS_SWAP_DIR_HEADER(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 32);\
++ SQUASHFS_SWAP((s)->inode_number, d, 40, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++ SQUASHFS_SWAP((s)->inode_number, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 64);\
++ SQUASHFS_SWAP((s)->size, d, 64, 32);\
++}
++
++#define SQUASHFS_SWAP_SHORTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 2);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 16)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 16);\
++}
++
++#define SQUASHFS_SWAP_INTS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 4);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 32)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 32);\
++}
++
++#define SQUASHFS_SWAP_LONG_LONGS(s, d, n) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ 64)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, 64);\
++}
++
++#define SQUASHFS_SWAP_DATA(s, d, n, bits) {\
++ int entry;\
++ int bit_position;\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, n * bits / 8);\
++ for(entry = 0, bit_position = 0; entry < n; entry++, bit_position += \
++ bits)\
++ SQUASHFS_SWAP(s[entry], d, bit_position, bits);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES(s, d, n) SQUASHFS_SWAP_LONG_LONGS(s, d, n)
++
++#ifdef CONFIG_SQUASHFS_1_0_COMPATIBILITY
++
++struct squashfs_base_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int type:4;
++ unsigned int offset:4;
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_1 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:4; /* index into uid table */
++ unsigned int guid:4; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 4);\
++ SQUASHFS_SWAP((s)->guid, d, 20, 4);
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_1(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_ipc_inode_header_1));\
++ SQUASHFS_SWAP((s)->type, d, 24, 4);\
++ SQUASHFS_SWAP((s)->offset, d, 28, 4);\
++}
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dev_inode_header_1));\
++ SQUASHFS_SWAP((s)->rdev, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_1));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 24, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_reg_inode_header_1));\
++ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 88, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, \
++ sizeof(struct squashfs_dir_inode_header_1));\
++ SQUASHFS_SWAP((s)->file_size, d, 24, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 43, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 56, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 88, 24);\
++}
++
++#endif
++
++#ifdef CONFIG_SQUASHFS_2_0_COMPATIBILITY
++
++struct squashfs_dir_index_2 {
++ unsigned int index:27;
++ unsigned int start_block:29;
++ unsigned char size;
++ unsigned char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_base_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_ipc_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++} __attribute__ ((packed));
++
++struct squashfs_dev_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short rdev;
++} __attribute__ ((packed));
++
++struct squashfs_symlink_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned short symlink_size;
++ char symlink[0];
++} __attribute__ ((packed));
++
++struct squashfs_reg_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int mtime;
++ unsigned int start_block;
++ unsigned int fragment;
++ unsigned int offset;
++ unsigned int file_size:32;
++ unsigned short block_list[0];
++} __attribute__ ((packed));
++
++struct squashfs_dir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:19;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_ldir_inode_header_2 {
++ unsigned int inode_type:4;
++ unsigned int mode:12; /* protection */
++ unsigned int uid:8; /* index into uid table */
++ unsigned int guid:8; /* index into guid table */
++ unsigned int file_size:27;
++ unsigned int offset:13;
++ unsigned int mtime;
++ unsigned int start_block:24;
++ unsigned int i_count:16;
++ struct squashfs_dir_index_2 index[0];
++} __attribute__ ((packed));
++
++union squashfs_inode_header_2 {
++ struct squashfs_base_inode_header_2 base;
++ struct squashfs_dev_inode_header_2 dev;
++ struct squashfs_symlink_inode_header_2 symlink;
++ struct squashfs_reg_inode_header_2 reg;
++ struct squashfs_dir_inode_header_2 dir;
++ struct squashfs_ldir_inode_header_2 ldir;
++ struct squashfs_ipc_inode_header_2 ipc;
++};
++
++struct squashfs_dir_header_2 {
++ unsigned int count:8;
++ unsigned int start_block:24;
++} __attribute__ ((packed));
++
++struct squashfs_dir_entry_2 {
++ unsigned int offset:13;
++ unsigned int type:3;
++ unsigned int size:8;
++ char name[0];
++} __attribute__ ((packed));
++
++struct squashfs_fragment_entry_2 {
++ unsigned int start_block;
++ unsigned int size;
++} __attribute__ ((packed));
++
++#define SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++ SQUASHFS_MEMSET(s, d, n);\
++ SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
++ SQUASHFS_SWAP((s)->mode, d, 4, 12);\
++ SQUASHFS_SWAP((s)->uid, d, 16, 8);\
++ SQUASHFS_SWAP((s)->guid, d, 24, 8);\
++
++#define SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, n) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, n)\
++}
++
++#define SQUASHFS_SWAP_IPC_INODE_HEADER_2(s, d) \
++ SQUASHFS_SWAP_BASE_INODE_HEADER_2(s, d, sizeof(struct squashfs_ipc_inode_header_2))
++
++#define SQUASHFS_SWAP_DEV_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dev_inode_header_2)); \
++ SQUASHFS_SWAP((s)->rdev, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_SYMLINK_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_symlink_inode_header_2));\
++ SQUASHFS_SWAP((s)->symlink_size, d, 32, 16);\
++}
++
++#define SQUASHFS_SWAP_REG_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_reg_inode_header_2));\
++ SQUASHFS_SWAP((s)->mtime, d, 32, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\
++ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\
++ SQUASHFS_SWAP((s)->offset, d, 128, 32);\
++ SQUASHFS_SWAP((s)->file_size, d, 160, 32);\
++}
++
++#define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_dir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 19);\
++ SQUASHFS_SWAP((s)->offset, d, 51, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 64, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 96, 24);\
++}
++
++#define SQUASHFS_SWAP_LDIR_INODE_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_SWAP_BASE_INODE_CORE_2(s, d, \
++ sizeof(struct squashfs_ldir_inode_header_2));\
++ SQUASHFS_SWAP((s)->file_size, d, 32, 27);\
++ SQUASHFS_SWAP((s)->offset, d, 59, 13);\
++ SQUASHFS_SWAP((s)->mtime, d, 72, 32);\
++ SQUASHFS_SWAP((s)->start_block, d, 104, 24);\
++ SQUASHFS_SWAP((s)->i_count, d, 128, 16);\
++}
++
++#define SQUASHFS_SWAP_DIR_INDEX_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_index_2));\
++ SQUASHFS_SWAP((s)->index, d, 0, 27);\
++ SQUASHFS_SWAP((s)->start_block, d, 27, 29);\
++ SQUASHFS_SWAP((s)->size, d, 56, 8);\
++}
++#define SQUASHFS_SWAP_DIR_HEADER_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_header_2));\
++ SQUASHFS_SWAP((s)->count, d, 0, 8);\
++ SQUASHFS_SWAP((s)->start_block, d, 8, 24);\
++}
++
++#define SQUASHFS_SWAP_DIR_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_dir_entry_2));\
++ SQUASHFS_SWAP((s)->offset, d, 0, 13);\
++ SQUASHFS_SWAP((s)->type, d, 13, 3);\
++ SQUASHFS_SWAP((s)->size, d, 16, 8);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_ENTRY_2(s, d) {\
++ SQUASHFS_SWAP_START\
++ SQUASHFS_MEMSET(s, d, sizeof(struct squashfs_fragment_entry_2));\
++ SQUASHFS_SWAP((s)->start_block, d, 0, 32);\
++ SQUASHFS_SWAP((s)->size, d, 32, 32);\
++}
++
++#define SQUASHFS_SWAP_FRAGMENT_INDEXES_2(s, d, n) SQUASHFS_SWAP_INTS(s, d, n)
++
++/* fragment and fragment table defines */
++#define SQUASHFS_FRAGMENT_BYTES_2(A) (A * sizeof(struct squashfs_fragment_entry_2))
++
++#define SQUASHFS_FRAGMENT_INDEX_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_OFFSET_2(A) (SQUASHFS_FRAGMENT_BYTES_2(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEXES_2(A) ((SQUASHFS_FRAGMENT_BYTES_2(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_FRAGMENT_INDEX_BYTES_2(A) (SQUASHFS_FRAGMENT_INDEXES_2(A) *\
++ sizeof(int))
++
++#endif
++
++#ifdef __KERNEL__
++
++/*
++ * macros used to swap each structure entry, taking into account
++ * bitfields and different bitfield placing conventions on differing
++ * architectures
++ */
++
++#include <asm/byteorder.h>
++
++#ifdef __BIG_ENDIAN
++ /* convert from little endian to big endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, b_pos)
++#else
++ /* convert from big endian to little endian */
++#define SQUASHFS_SWAP(value, p, pos, tbits) _SQUASHFS_SWAP(value, p, pos, \
++ tbits, 64 - tbits - b_pos)
++#endif
++
++#define _SQUASHFS_SWAP(value, p, pos, tbits, SHIFT) {\
++ b_pos = pos % 8;\
++ val = 0;\
++ s = (unsigned char *)p + (pos / 8);\
++ d = ((unsigned char *) &val) + 7;\
++ for(bits = 0; bits < (tbits + b_pos); bits += 8) \
++ *d-- = *s++;\
++ value = (val >> (SHIFT))/* & ((1 << tbits) - 1)*/;\
++}
++
++#define SQUASHFS_MEMSET(s, d, n) memset(s, 0, n);
++
++#endif
++#endif
+Index: git/include/linux/squashfs_fs_i.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/linux/squashfs_fs_i.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,45 @@
++#ifndef SQUASHFS_FS_I
++#define SQUASHFS_FS_I
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_i.h
++ */
++
++struct squashfs_inode_info {
++ long long start_block;
++ unsigned int offset;
++ union {
++ struct {
++ long long fragment_start_block;
++ unsigned int fragment_size;
++ unsigned int fragment_offset;
++ long long block_list_start;
++ } s1;
++ struct {
++ long long directory_index_start;
++ unsigned int directory_index_offset;
++ unsigned int directory_index_count;
++ unsigned int parent_inode;
++ } s2;
++ } u;
++ struct inode vfs_inode;
++};
++#endif
+Index: git/include/linux/squashfs_fs_sb.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/include/linux/squashfs_fs_sb.h 2006-10-31 21:26:45.000000000 +0000
+@@ -0,0 +1,74 @@
++#ifndef SQUASHFS_FS_SB
++#define SQUASHFS_FS_SB
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006
++ * Phillip Lougher <phillip@lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * squashfs_fs_sb.h
++ */
++
++#include <linux/squashfs_fs.h>
++
++struct squashfs_cache {
++ long long block;
++ int length;
++ long long next_index;
++ char *data;
++};
++
++struct squashfs_fragment_cache {
++ long long block;
++ int length;
++ unsigned int locked;
++ char *data;
++};
++
++struct squashfs_sb_info {
++ struct squashfs_super_block sblk;
++ int devblksize;
++ int devblksize_log2;
++ int swap;
++ struct squashfs_cache *block_cache;
++ struct squashfs_fragment_cache *fragment;
++ int next_cache;
++ int next_fragment;
++ int next_meta_index;
++ unsigned int *uid;
++ unsigned int *guid;
++ long long *fragment_index;
++ unsigned int *fragment_index_2;
++ unsigned int read_size;
++ char *read_data;
++ char *read_page;
++ struct semaphore read_data_mutex;
++ struct semaphore read_page_mutex;
++ struct semaphore block_cache_mutex;
++ struct semaphore fragment_mutex;
++ struct semaphore meta_index_mutex;
++ wait_queue_head_t waitq;
++ wait_queue_head_t fragment_wait_queue;
++ struct meta_index *meta_index;
++ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \
++ inode);
++ long long (*read_blocklist)(struct inode *inode, int \
++ index, int readahead_blks, char *block_list, \
++ unsigned short **block_p, unsigned int *bsize);
++ int (*read_fragment_index_table)(struct super_block *s);
++};
++#endif
+Index: git/init/do_mounts_rd.c
+===================================================================
+--- git.orig/init/do_mounts_rd.c 2006-10-31 16:09:47.000000000 +0000
++++ git/init/do_mounts_rd.c 2006-10-31 21:26:45.000000000 +0000
+@@ -5,6 +5,7 @@
+ #include <linux/ext2_fs.h>
+ #include <linux/romfs_fs.h>
+ #include <linux/cramfs_fs.h>
++#include <linux/squashfs_fs.h>
+ #include <linux/initrd.h>
+ #include <linux/string.h>
+
+@@ -39,6 +40,7 @@ static int __init crd_load(int in_fd, in
+ * numbers could not be found.
+ *
+ * We currently check for the following magic numbers:
++ * squashfs
+ * minix
+ * ext2
+ * romfs
+@@ -53,6 +55,7 @@ identify_ramdisk_image(int fd, int start
+ struct ext2_super_block *ext2sb;
+ struct romfs_super_block *romfsb;
+ struct cramfs_super *cramfsb;
++ struct squashfs_super_block *squashfsb;
+ int nblocks = -1;
+ unsigned char *buf;
+
+@@ -64,6 +67,7 @@ identify_ramdisk_image(int fd, int start
+ ext2sb = (struct ext2_super_block *) buf;
+ romfsb = (struct romfs_super_block *) buf;
+ cramfsb = (struct cramfs_super *) buf;
++ squashfsb = (struct squashfs_super_block *) buf;
+ memset(buf, 0xe5, size);
+
+ /*
+@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start
+ goto done;
+ }
+
++ /* squashfs is at block zero too */
++ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
++ printk(KERN_NOTICE
++ "RAMDISK: squashfs filesystem found at block %d\n",
++ start_block);
++ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ goto done;
++ }
++
+ /*
+ * Read block 1 to test for minix and ext2 superblock
+ */
diff --git a/packages/linux/linux-rp-2.6.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
new file mode 100644
index 0000000000..b1b0fc3549
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/vesafb-tng-1.0-rc2-2.6.20-rc2.patch
@@ -0,0 +1,3141 @@
+diff --git a/Documentation/fb/vesafb.txt b/Documentation/fb/vesafb.txt
+index ee277dd..93d6e6e 100644
+--- a/Documentation/fb/vesafb.txt
++++ b/Documentation/fb/vesafb.txt
+@@ -2,16 +2,18 @@
+ What is vesafb?
+ ===============
+
+-This is a generic driver for a graphic framebuffer on intel boxes.
++Vesafb is a generic framebuffer driver for x86 and x86_64 boxes.
+
+-The idea is simple: Turn on graphics mode at boot time with the help
+-of the BIOS, and use this as framebuffer device /dev/fb0, like the m68k
+-(and other) ports do.
++VESA BIOS Extensions Version 2.0 are required, because we need access to
++a linear frame buffer. VBE 3.0 is required if you want to use modes with a
++higher (than the standard 60 Hz) refresh rate.
+
+-This means we decide at boot time whenever we want to run in text or
+-graphics mode. Switching mode later on (in protected mode) is
+-impossible; BIOS calls work in real mode only. VESA BIOS Extensions
+-Version 2.0 are required, because we need a linear frame buffer.
++The VESA framebuffer driver comes in two flavors - the standard 'vesafb'
++and 'vesafb-tng'. Vesafb-tng is available only on 32-bit x86 due to the
++technology it uses (vm86). Vesafb-tng has more features than vesafb
++(adjusting the refresh rate on VBE 3.0 compliant boards, switching the
++video mode without rebooting, selecting a mode by providing its
++modedb name, and more).
+
+ Advantages:
+
+@@ -29,26 +31,35 @@ Disadvantages:
+ How to use it?
+ ==============
+
+-Switching modes is done using the vga=... boot parameter. Read
+-Documentation/svga.txt for details.
++If you are running a 32-bit x86 system and you decide to use vesafb-tng,
++you can either compile the driver into the kernel or use it as a module.
++The graphics mode you want to use is in both cases specified using the
++standard modedb format.
+
+-You should compile in both vgacon (for text mode) and vesafb (for
+-graphics mode). Which of them takes over the console depends on
+-whenever the specified mode is text or graphics.
++If your system doesn't support vm86 calls, things get a little more tricky.
++Since on such systems you can't do BIOS calls from protected mode in which
++kernel runs, you have to decide at boot time whenever you want to run in text
++or in graphics mode. Switching mode later on is impossible. Switching modes
++is done using the vga=... boot parameter. Read Documentation/svga.txt for
++details. Below is a more detailed description of what to do on systems using
++the standard vesafb driver.
+
+-The graphic modes are NOT in the list which you get if you boot with
+-vga=ask and hit return. The mode you wish to use is derived from the
+-VESA mode number. Here are those VESA mode numbers:
++You should compile in both vgacon (for text mode) and vesafb (for graphics
++mode). Which of them takes over the console depends on whenever the
++specified mode is text or graphics.
++
++The graphic modes are NOT in the list which you get if you boot with vga=ask
++and hit return. The mode you wish to use is derived from the VESA mode number.
++Here are those VESA mode numbers:
+
+ | 640x480 800x600 1024x768 1280x1024
+ ----+-------------------------------------
+-256 | 0x101 0x103 0x105 0x107
+-32k | 0x110 0x113 0x116 0x119
+-64k | 0x111 0x114 0x117 0x11A
+-16M | 0x112 0x115 0x118 0x11B
++256 | 0x101 0x103 0x105 0x107
++32k | 0x110 0x113 0x116 0x119
++64k | 0x111 0x114 0x117 0x11A
++16M | 0x112 0x115 0x118 0x11B
+
+-The video mode number of the Linux kernel is the VESA mode number plus
+-0x200.
++The video mode number of the Linux kernel is the VESA mode number plus 0x200.
+
+ Linux_kernel_mode_number = VESA_mode_number + 0x200
+
+@@ -56,15 +67,15 @@ So the table for the Kernel mode numbers are:
+
+ | 640x480 800x600 1024x768 1280x1024
+ ----+-------------------------------------
+-256 | 0x301 0x303 0x305 0x307
+-32k | 0x310 0x313 0x316 0x319
+-64k | 0x311 0x314 0x317 0x31A
+-16M | 0x312 0x315 0x318 0x31B
++256 | 0x301 0x303 0x305 0x307
++32k | 0x310 0x313 0x316 0x319
++64k | 0x311 0x314 0x317 0x31A
++16M | 0x312 0x315 0x318 0x31B
+
+-To enable one of those modes you have to specify "vga=ask" in the
+-lilo.conf file and rerun LILO. Then you can type in the desired
+-mode at the "vga=ask" prompt. For example if you like to use
+-1024x768x256 colors you have to say "305" at this prompt.
++To enable one of those modes you have to specify "vga=ask" in the lilo.conf
++file and rerun LILO. Then you can type in the desired mode at the "vga=ask"
++prompt. For example if you like to use 1024x768x256 colors you have to say
++"305" at this prompt.
+
+ If this does not work, this might be because your BIOS does not support
+ linear framebuffers or because it does not support this mode at all.
+@@ -72,11 +83,12 @@ Even if your board does, it might be the BIOS which does not. VESA BIOS
+ Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a
+ "bad mode number" message if something goes wrong.
+
+-1. Note: LILO cannot handle hex, for booting directly with
++1. Note: LILO cannot handle hex, for booting directly with
+ "vga=mode-number" you have to transform the numbers to decimal.
+ 2. Note: Some newer versions of LILO appear to work with those hex values,
+ if you set the 0x in front of the numbers.
+
++
+ X11
+ ===
+
+@@ -84,98 +96,164 @@ XF68_FBDev should work just fine, but it is non-accelerated. Running
+ another (accelerated) X-Server like XF86_SVGA might or might not work.
+ It depends on X-Server and graphics board.
+
+-The X-Server must restore the video mode correctly, else you end up
++The X-Server must restore the video mode correctly, or else you end up
+ with a broken console (and vesafb cannot do anything about this).
++With vesafb-tng chances are that the console will be restored properly
++even if the X server messes up the video mode.
+
+
+ Refresh rates
+ =============
+
+-There is no way to change the vesafb video mode and/or timings after
+-booting linux. If you are not happy with the 60 Hz refresh rate, you
+-have these options:
++With VBE 3.0 compatible BIOSes and vesafb-tng it is possible to change
++the refresh rate either at boot time (by specifying the @<rr> part of
++the mode name) or later, using the fbset utility.
++
++If you want to use the default BIOS refresh rate while switching modes
++on a running system, set pixclock to 0.
+
+- * configure and load the DOS-Tools for your the graphics board (if
+- available) and boot linux with loadlin.
+- * use a native driver (matroxfb/atyfb) instead if vesafb. If none
++With VBE 2.0 there is no way to change the mode timings after booting
++Linux. If you are not happy with the 60 Hz refresh rate, you have
++the following options:
++
++ * Configure and load the DOS tools for your the graphics board (if
++ available) and boot Linux with loadlin.
++ * Use a native driver (matroxfb/atyfb) instead of vesafb. If none
+ is available, write a new one!
+- * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0
+- support nor the specs, so I have not checked this yet.
++ * Use a BIOS editor to change the default refresh rate (such an
++ editor does exist at least for ATI Radeon BIOSes).
++ * If you're running a non-vm86 and VBE 3.0 compatible system, you can
++ use a kernel patch (vesafb-rrc) to hard-code some mode timings in
++ the kernel and use these while setting the video mode at boot time.
++
++Note that there are some boards (nVidia 59**, 57** and newer models)
++claiming that their Video BIOS is VBE 3.0 compliant, while ignoring the
++CRTC values provided by software such as vesafb-tng. You'll not be able
++to adjust the refresh rate if you're using one of these boards.
+
+
+ Configuration
+ =============
+
+-The VESA BIOS provides protected mode interface for changing
+-some parameters. vesafb can use it for palette changes and
+-to pan the display. It is turned off by default because it
+-seems not to work with some BIOS versions, but there are options
+-to turn it on.
+-
+-You can pass options to vesafb using "video=vesafb:option" on
+-the kernel command line. Multiple options should be separated
+-by comma, like this: "video=vesafb:ypan,invers"
+-
+-Accepted options:
+-
+-invers no comment...
+-
+-ypan enable display panning using the VESA protected mode
+- interface. The visible screen is just a window of the
+- video memory, console scrolling is done by changing the
+- start of the window.
+- pro: * scrolling (fullscreen) is fast, because there is
+- no need to copy around data.
+- * You'll get scrollback (the Shift-PgUp thing),
+- the video memory can be used as scrollback buffer
+- kontra: * scrolling only parts of the screen causes some
+- ugly flicker effects (boot logo flickers for
+- example).
+-
+-ywrap Same as ypan, but assumes your gfx board can wrap-around
+- the video memory (i.e. starts reading from top if it
+- reaches the end of video memory). Faster than ypan.
+-
+-redraw scroll by redrawing the affected part of the screen, this
+- is the safe (and slow) default.
+-
+-
+-vgapal Use the standard vga registers for palette changes.
+- This is the default.
+-pmipal Use the protected mode interface for palette changes.
+-
+-mtrr:n setup memory type range registers for the vesafb framebuffer
+- where n:
+- 0 - disabled (equivalent to nomtrr) (default)
+- 1 - uncachable
+- 2 - write-back
+- 3 - write-combining
+- 4 - write-through
+-
+- If you see the following in dmesg, choose the type that matches the
+- old one. In this example, use "mtrr:2".
++The VESA BIOS provides protected mode interface for changing some parameters.
++vesafb can use it for palette changes and to pan the display. It is turned
++off by default because it seems not to work with some BIOS versions, but
++there are options to turn it on.
++
++You can pass options to vesafb using "video=vesafb:option" on the kernel
++command line. Multiple options should be separated by a comma, like this:
++"video=vesafb:ypan,1024x768-32@85"
++
++Note that vesafb-tng still uses the "video=vesafb:option" format of the
++kernel command line video parameter. "video=vesafb-tng:xxx" is incorrect.
++
++Accepted options (both vesafb and vesafb-tng):
++
++ypan Enable display panning using the VESA protected mode interface
++ The visible screen is just a window of the video memory,
++ console scrolling is done by changing the start of the window.
++ pro: * scrolling (fullscreen) is fast, because there is
++ no need to copy around data.
++ * you'll get scrollback (the Shift-PgUp thing),
++ the video memory can be used as scrollback buffer
++ con: * scrolling only parts of the screen causes some
++ ugly flicker effects (boot logo flickers for
++ example).
++
++ywrap Same as ypan, but assumes your gfx board can wrap-around the video
++ memory (i.e. starts reading from top if it reaches the end of
++ video memory). Faster than ypan.
++
++redraw Scroll by redrawing the affected part of the screen, this is the
++ safe (and slow) default.
++
++vgapal Use the standard VGA registers for palette changes.
++
++pmipal Use the protected mode interface for palette changes.
++ This is the default is the protected mode interface is available.
++
++mtrr:n Setup memory type range registers for the vesafb framebuffer
++ where n:
++ 0 - disabled (equivalent to nomtrr) (default)
++ 1 - uncachable
++ 2 - write-back
++ 3 - write-combining
++ 4 - write-through
++
++ If you see the following in dmesg, choose the type that matches
++ the old one. In this example, use "mtrr:2".
+ ...
+ mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
+ ...
+
+-nomtrr disable mtrr
++nomtrr Do not use memory type range registers for vesafb.
+
+ vremap:n
+ remap 'n' MiB of video RAM. If 0 or not specified, remap memory
+- according to video mode. (2.5.66 patch/idea by Antonino Daplas
+- reversed to give override possibility (allocate more fb memory
+- than the kernel would) to 2.4 by tmb@iki.fi)
++ according to video mode. (2.5.66 patch/idea by Antonino Daplas
++ reversed to give override possibility (allocate more fb memory
++ than the kernel would) to 2.4 by tmb@iki.fi)
+
+ vtotal:n
+ if the video BIOS of your card incorrectly determines the total
+ amount of video RAM, use this option to override the BIOS (in MiB).
+
+-Have fun!
++Options accepted only by vesafb-tng:
++
++<mode> The mode you want to set, in the standard modedb format. Refer to
++ modedb.txt for a detailed description. If you specify a mode that is
++ not supported by your board's BIOS, vesafb-tng will attempt to set a
++ similar mode. The list of supported modes can be found in
++ /proc/fbx/modes, where x is the framebuffer number (usually 0).
++ When vesafb-tng is compiled as a module, the mode string should be
++ provided as a value of the parameter 'mode'.
++
++vbemode:x
++ Force the use of VBE mode x. The mode will only be set if it's
++ found in the VBE-provided list of supported modes.
++ NOTE: The mode number 'x' should be specified in VESA mode number
++ notation, not the Linux kernel one (eg. 257 instead of 769).
++ HINT: If you use this option because normal <mode> parameter does
++ not work for you and you use a X server, you'll probably want to
++ set the 'nocrtc' option to ensure that the video mode is properly
++ restored after console <-> X switches.
++
++nocrtc Do not use CRTC timings while setting the video mode. This option
++ makes sence only with VBE 3.0 compliant systems. Use it if you have
++ problems with modes set in the standard way. Note that using this
++ option means that any refresh rate adjustments will be ignored
++ and the refresh rate will stay at your BIOS default (60 Hz).
++
++noedid Do not try to fetch and use EDID-provided modes.
++
++noblank Disable hardware blanking.
++
++gtf Force the use of VESA's GTF (Generalized Timing Formula). Specifying
++ this will cause vesafb to skip its internal modedb and EDID-modedb
++ and jump straight to the GTF part of the code (normally used only if
++ everything else failed). This can be useful if you want to get as
++ much as possible from your graphics board but your BIOS doesn't
++ support modes with the refresh rates you require. Note that you may
++ need to specify the maxhf, maxvf and maxclk parameters if they are not
++ provided by the EDID block.
++
++Additionally, the following parameters may be provided. They all override the
++EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
++the correct values for maxhf, maxvf and maxclk for your hardware.
++
++maxhf:n Maximum horizontal frequency (in kHz).
++maxvf:n Maximum vertical frequency (in Hz).
++maxclk:n Maximum pixel clock (in MHz).
+
+- Gerd
++Have fun!
+
+ --
++Original document for the vesafb driver by
+ Gerd Knorr <kraxel@goldbach.in-berlin.de>
+
+-Minor (mostly typo) changes
+-by Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
++Minor (mostly typo) changes by
++Nico Schmoigl <schmoigl@rumms.uni-mannheim.de>
++
++Extended documentation for vm86, VBE 3.0 and vesafb-tng by
++Michal Januszewski <spock@gentoo.org>
++
+diff --git a/arch/i386/boot/video.S b/arch/i386/boot/video.S
+index 2c5b5cc..2c2d4b5 100644
+--- a/arch/i386/boot/video.S
++++ b/arch/i386/boot/video.S
+@@ -163,10 +163,12 @@ basret: ret
+ # parameters in the default 80x25 mode -- these are set directly,
+ # because some very obscure BIOSes supply insane values.
+ mode_params:
++#ifdef CONFIG_FB_VESA_STD
+ #ifdef CONFIG_VIDEO_SELECT
+ cmpb $0, graphic_mode
+ jnz mopar_gr
+ #endif
++#endif
+ movb $0x03, %ah # Read cursor position
+ xorb %bh, %bh
+ int $0x10
+@@ -199,6 +201,7 @@ mopar2: movb %al, %fs:(PARAM_VIDEO_LINES)
+ ret
+
+ #ifdef CONFIG_VIDEO_SELECT
++#ifdef CONFIG_FB_VESA_STD
+ # Fetching of VESA frame buffer parameters
+ mopar_gr:
+ leaw modelist+1024, %di
+@@ -281,6 +284,7 @@ dac_done:
+ movw %es, %fs:(PARAM_VESAPM_SEG)
+ movw %di, %fs:(PARAM_VESAPM_OFF)
+ no_pm: ret
++#endif
+
+ # The video mode menu
+ mode_menu:
+@@ -495,10 +499,12 @@ mode_set:
+
+ cmpb $VIDEO_FIRST_V7>>8, %ah
+ jz setv7
+-
++
++#ifdef CONFIG_FB_VESA_STD
+ cmpb $VIDEO_FIRST_VESA>>8, %ah
+ jnc check_vesa
+-
++#endif
++
+ orb %ah, %ah
+ jz setmenu
+
+@@ -570,6 +576,7 @@ setr1: lodsw
+ movw -4(%si), %ax # Fetch mode ID
+ jmp _m_s
+
++#ifdef CONFIG_FB_VESA_STD
+ check_vesa:
+ leaw modelist+1024, %di
+ subb $VIDEO_FIRST_VESA>>8, %bh
+@@ -603,6 +610,7 @@ check_vesa:
+ ret
+
+ _setbad: jmp setbad # Ugly...
++#endif
+
+ # Recalculate vertical display end registers -- this fixes various
+ # inconsistencies of extended modes on many adapters. Called when
+diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
+index 1393523..8a05f95 100644
+--- a/drivers/char/sysrq.c
++++ b/drivers/char/sysrq.c
+@@ -240,7 +240,7 @@ static void send_sig_all(int sig)
+ struct task_struct *p;
+
+ for_each_process(p) {
+- if (p->mm && !is_init(p))
++ if (p->mm && !is_init(p) && !(p->flags & PF_BORROWED_MM))
+ /* Not swapper, init nor kernel thread */
+ force_sig(sig, p);
+ }
+diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
+index 4e83f01..ae122fd 100644
+--- a/drivers/video/Kconfig
++++ b/drivers/video/Kconfig
+@@ -547,8 +547,22 @@ config FB_TGA
+ cards. Say Y if you have one of those.
+
+ config FB_VESA
+- bool "VESA VGA graphics support"
+- depends on (FB = y) && X86
++ tristate "VESA VGA graphics support"
++ depends on (FB = y) && (X86 || X86_64)
++ help
++ This is the frame buffer device driver for generic VESA 2.0
++ compliant graphic cards. The older VESA 1.2 cards are not supported.
++ You will get a boot time penguin logo at no additional cost. Please
++ read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
++
++choice
++ prompt "VESA driver type"
++ depends on FB_VESA
++ default FB_VESA_STD if X86_64
++ default FB_VESA_TNG if X86
++
++config FB_VESA_STD
++ bool "vesafb"
+ select FB_CFB_FILLRECT
+ select FB_CFB_COPYAREA
+ select FB_CFB_IMAGEBLIT
+@@ -557,7 +571,43 @@ config FB_VESA
+ This is the frame buffer device driver for generic VESA 2.0
+ compliant graphic cards. The older VESA 1.2 cards are not supported.
+ You will get a boot time penguin logo at no additional cost. Please
+- read <file:Documentation/fb/vesafb.txt>. If unsure, say Y.
++ read <file:Documentation/fb/vesafb.txt>. Choose this driver if you
++ are experiencing problems with vesafb-tng or if you own a 64-bit system.
++
++ Note that this driver cannot be compiled as a module.
++
++config FB_VESA_TNG
++ bool "vesafb-tng"
++ depends on !X86_64
++ select FB_MODE_HELPERS
++ select FB_CFB_FILLRECT
++ select FB_CFB_COPYAREA
++ select FB_CFB_IMAGEBLIT
++ help
++ This is an enhanced generic frame buffer device driver for
++ VBE 2.0 compliant graphic cards. It can take advantage of VBE 3.0
++ features (refresh rate adjustment) when these are available.
++ The driver also makes it possible to change the video mode
++ on the fly and to switch back to text mode when it's unloaded.
++
++ If the driver is compiled as a module, the module will be called
++ vesafb-tng.
++
++endchoice
++
++config FB_VESA_DEFAULT_MODE
++ string "VESA default mode"
++ depends on FB_VESA_TNG
++ default "640x480@60"
++ help
++ This option is used to determine the default mode vesafb is
++ supposed to switch to in case no mode is provided as a kernel
++ command line parameter.
++
++config VIDEO_SELECT
++ bool
++ depends on FB_VESA
++ default y
+
+ config FB_IMAC
+ bool "Intel-based Macintosh Framebuffer Support"
+diff --git a/drivers/video/Makefile b/drivers/video/Makefile
+index 309a26d..e57b0e7 100644
+--- a/drivers/video/Makefile
++++ b/drivers/video/Makefile
+@@ -102,7 +102,11 @@ obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
+ obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o
+
+ # Platform or fallback drivers go here
+-obj-$(CONFIG_FB_VESA) += vesafb.o
++ifeq ($(CONFIG_FB_VESA_STD),y)
++ obj-y += vesafb.o
++else
++ obj-$(CONFIG_FB_VESA) += vesafb-thread.o vesafb-tng.o
++endif
+ obj-$(CONFIG_FB_IMAC) += imacfb.o
+ obj-$(CONFIG_FB_VGA16) += vga16fb.o vgastate.o
+ obj-$(CONFIG_FB_OF) += offb.o
+diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
+index 3cfea31..bfb39cc 100644
+--- a/drivers/video/fbmem.c
++++ b/drivers/video/fbmem.c
+@@ -1408,6 +1408,7 @@ fbmem_init(void)
+ printk(KERN_WARNING "Unable to create fb class; errno = %ld\n", PTR_ERR(fb_class));
+ fb_class = NULL;
+ }
++
+ return 0;
+ }
+
+diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
+index 5df41f6..f838a53 100644
+--- a/drivers/video/modedb.c
++++ b/drivers/video/modedb.c
+@@ -674,6 +674,7 @@ void fb_var_to_videomode(struct fb_videomode *mode,
+ {
+ u32 pixclock, hfreq, htotal, vtotal;
+
++ mode->refresh = 0;
+ mode->name = NULL;
+ mode->xres = var->xres;
+ mode->yres = var->yres;
+@@ -1025,3 +1026,4 @@ EXPORT_SYMBOL(fb_find_best_mode);
+ EXPORT_SYMBOL(fb_find_nearest_mode);
+ EXPORT_SYMBOL(fb_videomode_to_modelist);
+ EXPORT_SYMBOL(fb_find_mode);
++EXPORT_SYMBOL(fb_destroy_modelist);
+diff --git a/drivers/video/vesafb-thread.c b/drivers/video/vesafb-thread.c
+new file mode 100644
+index 0000000..543e202
+--- /dev/null
++++ b/drivers/video/vesafb-thread.c
+@@ -0,0 +1,751 @@
++/*
++ * Framebuffer driver for VBE 2.0+ compliant graphic boards.
++ * Kernel thread and vm86 routines.
++ *
++ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
++ *
++ */
++
++#include <linux/workqueue.h>
++#include <linux/completion.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/mm.h>
++#include <linux/delay.h>
++#include <linux/signal.h>
++#include <linux/freezer.h>
++#include <linux/suspend.h>
++#include <linux/unistd.h>
++#include <video/vesa.h>
++#include <video/edid.h>
++#include <asm/mman.h>
++#include <asm/page.h>
++#include <asm/vm86.h>
++#include <asm/thread_info.h>
++#include <asm/uaccess.h>
++#include <asm/mmu_context.h>
++#include "edid.h"
++
++static int errno;
++
++static DECLARE_COMPLETION(vesafb_th_completion);
++static DECLARE_MUTEX(vesafb_task_list_sem);
++static LIST_HEAD(vesafb_task_list);
++static DECLARE_WAIT_QUEUE_HEAD(vesafb_wait);
++
++static struct vm86_struct vm86;
++static int vesafb_pid = 0;
++
++#define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
++#define VM86_PUSHW(x) \
++do { \
++ vm86.regs.esp -= 2; \
++ *(u16*)(STACK_ADDR + vm86.regs.esp) = x; \
++} while(0);
++
++/* Stack, the return code and buffers will be put into
++ * one contiguous memory chunk:
++ *
++ * [ STACK | RET_CODE | BUFFER ]
++ *
++ * Some video BIOSes (sis6326) try to store data somewhere
++ * in 0x7000-0x7fff, so we zeromap more memory to be safe.
++ */
++#define IVTBDA_SIZE PAGE_SIZE
++#define RET_CODE_SIZE 0x0010
++#define STACK_SIZE 0x0500
++#define BUFFER_SIZE 0x10000
++
++/* The amount of memory that will be allocated should be a multiple
++ * of PAGE_SIZE. */
++#define __MEM_SIZE (RET_CODE_SIZE + STACK_SIZE + BUFFER_SIZE)
++#define REAL_MEM_SIZE (((__MEM_SIZE / PAGE_SIZE) + 1) * PAGE_SIZE)
++
++#define IVTBDA_ADDR 0x00000
++#define STACK_ADDR (IVTBDA_ADDR + IVTBDA_SIZE)
++#define RET_CODE_ADDR (STACK_ADDR + STACK_SIZE)
++#define BUF_ADDR (RET_CODE_ADDR + RET_CODE_SIZE)
++
++#define FLAG_D (1 << 10)
++
++/* Syscalls used by the vesafb thread */
++static int vm86old(struct vm86_struct __user* v86)
++{
++ long res;
++ __asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
++ : "=a" (res)
++ : "0" (__NR_vm86old), "ri" ((long)(v86)) : "memory");
++
++ if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
++ errno = -res;
++ res = -1;
++ }
++ return (int)res;
++}
++
++static int ioperm(unsigned long a, unsigned long b, unsigned long c)
++{
++ long res;
++ __asm__ volatile ("push %%ebx; movl %2, %%ebx ; int $0x80 ; pop %%ebx"
++ : "=a" (res)
++ : "0" (__NR_ioperm), "ri" ((long)(a)), "c" ((long)(b)),
++ "d" ((long)(c)) : "memory");
++
++ if ((unsigned long)(res) >= (unsigned long)(-MAX_ERRNO)) {
++ errno = -res;
++ res = -1;
++ }
++ return (int)res;
++}
++
++/* Segment prefix opcodes */
++enum {
++ P_CS = 0x2e,
++ P_SS = 0x36,
++ P_DS = 0x3e,
++ P_ES = 0x26,
++ P_FS = 0x64,
++ P_GS = 0x65
++};
++
++/* Emulated vm86 ins instruction */
++static void vm86_ins(int size)
++{
++ u32 edx, edi;
++ edx = vm86.regs.edx & 0xffff;
++ edi = (vm86.regs.edi & 0xffff) + (u32)(vm86.regs.es << 4);
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("std\n");
++ else
++ asm volatile ("cld\n");
++
++ switch (size) {
++ case 4:
++ asm volatile ("insl\n" : "=D" (edi) : "d" (edx), "0" (edi));
++ break;
++ case 2:
++ asm volatile ("insw\n" : "=D" (edi) : "d" (edx), "0" (edi));
++ break;
++ case 1:
++ asm volatile ("insb\n" : "=D" (edi) : "d" (edx), "0" (edi));
++ break;
++ }
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("cld\n");
++
++ edi -= (u32)(vm86.regs.es << 4);
++
++ vm86.regs.edi &= 0xffff0000;
++ vm86.regs.edi |= edi & 0xffff;
++}
++
++static void vm86_rep_ins(int size)
++{
++ u16 cx = vm86.regs.ecx;
++ while (cx--)
++ vm86_ins(size);
++
++ vm86.regs.ecx &= 0xffff0000;
++}
++
++/* Emulated vm86 outs instruction */
++static void vm86_outs(int size, int segment)
++{
++ u32 edx, esi, base;
++
++ edx = vm86.regs.edx & 0xffff;
++ esi = vm86.regs.esi & 0xffff;
++
++ switch (segment) {
++ case P_CS: base = vm86.regs.cs; break;
++ case P_SS: base = vm86.regs.ss; break;
++ case P_ES: base = vm86.regs.es; break;
++ case P_FS: base = vm86.regs.fs; break;
++ case P_GS: base = vm86.regs.gs; break;
++ default: base = vm86.regs.ds; break;
++ }
++
++ esi += base << 4;
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("std\n");
++ else
++ asm volatile ("cld\n");
++
++ switch (size) {
++ case 4:
++ asm volatile ("outsl\n" : "=S" (esi) : "d" (edx), "0" (esi));
++ break;
++ case 2:
++ asm volatile ("outsw\n" : "=S" (esi) : "d" (edx), "0" (esi));
++ break;
++ case 1:
++ asm volatile ("outsb\n" : "=S" (esi) : "d" (edx), "0" (esi));
++ break;
++ }
++
++ if (vm86.regs.eflags & FLAG_D)
++ asm volatile ("cld");
++
++ esi -= base << 4;
++ vm86.regs.esi &= 0xffff0000;
++ vm86.regs.esi |= (esi & 0xffff);
++}
++
++static void vm86_rep_outs(int size, int segment)
++{
++ u16 cx = vm86.regs.ecx;
++ while (cx--)
++ vm86_outs(size, segment);
++
++ vm86.regs.ecx &= 0xffff0000;
++}
++
++static int vm86_do_unknown(void)
++{
++ u8 data32 = 0, segment = P_DS, rep = 0;
++ u8 *instr;
++ int ret = 0, i = 0;
++
++ instr = (u8*)((vm86.regs.cs << 4) + vm86.regs.eip);
++
++ while (1) {
++ switch(instr[i]) {
++ case 0x66: /* operand size prefix */
++ data32 = 1 - data32;
++ i++;
++ break;
++ case 0xf2: /* repnz */
++ case 0xf3: /* rep */
++ rep = 1;
++ i++;
++ break;
++ case P_CS: /* segment prefix */
++ case P_SS:
++ case P_DS:
++ case P_ES:
++ case P_FS:
++ case P_GS:
++ segment = instr[i];
++ i++;
++ break;
++ case 0xf0: /* LOCK - ignored */
++ case 0x67: /* address size prefix - ignored */
++ i++;
++ break;
++ case 0x6c: /* insb */
++ if (rep)
++ vm86_rep_ins(1);
++ else
++ vm86_ins(1);
++ i++;
++ goto out;
++ case 0x6d: /* insw / insd */
++ if (rep) {
++ if (data32)
++ vm86_rep_ins(4);
++ else
++ vm86_rep_ins(2);
++ } else {
++ if (data32)
++ vm86_ins(4);
++ else
++ vm86_ins(2);
++ }
++ i++;
++ goto out;
++ case 0x6e: /* outsb */
++ if (rep)
++ vm86_rep_outs(1, segment);
++ else
++ vm86_outs(1, segment);
++ i++;
++ goto out;
++ case 0x6f: /* outsw / outsd */
++ if (rep) {
++ if (data32)
++ vm86_rep_outs(4, segment);
++ else
++ vm86_rep_outs(2, segment);
++ } else {
++ if (data32)
++ vm86_outs(4, segment);
++ else
++ vm86_outs(2, segment);
++ }
++ i++;
++ goto out;
++ case 0xe4: /* inb xx */
++ asm volatile (
++ "inb %w1, %b0"
++ : "=a" (vm86.regs.eax)
++ : "d" (instr[i+1]), "0" (vm86.regs.eax));
++ i += 2;
++ goto out;
++ case 0xe5: /* inw xx / ind xx */
++ if (data32) {
++ asm volatile (
++ "inl %w1, %0"
++ : "=a" (vm86.regs.eax)
++ : "d" (instr[i+1]),
++ "0" (vm86.regs.eax));
++ } else {
++ asm volatile (
++ "inw %w1, %w0"
++ : "=a" (vm86.regs.eax)
++ : "d" (instr[i+1]),
++ "0" (vm86.regs.eax));
++ }
++ i += 2;
++ goto out;
++
++ case 0xec: /* inb dx */
++ asm volatile (
++ "inb %w1, %b0"
++ : "=a" (vm86.regs.eax)
++ : "d" (vm86.regs.edx), "0" (vm86.regs.eax));
++ i++;
++ goto out;
++ case 0xed: /* inw dx / ind dx */
++ if (data32) {
++ asm volatile (
++ "inl %w1, %0"
++ : "=a" (vm86.regs.eax)
++ : "d" (vm86.regs.edx));
++ } else {
++ asm volatile (
++ "inw %w1, %w0"
++ : "=a" (vm86.regs.eax)
++ : "d" (vm86.regs.edx));
++ }
++ i++;
++ goto out;
++ case 0xe6: /* outb xx */
++ asm volatile (
++ "outb %b0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax), "d" (instr[i+1]));
++ i += 2;
++ goto out;
++ case 0xe7: /* outw xx / outd xx */
++ if (data32) {
++ asm volatile (
++ "outl %0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (instr[i+1]));
++ } else {
++ asm volatile (
++ "outw %w0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (instr[i+1]));
++ }
++ i += 2;
++ goto out;
++ case 0xee: /* outb dx */
++ asm volatile (
++ "outb %b0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax), "d" (vm86.regs.edx));
++ i++;
++ goto out;
++ case 0xef: /* outw dx / outd dx */
++ if (data32) {
++ asm volatile (
++ "outl %0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (vm86.regs.edx));
++ } else {
++ asm volatile (
++ "outw %w0, %w1"
++ : /* no return value */
++ : "a" (vm86.regs.eax),
++ "d" (vm86.regs.edx));
++ }
++ i++;
++ goto out;
++ default:
++ printk(KERN_ERR "vesafb: BUG, opcode 0x%x emulation "
++ "not supported (EIP: 0x%lx)\n",
++ instr[i], (u32)(vm86.regs.cs << 4) +
++ vm86.regs.eip);
++ ret = 1;
++ goto out;
++ }
++ }
++out: vm86.regs.eip += i;
++ return ret;
++}
++
++void vesafb_do_vm86(struct vm86_regs *regs)
++{
++ unsigned int ret;
++ u8 *retcode = (void*)RET_CODE_ADDR;
++
++ memset(&vm86,0,sizeof(vm86));
++ memcpy(&vm86.regs, regs, sizeof(struct vm86_regs));
++
++ /* The return code */
++ retcode[0] = 0xcd; /* int opcode */
++ retcode[1] = 0xff; /* int number (255) */
++
++ /* We use int 0xff to get back to protected mode */
++ memset(&vm86.int_revectored, 0, sizeof(vm86.int_revectored));
++ ((unsigned char *)&vm86.int_revectored)[0xff / 8] |= (1 << (0xff % 8));
++
++ /*
++ * We want to call int 0x10, so we set:
++ * CS = 0x42 = 0x10 * 4 + 2
++ * IP = 0x40 = 0x10 * 4
++ * and SS:ESP. It's up to the caller to set the rest of the registers.
++ */
++ vm86.regs.eflags = DEFAULT_VM86_FLAGS;
++ vm86.regs.cs = *(unsigned short *)0x42;
++ vm86.regs.eip = *(unsigned short *)0x40;
++ vm86.regs.ss = (STACK_ADDR >> 4);
++ vm86.regs.esp = ((STACK_ADDR & 0x0000f) + STACK_SIZE);
++
++ /* These will be fetched off the stack when we come to an iret in the
++ * int's 0x10 code. */
++ VM86_PUSHW(DEFAULT_VM86_FLAGS);
++ VM86_PUSHW((RET_CODE_ADDR >> 4)); /* return code segment */
++ VM86_PUSHW((RET_CODE_ADDR & 0x0000f)); /* return code offset */
++
++ while(1) {
++ ret = vm86old(&vm86);
++
++ if (VM86_TYPE(ret) == VM86_INTx) {
++ int vint = VM86_ARG(ret);
++
++ /* If exit from vm86 was caused by int 0xff, then
++ * we're done.. */
++ if (vint == 0xff)
++ goto out;
++
++ /* .. otherwise, we have to call the int handler
++ * manually */
++ VM86_PUSHW(vm86.regs.eflags);
++ VM86_PUSHW(vm86.regs.cs);
++ VM86_PUSHW(vm86.regs.eip);
++
++ vm86.regs.cs = *(u16 *)((vint << 2) + 2);
++ vm86.regs.eip = *(u16 *)(vint << 2);
++ vm86.regs.eflags &= ~(VIF_MASK | TF_MASK);
++ } else if (VM86_TYPE(ret) == VM86_UNKNOWN) {
++ if (vm86_do_unknown())
++ goto out;
++ } else {
++ printk(KERN_ERR "vesafb: BUG, returned from "
++ "vm86 with %x (EIP: 0x%lx)\n",
++ ret, (u32)(vm86.regs.cs << 4) +
++ vm86.regs.eip);
++ goto out;
++ }
++ }
++
++out: /* copy the registers' state back to the caller's struct */
++ memcpy(regs, &vm86.regs, sizeof(struct vm86_regs));
++}
++
++static int vesafb_remap_pfn_range(unsigned long start, unsigned long end,
++ unsigned long pgoff, unsigned long prot,
++ int type)
++{
++ struct vm_area_struct *vma;
++ struct mm_struct *mm = current->mm;
++ int ret = 0;
++
++ vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
++ if (!vma)
++ return -ENOMEM;
++ memset(vma, 0, sizeof(*vma));
++ down_write(&mm->mmap_sem);
++ vma->vm_mm = mm;
++ vma->vm_start = start;
++ vma->vm_end = end;
++ vma->vm_flags = VM_READ | VM_WRITE | VM_EXEC;
++ vma->vm_flags |= mm->def_flags;
++ vma->vm_page_prot.pgprot = prot;
++ vma->vm_pgoff = pgoff;
++
++ if ((ret = insert_vm_struct(mm, vma))) {
++ up_write(&mm->mmap_sem);
++ kmem_cache_free(vm_area_cachep, vma);
++ return ret;
++ }
++
++ if (type) {
++ ret = zeromap_page_range(vma,
++ vma->vm_start,
++ vma->vm_end - vma->vm_start,
++ vma->vm_page_prot);
++ } else {
++ vma->vm_flags |= VM_SHARED;
++ ret = remap_pfn_range(vma,
++ vma->vm_start,
++ vma->vm_pgoff,
++ vma->vm_end - vma->vm_start,
++ vma->vm_page_prot);
++ }
++ up_write(&mm->mmap_sem);
++ return ret;
++}
++
++static inline int vesafb_init_mem(void)
++{
++ int ret = 0;
++
++ /* The memory chunks we're remapping here should be multiples
++ * of PAGE_SIZE. */
++ ret += vesafb_remap_pfn_range(0x00000, IVTBDA_SIZE, 0,
++ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
++ ret += vesafb_remap_pfn_range(IVTBDA_SIZE, REAL_MEM_SIZE, 0,
++ PROT_READ | PROT_EXEC | PROT_WRITE, 1);
++ ret += vesafb_remap_pfn_range(0x9f000, 0x100000,
++ 0x9f000 >> PAGE_SHIFT,
++ PROT_READ | PROT_EXEC | PROT_WRITE, 0);
++ if (ret)
++ printk(KERN_ERR "vesafb thread: memory remapping failed\n");
++
++ return ret;
++}
++
++#define vesafb_get_string(str) \
++{ \
++ /* The address is in the form ssssoooo, where oooo = offset, \
++ * ssss = segment */ \
++ addr = ((p_vbe(tsk->buf)->str & 0xffff0000) >> 12) + \
++ (p_vbe(tsk->buf)->str & 0x0000ffff); \
++ \
++ /* The data is in ROM which is shared between processes, so we \
++ * just translate the real mode address into one visible from \
++ * kernel space */ \
++ if (addr >= 0xa0000) { \
++ p_vbe(tsk->buf)->str = (u32) __va(addr); \
++ \
++ /* The data is in the buffer, we just have to convert the \
++ * address so that it points into the buffer user provided. */ \
++ } else if (addr > BUF_ADDR && addr < BUF_ADDR + \
++ sizeof(struct vesafb_vbe_ib)) { \
++ addr -= BUF_ADDR; \
++ p_vbe(tsk->buf)->str = (u32) (tsk->buf + addr); \
++ \
++ /* This should never happen: someone was insane enough to put \
++ * the data somewhere in RAM.. */ \
++ } else { \
++ p_vbe(tsk->buf)->str = (u32) ""; \
++ } \
++}
++
++void vesafb_handle_getvbeib(struct vesafb_task *tsk)
++{
++ int addr, res;
++
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.edi = (BUF_ADDR & 0x000f);
++ strncpy(p_vbe(BUF_ADDR)->vbe_signature, "VBE2", 4);
++
++ vesafb_do_vm86(&tsk->regs);
++ memcpy(tsk->buf, (void*)(BUF_ADDR), sizeof(struct vesafb_vbe_ib));
++
++ /* The OEM fields were not defined prior to VBE 2.0 */
++ if (p_vbe(tsk->buf)->vbe_version >= 0x200) {
++ vesafb_get_string(oem_string_ptr);
++ vesafb_get_string(oem_vendor_name_ptr);
++ vesafb_get_string(oem_product_name_ptr);
++ vesafb_get_string(oem_product_rev_ptr);
++ }
++
++ /* This is basically the same as vesafb_get_string() */
++ addr = ((p_vbe(tsk->buf)->mode_list_ptr & 0xffff0000) >> 12) +
++ (p_vbe(tsk->buf)->mode_list_ptr & 0x0000ffff);
++
++ if (addr >= 0xa0000) {
++ p_vbe(tsk->buf)->mode_list_ptr = (u32) __va(addr);
++ } else if (addr > BUF_ADDR && addr < BUF_ADDR +
++ sizeof(struct vesafb_vbe_ib)) {
++ addr -= BUF_ADDR;
++ p_vbe(tsk->buf)->mode_list_ptr = (u32) (tsk->buf + addr);
++ } else {
++ res = 0;
++ printk(KERN_WARNING "vesafb: warning, copying modelist "
++ "from somewhere in RAM!\n");
++ while (*(u16*)(addr+res) != 0xffff &&
++ res < (sizeof(p_vbe(tsk->buf)->reserved) - 2)) {
++ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) =
++ *(u16*)(addr+res);
++ res += 2;
++ }
++ *(u16*) ((u32)&(p_vbe(tsk->buf)->reserved) + res) = 0xffff;
++ }
++}
++
++int vesafb_handle_tasks(void)
++{
++ struct vesafb_task *tsk;
++ struct list_head *curr, *next;
++ int ret = 0;
++
++ down(&vesafb_task_list_sem);
++ list_for_each_safe(curr, next, &vesafb_task_list) {
++ tsk = list_entry(curr, struct vesafb_task, node);
++
++ if (tsk->flags & TF_EXIT) {
++ ret = 1;
++ goto task_done;
++ }
++ if (tsk->flags & TF_GETVBEIB) {
++ vesafb_handle_getvbeib(tsk);
++ goto task_done;
++ }
++ /* Do we need to store a pointer to the buffer in ES:EDI? */
++ if (tsk->flags & TF_BUF_DI) {
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.edi = (BUF_ADDR & 0x000f);
++ }
++ /* Sometimes the pointer has to be in ES:EBX. */
++ if (tsk->flags & TF_BUF_BX) {
++ tsk->regs.es = (BUF_ADDR >> 4);
++ tsk->regs.ebx = (BUF_ADDR & 0x000f);
++ }
++ if (tsk->flags & (TF_BUF_DI | TF_BUF_BX))
++ memcpy((void*)BUF_ADDR, tsk->buf, tsk->buf_len);
++
++ vesafb_do_vm86(&tsk->regs);
++
++ if (tsk->flags & TF_RETURN_BUF)
++ memcpy(tsk->buf, (void*)BUF_ADDR, tsk->buf_len);
++
++task_done: list_del(curr);
++ complete(&tsk->done);
++ }
++
++ /* If we're going to kill this thread, don't allow any elements
++ * to be added to the task list. */
++ if (!ret)
++ up(&vesafb_task_list_sem);
++
++ return ret;
++}
++
++/*
++ * This 'hybrid' thread serves as a backend for vesafb-tng, handling all vm86
++ * calls. It is started as a kernel thread. It then creates its own mm struct,
++ * thus separating itself from any userspace processes. At this moment, it
++ * stops being a kernel thread (kernel threads have mm = NULL) and becomes
++ * a 'hybrid' thread -- one that has full access to kernel space, yet runs
++ * with its own address space.
++ *
++ * This is necessary because in order to make vm86 calls some parts of the
++ * first 1MB of RAM have to be setup to mimic the real mode. These are:
++ * - interrupt vector table [0x00000-0x003ff]
++ * - BIOS data area [0x00400-0x004ff]
++ * - Extended BIOS data area [0x9fc00-0x9ffff]
++ * - the video RAM [0xa0000-0xbffff]
++ * - video BIOS [0xc0000-0xcffff]
++ * - motherboard BIOS [0xf0000-0xfffff]
++ */
++int vesafb_thread(void *unused)
++{
++ int err = 0;
++
++ set_fs(KERNEL_DS);
++ daemonize("vesafb");
++
++ if (set_new_mm()) {
++ err = -ENOMEM;
++ goto thr_end;
++ }
++ if (vesafb_init_mem()) {
++ err = -ENOMEM;
++ goto thr_end;
++ }
++
++ DPRINTK("started vesafb thread\n");
++
++ /* Having an IO bitmap makes things faster as we avoid GPFs
++ * when running vm86 code. We can live if it fails, though,
++ * so don't bother checking for errors. */
++ ioperm(0,1024,1);
++ set_user_nice(current, -10);
++
++ complete(&vesafb_th_completion);
++
++ while (1) {
++ if (vesafb_handle_tasks())
++ break;
++ wait_event_interruptible(vesafb_wait,
++ !list_empty(&vesafb_task_list));
++ try_to_freeze();
++ }
++
++out: DPRINTK("exiting the vesafb thread\n");
++ vesafb_pid = -1;
++
++ /* Now that all callers know this thread is no longer running
++ * (pid < 0), allow them to continue. */
++ up(&vesafb_task_list_sem);
++ return err;
++thr_end:
++ down(&vesafb_task_list_sem);
++ complete(&vesafb_th_completion);
++ goto out;
++}
++
++int vesafb_queue_task(struct vesafb_task *tsk)
++{
++ down(&vesafb_task_list_sem);
++ if (vesafb_pid < 0)
++ return -1;
++ list_add_tail(&tsk->node, &vesafb_task_list);
++ up(&vesafb_task_list_sem);
++ wake_up(&vesafb_wait);
++ return 0;
++}
++
++int vesafb_wait_for_thread(void)
++{
++ /* PID 0 means that the thread is still initializing. */
++ if (vesafb_pid < 0)
++ return -1;
++ wait_for_completion(&vesafb_th_completion);
++ return 0;
++}
++
++int __init vesafb_init_thread(void)
++{
++ vesafb_pid = kernel_thread(vesafb_thread,NULL,0);
++ return 0;
++}
++
++#ifdef MODULE
++void __exit vesafb_kill_thread(void)
++{
++ struct vesafb_task *tsk;
++ if (vesafb_pid <= 0)
++ return;
++
++ vesafb_create_task(tsk);
++ if (!tsk)
++ return;
++ tsk->flags |= TF_EXIT;
++ vesafb_queue_task(tsk);
++ vesafb_wait_for_task(tsk);
++ kfree(tsk);
++ return;
++}
++module_exit(vesafb_kill_thread);
++#endif
++module_init(vesafb_init_thread);
++
++EXPORT_SYMBOL_GPL(vesafb_queue_task);
++EXPORT_SYMBOL_GPL(vesafb_wait_for_thread);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Michal Januszewski");
++
+diff --git a/drivers/video/vesafb-tng.c b/drivers/video/vesafb-tng.c
+new file mode 100644
+index 0000000..b4d4394
+--- /dev/null
++++ b/drivers/video/vesafb-tng.c
+@@ -0,0 +1,1586 @@
++/*
++ * Framebuffer driver for VBE 2.0+ compliant graphic boards
++ *
++ * (c) 2004-2006 Michal Januszewski <spock@gentoo.org>
++ * Based upon vesafb code by Gerd Knorr <kraxel@goldbach.in-berlin.de>
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/mm.h>
++#include <linux/tty.h>
++#include <linux/delay.h>
++#include <linux/fb.h>
++#include <linux/ioport.h>
++#include <linux/init.h>
++#include <linux/proc_fs.h>
++#include <linux/completion.h>
++#include <linux/platform_device.h>
++#include <video/edid.h>
++#include <video/vesa.h>
++#include <video/vga.h>
++#include <asm/io.h>
++#include <asm/mtrr.h>
++#include <asm/page.h>
++#include <asm/pgtable.h>
++#include "edid.h"
++
++#define dac_reg (0x3c8)
++#define dac_val (0x3c9)
++
++#define VESAFB_NEED_EXACT_RES 1
++#define VESAFB_NEED_EXACT_DEPTH 2
++
++/* --------------------------------------------------------------------- */
++
++static struct fb_var_screeninfo vesafb_defined __initdata = {
++ .activate = FB_ACTIVATE_NOW,
++ .height = 0,
++ .width = 0,
++ .right_margin = 32,
++ .upper_margin = 16,
++ .lower_margin = 4,
++ .vsync_len = 4,
++ .vmode = FB_VMODE_NONINTERLACED,
++};
++
++static struct fb_fix_screeninfo vesafb_fix __initdata = {
++ .id = "VESA VGA",
++ .type = FB_TYPE_PACKED_PIXELS,
++ .accel = FB_ACCEL_NONE,
++};
++
++static int mtrr = 0; /* disable mtrr by default */
++static int blank = 1; /* enable blanking by default */
++static int ypan = 0; /* 0 - nothing, 1 - ypan, 2 - ywrap */
++static int pmi_setpal = 1; /* pmi for palette changes */
++static u16 *pmi_base = NULL; /* protected mode interface location */
++static void (*pmi_start)(void) = NULL;
++static void (*pmi_pal)(void) = NULL;
++static struct vesafb_vbe_ib vbe_ib;
++static struct vesafb_mode_ib *vbe_modes;
++static int vbe_modes_cnt = 0;
++static struct fb_info *vesafb_info = NULL;
++static int nocrtc = 0; /* ignore CRTC settings */
++static int noedid __initdata = 0; /* don't try DDC transfers */
++static int vram_remap __initdata = 0; /* set amount of memory to be used */
++static int vram_total __initdata = 0; /* set total amount of memory */
++static u16 maxclk __initdata = 0; /* maximum pixel clock */
++static u16 maxvf __initdata = 0; /* maximum vertical frequency */
++static u16 maxhf __initdata = 0; /* maximum horizontal frequency */
++static int gtf __initdata = 0; /* forces use of the GTF */
++static char *mode_option __initdata = NULL;
++static u16 vbemode __initdata = 0;
++
++/* --------------------------------------------------------------------- */
++
++static int vesafb_find_vbe_mode(int xres, int yres, int depth,
++ unsigned char flags)
++{
++ int i, match = -1, h = 0, d = 0x7fffffff;
++
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ h = abs(vbe_modes[i].x_res - xres) +
++ abs(vbe_modes[i].y_res - yres) +
++ abs(depth - vbe_modes[i].depth);
++ if (h == 0)
++ return i;
++ if (h < d || (h == d && vbe_modes[i].depth > depth)) {
++ d = h;
++ match = i;
++ }
++ }
++ i = 1;
++
++ if (flags & VESAFB_NEED_EXACT_DEPTH && vbe_modes[match].depth != depth)
++ i = 0;
++ if (flags & VESAFB_NEED_EXACT_RES && d > 24)
++ i = 0;
++ if (i != 0)
++ return match;
++ else
++ return -1;
++}
++
++static int vesafb_pan_display(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ int offset;
++
++ offset = (var->yoffset * info->fix.line_length + var->xoffset) / 4;
++
++ /* It turns out it's not the best idea to do panning via vm86,
++ * so we only allow it if we have a PMI. */
++ if (pmi_start) {
++ __asm__ __volatile__(
++ "call *(%%edi)"
++ : /* no return value */
++ : "a" (0x4f07), /* EAX */
++ "b" (0), /* EBX */
++ "c" (offset), /* ECX */
++ "d" (offset >> 16), /* EDX */
++ "D" (&pmi_start)); /* EDI */
++ }
++ return 0;
++}
++
++static int vesafb_blank(int blank, struct fb_info *info)
++{
++ struct vesafb_task *tsk;
++ int err = 1;
++
++ if (vbe_ib.capabilities & VBE_CAP_VGACOMPAT) {
++ int loop = 10000;
++ u8 seq = 0, crtc17 = 0;
++
++ if (blank == FB_BLANK_POWERDOWN) {
++ seq = 0x20;
++ crtc17 = 0x00;
++ err = 0;
++ } else {
++ seq = 0x00;
++ crtc17 = 0x80;
++ err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
++ }
++
++ vga_wseq(NULL, 0x00, 0x01);
++ seq |= vga_rseq(NULL, 0x01) & ~0x20;
++ vga_wseq(NULL, 0x00, seq);
++
++ crtc17 |= vga_rcrt(NULL, 0x17) & ~0x80;
++ while (loop--);
++ vga_wcrt(NULL, 0x17, crtc17);
++ vga_wseq(NULL, 0x00, 0x03);
++ } else {
++ vesafb_create_task (tsk);
++ if (!tsk)
++ return -ENOMEM;
++ tsk->regs.eax = 0x4f10;
++ switch (blank) {
++ case FB_BLANK_UNBLANK:
++ tsk->regs.ebx = 0x0001;
++ break;
++ case FB_BLANK_NORMAL:
++ tsk->regs.ebx = 0x0101; /* standby */
++ break;
++ case FB_BLANK_POWERDOWN:
++ tsk->regs.ebx = 0x0401; /* powerdown */
++ break;
++ default:
++ goto out;
++ }
++ tsk->flags = TF_CALL;
++ if (!vesafb_queue_task (tsk))
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) == 0x004f)
++ err = 0;
++out: kfree(tsk);
++ }
++ return err;
++}
++
++static int vesafb_setpalette(struct vesafb_pal_entry *entries, int count,
++ int start, struct fb_info *info)
++{
++ struct vesafb_task *tsk;
++ int i = ((struct vesafb_par*)info->par)->mode_idx;
++ int ret = 0;
++
++ /* We support palette modifications for 8 bpp modes only, so
++ * there can never be more than 256 entries. */
++ if (start + count > 256)
++ return -EINVAL;
++
++ /* Use VGA registers if mode is VGA-compatible. */
++ if (i >= 0 && i < vbe_modes_cnt &&
++ vbe_modes[i].mode_attr & VBE_MODE_VGACOMPAT) {
++ for (i = 0; i < count; i++) {
++ outb_p(start + i, dac_reg);
++ outb_p(entries[i].red, dac_val);
++ outb_p(entries[i].green, dac_val);
++ outb_p(entries[i].blue, dac_val);
++ }
++ } else if (pmi_setpal) {
++ __asm__ __volatile__(
++ "call *(%%esi)"
++ : /* no return value */
++ : "a" (0x4f09), /* EAX */
++ "b" (0), /* EBX */
++ "c" (count), /* ECX */
++ "d" (start), /* EDX */
++ "D" (entries), /* EDI */
++ "S" (&pmi_pal)); /* ESI */
++ } else {
++ vesafb_create_task (tsk);
++ if (!tsk)
++ return -ENOMEM;
++ tsk->regs.eax = 0x4f09;
++ tsk->regs.ebx = 0x0;
++ tsk->regs.ecx = count;
++ tsk->regs.edx = start;
++ tsk->buf = entries;
++ tsk->buf_len = sizeof(struct vesafb_pal_entry) * count;
++ tsk->flags = TF_CALL | TF_BUF_DI;
++
++ if (!vesafb_queue_task (tsk))
++ vesafb_wait_for_task(tsk);
++ if ((tsk->regs.eax & 0xffff) != 0x004f)
++ ret = 1;
++ kfree(tsk);
++ }
++ return ret;
++}
++
++static int vesafb_setcolreg(unsigned regno, unsigned red, unsigned green,
++ unsigned blue, unsigned transp,
++ struct fb_info *info)
++{
++ struct vesafb_pal_entry entry;
++ int shift = 16 - info->var.green.length;
++ int ret = 0;
++
++ if (regno >= info->cmap.len)
++ return -EINVAL;
++
++ if (info->var.bits_per_pixel == 8) {
++ entry.red = red >> shift;
++ entry.green = green >> shift;
++ entry.blue = blue >> shift;
++ entry.pad = 0;
++
++ ret = vesafb_setpalette(&entry, 1, regno, info);
++ } else if (regno < 16) {
++ switch (info->var.bits_per_pixel) {
++ case 16:
++ if (info->var.red.offset == 10) {
++ /* 1:5:5:5 */
++ ((u32*) (info->pseudo_palette))[regno] =
++ ((red & 0xf800) >> 1) |
++ ((green & 0xf800) >> 6) |
++ ((blue & 0xf800) >> 11);
++ } else {
++ /* 0:5:6:5 */
++ ((u32*) (info->pseudo_palette))[regno] =
++ ((red & 0xf800) ) |
++ ((green & 0xfc00) >> 5) |
++ ((blue & 0xf800) >> 11);
++ }
++ break;
++
++ case 24:
++ case 32:
++ red >>= 8;
++ green >>= 8;
++ blue >>= 8;
++ ((u32 *)(info->pseudo_palette))[regno] =
++ (red << info->var.red.offset) |
++ (green << info->var.green.offset) |
++ (blue << info->var.blue.offset);
++ break;
++ }
++ }
++ return ret;
++}
++
++static int vesafb_setcmap(struct fb_cmap *cmap, struct fb_info *info)
++{
++ struct vesafb_pal_entry *entries;
++ int shift = 16 - info->var.green.length;
++ int i, ret = 0;
++
++ if (info->var.bits_per_pixel == 8) {
++ if (cmap->start + cmap->len > info->cmap.start +
++ info->cmap.len || cmap->start < info->cmap.start)
++ return -EINVAL;
++
++ entries = vmalloc(sizeof(struct vesafb_pal_entry) * cmap->len);
++ if (!entries)
++ return -ENOMEM;
++ for (i = 0; i < cmap->len; i++) {
++ entries[i].red = cmap->red[i] >> shift;
++ entries[i].green = cmap->green[i] >> shift;
++ entries[i].blue = cmap->blue[i] >> shift;
++ entries[i].pad = 0;
++ }
++ ret = vesafb_setpalette(entries, cmap->len, cmap->start, info);
++ vfree(entries);
++ } else {
++ /* For modes with bpp > 8, we only set the pseudo palette in
++ * the fb_info struct. We rely on vesafb_setcolreg to do all
++ * sanity checking. */
++ for (i = 0; i < cmap->len; i++) {
++ ret += vesafb_setcolreg(cmap->start + i, cmap->red[i],
++ cmap->green[i], cmap->blue[i],
++ 0, info);
++ }
++ }
++ return ret;
++}
++
++static int vesafb_set_par(struct fb_info *info)
++{
++ struct vesafb_par *par = (struct vesafb_par *) info->par;
++ struct vesafb_task *tsk;
++ struct vesafb_crtc_ib *crtc = NULL;
++ struct vesafb_mode_ib *mode = NULL;
++ int i, err = 0, depth = info->var.bits_per_pixel;
++
++ if (depth > 8 && depth != 32)
++ depth = info->var.red.length + info->var.green.length +
++ info->var.blue.length;
++
++ i = vesafb_find_vbe_mode(info->var.xres, info->var.yres, depth,
++ VESAFB_NEED_EXACT_RES |
++ VESAFB_NEED_EXACT_DEPTH);
++ if (i >= 0)
++ mode = &vbe_modes[i];
++ else
++ return -EINVAL;
++
++ vesafb_create_task (tsk);
++ if (!tsk)
++ return -ENOMEM;
++ tsk->regs.eax = 0x4f02;
++ tsk->regs.ebx = mode->mode_id | 0x4000; /* use LFB */
++ tsk->flags = TF_CALL;
++
++ if (vbe_ib.vbe_version >= 0x0300 && !nocrtc &&
++ info->var.pixclock != 0) {
++ tsk->regs.ebx |= 0x0800; /* use CRTC data */
++ tsk->flags |= TF_BUF_DI;
++ crtc = kmalloc(sizeof(struct vesafb_crtc_ib), GFP_KERNEL);
++ if (!crtc) {
++ err = -ENOMEM;
++ goto out;
++ }
++ crtc->horiz_start = info->var.xres + info->var.right_margin;
++ crtc->horiz_end = crtc->horiz_start + info->var.hsync_len;
++ crtc->horiz_total = crtc->horiz_end + info->var.left_margin;
++
++ crtc->vert_start = info->var.yres + info->var.lower_margin;
++ crtc->vert_end = crtc->vert_start + info->var.vsync_len;
++ crtc->vert_total = crtc->vert_end + info->var.upper_margin;
++
++ crtc->pixel_clock = PICOS2KHZ(info->var.pixclock) * 1000;
++ crtc->refresh_rate = (u16)(100 * (crtc->pixel_clock /
++ (crtc->vert_total * crtc->horiz_total)));
++ crtc->flags = 0;
++
++ if (info->var.vmode & FB_VMODE_DOUBLE)
++ crtc->flags |= 0x1;
++ if (info->var.vmode & FB_VMODE_INTERLACED)
++ crtc->flags |= 0x2;
++ if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
++ crtc->flags |= 0x4;
++ if (!(info->var.sync & FB_SYNC_VERT_HIGH_ACT))
++ crtc->flags |= 0x8;
++ memcpy(&par->crtc, crtc, sizeof(struct vesafb_crtc_ib));
++ } else
++ memset(&par->crtc, 0, sizeof(struct vesafb_crtc_ib));
++
++ tsk->buf = (void*)crtc;
++ tsk->buf_len = sizeof(struct vesafb_crtc_ib);
++
++ if (vesafb_queue_task (tsk)) {
++ err = -EINVAL;
++ goto out;
++ }
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_ERR "vesafb: mode switch failed (eax: 0x%lx)\n",
++ tsk->regs.eax);
++ err = -EINVAL;
++ goto out;
++ }
++ par->mode_idx = i;
++
++ /* For 8bpp modes, always try to set the DAC to 8 bits. */
++ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC &&
++ mode->bits_per_pixel <= 8) {
++ vesafb_reset_task(tsk);
++ tsk->flags = TF_CALL;
++ tsk->regs.eax = 0x4f08;
++ tsk->regs.ebx = 0x0800;
++
++ if (!vesafb_queue_task (tsk))
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f ||
++ ((tsk->regs.ebx & 0xff00) >> 8) != 8) {
++ /* We've failed to set the DAC palette format -
++ * time to correct var. */
++ info->var.red.length = 6;
++ info->var.green.length = 6;
++ info->var.blue.length = 6;
++ }
++ }
++
++ info->fix.visual = (info->var.bits_per_pixel == 8) ?
++ FB_VISUAL_PSEUDOCOLOR : FB_VISUAL_TRUECOLOR;
++ info->fix.line_length = mode->bytes_per_scan_line;
++
++ DPRINTK("set new mode %dx%d-%d (0x%x)\n",
++ info->var.xres, info->var.yres, info->var.bits_per_pixel,
++ mode->mode_id);
++
++out: if (crtc != NULL)
++ kfree(crtc);
++ kfree(tsk);
++
++ return err;
++}
++
++static void vesafb_setup_var(struct fb_var_screeninfo *var, struct fb_info *info,
++ struct vesafb_mode_ib *mode)
++{
++ var->xres = mode->x_res;
++ var->yres = mode->y_res;
++ var->xres_virtual = mode->x_res;
++ var->yres_virtual = (ypan) ?
++ info->fix.smem_len / mode->bytes_per_scan_line :
++ mode->y_res;
++ var->xoffset = 0;
++ var->yoffset = 0;
++ var->bits_per_pixel = mode->bits_per_pixel;
++
++ if (var->bits_per_pixel == 15)
++ var->bits_per_pixel = 16;
++
++ if (var->bits_per_pixel > 8) {
++ var->red.offset = mode->red_off;
++ var->red.length = mode->red_len;
++ var->green.offset = mode->green_off;
++ var->green.length = mode->green_len;
++ var->blue.offset = mode->blue_off;
++ var->blue.length = mode->blue_len;
++ var->transp.offset = mode->rsvd_off;
++ var->transp.length = mode->rsvd_len;
++
++ DPRINTK("directcolor: size=%d:%d:%d:%d, shift=%d:%d:%d:%d\n",
++ mode->rsvd_len,
++ mode->red_len,
++ mode->green_len,
++ mode->blue_len,
++ mode->rsvd_off,
++ mode->red_off,
++ mode->green_off,
++ mode->blue_off);
++ } else {
++ var->red.offset = 0;
++ var->green.offset = 0;
++ var->blue.offset = 0;
++ var->transp.offset = 0;
++
++ /* We're assuming that we can switch the DAC to 8 bits. If
++ * this proves to be incorrect, we'll update the fields
++ * later in set_par(). */
++ if (vbe_ib.capabilities & VBE_CAP_CAN_SWITCH_DAC) {
++ var->red.length = 8;
++ var->green.length = 8;
++ var->blue.length = 8;
++ var->transp.length = 0;
++ } else {
++ var->red.length = 6;
++ var->green.length = 6;
++ var->blue.length = 6;
++ var->transp.length = 0;
++ }
++ }
++}
++
++static void inline vesafb_check_limits(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ struct fb_videomode *mode;
++
++ if (!var->pixclock)
++ return;
++ if (vbe_ib.vbe_version < 0x0300) {
++ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60, var, info);
++ return;
++ }
++ if (!fb_validate_mode(var, info))
++ return;
++ mode = fb_find_best_mode(var, &info->modelist);
++ if (mode) {
++ DPRINTK("find_best_mode: %d %d @ %d (vmode: %d)\n",
++ mode->xres, mode->yres, mode->refresh, mode->vmode);
++ if (mode->xres == var->xres && mode->yres == var->yres &&
++ !(mode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))) {
++ fb_videomode_to_var(var, mode);
++ return;
++ }
++ }
++ if (info->monspecs.gtf && !fb_get_mode(FB_MAXTIMINGS, 0, var, info))
++ return;
++ /* Use default refresh rate */
++ var->pixclock = 0;
++}
++
++static int vesafb_check_var(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ int match = -1;
++ int depth = var->red.length + var->green.length + var->blue.length;
++
++ /* Various apps will use bits_per_pixel to set the color depth,
++ * which is theoretically incorrect, but which we'll try to handle
++ * here. */
++ if (depth == 0 || abs(depth - var->bits_per_pixel) >= 8)
++ depth = var->bits_per_pixel;
++ match = vesafb_find_vbe_mode(var->xres, var->yres, depth,
++ VESAFB_NEED_EXACT_RES);
++
++ if (match == -1) {
++ DPRINTK("vesafb: mode %dx%d-%d not found\n", var->xres,
++ var->yres, depth);
++ return -EINVAL;
++ }
++
++ vesafb_setup_var(var, info, &vbe_modes[match]);
++ DPRINTK("found mode 0x%x (%dx%d-%dbpp)\n",
++ vbe_modes[match].mode_id, vbe_modes[match].x_res,
++ vbe_modes[match].y_res, vbe_modes[match].depth);
++
++ /* Check whether we have remapped enough memory for this mode. */
++ if (var->yres * vbe_modes[match].bytes_per_scan_line >
++ info->fix.smem_len) {
++ return -EINVAL;
++ }
++
++ if ((var->vmode & FB_VMODE_DOUBLE) &&
++ !(vbe_modes[match].mode_attr & 0x100))
++ var->vmode &= ~FB_VMODE_DOUBLE;
++ if ((var->vmode & FB_VMODE_INTERLACED) &&
++ !(vbe_modes[match].mode_attr & 0x200))
++ var->vmode &= ~FB_VMODE_INTERLACED;
++ vesafb_check_limits(var, info);
++ return 0;
++}
++
++static int vesafb_open(struct fb_info *info, int user)
++{
++ struct vesafb_task *tsk = NULL;
++ struct vesafb_par *par = info->par;
++ int cnt = atomic_read(&par->ref_count);
++
++ if (!cnt) {
++ vesafb_create_task(tsk);
++ if (!tsk)
++ goto out;
++
++ /* Get the VBE state buffer size. We want all available
++ * hardware state data (CL = 0x0f). */
++ tsk->regs.eax = 0x4f04;
++ tsk->regs.ecx = 0x000f;
++ tsk->regs.edx = 0x0000;
++ tsk->flags = TF_CALL;
++
++ if (vesafb_queue_task(tsk))
++ goto out;
++
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_WARNING "vesafb: VBE state buffer size "
++ "cannot be determined (eax: 0x%lx)\n",
++ tsk->regs.eax);
++ goto out;
++ }
++
++ par->vbe_state_size = 64 * (tsk->regs.ebx & 0xffff);
++ par->vbe_state = kzalloc(par->vbe_state_size, GFP_KERNEL);
++ if (!par->vbe_state)
++ goto out;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f04;
++ tsk->regs.ecx = 0x000f;
++ tsk->regs.edx = 0x0001;
++ tsk->flags = TF_CALL | TF_BUF_BX | TF_RETURN_BUF;
++ tsk->buf = (void*)(par->vbe_state);
++ tsk->buf_len = par->vbe_state_size;
++
++ if (vesafb_queue_task(tsk))
++ goto getstate_failed;
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_WARNING "vesafb: VBE get state call "
++ "failed (eax: 0x%lx)\n", tsk->regs.eax);
++ goto getstate_failed;
++ }
++ }
++out:
++ atomic_inc(&par->ref_count);
++ if (tsk)
++ kfree(tsk);
++ return 0;
++
++getstate_failed:
++ kfree(par->vbe_state);
++ par->vbe_state = NULL;
++ par->vbe_state_size = 0;
++ goto out;
++}
++
++static int vesafb_release(struct fb_info *info, int user)
++{
++ struct vesafb_task *tsk = NULL;
++ struct vesafb_par *par = info->par;
++ int cnt = atomic_read(&par->ref_count);
++
++ if (!cnt)
++ return -EINVAL;
++
++ if (cnt == 1 && par->vbe_state && par->vbe_state_size) {
++ vesafb_create_task(tsk);
++ if (!tsk)
++ goto out;
++
++ tsk->regs.eax = 0x0003;
++ tsk->regs.ebx = 0x0000;
++ tsk->flags = TF_CALL;
++
++ if (vesafb_queue_task(tsk))
++ goto out;
++
++ vesafb_wait_for_task(tsk);
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f04;
++ tsk->regs.ecx = 0x000f;
++ tsk->regs.edx = 0x0002;
++ tsk->buf = (void*)(par->vbe_state);
++ tsk->buf_len = par->vbe_state_size;
++ tsk->flags = TF_CALL | TF_BUF_BX;
++
++ if (vesafb_queue_task(tsk))
++ goto out;
++
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f)
++ printk(KERN_WARNING "vesafb: VBE state restore call "
++ "failed (eax: 0x%lx)\n",
++ tsk->regs.eax);
++ }
++out:
++ atomic_dec(&par->ref_count);
++ if (tsk)
++ kfree(tsk);
++ return 0;
++}
++
++static int __init vesafb_probe(struct platform_device *device);
++
++static struct fb_ops vesafb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = vesafb_open,
++ .fb_release = vesafb_release,
++ .fb_setcolreg = vesafb_setcolreg,
++ .fb_setcmap = vesafb_setcmap,
++ .fb_pan_display = vesafb_pan_display,
++ .fb_blank = vesafb_blank,
++ .fb_fillrect = cfb_fillrect,
++ .fb_copyarea = cfb_copyarea,
++ .fb_imageblit = cfb_imageblit,
++ .fb_check_var = vesafb_check_var,
++ .fb_set_par = vesafb_set_par
++};
++
++static struct platform_driver vesafb_driver = {
++ .probe = vesafb_probe,
++ .driver = {
++ .name = "vesafb",
++ },
++};
++
++static struct platform_device *vesafb_device;
++
++#ifndef MODULE
++int __init vesafb_setup(char *options)
++{
++ char *this_opt;
++
++ if (!options || !*options)
++ return 0;
++
++ DPRINTK("options %s\n",options);
++
++ while ((this_opt = strsep(&options, ",")) != NULL) {
++ if (!*this_opt) continue;
++
++ DPRINTK("this_opt: %s\n",this_opt);
++
++ if (! strcmp(this_opt, "redraw"))
++ ypan=0;
++ else if (! strcmp(this_opt, "ypan"))
++ ypan=1;
++ else if (! strcmp(this_opt, "ywrap"))
++ ypan=2;
++ else if (! strcmp(this_opt, "vgapal"))
++ pmi_setpal=0;
++ else if (! strcmp(this_opt, "pmipal"))
++ pmi_setpal=1;
++ else if (! strncmp(this_opt, "mtrr:", 5))
++ mtrr = simple_strtoul(this_opt+5, NULL, 0);
++ else if (! strcmp(this_opt, "nomtrr"))
++ mtrr=0;
++ else if (! strcmp(this_opt, "nocrtc"))
++ nocrtc=1;
++ else if (! strcmp(this_opt, "noedid"))
++ noedid=1;
++ else if (! strcmp(this_opt, "noblank"))
++ blank=0;
++ else if (! strcmp(this_opt, "gtf"))
++ gtf=1;
++ else if (! strncmp(this_opt, "vtotal:", 7))
++ vram_total = simple_strtoul(this_opt + 7, NULL, 0);
++ else if (! strncmp(this_opt, "vremap:", 7))
++ vram_remap = simple_strtoul(this_opt + 7, NULL, 0);
++ else if (! strncmp(this_opt, "maxhf:", 6))
++ maxhf = simple_strtoul(this_opt + 6, NULL, 0);
++ else if (! strncmp(this_opt, "maxvf:", 6))
++ maxvf = simple_strtoul(this_opt + 6, NULL, 0);
++ else if (! strncmp(this_opt, "maxclk:", 7))
++ maxclk = simple_strtoul(this_opt + 7, NULL, 0);
++ else if (! strncmp(this_opt, "vbemode:", 8))
++ vbemode = simple_strtoul(this_opt + 8, NULL,0);
++ else if (this_opt[0] >= '0' && this_opt[0] <= '9') {
++ DPRINTK("mode_option: %s\n",this_opt);
++ mode_option = this_opt;
++ } else {
++ printk(KERN_WARNING
++ "vesafb: unrecognized option %s\n", this_opt);
++ }
++ }
++
++ return 0;
++}
++#endif /* !MODULE */
++
++static int vesafb_read_proc_modes(char *buf, char **start, off_t offset,
++ int len, int *eof, void *private)
++{
++ int clen = 0, i;
++
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ clen += min(snprintf(buf + clen, len - clen, "%dx%d-%d\n", vbe_modes[i].x_res,
++ vbe_modes[i].y_res, vbe_modes[i].depth), len - clen);
++ }
++ *eof = 1;
++ return clen;
++}
++
++static int vesafb_read_proc_vbe_info(char *buf, char **start, off_t offset,
++ int len, int *eof, void *private)
++{
++ int clen = 0;
++
++ clen += min(snprintf(buf + clen, len, "Version: %d.%d\n",
++ ((vbe_ib.vbe_version & 0xff00) >> 8),
++ vbe_ib.vbe_version & 0xff), len);
++ clen += min(snprintf(buf + clen, len - clen, "Vendor: %s\n",
++ (char*)vbe_ib.oem_vendor_name_ptr), len - clen);
++ clen += min(snprintf(buf + clen, len - clen, "Product: %s\n",
++ (char*)vbe_ib.oem_product_name_ptr), len - clen);
++ clen += min(snprintf(buf + clen, len - clen, "OEM rev: %s\n",
++ (char*)vbe_ib.oem_product_rev_ptr), len - clen);
++ clen += min(snprintf(buf + clen, len - clen, "OEM string: %s\n",
++ (char*)vbe_ib.oem_string_ptr), len - clen);
++
++ *eof = 1;
++ return clen;
++}
++
++static int __init inline vesafb_vbe_getinfo(struct vesafb_task *tsk)
++{
++ tsk->regs.eax = 0x4f00;
++ tsk->flags = TF_CALL | TF_GETVBEIB;
++ tsk->buf = &vbe_ib;
++ tsk->buf_len = sizeof(vbe_ib);
++ if (vesafb_queue_task (tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++
++ if (vbe_ib.vbe_version < 0x0200) {
++ printk(KERN_ERR "vesafb: Sorry, pre-VBE 2.0 cards are "
++ "not supported.\n");
++ return -EINVAL;
++ }
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f) {
++ printk(KERN_ERR "vesafb: Getting mode info block failed "
++ "(eax=0x%x)\n", (u32)tsk->regs.eax);
++ return -EINVAL;
++ }
++
++ printk(KERN_INFO "vesafb: %s, %s, %s (OEM: %s)\n",
++ (char*)vbe_ib.oem_vendor_name_ptr,
++ (char*)vbe_ib.oem_product_name_ptr,
++ (char*)vbe_ib.oem_product_rev_ptr,
++ (char*)vbe_ib.oem_string_ptr);
++
++ printk(KERN_INFO "vesafb: VBE version: %d.%d\n",
++ ((vbe_ib.vbe_version & 0xff00) >> 8),
++ vbe_ib.vbe_version & 0xff);
++ return 0;
++}
++
++static int __init inline vesafb_vbe_getmodes(struct vesafb_task *tsk)
++{
++ u16 *mode = 0;
++ int off = 0;
++
++ /* Count available modes. */
++ mode = (u16*)vbe_ib.mode_list_ptr;
++ while (*mode != 0xffff) {
++ vbe_modes_cnt++;
++ mode++;
++ }
++
++ vbe_modes = kmalloc(sizeof(struct vesafb_mode_ib)*
++ vbe_modes_cnt, GFP_KERNEL);
++ if (!vbe_modes)
++ return -ENOMEM;
++
++ /* Get mode info for all available modes. */
++ mode = (u16*)vbe_ib.mode_list_ptr;
++
++ while (*mode != 0xffff) {
++ struct vesafb_mode_ib *mib;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f01;
++ tsk->regs.ecx = (u32) *mode;
++ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
++ tsk->buf = vbe_modes+off;
++ tsk->buf_len = sizeof(struct vesafb_mode_ib);
++ if (vesafb_queue_task(tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++ mib = p_mode(tsk->buf);
++ mib->mode_id = *mode;
++
++ /* We only want modes that are supported with the currennt
++ * hardware configuration (D0), color (D3), graphics (D4)
++ * and that have support for the LFB (D7). */
++ if ((mib->mode_attr & 0x99) == 0x99 &&
++ mib->bits_per_pixel >= 8) {
++ off++;
++ } else {
++ vbe_modes_cnt--;
++ }
++ mode++;
++ mib->depth = mib->red_len + mib->green_len + mib->blue_len;
++ /* Handle 8bpp modes and modes with broken color component
++ * lengths. */
++ if (mib->depth == 0 ||
++ (mib->depth == 24 && mib->bits_per_pixel == 32))
++ mib->depth = mib->bits_per_pixel;
++ }
++
++ return 0;
++}
++
++static int __init inline vesafb_vbe_getpmi(struct vesafb_task *tsk)
++{
++ int i;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f0a;
++ tsk->regs.ebx = 0x0;
++ tsk->flags = TF_CALL;
++ if (vesafb_queue_task(tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f || tsk->regs.es < 0xc000) {
++ pmi_setpal = ypan = 0;
++ } else {
++ pmi_base = (u16*)phys_to_virt(((u32)tsk->regs.es << 4) +
++ tsk->regs.edi);
++ pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
++ pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
++ printk(KERN_INFO "vesafb: protected mode interface info at "
++ "%04x:%04x\n",
++ (u16)tsk->regs.es, (u16)tsk->regs.edi);
++ printk(KERN_INFO "vesafb: pmi: set display start = %p, "
++ "set palette = %p\n", pmi_start, pmi_pal);
++
++ if (pmi_base[3]) {
++ printk(KERN_INFO "vesafb: pmi: ports = ");
++ for (i = pmi_base[3]/2; pmi_base[i] != 0xffff; i++)
++ printk("%x ",pmi_base[i]);
++ printk("\n");
++
++ /*
++ * memory areas not supported (yet?)
++ *
++ * Rules are: we have to set up a descriptor for the
++ * requested memory area and pass it in the ES register
++ * to the BIOS function.
++ */
++ if (pmi_base[i] != 0xffff) {
++ printk(KERN_INFO "vesafb: can't handle memory "
++ "requests, pmi disabled\n");
++ ypan = pmi_setpal = 0;
++ }
++ }
++ }
++ return 0;
++}
++
++static int __init inline vesafb_vbe_getedid(struct vesafb_task *tsk,
++ struct fb_info *info)
++{
++ int res = 0;
++
++ if (noedid || vbe_ib.vbe_version < 0x0300)
++ return -EINVAL;
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f15;
++ tsk->regs.ebx = 0;
++ tsk->regs.ecx = 0;
++ if (vesafb_queue_task(tsk))
++ return -EINVAL;
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) != 0x004f)
++ return -EINVAL;
++
++ if ((tsk->regs.ebx & 0x3) == 3) {
++ printk(KERN_INFO "vesafb: VBIOS/hardware supports both "
++ "DDC1 and DDC2 transfers\n");
++ } else if ((tsk->regs.ebx & 0x3) == 2) {
++ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC2 "
++ "transfers\n");
++ } else if ((tsk->regs.ebx & 0x3) == 1) {
++ printk(KERN_INFO "vesafb: VBIOS/hardware supports DDC1 "
++ "transfers\n");
++ } else {
++ printk(KERN_INFO "vesafb: VBIOS/hardware doesn't support "
++ "DDC transfers\n");
++ return -EINVAL;
++ }
++
++ vesafb_reset_task(tsk);
++ tsk->regs.eax = 0x4f15;
++ tsk->regs.ebx = 1;
++ tsk->regs.ecx = tsk->regs.edx = 0;
++ tsk->flags = TF_CALL | TF_RETURN_BUF | TF_BUF_DI;
++ tsk->buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
++ tsk->buf_len = EDID_LENGTH;
++
++ if (vesafb_queue_task(tsk)) {
++ res = -EINVAL;
++ goto out;
++ }
++ vesafb_wait_for_task(tsk);
++
++ if ((tsk->regs.eax & 0xffff) == 0x004f) {
++ fb_edid_to_monspecs(tsk->buf, &info->monspecs);
++ fb_videomode_to_modelist(info->monspecs.modedb,
++ info->monspecs.modedb_len, &info->modelist);
++ if (info->monspecs.vfmax && info->monspecs.hfmax) {
++ /* If the maximum pixel clock wasn't specified in
++ * the EDID block, set it to 300 MHz. */
++ if (info->monspecs.dclkmax == 0)
++ info->monspecs.dclkmax = 300 * 1000000;
++ info->monspecs.gtf = 1;
++ } else {
++ res = -EINVAL;
++ }
++ }
++
++out: kfree(tsk->buf);
++ return res;
++}
++
++static void __init inline vesafb_vbe_getmonspecs(struct vesafb_task *tsk,
++ struct fb_info *info)
++{
++ struct fb_var_screeninfo var;
++ int i;
++ memset(&info->monspecs, 0, sizeof(struct fb_monspecs));
++
++ /* If we didn't get all necessary data from the EDID block,
++ * mark it as incompatible with the GTF. */
++ if (vesafb_vbe_getedid(tsk, info))
++ info->monspecs.gtf = 0;
++
++ /* Kernel command line overrides. */
++ if (maxclk)
++ info->monspecs.dclkmax = maxclk * 1000000;
++ if (maxvf)
++ info->monspecs.vfmax = maxvf;
++ if (maxhf)
++ info->monspecs.hfmax = maxhf * 1000;
++
++ /* In case DDC transfers are not supported the user can provide
++ * monitor limits manually. Lower limits are set to "safe" values. */
++ if (info->monspecs.gtf == 0 && maxclk && maxvf && maxhf) {
++ info->monspecs.dclkmin = 0;
++ info->monspecs.vfmin = 60;
++ info->monspecs.hfmin = 29000;
++ info->monspecs.gtf = 1;
++ }
++
++ if (info->monspecs.gtf) {
++ printk(KERN_INFO
++ "vesafb: monitor limits: vf = %d Hz, hf = %d kHz, "
++ "clk = %d MHz\n", info->monspecs.vfmax,
++ (int)(info->monspecs.hfmax / 1000),
++ (int)(info->monspecs.dclkmax / 1000000));
++ /* Add valid VESA video modes to our modelist. */
++ for (i = 0; i < VESA_MODEDB_SIZE; i++) {
++ fb_videomode_to_var(&var, (struct fb_videomode *)
++ &vesa_modes[i]);
++ if (!fb_validate_mode(&var, info))
++ fb_add_videomode((struct fb_videomode *)
++ &vesa_modes[i],
++ &info->modelist);
++ }
++ } else {
++ /* Add all VESA video modes to our modelist. */
++ fb_videomode_to_modelist((struct fb_videomode *)vesa_modes,
++ VESA_MODEDB_SIZE, &info->modelist);
++ printk(KERN_INFO "vesafb: no monitor limits have been set\n");
++ }
++ return;
++}
++
++static int __init inline vesafb_vbe_init(struct fb_info *info)
++{
++ struct vesafb_task *tsk;
++ int res = 0;
++
++ vesafb_create_task(tsk);
++ if (!tsk)
++ return -EINVAL;
++ if ((res = vesafb_vbe_getinfo(tsk)) != 0)
++ goto out;
++ if ((res = vesafb_vbe_getmodes(tsk)) != 0)
++ goto out;
++ if (pmi_setpal || ypan)
++ vesafb_vbe_getpmi(tsk);
++
++ INIT_LIST_HEAD(&info->modelist);
++ vesafb_vbe_getmonspecs(tsk, info);
++
++out: kfree(tsk);
++ return res;
++}
++
++static int __init decode_mode(u32 *xres, u32 *yres, u32 *bpp, u32 *refresh)
++{
++ int len = strlen(mode_option), i, err = 0;
++ u8 res_specified = 0, bpp_specified = 0, refresh_specified = 0,
++ yres_specified = 0;
++
++ for (i = len-1; i >= 0; i--) {
++ switch (mode_option[i]) {
++ case '@':
++ len = i;
++ if (!refresh_specified && !bpp_specified &&
++ !yres_specified) {
++ *refresh = simple_strtoul(&mode_option[i+1],
++ NULL, 0);
++ refresh_specified = 1;
++ } else
++ goto out;
++ break;
++ case '-':
++ len = i;
++ if (!bpp_specified && !yres_specified) {
++ *bpp = simple_strtoul(&mode_option[i+1],
++ NULL, 0);
++ bpp_specified = 1;
++ } else
++ goto out;
++ break;
++ case 'x':
++ if (!yres_specified) {
++ *yres = simple_strtoul(&mode_option[i+1],
++ NULL, 0);
++ yres_specified = 1;
++ } else
++ goto out;
++ break;
++ case '0'...'9':
++ break;
++ default:
++ goto out;
++ }
++ }
++
++ if (i < 0 && yres_specified) {
++ *xres = simple_strtoul(mode_option, NULL, 0);
++ res_specified = 1;
++ }
++
++out: if (!res_specified || !yres_specified) {
++ printk(KERN_ERR "vesafb: invalid resolution, "
++ "%s not specified\n",
++ (!res_specified) ? "width" : "height");
++ err = -EINVAL;
++ }
++
++ return err;
++}
++
++static int __init vesafb_init_set_mode(struct fb_info *info)
++{
++ struct fb_videomode *fbmode;
++ struct fb_videomode mode;
++ int i, modeid, refresh = 0;
++ u8 refresh_specified = 0;
++
++ if (!mode_option)
++ mode_option = CONFIG_FB_VESA_DEFAULT_MODE;
++
++ if (vbemode > 0) {
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ if (vbe_modes[i].mode_id == vbemode) {
++ info->var.vmode = FB_VMODE_NONINTERLACED;
++ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
++ vesafb_setup_var(&info->var, info,
++ &vbe_modes[i]);
++ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON,
++ 60, &info->var, info);
++ /* With pixclock set to 0, the default BIOS
++ * timings will be used in set_par(). */
++ info->var.pixclock = 0;
++ modeid = i;
++ goto out;
++ }
++ }
++ printk(KERN_INFO "specified VBE mode %d not found\n",
++ vbemode);
++ vbemode = 0;
++ }
++
++ /* Decode the mode specified on the kernel command line. We save
++ * the depth into bits_per_pixel, which is wrong, but will work
++ * anyway. */
++ if (decode_mode(&info->var.xres, &info->var.yres,
++ &info->var.bits_per_pixel, &refresh))
++ return -EINVAL;
++ if (refresh)
++ refresh_specified = 1;
++ else
++ refresh = 60;
++
++ /* Look for a matching VBE mode. We can live if an exact match
++ * cannot be found. */
++ modeid = vesafb_find_vbe_mode(info->var.xres, info->var.yres,
++ info->var.bits_per_pixel, 0);
++
++ if (modeid == -1) {
++ return -EINVAL;
++ } else {
++ info->var.vmode = FB_VMODE_NONINTERLACED;
++ info->var.sync = FB_SYNC_VERT_HIGH_ACT;
++ vesafb_setup_var(&info->var, info, &vbe_modes[modeid]);
++ }
++ if (vbe_ib.vbe_version < 0x0300) {
++ fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, 60,
++ &info->var, info);
++ goto out;
++ }
++ if (!gtf) {
++ struct fb_videomode tmode;
++
++ if (refresh_specified) {
++ fb_var_to_videomode(&tmode, &info->var);
++ tmode.refresh = refresh;
++ fbmode = fb_find_nearest_mode(&tmode,
++ &info->modelist);
++ } else
++ fbmode = fb_find_best_mode(&info->var,
++ &info->modelist);
++
++ if (fbmode->xres == info->var.xres &&
++ fbmode->yres == info->var.yres &&
++ !(fbmode->vmode & (FB_VMODE_INTERLACED | FB_VMODE_DOUBLE))
++ && (!refresh_specified ||
++ abs(refresh - fbmode->refresh) <= 5)) {
++ fb_videomode_to_var(&info->var, fbmode);
++ return modeid;
++ }
++ }
++ i = FB_MAXTIMINGS;
++ if (!info->monspecs.gtf)
++ i = FB_IGNOREMON | FB_VSYNCTIMINGS;
++ else if (refresh_specified)
++ i = FB_VSYNCTIMINGS;
++ if (!fb_get_mode(i, refresh, &info->var, info))
++ goto out;
++ if (info->monspecs.gtf &&
++ !fb_get_mode(FB_MAXTIMINGS, 0, &info->var, info))
++ goto out;
++ /* Use default refresh rate */
++ printk(KERN_WARNING "vesafb: using default BIOS refresh rate\n");
++ info->var.pixclock = 0;
++
++out:
++ fb_var_to_videomode(&mode, &info->var);
++ fb_add_videomode(&mode, &info->modelist);
++ return modeid;
++}
++
++static int __init vesafb_probe(struct platform_device *dev)
++{
++ char entry[16];
++ struct fb_info *info;
++ struct vesafb_mode_ib *mode = NULL;
++ int err = 0, i, h;
++ unsigned int size_vmode;
++ unsigned int size_remap;
++ unsigned int size_total;
++
++ vesafb_info = info = framebuffer_alloc(sizeof(struct vesafb_par) +
++ sizeof(u32) * 256, &dev->dev);
++ if (!info)
++ return -ENOMEM;
++
++ if (vesafb_wait_for_thread()) {
++ printk(KERN_ERR "vesafb: vesafb thread not running\n");
++ framebuffer_release(info);
++ return -EINVAL;
++ }
++
++ if (vesafb_vbe_init(info)) {
++ printk(KERN_ERR "vesafb: vbe_init failed\n");
++ err = -EINVAL;
++ goto out;
++ }
++
++ vesafb_fix.ypanstep = ypan ? 1 : 0;
++ vesafb_fix.ywrapstep = (ypan>1) ? 1 : 0;
++
++ info->pseudo_palette = ((u8*)info->par + sizeof(struct vesafb_par));
++ info->fbops = &vesafb_ops;
++ info->var = vesafb_defined;
++ info->fix = vesafb_fix;
++
++ if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
++ err = -ENXIO;
++ goto out;
++ }
++
++ i = vesafb_init_set_mode(info);
++ if (i < 0) {
++ err = -EINVAL;
++ goto out_cmap;
++ } else
++ mode = &vbe_modes[i];
++
++ /* Disable blanking if the user requested so. */
++ if (!blank) {
++ info->fbops->fb_blank = NULL;
++ }
++
++ /* Find out how much IO memory is required for the mode with
++ * the highest resolution. */
++ size_remap = 0;
++ for (i = 0; i < vbe_modes_cnt; i++) {
++ h = vbe_modes[i].bytes_per_scan_line * vbe_modes[i].y_res;
++ if (h > size_remap)
++ size_remap = h;
++ }
++ size_remap *= 2;
++
++ /* size_vmode -- that is the amount of memory needed for the
++ * used video mode, i.e. the minimum amount of
++ * memory we need. */
++ if (mode != NULL) {
++ size_vmode = info->var.yres * mode->bytes_per_scan_line;
++ } else {
++ size_vmode = info->var.yres * info->var.xres *
++ ((info->var.bits_per_pixel + 7) >> 3);
++ }
++
++ /* size_total -- all video memory we have. Used for mtrr
++ * entries, ressource allocation and bounds
++ * checking. */
++ size_total = vbe_ib.total_memory * 65536;
++ if (vram_total)
++ size_total = vram_total * 1024 * 1024;
++ if (size_total < size_vmode)
++ size_total = size_vmode;
++ ((struct vesafb_par*)(info->par))->mem_total = size_total;
++
++ /* size_remap -- the amount of video memory we are going to
++ * use for vesafb. With modern cards it is no
++ * option to simply use size_total as th
++ * wastes plenty of kernel address space. */
++ if (vram_remap)
++ size_remap = vram_remap * 1024 * 1024;
++ if (size_remap < size_vmode)
++ size_remap = size_vmode;
++ if (size_remap > size_total)
++ size_remap = size_total;
++
++ info->fix.smem_len = size_remap;
++ info->fix.smem_start = mode->phys_base_ptr;
++
++ /* We have to set it here, because when setup_var() was called,
++ * smem_len wasn't defined yet. */
++ info->var.yres_virtual = info->fix.smem_len /
++ mode->bytes_per_scan_line;
++
++ if (ypan && info->var.yres_virtual > info->var.yres) {
++ printk(KERN_INFO "vesafb: scrolling: %s "
++ "using protected mode interface, "
++ "yres_virtual=%d\n",
++ (ypan > 1) ? "ywrap" : "ypan",info->var.yres_virtual);
++ } else {
++ printk(KERN_INFO "vesafb: scrolling: redraw\n");
++ info->var.yres_virtual = info->var.yres;
++ ypan = 0;
++ }
++
++ info->flags = FBINFO_FLAG_DEFAULT |
++ (ypan) ? FBINFO_HWACCEL_YPAN : 0;
++
++ if (!ypan)
++ info->fbops->fb_pan_display = NULL;
++
++ if (!request_mem_region(info->fix.smem_start, size_total, "vesafb")) {
++ printk(KERN_WARNING "vesafb: cannot reserve video memory at "
++ "0x%lx\n", info->fix.smem_start);
++ /* We cannot make this fatal. Sometimes this comes from magic
++ spaces our resource handlers simply don't know about. */
++ }
++
++ info->screen_base = ioremap(info->fix.smem_start, info->fix.smem_len);
++
++ if (!info->screen_base) {
++ printk(KERN_ERR
++ "vesafb: abort, cannot ioremap video memory "
++ "0x%x @ 0x%lx\n",
++ info->fix.smem_len, info->fix.smem_start);
++ err = -EIO;
++ goto out_mem;
++ }
++
++ /* Request failure does not faze us, as vgacon probably has this
++ region already (FIXME) */
++ request_region(0x3c0, 32, "vesafb");
++
++#ifdef CONFIG_MTRR
++ if (mtrr && !(info->fix.smem_start & (PAGE_SIZE - 1))) {
++ int temp_size = size_total;
++ unsigned int type = 0;
++
++ switch (mtrr) {
++ case 1:
++ type = MTRR_TYPE_UNCACHABLE;
++ break;
++ case 2:
++ type = MTRR_TYPE_WRBACK;
++ break;
++ case 3:
++ type = MTRR_TYPE_WRCOMB;
++ break;
++ case 4:
++ type = MTRR_TYPE_WRTHROUGH;
++ break;
++ default:
++ type = 0;
++ break;
++ }
++
++ if (type) {
++ int rc;
++
++ /* Find the largest power-of-two */
++ while (temp_size & (temp_size - 1))
++ temp_size &= (temp_size - 1);
++
++ /* Try and find a power of two to add */
++ do {
++ rc = mtrr_add(info->fix.smem_start,
++ temp_size, type, 1);
++ temp_size >>= 1;
++ } while (temp_size >= PAGE_SIZE && rc == -EINVAL);
++ }
++ }
++#endif /* CONFIG_MTRR */
++
++ if (register_framebuffer(info) < 0) {
++ printk(KERN_ERR
++ "vesafb: failed to register framebuffer device\n");
++ err = -EINVAL;
++ goto out_mem;
++ }
++
++ printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, "
++ "using %dk, total %dk\n", info->fix.smem_start,
++ info->screen_base, size_remap/1024, size_total/1024);
++ printk(KERN_INFO "fb%d: %s frame buffer device\n", info->node,
++ info->fix.id);
++
++ sprintf(entry, "fb%d", info->node);
++ proc_mkdir(entry, 0);
++
++ sprintf(entry, "fb%d/modes", info->node);
++ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_modes, NULL);
++
++ sprintf(entry, "fb%d/vbe_info", info->node);
++ create_proc_read_entry(entry, 0, 0, vesafb_read_proc_vbe_info, NULL);
++ return 0;
++
++out_mem:
++ release_mem_region(info->fix.smem_start, size_total);
++ if (!list_empty(&info->modelist))
++ fb_destroy_modelist(&info->modelist);
++ fb_destroy_modedb(info->monspecs.modedb);
++out_cmap:
++ fb_dealloc_cmap(&info->cmap);
++out:
++ framebuffer_release(info);
++ vesafb_info = NULL;
++ kfree(vbe_modes);
++ vbe_modes = NULL;
++ return err;
++}
++
++int __init vesafb_init(void)
++{
++ int ret;
++#ifndef MODULE
++ char *option = NULL;
++
++ if (fb_get_options("vesafb", &option))
++ return -ENODEV;
++ vesafb_setup(option);
++#endif
++ ret = platform_driver_register(&vesafb_driver);
++
++ if (!ret) {
++ vesafb_device = platform_device_alloc("vesafb", 0);
++
++ if (vesafb_device)
++ ret = platform_device_add(vesafb_device);
++ else
++ ret = -ENOMEM;
++
++ if (ret) {
++ platform_device_put(vesafb_device);
++ platform_driver_unregister(&vesafb_driver);
++ }
++ }
++ return ret;
++}
++
++module_init(vesafb_init);
++
++#ifdef MODULE
++void __exit vesafb_exit(void)
++{
++ char entry[16];
++
++ if (vesafb_info)
++ unregister_framebuffer(vesafb_info);
++
++ platform_device_unregister(vesafb_device);
++ platform_driver_unregister(&vesafb_driver);
++
++ if (vesafb_info) {
++ struct vesafb_par *par = (struct vesafb_par*)vesafb_info->par;
++
++ sprintf(entry, "fb%d/modes", vesafb_info->node);
++ remove_proc_entry(entry, NULL);
++
++ sprintf(entry, "fb%d/vbe_info", vesafb_info->node);
++ remove_proc_entry(entry, NULL);
++
++ sprintf(entry, "fb%d", vesafb_info->node);
++ remove_proc_entry(entry, NULL);
++
++ iounmap(vesafb_info->screen_base);
++ release_mem_region(vesafb_info->fix.smem_start,
++ par->mem_total);
++ fb_dealloc_cmap(&vesafb_info->cmap);
++ if (!list_empty(&vesafb_info->modelist))
++ fb_destroy_modelist(&vesafb_info->modelist);
++ fb_destroy_modedb(vesafb_info->monspecs.modedb);
++ framebuffer_release(vesafb_info);
++ }
++
++ if (vbe_modes != NULL)
++ kfree(vbe_modes);
++}
++
++module_exit(vesafb_exit);
++
++static inline int param_get_scroll(char *buffer, struct kernel_param *kp)
++{
++ return 0;
++}
++static inline int param_set_scroll(const char *val, struct kernel_param *kp)
++{
++ ypan = 0;
++
++ if (! strcmp(val, "redraw"))
++ ypan = 0;
++ else if (! strcmp(val, "ypan"))
++ ypan = 1;
++ else if (! strcmp(val, "ywrap"))
++ ypan = 2;
++
++ return 0;
++}
++
++#define param_check_scroll(name, p) __param_check(name, p, void);
++
++module_param_named(scroll, ypan, scroll, 0);
++MODULE_PARM_DESC(scroll,"Scrolling mode, set to 'redraw', 'ypan' or 'ywrap'");
++module_param_named(vgapal, pmi_setpal, invbool, 0);
++MODULE_PARM_DESC(vgapal,"bool: set palette using VGA registers");
++module_param_named(pmipal, pmi_setpal, bool, 0);
++MODULE_PARM_DESC(pmipal,"bool: set palette using PMI calls");
++module_param(mtrr, uint, 0);
++MODULE_PARM_DESC(mtrr,"Memory Type Range Registers setting. Use 0 to disable.");
++module_param(blank, bool, 1);
++MODULE_PARM_DESC(blank,"bool: enable hardware blanking");
++module_param(nocrtc, bool, 0);
++MODULE_PARM_DESC(nocrtc,"bool: ignore CRTC timings when setting modes");
++module_param(noedid, bool, 0);
++MODULE_PARM_DESC(noedid,"bool: ignore EDID-provided monitor limits "
++ "when setting modes");
++module_param(gtf, bool, 0);
++MODULE_PARM_DESC(gtf,"bool: force use of VESA GTF to calculate mode timings");
++module_param(vram_remap, uint, 0);
++MODULE_PARM_DESC(vram_remap,"Set amount of video memory to be used [MiB]");
++module_param(vram_total, uint, 0);
++MODULE_PARM_DESC(vram_total,"Set total amount of video memoery [MiB]");
++module_param(maxclk, ushort, 0);
++MODULE_PARM_DESC(maxclk,"Maximum pixelclock [MHz], overrides EDID data");
++module_param(maxhf, ushort, 0);
++MODULE_PARM_DESC(maxhf,"Maximum horizontal frequency [kHz], "
++ "overrides EDID data");
++module_param(maxvf, ushort, 0);
++MODULE_PARM_DESC(maxvf,"Maximum vertical frequency [Hz], "
++ "overrides EDID data");
++module_param_named(mode, mode_option, charp, 0);
++MODULE_PARM_DESC(mode, "Specify resolution as "
++ "\"<xres>x<yres>[-<bpp>][@<refresh>]\"");
++module_param(vbemode, ushort, 0);
++MODULE_PARM_DESC(vbemode,"VBE mode number to set, overrides 'mode' setting");
++
++#endif /* MODULE */
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Michal Januszewski");
++MODULE_DESCRIPTION("Framebuffer driver for VBE2.0+ compliant graphics boards");
++
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 4463735..7283e48 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1390,6 +1390,8 @@ extern void mmput(struct mm_struct *);
+ extern struct mm_struct *get_task_mm(struct task_struct *task);
+ /* Remove the current tasks stale references to the old mm_struct */
+ extern void mm_release(struct task_struct *, struct mm_struct *);
++/* Create a new mm for a kernel thread */
++extern int set_new_mm(void);
+
+ extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
+ extern void flush_thread(void);
+diff --git a/include/video/vesa.h b/include/video/vesa.h
+new file mode 100644
+index 0000000..bb5abcf
+--- /dev/null
++++ b/include/video/vesa.h
+@@ -0,0 +1,150 @@
++#if 0
++#define DPRINTK(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __FUNCTION__ , \
++ ## args)
++#else
++#define DPRINTK(fmt, args...)
++#endif
++
++#define p_crtc(arg) ((struct vesafb_crtc_ib*)(arg))
++#define p_vbe(arg) ((struct vesafb_vbe_ib*)(arg))
++#define p_mode(arg) ((struct vesafb_mode_ib*)(arg))
++
++struct vesafb_task {
++ u8 flags;
++ void *buf;
++ int buf_len;
++ struct vm86_regs regs;
++ struct list_head node;
++ struct completion done;
++};
++
++/* Vesafb task flags and masks */
++#define TF_CALL 0x00
++#define TF_EXIT 0x01
++#define TF_GETVBEIB 0x02
++#define TF_BUF_DI 0x04
++#define TF_BUF_BX 0x08
++#define TF_RETURN_BUF 0x10
++
++/* Macros and functions for manipulating vesafb tasks */
++#define vesafb_create_task(task) \
++do { \
++ task = kmalloc(sizeof(struct vesafb_task), GFP_ATOMIC); \
++ if (task) \
++ memset(task, 0, sizeof(struct vesafb_task)); \
++ init_completion(&task->done); \
++} while (0)
++
++#define vesafb_wait_for_task(task) wait_for_completion(&task->done);
++#define vesafb_reset_task(task) init_completion(&task->done);
++int vesafb_queue_task(struct vesafb_task *task);
++
++/* Functions for controlling the vesafb thread */
++int vesafb_wait_for_thread(void);
++
++#define VBE_CAP_CAN_SWITCH_DAC 0x01
++#define VBE_CAP_VGACOMPAT 0x02
++
++/* This struct is 512 bytes long */
++struct vesafb_vbe_ib {
++ char vbe_signature[4];
++ u16 vbe_version;
++ u32 oem_string_ptr;
++ u32 capabilities;
++ u32 mode_list_ptr;
++ u16 total_memory;
++ u16 oem_software_rev;
++ u32 oem_vendor_name_ptr;
++ u32 oem_product_name_ptr;
++ u32 oem_product_rev_ptr;
++ u8 reserved[222];
++ char oem_data[256];
++} __attribute__ ((packed));
++
++struct vesafb_crtc_ib {
++ u16 horiz_total;
++ u16 horiz_start;
++ u16 horiz_end;
++ u16 vert_total;
++ u16 vert_start;
++ u16 vert_end;
++ u8 flags;
++ u32 pixel_clock;
++ u16 refresh_rate;
++ u8 reserved[40];
++} __attribute__ ((packed));
++
++#define VBE_MODE_VGACOMPAT 0x20
++
++struct vesafb_mode_ib {
++ /* for all VBE revisions */
++ u16 mode_attr;
++ u8 winA_attr;
++ u8 winB_attr;
++ u16 win_granularity;
++ u16 win_size;
++ u16 winA_seg;
++ u16 winB_seg;
++ u32 win_func_ptr;
++ u16 bytes_per_scan_line;
++
++ /* for VBE 1.2+ */
++ u16 x_res;
++ u16 y_res;
++ u8 x_char_size;
++ u8 y_char_size;
++ u8 planes;
++ u8 bits_per_pixel;
++ u8 banks;
++ u8 memory_model;
++ u8 bank_size;
++ u8 image_pages;
++ u8 reserved1;
++
++ /* Direct color fields for direct/6 and YUV/7 memory models. */
++ /* Offsets are bit positions of lsb in the mask. */
++ u8 red_len;
++ u8 red_off;
++ u8 green_len;
++ u8 green_off;
++ u8 blue_len;
++ u8 blue_off;
++ u8 rsvd_len;
++ u8 rsvd_off;
++ u8 direct_color_info; /* direct color mode attributes */
++
++ /* for VBE 2.0+ */
++ u32 phys_base_ptr;
++ u8 reserved2[6];
++
++ /* for VBE 3.0+ */
++ u16 lin_bytes_per_scan_line;
++ u8 bnk_image_pages;
++ u8 lin_image_pages;
++ u8 lin_red_len;
++ u8 lin_red_off;
++ u8 lin_green_len;
++ u8 lin_green_off;
++ u8 lin_blue_len;
++ u8 lin_blue_off;
++ u8 lin_rsvd_len;
++ u8 lin_rsvd_off;
++ u32 max_pixel_clock;
++ u16 mode_id;
++ u8 depth;
++} __attribute__ ((packed));
++
++struct vesafb_pal_entry {
++ u_char blue, green, red, pad;
++} __attribute__ ((packed));
++
++struct vesafb_par {
++ u8 *vbe_state;
++ int vbe_state_size;
++ atomic_t ref_count;
++
++ u32 mem_total;
++ int mode_idx;
++ struct vesafb_crtc_ib crtc;
++};
++
+diff --git a/kernel/fork.c b/kernel/fork.c
+index fc723e5..dc8f93b 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -100,6 +100,7 @@ struct kmem_cache *fs_cachep;
+
+ /* SLAB cache for vm_area_struct structures */
+ struct kmem_cache *vm_area_cachep;
++EXPORT_SYMBOL_GPL(vm_area_cachep);
+
+ /* SLAB cache for mm_struct structures (tsk->mm) */
+ static struct kmem_cache *mm_cachep;
+@@ -399,6 +400,40 @@ void mmput(struct mm_struct *mm)
+ EXPORT_SYMBOL_GPL(mmput);
+
+ /**
++ * set_new_mm - allocate, init and activate a new mm for a kernel thread
++ */
++int set_new_mm(void)
++{
++ struct mm_struct *mm;
++ struct task_struct *tsk = current;
++ struct mm_struct *active_mm;
++
++ mm = mm_alloc();
++ if (!mm)
++ goto fail_nomem;
++ if (init_new_context(current,mm))
++ goto fail_nocontext;
++
++ task_lock(tsk);
++ tsk->flags |= PF_BORROWED_MM;
++ active_mm = tsk->active_mm;
++ current->mm = mm;
++ current->active_mm = mm;
++ activate_mm(active_mm, mm);
++ task_unlock(current);
++
++ /* Drop the previous active_mm */
++ mmdrop(active_mm);
++ return 0;
++
++fail_nocontext:
++ mmdrop(mm);
++fail_nomem:
++ return -EINVAL;
++}
++EXPORT_SYMBOL_GPL(set_new_mm);
++
++/**
+ * get_task_mm - acquire a reference to the task's mm
+ *
+ * Returns %NULL if the task has no mm. Checks PF_BORROWED_MM (meaning
+diff --git a/mm/memory.c b/mm/memory.c
+index 563792f..a9519ea 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -1193,6 +1193,7 @@ int zeromap_page_range(struct vm_area_struct *vma,
+ } while (pgd++, addr = next, addr != end);
+ return err;
+ }
++EXPORT_SYMBOL_GPL(zeromap_page_range);
+
+ pte_t * fastcall get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl)
+ {
+diff --git a/mm/mmap.c b/mm/mmap.c
+index 9717337..6fa5b1c 100644
+--- a/mm/mmap.c
++++ b/mm/mmap.c
+@@ -2024,6 +2024,7 @@ int insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
+ vma_link(mm, vma, prev, rb_link, rb_parent);
+ return 0;
+ }
++EXPORT_SYMBOL_GPL(insert_vm_struct);
+
+ /*
+ * Copy the vma structure to a new location in the same mm,
diff --git a/packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch
new file mode 100644
index 0000000000..191de3af22
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.21/wm97xx-lcdnoise-r0.patch
@@ -0,0 +1,208 @@
+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.inc b/packages/linux/linux-rp.inc
index 04b95ec813..14890a2283 100644
--- a/packages/linux/linux-rp.inc
+++ b/packages/linux/linux-rp.inc
@@ -21,18 +21,19 @@ ALLOW_EMPTY = "1"
EXTRA_OEMAKE = "OPENZAURUS_RELEASE=-${DISTRO_VERSION}"
COMPATIBLE_HOST = "(arm|i.86).*-linux"
-COMPATIBLE_MACHINE = '(collie|poodle|c7x0|akita|spitz|tosa|hx2000|qemuarm|qemux86)'
+COMPATIBLE_MACHINE = '(collie|poodle|c7x0|akita|spitz|tosa|hx2000|qemuarm|qemux86|bootcdx86)'
KERNEL_IMAGETYPE_qemux86 = "bzImage"
+KERNEL_IMAGETYPE_bootcdx86 = "bzImage"
-KERNEL_CUSTOM_NAME = '${@bb.data.getVar("KERNEL_CUSTOM_NAME_OVERRIDE",d,1) or ""}'
-KERNEL_DEPLOY_NAME = '${@bb.data.getVar("KERNEL_DEPLOY_NAME_OVERRIDE",d,1) or "${KERNEL_IMAGETYPE}-${PV}-${KERNEL_CUSTOM_NAME}${MACHINE}-${DATETIME}.bin"}'
-KERNEL_SYMLINK_NAME = '${@bb.data.getVar("KERNEL_SYMLINK_NAME_OVERRIDE",d,1) or "${KERNEL_IMAGETYPE}-${KERNEL_CUSTOM_NAME}${MACHINE}.bin"}'
-KERNEL_DEFCONFIG = '${@bb.data.getVar("KERNEL_DEFCONFIG_OVERRIDE",d,1) or "defconfig-${MACHINE}"}'
+KERNEL_CUSTOM_NAME ?= ""
+KERNEL_DEPLOY_NAME ?= "${KERNEL_IMAGETYPE}-${PV}-${KERNEL_CUSTOM_NAME}${MACHINE}-${DATETIME}.bin"
+KERNEL_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${KERNEL_CUSTOM_NAME}${MACHINE}.bin"
+KERNEL_DEFCONFIG ?= "defconfig-${MACHINE}"
CMDLINE_CON = "console=ttyS0,115200n8 console=tty1 noinitrd"
CMDLINE_CON_collie = "console=ttySA0,115200n8 console=tty1 noinitrd"
-CMDLINE_ROOT = '${@bb.data.getVar("CMDLINE_ROOT_OVERRIDE",d,1) or "root=/dev/mtdblock2 rootfstype=jffs2"}'
-CMDLINE_ROOT_spitz = '${@bb.data.getVar("CMDLINE_ROOT_OVERRIDE",d,1) or "root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw"}'
+CMDLINE_ROOT ?= "root=/dev/mtdblock2 rootfstype=jffs2"
+CMDLINE_ROOT_spitz ?= "root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw"
CMDLINE_OTHER = "dyntick=enable"
CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
@@ -70,9 +71,9 @@ module_autoload_mmc_block_collie = "mmc_block"
do_configure() {
rm -f ${S}/.config
- if [ "${MACHINE}" == "tosa" ]; then
+ if [ "${MACHINE}" = "tosa" ]; then
gcc_version=`${KERNEL_CC} -dumpversion`
- if [ "${gcc_version}" == "4.0.1" ] || [ "${gcc_version}" == "4.0.2" ]; then
+ if [ "${gcc_version}" = "4.0.1" ] || [ "${gcc_version}" = "4.0.2" ]; then
die "tosa kernel wont work with gcc 4.0.x"
fi
fi
@@ -81,12 +82,12 @@ do_configure() {
die "No default configuration for ${MACHINE} available."
fi
- if [ "${MACHINE}" == "collie" ]; then
+ if [ "${MACHINE}" = "collie" ]; then
mempos=`echo "obase=16; $mem * 1024 * 1024" | bc`
rdsize=`echo "$rd * 1024" | bc`
total=`expr $mem + $rd`
addr=`echo "obase=16; ibase=16; C0000000 + $mempos" | bc`
- if [ "$rd" == "0" ]
+ if [ "$rd" = "0" ]
then
echo "No RAMDISK"
echo "# CONFIG_MTD_MTDRAM_SA1100 is not set" >> ${S}/.config
@@ -101,7 +102,7 @@ do_configure() {
echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
- #if [ "${ENABLE_ELPP}" == "yes" ]; then
+ #if [ "${ENABLE_ELPP}" = "yes" ]; then
# echo "# Enhanced Linux Progress Patch" >> ${S}/.config
# echo "CONFIG_FB_ELPP=y" >> ${S}/.config
# echo "CONFIG_LOGO=y" >> ${S}/.config
@@ -110,7 +111,7 @@ do_configure() {
# echo "# CONFIG_FB_ELPP is not set" >> ${S}/.config
#fi
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
echo "CONFIG_AEABI=y" >> ${S}/.config
echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
else
@@ -118,7 +119,7 @@ do_configure() {
echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config
fi
- if [ "${DISTRO}" == "openzaurus" -a "${MACHINE}" != "collie" ]; then
+ if [ "${DISTRO}" = "openzaurus" -a "${MACHINE}" != "collie" ]; then
case ${MACHINE} in
c7x0 | akita | spitz )
echo "CONFIG_LOGO_OZ640_CLUT224=y" >> ${S}/.config
@@ -139,7 +140,7 @@ do_configure() {
echo "CONFIG_LOGO=y" >> ${S}/.config
echo "# CONFIG_LOGO_LINUX_CLUT224 is not set" >> ${S}/.config
echo "# CONFIG_LOGO_OHAND_CLUT224 is not set" >> ${S}/.config
- elif [ "${DISTRO}" == "poky" -a "${MACHINE}" != "collie" ]; then
+ elif [ "${DISTRO}" = "poky" -a "${MACHINE}" != "collie" ]; then
echo "CONFIG_LOGO=y" >> ${S}/.config
echo "CONFIG_LOGO_OHAND_CLUT224=y" >> ${S}/.config
echo "# CONFIG_LOGO_OZ240_CLUT224 is not set" >> ${S}/.config
@@ -198,12 +199,12 @@ do_compile_append() {
}
do_deploy() {
-
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_DEPLOY_NAME}
- rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_SYMLINK_NAME}
- ln -s ${DEPLOY_DIR_IMAGE}/${KERNEL_DEPLOY_NAME} ${DEPLOY_DIR_IMAGE}/${KERNEL_SYMLINK_NAME}
- tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_DEPLOY_NAME}
+ cd ${DEPLOY_DIR_IMAGE}
+ rm -f ${KERNEL_SYMLINK_NAME}
+ ln -s ${KERNEL_DEPLOY_NAME} ${KERNEL_SYMLINK_NAME}
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_VERSION}-${MACHINE}.tgz -C ${D} lib
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-rp_2.6.17.bb b/packages/linux/linux-rp_2.6.17.bb
index 717ef5a523..211c5a43cf 100644
--- a/packages/linux/linux-rp_2.6.17.bb
+++ b/packages/linux/linux-rp_2.6.17.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r33"
+PR = "r35"
# Handy URLs
# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
@@ -27,7 +27,7 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \
${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 \
+ 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 \
diff --git a/packages/linux/linux-rp_2.6.20.bb b/packages/linux/linux-rp_2.6.20.bb
index 95a87621d7..b818b0f3e8 100644
--- a/packages/linux/linux-rp_2.6.20.bb
+++ b/packages/linux/linux-rp_2.6.20.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r18"
+PR = "r19"
# 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
new file mode 100644
index 0000000000..07c7e386fe
--- /dev/null
+++ b/packages/linux/linux-rp_2.6.21.bb
@@ -0,0 +1,111 @@
+require linux-rp.inc
+
+PR = "r5"
+
+# 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-r3.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://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
+
+# These patches are extracted from Pavel Machek's git tree
+# (diff against vanilla kernel)
+SRC_URI_append_collie = "\
+ ${DOSRC}/collie/mtd-sharp-flash-hack-r0.patch;patch=1 \
+ ${DOSRC}/collie/collie-r0.patch;patch=1 \
+ ${DOSRC}/collie/locomolcd-backlight-r0.patch;patch=1 \
+ ${DOSRC}/collie/ucb1x00-touch-audio-r0.patch;patch=1 \
+ file://collie-mcp-r1.patch;patch=1 \
+ ${DOSRC}/collie/sa1100-udc-r0.patch;patch=1 \
+# ${DOSRC}/collie/collie-pm-r1.patch;patch=1 \
+"
+
+SRC_URI_append_tosa = "\
+ ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
+ ${CHSRC}/tmio-core-r4.patch;patch=1 \
+ file://tmio-tc6393-r8.patch;patch=1 \
+ file://tmio-nand-r7.patch;patch=1 \
+ file://tmio-ohci-r6.patch;patch=1 \
+ ${CHSRC}/tmio-fb-r6.patch;patch=1 \
+ file://tosa-keyboard-r18.patch;patch=1 \
+ ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
+ ${DOSRC}/tosa-tmio-r6.patch;patch=1 \
+ ${DOSRC}/tosa-power-r17.patch;patch=1 \
+ file://tosa-tmio-lcd-r10.patch;patch=1 \
+ ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \
+ ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
+ file://wm9712-suspend-cold-res-r2.patch;patch=1 \
+ file://sharpsl-pm-postresume-r1.patch;patch=1 \
+ ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \
+ ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \
+ file://wm9712-reset-loop-r2.patch;patch=1 \
+ file://tosa-lcdnoise-r1.patch;patch=1 \
+ file://wm97xx-lcdnoise-r0.patch;patch=1 "
+# ${DOSRC}/tosa-asoc-r1.patch;patch=1 "
+
+S = "${WORKDIR}/linux-2.6.21"
diff --git a/packages/linux/linux.inc b/packages/linux/linux.inc
index d4f98f0978..3ee5e227f3 100644
--- a/packages/linux/linux.inc
+++ b/packages/linux/linux.inc
@@ -18,7 +18,11 @@ KERNEL_IMAGETYPE_at32stk1000 = "uImage"
KERNEL_IMAGETYPE_at91sam9263ek = "uImage"
# Specify the commandline for you device here:
+
+#boot from mmc
CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5"
+#boot from nfs
+#CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0"
do_configure_prepend() {
echo "" > ${S}/.config
@@ -43,11 +47,11 @@ do_configure_prepend() {
do_install_prepend() {
if test -e arch/${ARCH}/boot/Image ; then
- ln -f arch/arm/boot/Image arch/arm/boot/uImage
+ ln -f arch/${ARCH}/boot/Image arch/${ARCH}/boot/uImage
fi
if test -e arch/${ARCH}/boot/images/uImage ; then
- ln -f arch/arm/boot/images/uImage arch/arm/boot/uImage
+ ln -f arch/${ARCH}/boot/images/uImage arch/${ARCH}/boot/uImage
fi
}
diff --git a/packages/lyx/lyx_1.4.4+1.5.0rc1.bb b/packages/lyx/lyx_1.4.4+1.5.0rc1.bb
new file mode 100644
index 0000000000..e080c17b72
--- /dev/null
+++ b/packages/lyx/lyx_1.4.4+1.5.0rc1.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "LyX is an advanced type setting processor - a frontend for LaTeX"
+SECTION = "x11/office"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.lyx.org"
+DEPENDS = "boost qt4-x11-free"
+RRECOMMENDS = "tetex"
+RDEPENDS = "python-shell"
+PR = "r1"
+
+DEFAULT_PREFERENCE = "-1"
+
+# we're checking out from svn because the tarball doesn't contain the necessary stuff to run autoreconf
+SRC_URI = "svn://svn.lyx.org/lyx/lyx-devel/tags;module=lyx_1_5_0rc1;rev=18613"
+S = "${WORKDIR}/lyx_1_5_0rc1"
+
+inherit autotools qt4x11
+
+EXTRA_OECONF = " --with-qt4-dir=${QTDIR} -enable-pch"
+PARALLEL_MAKE = ""
+
+do_configure_prepend() {
+ echo "NOTE: touching missing files, please report to upstream"
+ touch lib/configure.ac lib/doc/LaTeXConfig.lyx lib/textclass.lst
+}
+
+export UIC="${OE_QMAKE_UIC}"
+export MOC="${OE_QMAKE_MOC}"
diff --git a/packages/lyx/lyx_1.4.4.bb b/packages/lyx/lyx_1.4.4.bb
new file mode 100644
index 0000000000..d9156cd779
--- /dev/null
+++ b/packages/lyx/lyx_1.4.4.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "LyX is an advanced type setting processor - a frontend for LaTeX"
+SECTION = "x11/office"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.lyx.org"
+DEPENDS = "boost"
+RRECOMMENDS = "tetex"
+PR = "r0"
+
+# we're checking out from svn because the tarball doesn't contain the necessary stuff to run autoreconf
+SRC_URI = "svn://svn.lyx.org/lyx/lyx-devel/tags;module=lyx-1_4_4;rev=17185"
+S = "${WORKDIR}/lyx-1_4_4"
+
+inherit autotools qt3x11
+
+EXTRA_OECONF = "--with-frontend=qt --with-qt-dir=${QTDIR}"
+PARALLEL_MAKE = ""
+
+do_configure_prepend() {
+ echo "NOTE: touching missing files, please report to upstream"
+ touch lib/configure.ac lib/doc/LaTeXConfig.lyx lib/textclass.lst
+}
+
+export UIC="${OE_QMAKE_UIC}"
+export MOC="${OE_QMAKE_MOC}"
diff --git a/packages/madwifi/madwifi-ng_r2518-20070626.bb b/packages/madwifi/madwifi-ng_r2518-20070626.bb
new file mode 100644
index 0000000000..9f042ac926
--- /dev/null
+++ b/packages/madwifi/madwifi-ng_r2518-20070626.bb
@@ -0,0 +1,7 @@
+PR = "r0"
+
+# Disable stripping of kernel modules, since this action strips too
+# much out, and the resulting module won't load.
+INHIBIT_PACKAGE_STRIP = "1"
+
+require madwifi-ng_r.inc
diff --git a/packages/misc-binary-only/prism-firmware.bb b/packages/misc-binary-only/prism-firmware.bb
new file mode 100644
index 0000000000..fefdb0ae22
--- /dev/null
+++ b/packages/misc-binary-only/prism-firmware.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "Firmware for the Prism 2.x/3 cards"
+SECTION = "base"
+LICENSE = "closed"
+RDEPENDS = "hostap-utils"
+RREPLACES = "prism3-firmware prism3-support"
+RCONFLICTS = "prism3-firmware prism3-support"
+PACKAGE_ARCH = "all"
+PR = "r2"
+
+SRC_URI = "http://www.red-bean.com/~proski/firmware/Latest-prism.tar.bz2 \
+ file://prism-fw.sh \
+ file://hostap.rules"
+
+S = "${WORKDIR}/Latest-prism/"
+
+do_install() {
+ install -d ${D}${base_libdir}/firmware/
+ install -d ${D}${base_libdir}/udev/
+ install -d ${D}${sysconfdir}/pcmcia/
+ install -d ${D}${sysconfdir}/udev/rules.d/
+
+ install -m 0644 primary-RAM/*.hex ${D}${base_libdir}/firmware/
+ install -m 0644 secondary-RAM/rf010804.hex ${D}${base_libdir}/firmware/
+
+ install -m 0755 ${WORKDIR}/prism-fw.sh ${D}${base_libdir}/udev/
+ install -m 0644 ${WORKDIR}/hostap.rules ${D}${sysconfdir}/udev/rules.d/
+}
+
+PACKAGES = "${PN}"
+FILES_${PN} += "${base_libdir}"
diff --git a/packages/elitaire/files/.mtn2git_empty b/packages/misc-binary-only/prism-firmware/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/elitaire/files/.mtn2git_empty
+++ b/packages/misc-binary-only/prism-firmware/.mtn2git_empty
diff --git a/packages/misc-binary-only/prism-firmware/hostap.rules b/packages/misc-binary-only/prism-firmware/hostap.rules
new file mode 100644
index 0000000000..dece98ae93
--- /dev/null
+++ b/packages/misc-binary-only/prism-firmware/hostap.rules
@@ -0,0 +1,4 @@
+#
+# update firmware on Prism cards (load it to RAM, not to Flash)
+#
+SUBSYSTEM=="net", KERNEL=="wlan*" RUN="/lib/udev/prism-fw.sh"
diff --git a/packages/misc-binary-only/prism-firmware/prism-fw.sh b/packages/misc-binary-only/prism-firmware/prism-fw.sh
new file mode 100644
index 0000000000..96a2457f33
--- /dev/null
+++ b/packages/misc-binary-only/prism-firmware/prism-fw.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+CARD_ID=`/usr/sbin/hostap_diag $INTERFACE|grep NICID|awk '{print $2}'|sed -e 's/id=0x//'`
+
+# 801d cards lack even Primary firmware so we cannot use hostap_diag
+PRI=/lib/firmware/pm010102.hex
+STA=/lib/firmware/rf010804.hex
+
+if [ $CARD_ID = '800c' ] || [ $CARD_ID = '8013' ] || [ $CARD_ID = '8017' ] || \
+ [ $CARD_ID = '801b' ] || [ $CARD_ID = '8022' ] || [ $CARD_ID = '8023' ] ; then
+ PRI=/lib/firmware/ak010104.hex
+elif [ $CARD_ID = '800b' ] || [ $CARD_ID = '8012' ] || [ $CARD_ID = '8016' ] || \
+ [ $CARD_ID = '801a' ] ; then
+ PRI=/lib/firmware/af010104.hex
+elif [ $CARD_ID = '800e' ] || [ $CARD_ID = '8015' ] || [ $CARD_ID = '8019' ] || \
+ [ $CARD_ID = '801d' ] ; then
+ PRI=/lib/firmware/pm010102.hex
+fi
+
+DIR=/proc/net/hostap/wlan0
+
+if [ ! -d $DIR ]; then
+ exit 1
+fi
+
+if grep -q no_pri=1 $DIR/debug; then
+ /usr/sbin/prism2_srec -gs wlan0 $PRI
+ /usr/sbin/prism2_srec -gp wlan0 $PRI
+fi
+
+/usr/sbin/prism2_srec -rp wlan0 $STA
+
diff --git a/packages/misc-binary-only/prism3-firmware_1.8.3.bb b/packages/misc-binary-only/prism3-firmware_1.8.3.bb
deleted file mode 100644
index fb8f83afac..0000000000
--- a/packages/misc-binary-only/prism3-firmware_1.8.3.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "Firmware for the Prism3 cards"
-SECTION = "base"
-LICENSE = "Unknown"
-PR = "r3"
-
-SRC_URI = "http://www.red-bean.com/~proski/firmware/${PV}.tar.bz2 \
- http://www.red-bean.com/~proski/firmware/primary.tar.bz2"
-S = "${WORKDIR}"
-
-do_install() {
- install -d ${D}${sysconfdir}/pcmcia/
- install -m 0644 primary/pm010102.hex ${D}${sysconfdir}/pcmcia/
- install -m 0644 ${PV}/rf010803.hex ${D}${sysconfdir}/pcmcia/
- cat >${D}${sysconfdir}/pcmcia/README.prism3-firmware <<EOF
-To make a prism3 card w/ downloadable firmware work, do the following:
- 0.) Install hostap-utils
- 1.) Add "needs_reset yes" and "needs_firmware hostap_fw_load" to
- the proper interface in /etc/network/interfaces
- 2.) echo -e "#!/bin/sh\nifdown wlan0" >> /etc/apm/suspend.d/ifdown
- 3.) chmod a+rx /etc/apm/suspend.d/ifdown
- 4.) echo -e "#!/bin/sh\nifup wlan0" >> /etc/apm/resume.d/ifup
- 5.) chmod a+rx /etc/apm/suspend.d/ifup
-EOF
-}
-
-PACKAGE_ARCH = "all"
-
diff --git a/packages/misc-binary-only/prism3-firmware_1.8.4.bb b/packages/misc-binary-only/prism3-firmware_1.8.4.bb
deleted file mode 100644
index 2983ea7710..0000000000
--- a/packages/misc-binary-only/prism3-firmware_1.8.4.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-DESCRIPTION = "Firmware for the Prism3 cards"
-SECTION = "base"
-LICENSE = "Unknown"
-PR = "r0"
-
-SRC_URI = "http://www.red-bean.com/~proski/firmware/${PV}.tar.bz2 \
- http://www.red-bean.com/~proski/firmware/primary.tar.bz2"
-S = "${WORKDIR}"
-
-do_install() {
- install -d ${D}${sysconfdir}/pcmcia/
- install -m 0644 primary/pm010102.hex ${D}${sysconfdir}/pcmcia/
- install -m 0644 ${PV}/rf010804.hex ${D}${sysconfdir}/pcmcia/
- cat >${D}${sysconfdir}/pcmcia/README.prism3-firmware <<EOF
-To make a prism3 card w/ downloadable firmware work, do the following:
- 0.) Install hostap-utils
- 1.) Add "needs_reset yes" and "needs_firmware hostap_fw_load" to
- the proper interface in /etc/network/interfaces
- 2.) echo -e "#!/bin/sh\nifdown wlan0" >> /etc/apm/suspend.d/ifdown
- 3.) chmod a+rx /etc/apm/suspend.d/ifdown
- 4.) echo -e "#!/bin/sh\nifup wlan0" >> /etc/apm/resume.d/ifup
- 5.) chmod a+rx /etc/apm/suspend.d/ifup
-EOF
-}
-
-PACKAGE_ARCH = "all"
-
diff --git a/packages/mozilla/minimo/minimo-components-ssr-only.patch b/packages/mozilla/minimo/minimo-components-ssr-only.patch
new file mode 100644
index 0000000000..6fbc4de25e
--- /dev/null
+++ b/packages/mozilla/minimo/minimo-components-ssr-only.patch
@@ -0,0 +1,36 @@
+Index: mozilla/minimo/components/Makefile.in
+===================================================================
+RCS file: /cvsroot/mozilla/minimo/components/Makefile.in,v
+retrieving revision 1.1.2.2
+diff -u -r1.1.2.2 Makefile.in
+--- mozilla/minimo/components/Makefile.in 14 Jul 2006 16:04:33 -0000 1.1.2.2
++++ mozilla/minimo/components/Makefile.in 20 Sep 2006 12:55:08 -0000
+@@ -41,10 +41,10 @@
+
+ include $(DEPTH)/config/autoconf.mk
+
+-DIRS = phone softkb ssr device gps
++DIRS = ssr
+
+ ifdef WINCE
+-DIRS += ssl
++DIRS += ssl phone softkb device gps
+ endif
+
+ include $(topsrcdir)/config/rules.mk
+Index: mozilla/minimo/components/ssr/Makefile.in
+===================================================================
+RCS file: /cvsroot/mozilla/minimo/components/ssr/Makefile.in,v
+retrieving revision 1.1.2.1
+diff -u -r1.1.2.1 Makefile.in
+--- mozilla/minimo/components/ssr/Makefile.in 30 Jan 2006 18:47:01 -0000 1.1.2.1
++++ mozilla/minimo/components/ssr/Makefile.in 20 Sep 2006 14:52:46 -0000
+@@ -42,7 +42,7 @@
+
+ include $(DEPTH)/config/autoconf.mk
+
+-MODULE_NAME = ssr
++MODULE_NAME = SSRModule
+ MODULE = ssr
+ LIBRARY_NAME = ssr
+
diff --git a/packages/mozilla/minimo/minimo-disable-mode-switch.patch b/packages/mozilla/minimo/minimo-disable-mode-switch.patch
new file mode 100644
index 0000000000..50691efe0f
--- /dev/null
+++ b/packages/mozilla/minimo/minimo-disable-mode-switch.patch
@@ -0,0 +1,11 @@
+--- mozilla/widget/src/gtk2/nsWindow.cpp.orig 2007-06-12 22:19:35.000000000 +0900
++++ mozilla/widget/src/gtk2/nsWindow.cpp 2007-06-12 22:19:02.000000000 +0900
+@@ -1859,6 +1859,7 @@
+ || aEvent->keyval == GDK_Shift_R
+ || aEvent->keyval == GDK_Control_L
+ || aEvent->keyval == GDK_Control_R
++ || aEvent->keyval == GDK_Mode_switch
+ || aEvent->keyval == GDK_Alt_L
+ || aEvent->keyval == GDK_Alt_R
+ || aEvent->keyval == GDK_Meta_L
+
diff --git a/packages/mozilla/minimo_cvs.bb b/packages/mozilla/minimo_cvs.bb
index c0e8edc747..990068b41e 100644
--- a/packages/mozilla/minimo_cvs.bb
+++ b/packages/mozilla/minimo_cvs.bb
@@ -8,7 +8,7 @@ DEPENDS = "libxrender xt xft fontconfig freetype libidl dbus-glib pango atk gtk+
CVSSVR="cvs-mirror.mozilla.org"
BRTAG = "MOZILLA_1_8_BRANCH"
-MOZDATE = "20070510"
+MOZDATE = "20070626"
PV = "0.02+cvs${MOZDATE}"
PE = "1"
@@ -20,6 +20,8 @@ SRC_URI = "cvs://anonymous@${CVSSVR}/cvsroot;module=mozilla;tag=${BRTAG};date=${
file://eabi-fix.patch;patch=1 \
file://eabi-fix2.patch;patch=1 \
file://eabi-fix3.patch;patch=1 \
+ file://minimo-components-ssr-only.patch;patch=1 \
+ file://minimo-disable-mode-switch.patch;patch=1 \
file://minimo.desktop file://minimo.png"
inherit autotools
diff --git a/packages/mplayer/mplayer_0.0+1.0rc1.bb b/packages/mplayer/mplayer_0.0+1.0rc1.bb
index 23f52bcac0..6d9cd754d5 100644
--- a/packages/mplayer/mplayer_0.0+1.0rc1.bb
+++ b/packages/mplayer/mplayer_0.0+1.0rc1.bb
@@ -34,7 +34,7 @@ PACKAGE_ARCH_mencoder_collie = "collie"
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
-PR = "r13"
+PR = "r14"
PARALLEL_MAKE = ""
@@ -185,13 +185,17 @@ EXTRA_OECONF_append_hx4700 = " --enable-imageon "
#enable pxa270 overlay support
EXTRA_OECONF_append_spitz = " --enable-pxa "
+EXTRA_OECONF_append_akita = " --enable-pxa "
EXTRA_OECONF_append_a780 = " --enable-pxa "
EXTRA_OECONF_append_magician = " --enable-pxa "
EXTRA_OECONF_append_htcuniversal = " --enable-pxa "
+EXTRA_OECONF_append_palmld = " --enable-pxa "
#build with support for the iwmmxt instruction support (pxa270 and up)
TARGET_CC_ARCH_spitz = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_spitz = "iwmmxt"
+TARGET_CC_ARCH_akita = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_akita = "iwmmxt"
TARGET_CC_ARCH_a780 = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_a780 = "iwmmxt"
TARGET_CC_ARCH_hx4700 = "-march=iwmmxt -mtune=iwmmxt"
@@ -200,6 +204,8 @@ TARGET_CC_ARCH_magician = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_magician = "iwmmxt"
TARGET_CC_ARCH_htcuniversal = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_htcuniversal = "iwmmxt"
+TARGET_CC_ARCH_palmld = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_palmld = "iwmmxt"
do_configure() {
cp ${WORKDIR}/vo_w100.c ${S}/libvo
diff --git a/packages/esound/esound-gpe/.mtn2git_empty b/packages/nonworking/efl/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/esound/esound-gpe/.mtn2git_empty
+++ b/packages/nonworking/efl/.mtn2git_empty
diff --git a/packages/esound/old/.mtn2git_empty b/packages/nonworking/efl/e/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/esound/old/.mtn2git_empty
+++ b/packages/nonworking/efl/e/.mtn2git_empty
diff --git a/packages/efl/e/fix-configure.patch b/packages/nonworking/efl/e/fix-configure.patch
index 02560fd7ab..02560fd7ab 100644
--- a/packages/efl/e/fix-configure.patch
+++ b/packages/nonworking/efl/e/fix-configure.patch
diff --git a/packages/efl/ecore-fb_0.9.9.038.bb b/packages/nonworking/efl/ecore-fb_0.9.9.038.bb
index b856d38bd9..b856d38bd9 100644
--- a/packages/efl/ecore-fb_0.9.9.038.bb
+++ b/packages/nonworking/efl/ecore-fb_0.9.9.038.bb
diff --git a/packages/efl/ecore-native_0.9.9.038.bb b/packages/nonworking/efl/ecore-native_0.9.9.038.bb
index 7d7ed2370a..7d7ed2370a 100644
--- a/packages/efl/ecore-native_0.9.9.038.bb
+++ b/packages/nonworking/efl/ecore-native_0.9.9.038.bb
diff --git a/packages/efl/ecore-x11_0.9.9.038.bb b/packages/nonworking/efl/ecore-x11_0.9.9.038.bb
index 1deb641326..1deb641326 100644
--- a/packages/efl/ecore-x11_0.9.9.038.bb
+++ b/packages/nonworking/efl/ecore-x11_0.9.9.038.bb
diff --git a/packages/efl/ecore.inc b/packages/nonworking/efl/ecore.inc
index 60c18cacc3..60c18cacc3 100644
--- a/packages/efl/ecore.inc
+++ b/packages/nonworking/efl/ecore.inc
diff --git a/packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty b/packages/nonworking/efl/ecore/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-ezx-2.6.20.7/.mtn2git_empty
+++ b/packages/nonworking/efl/ecore/.mtn2git_empty
diff --git a/packages/nonworking/efl/ecore/add-tslib-support.patch b/packages/nonworking/efl/ecore/add-tslib-support.patch
new file mode 100644
index 0000000000..c125122a91
--- /dev/null
+++ b/packages/nonworking/efl/ecore/add-tslib-support.patch
@@ -0,0 +1,104 @@
+
+#
+# tslib support for ecore, (C) Michael 'Mickey' Lauer <mickey@Vanille.de>
+#
+
+--- ecore/src/lib/ecore_fb/ecore_fb.c~add-tslib-support.patch
++++ ecore/src/lib/ecore_fb/ecore_fb.c
+@@ -4,6 +4,13 @@
+ #include "Ecore_Fb.h"
+ #include "ecore_private.h"
+
++
++#ifdef HAVE_TSLIB
++#include <tslib.h>
++#include <errno.h>
++#endif
++
++
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <stdio.h>
+@@ -77,6 +84,11 @@
+ unsigned char z;
+ };
+
++#ifdef HAVE_TSLIB
++struct tsdev *_ecore_fb_tslib_tsdev = NULL;
++struct ts_sample _ecore_fb_tslib_event;
++#endif
++
+ static void _ecore_fb_size_get(int *w, int *h);
+ static int _ecore_fb_ts_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+ static int _ecore_fb_kbd_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+@@ -269,10 +281,39 @@
+ ecore_fb_init(const char *name __UNUSED__)
+ {
+ int prev_flags;
++#ifdef HAVE_TSLIB
++ char *tslib_tsdevice = NULL;
++#endif
+
+ _ecore_fb_init_count++;
+ if (_ecore_fb_init_count > 1) return _ecore_fb_init_count;
++#ifdef HAVE_TSLIB
++ if ( ( tslib_tsdevice = getenv("TSLIB_TSDEVICE") ) != NULL )
++ {
++ printf( "ECORE_FB: TSLIB_TSDEVICE = '%s'\n", tslib_tsdevice );
++ _ecore_fb_tslib_tsdev = ts_open( tslib_tsdevice, 1 ); /* 1 = nonblocking, 0 = blocking */
++
++ if ( !_ecore_fb_tslib_tsdev )
++ {
++ printf( "ECORE_FB: Can't ts_open (%s)\n", strerror( errno ) );
++ return 0;
++ }
++
++ if ( ts_config( _ecore_fb_tslib_tsdev ) )
++ {
++ printf( "ECORE_FB: Can't ts_config (%s)\n", strerror( errno ) );
++ return 0;
++ }
++ _ecore_fb_ts_fd = ts_fd( _ecore_fb_tslib_tsdev );
++ if ( _ecore_fb_ts_fd < 0 )
++ {
++ printf( "ECORE_FB: Can't open touchscreen (%s)\n", strerror( errno ) );
++ return 0;
++ }
++ }
++#else
+ _ecore_fb_ts_fd = open("/dev/touchscreen/0", O_RDONLY);
++#endif
+ if (_ecore_fb_ts_fd >= 0)
+ {
+ prev_flags = fcntl(_ecore_fb_ts_fd, F_GETFL);
+@@ -790,7 +831,21 @@
+ char *ptr;
+ double t;
+ int did_triple = 0;
+-
++
++#ifdef HAVE_TSLIB
++ if ( _ecore_fb_ts_apply_cal )
++ num = ts_read_raw( _ecore_fb_tslib_tsdev, &_ecore_fb_tslib_event, 1 );
++ else
++ num = ts_read( _ecore_fb_tslib_tsdev, &_ecore_fb_tslib_event, 1 );
++ if ( num != 1 )
++ {
++ return 1; /* no more samples at this time */
++ }
++ x = _ecore_fb_tslib_event.x;
++ y = _ecore_fb_tslib_event.y;
++ pressure = _ecore_fb_tslib_event.pressure;
++ v = 1; /* loop, there might be more samples */
++#else
+ ptr = (char *)&(_ecore_fb_ts_event);
+ ptr += _ecore_fb_ts_event_byte_count;
+ num = sizeof(Ecore_Fb_Ts_Event) - _ecore_fb_ts_event_byte_count;
+@@ -811,6 +866,7 @@
+ y = _ecore_fb_ts_event.y;
+ }
+ pressure = _ecore_fb_ts_event.pressure;
++#endif
+ /* add event to queue */
+ /* always add a move event */
+ if ((pressure) || (prev_pressure))
diff --git a/packages/nonworking/efl/ecore/configure-abstract-sockets.patch b/packages/nonworking/efl/ecore/configure-abstract-sockets.patch
new file mode 100644
index 0000000000..359203b163
--- /dev/null
+++ b/packages/nonworking/efl/ecore/configure-abstract-sockets.patch
@@ -0,0 +1,16 @@
+Index: ecore-0.9.9.038/configure.in
+===================================================================
+--- ecore-0.9.9.038.orig/configure.in
++++ ecore-0.9.9.038/configure.in
+@@ -541,10 +541,7 @@ AC_ARG_ENABLE(abstract-sockets,
+ [ want_abstract_sockets="yes"]
+ )
+ if test "x$want_abstract_sockets" = "xyes"; then
+- AC_ABSTRACT_SOCKET_TEST(
+- [AC_DEFINE(HAVE_ABSTRACT_SOCKETS, 1, [Have abstract sockets namespace])],
+- []
+- )
++ HAVE_ABSTRACT_SOCKETS = 1
+ fi
+
+ ECORE_CHECK_MODULE([Con], [yes])
diff --git a/packages/nonworking/efl/ecore/configure.patch b/packages/nonworking/efl/ecore/configure.patch
new file mode 100644
index 0000000000..23d8193b44
--- /dev/null
+++ b/packages/nonworking/efl/ecore/configure.patch
@@ -0,0 +1,21 @@
+--- ecore-0.9.9.036/configure.in.bak 2006-11-13 14:01:10.000000000 -0800
++++ ecore-0.9.9.036/configure.in 2006-11-13 14:02:15.000000000 -0800
+@@ -16,7 +16,6 @@
+ AC_CHECK_SIZEOF(long, 4)
+ AM_ENABLE_SHARED
+ AM_PROG_LIBTOOL
+-AC_C___ATTRIBUTE__
+
+ if test "x${bindir}" = 'xNONE'; then
+ if test "x${prefix}" = "xNONE"; then
+@@ -200,9 +199,7 @@
+ AM_CONDITIONAL(BUILD_ECORE_X, true)
+ AC_DEFINE(BUILD_ECORE_X, 1, [Build Ecore_X Module])
+ have_ecore_x="yes"
+- x_dir=${x_dir:-/usr/X11R6}
+- x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+- x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
++ x_libs="-lX11 -lXext"
+ ecore_x_libs="-lecore_x $x_libs";
+ ],[
+ AM_CONDITIONAL(BUILD_ECORE_X, false)
diff --git a/packages/nonworking/efl/ecore/ecore_kernel_input_header.patch b/packages/nonworking/efl/ecore/ecore_kernel_input_header.patch
new file mode 100644
index 0000000000..99f57ddcff
--- /dev/null
+++ b/packages/nonworking/efl/ecore/ecore_kernel_input_header.patch
@@ -0,0 +1,23 @@
+Index: ecore-0.9.9.036/src/lib/ecore_fb/ecore_fb_li.c
+===================================================================
+--- ecore-0.9.9.036.orig/src/lib/ecore_fb/ecore_fb_li.c 2006-09-05 01:36:43.000000000 +0100
++++ ecore-0.9.9.036/src/lib/ecore_fb/ecore_fb_li.c 2006-12-02 21:55:54.000000000 +0000
+@@ -1,6 +1,18 @@
+ #include "Ecore_Fb.h"
+ #include "ecore_fb_private.h"
+
++struct input_absinfo {
++ __s32 value;
++ __s32 minimum;
++ __s32 maximum;
++ __s32 fuzz;
++ __s32 flat;
++};
++
++
++#define EV_SYN 0x00
++#define EV_PWR 0x16
++#define EV_FF_STATUS 0x17
+
+ /* Copyright (C) Brad Hards (1999-2002).
+ * this macro is used to tell if "bit" is set in "array"
diff --git a/packages/efl/ecore/fix-tslib-configure.patch b/packages/nonworking/efl/ecore/fix-tslib-configure.patch
index 2c82b2741e..2c82b2741e 100644
--- a/packages/efl/ecore/fix-tslib-configure.patch
+++ b/packages/nonworking/efl/ecore/fix-tslib-configure.patch
diff --git a/packages/nonworking/efl/ecore/remove-bad-code.patch b/packages/nonworking/efl/ecore/remove-bad-code.patch
new file mode 100644
index 0000000000..87a8d16bd6
--- /dev/null
+++ b/packages/nonworking/efl/ecore/remove-bad-code.patch
@@ -0,0 +1,36 @@
+Index: ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_private.h
+===================================================================
+--- ecore-0.9.9.037.orig/src/lib/ecore_fb/ecore_fb_private.h
++++ ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_private.h
+@@ -19,8 +19,8 @@
+ #define kernel_ulong_t unsigned long
+ #define BITS_PER_LONG 32
+ #include <linux/input.h>
+- #undef kernel_ulong_t <-added
+- #undef BITS_PER_LONG <-added
++ #undef kernel_ulong_t
++ #undef BITS_PER_LONG
+ #else
+ #include <linux/input.h>
+ #endif
+Index: ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_li.c
+===================================================================
+--- ecore-0.9.9.037.orig/src/lib/ecore_fb/ecore_fb_li.c
++++ ecore-0.9.9.037/src/lib/ecore_fb/ecore_fb_li.c
+@@ -1,6 +1,6 @@
+ #include "Ecore_Fb.h"
+ #include "ecore_fb_private.h"
+-
++/*
+ struct input_absinfo {
+ __s32 value;
+ __s32 minimum;
+@@ -8,7 +8,7 @@ struct input_absinfo {
+ __s32 fuzz;
+ __s32 flat;
+ };
+-
++*/
+
+ #define EV_SYN 0x00
+ #define EV_PWR 0x16
diff --git a/packages/efl/ecore/remove-tslib-configure.patch b/packages/nonworking/efl/ecore/remove-tslib-configure.patch
index 40ed1c2c33..40ed1c2c33 100644
--- a/packages/efl/ecore/remove-tslib-configure.patch
+++ b/packages/nonworking/efl/ecore/remove-tslib-configure.patch
diff --git a/packages/prism3-support/.mtn2git_empty b/packages/nonworking/efl/edb-native/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/prism3-support/.mtn2git_empty
+++ b/packages/nonworking/efl/edb-native/.mtn2git_empty
diff --git a/packages/efl/edb-native/no-gtk-forkbomb.patch b/packages/nonworking/efl/edb-native/no-gtk-forkbomb.patch
index 8fe226846e..8fe226846e 100644
--- a/packages/efl/edb-native/no-gtk-forkbomb.patch
+++ b/packages/nonworking/efl/edb-native/no-gtk-forkbomb.patch
diff --git a/packages/efl/edb-native_1.0.5.007.bb b/packages/nonworking/efl/edb-native_1.0.5.007.bb
index f3f94086ce..f3f94086ce 100644
--- a/packages/efl/edb-native_1.0.5.007.bb
+++ b/packages/nonworking/efl/edb-native_1.0.5.007.bb
diff --git a/packages/efl/edb-utils_1.0.5.007.bb b/packages/nonworking/efl/edb-utils_1.0.5.007.bb
index 8d47e068a7..8d47e068a7 100644
--- a/packages/efl/edb-utils_1.0.5.007.bb
+++ b/packages/nonworking/efl/edb-utils_1.0.5.007.bb
diff --git a/packages/efl/edb_1.0.5.007.bb b/packages/nonworking/efl/edb_1.0.5.007.bb
index 9632fc4acc..9632fc4acc 100644
--- a/packages/efl/edb_1.0.5.007.bb
+++ b/packages/nonworking/efl/edb_1.0.5.007.bb
diff --git a/packages/efl/edje-native_0.5.0.038.bb b/packages/nonworking/efl/edje-native_0.5.0.038.bb
index 4e878ab204..4e878ab204 100644
--- a/packages/efl/edje-native_0.5.0.038.bb
+++ b/packages/nonworking/efl/edje-native_0.5.0.038.bb
diff --git a/packages/efl/edje-utils_0.5.0.038.bb b/packages/nonworking/efl/edje-utils_0.5.0.038.bb
index f8eb917e4d..f8eb917e4d 100644
--- a/packages/efl/edje-utils_0.5.0.038.bb
+++ b/packages/nonworking/efl/edje-utils_0.5.0.038.bb
diff --git a/packages/efl/edje_0.5.0.038.bb b/packages/nonworking/efl/edje_0.5.0.038.bb
index d51dd119e4..d51dd119e4 100644
--- a/packages/efl/edje_0.5.0.038.bb
+++ b/packages/nonworking/efl/edje_0.5.0.038.bb
diff --git a/packages/nonworking/efl/eet-native_0.9.10.038.bb b/packages/nonworking/efl/eet-native_0.9.10.038.bb
new file mode 100644
index 0000000000..9e2426ca9f
--- /dev/null
+++ b/packages/nonworking/efl/eet-native_0.9.10.038.bb
@@ -0,0 +1,4 @@
+require eet_${PV}.bb
+inherit native
+DEPENDS = "zlib-native jpeg-native"
+
diff --git a/packages/efl/eet_0.9.10.038.bb b/packages/nonworking/efl/eet_0.9.10.038.bb
index 6e6032e098..6e6032e098 100644
--- a/packages/efl/eet_0.9.10.038.bb
+++ b/packages/nonworking/efl/eet_0.9.10.038.bb
diff --git a/packages/nonworking/efl/efl.bbclass b/packages/nonworking/efl/efl.bbclass
new file mode 100644
index 0000000000..808bf2eaae
--- /dev/null
+++ b/packages/nonworking/efl/efl.bbclass
@@ -0,0 +1,52 @@
+inherit e
+
+SECTION = "e/libs"
+
+SRCNAME = "${@bb.data.getVar('PN', d, 1).replace('-native', '')}"
+SRC_URI = "${E_URI}/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+INHIBIT_AUTO_STAGE_INCLUDES = "1"
+INHIBIT_NATIVE_STAGE_INSTALL = "1"
+
+libdirectory = "src/lib"
+libraries = "lib${SRCNAME}"
+headers = "${@bb.data.getVar('SRCNAME',d,1).capitalize()}.h"
+
+def efl_is_native(d):
+ import bb
+ return ["","-native"][bb.data.inherits_class('native', d)]
+
+do_stage_append () {
+ for i in ${libraries}
+ do
+ oe_libinstall -C ${libdirectory} $i ${STAGING_LIBDIR}
+ done
+ for i in ${headers}
+ do
+ install -m 0644 ${libdirectory}/$i ${STAGING_INCDIR}
+ done
+
+ # Install binaries automatically for native builds
+ if [ "${@efl_is_native(d)}" = "-native" ]
+ then
+
+ # Most EFL binaries start with the package name
+ for i in src/bin/${SRCNAME}*
+ do
+ if [ -x $i -a -f $i ]
+ then
+
+ # Don't install anything with an extension (.so, etc)
+ if echo $i | grep -v \\.
+ then
+ ${HOST_SYS}-libtool --mode=install install -m 0755 $i ${STAGING_BINDIR}
+ fi
+ fi
+ done
+ fi
+}
+
+PACKAGES = "${PN}-dbg ${PN} ${PN}-themes ${PN}-dev ${PN}-examples"
+FILES_${PN}-dev += "${bindir}/${PN}-config ${libdir}/pkgconfig ${libdir}/lib*.?a ${libdir}/lib*.a"
+FILES_${PN}-examples = "${bindir} ${datadir}"
diff --git a/packages/efl/efreet-native_0.0.3.002.bb b/packages/nonworking/efl/efreet-native_0.0.3.002.bb
index 470d9e2dab..470d9e2dab 100644
--- a/packages/efl/efreet-native_0.0.3.002.bb
+++ b/packages/nonworking/efl/efreet-native_0.0.3.002.bb
diff --git a/packages/efl/efreet_0.0.3.002.bb b/packages/nonworking/efl/efreet_0.0.3.002.bb
index 2ef049eed7..2ef049eed7 100644
--- a/packages/efl/efreet_0.0.3.002.bb
+++ b/packages/nonworking/efl/efreet_0.0.3.002.bb
diff --git a/packages/efl/embryo-native_0.9.1.038.bb b/packages/nonworking/efl/embryo-native_0.9.1.038.bb
index 76fe80fe3d..76fe80fe3d 100644
--- a/packages/efl/embryo-native_0.9.1.038.bb
+++ b/packages/nonworking/efl/embryo-native_0.9.1.038.bb
diff --git a/packages/efl/embryo-utils_0.9.1.038.bb b/packages/nonworking/efl/embryo-utils_0.9.1.038.bb
index d507c53cce..d507c53cce 100644
--- a/packages/efl/embryo-utils_0.9.1.038.bb
+++ b/packages/nonworking/efl/embryo-utils_0.9.1.038.bb
diff --git a/packages/efl/embryo_0.9.1.038.bb b/packages/nonworking/efl/embryo_0.9.1.038.bb
index 0009c0a149..0009c0a149 100644
--- a/packages/efl/embryo_0.9.1.038.bb
+++ b/packages/nonworking/efl/embryo_0.9.1.038.bb
diff --git a/packages/efl/emotion_20061116.bb b/packages/nonworking/efl/emotion_20061116.bb
index 59a3fa7269..59a3fa7269 100644
--- a/packages/efl/emotion_20061116.bb
+++ b/packages/nonworking/efl/emotion_20061116.bb
diff --git a/packages/efl/engrave_20060128.bb b/packages/nonworking/efl/engrave_20060128.bb
index 63eb24eb1f..63eb24eb1f 100644
--- a/packages/efl/engrave_20060128.bb
+++ b/packages/nonworking/efl/engrave_20060128.bb
diff --git a/packages/efl/epdf_20060418.bb b/packages/nonworking/efl/epdf_20060418.bb
index 9f7bd0a255..9f7bd0a255 100644
--- a/packages/efl/epdf_20060418.bb
+++ b/packages/nonworking/efl/epdf_20060418.bb
diff --git a/packages/efl/epeg_0.9.0.008.bb b/packages/nonworking/efl/epeg_0.9.0.008.bb
index c35ec63606..c35ec63606 100644
--- a/packages/efl/epeg_0.9.0.008.bb
+++ b/packages/nonworking/efl/epeg_0.9.0.008.bb
diff --git a/packages/prism3-support/files/.mtn2git_empty b/packages/nonworking/efl/epsilon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/prism3-support/files/.mtn2git_empty
+++ b/packages/nonworking/efl/epsilon/.mtn2git_empty
diff --git a/packages/nonworking/efl/epsilon/compile-fix.patch b/packages/nonworking/efl/epsilon/compile-fix.patch
new file mode 100644
index 0000000000..1c42cc59c4
--- /dev/null
+++ b/packages/nonworking/efl/epsilon/compile-fix.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- epsilon-0.3.0.004/src/lib/exiftags/exif.c~compile-fix
++++ epsilon-0.3.0.004/src/lib/exiftags/exif.c
+@@ -48,7 +48,6 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <errno.h>
+-#include <math.h>
+ #include <float.h>
+ #include <ctype.h>
+
diff --git a/packages/nonworking/efl/epsilon/server-is-not-client.patch b/packages/nonworking/efl/epsilon/server-is-not-client.patch
new file mode 100644
index 0000000000..e96e528b9e
--- /dev/null
+++ b/packages/nonworking/efl/epsilon/server-is-not-client.patch
@@ -0,0 +1,11 @@
+--- /tmp/epsilon_private.h 2006-12-01 12:06:30.000000000 +0100
++++ epsilon-0.3.0.007/src/include/epsilon_private.h 2006-12-01 12:07:10.928254000 +0100
+@@ -41,7 +41,7 @@
+ Epsilon_Message *epsilon_message_new(int clientid, char *path, char *dst, int status);
+
+ int epsilon_ipc_client_send(Ecore_Con_Client *cl, Epsilon_Message *msg);
+-int epsilon_ipc_server_send(Ecore_Con_Client *cl, Epsilon_Message *msg);
++int epsilon_ipc_server_send(Ecore_Con_Server *srv, Epsilon_Message *msg);
+
+ Epsilon_Message *epsilon_ipc_consume(Epsilon_Ipc_End *end);
+
diff --git a/packages/nonworking/efl/epsilon_0.3.0.008.bb b/packages/nonworking/efl/epsilon_0.3.0.008.bb
new file mode 100644
index 0000000000..d3c1cba1e4
--- /dev/null
+++ b/packages/nonworking/efl/epsilon_0.3.0.008.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Epsilon is a flexable and powerful image thumbnailing library \
+that is complient with the freedesktop.org Thumbnail Managing Standard."
+LICENSE = "GPL"
+DEPENDS = "imlib2 epeg libpng evas ecore edje perl-native"
+PR = "r0"
+
+inherit efl1
+
+#SRC_URI += "file://compile-fix.patch;patch=1 \
+# ${E_CVS};module=e17/libs/epsilon/m4;date=20060101"
+# file://server-is-not-client.patch;patch=1 \
+
+#do_configure_prepend() {
+# install -d "${S}/m4"
+# install "${WORKDIR}/m4/"*.m4 "${S}/m4"
+# aclocal -I m4
+#}
diff --git a/packages/efl/esmart-fb_0.9.0.008.bb b/packages/nonworking/efl/esmart-fb_0.9.0.008.bb
index a2fab3ca09..a2fab3ca09 100644
--- a/packages/efl/esmart-fb_0.9.0.008.bb
+++ b/packages/nonworking/efl/esmart-fb_0.9.0.008.bb
diff --git a/packages/efl/esmart-x11_0.9.0.008.bb b/packages/nonworking/efl/esmart-x11_0.9.0.008.bb
index 7b80b581a1..7b80b581a1 100644
--- a/packages/efl/esmart-x11_0.9.0.008.bb
+++ b/packages/nonworking/efl/esmart-x11_0.9.0.008.bb
diff --git a/packages/efl/esmart.inc b/packages/nonworking/efl/esmart.inc
index 9b8114de53..9b8114de53 100644
--- a/packages/efl/esmart.inc
+++ b/packages/nonworking/efl/esmart.inc
diff --git a/packages/s3c2410-utils/files/.mtn2git_empty b/packages/nonworking/efl/esmart/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/s3c2410-utils/files/.mtn2git_empty
+++ b/packages/nonworking/efl/esmart/.mtn2git_empty
diff --git a/packages/efl/esmart/compile-fix.patch b/packages/nonworking/efl/esmart/compile-fix.patch
index 08ca835aa7..08ca835aa7 100644
--- a/packages/efl/esmart/compile-fix.patch
+++ b/packages/nonworking/efl/esmart/compile-fix.patch
diff --git a/packages/efl/esmart/disable-x-only-features.patch b/packages/nonworking/efl/esmart/disable-x-only-features.patch
index 68dd363f74..68dd363f74 100644
--- a/packages/efl/esmart/disable-x-only-features.patch
+++ b/packages/nonworking/efl/esmart/disable-x-only-features.patch
diff --git a/packages/efl/esmart/ecore-fix.patch b/packages/nonworking/efl/esmart/ecore-fix.patch
index 94deff0b95..94deff0b95 100644
--- a/packages/efl/esmart/ecore-fix.patch
+++ b/packages/nonworking/efl/esmart/ecore-fix.patch
diff --git a/packages/efl/esmart/include-stdio.patch b/packages/nonworking/efl/esmart/include-stdio.patch
index 20a490f421..20a490f421 100644
--- a/packages/efl/esmart/include-stdio.patch
+++ b/packages/nonworking/efl/esmart/include-stdio.patch
diff --git a/packages/efl/etk_0.1.0.003.bb b/packages/nonworking/efl/etk_0.1.0.003.bb
index e283adef23..e283adef23 100644
--- a/packages/efl/etk_0.1.0.003.bb
+++ b/packages/nonworking/efl/etk_0.1.0.003.bb
diff --git a/packages/efl/evas-fb_0.9.9.038.bb b/packages/nonworking/efl/evas-fb_0.9.9.038.bb
index 4acc857982..4acc857982 100644
--- a/packages/efl/evas-fb_0.9.9.038.bb
+++ b/packages/nonworking/efl/evas-fb_0.9.9.038.bb
diff --git a/packages/efl/evas-native_0.9.9.038.bb b/packages/nonworking/efl/evas-native_0.9.9.038.bb
index 68dacbc809..68dacbc809 100644
--- a/packages/efl/evas-native_0.9.9.038.bb
+++ b/packages/nonworking/efl/evas-native_0.9.9.038.bb
diff --git a/packages/efl/evas-x11_0.9.9.038.bb b/packages/nonworking/efl/evas-x11_0.9.9.038.bb
index 4c5ef29515..4c5ef29515 100644
--- a/packages/efl/evas-x11_0.9.9.038.bb
+++ b/packages/nonworking/efl/evas-x11_0.9.9.038.bb
diff --git a/packages/efl/evas.inc b/packages/nonworking/efl/evas.inc
index a175099c31..a175099c31 100644
--- a/packages/efl/evas.inc
+++ b/packages/nonworking/efl/evas.inc
diff --git a/packages/nonworking/efl/evas/.mtn2git_empty b/packages/nonworking/efl/evas/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/nonworking/efl/evas/.mtn2git_empty
diff --git a/packages/nonworking/efl/evas/fix-configure.patch b/packages/nonworking/efl/evas/fix-configure.patch
new file mode 100644
index 0000000000..abf9b94bdf
--- /dev/null
+++ b/packages/nonworking/efl/evas/fix-configure.patch
@@ -0,0 +1,36 @@
+diff -Nur evas-0.9.9.037~/configure.in evas-0.9.9.037/configure.in
+--- evas-0.9.9.037~/configure.in 2007-01-14 20:09:57.000000000 -0800
++++ evas-0.9.9.037/configure.in 2007-01-14 20:11:09.000000000 -0800
+@@ -161,9 +161,7 @@
+ AC_CHECK_HEADER(X11/X.h,
+ [
+ AC_DEFINE(BUILD_ENGINE_SOFTWARE_X11, 1, [Software X11 Rendering Backend])
+- x_dir=${x_dir:-/usr/X11R6}
+- x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+- x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
++ x_libs="-lX11 -lXext"
+ ],
+ [
+ AC_MSG_RESULT(disabling software X11 engine)
+@@ -407,10 +405,10 @@
+ AC_DEFINE(BUILD_ENGINE_GL_X11, 1, [OpenGL X11 Rendering Backend])
+ AM_CONDITIONAL(BUILD_ENGINE_GL_COMMON, true)
+ AC_DEFINE(BUILD_ENGINE_GL_COMMON, 1, [Generic OpenGL Rendering Support])
+- x_dir=${x_dir:-/usr/X11R6};
++ x_dir=${x_dir:-};
+ x_cflags=${x_cflags:--I$x_dir/include}
+ x_libs="${x_libs:--L$x_dir/lib -lX11 -lXext}"
+- gl_cflags="-I/usr/include"
++ gl_cflags=""
+ gl_libs="-lGL -lGLU -lpthread"
+ gl_dir=""
+ ], [
+@@ -471,7 +469,7 @@
+ AC_DEFINE(BUILD_ENGINE_CAIRO_X11, 1, [Cairo X11 Rendering Backend])
+ AM_CONDITIONAL(BUILD_ENGINE_CAIRO_COMMON, true)
+ AC_DEFINE(BUILD_ENGINE_CAIRO_COMMON, 1, [Generic Cairo Rendering Support])
+- x_dir="/usr/X11R6";
++ x_dir="";
+ x_cflags="-I"$x_dir"/include"
+ x_libs="-L"$x_dir"/lib -lX11 -lXext"
+ ], [
diff --git a/packages/nonworking/efl/evas/pagesize.patch b/packages/nonworking/efl/evas/pagesize.patch
new file mode 100644
index 0000000000..5efd16a96e
--- /dev/null
+++ b/packages/nonworking/efl/evas/pagesize.patch
@@ -0,0 +1,13 @@
+diff --git a/src/modules/engines/fb/evas_fb_main.c b/src/modules/engines/fb/evas_fb_main.c
+index e26c171..75e0743 100644
+--- a/src/modules/engines/fb/evas_fb_main.c
++++ b/src/modules/engines/fb/evas_fb_main.c
+@@ -530,7 +530,7 @@ fb_postinit(FB_Mode *mode)
+ fb_cleanup();
+ exit(1);
+ }
+- mode->mem_offset = (unsigned)(fb_fix.smem_start) & (~PAGE_MASK);
++ mode->mem_offset = (unsigned)(fb_fix.smem_start) & (getpagesize()-1);
+ mode->mem = (unsigned char *)mmap(NULL, fb_fix.smem_len + mode->mem_offset,
+ PROT_WRITE | PROT_READ, MAP_SHARED, fb, 0);
+ if ((int)mode->mem == -1)
diff --git a/packages/nonworking/efl/ewl/.mtn2git_empty b/packages/nonworking/efl/ewl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/nonworking/efl/ewl/.mtn2git_empty
diff --git a/packages/efl/ewl/ewl-configure.patch b/packages/nonworking/efl/ewl/ewl-configure.patch
index a754e0f819..a754e0f819 100644
--- a/packages/efl/ewl/ewl-configure.patch
+++ b/packages/nonworking/efl/ewl/ewl-configure.patch
diff --git a/packages/efl/ewl/minmax.patch b/packages/nonworking/efl/ewl/minmax.patch
index cd8723e9a3..cd8723e9a3 100644
--- a/packages/efl/ewl/minmax.patch
+++ b/packages/nonworking/efl/ewl/minmax.patch
diff --git a/packages/efl/ewl/no-examples.patch b/packages/nonworking/efl/ewl/no-examples.patch
index 402c50894c..402c50894c 100644
--- a/packages/efl/ewl/no-examples.patch
+++ b/packages/nonworking/efl/ewl/no-examples.patch
diff --git a/packages/efl/ewl_0.5.1.008.bb b/packages/nonworking/efl/ewl_0.5.1.008.bb
index 3a9313cb59..3a9313cb59 100644
--- a/packages/efl/ewl_0.5.1.008.bb
+++ b/packages/nonworking/efl/ewl_0.5.1.008.bb
diff --git a/packages/nonworking/efl/files/.mtn2git_empty b/packages/nonworking/efl/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/nonworking/efl/files/.mtn2git_empty
diff --git a/packages/efl/files/pkg.m4 b/packages/nonworking/efl/files/pkg.m4
index c80e0acfc4..c80e0acfc4 100644
--- a/packages/efl/files/pkg.m4
+++ b/packages/nonworking/efl/files/pkg.m4
diff --git a/packages/efl/imlib2-fb_1.3.0.001.bb b/packages/nonworking/efl/imlib2-fb_1.3.0.001.bb
index f2ee48f5d9..f2ee48f5d9 100644
--- a/packages/efl/imlib2-fb_1.3.0.001.bb
+++ b/packages/nonworking/efl/imlib2-fb_1.3.0.001.bb
diff --git a/packages/efl/imlib2-native_1.3.0.001.bb b/packages/nonworking/efl/imlib2-native_1.3.0.001.bb
index 65c5b672b2..65c5b672b2 100644
--- a/packages/efl/imlib2-native_1.3.0.001.bb
+++ b/packages/nonworking/efl/imlib2-native_1.3.0.001.bb
diff --git a/packages/efl/imlib2-x11_1.3.0.001.bb b/packages/nonworking/efl/imlib2-x11_1.3.0.001.bb
index 67ed947e08..67ed947e08 100644
--- a/packages/efl/imlib2-x11_1.3.0.001.bb
+++ b/packages/nonworking/efl/imlib2-x11_1.3.0.001.bb
diff --git a/packages/efl/imlib2.inc b/packages/nonworking/efl/imlib2.inc
index 6a040c5386..6a040c5386 100644
--- a/packages/efl/imlib2.inc
+++ b/packages/nonworking/efl/imlib2.inc
diff --git a/packages/openocd/files/.mtn2git_empty b/packages/openocd/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openocd/files/.mtn2git_empty
diff --git a/packages/openocd/files/openocd-link-static.patch b/packages/openocd/files/openocd-link-static.patch
new file mode 100644
index 0000000000..8a686efe5d
--- /dev/null
+++ b/packages/openocd/files/openocd-link-static.patch
@@ -0,0 +1,20 @@
+--- openocd/src/Makefile.am.orig 2007-03-01 11:51:41.000000000 -0300
++++ openocd/src/Makefile.am 2007-03-01 11:58:08.000000000 -0300
+@@ -7,7 +7,7 @@
+ -I$(top_srcdir)/src/flash -I$(top_srcdir)/src/pld $(all_includes)
+
+ # the library search path.
+-openocd_LDFLAGS = $(all_libraries)
++openocd_LDFLAGS = -static $(all_libraries)
+ SUBDIRS = helper jtag xsvf target server flash pld
+
+ if IS_MINGW
+@@ -17,7 +17,7 @@
+ endif
+
+ if FT2232_LIBFTDI
+-FTDI2232LIB = -lftdi
++FTDI2232LIB = -lftdi -lusb
+ else
+ FTDI2232LIB =
+ endif
diff --git a/packages/openocd/openocd-native_svn.bb b/packages/openocd/openocd-native_svn.bb
index 5e77400671..4ab1d37fe2 100644
--- a/packages/openocd/openocd-native_svn.bb
+++ b/packages/openocd/openocd-native_svn.bb
@@ -3,8 +3,15 @@ require openocd_${PV}.bb
inherit native
DEPENDS = "libftdi-native"
+EXTRA_OECONF = "--enable-ft2232_libftdi --enable-parport-ppdev"
do_stage() {
- install -m 0755 src/openocd ${STAGING_BINDIR}
+ install -m 0755 src/openocd ${STAGING_BINDIR_NATIVE}
}
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0755 src/openocd ${DEPLOY_DIR_IMAGE}/openocd
+}
+
+addtask deploy before do_package after do_install
diff --git a/packages/openocd/openocd_svn.bb b/packages/openocd/openocd_svn.bb
index ccbf8951fb..ebe234aca5 100644
--- a/packages/openocd/openocd_svn.bb
+++ b/packages/openocd/openocd_svn.bb
@@ -3,12 +3,10 @@ HOMEPAGE = "http://openocd.berlios.de/"
LICENSE = "GPL"
PV = "0.0+svn${SRCDATE}"
-DEPENDS = "libftdi"
-
-SRC_URI = "svn://svn.berlios.de/;module=openocd"
-
-S = "${WORKDIR}/openocd/trunk"
-
inherit autotools
-EXTRA_OECONF = "--enable-ft2232_libftdi --enable-parport-ppdev"
+SRC_URI = "svn://svn.berlios.de/openocd;module=trunk \
+ file://openocd-link-static.patch;patch=1"
+S = "${WORKDIR}/trunk"
+
+EXTRA_OECONF = " --disable-ftdi2232 --disable-ftd2xx"
diff --git a/packages/pcmciautils/pcmciautils/.mtn2git_empty b/packages/pcmciautils/pcmciautils/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pcmciautils/pcmciautils/.mtn2git_empty
diff --git a/packages/pcmciautils/pcmciautils/modalias_update.patch b/packages/pcmciautils/pcmciautils/modalias_update.patch
new file mode 100644
index 0000000000..5727442b59
--- /dev/null
+++ b/packages/pcmciautils/pcmciautils/modalias_update.patch
@@ -0,0 +1,56 @@
+From: Miklos Vajna <vmiklos@frugalware.org>
+Date: Fri, 3 Nov 2006 16:33:38 +0000 (-0500)
+Subject: [PATCH] fix for udev-094
+X-Git-Url: http://git.kernel.org/?p=linux%2Fpcmcia%2Fpcmciautils.git;a=commitdiff_plain;h=3a5217492c1f95711b30f4e27c51563dff6ceb3e
+
+[PATCH] fix for udev-094
+
+from udev's release notes:
+
+"udev 094
+========
+The built-in MODALIAS key and substitution is removed.
+(...)
+udev 080
+========
+(...)
+MODALIAS and $modalias is not needed and will be removed from one of
+the next udev versions, replace it in all rules with ENV{MODALIAS} or
+the sysfs "modalias" value."
+
+here is a patch to fix this issue
+
+Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+---
+
+diff --git a/udev/rules-base b/udev/rules-base
+index c6d14de..6ed3a27 100644
+--- a/udev/rules-base
++++ b/udev/rules-base
+@@ -3,12 +3,12 @@
+ # are so broken that we need to read out random bytes of it
+ # instead of the manufactor, card or product ID. Then the
+ # matching is done in userspace.
+-ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="?*", \
++ACTION=="add", SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \
+ RUN+="/sbin/pcmcia-check-broken-cis"
+
+ # However, the "weak" matching by func_id is only allowed _after_ modprobe
+ # returns, so that "strong" matches have a higher priority.
+-ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="?*", \
++ACTION=="add", SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \
+ RUN+="/bin/sh -c 'echo 1 > /sys/$devpath/allow_func_id_match'"
+
+ # PCMCIA sockets:
+diff --git a/udev/rules-modprobe b/udev/rules-modprobe
+index ea1f44a..a13b2ad 100644
+--- a/udev/rules-modprobe
++++ b/udev/rules-modprobe
+@@ -1,3 +1,3 @@
+-# modprobe $modalias loads all possibly appropriate modules
+-ACTION=="add", SUBSYSTEM=="pcmcia", MODALIAS=="?*", \
+- RUN+="/sbin/modprobe $modalias"
++# modprobe $env{MODALIAS} loads all possibly appropriate modules
++ACTION=="add", SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \
++ RUN+="/sbin/modprobe $env{MODALIAS}"
diff --git a/packages/pcmciautils/pcmciautils_013.bb b/packages/pcmciautils/pcmciautils_013.bb
index 17abe5dc9b..72a78b0780 100644
--- a/packages/pcmciautils/pcmciautils_013.bb
+++ b/packages/pcmciautils/pcmciautils_013.bb
@@ -1,6 +1,7 @@
require pcmciautils.inc
-PR = "r0"
+PR = "r1"
SRC_URI += "file://makefile_fix.patch;patch=1 \
- file://version_workaround.patch;patch=1"
+ file://version_workaround.patch;patch=1 \
+ file://modalias_update.patch;patch=1"
diff --git a/packages/pcmciautils/pcmciautils_014.bb b/packages/pcmciautils/pcmciautils_014.bb
index 17abe5dc9b..72a78b0780 100644
--- a/packages/pcmciautils/pcmciautils_014.bb
+++ b/packages/pcmciautils/pcmciautils_014.bb
@@ -1,6 +1,7 @@
require pcmciautils.inc
-PR = "r0"
+PR = "r1"
SRC_URI += "file://makefile_fix.patch;patch=1 \
- file://version_workaround.patch;patch=1"
+ file://version_workaround.patch;patch=1 \
+ file://modalias_update.patch;patch=1"
diff --git a/packages/pimlico/dates_0.4.2.bb b/packages/pimlico/dates_0.4.3.bb
index 51d3acc9ed..86f548916e 100644
--- a/packages/pimlico/dates_0.4.2.bb
+++ b/packages/pimlico/dates_0.4.3.bb
@@ -1,5 +1,5 @@
require dates.inc
-PR = "r1"
+PR = "r0"
SRC_URI = "http://projects.o-hand.com/sources/dates/dates-${PV}.tar.gz"
diff --git a/packages/pimlico/tasks_0.4.bb b/packages/pimlico/tasks_0.4.bb
deleted file mode 100644
index 391828430a..0000000000
--- a/packages/pimlico/tasks_0.4.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require tasks.inc
-
-PR = "r2"
-
-SRC_URI = "http://pimlico-project.org/sources/${PN}/${PN}-${PV}.tar.gz \
- file://tasks-single.diff;patch=1"
diff --git a/packages/pimlico/tasks_0.5.bb b/packages/pimlico/tasks_0.9.bb
index d3e1b695e9..d3e1b695e9 100644
--- a/packages/pimlico/tasks_0.5.bb
+++ b/packages/pimlico/tasks_0.9.bb
diff --git a/packages/prism3-support/files/hostap-fw-load b/packages/prism3-support/files/hostap-fw-load
deleted file mode 100644
index 1f37aaf744..0000000000
--- a/packages/prism3-support/files/hostap-fw-load
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-# dont handle non-wireless interfaces
-if [ -z "`grep $IFACE /proc/net/wireless`" ]; then
- exit 0
-fi
-
-if test -e /sbin/cardctl; then
- CARDCTL=/sbin/cardctl
-elif test -e /sbin/pccardctl; then
- CARDCTL=/sbin/pccardctl
-else
- exit 0
-fi
-
-# Special case for prism3 cards needing firmware upload
-# Add more known manfids, if necessary
-
-if [ `$CARDCTL info|grep "d601,0010\|d601,0101"` ]; then
- iwpriv "$IFACE" reset 1
- hostap_fw_load "$IFACE"
-fi
-
-# lets hope that run-parts obeys the order :D
-
-exit 0
diff --git a/packages/prism3-support/prism3-support_1.0.0.bb b/packages/prism3-support/prism3-support_1.0.0.bb
deleted file mode 100644
index bcf571e093..0000000000
--- a/packages/prism3-support/prism3-support_1.0.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "meta-package for prism3 support through ifupdown and hostap_fw_load"
-SECTION = "base"
-LICENSE = "GPL"
-DEPENDS = "prism3-firmware hostap-utils"
-RDEPENDS = "prism3-firmware hostap-utils"
-PACKAGE_ARCH = "all"
-PR = "r5"
-
-SRC_URI = "file://hostap-fw-load"
-
-do_install() {
- install -d ${D}${sysconfdir}/network/if-pre-up.d/
- install -m 0755 ${WORKDIR}/hostap-fw-load ${D}${sysconfdir}/network/if-pre-up.d/
-}
-
diff --git a/packages/proj4/proj-4_4.9.bb b/packages/proj4/proj-4_4.9.bb
index 1f7ea8c0b9..da78a384bd 100644
--- a/packages/proj4/proj-4_4.9.bb
+++ b/packages/proj4/proj-4_4.9.bb
@@ -2,12 +2,16 @@ DESCRIPTION = "PROJ.4 - Cartographic Projections Library"
HOMEPAGE = "http://www.remotesensing.org/proj/"
LICENSE = "MIT"
+PR = "r1"
+
inherit autotools pkgconfig
SRC_URI = "ftp://ftp.remotesensing.org/proj/proj-4.${PV}.tar.gz"
S = "${WORKDIR}/proj-4.${PV}"
+FILES_${PN} += "${datadir}/proj"
+
do_stage() {
autotools_stage_all
}
diff --git a/packages/psplash/files/angstrom/.mtn2git_empty b/packages/psplash/files/angstrom/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/psplash/files/angstrom/.mtn2git_empty
diff --git a/packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h b/packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h
new file mode 100644
index 0000000000..a03d16e57a
--- /dev/null
+++ b/packages/psplash/files/angstrom/angstrom-psplash-qvga-img.h
@@ -0,0 +1,1336 @@
+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
+
+#define HAND_IMG_ROWSTRIDE (1016)
+#define HAND_IMG_WIDTH (254)
+#define HAND_IMG_HEIGHT (264)
+#define HAND_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
+#define HAND_IMG_RLE_PIXEL_DATA ((uint8*) \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\331\333\343\342\377\5\327" \
+ "\340\337\377\314\327\325\377\306\323\320\377\321\333\331\377\332\342" \
+ "\341\377\377\333\343\342\377\206\333\343\342\377\1\276\311\307\377\202" \
+ "g~y\377\357\333\343\342\377\2\253\276\272\377\233\262\255\377\204\223" \
+ "\254\247\377\3\225\255\250\377\240\266\262\377\303\321\316\377\377\333" \
+ "\343\342\377\204\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
+ "\343\342\377\11\231\260\254\377\223\254\247\377\243\271\264\377\267\307" \
+ "\304\377\277\316\313\377\256\301\275\377\232\261\255\377\223\254\247" \
+ "\377\271\311\306\377\377\333\343\342\377\204\333\343\342\377\1\270\305" \
+ "\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377" \
+ "\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\364\333\343" \
+ "\342\377\4\332\342\341\377\316\330\326\377\277\312\310\377\260\275\273" \
+ "\377\213\254\271\267\377\1\225\246\243\377\202Slg\377\357\333\343\342" \
+ "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
+ "\247\377\271\311\306\377\362\333\343\342\377\3\266\302\300\377v\212\206" \
+ "\377Vni\377\221Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\360\333" \
+ "\343\342\377\2\320\331\330\377n\204\200\377\224Slg\377\357\333\343\342" \
+ "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
+ "\247\377\271\311\306\377\357\333\343\342\377\2\332\342\341\377x\215\211" \
+ "\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377" \
+ "\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333\343\342" \
+ "\377\1\240\260\255\377\204Slg\377\4Uni\377s\210\203\377\177\222\217\377" \
+ "\213\235\231\377\213\222\243\240\377\1\202\225\221\377\202Slg\377\357" \
+ "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
+ "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1{\217\213\377" \
+ "\203Slg\377\2\230\250\245\377\317\330\327\377\216\333\343\342\377\1\270" \
+ "\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\1byt\377\202Slg\377\1\230\250\245\377\220\333\343\342\377" \
+ "\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377" \
+ "\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377" \
+ "\356\333\343\342\377\1\324\335\334\377\203Slg\377\1\324\334\333\377\220" \
+ "\333\343\342\377\1\274\307\306\377\202_vr\377\357\333\343\342\377\202" \
+ "\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377" \
+ "\271\311\306\377\356\333\343\342\377\4\332\342\341\377Xql\377Slg\377" \
+ "f|x\377\377\333\343\342\377\204\333\343\342\377\202\231\260\254\377\204" \
+ "\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357" \
+ "\333\343\342\377\3n\204\200\377Slg\377_vr\377\377\333\343\342\377\204" \
+ "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
+ "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1\243\262\257" \
+ "\377\202Slg\377\1\311\324\322\377\220\333\343\342\377\1\325\336\335\377" \
+ "\202\305\320\316\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\4\327\337\336\377dzv\377Slg\377\220\242\236\377\220\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
+ "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
+ "\311\306\377\360\333\343\342\377\4\307\321\320\377`ws\377Slg\377\240" \
+ "\260\255\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
+ "\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377" \
+ "\223\254\247\377\271\311\306\377\361\333\343\342\377\6\307\322\320\377" \
+ "u\211\205\377Slg\377m\202~\377\246\265\262\377\321\333\331\377\214\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
+ "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
+ "\311\306\377\362\333\343\342\377\2\332\342\341\377\213\235\231\377\203" \
+ "Slg\377\3Xpk\377f}x\377s\210\203\377\211t\211\205\377\1l\201}\377\202" \
+ "Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3" \
+ "\326\337\335\377\223\254\247\377\271\311\306\377\361\333\343\342\377" \
+ "\2\265\302\300\377i\177{\377\223Slg\377\357\333\343\342\377\202\231\260" \
+ "\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311" \
+ "\306\377\360\333\343\342\377\2\255\272\270\377Uni\377\224Slg\377\357" \
+ "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
+ "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\2\316\327\326" \
+ "\377Wpk\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\1\220\241\236\377\203Slg\377\5Woj\377\205\227\224\377\254" \
+ "\271\267\377\270\304\302\377\304\316\315\377\213\311\324\322\377\1\254" \
+ "\271\267\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\1i\177{\377\202Slg\377\2dzv\377\316\327\326\377\217\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
+ "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
+ "\311\306\377\356\333\343\342\377\2\331\342\341\377Voj\377\202Slg\377" \
+ "\1\273\307\305\377\220\333\343\342\377\1\270\305\303\377\202Slg\377\357" \
+ "\333\343\342\377\3\241\267\262\377\223\254\247\377\363\366\365\377\203" \
+ "\377\377\377\377\3\304\321\317\377\223\254\247\377\301\317\314\377\356" \
+ "\333\343\342\377\1\324\335\334\377\202Slg\377\2Xpk\377\331\342\341\377" \
+ "\220\333\343\342\377\1\311\324\322\377\202\226\247\244\377\357\333\343" \
+ "\342\377\3\264\305\302\377\223\254\247\377\326\337\335\377\203\377\377" \
+ "\377\377\3\246\273\267\377\223\254\247\377\324\335\334\377\357\333\343" \
+ "\342\377\3_vr\377Slg\377i\177{\377\377\333\343\342\377\202\333\343\342" \
+ "\377\5\317\332\331\377\257\301\276\377\217\251\244\377\223\254\247\377" \
+ "\270\310\305\377\202\377\377\377\377\6\365\367\367\377\223\254\247\377" \
+ "\217\251\244\377\234\263\257\377\275\314\312\377\330\341\340\377\355" \
+ "\333\343\342\377\4\177\222\217\377Slg\377Vni\377\327\337\336\377\376" \
+ "\333\343\342\377\2\277\316\313\377\207\243\236\377\203o\221\212\377\7" \
+ "\221\253\246\377\233\262\256\377\376\376\376\377\377\377\377\377\330" \
+ "\341\337\377\223\254\247\377\202\237\231\377\202o\221\212\377\3t\225" \
+ "\216\377\234\263\257\377\322\334\333\377\353\333\343\342\377\1\277\313" \
+ "\311\377\202Slg\377\1\273\307\305\377\220\333\343\342\377\1\307\322\320" \
+ "\377\202\216\237\234\377\351\333\343\342\377\2\310\325\323\377\216\251" \
+ "\243\377\204o\221\212\377\10v\226\220\377\221\252\245\377\223\254\247" \
+ "\377\324\336\334\377\340\347\346\377\262\304\300\377\223\254\247\377" \
+ "\210\244\237\377\204o\221\212\377\3u\225\217\377\250\274\270\377\327" \
+ "\340\337\377\352\333\343\342\377\4\226\246\243\377Slg\377h\177z\377\321" \
+ "\333\331\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\350\333" \
+ "\343\342\377\2\264\305\302\377q\223\214\377\202o\221\212\377\5q\223\214" \
+ "\377\233\263\256\377\300\317\314\377\331\342\340\377\273\312\307\377" \
+ "\204\223\254\247\377\5\225\255\250\377\330\341\337\377\321\333\332\377" \
+ "\261\303\277\377\206\243\235\377\203o\221\212\377\2\205\242\234\377\317" \
+ "\332\331\377\352\333\343\342\377\4\230\250\245\377Tmh\377q\206\202\377" \
+ "\276\311\307\377\216\333\343\342\377\1\270\305\303\377\202Slg\377\346" \
+ "\333\343\342\377\2\332\342\341\377\241\267\263\377\203o\221\212\377\2" \
+ "\227\257\253\377\315\331\327\377\203\333\343\342\377\1\321\333\332\377" \
+ "\204\262\303\300\377\1\272\312\307\377\204\333\343\342\377\2\270\310" \
+ "\306\377\177\235\227\377\202o\221\212\377\2z\231\222\377\304\322\320" \
+ "\377\347\333\343\342\377\1\317\330\327\377\202\301\314\312\377\10\247" \
+ "\266\263\377^vq\377Slg\377o\204\200\377\232\252\247\377\247\266\263\377" \
+ "\264\301\277\377\277\313\311\377\211\301\314\312\377\1\245\264\261\377" \
+ "\202Slg\377\346\333\343\342\377\1\236\265\260\377\202o\221\212\377\2" \
+ "t\225\216\377\273\313\310\377\220\333\343\342\377\2\327\340\337\377\225" \
+ "\256\251\377\202o\221\212\377\2t\225\216\377\310\325\323\377\346\333" \
+ "\343\342\377\1\233\253\250\377\226Slg\377\345\333\343\342\377\1\261\303" \
+ "\277\377\202o\221\212\377\2|\233\225\377\311\325\323\377\223\333\343" \
+ "\342\377\1\247\273\267\377\202o\221\212\377\2|\233\225\377\322\334\333" \
+ "\377\345\333\343\342\377\1\233\253\250\377\226Slg\377\344\333\343\342" \
+ "\377\5\304\321\317\377q\222\213\377o\221\212\377u\226\217\377\312\326" \
+ "\324\377\225\333\343\342\377\1\242\270\264\377\202o\221\212\377\2\211" \
+ "\244\237\377\332\342\341\377\344\333\343\342\377\1\233\253\250\377\226" \
+ "Slg\377\344\333\343\342\377\4\207\243\236\377o\221\212\377p\222\213\377" \
+ "\275\314\312\377\226\333\343\342\377\2\332\342\341\377\220\252\245\377" \
+ "\202o\221\212\377\1\264\305\302\377\344\333\343\342\377\3\233\253\250" \
+ "\377Slg\377\\so\377\221x\215\211\377\1o\204\200\377\202Slg\377\343\333" \
+ "\343\342\377\1\267\310\305\377\202o\221\212\377\1\237\265\261\377\230" \
+ "\333\343\342\377\5\324\336\334\377v\226\220\377o\221\212\377|\233\225" \
+ "\377\330\341\337\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211" \
+ "\205\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343" \
+ "\342\377\5\332\342\341\377~\234\226\377o\221\212\377t\225\216\377\322" \
+ "\334\333\377\231\333\343\342\377\1\251\275\271\377\202o\221\212\377\1" \
+ "\255\300\275\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205" \
+ "\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342" \
+ "\377\1\304\321\317\377\202o\221\212\377\1\245\272\266\377\232\333\343" \
+ "\342\377\4\327\340\337\377y\231\222\377o\221\212\377\207\243\236\377" \
+ "\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343" \
+ "\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\1\243\270\264" \
+ "\377\202o\221\212\377\1\314\327\325\377\233\333\343\342\377\1\234\263" \
+ "\257\377\202o\221\212\377\1\321\333\332\377\342\333\343\342\377\3\277" \
+ "\312\310\377\237\256\253\377\256\273\271\377\221\333\343\342\377\1\323" \
+ "\334\333\377\202\275\310\306\377\342\333\343\342\377\3\202\237\231\377" \
+ "o\221\212\377\201\236\230\377\234\333\343\342\377\1\276\315\312\377\202" \
+ "o\221\212\377\1\261\303\300\377\377\333\343\342\377\333\333\343\342\377" \
+ "\1\330\341\340\377\202o\221\212\377\1\234\263\256\377\234\333\343\342" \
+ "\377\1\330\341\337\377\202o\221\212\377\1\234\263\257\377\377\333\343" \
+ "\342\377\333\333\343\342\377\1\317\332\330\377\202o\221\212\377\1\250" \
+ "\274\270\377\235\333\343\342\377\3y\230\222\377o\221\212\377\222\254" \
+ "\246\377\377\333\343\342\377\333\333\343\342\377\1\304\322\320\377\202" \
+ "o\221\212\377\1\264\306\302\377\235\333\343\342\377\3\205\242\234\377" \
+ "o\221\212\377\207\243\236\377\350\333\343\342\377\13\327\340\337\377" \
+ "\267\303\301\377\225\246\243\377{\217\213\377p\205\201\377f}x\377k\201" \
+ "}\377u\211\205\377\205\227\224\377\245\263\261\377\310\323\321\377\347" \
+ "\333\343\342\377\1\275\314\312\377\202o\221\212\377\1\274\314\311\377" \
+ "\235\333\343\342\377\3\215\250\242\377o\221\212\377\200\236\230\377\346" \
+ "\333\343\342\377\3\324\334\333\377\231\251\246\377_wr\377\212Slg\377" \
+ "\2x\215\211\377\270\304\302\377\345\333\343\342\377\1\306\323\321\377" \
+ "\202o\221\212\377\1\263\304\301\377\235\333\343\342\377\3\203\240\232" \
+ "\377o\221\212\377\211\244\237\377\345\333\343\342\377\2\300\314\312\377" \
+ "f|x\377\216Slg\377\2\216\240\235\377\330\340\337\377\343\333\343\342" \
+ "\377\1\320\333\331\377\202o\221\212\377\1\247\273\267\377\235\333\343" \
+ "\342\377\3w\227\221\377o\221\212\377\223\254\250\377\344\333\343\342" \
+ "\377\2\273\307\305\377Woj\377\220Slg\377\2y\216\212\377\330\341\340\377" \
+ "\342\333\343\342\377\4\331\342\340\377p\221\213\377o\221\212\377\231" \
+ "\261\254\377\234\333\343\342\377\1\326\337\336\377\202o\221\212\377\1" \
+ "\236\265\260\377\331\333\343\342\377\3\272\306\304\377\231\251\246\377" \
+ "\310\322\321\377\207\333\343\342\377\2\310\322\321\377\\to\377\205Sl" \
+ "g\377\7Woj\377dzv\377q\206\202\377}\221\215\377w\214\210\377k\201|\377" \
+ "]up\377\206Slg\377\1\211\233\230\377\343\333\343\342\377\3\206\242\234" \
+ "\377o\221\212\377|\233\225\377\234\333\343\342\377\1\271\311\306\377" \
+ "\202o\221\212\377\1\265\306\303\377\330\333\343\342\377\1\222\243\240" \
+ "\377\203Slg\377\1\271\306\304\377\206\333\343\342\377\1|\217\214\377" \
+ "\203Slg\377\3dzv\377\231\252\247\377\314\326\324\377\207\333\343\342" \
+ "\377\4\330\340\337\377\267\304\302\377\201\224\220\377Vni\377\203Slg" \
+ "\377\1\274\307\306\377\342\333\343\342\377\1\247\274\270\377\202o\221" \
+ "\212\377\1\307\323\321\377\233\333\343\342\377\4\227\257\253\377o\221" \
+ "\212\377q\222\213\377\324\336\334\377\327\333\343\342\377\2\325\335\334" \
+ "\377Zrm\377\203Slg\377\1\205\227\224\377\205\333\343\342\377\1\275\310" \
+ "\306\377\202Slg\377\3Umh\377\251\270\265\377\331\342\341\377\214\333" \
+ "\343\342\377\2\317\331\327\377y\216\212\377\202Slg\377\1t\211\205\377" \
+ "\342\333\343\342\377\1\310\325\323\377\202o\221\212\377\1\237\265\261" \
+ "\377\232\333\343\342\377\4\325\336\335\377v\226\217\377o\221\212\377" \
+ "\213\246\241\377\330\333\343\342\377\2\331\341\340\377czu\377\203Slg" \
+ "\377\1\221\243\237\377\205\333\343\342\377\4\220\241\236\377Slg\377T" \
+ "lg\377\253\271\267\377\217\333\343\342\377\2\326\336\335\377s\210\204" \
+ "\377\202Slg\377\1\317\331\327\377\342\333\343\342\377\4\203\240\232\377" \
+ "o\221\212\377r\223\214\377\317\331\330\377\205\333\343\342\377\2\305" \
+ "\322\320\377\322\334\332\377\212\333\343\342\377\3\332\342\341\377\305" \
+ "\322\320\377\322\334\333\377\205\333\343\342\377\1\243\270\264\377\202" \
+ "o\221\212\377\1\262\304\301\377\331\333\343\342\377\5\250\266\264\377" \
+ "Yql\377Slg\377f|x\377\310\322\321\377\205\333\343\342\377\3k\201}\377" \
+ "Slg\377\212\234\231\377\221\333\343\342\377\4\321\332\331\377Tmh\377" \
+ "Slg\377\253\271\267\377\342\333\343\342\377\1\276\315\312\377\202o\221" \
+ "\212\377\1\227\257\253\377\204\333\343\342\377\6\327\340\337\377\227" \
+ "\257\252\377\223\254\247\377\251\275\271\377\307\324\322\377\332\342" \
+ "\341\377\205\333\343\342\377\5\325\337\335\377\272\311\307\377\234\263" \
+ "\256\377\223\254\247\377\263\304\301\377\204\333\343\342\377\5\317\332" \
+ "\331\377s\224\215\377o\221\212\377\201\236\230\377\331\342\340\377\332" \
+ "\333\343\342\377\3\324\334\333\377\274\307\306\377\332\342\341\377\206" \
+ "\333\343\342\377\3Xql\377Slg\377\255\272\270\377\222\333\343\342\377" \
+ "\3m\202~\377Slg\377\230\251\246\377\343\333\343\342\377\1\216\250\243" \
+ "\377\202o\221\212\377\1\264\305\302\377\203\333\343\342\377\3\275\314" \
+ "\312\377\223\254\247\377\225\255\250\377\202\223\254\247\377\7\236\264" \
+ "\260\377\273\313\310\377\327\337\336\377\333\343\342\377\315\330\326" \
+ "\377\256\301\275\377\225\255\251\377\202\223\254\247\377\3\224\254\250" \
+ "\377\227\257\252\377\330\341\337\377\202\333\343\342\377\2\330\341\337" \
+ "\377\207\243\236\377\202o\221\212\377\1\273\312\310\377\343\333\343\342" \
+ "\377\1\324\335\334\377\202Slg\377\1\314\326\324\377\222\333\343\342\377" \
+ "\3\214\236\233\377Slg\377\214\235\232\377\343\333\343\342\377\5\312\326" \
+ "\324\377t\225\216\377o\221\212\377q\223\214\377\303\320\316\377\202\333" \
+ "\343\342\377\5\237\265\261\377\223\254\247\377\347\355\354\377\335\344" \
+ "\343\377\257\301\276\377\202\223\254\247\377\2\250\274\270\377\321\334" \
+ "\332\377\202\223\254\247\377\6\231\261\254\377\303\321\316\377\360\363" \
+ "\363\377\271\311\306\377\223\254\247\377\277\315\313\377\202\333\343" \
+ "\342\377\1\227\257\252\377\202o\221\212\377\1\222\254\246\377\344\333" \
+ "\343\342\377\1\325\335\334\377\202Slg\377\1\313\325\323\377\222\333\343" \
+ "\342\377\3\213\235\231\377Slg\377\214\236\233\377\344\333\343\342\377" \
+ "\1\273\312\310\377\202o\221\212\377\5v\226\220\377\277\316\313\377\311" \
+ "\325\323\377\223\254\247\377\251\275\271\377\203\377\377\377\377\7\355" \
+ "\361\360\377\227\257\253\377\226\256\251\377\273\312\307\377\223\254" \
+ "\247\377\271\311\306\377\372\373\373\377\202\377\377\377\377\5\346\354" \
+ "\353\377\223\254\247\377\240\266\262\377\330\341\340\377\232\261\255" \
+ "\377\202o\221\212\377\2\203\240\232\377\326\337\336\377\334\333\343\342" \
+ "\377\3\322\333\332\377\267\303\301\377\331\341\340\377\206\333\343\342" \
+ "\377\3Yql\377Slg\377\253\271\267\377\222\333\343\342\377\3k\201}\377" \
+ "Slg\377\231\251\246\377\345\333\343\342\377\1\252\276\272\377\202o\221" \
+ "\212\377\4p\222\213\377\234\263\256\377\223\254\247\377\327\340\336\377" \
+ "\203\377\377\377\377\2\344\352\351\377\232\261\254\377\202\223\254\247" \
+ "\377\3\224\255\250\377\262\303\300\377\371\372\372\377\203\377\377\377" \
+ "\377\3\250\274\270\377\223\254\247\377\214\246\241\377\202o\221\212\377" \
+ "\2y\231\222\377\317\331\330\377\334\333\343\342\377\5\247\266\263\377" \
+ "Xql\377Slg\377`ws\377\305\320\316\377\205\333\343\342\377\3l\201}\377" \
+ "Slg\377\210\233\227\377\221\333\343\342\377\4\317\331\327\377Tlg\377" \
+ "Slg\377\254\271\267\377\346\333\343\342\377\6\257\301\276\377p\222\213" \
+ "\377r\223\214\377\222\253\246\377\233\262\256\377\374\374\374\377\202" \
+ "\377\377\377\377\11\316\331\327\377\223\254\247\377\252\275\272\377\320" \
+ "\333\331\377\332\343\341\377\305\323\320\377\227\257\253\377\237\265" \
+ "\261\377\362\365\364\377\202\377\377\377\377\6\325\337\335\377\223\254" \
+ "\247\377\206\242\234\377o\221\212\377\202\237\231\377\315\330\326\377" \
+ "\334\333\343\342\377\2\331\341\340\377czu\377\203Slg\377\1\217\241\235" \
+ "\377\205\333\343\342\377\1\221\243\237\377\202Slg\377\1\251\267\265\377" \
+ "\217\333\343\342\377\5\325\335\334\377p\206\202\377Slg\377Tlg\377\320" \
+ "\331\330\377\347\333\343\342\377\4\277\316\313\377\204\241\233\377\223" \
+ "\254\247\377\306\323\320\377\202\377\377\377\377\4\352\357\356\377\225" \
+ "\255\250\377\300\317\314\377\376\376\376\377\203\377\377\377\377\12\361" \
+ "\364\363\377\236\264\260\377\257\302\276\377\376\376\376\377\377\377" \
+ "\377\377\373\374\373\377\232\261\254\377\222\253\246\377\217\251\244" \
+ "\377\325\337\335\377\335\333\343\342\377\2\325\336\335\377[sn\377\203" \
+ "Slg\377\1\206\231\225\377\205\333\343\342\377\1\276\312\310\377\202S" \
+ "lg\377\3Umh\377\251\267\265\377\331\342\341\377\214\333\343\342\377\2" \
+ "\315\326\325\377v\213\207\377\202Slg\377\1v\213\207\377\350\333\343\342" \
+ "\377\4\331\341\340\377\230\260\253\377\224\254\247\377\362\365\364\377" \
+ "\202\377\377\377\377\3\272\312\307\377\243\270\264\377\374\375\375\377" \
+ "\205\377\377\377\377\3\335\345\343\377\223\254\247\377\352\357\356\377" \
+ "\202\377\377\377\377\3\304\321\317\377\223\254\247\377\267\307\304\377" \
+ "\337\333\343\342\377\1\223\244\240\377\202Slg\377\2Umh\377\275\310\306" \
+ "\377\206\333\343\342\377\1~\222\216\377\203Slg\377\4czu\377\227\247\244" \
+ "\377\310\322\321\377\331\341\340\377\206\333\343\342\377\4\325\335\334" \
+ "\377\263\300\276\377}\220\215\377Tmh\377\203Slg\377\1\277\312\310\377" \
+ "\350\333\343\342\377\3\302\320\315\377\223\254\247\377\264\305\302\377" \
+ "\203\377\377\377\377\2\243\271\264\377\277\316\313\377\206\377\377\377" \
+ "\377\3\373\374\373\377\224\255\250\377\322\335\333\377\202\377\377\377" \
+ "\377\4\360\363\363\377\223\254\247\377\232\262\255\377\332\342\341\377" \
+ "\337\333\343\342\377\3\274\310\306\377\236\255\253\377\315\327\325\377" \
+ "\207\333\343\342\377\2\311\324\322\377^uq\377\205Slg\377\7Tmh\377_wr" \
+ "\377m\202~\377y\215\211\377s\210\204\377f}x\377Yql\377\206Slg\377\1\217" \
+ "\240\235\377\351\333\343\342\377\3\244\271\265\377\223\254\247\377\342" \
+ "\350\347\377\203\377\377\377\377\2\240\266\262\377\302\320\315\377\206" \
+ "\377\377\377\377\3\374\375\375\377\225\255\251\377\317\332\330\377\203" \
+ "\377\377\377\377\3\262\304\300\377\223\254\247\377\303\321\317\377\352" \
+ "\333\343\342\377\2\275\311\307\377Xql\377\220Slg\377\2}\221\215\377\331" \
+ "\342\341\377\350\333\343\342\377\4\316\331\327\377\223\254\247\377\243" \
+ "\270\264\377\376\376\376\377\203\377\377\377\377\2\267\307\304\377\250" \
+ "\274\270\377\206\377\377\377\377\3\345\353\351\377\223\254\247\377\346" \
+ "\354\353\377\203\377\377\377\377\3\340\347\345\377\223\254\247\377\245" \
+ "\272\266\377\353\333\343\342\377\2\303\316\314\377h\177z\377\215Slg\377" \
+ "\3Tlg\377\225\245\242\377\331\341\340\377\351\333\343\342\377\3\257\302" \
+ "\276\377\223\254\247\377\320\333\331\377\204\377\377\377\377\3\340\347" \
+ "\346\377\223\254\247\377\317\332\330\377\204\377\377\377\377\4\371\372" \
+ "\372\377\245\272\266\377\246\272\266\377\374\375\375\377\203\377\377" \
+ "\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377\317\331\330" \
+ "\377\353\333\343\342\377\3\325\335\334\377\235\255\252\377czu\377\211" \
+ "Slg\377\3Tlg\377\177\222\217\377\277\312\310\377\352\333\343\342\377" \
+ "\4\326\337\336\377\225\256\251\377\227\257\253\377\371\372\372\377\205" \
+ "\377\377\377\377\11\277\316\313\377\223\254\247\377\272\312\307\377\341" \
+ "\350\346\377\353\360\357\377\326\340\336\377\240\266\261\377\227\257" \
+ "\252\377\352\357\356\377\205\377\377\377\377\3\316\331\327\377\223\254" \
+ "\247\377\260\302\277\377\355\333\343\342\377\13\330\341\340\377\273\307" \
+ "\305\377\231\252\247\377\177\222\217\377t\211\205\377k\201|\377o\205" \
+ "\201\377y\215\211\377\211\233\230\377\251\267\265\377\314\326\324\377" \
+ "\354\333\343\342\377\3\273\312\310\377\223\254\247\377\277\316\313\377" \
+ "\207\377\377\377\377\2\315\330\327\377\224\255\250\377\203\223\254\247" \
+ "\377\2\235\263\257\377\360\363\362\377\206\377\377\377\377\4\370\371" \
+ "\371\377\227\257\252\377\226\256\252\377\327\340\336\377\377\333\343" \
+ "\342\377\343\333\343\342\377\4\332\342\341\377\235\263\257\377\223\254" \
+ "\247\377\354\361\360\377\207\377\377\377\377\7\310\325\322\377\223\254" \
+ "\247\377\262\303\300\377\307\323\321\377\231\260\253\377\225\255\251" \
+ "\377\365\367\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247" \
+ "\377\274\313\311\377\346\333\343\342\377\1\316\327\326\377\205\301\314" \
+ "\312\377\1\327\340\337\377\365\333\343\342\377\3\306\323\321\377\223" \
+ "\254\247\377\256\300\275\377\207\377\377\377\377\10\374\375\375\377\235" \
+ "\264\257\377\224\255\250\377\324\336\334\377\333\343\342\377\266\307" \
+ "\304\377\223\254\247\377\312\326\324\377\207\377\377\377\377\3\353\357" \
+ "\356\377\223\254\247\377\236\264\260\377\346\333\343\342\377\1\204\227" \
+ "\223\377\205Slg\377\1\311\324\322\377\365\333\343\342\377\3\250\274\270" \
+ "\377\223\254\247\377\335\345\344\377\207\377\377\377\377\3\332\342\340" \
+ "\377\223\254\247\377\254\277\274\377\202\333\343\342\377\4\323\335\334" \
+ "\377\224\255\250\377\236\265\260\377\375\376\375\377\207\377\377\377" \
+ "\377\3\256\301\275\377\223\254\247\377\310\324\322\377\345\333\343\342" \
+ "\377\1i\177{\377\205Slg\377\1\311\324\322\377\364\333\343\342\377\4\321" \
+ "\334\332\377\223\254\247\377\240\265\261\377\376\376\376\377\207\377" \
+ "\377\377\377\3\254\277\274\377\223\254\247\377\312\326\324\377\203\333" \
+ "\343\342\377\3\253\276\272\377\223\254\247\377\334\344\342\377\207\377" \
+ "\377\377\377\3\333\343\342\377\223\254\247\377\251\275\271\377\345\333" \
+ "\343\342\377\1Vni\377\202Slg\377\4Yrm\377\234\253\251\377\302\315\313" \
+ "\377\331\342\341\377\364\333\343\342\377\3\264\305\302\377\223\254\247" \
+ "\377\314\330\325\377\207\377\377\377\377\3\353\360\357\377\223\254\247" \
+ "\377\241\266\262\377\204\333\343\342\377\3\311\325\323\377\223\254\247" \
+ "\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377\236\265\260" \
+ "\377\223\254\247\377\322\334\333\377\343\333\343\342\377\1\324\334\333" \
+ "\377\203Slg\377\1\261\277\274\377\366\333\343\342\377\4\330\341\340\377" \
+ "\230\260\253\377\225\256\251\377\366\370\370\377\207\377\377\377\377" \
+ "\3\276\315\312\377\223\254\247\377\277\315\313\377\205\333\343\342\377" \
+ "\3\237\265\261\377\223\254\247\377\355\361\360\377\207\377\377\377\377" \
+ "\3\312\326\324\377\223\254\247\377\265\306\303\377\343\333\343\342\377" \
+ "\1\326\337\336\377\202Slg\377\1]up\377\367\333\343\342\377\3\277\316" \
+ "\313\377\223\254\247\377\272\312\307\377\207\377\377\377\377\4\370\371" \
+ "\371\377\227\257\252\377\230\257\253\377\330\341\337\377\205\333\343" \
+ "\342\377\3\275\314\312\377\223\254\247\377\277\316\313\377\207\377\377" \
+ "\377\377\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340" \
+ "\377\343\333\343\342\377\3`ws\377Slg\377i\200{\377\367\333\343\342\377" \
+ "\3\241\267\263\377\223\254\247\377\350\355\354\377\207\377\377\377\377" \
+ "\3\317\332\330\377\223\254\247\377\263\305\301\377\206\333\343\342\377" \
+ "\4\327\340\337\377\227\257\252\377\230\260\253\377\371\372\372\377\207" \
+ "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\314\377\343" \
+ "\333\343\342\377\4y\215\211\377Slg\377Vni\377\327\340\337\377\220\333" \
+ "\343\342\377\1\324\335\334\377\202\301\314\312\377\342\333\343\342\377" \
+ "\3\313\327\325\377\223\254\247\377\251\275\271\377\207\377\377\377\377" \
+ "\4\376\376\376\377\242\267\263\377\223\254\247\377\321\333\332\377\207" \
+ "\333\343\342\377\3\262\303\300\377\223\254\247\377\321\334\332\377\207" \
+ "\377\377\377\377\3\346\354\352\377\223\254\247\377\242\270\263\377\343" \
+ "\333\343\342\377\1\260\276\273\377\202Slg\377\1\300\313\311\377\220\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\3\255\300" \
+ "\274\377\223\254\247\377\327\340\336\377\207\377\377\377\377\3\340\347" \
+ "\346\377\223\254\247\377\247\273\270\377\210\333\343\342\377\3\320\332" \
+ "\331\377\223\254\247\377\244\271\265\377\210\377\377\377\377\3\247\273" \
+ "\267\377\223\254\247\377\314\330\326\377\342\333\343\342\377\5\331\342" \
+ "\341\377o\205\201\377Slg\377x\215\211\377\331\342\341\377\217\333\343" \
+ "\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377\4\325\336\335" \
+ "\377\225\255\250\377\233\262\255\377\374\374\374\377\207\377\377\377" \
+ "\377\3\263\305\301\377\223\254\247\377\306\323\321\377\211\333\343\342" \
+ "\377\3\246\273\267\377\223\254\247\377\343\351\350\377\207\377\377\377" \
+ "\377\3\325\336\334\377\223\254\247\377\256\300\275\377\343\333\343\342" \
+ "\377\5\316\330\326\377dzv\377Slg\377\220\241\236\377\332\342\341\377" \
+ "\216\333\343\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377" \
+ "\3\270\310\306\377\223\254\247\377\305\323\320\377\207\377\377\377\377" \
+ "\4\361\364\363\377\223\254\247\377\234\263\257\377\332\342\341\377\211" \
+ "\333\343\342\377\3\304\322\317\377\223\254\247\377\265\306\302\377\207" \
+ "\377\377\377\377\4\373\374\373\377\232\261\254\377\225\255\251\377\325" \
+ "\337\335\377\343\333\343\342\377\6\316\327\326\377\200\224\220\377Sl" \
+ "g\377h~z\377\246\265\262\377\326\336\335\377\214\333\343\342\377\1\270" \
+ "\305\303\377\202Slg\377\340\333\343\342\377\4\332\342\341\377\233\262" \
+ "\255\377\223\254\247\377\361\364\364\377\207\377\377\377\377\3\304\322" \
+ "\317\377\223\254\247\377\272\312\307\377\212\333\343\342\377\4\332\342" \
+ "\341\377\233\262\256\377\224\254\247\377\362\365\364\377\207\377\377" \
+ "\377\377\3\303\321\316\377\223\254\247\377\272\311\307\377\341\333\343" \
+ "\342\377\1\257\274\272\377\203}\220\215\377\1^vq\377\203Slg\377\3^vq" \
+ "\377n\203\177\377{\217\213\377\211}\220\215\377\1r\207\203\377\202Sl" \
+ "g\377\340\333\343\342\377\3\304\321\317\377\223\254\247\377\264\305\301" \
+ "\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225\256\251" \
+ "\377\326\337\336\377\213\333\343\342\377\3\271\311\306\377\223\254\247" \
+ "\377\307\324\321\377\207\377\377\377\377\4\360\363\362\377\223\254\247" \
+ "\377\234\263\256\377\332\342\341\377\340\333\343\342\377\1\233\253\250" \
+ "\377\226Slg\377\340\333\343\342\377\3\246\272\266\377\223\254\247\377" \
+ "\341\350\347\377\207\377\377\377\377\3\326\337\335\377\223\254\247\377" \
+ "\256\301\275\377\214\333\343\342\377\4\325\336\335\377\225\255\250\377" \
+ "\234\263\256\377\374\375\374\377\207\377\377\377\377\3\262\304\300\377" \
+ "\223\254\247\377\305\322\320\377\340\333\343\342\377\1\233\253\250\377" \
+ "\226Slg\377\337\333\343\342\377\4\317\332\330\377\223\254\247\377\242" \
+ "\270\263\377\376\376\376\377\207\377\377\377\377\3\251\274\270\377\223" \
+ "\254\247\377\315\330\326\377\215\333\343\342\377\3\255\300\274\377\223" \
+ "\254\247\377\330\341\337\377\207\377\377\377\377\3\337\346\345\377\223" \
+ "\254\247\377\247\273\267\377\340\333\343\342\377\1\233\253\250\377\226" \
+ "Slg\377\337\333\343\342\377\3\261\303\300\377\223\254\247\377\320\333" \
+ "\331\377\207\377\377\377\377\3\347\355\354\377\223\254\247\377\243\270" \
+ "\264\377\216\333\343\342\377\3\314\327\325\377\223\254\247\377\252\276" \
+ "\272\377\207\377\377\377\377\4\376\376\376\377\241\267\262\377\223\254" \
+ "\247\377\320\333\331\377\337\333\343\342\377\3\233\253\250\377Slg\377" \
+ "m\202~\377\221\275\310\306\377\1\242\261\256\377\202Slg\377\336\333\343" \
+ "\342\377\1\327\340\337\377\202\227\257\252\377\1\370\372\371\377\207" \
+ "\377\377\377\377\3\272\312\307\377\223\254\247\377\301\317\315\377\217" \
+ "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
+ "\377\377\377\377\3\316\331\327\377\223\254\247\377\263\304\301\377\337" \
+ "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\275\314\311\377" \
+ "\223\254\247\377\277\315\312\377\207\377\377\377\377\4\366\370\367\377" \
+ "\225\256\251\377\231\260\254\377\331\341\340\377\217\333\343\342\377" \
+ "\3\300\316\314\377\223\254\247\377\274\313\310\377\207\377\377\377\377" \
+ "\4\367\371\371\377\226\256\252\377\227\257\252\377\330\340\337\377\336" \
+ "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\237\265\260\377" \
+ "\223\254\247\377\354\360\357\377\207\377\377\377\377\3\313\327\325\377" \
+ "\223\254\247\377\266\306\303\377\220\333\343\342\377\4\331\341\340\377" \
+ "\230\260\253\377\226\256\252\377\367\371\370\377\207\377\377\377\377" \
+ "\3\274\314\311\377\223\254\247\377\276\315\312\377\336\333\343\342\377" \
+ "\3\237\256\253\377[sn\377{\217\213\377\221\333\343\342\377\1\302\315" \
+ "\313\377\202x\215\211\377\335\333\343\342\377\3\310\325\323\377\223\254" \
+ "\247\377\255\300\274\377\207\377\377\377\377\4\375\376\375\377\237\265" \
+ "\261\377\224\254\247\377\323\334\333\377\221\333\343\342\377\3\264\305" \
+ "\302\377\223\254\247\377\315\331\326\377\207\377\377\377\377\3\352\357" \
+ "\356\377\223\254\247\377\240\266\261\377\377\333\343\342\377\323\333" \
+ "\343\342\377\3\252\276\272\377\223\254\247\377\333\343\341\377\207\377" \
+ "\377\377\377\3\335\344\343\377\223\254\247\377\252\275\272\377\222\333" \
+ "\343\342\377\4\322\334\332\377\223\254\247\377\241\266\262\377\376\376" \
+ "\376\377\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326" \
+ "\324\377\356\333\343\342\377\1\331\342\341\377\341\333\343\342\377\4" \
+ "\323\335\333\377\224\254\247\377\235\264\257\377\375\375\375\377\207" \
+ "\377\377\377\377\3\257\302\276\377\223\254\247\377\310\324\322\377\207" \
+ "\333\343\342\377\4\327\340\337\377\264\305\302\377\260\302\277\377\305" \
+ "\321\317\377\210\333\343\342\377\3\251\274\271\377\223\254\247\377\337" \
+ "\346\345\377\207\377\377\377\377\3\330\341\337\377\223\254\247\377\253" \
+ "\276\273\377\356\333\343\342\377\5\264\301\277\377^uq\377w\214\210\377" \
+ "\236\255\253\377\330\341\340\377\335\333\343\342\377\3\266\306\303\377" \
+ "\223\254\247\377\311\325\323\377\207\377\377\377\377\3\356\362\361\377" \
+ "\223\254\247\377\236\265\260\377\210\333\343\342\377\5\251\275\272\377" \
+ "\226\256\251\377\240\266\261\377\222\253\246\377\316\331\330\377\207" \
+ "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\300\377\207" \
+ "\377\377\377\377\4\374\375\374\377\234\263\256\377\224\255\250\377\324" \
+ "\335\334\377\334\333\343\342\377\3\241\260\255\377_vr\377z\216\212\377" \
+ "\216\333\343\342\377\1\264\301\277\377\203Slg\377\2m\202~\377\312\324" \
+ "\323\377\333\333\343\342\377\4\331\341\340\377\231\261\254\377\225\255" \
+ "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
+ "\247\377\275\314\311\377\207\333\343\342\377\6\331\342\341\377\225\255" \
+ "\250\377\320\333\331\377\374\375\375\377\234\263\256\377\261\303\300" \
+ "\377\207\333\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247" \
+ "\377\360\363\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247" \
+ "\377\267\310\305\377\334\333\343\342\377\3\233\253\250\377Slg\377p\205" \
+ "\201\377\216\333\343\342\377\2\270\305\303\377Woj\377\203Slg\377\1~\221" \
+ "\216\377\333\333\343\342\377\3\301\317\315\377\223\254\247\377\270\310" \
+ "\305\377\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256" \
+ "\252\377\327\340\336\377\207\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\210\333\343\342\377\3\273\313\310\377\223\254\247\377\303\321\316" \
+ "\377\207\377\377\377\377\4\363\365\365\377\224\255\250\377\232\261\255" \
+ "\377\331\342\341\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205" \
+ "\201\377\217\333\343\342\377\3\332\342\341\377\306\321\317\377\206\230" \
+ "\225\377\202Slg\377\1\300\313\311\377\332\333\343\342\377\3\243\270\264" \
+ "\377\223\254\247\377\345\353\352\377\207\377\377\377\377\3\322\335\333" \
+ "\377\223\254\247\377\261\303\277\377\210\333\343\342\377\6\331\340\337" \
+ "\377\223\254\247\377\332\342\341\377\377\377\377\377\251\275\271\377" \
+ "\255\300\275\377\210\333\343\342\377\4\326\337\336\377\226\256\251\377" \
+ "\232\261\254\377\372\373\373\377\207\377\377\377\377\3\266\307\303\377" \
+ "\223\254\247\377\303\320\316\377\333\333\343\342\377\3\233\253\250\377" \
+ "Slg\377p\205\201\377\221\333\343\342\377\4\332\342\341\377q\207\202\377" \
+ "Slg\377\246\264\262\377\331\333\343\342\377\3\315\330\326\377\223\254" \
+ "\247\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254" \
+ "\247\377\317\332\330\377\210\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\211\333\343\342\377\3\260\302\276\377\223\254\247\377\324\336\334" \
+ "\377\207\377\377\377\377\3\343\351\350\377\223\254\247\377\244\271\265" \
+ "\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\222\333" \
+ "\343\342\377\3\223\244\240\377Slg\377\223\244\240\377\331\333\343\342" \
+ "\377\3\257\301\276\377\223\254\247\377\324\336\334\377\207\377\377\377" \
+ "\377\3\344\352\351\377\223\254\247\377\245\272\266\377\211\333\343\342" \
+ "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
+ "\251\275\271\377\255\300\275\377\211\333\343\342\377\3\316\331\327\377" \
+ "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
+ "\223\254\247\377\316\331\327\377\332\333\343\342\377\3\233\253\250\377" \
+ "Slg\377p\205\201\377\222\333\343\342\377\3\213\235\232\377Slg\377\214" \
+ "\235\232\377\330\333\343\342\377\10\326\337\336\377\225\256\251\377\231" \
+ "\261\254\377\372\373\373\377\354\360\357\377\301\317\315\377\325\337" \
+ "\335\377\373\374\374\377\203\377\377\377\377\3\266\307\303\377\223\254" \
+ "\247\377\303\321\317\377\211\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\212\333\343\342\377\3\244\271\265\377\223\254\247\377\346\353\352" \
+ "\377\203\377\377\377\377\7\356\362\362\377\303\321\316\377\322\334\332" \
+ "\377\372\373\373\377\322\334\332\377\223\254\247\377\260\302\277\377" \
+ "\332\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343" \
+ "\342\377\4\314\325\324\377_wr\377Slg\377\235\254\252\377\306\333\343" \
+ "\342\377\1\203\240\232\377\205r\223\214\377\1w\227\221\377\213\253\276" \
+ "\273\377\16\240\265\262\377\223\254\247\377\302\320\315\377\266\307\304" \
+ "\377\223\254\247\377\233\262\256\377\223\254\247\377\233\262\255\377" \
+ "\346\353\352\377\377\377\377\377\363\366\365\377\224\255\250\377\225" \
+ "\256\251\377\252\275\272\377\211\253\276\273\377\6\252\275\272\377\223" \
+ "\254\247\377\332\342\341\377\377\377\377\377\250\274\270\377\233\262" \
+ "\256\377\212\253\276\273\377\3\242\267\264\377\223\254\247\377\270\310" \
+ "\305\377\202\377\377\377\377\11\275\315\312\377\223\254\247\377\232\262" \
+ "\255\377\224\255\250\377\231\261\254\377\332\344\341\377\230\260\253" \
+ "\377\224\254\250\377\251\275\271\377\212\253\276\273\377\1\227\257\253" \
+ "\377\205r\223\214\377\2s\224\215\377\261\303\300\377\300\333\343\342" \
+ "\377\1\267\304\302\377\206\211\234\230\377\3p\205\201\377Slg\377^vq\377" \
+ "\216\211\234\230\377\4\206\231\225\377\177\223\217\377r\207\203\377T" \
+ "mh\377\202Slg\377\1\257\274\272\377\306\333\343\342\377\1|\233\224\377" \
+ "\221o\221\212\377\15\215\250\242\377\223\254\247\377\335\345\343\377" \
+ "\223\254\247\377\317\332\330\377\375\375\375\377\360\363\363\377\243" \
+ "\270\264\377\265\306\303\377\377\377\377\377\310\325\322\377\223\254" \
+ "\247\377\200\236\227\377\212o\221\212\377\6p\221\212\377\223\254\247" \
+ "\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242\234\377" \
+ "\213o\221\212\377\15\217\251\244\377\224\255\250\377\365\367\367\377" \
+ "\361\364\364\377\224\255\250\377\306\323\321\377\374\375\375\377\363" \
+ "\366\365\377\252\276\272\377\255\300\274\377\300\317\314\377\223\254" \
+ "\247\377~\234\226\377\221o\221\212\377\1\256\301\276\377\300\333\343" \
+ "\342\377\1\237\256\253\377\234Slg\377\2]up\377\321\333\331\377\306\333" \
+ "\343\342\377\1|\233\224\377\220o\221\212\377\6y\230\222\377\223\254\247" \
+ "\377\261\303\277\377\277\316\313\377\235\264\257\377\376\376\376\377" \
+ "\202\377\377\377\377\6\317\332\330\377\224\255\250\377\362\366\365\377" \
+ "\234\263\257\377\222\253\246\377r\223\214\377\212o\221\212\377\6p\221" \
+ "\212\377\223\254\247\377\332\342\341\377\377\377\377\377\247\273\267" \
+ "\377\205\242\234\377\213o\221\212\377\6\201\236\230\377\223\254\247\377" \
+ "\312\326\323\377\310\324\322\377\227\257\252\377\372\373\373\377\202" \
+ "\377\377\377\377\5\331\342\340\377\223\254\247\377\337\346\345\377\223" \
+ "\254\247\377\215\247\242\377\221o\221\212\377\1\256\301\276\377\300\333" \
+ "\343\342\377\1\237\256\253\377\234Slg\377\1\246\265\262\377\307\333\343" \
+ "\342\377\1|\233\224\377\220o\221\212\377\6\210\244\236\377\223\254\247" \
+ "\377\336\346\344\377\320\333\330\377\225\256\251\377\365\367\367\377" \
+ "\202\377\377\377\377\5\275\315\312\377\236\264\260\377\327\341\337\377" \
+ "\223\254\247\377\206\242\234\377\213o\221\212\377\6p\221\212\377\223" \
+ "\254\247\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242" \
+ "\234\377\213o\221\212\377\6r\223\214\377\222\253\246\377\236\264\260" \
+ "\377\327\340\336\377\223\254\247\377\354\360\357\377\202\377\377\377" \
+ "\377\6\310\324\322\377\231\260\253\377\371\373\373\377\257\301\276\377" \
+ "\223\254\247\377x\230\221\377\220o\221\212\377\1\256\301\276\377\300" \
+ "\333\343\342\377\1\237\256\253\377\232Slg\377\2q\207\202\377\267\304" \
+ "\302\377\310\333\343\342\377\1|\233\224\377\217o\221\212\377\16s\224" \
+ "\215\377\222\253\246\377\240\266\262\377\376\376\376\377\371\372\372" \
+ "\377\230\260\253\377\250\274\270\377\326\337\336\377\301\317\315\377" \
+ "\226\256\251\377\310\325\322\377\253\277\273\377\223\254\247\377w\227" \
+ "\220\377\213o\221\212\377\6p\221\212\377\223\254\247\377\332\342\341" \
+ "\377\377\377\377\377\247\273\267\377\205\242\234\377\214o\221\212\377" \
+ "\15\206\242\235\377\223\254\247\377\330\341\340\377\234\263\256\377\245" \
+ "\272\265\377\324\336\334\377\305\322\317\377\230\260\253\377\301\317" \
+ "\314\377\377\377\377\377\334\344\343\377\223\254\247\377\207\243\236" \
+ "\377\220o\221\212\377\1\256\301\276\377\300\333\343\342\377\1\306\321" \
+ "\317\377\206\254\271\267\377\3\202\225\221\377Slg\377f|x\377\216\254" \
+ "\271\267\377\3\263\300\276\377\304\317\315\377\325\335\334\377\312\333" \
+ "\343\342\377\1\255\300\274\377\205\244\271\265\377\1\251\275\271\377" \
+ "\211\333\343\342\377\3\263\305\301\377\223\254\247\377\315\330\326\377" \
+ "\202\377\377\377\377\10\341\350\346\377\257\301\275\377\223\254\247\377" \
+ "\234\263\256\377\306\323\321\377\345\352\351\377\223\254\247\377\241" \
+ "\266\262\377\214\333\343\342\377\6\331\340\337\377\223\254\247\377\332" \
+ "\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\214\333" \
+ "\343\342\377\16\311\325\323\377\223\254\247\377\256\300\275\377\344\352" \
+ "\351\377\262\304\301\377\223\254\247\377\231\261\254\377\303\321\316" \
+ "\377\365\367\367\377\377\377\377\377\375\376\375\377\237\265\260\377" \
+ "\223\254\247\377\322\334\333\377\210\333\343\342\377\1\310\324\322\377" \
+ "\206\244\271\265\377\1\304\322\320\377\307\333\343\342\377\3\233\253" \
+ "\250\377Slg\377p\205\201\377\352\333\343\342\377\4\330\341\337\377\230" \
+ "\257\253\377\226\256\251\377\366\370\370\377\204\377\377\377\377\6\361" \
+ "\364\363\377\374\375\375\377\377\377\377\377\275\314\311\377\223\254" \
+ "\247\377\277\315\313\377\214\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\215\333\343\342\377\6\237\265\261\377\223\254\247\377\354\361\360" \
+ "\377\377\377\377\377\362\365\365\377\372\373\373\377\204\377\377\377" \
+ "\377\3\313\327\324\377\223\254\247\377\265\306\302\377\327\333\343\342" \
+ "\377\3\233\253\250\377Slg\377p\205\201\377\352\333\343\342\377\3\277" \
+ "\315\313\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\370" \
+ "\371\371\377\227\257\252\377\230\257\253\377\330\341\337\377\214\333" \
+ "\343\342\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377" \
+ "\377\377\251\275\271\377\255\300\275\377\215\333\343\342\377\3\275\314" \
+ "\312\377\223\254\247\377\277\316\313\377\207\377\377\377\377\4\366\370" \
+ "\367\377\225\256\251\377\230\260\253\377\331\341\340\377\326\333\343" \
+ "\342\377\3\253\271\266\377t\211\205\377\213\235\231\377\352\333\343\342" \
+ "\377\3\241\266\262\377\223\254\247\377\351\356\355\377\207\377\377\377" \
+ "\377\3\317\332\330\377\223\254\247\377\263\305\301\377\215\333\343\342" \
+ "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
+ "\251\275\271\377\255\300\275\377\215\333\343\342\377\4\327\340\337\377" \
+ "\227\257\252\377\227\257\253\377\371\372\372\377\207\377\377\377\377" \
+ "\3\271\311\306\377\223\254\247\377\300\316\314\377\377\333\343\342\377" \
+ "\303\333\343\342\377\3\312\326\324\377\223\254\247\377\252\275\271\377" \
+ "\207\377\377\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377" \
+ "\321\333\332\377\215\333\343\342\377\6\331\340\337\377\223\254\247\377" \
+ "\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\216" \
+ "\333\343\342\377\3\262\303\300\377\223\254\247\377\320\333\331\377\207" \
+ "\377\377\377\377\3\347\354\353\377\223\254\247\377\242\267\263\377\377" \
+ "\333\343\342\377\303\333\343\342\377\3\254\277\274\377\223\254\247\377" \
+ "\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377" \
+ "\247\273\270\377\216\333\343\342\377\6\331\340\337\377\223\254\247\377" \
+ "\330\341\337\377\377\377\377\377\250\274\270\377\255\300\275\377\216" \
+ "\333\343\342\377\3\320\332\331\377\223\254\247\377\243\271\264\377\210" \
+ "\377\377\377\377\3\250\274\270\377\223\254\247\377\314\327\325\377\377" \
+ "\333\343\342\377\301\333\343\342\377\4\324\336\334\377\224\255\250\377" \
+ "\233\262\256\377\374\374\374\377\207\377\377\377\377\3\263\304\301\377" \
+ "\223\254\247\377\306\323\321\377\217\333\343\342\377\5\237\265\261\377" \
+ "\252\275\271\377\322\334\332\377\223\254\247\377\275\314\311\377\217" \
+ "\333\343\342\377\3\246\273\267\377\223\254\247\377\342\351\347\377\207" \
+ "\377\377\377\377\3\325\337\335\377\223\254\247\377\256\300\275\377\343" \
+ "\333\343\342\377\6\267\303\301\377\223\244\240\377|\220\214\377\213\235" \
+ "\231\377\250\267\264\377\311\323\322\377\327\333\343\342\377\3\270\310" \
+ "\305\377\223\254\247\377\306\323\321\377\207\377\377\377\377\4\361\364" \
+ "\363\377\223\254\247\377\234\263\257\377\332\342\341\377\217\333\343" \
+ "\342\377\1\307\323\321\377\202\223\254\247\377\2\240\265\261\377\332" \
+ "\342\341\377\217\333\343\342\377\3\304\322\317\377\223\254\247\377\264" \
+ "\306\302\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225" \
+ "\255\250\377\325\336\335\377\325\333\343\342\377\1\302\315\313\377\204" \
+ "\222\243\240\377\1\253\271\267\377\205\333\343\342\377\2\323\334\333" \
+ "\377\200\223\220\377\205Slg\377\2Uni\377\247\266\263\377\325\333\343" \
+ "\342\377\4\332\342\341\377\233\262\255\377\224\254\247\377\362\365\364" \
+ "\377\207\377\377\377\377\3\304\322\317\377\223\254\247\377\272\312\307" \
+ "\377\221\333\343\342\377\3\327\337\336\377\326\337\335\377\331\340\337" \
+ "\377\220\333\343\342\377\4\332\342\341\377\233\262\256\377\224\254\247" \
+ "\377\362\365\364\377\207\377\377\377\377\3\304\322\317\377\223\254\247" \
+ "\377\271\311\306\377\325\333\343\342\377\1\211\233\230\377\204Slg\377" \
+ "\1\201\224\220\377\205\333\343\342\377\1\200\223\220\377\210Slg\377\1" \
+ "\227\247\244\377\324\333\343\342\377\3\303\321\317\377\223\254\247\377" \
+ "\265\306\302\377\207\377\377\377\377\4\373\374\374\377\232\261\255\377" \
+ "\225\256\251\377\326\337\336\377\245\333\343\342\377\3\271\311\306\377" \
+ "\223\254\247\377\306\323\320\377\207\377\377\377\377\4\361\364\363\377" \
+ "\223\254\247\377\234\262\256\377\332\342\341\377\323\333\343\342\377" \
+ "\2\330\341\340\377]up\377\203Slg\377\2[sn\377\227\247\244\377\204\333" \
+ "\343\342\377\1\247\266\263\377\212Slg\377\1\305\317\316\377\323\333\343" \
+ "\342\377\3\245\272\266\377\223\254\247\377\342\351\347\377\207\377\377" \
+ "\377\377\3\325\337\335\377\223\254\247\377\256\301\275\377\246\333\343" \
+ "\342\377\4\325\336\335\377\225\255\250\377\233\262\256\377\374\374\374" \
+ "\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\305\322\320" \
+ "\377\323\333\343\342\377\1\265\302\300\377\202Slg\377\3]up\377\263\300" \
+ "\275\377\332\342\341\377\205\333\343\342\377\1i\177{\377\203Slg\377\5" \
+ "Yrm\377\233\253\250\377\266\302\300\377\246\264\262\377x\214\210\377" \
+ "\202Slg\377\1\204\227\223\377\322\333\343\342\377\3\317\332\330\377\223" \
+ "\254\247\377\243\270\264\377\210\377\377\377\377\3\250\274\270\377\223" \
+ "\254\247\377\315\330\326\377\247\333\343\342\377\3\255\300\274\377\223" \
+ "\254\247\377\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223" \
+ "\254\247\377\247\273\267\377\323\333\343\342\377\4\212\234\231\377Sl" \
+ "g\377Voj\377\307\322\320\377\206\333\343\342\377\1\270\305\303\377\203" \
+ "Slg\377\2Vni\377\303\316\314\377\203\333\343\342\377\5\331\342\341\377" \
+ "\210\233\227\377Slg\377Umh\377\315\327\325\377\321\333\343\342\377\3" \
+ "\261\303\277\377\223\254\247\377\321\333\331\377\207\377\377\377\377" \
+ "\3\347\354\353\377\223\254\247\377\243\270\264\377\250\333\343\342\377" \
+ "\3\314\327\325\377\223\254\247\377\252\275\271\377\207\377\377\377\377" \
+ "\4\376\376\376\377\242\267\263\377\223\254\247\377\320\333\331\377\322" \
+ "\333\343\342\377\3u\211\205\377Slg\377\221\242\237\377\207\333\343\342" \
+ "\377\1\204\227\223\377\203Slg\377\1\221\243\237\377\205\333\343\342\377" \
+ "\4\317\331\327\377Voj\377Slg\377\266\303\301\377\320\333\343\342\377" \
+ "\4\327\340\336\377\226\256\252\377\227\257\253\377\371\372\372\377\207" \
+ "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\315\377\251" \
+ "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
+ "\377\377\377\377\3\317\332\330\377\223\254\247\377\262\304\300\377\322" \
+ "\333\343\342\377\3dzv\377Slg\377\274\307\306\377\206\333\343\342\377" \
+ "\2\331\341\340\377\\to\377\202Slg\377\2Tmh\377\315\327\325\377\206\333" \
+ "\343\342\377\3z\216\212\377Slg\377\246\264\262\377\320\333\343\342\377" \
+ "\3\274\313\311\377\223\254\247\377\277\316\313\377\207\377\377\377\377" \
+ "\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340\377\251" \
+ "\333\343\342\377\3\300\316\314\377\223\254\247\377\273\313\310\377\207" \
+ "\377\377\377\377\1\370\371\371\377\202\227\257\252\377\1\327\340\337" \
+ "\377\320\333\343\342\377\4\331\341\340\377Umh\377Slg\377\317\330\327" \
+ "\377\206\333\343\342\377\1\271\306\304\377\203Slg\377\1z\216\212\377" \
+ "\207\333\343\342\377\3\213\235\231\377Slg\377\225\246\243\377\320\333" \
+ "\343\342\377\3\236\265\260\377\223\254\247\377\355\361\360\377\207\377" \
+ "\377\377\377\3\313\327\324\377\223\254\247\377\266\306\303\377\252\333" \
+ "\343\342\377\4\331\341\340\377\230\260\253\377\226\256\251\377\366\370" \
+ "\370\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\276\315" \
+ "\312\377\320\333\343\342\377\1\324\334\333\377\202Slg\377\1\325\336\335" \
+ "\377\206\333\343\342\377\1\216\240\235\377\203Slg\377\1\255\272\270\377" \
+ "\207\333\343\342\377\3\227\247\244\377Slg\377\210\233\227\377\317\333" \
+ "\343\342\377\3\310\324\322\377\223\254\247\377\256\301\275\377\207\377" \
+ "\377\377\377\4\375\376\375\377\237\265\260\377\224\254\247\377\323\334" \
+ "\333\377\253\333\343\342\377\3\264\305\302\377\223\254\247\377\315\330" \
+ "\326\377\207\377\377\377\377\3\353\357\356\377\223\254\247\377\237\265" \
+ "\261\377\321\333\343\342\377\3\\to\377Slg\377\310\322\321\377\205\333" \
+ "\343\342\377\2\330\341\340\377_vr\377\202Slg\377\2Xpk\377\325\336\335" \
+ "\377\207\333\343\342\377\3\214\235\232\377Slg\377\216\237\234\377\317" \
+ "\333\343\342\377\3\252\275\271\377\223\254\247\377\333\343\342\377\207" \
+ "\377\377\377\377\3\334\344\343\377\223\254\247\377\252\275\272\377\254" \
+ "\333\343\342\377\4\322\334\332\377\223\254\247\377\240\266\262\377\376" \
+ "\376\376\377\207\377\377\377\377\3\254\277\273\377\223\254\247\377\311" \
+ "\325\323\377\320\333\343\342\377\3n\203\177\377Slg\377\257\274\272\377" \
+ "\205\333\343\342\377\1\261\277\274\377\203Slg\377\1\200\223\220\377\210" \
+ "\333\343\342\377\3{\217\213\377Slg\377\227\247\244\377\316\333\343\342" \
+ "\377\4\323\334\333\377\223\254\247\377\236\265\260\377\375\375\375\377" \
+ "\207\377\377\377\377\3\257\301\276\377\223\254\247\377\310\324\322\377" \
+ "\255\333\343\342\377\3\251\274\271\377\223\254\247\377\336\346\344\377" \
+ "\207\377\377\377\377\3\331\342\340\377\223\254\247\377\253\276\273\377" \
+ "\320\333\343\342\377\3\201\224\220\377Slg\377v\212\206\377\204\333\343" \
+ "\342\377\2\330\340\337\377i\200{\377\203Slg\377\1\260\276\273\377\207" \
+ "\333\343\342\377\4\325\335\334\377^uq\377Slg\377\253\271\267\377\316" \
+ "\333\343\342\377\3\265\306\303\377\223\254\247\377\312\326\324\377\207" \
+ "\377\377\377\377\3\356\361\361\377\223\254\247\377\236\265\260\377\256" \
+ "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\277\377\207" \
+ "\377\377\377\377\4\374\375\375\377\235\263\257\377\224\255\250\377\323" \
+ "\335\334\377\317\333\343\342\377\1\263\300\275\377\202Slg\377\5\206\231" \
+ "\225\377\314\326\324\377\333\343\342\377\315\327\325\377\177\222\217" \
+ "\377\203Slg\377\2czu\377\331\341\340\377\207\333\343\342\377\1\234\253" \
+ "\251\377\202Slg\377\1\303\316\314\377\315\333\343\342\377\4\331\341\340" \
+ "\377\231\260\254\377\225\255\251\377\365\367\367\377\207\377\377\377" \
+ "\377\3\300\317\314\377\223\254\247\377\275\314\311\377\256\333\343\342" \
+ "\377\4\332\342\341\377\235\264\257\377\223\254\247\377\357\362\362\377" \
+ "\207\377\377\377\377\3\310\325\322\377\223\254\247\377\267\307\304\377" \
+ "\320\333\343\342\377\1m\202~\377\203Slg\377\1Xql\377\205Slg\377\1\235" \
+ "\254\252\377\207\333\343\342\377\4\241\261\256\377Voj\377Slg\377czu\377" \
+ "\316\333\343\342\377\3\301\317\314\377\223\254\247\377\271\311\306\377" \
+ "\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256\252\377" \
+ "\327\340\336\377\257\333\343\342\377\3\273\313\310\377\223\254\247\377" \
+ "\302\320\315\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377" \
+ "\232\261\254\377\331\341\340\377\317\333\343\342\377\2\265\302\300\377" \
+ "Voj\377\207Slg\377\2o\205\201\377\330\340\337\377\204\333\343\342\377" \
+ "\3\274\307\306\377\210\233\227\377k\201}\377\203Slg\377\1\221\243\237" \
+ "\377\316\333\343\342\377\3\243\270\264\377\223\254\247\377\346\354\352" \
+ "\377\207\377\377\377\377\3\322\334\332\377\223\254\247\377\261\303\277" \
+ "\377\260\333\343\342\377\4\326\337\336\377\226\256\251\377\231\261\254" \
+ "\377\372\373\373\377\207\377\377\377\377\3\267\307\304\377\223\254\247" \
+ "\377\302\320\316\377\320\333\343\342\377\2\274\310\306\377_wr\377\205" \
+ "Slg\377\2j\200|\377\311\324\322\377\205\333\343\342\377\1\226\247\244" \
+ "\377\205Slg\377\1\300\313\311\377\315\333\343\342\377\3\314\330\326\377" \
+ "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
+ "\223\254\247\377\317\332\330\377\261\333\343\342\377\3\260\302\276\377" \
+ "\223\254\247\377\324\336\334\377\207\377\377\377\377\3\344\352\351\377" \
+ "\223\254\247\377\244\271\265\377\321\333\343\342\377\7\316\330\326\377" \
+ "\250\266\264\377\214\236\233\377v\213\207\377\206\230\225\377\244\263" \
+ "\260\377\330\341\340\377\206\333\343\342\377\1\243\262\257\377\204l\201" \
+ "}\377\1x\215\211\377\316\333\343\342\377\3\256\301\275\377\223\254\247" \
+ "\377\325\336\334\377\207\377\377\377\377\3\343\351\350\377\223\254\247" \
+ "\377\245\272\266\377\262\333\343\342\377\3\316\331\327\377\223\254\247" \
+ "\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254\247" \
+ "\377\316\331\327\377\377\333\343\342\377\261\333\343\342\377\4\325\337" \
+ "\335\377\225\255\251\377\232\261\254\377\373\374\373\377\207\377\377" \
+ "\377\377\3\266\307\303\377\223\254\247\377\303\321\317\377\263\333\343" \
+ "\342\377\3\244\271\265\377\223\254\247\377\345\353\352\377\207\377\377" \
+ "\377\377\3\322\335\333\377\223\254\247\377\260\302\276\377\377\333\343" \
+ "\342\377\261\333\343\342\377\3\272\311\307\377\223\254\247\377\303\321" \
+ "\316\377\207\377\377\377\377\4\363\366\365\377\224\255\250\377\232\262" \
+ "\255\377\332\342\341\377\263\333\343\342\377\3\302\320\316\377\223\254" \
+ "\247\377\270\310\305\377\207\377\377\377\377\4\372\373\373\377\231\260" \
+ "\254\377\226\256\251\377\326\337\336\377\377\333\343\342\377\257\333" \
+ "\343\342\377\4\332\342\341\377\234\263\256\377\223\254\247\377\360\363" \
+ "\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247\377\270\310" \
+ "\305\377\264\333\343\342\377\4\331\341\340\377\232\261\254\377\225\255" \
+ "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
+ "\247\377\273\313\310\377\314\333\343\342\377\3\277\312\310\377\237\256" \
+ "\253\377\254\272\270\377\337\333\343\342\377\3\305\322\320\377\223\254" \
+ "\247\377\262\304\300\377\207\377\377\377\377\4\374\375\374\377\234\263" \
+ "\256\377\224\255\250\377\324\336\334\377\265\333\343\342\377\3\266\307" \
+ "\304\377\223\254\247\377\311\325\323\377\207\377\377\377\377\4\356\362" \
+ "\361\377\223\254\247\377\235\264\257\377\332\342\341\377\313\333\343" \
+ "\342\377\3\233\253\250\377Slg\377p\205\201\377\337\333\343\342\377\3" \
+ "\247\273\267\377\223\254\247\377\337\346\345\377\207\377\377\377\377" \
+ "\3\330\341\337\377\223\254\247\377\254\277\274\377\266\333\343\342\377" \
+ "\4\323\335\334\377\224\255\250\377\235\264\257\377\375\375\375\377\207" \
+ "\377\377\377\377\3\260\302\276\377\223\254\247\377\307\323\321\377\313" \
+ "\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343\342" \
+ "\377\4\321\333\331\377\223\254\247\377\241\266\262\377\376\376\376\377" \
+ "\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326\324\377" \
+ "\267\333\343\342\377\3\253\276\272\377\223\254\247\377\333\343\341\377" \
+ "\207\377\377\377\377\3\335\345\343\377\223\254\247\377\251\274\271\377" \
+ "\313\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343" \
+ "\342\377\3\263\304\301\377\223\254\247\377\315\331\326\377\207\377\377" \
+ "\377\377\3\351\356\355\377\223\254\247\377\241\266\262\377\270\333\343" \
+ "\342\377\3\311\325\323\377\223\254\247\377\254\277\273\377\207\377\377" \
+ "\377\377\4\375\376\375\377\240\265\261\377\223\254\247\377\321\334\332" \
+ "\377\312\333\343\342\377\3\233\253\250\377Slg\377[sn\377\223x\215\211" \
+ "\377\5z\216\212\377\202\225\221\377\214\236\233\377\246\265\262\377\310" \
+ "\323\321\377\305\333\343\342\377\4\330\340\337\377\227\257\252\377\226" \
+ "\256\252\377\367\371\370\377\207\377\377\377\377\3\274\313\310\377\223" \
+ "\254\247\377\277\315\313\377\271\333\343\342\377\3\237\265\261\377\223" \
+ "\254\247\377\353\360\357\377\207\377\377\377\377\3\314\327\325\377\223" \
+ "\254\247\377\264\305\302\377\312\333\343\342\377\1\233\253\250\377\232" \
+ "Slg\377\2x\214\210\377\275\311\307\377\303\333\343\342\377\3\276\315" \
+ "\312\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\367\371" \
+ "\370\377\226\256\251\377\230\257\253\377\330\341\337\377\271\333\343" \
+ "\342\377\3\275\314\312\377\223\254\247\377\276\315\312\377\207\377\377" \
+ "\377\377\4\366\370\370\377\225\256\251\377\230\260\253\377\330\341\340" \
+ "\377\311\333\343\342\377\1\233\253\250\377\233Slg\377\2Tmh\377\237\256" \
+ "\253\377\302\333\343\342\377\3\240\266\262\377\223\254\247\377\351\356" \
+ "\355\377\207\377\377\377\377\3\315\330\326\377\223\254\247\377\263\305" \
+ "\301\377\272\333\343\342\377\1\327\340\337\377\202\227\257\252\377\1" \
+ "\370\371\371\377\207\377\377\377\377\3\272\312\307\377\223\254\247\377" \
+ "\300\316\314\377\311\333\343\342\377\1\233\253\250\377\235Slg\377\1\243" \
+ "\262\257\377\300\333\343\342\377\3\312\326\324\377\223\254\247\377\252" \
+ "\276\272\377\207\377\377\377\377\4\376\376\376\377\240\266\262\377\223" \
+ "\254\247\377\321\333\332\377\273\333\343\342\377\3\262\303\300\377\223" \
+ "\254\247\377\317\332\330\377\207\377\377\377\377\3\350\355\354\377\223" \
+ "\254\247\377\241\267\263\377\311\333\343\342\377\4\321\332\331\377\305" \
+ "\320\316\377\305\317\316\377\207\231\226\377\202Slg\377\5j\200|\377\224" \
+ "\245\242\377\244\263\260\377\264\300\276\377\302\315\313\377\202\305" \
+ "\320\316\377\16\274\307\306\377\254\272\270\377\235\255\252\377\207\232" \
+ "\226\377Xql\377Slg\377^vq\377\257\274\272\377\305\320\316\377\304\316" \
+ "\315\377\266\303\301\377\247\265\263\377\227\250\245\377s\210\203\377" \
+ "\203Slg\377\2Vni\377\304\317\315\377\277\333\343\342\377\3\254\277\273" \
+ "\377\223\254\247\377\330\341\337\377\207\377\377\377\377\3\336\346\344" \
+ "\377\223\254\247\377\247\273\270\377\274\333\343\342\377\4\320\332\331" \
+ "\377\223\254\247\377\242\270\263\377\376\376\376\377\207\377\377\377" \
+ "\377\3\251\275\271\377\223\254\247\377\313\327\325\377\311\333\343\342" \
+ "\377\5\327\340\337\377y\215\211\377Slg\377q\207\202\377\266\302\300\377" \
+ "\213\333\343\342\377\5\321\333\331\377\233\253\250\377Yrm\377Wpk\377" \
+ "\255\273\271\377\205\333\343\342\377\2\271\305\303\377r\207\203\377\202" \
+ "Slg\377\1\203\226\222\377\276\333\343\342\377\4\324\336\334\377\224\255" \
+ "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\261\303" \
+ "\277\377\223\254\247\377\306\323\321\377\275\333\343\342\377\3\246\273" \
+ "\267\377\223\254\247\377\340\347\346\377\207\377\377\377\377\3\326\340" \
+ "\336\377\223\254\247\377\255\300\274\377\311\333\343\342\377\4\211\234" \
+ "\230\377Slg\377n\204\200\377\325\336\335\377\216\333\343\342\377\4\263" \
+ "\300\275\377Tlg\377Wpk\377\300\314\312\377\205\333\343\342\377\5\325" \
+ "\335\334\377f}x\377Slg\377Umh\377\324\334\333\377\275\333\343\342\377" \
+ "\3\267\310\305\377\223\254\247\377\307\324\321\377\207\377\377\377\377" \
+ "\4\357\363\362\377\223\254\247\377\234\263\257\377\332\342\341\377\275" \
+ "\333\343\342\377\3\304\322\317\377\223\254\247\377\263\304\301\377\207" \
+ "\377\377\377\377\4\373\374\374\377\233\262\255\377\225\255\250\377\325" \
+ "\336\335\377\307\333\343\342\377\4\275\311\307\377Slg\377\\so\377\316" \
+ "\327\326\377\220\333\343\342\377\3\227\250\245\377Slg\377p\206\202\377" \
+ "\206\333\343\342\377\4\276\312\310\377Tlg\377Slg\377\266\302\300\377" \
+ "\274\333\343\342\377\4\331\342\341\377\232\261\255\377\224\254\247\377" \
+ "\362\365\364\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377" \
+ "\272\312\307\377\276\333\343\342\377\4\332\342\341\377\233\262\256\377" \
+ "\223\254\247\377\361\364\363\377\207\377\377\377\377\3\305\322\320\377" \
+ "\223\254\247\377\271\311\306\377\307\333\343\342\377\3\211\233\230\377" \
+ "Slg\377|\217\214\377\221\333\343\342\377\1\304\317\315\377\202Slg\377" \
+ "\1\305\317\316\377\206\333\343\342\377\3f}x\377Slg\377\235\254\252\377" \
+ "\274\333\343\342\377\3\303\320\316\377\223\254\247\377\265\306\302\377" \
+ "\207\377\377\377\377\4\372\373\373\377\231\261\254\377\225\255\251\377" \
+ "\326\337\336\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
+ "\304\322\317\377\207\377\377\377\377\4\361\364\363\377\223\254\247\377" \
+ "\233\262\256\377\332\342\341\377\306\333\343\342\377\3e{w\377Slg\377" \
+ "\227\250\245\377\221\333\343\342\377\4\331\342\341\377Xql\377Slg\377" \
+ "\241\261\256\377\206\333\343\342\377\3}\221\215\377Slg\377\221\242\237" \
+ "\377\274\333\343\342\377\3\245\271\265\377\223\254\247\377\343\351\350" \
+ "\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301\275" \
+ "\377\300\333\343\342\377\4\325\336\335\377\225\255\250\377\232\262\255" \
+ "\377\373\374\374\377\207\377\377\377\377\3\264\305\301\377\223\254\247" \
+ "\377\304\321\317\377\305\333\343\342\377\4\332\342\341\377Vni\377Slg" \
+ "\377\243\262\257\377\222\333\343\342\377\3czu\377Slg\377\223\244\241" \
+ "\377\206\333\343\342\377\3\224\244\241\377Slg\377\210\233\227\377\273" \
+ "\333\343\342\377\3\316\331\330\377\223\254\247\377\244\271\264\377\210" \
+ "\377\377\377\377\3\246\273\267\377\223\254\247\377\315\330\326\377\301" \
+ "\333\343\342\377\4\255\300\274\377\222\253\246\377\315\330\326\377\376" \
+ "\376\376\377\206\377\377\377\377\3\341\350\346\377\223\254\247\377\246" \
+ "\272\266\377\305\333\343\342\377\1\322\333\332\377\202Slg\377\1\205\230" \
+ "\224\377\221\333\343\342\377\1\316\327\326\377\202Slg\377\1\211\234\230" \
+ "\377\206\333\343\342\377\3\220\242\236\377Slg\377\222\243\240\377\273" \
+ "\333\343\342\377\3\260\302\277\377\223\254\247\377\321\334\332\377\207" \
+ "\377\377\377\377\3\345\353\352\377\223\254\247\377\243\270\264\377\302" \
+ "\333\343\342\377\16\314\327\325\377\223\254\246\377\223\254\247\377\226" \
+ "\256\251\377\244\271\265\377\264\305\302\377\303\321\316\377\323\335" \
+ "\333\377\342\351\350\377\361\365\364\377\375\375\375\377\242\270\263" \
+ "\377\223\254\247\377\317\332\330\377\304\333\343\342\377\4\332\342\341" \
+ "\377Vni\377Slg\377f|x\377\221\333\343\342\377\1\256\274\271\377\202S" \
+ "lg\377\1\226\246\243\377\206\333\343\342\377\3\202\225\221\377Slg\377" \
+ "\237\257\254\377\272\333\343\342\377\4\327\337\336\377\226\256\251\377" \
+ "\230\260\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377" \
+ "\223\254\247\377\301\317\315\377\303\333\343\342\377\15\232\262\255\377" \
+ "\223\254\246\377\325\336\335\377\331\342\340\377\312\326\324\377\273" \
+ "\313\310\377\254\277\273\377\235\263\257\377\223\254\247\377\226\256" \
+ "\251\377\234\263\256\377\222\254\246\377\256\300\274\377\305\333\343" \
+ "\342\377\1i\200{\377\202Slg\377\1\224\244\241\377\217\333\343\342\377" \
+ "\2\313\325\323\377czu\377\202Slg\377\1\253\271\266\377\205\333\343\342" \
+ "\377\4\331\341\340\377czu\377Slg\377\254\272\270\377\272\333\343\342" \
+ "\377\3\274\313\310\377\223\254\247\377\277\316\313\377\207\377\377\377" \
+ "\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341\340\377" \
+ "\303\333\343\342\377\3\275\313\311\377\222\254\246\377\257\301\276\377" \
+ "\205\377\377\377\377\3\372\373\373\377\353\360\357\377\327\340\335\377" \
+ "\202\224\255\250\377\3\327\340\337\377\331\342\341\377\322\334\333\377" \
+ "\302\333\343\342\377\1\226\247\244\377\203Slg\377\2\231\252\247\377\330" \
+ "\341\340\377\214\333\343\342\377\2\310\323\321\377f|x\377\202Slg\377" \
+ "\2Voj\377\323\334\332\377\205\333\343\342\377\1\253\271\266\377\202S" \
+ "lg\377\1\272\306\304\377\272\333\343\342\377\3\236\264\260\377\223\254" \
+ "\247\377\355\361\360\377\207\377\377\377\377\3\311\325\323\377\223\254" \
+ "\247\377\266\306\303\377\304\333\343\342\377\4\331\341\340\377\224\255" \
+ "\250\377\224\254\247\377\366\370\367\377\207\377\377\377\377\5\263\305" \
+ "\301\377\222\254\246\377\266\306\302\377\232\262\254\377\240\266\262" \
+ "\377\302\333\343\342\377\2\314\325\324\377Xql\377\203Slg\377\4_wr\377" \
+ "\221\243\237\377\304\316\315\377\330\341\340\377\206\333\343\342\377" \
+ "\4\322\333\332\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377\1\211" \
+ "\233\230\377\205\333\343\342\377\5\263\300\276\377Xql\377Slg\377Xql\377" \
+ "\326\336\335\377\271\333\343\342\377\3\310\324\322\377\223\254\247\377" \
+ "\256\301\275\377\207\377\377\377\377\4\375\375\375\377\235\264\257\377" \
+ "\223\254\247\377\323\334\333\377\305\333\343\342\377\3\256\300\276\377" \
+ "\223\253\246\377\305\322\320\377\207\377\377\377\377\6\353\360\357\377" \
+ "\222\254\247\377\231\261\255\377\241\267\262\377\223\254\247\377\312" \
+ "\326\324\377\302\333\343\342\377\1\237\256\253\377\206Slg\377\7Tlg\377" \
+ "^vq\377l\202~\377y\215\211\377s\210\203\377e|w\377Xpk\377\206Slg\377" \
+ "\2_wr\377\321\333\331\377\203\333\343\342\377\2\255\272\270\377q\207" \
+ "\202\377\203Slg\377\1~\222\216\377\272\333\343\342\377\3\251\275\271" \
+ "\377\223\254\247\377\334\344\342\377\207\377\377\377\377\3\333\343\341" \
+ "\377\223\254\247\377\252\275\271\377\306\333\343\342\377\4\322\334\332" \
+ "\377\223\253\246\377\231\260\253\377\375\376\375\377\207\377\377\377" \
+ "\377\5\242\267\263\377\222\253\246\377\265\305\302\377\223\254\247\377" \
+ "\254\277\273\377\303\333\343\342\377\1\220\242\236\377\221Slg\377\2_" \
+ "vr\377\304\316\315\377\204\333\343\342\377\1}\220\215\377\204Slg\377" \
+ "\1\251\267\265\377\271\333\343\342\377\4\322\334\333\377\223\254\247" \
+ "\377\236\265\260\377\375\376\375\377\207\377\377\377\377\3\255\300\274" \
+ "\377\223\254\247\377\310\324\322\377\307\333\343\342\377\3\241\266\263" \
+ "\377\223\253\247\377\332\342\341\377\203\377\377\377\377\2\371\372\372" \
+ "\377\364\367\366\377\202\377\377\377\377\6\326\340\336\377\222\254\246" \
+ "\377\243\270\263\377\230\260\253\377\225\255\250\377\324\336\334\377" \
+ "\303\333\343\342\377\2\242\261\256\377Yql\377\216Slg\377\2s\210\204\377" \
+ "\310\322\321\377\205\333\343\342\377\1\235\255\252\377\204\201\224\220" \
+ "\377\1\321\333\331\377\271\333\343\342\377\3\265\306\302\377\223\254" \
+ "\247\377\312\326\324\377\207\377\377\377\377\3\354\360\357\377\223\254" \
+ "\247\377\236\265\260\377\310\333\343\342\377\3\306\322\320\377\222\253" \
+ "\246\377\244\271\266\377\203\377\377\377\377\2\244\271\264\377\272\312" \
+ "\307\377\202\377\377\377\377\6\374\375\375\377\227\257\252\377\223\254" \
+ "\246\377\260\303\277\377\223\254\247\377\267\310\305\377\304\333\343" \
+ "\342\377\3\313\325\323\377\212\234\231\377Yrm\377\212Slg\377\3n\203\177" \
+ "\377\247\266\263\377\332\342\341\377\304\333\343\342\377\4\331\341\340" \
+ "\377\230\260\253\377\225\255\251\377\365\367\367\377\207\377\377\377" \
+ "\377\3\277\315\312\377\223\254\247\377\275\314\311\377\310\333\343\342" \
+ "\377\4\332\342\341\377\227\257\253\377\223\253\246\377\356\361\361\377" \
+ "\202\377\377\377\377\3\312\326\324\377\226\256\251\377\367\370\370\377" \
+ "\202\377\377\377\377\6\300\316\314\377\223\253\246\377\226\256\250\377" \
+ "\223\254\247\377\233\261\255\377\332\342\341\377\305\333\343\342\377" \
+ "\13\324\335\334\377\261\277\274\377\224\244\241\377|\217\214\377r\207" \
+ "\203\377j\200|\377n\203\177\377v\213\207\377\205\227\224\377\242\261" \
+ "\256\377\303\316\314\377\307\333\343\342\377\3\301\317\314\377\223\254" \
+ "\247\377\271\311\306\377\207\377\377\377\377\4\370\372\371\377\227\257" \
+ "\252\377\226\256\252\377\327\340\336\377\311\333\343\342\377\3\267\310" \
+ "\305\377\223\253\246\377\266\307\304\377\202\377\377\377\377\3\365\367" \
+ "\367\377\225\256\251\377\315\330\326\377\202\377\377\377\377\6\364\366" \
+ "\366\377\223\254\246\377\223\253\247\377\235\263\260\377\223\254\247" \
+ "\377\303\321\317\377\377\333\343\342\377\230\333\343\342\377\3\242\267" \
+ "\263\377\223\254\247\377\346\354\353\377\207\377\377\377\377\3\320\333" \
+ "\331\377\223\254\247\377\261\303\277\377\312\333\343\342\377\4\326\337" \
+ "\336\377\223\254\247\377\224\255\250\377\371\373\372\377\202\377\377" \
+ "\377\377\3\271\311\306\377\241\266\262\377\376\376\376\377\202\377\377" \
+ "\377\377\5\253\277\273\377\223\253\247\377\263\305\302\377\223\254\247" \
+ "\377\245\271\265\377\377\333\343\342\377\227\333\343\342\377\3\314\330" \
+ "\326\377\223\254\247\377\247\273\267\377\207\377\377\377\377\4\376\376" \
+ "\376\377\243\270\264\377\223\254\247\377\317\332\330\377\313\333\343" \
+ "\342\377\3\251\274\270\377\222\254\247\377\315\330\325\377\202\377\377" \
+ "\377\377\3\346\354\353\377\223\254\247\377\337\346\345\377\202\377\377" \
+ "\377\377\2\344\352\350\377\223\254\246\377\202\235\263\257\377\2\223" \
+ "\254\247\377\316\331\330\377\377\333\343\342\377\226\333\343\342\377" \
+ "\3\256\300\275\377\223\254\247\377\325\337\335\377\207\377\377\377\377" \
+ "\3\341\350\347\377\223\254\247\377\245\272\266\377\314\333\343\342\377" \
+ "\3\316\331\327\377\222\253\246\377\234\263\256\377\203\377\377\377\377" \
+ "\2\247\274\270\377\261\303\300\377\203\377\377\377\377\5\234\263\256" \
+ "\377\223\253\246\377\263\305\301\377\223\254\247\377\260\303\277\377" \
+ "\322\333\343\342\377\1\304\317\315\377\202\201\224\220\377\277\333\343" \
+ "\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374\373" \
+ "\377\207\377\377\377\377\3\264\305\302\377\223\254\247\377\303\321\317" \
+ "\377\315\333\343\342\377\3\235\263\260\377\223\253\246\377\342\351\347" \
+ "\377\202\377\377\377\377\3\325\336\334\377\223\254\247\377\360\363\363" \
+ "\377\202\377\377\377\377\5\315\330\326\377\223\253\246\377\247\274\267" \
+ "\377\227\256\251\377\253\276\273\377\322\333\343\342\377\1\270\305\303" \
+ "\377\202Slg\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
+ "\303\321\316\377\207\377\377\377\377\4\361\364\364\377\224\254\247\377" \
+ "\232\262\255\377\332\342\341\377\315\333\343\342\377\3\300\317\315\377" \
+ "\223\254\246\377\253\277\272\377\202\377\377\377\377\3\373\374\374\377" \
+ "\232\262\255\377\303\321\316\377\202\377\377\377\377\4\372\373\373\377" \
+ "\225\255\251\377\224\254\247\377\321\333\332\377\323\333\343\342\377" \
+ "\1\270\305\303\377\202Slg\377\276\333\343\342\377\4\332\342\341\377\234" \
+ "\263\256\377\223\254\247\377\360\363\363\377\207\377\377\377\377\3\305" \
+ "\323\320\377\223\254\247\377\270\310\305\377\316\333\343\342\377\4\331" \
+ "\341\340\377\226\255\251\377\223\253\247\377\363\366\365\377\202\377" \
+ "\377\377\377\3\304\321\317\377\232\262\255\377\373\374\374\377\202\377" \
+ "\377\377\377\3\267\310\304\377\222\253\246\377\270\310\304\377\306\333" \
+ "\343\342\377\2\317\331\327\377\301\314\312\377\213\275\310\306\377\1" \
+ "\242\261\256\377\202Slg\377\276\333\343\342\377\3\305\322\320\377\223" \
+ "\254\247\377\262\304\300\377\207\377\377\377\377\4\374\374\374\377\233" \
+ "\262\255\377\224\255\250\377\324\336\334\377\317\333\343\342\377\3\261" \
+ "\303\300\377\223\253\246\377\276\315\313\377\202\377\377\377\377\3\360" \
+ "\364\363\377\223\254\247\377\325\337\335\377\202\377\377\377\377\4\357" \
+ "\362\362\377\222\253\246\377\231\260\253\377\332\342\341\377\301\333" \
+ "\343\342\377\4\305\320\316\377\204\227\223\377e|w\377Voj\377\220Slg\377" \
+ "\276\333\343\342\377\3\247\273\267\377\223\254\247\377\340\347\345\377" \
+ "\207\377\377\377\377\3\327\340\336\377\223\254\247\377\254\277\274\377" \
+ "\320\333\343\342\377\4\323\335\334\377\223\253\247\377\226\256\252\377" \
+ "\374\375\374\377\202\377\377\377\377\2\262\304\301\377\250\274\270\377" \
+ "\202\377\377\377\377\4\354\360\357\377\232\262\255\377\223\253\247\377" \
+ "\306\323\321\377\277\333\343\342\377\3\325\335\334\377\202\225\221\377" \
+ "Tlg\377\223Slg\377\275\333\343\342\377\4\320\333\331\377\223\254\247" \
+ "\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\251\275\271" \
+ "\377\223\254\247\377\312\326\324\377\321\333\343\342\377\3\244\271\264" \
+ "\377\223\254\247\377\325\337\335\377\202\377\377\377\377\10\340\347\346" \
+ "\377\223\254\247\377\312\327\324\377\255\300\274\377\226\256\251\377" \
+ "\255\277\274\377\222\254\247\377\250\274\270\377\277\333\343\342\377" \
+ "\1\207\232\226\377\225Slg\377\275\333\343\342\377\3\262\304\300\377\223" \
+ "\254\247\377\316\331\327\377\207\377\377\377\377\3\350\355\354\377\223" \
+ "\254\247\377\240\266\262\377\322\333\343\342\377\16\311\325\323\377\223" \
+ "\254\246\377\241\266\263\377\377\377\377\377\364\367\366\377\310\325" \
+ "\322\377\227\257\252\377\234\263\256\377\312\327\324\377\365\370\367" \
+ "\377\376\376\376\377\240\266\261\377\223\254\247\377\321\333\332\377" \
+ "\275\333\343\342\377\1\257\275\272\377\205Slg\377\4Voj\377axt\377k\201" \
+ "|\377t\211\205\377\212x\215\211\377\1o\204\200\377\202Slg\377\274\333" \
+ "\343\342\377\4\330\340\337\377\227\257\252\377\226\256\252\377\367\371" \
+ "\371\377\207\377\377\377\377\3\273\312\307\377\223\254\247\377\277\315" \
+ "\313\377\323\333\343\342\377\7\231\260\254\377\223\253\247\377\260\302" \
+ "\276\377\225\256\251\377\257\301\276\377\334\344\343\377\376\376\376" \
+ "\377\203\377\377\377\377\3\315\330\326\377\223\254\247\377\264\305\302" \
+ "\377\275\333\343\342\377\1\201\225\221\377\203Slg\377\3~\222\216\377" \
+ "\261\277\274\377\327\340\337\377\215\333\343\342\377\1\270\305\303\377" \
+ "\202Slg\377\274\333\343\342\377\3\276\315\312\377\223\254\247\377\274" \
+ "\314\311\377\207\377\377\377\377\4\366\370\370\377\225\256\251\377\230" \
+ "\257\253\377\330\341\337\377\323\333\343\342\377\4\273\312\310\377\222" \
+ "\254\246\377\244\271\265\377\356\362\361\377\206\377\377\377\377\4\366" \
+ "\370\370\377\226\256\251\377\230\257\253\377\330\341\340\377\274\333" \
+ "\343\342\377\1i\200{\377\202Slg\377\1\204\226\223\377\220\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\274\333\343\342\377\3\237\265\261\377" \
+ "\223\254\247\377\352\357\356\377\207\377\377\377\377\3\314\330\325\377" \
+ "\223\254\247\377\263\304\301\377\324\333\343\342\377\4\327\340\337\377" \
+ "\227\257\252\377\226\256\252\377\367\371\371\377\207\377\377\377\377" \
+ "\3\273\313\310\377\223\254\247\377\277\316\313\377\273\333\343\342\377" \
+ "\2\330\340\337\377Uni\377\202Slg\377\1\321\333\331\377\220\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\273\333\343\342\377\3\312\326\324\377" \
+ "\223\254\247\377\253\276\273\377\207\377\377\377\377\4\376\376\376\377" \
+ "\240\265\261\377\223\254\247\377\321\333\332\377\325\333\343\342\377" \
+ "\3\262\303\300\377\223\254\247\377\316\331\327\377\207\377\377\377\377" \
+ "\3\350\356\355\377\223\254\247\377\241\267\262\377\273\333\343\342\377" \
+ "\4\326\337\336\377Tlg\377Slg\377byt\377\221\333\343\342\377\1\330\341" \
+ "\340\377\202\322\333\332\377\273\333\343\342\377\3\253\276\273\377\223" \
+ "\254\247\377\330\341\337\377\207\377\377\377\377\3\335\345\344\377\223" \
+ "\254\247\377\247\273\270\377\326\333\343\342\377\4\320\332\331\377\223" \
+ "\254\247\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\252" \
+ "\275\271\377\223\254\247\377\313\326\325\377\273\333\343\342\377\3cz" \
+ "u\377Slg\377l\202~\377\316\333\343\342\377\4\323\335\334\377\224\255" \
+ "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\260\302" \
+ "\276\377\223\254\247\377\306\323\321\377\327\333\343\342\377\3\246\273" \
+ "\267\377\223\254\247\377\340\347\345\377\207\377\377\377\377\3\327\340" \
+ "\336\377\223\254\247\377\254\277\274\377\273\333\343\342\377\4\207\231" \
+ "\226\377Slg\377Vni\377\327\337\336\377\315\333\343\342\377\3\267\307" \
+ "\304\377\223\254\247\377\307\324\321\377\207\377\377\377\377\4\356\362" \
+ "\361\377\223\254\247\377\234\263\257\377\332\342\341\377\327\333\343" \
+ "\342\377\3\304\322\317\377\223\254\247\377\262\304\300\377\207\377\377" \
+ "\377\377\4\374\374\374\377\233\262\256\377\224\255\250\377\325\336\335" \
+ "\377\272\333\343\342\377\1\305\317\316\377\202Slg\377\1\271\306\304\377" \
+ "\220\333\343\342\377\1\307\322\320\377\202\216\237\234\377\271\333\343" \
+ "\342\377\4\331\342\341\377\232\261\255\377\224\255\250\377\363\366\365" \
+ "\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377\272\312\307" \
+ "\377\330\333\343\342\377\4\332\342\341\377\233\262\256\377\223\254\247" \
+ "\377\360\363\363\377\207\377\377\377\377\3\306\323\320\377\223\254\247" \
+ "\377\270\310\305\377\273\333\343\342\377\4\232\252\247\377Slg\377d{v" \
+ "\377\317\330\327\377\217\333\343\342\377\1\270\305\303\377\202Slg\377" \
+ "\271\333\343\342\377\3\303\320\316\377\223\254\247\377\266\307\303\377" \
+ "\207\377\377\377\377\4\372\373\373\377\231\260\254\377\225\255\251\377" \
+ "\326\337\336\377\331\333\343\342\377\3\271\311\306\377\223\254\247\377" \
+ "\303\321\316\377\207\377\377\377\377\4\362\365\364\377\224\254\247\377" \
+ "\233\262\255\377\332\342\341\377\273\333\343\342\377\4\226\246\243\377" \
+ "Tmh\377l\201}\377\267\303\301\377\216\333\343\342\377\1\270\305\303\377" \
+ "\202Slg\377\271\333\343\342\377\3\244\271\265\377\223\254\247\377\343" \
+ "\352\350\377\207\377\377\377\377\3\323\335\333\377\223\254\247\377\256" \
+ "\301\275\377\332\333\343\342\377\4\325\336\335\377\225\255\250\377\232" \
+ "\261\254\377\373\374\373\377\207\377\377\377\377\3\264\306\302\377\223" \
+ "\254\247\377\304\321\317\377\271\333\343\342\377\1\317\330\327\377\202" \
+ "\301\314\312\377\10\246\265\262\377^vq\377Slg\377k\201}\377\226\247\244" \
+ "\377\245\264\261\377\263\300\276\377\277\313\311\377\211\301\314\312" \
+ "\377\1\245\264\261\377\202Slg\377\270\333\343\342\377\3\316\331\327\377" \
+ "\223\254\247\377\245\271\265\377\210\377\377\377\377\3\246\272\266\377" \
+ "\223\254\247\377\315\330\326\377\333\333\343\342\377\3\255\300\274\377" \
+ "\223\254\247\377\325\336\334\377\207\377\377\377\377\3\342\350\347\377" \
+ "\223\254\247\377\245\272\266\377\271\333\343\342\377\1\233\253\250\377" \
+ "\226Slg\377\270\333\343\342\377\3\260\302\276\377\223\254\247\377\322" \
+ "\334\332\377\207\377\377\377\377\3\344\352\351\377\223\254\247\377\243" \
+ "\270\264\377\334\333\343\342\377\3\314\327\325\377\223\254\247\377\247" \
+ "\273\267\377\207\377\377\377\377\4\376\376\376\377\243\270\264\377\223" \
+ "\254\247\377\317\332\330\377\270\333\343\342\377\1\233\253\250\377\226" \
+ "Slg\377\267\333\343\342\377\4\326\337\336\377\226\256\251\377\230\260" \
+ "\253\377\371\373\372\377\207\377\377\377\377\3\267\307\304\377\223\254" \
+ "\247\377\301\317\315\377\335\333\343\342\377\3\241\267\263\377\223\254" \
+ "\247\377\346\354\353\377\207\377\377\377\377\3\320\333\331\377\223\254" \
+ "\247\377\261\303\277\377\270\333\343\342\377\1\233\253\250\377\226Sl" \
+ "g\377\267\333\343\342\377\3\273\313\310\377\223\254\247\377\300\317\314" \
+ "\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377\231\260\254" \
+ "\377\331\341\340\377\335\333\343\342\377\3\300\316\314\377\223\254\247" \
+ "\377\271\311\306\377\207\377\377\377\377\4\371\372\372\377\227\257\253" \
+ "\377\226\256\252\377\327\340\337\377\267\333\343\342\377\3\233\253\250" \
+ "\377Slg\377[sn\377\221x\215\211\377\1o\204\200\377\202Slg\377\266\333" \
+ "\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247\377\356\361" \
+ "\361\377\207\377\377\377\377\3\310\325\322\377\223\254\247\377\266\306" \
+ "\303\377\336\333\343\342\377\4\330\341\340\377\230\260\253\377\225\255" \
+ "\251\377\365\367\367\377\207\377\377\377\377\3\277\316\313\377\223\254" \
+ "\247\377\275\314\311\377\267\333\343\342\377\3\233\253\250\377Slg\377" \
+ "p\205\201\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\266\333" \
+ "\343\342\377\3\307\324\322\377\223\254\247\377\257\301\276\377\207\377" \
+ "\377\377\377\4\374\375\375\377\235\264\257\377\223\254\247\377\323\334" \
+ "\333\377\337\333\343\342\377\3\264\305\302\377\223\254\247\377\312\326" \
+ "\324\377\207\377\377\377\377\3\354\361\360\377\223\254\247\377\236\265" \
+ "\260\377\267\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221" \
+ "\333\343\342\377\1\270\305\303\377\202Slg\377\266\333\343\342\377\3\251" \
+ "\274\271\377\223\254\247\377\334\344\343\377\207\377\377\377\377\3\332" \
+ "\342\340\377\223\254\247\377\252\275\271\377\340\333\343\342\377\4\322" \
+ "\334\332\377\223\254\247\377\236\265\260\377\375\375\375\377\207\377" \
+ "\377\377\377\3\256\300\275\377\223\254\247\377\310\324\322\377\266\333" \
+ "\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343\342\377" \
+ "\1\270\305\303\377\202Slg\377\265\333\343\342\377\4\322\334\332\377\223" \
+ "\254\247\377\237\265\260\377\375\376\375\377\207\377\377\377\377\3\254" \
+ "\277\273\377\223\254\247\377\310\324\322\377\341\333\343\342\377\3\251" \
+ "\274\271\377\223\254\247\377\333\343\342\377\207\377\377\377\377\3\333" \
+ "\343\342\377\223\254\247\377\252\275\272\377\266\333\343\342\377\3\277" \
+ "\312\310\377\237\256\253\377\254\272\270\377\221\333\343\342\377\1\323" \
+ "\334\333\377\202\275\310\306\377\265\333\343\342\377\3\264\305\302\377" \
+ "\223\254\247\377\313\327\324\377\207\377\377\377\377\3\353\360\357\377" \
+ "\223\254\247\377\236\265\260\377\342\333\343\342\377\3\307\323\321\377" \
+ "\223\254\247\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377" \
+ "\236\264\260\377\224\254\247\377\323\334\333\377\377\333\343\342\377" \
+ "\5\333\343\342\377\331\341\340\377\230\260\253\377\225\256\251\377\366" \
+ "\370\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\274" \
+ "\313\311\377\342\333\343\342\377\4\332\342\341\377\235\264\257\377\223" \
+ "\254\247\377\355\361\360\377\207\377\377\377\377\3\312\326\323\377\223" \
+ "\254\247\377\266\306\303\377\377\333\343\342\377\4\333\343\342\377\300" \
+ "\316\314\377\223\254\247\377\271\311\306\377\207\377\377\377\377\4\370" \
+ "\371\371\377\227\257\252\377\226\256\252\377\327\340\336\377\343\333" \
+ "\343\342\377\3\273\313\310\377\223\254\247\377\277\316\313\377\207\377" \
+ "\377\377\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341" \
+ "\340\377\310\333\343\342\377\3\307\322\320\377\305\320\316\377\324\334" \
+ "\333\377\264\333\343\342\377\3\241\267\263\377\223\254\247\377\347\354" \
+ "\353\377\207\377\377\377\377\3\317\332\330\377\223\254\247\377\261\303" \
+ "\277\377\344\333\343\342\377\4\326\337\336\377\226\256\251\377\227\257" \
+ "\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377\223\254" \
+ "\247\377\301\317\315\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
+ "\267\377\263\333\343\342\377\3\314\327\325\377\223\254\247\377\250\274" \
+ "\270\377\207\377\377\377\377\4\376\376\376\377\242\270\263\377\223\254" \
+ "\247\377\317\332\330\377\345\333\343\342\377\3\260\302\276\377\223\254" \
+ "\247\377\321\333\331\377\207\377\377\377\377\3\346\353\352\377\223\254" \
+ "\247\377\243\270\264\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
+ "\267\377\263\333\343\342\377\3\255\300\274\377\223\254\247\377\325\337" \
+ "\335\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377\245\272" \
+ "\266\377\346\333\343\342\377\3\316\331\327\377\223\254\247\377\244\271" \
+ "\265\377\210\377\377\377\377\3\247\273\267\377\223\254\247\377\315\330" \
+ "\326\377\307\333\343\342\377\3^vq\377Slg\377\254\271\267\377\262\333" \
+ "\343\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374" \
+ "\374\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\303\321" \
+ "\317\377\347\333\343\342\377\3\244\271\265\377\223\254\247\377\342\351" \
+ "\347\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301" \
+ "\275\377\304\333\343\342\377\3\317\331\327\377\236\255\253\377i\177{" \
+ "\377\202Slg\377\1\254\271\267\377\262\333\343\342\377\3\271\311\306\377" \
+ "\223\254\247\377\304\322\317\377\207\377\377\377\377\4\361\364\363\377" \
+ "\223\254\247\377\226\256\251\377\332\342\341\377\347\333\343\342\377" \
+ "\3\302\320\316\377\223\254\247\377\265\306\302\377\202\377\377\377\377" \
+ "\3\371\373\372\377\356\361\361\377\375\375\375\377\202\377\377\377\377" \
+ "\4\372\373\373\377\232\261\254\377\225\255\251\377\326\337\336\377\300" \
+ "\333\343\342\377\4\331\341\340\377\263\300\276\377~\222\216\377Uni\377" \
+ "\204Slg\377\1\254\271\267\377\261\333\343\342\377\4\332\342\341\377\233" \
+ "\262\256\377\223\254\247\377\361\364\363\377\207\377\377\377\377\1\304" \
+ "\322\317\377\202\223\254\247\377\1\312\326\324\377\347\333\343\342\377" \
+ "\5\331\341\340\377\232\261\254\377\223\254\247\377\302\320\315\377\244" \
+ "\271\265\377\202\223\254\247\377\7\226\256\251\377\251\275\271\377\331" \
+ "\342\340\377\377\377\377\377\303\321\316\377\223\254\247\377\272\312" \
+ "\307\377\276\333\343\342\377\3\310\322\321\377\224\244\241\377axt\377" \
+ "\207Slg\377\1\254\271\267\377\261\333\343\342\377\3\304\322\317\377\223" \
+ "\254\247\377\263\304\301\377\207\377\377\377\377\5\373\374\374\377\233" \
+ "\262\255\377\225\255\251\377\233\262\256\377\264\305\302\377\350\333" \
+ "\343\342\377\1\260\303\277\377\202\224\255\250\377\13\277\315\312\377" \
+ "\330\341\337\377\345\353\351\377\322\334\332\377\263\304\301\377\223" \
+ "\254\247\377\267\307\304\377\353\357\356\377\223\254\247\377\234\263" \
+ "\257\377\332\342\341\377\272\333\343\342\377\3\326\336\335\377\251\267" \
+ "\265\377t\211\205\377\212Slg\377\1\254\271\267\377\261\333\343\342\377" \
+ "\3\246\272\266\377\223\254\247\377\340\347\346\377\207\377\377\377\377" \
+ "\5\326\337\335\377\223\254\247\377\271\311\306\377\262\304\300\377\246" \
+ "\272\266\377\347\333\343\342\377\4\331\341\340\377\236\264\260\377\240" \
+ "\266\261\377\351\356\355\377\205\377\377\377\377\6\330\341\337\377\226" \
+ "\256\252\377\275\314\311\377\261\303\300\377\223\254\247\377\306\323" \
+ "\320\377\270\333\343\342\377\3\276\312\310\377\211\234\230\377[sn\377" \
+ "\211Slg\377\4Voj\377Umh\377Slg\377\254\271\267\377\260\333\343\342\377" \
+ "\4\320\332\331\377\223\254\247\377\242\267\263\377\376\376\376\377\207" \
+ "\377\377\377\377\5\250\274\270\377\223\254\247\377\346\354\353\377\272" \
+ "\312\307\377\242\267\263\377\347\333\343\342\377\3\265\306\302\377\225" \
+ "\255\250\377\352\357\356\377\207\377\377\377\377\5\322\334\332\377\223" \
+ "\254\247\377\311\325\323\377\223\254\247\377\247\273\270\377\265\333" \
+ "\343\342\377\3\320\332\330\377\237\256\253\377k\201|\377\212Slg\377\6" \
+ "n\204\200\377\242\261\256\377\321\333\331\377_vr\377Slg\377\254\271\267" \
+ "\377\260\333\343\342\377\3\262\303\300\377\223\254\247\377\317\332\330" \
+ "\377\204\377\377\377\377\11\367\371\370\377\352\357\356\377\377\377\377" \
+ "\377\347\355\354\377\223\254\247\377\247\273\267\377\377\377\377\377" \
+ "\244\271\265\377\257\301\276\377\347\333\343\342\377\2\234\263\256\377" \
+ "\303\321\316\377\211\377\377\377\377\5\250\274\270\377\267\307\304\377" \
+ "\241\266\262\377\223\254\247\377\321\333\332\377\261\333\343\342\377" \
+ "\4\331\342\341\377\264\301\277\377\200\223\220\377Vni\377\211Slg\377" \
+ "\3^vq\377\220\241\236\377\303\316\314\377\203\333\343\342\377\3_vr\377" \
+ "Slg\377\254\271\267\377\257\333\343\342\377\1\327\340\337\377\202\227" \
+ "\257\252\377\1\370\371\371\377\203\377\377\377\377\12\352\357\356\377" \
+ "\226\256\252\377\223\254\247\377\277\316\313\377\271\311\306\377\223" \
+ "\254\247\377\325\337\335\377\351\356\355\377\223\254\247\377\277\316" \
+ "\313\377\346\333\343\342\377\3\325\336\335\377\223\254\247\377\335\344" \
+ "\343\377\211\377\377\377\377\5\302\320\315\377\241\267\262\377\315\331" \
+ "\326\377\223\254\247\377\263\304\301\377\241\333\343\342\377\6\274\307" \
+ "\306\377\217\241\235\377t\211\205\377|\217\214\377\242\261\256\377\310" \
+ "\322\321\377\210\333\343\342\377\3\311\323\322\377\225\246\243\377by" \
+ "t\377\213Slg\377\2\245\264\261\377\330\341\340\377\205\333\343\342\377" \
+ "\3_vr\377Slg\377\254\271\267\377\257\333\343\342\377\3\314\327\325\377" \
+ "\223\254\247\377\264\305\301\377\204\377\377\377\377\12\307\324\322\377" \
+ "\226\256\252\377\261\303\300\377\230\260\253\377\224\255\250\377\232" \
+ "\261\255\377\367\371\370\377\244\271\265\377\241\266\262\377\331\341" \
+ "\340\377\346\333\343\342\377\3\312\326\324\377\223\254\247\377\353\360" \
+ "\357\377\211\377\377\377\377\5\320\333\331\377\223\254\247\377\361\364" \
+ "\364\377\223\254\247\377\243\270\264\377\237\333\343\342\377\3\327\340" \
+ "\337\377\217\241\235\377Tlg\377\205Slg\377\1\236\255\253\377\204\333" \
+ "\343\342\377\3\326\337\336\377\253\271\266\377v\212\206\377\212Slg\377" \
+ "\2g}y\377\222\243\240\377\202Slg\377\1\305\320\316\377\206\333\343\342" \
+ "\377\3\264\301\277\377\260\275\273\377\314\326\324\377\257\333\343\342" \
+ "\377\3\316\331\330\377\223\254\247\377\263\304\301\377\204\377\377\377" \
+ "\377\11\351\356\355\377\226\256\251\377\223\254\247\377\251\275\271\377" \
+ "\223\254\247\377\272\312\307\377\244\271\265\377\225\255\251\377\316" \
+ "\331\327\377\347\333\343\342\377\3\326\337\336\377\223\254\247\377\332" \
+ "\343\341\377\211\377\377\377\377\5\277\316\313\377\243\270\264\377\363" \
+ "\365\365\377\223\254\247\377\246\272\266\377\237\333\343\342\377\1\217" \
+ "\241\235\377\203Slg\377\2e{w\377czu\377\203Slg\377\5\254\271\267\377" \
+ "\333\343\342\377\300\313\311\377\213\235\232\377[sn\377\211Slg\377\5" \
+ "Yql\377\206\231\225\377\273\307\305\377\333\343\342\377\316\327\326\377" \
+ "\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\321\334\332\377\223" \
+ "\254\247\377\256\301\275\377\205\377\377\377\377\3\366\370\367\377\346" \
+ "\354\352\377\237\265\260\377\202\223\254\247\377\2\240\266\262\377\315" \
+ "\330\327\377\351\333\343\342\377\2\235\264\257\377\275\314\311\377\210" \
+ "\377\377\377\377\6\375\375\375\377\243\271\264\377\271\311\306\377\356" \
+ "\362\361\377\223\254\247\377\251\275\271\377\236\333\343\342\377\5\274" \
+ "\307\306\377Tlg\377Slg\377e{w\377\300\313\311\377\202\333\343\342\377" \
+ "\5\274\307\306\377axt\377Slg\377Vni\377k\201}\377\212Slg\377\3r\207\203" \
+ "\377\246\265\262\377\324\335\334\377\203\333\343\342\377\1\316\327\326" \
+ "\377\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\324\336\334\377" \
+ "\223\254\247\377\251\275\271\377\206\377\377\377\377\5\335\344\343\377" \
+ "\223\254\247\377\233\262\255\377\300\316\314\377\331\341\340\377\352" \
+ "\333\343\342\377\3\272\312\307\377\223\254\247\377\343\351\350\377\207" \
+ "\377\377\377\377\6\310\325\322\377\224\254\250\377\350\355\354\377\351" \
+ "\356\355\377\223\254\247\377\254\277\273\377\236\333\343\342\377\1\217" \
+ "\241\235\377\202Slg\377\1\300\313\311\377\204\333\343\342\377\1\270\305" \
+ "\303\377\212Slg\377\3_wr\377\222\243\240\377\306\320\317\377\206\333" \
+ "\343\342\377\1\316\327\326\377\202Slg\377\1\305\320\316\377\270\333\343" \
+ "\342\377\3\327\340\337\377\223\254\247\377\245\272\266\377\206\377\377" \
+ "\377\377\3\257\301\276\377\223\254\247\377\306\323\320\377\354\333\343" \
+ "\342\377\4\332\342\341\377\244\271\265\377\233\262\255\377\335\345\343" \
+ "\377\204\377\377\377\377\10\375\376\375\377\312\326\324\377\224\254\250" \
+ "\377\307\324\321\377\377\377\377\377\344\352\351\377\223\254\247\377" \
+ "\257\301\276\377\236\333\343\342\377\3t\211\205\377Slg\377g~y\377\206" \
+ "\333\343\342\377\1\\to\377\206Slg\377\4Uni\377}\221\215\377\261\277\274" \
+ "\377\330\341\340\377\210\333\343\342\377\1\316\327\326\377\202Slg\377" \
+ "\1\305\320\316\377\270\333\343\342\377\3\332\342\341\377\223\254\247" \
+ "\377\240\266\262\377\205\377\377\377\377\4\356\361\361\377\223\254\247" \
+ "\377\234\263\257\377\332\342\341\377\355\333\343\342\377\17\324\336\334" \
+ "\377\250\273\270\377\223\254\247\377\261\303\277\377\312\326\324\377" \
+ "\327\340\336\377\304\322\317\377\246\273\267\377\223\254\247\377\304" \
+ "\322\317\377\375\375\375\377\377\377\377\377\340\347\345\377\223\254" \
+ "\247\377\262\303\300\377\236\333\343\342\377\3v\212\206\377Slg\377f|" \
+ "x\377\206\333\343\342\377\1[sn\377\204Slg\377\3i\177{\377\235\255\252" \
+ "\377\317\330\327\377\213\333\343\342\377\1\316\327\326\377\202Slg\377" \
+ "\1\305\320\316\377\271\333\343\342\377\2\225\255\251\377\234\263\256" \
+ "\377\205\377\377\377\377\3\300\317\314\377\223\254\247\377\272\312\307" \
+ "\377\360\333\343\342\377\7\277\316\313\377\245\272\266\377\227\257\252" \
+ "\377\223\254\247\377\225\255\250\377\257\301\276\377\346\353\352\377" \
+ "\203\377\377\377\377\3\333\343\342\377\223\254\247\377\265\306\302\377" \
+ "\236\333\343\342\377\1\220\242\236\377\202Slg\377\1\277\312\310\377\204" \
+ "\333\343\342\377\1\266\302\300\377\205Slg\377\3z\216\212\377\257\274" \
+ "\272\377\330\340\337\377\213\333\343\342\377\1\316\327\326\377\202Sl" \
+ "g\377\1\305\320\316\377\271\333\343\342\377\2\230\260\253\377\230\257" \
+ "\253\377\204\377\377\377\377\4\371\373\372\377\230\260\253\377\225\255" \
+ "\251\377\326\337\336\377\362\333\343\342\377\4\332\342\341\377\266\307" \
+ "\304\377\223\254\247\377\302\320\315\377\204\377\377\377\377\3\326\337" \
+ "\335\377\223\254\247\377\267\310\305\377\236\333\343\342\377\14\276\311" \
+ "\307\377Tmh\377Slg\377d{v\377\274\307\306\377\333\343\342\377\321\332" \
+ "\331\377\235\255\252\377^vq\377Slg\377Vni\377k\201}\377\204Slg\377\3" \
+ "^uq\377\217\241\235\377\304\317\315\377\211\333\343\342\377\1\316\327" \
+ "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\2\233\262\255" \
+ "\377\223\254\247\377\204\377\377\377\377\3\322\334\332\377\223\254\247" \
+ "\377\256\301\275\377\364\333\343\342\377\4\325\336\335\377\225\255\250" \
+ "\377\231\261\254\377\372\373\373\377\203\377\377\377\377\3\321\334\332" \
+ "\377\223\254\247\377\272\312\307\377\237\333\343\342\377\1\223\244\240" \
+ "\377\203Slg\377\2_vr\377Wpk\377\203Slg\377\5\254\271\267\377\333\343" \
+ "\342\377\300\314\312\377\214\236\233\377\\so\377\204Slg\377\3p\205\201" \
+ "\377\245\263\261\377\324\334\333\377\206\333\343\342\377\1\316\327\326" \
+ "\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\236\264\260\377" \
+ "\223\254\247\377\373\374\374\377\203\377\377\377\377\3\245\271\265\377" \
+ "\223\254\247\377\315\330\326\377\365\333\343\342\377\3\255\300\274\377" \
+ "\223\254\247\377\324\336\334\377\203\377\377\377\377\3\315\330\326\377" \
+ "\223\254\247\377\275\314\312\377\237\333\343\342\377\3\330\340\337\377" \
+ "\225\246\243\377Umh\377\205Slg\377\1\236\255\253\377\204\333\343\342" \
+ "\377\4\327\337\336\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377" \
+ "\3Xpk\377\205\230\224\377\272\306\304\377\204\333\343\342\377\1\316\327" \
+ "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\241\266\262" \
+ "\377\223\254\247\377\366\370\370\377\202\377\377\377\377\3\343\352\350" \
+ "\377\223\254\247\377\243\270\264\377\366\333\343\342\377\3\314\327\325" \
+ "\377\223\254\247\377\246\273\267\377\203\377\377\377\377\3\307\324\322" \
+ "\377\223\254\247\377\300\316\314\377\241\333\343\342\377\6\302\315\313" \
+ "\377\230\250\245\377}\220\215\377\203\226\222\377\246\265\262\377\311" \
+ "\324\322\377\210\333\343\342\377\3\313\325\323\377\227\250\245\377d{" \
+ "v\377\204Slg\377\5f}x\377\233\253\250\377\315\327\325\377\333\343\342" \
+ "\377\316\327\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377" \
+ "\3\244\271\265\377\223\254\247\377\362\365\364\377\202\377\377\377\377" \
+ "\3\266\307\303\377\223\254\247\377\301\317\315\377\367\333\343\342\377" \
+ "\3\241\267\263\377\223\254\247\377\345\353\352\377\202\377\377\377\377" \
+ "\3\303\321\316\377\223\254\247\377\303\321\317\377\261\333\343\342\377" \
+ "\4\332\342\341\377\267\304\302\377\203\226\222\377Wpk\377\203Slg\377" \
+ "\3Tmh\377|\217\214\377\245\264\261\377\202Slg\377\1\305\320\316\377\206" \
+ "\333\343\342\377\3\317\331\327\377\316\327\326\377\326\337\336\377\260" \
+ "\333\343\342\377\10\247\273\267\377\223\254\247\377\301\317\314\377\333" \
+ "\343\341\377\344\352\351\377\224\255\250\377\231\260\254\377\331\341" \
+ "\340\377\367\333\343\342\377\10\300\316\314\377\223\254\247\377\265\306" \
+ "\303\377\345\353\351\377\322\335\333\377\250\274\270\377\223\254\247" \
+ "\377\306\323\321\377\264\333\343\342\377\3\323\334\332\377\243\262\257" \
+ "\377o\204\200\377\206Slg\377\1\267\304\302\377\206\333\343\342\377\3" \
+ "_vr\377Slg\377\254\271\267\377\260\333\343\342\377\1\252\275\271\377" \
+ "\205\223\254\247\377\1\266\306\303\377\370\333\343\342\377\2\330\341" \
+ "\340\377\230\260\253\377\205\223\254\247\377\1\311\325\323\377\267\333" \
+ "\343\342\377\3\303\316\314\377\217\240\235\377]up\377\204Slg\377\3r\207" \
+ "\203\377\246\265\262\377\324\335\334\377\203\333\343\342\377\3_vr\377" \
+ "Slg\377\254\271\267\377\260\333\343\342\377\7\327\337\336\377\220\243" \
+ "\237\377k\204\177\377u\216\211\377\205\235\230\377\235\263\257\377\323" \
+ "\334\333\377\371\333\343\342\377\7\267\307\304\377\233\261\255\377~\227" \
+ "\222\377q\212\205\377m\206\201\377\273\310\306\377\332\342\341\377\271" \
+ "\333\343\342\377\4\330\340\337\377\256\274\271\377z\216\212\377Tmh\377" \
+ "\203Slg\377\7Yql\377\206\231\225\377\273\307\305\377\333\343\342\377" \
+ "_vr\377Slg\377\254\271\267\377\261\333\343\342\377\1x\214\210\377\202" \
+ "Slg\377\1~\221\216\377\374\333\343\342\377\5\325\335\334\377axt\377S" \
+ "lg\377Tmh\377\251\270\265\377\275\333\343\342\377\3\315\326\325\377\232" \
+ "\252\247\377f}x\377\204Slg\377\4g}y\377Woj\377Slg\377\254\271\267\377" \
+ "\261\333\343\342\377\1}\220\215\377\202Slg\377\1\240\257\254\377\375" \
+ "\333\343\342\377\1f}x\377\202Slg\377\1\222\243\240\377\300\333\343\342" \
+ "\377\3\272\306\304\377\206\230\225\377Xql\377\204Slg\377\1\254\271\267" \
+ "\377\261\333\343\342\377\4\216\237\234\377Slg\377_wr\377\326\336\335" \
+ "\377\375\333\343\342\377\4r\207\203\377Slg\377axt\377\317\330\327\377" \
+ "\302\333\343\342\377\3\324\334\333\377\246\264\262\377q\207\202\377\202" \
+ "Slg\377\1\254\271\267\377\261\333\343\342\377\3\237\257\254\377Slg\377" \
+ "\240\257\254\377\376\333\343\342\377\3\216\240\235\377Wpk\377\246\264" \
+ "\262\377\306\333\343\342\377\3_vr\377Slg\377\254\271\267\377\261\333" \
+ "\343\342\377\3\260\276\273\377axt\377\326\337\336\377\376\333\343\342" \
+ "\377\2\265\302\277\377v\213\207\377\307\333\343\342\377\3_vr\377Slg\377" \
+ "\254\271\267\377\261\333\343\342\377\2\302\315\313\377\242\261\256\377" \
+ "\377\333\343\342\377\311\333\343\342\377\3z\216\212\377p\205\201\377" \
+ "\266\303\301\377\261\333\343\342\377\2\326\336\335\377\327\340\337\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\344\333\343\342\377")
+
+
diff --git a/packages/psplash/files/angstrom/angstrom-psplash-vga-img.h b/packages/psplash/files/angstrom/angstrom-psplash-vga-img.h
new file mode 100644
index 0000000000..5eeef94919
--- /dev/null
+++ b/packages/psplash/files/angstrom/angstrom-psplash-vga-img.h
@@ -0,0 +1,2109 @@
+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
+
+#define HAND_IMG_ROWSTRIDE (1428)
+#define HAND_IMG_WIDTH (357)
+#define HAND_IMG_HEIGHT (376)
+#define HAND_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
+#define HAND_IMG_RLE_PIXEL_DATA ((uint8*) \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\202\333" \
+ "\343\342\377\1\320\331\330\377\202\311\324\322\377\1\324\334\333\377" \
+ "\377\333\343\342\377\251\333\343\342\377\4\323\335\333\377\311\325\323" \
+ "\377\322\334\332\377\332\342\341\377\377\333\343\342\377\266\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
+ "\377\244\333\343\342\377\5\326\337\336\377\273\313\310\377\257\301\276" \
+ "\377\243\270\264\377\227\257\252\377\203\223\254\247\377\5\226\256\251" \
+ "\377\242\267\263\377\256\300\275\377\272\312\307\377\323\335\333\377" \
+ "\377\333\343\342\377\262\333\343\342\377\1\202\225\221\377\202Slg\377" \
+ "\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330" \
+ "\326\377\213\223\254\247\377\1\304\321\317\377\377\333\343\342\377\262" \
+ "\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333" \
+ "\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377" \
+ "\7\241\267\263\377\270\310\305\377\312\326\324\377\330\341\337\377\314" \
+ "\327\325\377\272\312\307\377\244\271\265\377\202\223\254\247\377\1\304" \
+ "\321\317\377\377\333\343\342\377\262\333\343\342\377\1\202\225\221\377" \
+ "\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377" \
+ "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
+ "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
+ "\333\343\342\377\236\333\343\342\377\4\316\327\326\377\275\311\307\377" \
+ "\266\302\300\377\256\274\271\377\220\254\271\267\377\1q\207\202\377\202" \
+ "Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315" \
+ "\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377" \
+ "\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343" \
+ "\342\377\232\333\343\342\377\4\324\335\334\377\250\266\264\377y\215\211" \
+ "\377]up\377\227Slg\377\1\243\262\257\377\377\333\343\342\377\244\333" \
+ "\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377" \
+ "\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321" \
+ "\317\377\377\333\343\342\377\230\333\343\342\377\3\332\342\341\377\246" \
+ "\265\262\377\\to\377\232Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342" \
+ "\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1" \
+ "\304\321\317\377\377\333\343\342\377\227\333\343\342\377\2\331\342\341" \
+ "\377\204\227\223\377\234Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342" \
+ "\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1" \
+ "\304\321\317\377\377\333\343\342\377\227\333\343\342\377\1\216\237\234" \
+ "\377\235Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342" \
+ "\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377" \
+ "\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377" \
+ "\377\333\343\342\377\226\333\343\342\377\2\303\316\314\377Tmh\377\235" \
+ "Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315" \
+ "\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377" \
+ "\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343" \
+ "\342\377\226\333\343\342\377\1\211\234\230\377\205Slg\377\7Tmh\377|\217" \
+ "\214\377\252\270\266\377\271\305\303\377\304\317\315\377\320\331\330" \
+ "\377\331\342\341\377\217\333\343\342\377\1\202\225\221\377\202Slg\377" \
+ "\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330" \
+ "\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1" \
+ "\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342" \
+ "\377\226\333\343\342\377\1czu\377\204Slg\377\2~\222\216\377\314\325\324" \
+ "\377\225\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254" \
+ "\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202" \
+ "\223\254\247\377\1\304\321\317\377\377\333\343\342\377\225\333\343\342" \
+ "\377\1\322\333\332\377\204Slg\377\2n\203\177\377\326\336\335\377\226" \
+ "\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333" \
+ "\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377" \
+ "\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254" \
+ "\247\377\1\304\321\317\377\377\333\343\342\377\225\333\343\342\377\1" \
+ "\306\321\317\377\204Slg\377\1\277\313\311\377\227\333\343\342\377\1\202" \
+ "\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333" \
+ "\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377" \
+ "\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321" \
+ "\317\377\377\333\343\342\377\225\333\343\342\377\1\304\317\315\377\203" \
+ "Slg\377\2Uni\377\330\340\337\377\227\333\343\342\377\1\244\262\260\377" \
+ "\202\205\230\224\377\1\267\304\302\377\377\333\343\342\377\244\333\343" \
+ "\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205" \
+ "\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317" \
+ "\377\377\333\343\342\377\225\333\343\342\377\1\326\336\335\377\203Sl" \
+ "g\377\1k\201}\377\377\333\343\342\377\300\333\343\342\377\1\315\330\326" \
+ "\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343" \
+ "\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377" \
+ "\226\333\343\342\377\1byt\377\202Slg\377\1q\207\202\377\377\333\343\342" \
+ "\377\300\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331" \
+ "\342\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377" \
+ "\1\304\321\317\377\377\333\343\342\377\226\333\343\342\377\1\204\226" \
+ "\223\377\202Slg\377\1czu\377\377\333\343\342\377\300\333\343\342\377" \
+ "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
+ "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
+ "\333\343\342\377\226\333\343\342\377\2\304\317\315\377Tlg\377\202Slg" \
+ "\377\1\305\320\316\377\227\333\343\342\377\1\274\310\306\377\202\254" \
+ "\271\267\377\1\307\322\320\377\377\333\343\342\377\244\333\343\342\377" \
+ "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
+ "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
+ "\333\343\342\377\227\333\343\342\377\1\201\224\220\377\202Slg\377\1\206" \
+ "\231\225\377\227\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262" \
+ "\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202" \
+ "\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350" \
+ "\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377\227\333" \
+ "\343\342\377\2\323\334\332\377n\204\200\377\202Slg\377\1\247\266\263" \
+ "\377\226\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254" \
+ "\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202" \
+ "\223\254\247\377\1\304\321\317\377\377\333\343\342\377\230\333\343\342" \
+ "\377\2\321\333\331\377l\201}\377\202Slg\377\2\220\242\236\377\323\334" \
+ "\333\377\224\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257" \
+ "\377\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223" \
+ "\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377" \
+ "\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377\231\333\343" \
+ "\342\377\10\324\334\333\377\222\243\240\377Vni\377Slg\377]up\377\217" \
+ "\240\235\377\273\307\305\377\326\336\335\377\221\333\343\342\377\1\202" \
+ "\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333" \
+ "\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377" \
+ "\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321" \
+ "\317\377\377\333\343\342\377\233\333\343\342\377\2\310\322\321\377k\201" \
+ "}\377\204Slg\377\3d{v\377p\206\202\377w\214\210\377\216}\220\215\377" \
+ "\1ayt\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343" \
+ "\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205" \
+ "\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317" \
+ "\377\377\333\343\342\377\231\333\343\342\377\3\327\340\337\377\252\270" \
+ "\266\377p\205\201\377\231Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\244\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342" \
+ "\340\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1" \
+ "\304\321\317\377\377\333\343\342\377\230\333\343\342\377\2\321\333\331" \
+ "\377p\206\202\377\233Slg\377\1\243\262\257\377\377\333\343\342\377\244" \
+ "\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340" \
+ "\377\205\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304" \
+ "\321\317\377\377\333\343\342\377\227\333\343\342\377\2\315\327\325\377" \
+ "j\200|\377\234Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343" \
+ "\342\377\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205" \
+ "\377\377\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317" \
+ "\377\377\333\343\342\377\227\333\343\342\377\1|\220\214\377\235Slg\377" \
+ "\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330" \
+ "\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1" \
+ "\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342" \
+ "\377\226\333\343\342\377\1\301\314\312\377\207Slg\377\4Xql\377e|w\377" \
+ "q\206\202\377}\220\215\377\220\205\230\224\377\1d{v\377\202Slg\377\1" \
+ "\243\262\257\377\377\333\343\342\377\244\333\343\342\377\1\315\330\326" \
+ "\377\202\223\254\247\377\1\331\342\340\377\205\377\377\377\377\1\343" \
+ "\352\350\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377" \
+ "\226\333\343\342\377\1\200\224\220\377\204Slg\377\4Tlg\377{\217\213\377" \
+ "\263\300\276\377\331\342\341\377\223\333\343\342\377\1\202\225\221\377" \
+ "\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342\377" \
+ "\1\315\330\326\377\202\223\254\247\377\1\331\342\340\377\205\377\377" \
+ "\377\377\1\343\352\350\377\202\223\254\247\377\1\304\321\317\377\377" \
+ "\333\343\342\377\226\333\343\342\377\1czu\377\204Slg\377\1\256\274\271" \
+ "\377\226\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\377\333\343\342\377\244\333\343\342\377\1\315\330\326\377\202\223\254" \
+ "\247\377\1\331\342\340\377\205\377\377\377\377\1\343\352\350\377\202" \
+ "\223\254\247\377\1\304\321\317\377\377\333\343\342\377\225\333\343\342" \
+ "\377\2\327\340\337\377Tlg\377\203Slg\377\1\223\244\240\377\227\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
+ "\377\244\333\343\342\377\1\315\330\327\377\202\223\254\247\377\1\326" \
+ "\337\335\377\205\377\377\377\377\1\340\347\346\377\202\223\254\247\377" \
+ "\1\304\321\317\377\377\333\343\342\377\225\333\343\342\377\1\306\321" \
+ "\317\377\204Slg\377\1\314\325\324\377\227\333\343\342\377\1\202\225\221" \
+ "\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\244\333\343\342" \
+ "\377\4\327\340\337\377\224\255\250\377\223\254\247\377\274\313\310\377" \
+ "\205\377\377\377\377\1\307\324\321\377\202\223\254\247\377\1\322\334" \
+ "\332\377\377\333\343\342\377\225\333\343\342\377\1\310\323\321\377\203" \
+ "Slg\377\1\\to\377\230\333\343\342\377\1\305\317\316\377\202\270\305\303" \
+ "\377\1\315\326\325\377\377\333\343\342\377\245\333\343\342\377\3\244" \
+ "\271\265\377\223\254\247\377\237\265\261\377\205\377\377\377\377\3\252" \
+ "\275\271\377\223\254\247\377\235\263\257\377\377\333\343\342\377\226" \
+ "\333\343\342\377\2\331\341\340\377Vni\377\202Slg\377\1r\207\203\377\377" \
+ "\333\343\342\377\301\333\343\342\377\1\256\300\275\377\202\223\254\247" \
+ "\377\1\356\361\361\377\203\377\377\377\377\5\370\372\371\377\224\254" \
+ "\250\377\223\254\247\377\250\274\270\377\332\342\341\377\377\333\343" \
+ "\342\377\226\333\343\342\377\1k\201|\377\202Slg\377\1m\202~\377\377\333" \
+ "\343\342\377\275\333\343\342\377\5\332\342\341\377\301\317\315\377\237" \
+ "\265\261\377}\233\225\377v\226\220\377\202\223\254\247\377\1\320\333" \
+ "\331\377\203\377\377\377\377\1\335\344\343\377\202\223\254\247\377\202" \
+ "z\231\223\377\3\233\263\256\377\275\314\311\377\330\341\340\377\377\333" \
+ "\343\342\377\223\333\343\342\377\1\242\261\256\377\202Slg\377\2[sn\377" \
+ "\330\340\337\377\377\333\343\342\377\272\333\343\342\377\3\327\340\337" \
+ "\377\251\275\271\377x\230\221\377\204o\221\212\377\3\220\252\245\377" \
+ "\223\254\247\377\263\305\301\377\203\377\377\377\377\4\300\316\313\377" \
+ "\223\254\247\377\222\253\246\377p\222\213\377\203o\221\212\377\3t\225" \
+ "\216\377\241\267\263\377\324\336\334\377\377\333\343\342\377\221\333" \
+ "\343\342\377\2\327\340\337\377ayt\377\202Slg\377\1\263\300\275\377\227" \
+ "\333\343\342\377\1\233\253\250\377\202x\215\211\377\1\262\277\275\377" \
+ "\377\333\343\342\377\235\333\343\342\377\3\332\342\341\377\261\303\300" \
+ "\377z\232\223\377\206o\221\212\377\4\207\243\235\377\223\254\247\377" \
+ "\230\257\253\377\374\375\375\377\202\377\377\377\377\3\243\270\264\377" \
+ "\223\254\247\377\212\245\240\377\206o\221\212\377\3w\227\220\377\253" \
+ "\277\273\377\330\341\337\377\377\333\343\342\377\220\333\343\342\377" \
+ "\5\265\301\277\377Uni\377Slg\377h\177z\377\327\337\336\377\226\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
+ "\377\234\333\343\342\377\2\307\323\321\377\201\236\230\377\206o\221\212" \
+ "\377\3\205\241\233\377\246\273\267\377\260\302\277\377\202\223\254\247" \
+ "\377\1\244\271\265\377\202\246\273\267\377\202\223\254\247\377\3\254" \
+ "\277\273\377\252\276\272\377\210\244\236\377\206o\221\212\377\2|\233" \
+ "\225\377\300\317\314\377\377\333\343\342\377\220\333\343\342\377\5\255" \
+ "\273\271\377Tlg\377Slg\377y\215\211\377\324\335\334\377\225\333\343\342" \
+ "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\233\333\343\342\377\2\267\310\305\377s\224\215\377\204o\221\212\377" \
+ "\3y\230\222\377\253\276\273\377\317\331\330\377\202\333\343\342\377\1" \
+ "\321\333\331\377\207\223\254\247\377\1\312\326\324\377\202\333\343\342" \
+ "\377\3\321\333\332\377\257\302\276\377|\233\225\377\204o\221\212\377" \
+ "\2q\222\213\377\260\302\277\377\377\333\343\342\377\220\333\343\342\377" \
+ "\6\261\277\274\377axt\377Slg\377d{v\377\253\271\267\377\331\341\340\377" \
+ "\223\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377" \
+ "\333\343\342\377\231\333\343\342\377\2\332\342\341\377\245\272\266\377" \
+ "\204o\221\212\377\3t\224\216\377\245\272\266\377\326\337\336\377\205" \
+ "\333\343\342\377\1\253\276\273\377\205\247\273\267\377\2\250\274\270" \
+ "\377\331\342\341\377\204\333\343\342\377\3\330\341\337\377\253\277\273" \
+ "\377w\227\220\377\204o\221\212\377\2\234\263\257\377\331\341\340\377" \
+ "\377\333\343\342\377\213\333\343\342\377\1\330\340\337\377\203\322\333" \
+ "\332\377\2\313\325\324\377\205\230\224\377\202Slg\377\6]up\377\207\232" \
+ "\226\377\244\262\260\377\271\306\304\377\306\320\317\377\315\326\325" \
+ "\377\216\322\333\332\377\1\177\223\217\377\202Slg\377\1\243\262\257\377" \
+ "\377\333\343\342\377\231\333\343\342\377\1\231\261\254\377\204o\221\212" \
+ "\377\2\213\246\241\377\321\333\332\377\225\333\343\342\377\2\325\336" \
+ "\335\377\225\255\251\377\204o\221\212\377\2\216\251\243\377\331\342\340" \
+ "\377\377\333\343\342\377\212\333\343\342\377\1\250\267\264\377\236Sl" \
+ "g\377\1\243\262\257\377\377\333\343\342\377\230\333\343\342\377\1\253" \
+ "\276\273\377\204o\221\212\377\2\234\263\256\377\331\341\340\377\230\333" \
+ "\343\342\377\1\246\273\267\377\204o\221\212\377\1\236\264\260\377\377" \
+ "\333\343\342\377\212\333\343\342\377\1\250\267\264\377\236Slg\377\1\243" \
+ "\262\257\377\377\333\343\342\377\227\333\343\342\377\2\275\314\311\377" \
+ "p\221\213\377\202o\221\212\377\2p\222\213\377\256\301\275\377\233\333" \
+ "\343\342\377\2\270\310\305\377r\223\215\377\203o\221\212\377\1\261\303" \
+ "\300\377\377\333\343\342\377\211\333\343\342\377\1\250\267\264\377\236" \
+ "Slg\377\1\243\262\257\377\377\333\343\342\377\226\333\343\342\377\2\312" \
+ "\326\324\377u\226\217\377\203o\221\212\377\1\256\300\275\377\235\333" \
+ "\343\342\377\1\266\307\303\377\203o\221\212\377\2q\222\214\377\302\320" \
+ "\315\377\377\333\343\342\377\210\333\343\342\377\1\250\267\264\377\236" \
+ "Slg\377\1\243\262\257\377\377\333\343\342\377\226\333\343\342\377\1\210" \
+ "\244\236\377\203o\221\212\377\1\232\262\255\377\237\333\343\342\377\1" \
+ "\243\271\265\377\203o\221\212\377\2\177\235\227\377\331\341\340\377\377" \
+ "\333\343\342\377\207\333\343\342\377\1\250\267\264\377\236Slg\377\1\243" \
+ "\262\257\377\377\333\343\342\377\225\333\343\342\377\1\272\312\307\377" \
+ "\203o\221\212\377\2\211\244\237\377\330\341\340\377\237\333\343\342\377" \
+ "\2\332\342\341\377\221\253\245\377\203o\221\212\377\1\256\301\276\377" \
+ "\377\333\343\342\377\207\333\343\342\377\1\250\267\264\377\202Slg\377" \
+ "\1u\211\205\377\230\270\305\303\377\1v\213\207\377\202Slg\377\1\243\262" \
+ "\257\377\377\333\343\342\377\224\333\343\342\377\2\332\342\341\377\201" \
+ "\236\230\377\202o\221\212\377\2p\222\213\377\312\326\324\377\241\333" \
+ "\343\342\377\2\321\333\332\377t\225\216\377\202o\221\212\377\2x\230\221" \
+ "\377\325\337\335\377\377\333\343\342\377\206\333\343\342\377\1\250\267" \
+ "\264\377\202Slg\377\1\200\224\220\377\230\333\343\342\377\1\202\225\221" \
+ "\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\224\333\343\342" \
+ "\377\1\262\304\300\377\203o\221\212\377\1\232\261\255\377\243\333\343" \
+ "\342\377\1\246\272\266\377\203o\221\212\377\1\244\271\265\377\377\333" \
+ "\343\342\377\206\333\343\342\377\1\250\267\264\377\202Slg\377\1\200\224" \
+ "\220\377\230\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257" \
+ "\377\377\333\343\342\377\224\333\343\342\377\1\202\237\231\377\202o\221" \
+ "\212\377\2r\223\215\377\317\332\331\377\243\333\343\342\377\2\326\337" \
+ "\336\377y\230\222\377\202o\221\212\377\2x\230\221\377\332\342\341\377" \
+ "\377\333\343\342\377\205\333\343\342\377\1\250\267\264\377\202Slg\377" \
+ "\1\200\224\220\377\230\333\343\342\377\1\202\225\221\377\202Slg\377\1" \
+ "\243\262\257\377\377\333\343\342\377\223\333\343\342\377\1\315\330\326" \
+ "\377\203o\221\212\377\1\236\264\260\377\245\333\343\342\377\1\253\276" \
+ "\273\377\203o\221\212\377\1\302\320\315\377\377\333\343\342\377\205\333" \
+ "\343\342\377\1\250\267\264\377\202Slg\377\1\200\224\220\377\230\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342" \
+ "\377\223\333\343\342\377\1\253\277\273\377\203o\221\212\377\1\302\320" \
+ "\315\377\245\333\343\342\377\1\317\331\330\377\203o\221\212\377\1\237" \
+ "\265\261\377\377\333\343\342\377\205\333\343\342\377\1\311\324\322\377" \
+ "\202\254\271\267\377\1\274\307\306\377\230\333\343\342\377\1\325\336" \
+ "\335\377\202\322\333\332\377\1\327\340\337\377\377\333\343\342\377\223" \
+ "\333\343\342\377\1\212\246\240\377\202o\221\212\377\2w\227\221\377\332" \
+ "\342\341\377\246\333\343\342\377\1\205\241\233\377\202o\221\212\377\1" \
+ "}\234\226\377\377\333\343\342\377\377\333\343\342\377\267\333\343\342" \
+ "\377\2\325\336\335\377p\222\213\377\202o\221\212\377\1\230\260\253\377" \
+ "\247\333\343\342\377\1\246\273\267\377\203o\221\212\377\1\313\327\325" \
+ "\377\377\333\343\342\377\377\333\343\342\377\266\333\343\342\377\1\310" \
+ "\324\322\377\203o\221\212\377\1\264\305\302\377\247\333\343\342\377\1" \
+ "\275\314\311\377\203o\221\212\377\1\275\314\312\377\377\333\343\342\377" \
+ "\377\333\343\342\377\266\333\343\342\377\1\275\314\312\377\203o\221\212" \
+ "\377\1\277\316\313\377\247\333\343\342\377\1\310\325\323\377\203o\221" \
+ "\212\377\1\262\304\300\377\377\333\343\342\377\377\333\343\342\377\266" \
+ "\333\343\342\377\1\263\305\301\377\203o\221\212\377\1\312\326\324\377" \
+ "\247\333\343\342\377\1\323\335\334\377\203o\221\212\377\1\247\273\267" \
+ "\377\377\333\343\342\377\217\333\343\342\377\4\330\340\337\377\300\313" \
+ "\311\377\262\277\275\377\247\266\263\377\202\234\254\251\377\4\247\265" \
+ "\263\377\262\277\275\377\277\313\311\377\330\340\337\377\377\333\343" \
+ "\342\377\235\333\343\342\377\1\251\275\271\377\203o\221\212\377\1\325" \
+ "\336\335\377\250\333\343\342\377\1r\223\215\377\202o\221\212\377\1\233" \
+ "\263\256\377\377\333\343\342\377\214\333\343\342\377\4\316\330\326\377" \
+ "\231\251\246\377v\213\207\377Xpk\377\210Slg\377\4Xpk\377v\212\206\377" \
+ "\230\251\246\377\316\327\326\377\377\333\343\342\377\232\333\343\342" \
+ "\377\1\242\267\263\377\203o\221\212\377\1\332\342\341\377\250\333\343" \
+ "\342\377\1y\231\222\377\202o\221\212\377\1\225\256\251\377\377\333\343" \
+ "\342\377\212\333\343\342\377\3\310\323\321\377\210\233\227\377Voj\377" \
+ "\216Slg\377\3Voj\377\210\232\227\377\307\322\320\377\377\333\343\342" \
+ "\377\230\333\343\342\377\1\253\276\273\377\203o\221\212\377\1\322\334" \
+ "\333\377\247\333\343\342\377\2\332\342\341\377p\222\213\377\202o\221" \
+ "\212\377\1\236\265\260\377\377\333\343\342\377\211\333\343\342\377\2" \
+ "\251\270\265\377Xql\377\222Slg\377\2Xpk\377\246\265\262\377\377\333\343" \
+ "\342\377\227\333\343\342\377\1\266\307\303\377\203o\221\212\377\1\307" \
+ "\324\322\377\247\333\343\342\377\1\320\333\331\377\203o\221\212\377\1" \
+ "\251\275\271\377\377\333\343\342\377\207\333\343\342\377\2\331\342\341" \
+ "\377\210\233\227\377\226Slg\377\2\204\227\223\377\330\341\340\377\377" \
+ "\333\343\342\377\225\333\343\342\377\1\300\317\314\377\203o\221\212\377" \
+ "\1\274\314\311\377\247\333\343\342\377\1\305\322\320\377\203o\221\212" \
+ "\377\1\265\306\303\377\377\333\343\342\377\207\333\343\342\377\1\213" \
+ "\235\231\377\230Slg\377\1\206\231\225\377\377\333\343\342\377\225\333" \
+ "\343\342\377\1\313\327\325\377\203o\221\212\377\1\256\301\276\377\247" \
+ "\333\343\342\377\1\271\311\307\377\203o\221\212\377\1\300\317\314\377" \
+ "\366\333\343\342\377\5\322\333\332\377\240\260\255\377\220\241\236\377" \
+ "\246\265\262\377\330\340\337\377\212\333\343\342\377\1\231\251\246\377" \
+ "\211Slg\377\3[sn\377g}y\377l\202~\377\202q\207\202\377\3l\202~\377g}" \
+ "y\377[sn\377\211Slg\377\1\227\247\244\377\377\333\343\342\377\224\333" \
+ "\343\342\377\2\330\341\337\377t\225\216\377\202o\221\212\377\1\220\252" \
+ "\245\377\247\333\343\342\377\1\235\264\257\377\203o\221\212\377\1\320" \
+ "\333\331\377\365\333\343\342\377\2\310\323\321\377ayt\377\203Slg\377" \
+ "\2m\203\177\377\326\336\335\377\210\333\343\342\377\2\306\321\317\377" \
+ "Umh\377\205Slg\377\4o\204\200\377\230\250\245\377\272\306\304\377\317" \
+ "\330\327\377\210\333\343\342\377\4\317\330\327\377\272\306\304\377\227" \
+ "\250\245\377o\204\200\377\205Slg\377\2Tmh\377\305\317\316\377\377\333" \
+ "\343\342\377\224\333\343\342\377\1\223\254\247\377\202o\221\212\377\2" \
+ "s\224\215\377\327\340\337\377\246\333\343\342\377\1|\232\224\377\202" \
+ "o\221\212\377\1\206\242\234\377\366\333\343\342\377\1y\215\211\377\205" \
+ "Slg\377\1\233\253\250\377\210\333\343\342\377\1~\222\216\377\204Slg\377" \
+ "\2{\217\213\377\301\314\312\377\220\333\343\342\377\2\303\316\314\377" \
+ "~\222\216\377\204Slg\377\1}\220\215\377\377\333\343\342\377\224\333\343" \
+ "\342\377\1\264\305\302\377\203o\221\212\377\1\273\312\310\377\245\333" \
+ "\343\342\377\1\306\323\321\377\203o\221\212\377\1\250\274\270\377\365" \
+ "\333\343\342\377\2\331\341\340\377Voj\377\205Slg\377\1\177\222\217\377" \
+ "\207\333\343\342\377\1\305\317\316\377\203Slg\377\2Voj\377\247\266\263" \
+ "\377\224\333\343\342\377\2\253\271\267\377Woj\377\203Slg\377\1\303\316" \
+ "\314\377\377\333\343\342\377\223\333\343\342\377\2\323\335\334\377p\222" \
+ "\213\377\202o\221\212\377\1\225\255\251\377\245\333\343\342\377\1\237" \
+ "\265\261\377\203o\221\212\377\1\312\326\324\377\366\333\343\342\377\1" \
+ "axt\377\205Slg\377\1\210\233\227\377\207\333\343\342\377\1\235\254\252" \
+ "\377\203Slg\377\1\260\276\273\377\226\333\343\342\377\1\263\300\276\377" \
+ "\203Slg\377\1\231\251\246\377\377\333\343\342\377\224\333\343\342\377" \
+ "\1\213\246\241\377\203o\221\212\377\1\307\323\321\377\243\333\343\342" \
+ "\377\2\316\331\327\377r\223\214\377\202o\221\212\377\1\200\236\230\377" \
+ "\367\333\343\342\377\1\232\252\247\377\205Slg\377\1\271\306\304\377\207" \
+ "\333\343\342\377\1v\213\207\377\202Slg\377\1\204\227\223\377\230\333" \
+ "\343\342\377\1\212\234\231\377\202Slg\377\1q\206\202\377\377\333\343" \
+ "\342\377\224\333\343\342\377\1\300\316\314\377\203o\221\212\377\1\215" \
+ "\247\242\377\207\333\343\342\377\4\327\337\336\377\236\264\260\377\270" \
+ "\310\305\377\324\336\334\377\215\333\343\342\377\4\326\337\336\377\273" \
+ "\312\310\377\236\264\260\377\322\334\332\377\207\333\343\342\377\1\227" \
+ "\257\252\377\203o\221\212\377\1\263\305\301\377\367\333\343\342\377\6" \
+ "\331\341\340\377\225\245\242\377Voj\377Slg\377^uq\377\251\267\265\377" \
+ "\210\333\343\342\377\1Xql\377\202Slg\377\1\301\314\312\377\230\333\343" \
+ "\342\377\1\305\317\316\377\202Slg\377\2Tmh\377\331\341\340\377\377\333" \
+ "\343\342\377\224\333\343\342\377\1\215\250\243\377\203o\221\212\377\1" \
+ "\276\315\312\377\206\333\343\342\377\1\274\313\311\377\202\223\254\247" \
+ "\377\3\224\255\250\377\254\277\274\377\313\326\325\377\211\333\343\342" \
+ "\377\3\316\331\327\377\257\302\276\377\226\256\251\377\202\223\254\247" \
+ "\377\1\265\306\303\377\206\333\343\342\377\1\307\324\322\377\203o\221" \
+ "\212\377\2\202\237\231\377\332\342\341\377\371\333\343\342\377\2\330" \
+ "\340\337\377\315\326\325\377\211\333\343\342\377\1\325\335\334\377\202" \
+ "Slg\377\1e|w\377\232\333\343\342\377\1g~y\377\202Slg\377\1\316\330\326" \
+ "\377\377\333\343\342\377\224\333\343\342\377\1\306\323\321\377\203o\221" \
+ "\212\377\2z\232\223\377\321\333\332\377\205\333\343\342\377\1\236\264" \
+ "\260\377\205\223\254\247\377\3\241\267\262\377\277\316\313\377\330\341" \
+ "\340\377\203\333\343\342\377\3\331\341\340\377\302\320\315\377\244\271" \
+ "\265\377\205\223\254\247\377\2\231\260\254\377\331\341\340\377\204\333" \
+ "\343\342\377\2\325\336\335\377\200\236\230\377\203o\221\212\377\1\274" \
+ "\313\311\377\377\333\343\342\377\206\333\343\342\377\1\311\323\322\377" \
+ "\202Slg\377\1w\213\207\377\232\333\343\342\377\1y\215\211\377\202Slg" \
+ "\377\1\303\316\314\377\377\333\343\342\377\225\333\343\342\377\1\226" \
+ "\256\252\377\203o\221\212\377\2\207\243\236\377\330\341\337\377\203\333" \
+ "\343\342\377\1\310\324\322\377\202\223\254\247\377\2\271\311\306\377" \
+ "\262\304\300\377\204\223\254\247\377\5\230\260\253\377\275\314\312\377" \
+ "\333\343\342\377\304\321\317\377\232\261\254\377\204\223\254\247\377" \
+ "\2\255\300\274\377\276\315\312\377\202\223\254\247\377\1\301\317\314" \
+ "\377\203\333\343\342\377\2\332\342\341\377\216\250\243\377\203o\221\212" \
+ "\377\1\213\246\241\377\377\333\343\342\377\207\333\343\342\377\1\301" \
+ "\314\312\377\202Slg\377\1\200\224\220\377\232\333\343\342\377\1\203\226" \
+ "\222\377\202Slg\377\1\273\307\305\377\377\333\343\342\377\225\333\343" \
+ "\342\377\2\325\337\335\377\201\237\231\377\203o\221\212\377\1\230\260" \
+ "\253\377\203\333\343\342\377\10\251\275\271\377\223\254\247\377\225\255" \
+ "\251\377\365\367\367\377\377\377\377\377\360\363\362\377\302\320\315" \
+ "\377\231\261\254\377\202\223\254\247\377\3\236\264\260\377\333\343\342" \
+ "\377\247\273\267\377\202\223\254\247\377\10\227\257\252\377\275\314\311" \
+ "\377\353\360\357\377\377\377\377\377\373\374\373\377\232\261\254\377" \
+ "\223\254\247\377\242\270\263\377\203\333\343\342\377\1\240\266\262\377" \
+ "\203o\221\212\377\2z\231\222\377\317\332\331\377\377\333\343\342\377" \
+ "\207\333\343\342\377\1\313\325\324\377\202Slg\377\1t\211\205\377\232" \
+ "\333\343\342\377\1v\213\207\377\202Slg\377\1\305\317\316\377\377\333" \
+ "\343\342\377\226\333\343\342\377\2\315\330\326\377w\227\220\377\203o" \
+ "\221\212\377\3\223\254\250\377\327\340\336\377\322\334\333\377\202\223" \
+ "\254\247\377\1\271\311\306\377\204\377\377\377\377\2\372\373\373\377" \
+ "\271\311\306\377\202\223\254\247\377\5\323\335\333\377\226\256\251\377" \
+ "\223\254\247\377\257\301\276\377\367\371\371\377\204\377\377\377\377" \
+ "\1\303\321\316\377\202\223\254\247\377\3\314\330\326\377\331\342\340" \
+ "\377\235\264\257\377\203o\221\212\377\2r\223\214\377\304\321\317\377" \
+ "\374\333\343\342\377\3\303\316\314\377\263\300\276\377\313\325\324\377" \
+ "\210\333\343\342\377\1\327\337\336\377\202Slg\377\2`ws\377\332\342\341" \
+ "\377\231\333\343\342\377\1ayt\377\202Slg\377\1\321\332\331\377\377\333" \
+ "\343\342\377\227\333\343\342\377\2\277\316\313\377p\222\213\377\203o" \
+ "\221\212\377\2\205\241\233\377\257\301\276\377\202\223\254\247\377\1" \
+ "\346\354\353\377\205\377\377\377\377\1\315\330\326\377\202\223\253\246" \
+ "\377\4\225\255\250\377\222\253\246\377\223\254\247\377\300\316\313\377" \
+ "\205\377\377\377\377\1\360\363\362\377\202\223\254\247\377\2\253\277" \
+ "\273\377\215\250\242\377\204o\221\212\377\1\264\305\302\377\373\333\343" \
+ "\342\377\2\325\336\335\377}\221\215\377\202Slg\377\2Tlg\377\220\242\236" \
+ "\377\210\333\343\342\377\1\\to\377\202Slg\377\1\267\304\302\377\230\333" \
+ "\343\342\377\1\274\307\306\377\202Slg\377\2Wpk\377\332\342\341\377\377" \
+ "\333\343\342\377\230\333\343\342\377\2\261\303\300\377p\222\213\377\203" \
+ "o\221\212\377\3\220\252\245\377\223\254\247\377\247\273\267\377\204\377" \
+ "\377\377\377\3\372\373\373\377\300\317\314\377\222\253\246\377\206\223" \
+ "\254\247\377\2\271\311\306\377\367\371\371\377\204\377\377\377\377\4" \
+ "\261\303\300\377\223\254\247\377\222\253\246\377q\222\214\377\203o\221" \
+ "\212\377\1\247\274\270\377\374\333\343\342\377\1\213\235\232\377\205" \
+ "Slg\377\1\254\271\267\377\207\333\343\342\377\1~\221\216\377\202Slg\377" \
+ "\2v\212\206\377\332\342\341\377\227\333\343\342\377\1y\216\212\377\202" \
+ "Slg\377\1z\216\212\377\377\333\343\342\377\232\333\343\342\377\4\276" \
+ "\315\312\377v\226\220\377o\221\212\377{\232\224\377\202\223\254\247\377" \
+ "\1\325\337\335\377\203\377\377\377\377\15\376\376\376\377\255\300\274" \
+ "\377\223\254\247\377\230\260\253\377\315\331\326\377\353\360\357\377" \
+ "\374\375\375\377\356\362\361\377\323\335\333\377\234\263\256\377\223" \
+ "\254\247\377\245\272\265\377\374\374\374\377\203\377\377\377\377\1\337" \
+ "\346\345\377\202\223\254\247\377\4\177\235\227\377o\221\212\377s\224" \
+ "\215\377\267\307\305\377\374\333\343\342\377\2\332\342\341\377\\so\377" \
+ "\205Slg\377\1\204\227\223\377\207\333\343\342\377\1\244\263\260\377\203" \
+ "Slg\377\1\234\253\251\377\226\333\343\342\377\1\233\253\250\377\203S" \
+ "lg\377\1\242\261\256\377\377\333\343\342\377\233\333\343\342\377\6\313" \
+ "\327\325\377\200\236\230\377\213\246\240\377\223\254\247\377\232\261" \
+ "\255\377\373\374\373\377\203\377\377\377\377\4\320\333\330\377\223\254" \
+ "\247\377\244\271\264\377\361\364\364\377\205\377\377\377\377\4\366\370" \
+ "\370\377\254\277\273\377\223\254\247\377\304\321\317\377\203\377\377" \
+ "\377\377\6\376\376\376\377\241\267\262\377\223\254\247\377\216\250\243" \
+ "\377{\232\224\377\306\323\321\377\375\333\343\342\377\2\331\342\341\377" \
+ "Yrm\377\205Slg\377\1\201\225\221\377\207\333\343\342\377\2\314\326\324" \
+ "\377Uni\377\203Slg\377\2\221\242\237\377\331\341\340\377\222\333\343" \
+ "\342\377\2\331\341\340\377\220\242\236\377\203Slg\377\2Uni\377\314\325" \
+ "\324\377\377\333\343\342\377\234\333\343\342\377\1\307\324\322\377\202" \
+ "\223\254\247\377\1\303\321\316\377\203\377\377\377\377\4\367\371\371" \
+ "\377\227\257\252\377\225\255\250\377\351\356\355\377\207\377\377\377" \
+ "\377\4\361\365\364\377\230\260\253\377\224\255\250\377\357\363\362\377" \
+ "\203\377\377\377\377\1\315\331\326\377\202\223\254\247\377\1\276\315" \
+ "\313\377\377\333\343\342\377\1\204\226\223\377\205Slg\377\1\245\264\261" \
+ "\377\210\333\343\342\377\1\214\236\233\377\204Slg\377\3g}y\377\251\267" \
+ "\265\377\327\337\336\377\216\333\343\342\377\3\325\336\335\377\246\265" \
+ "\262\377e|w\377\204Slg\377\1\215\236\233\377\377\333\343\342\377\235" \
+ "\333\343\342\377\1\256\300\275\377\202\223\254\247\377\1\360\363\363" \
+ "\377\203\377\377\377\377\3\341\350\346\377\223\254\247\377\266\307\304" \
+ "\377\211\377\377\377\377\3\300\317\314\377\223\254\247\377\326\340\336" \
+ "\377\203\377\377\377\377\4\367\371\370\377\226\256\252\377\223\254\247" \
+ "\377\247\273\267\377\377\333\343\342\377\2\320\332\330\377q\207\202\377" \
+ "\203Slg\377\2\204\226\223\377\332\342\341\377\210\333\343\342\377\2\317" \
+ "\331\327\377Yrm\377\205Slg\377\7Yql\377~\222\216\377\240\260\255\377" \
+ "\265\302\300\377\312\324\323\377\326\336\335\377\332\342\341\377\202" \
+ "\333\343\342\377\7\332\342\341\377\326\336\335\377\312\324\323\377\265" \
+ "\302\300\377\240\260\255\377}\220\215\377Wpk\377\205Slg\377\2Yrm\377" \
+ "\317\331\327\377\377\333\343\342\377\234\333\343\342\377\4\325\336\335" \
+ "\377\225\255\250\377\223\254\247\377\262\304\300\377\204\377\377\377" \
+ "\377\3\312\326\324\377\223\254\247\377\315\331\327\377\211\377\377\377" \
+ "\377\3\330\341\337\377\223\254\247\377\300\317\314\377\204\377\377\377" \
+ "\377\1\274\313\310\377\202\223\254\247\377\1\320\333\331\377\377\333" \
+ "\343\342\377\4\331\342\341\377\272\306\304\377\251\270\265\377\300\313" \
+ "\311\377\213\333\343\342\377\1\255\273\271\377\214Slg\377\202Xpk\377" \
+ "\214Slg\377\1\256\273\271\377\377\333\343\342\377\235\333\343\342\377" \
+ "\1\271\311\306\377\202\223\254\247\377\1\340\347\345\377\204\377\377" \
+ "\377\377\3\302\320\316\377\223\254\247\377\325\337\335\377\211\377\377" \
+ "\377\377\3\340\347\345\377\223\254\247\377\270\311\305\377\204\377\377" \
+ "\377\377\1\352\357\356\377\202\223\254\247\377\1\263\304\301\377\377" \
+ "\333\343\342\377\220\333\343\342\377\1\237\256\253\377\230Slg\377\1\236" \
+ "\255\253\377\377\333\343\342\377\235\333\343\342\377\5\332\342\341\377" \
+ "\234\263\256\377\223\254\247\377\241\267\263\377\376\376\376\377\204" \
+ "\377\377\377\377\3\330\341\337\377\223\254\247\377\277\316\313\377\211" \
+ "\377\377\377\377\3\311\326\323\377\223\254\247\377\316\331\327\377\205" \
+ "\377\377\377\377\4\253\276\272\377\223\254\247\377\227\257\252\377\330" \
+ "\340\337\377\377\333\343\342\377\220\333\343\342\377\2\236\256\253\377" \
+ "Uni\377\224Slg\377\2Uni\377\236\255\253\377\377\333\343\342\377\236\333" \
+ "\343\342\377\1\305\322\320\377\202\223\254\247\377\1\316\331\327\377" \
+ "\205\377\377\377\377\4\356\362\362\377\223\254\247\377\237\265\261\377" \
+ "\371\373\373\377\207\377\377\377\377\4\375\376\376\377\246\273\267\377" \
+ "\223\254\247\377\344\352\351\377\205\377\377\377\377\1\330\341\337\377" \
+ "\202\223\254\247\377\1\276\315\312\377\377\333\343\342\377\221\333\343" \
+ "\342\377\2\276\312\310\377e{w\377\222Slg\377\2dzv\377\275\311\307\377" \
+ "\377\333\343\342\377\237\333\343\342\377\4\247\273\267\377\223\254\247" \
+ "\377\226\256\252\377\367\371\371\377\206\377\377\377\377\3\264\306\302" \
+ "\377\223\254\247\377\274\314\310\377\207\377\377\377\377\4\310\325\322" \
+ "\377\223\254\247\377\251\275\271\377\376\376\376\377\205\377\377\377" \
+ "\377\4\374\375\374\377\234\263\256\377\223\254\247\377\240\266\262\377" \
+ "\377\333\343\342\377\222\333\343\342\377\3\326\336\335\377\242\261\256" \
+ "\377e|w\377\216Slg\377\3d{v\377\241\261\256\377\325\336\335\377\377\333" \
+ "\343\342\377\237\333\343\342\377\1\320\333\331\377\202\223\254\247\377" \
+ "\1\274\314\311\377\207\377\377\377\377\5\365\367\367\377\233\262\255" \
+ "\377\223\254\247\377\262\304\301\377\364\367\366\377\203\377\377\377" \
+ "\377\5\370\372\371\377\273\313\310\377\223\254\247\377\226\257\252\377" \
+ "\356\362\361\377\207\377\377\377\377\1\307\324\321\377\202\223\254\247" \
+ "\377\1\312\326\324\377\377\333\343\342\377\223\333\343\342\377\5\331" \
+ "\341\340\377\263\300\275\377\220\241\236\377o\204\200\377Umh\377\206" \
+ "Slg\377\5Umh\377n\204\200\377\217\241\235\377\262\277\275\377\331\341" \
+ "\340\377\377\333\343\342\377\241\333\343\342\377\1\262\304\301\377\202" \
+ "\223\254\247\377\1\352\357\356\377\210\377\377\377\377\13\345\353\352" \
+ "\377\240\266\261\377\223\254\247\377\225\255\250\377\247\274\270\377" \
+ "\271\311\306\377\252\276\272\377\226\257\252\377\223\254\247\377\234" \
+ "\263\256\377\336\346\344\377\210\377\377\377\377\4\363\365\365\377\224" \
+ "\254\250\377\223\254\247\377\254\277\273\377\377\333\343\342\377\227" \
+ "\333\343\342\377\3\327\340\337\377\315\326\325\377\303\316\314\377\202" \
+ "\271\306\304\377\3\303\316\314\377\315\326\325\377\327\340\337\377\377" \
+ "\333\343\342\377\244\333\343\342\377\4\330\340\337\377\227\257\252\377" \
+ "\223\254\247\377\253\276\273\377\212\377\377\377\377\3\371\372\372\377" \
+ "\232\262\255\377\223\253\246\377\203\223\254\247\377\3\222\253\246\377" \
+ "\226\256\252\377\364\366\365\377\212\377\377\377\377\4\265\306\303\377" \
+ "\223\254\247\377\224\255\250\377\324\335\334\377\377\333\343\342\377" \
+ "\377\333\343\342\377\302\333\343\342\377\1\276\315\312\377\202\223\254" \
+ "\247\377\1\331\342\340\377\212\377\377\377\377\1\346\353\352\377\202" \
+ "\223\254\247\377\6\260\302\276\377\305\322\320\377\266\307\304\377\223" \
+ "\253\247\377\223\254\247\377\333\343\342\377\212\377\377\377\377\1\343" \
+ "\351\350\377\202\223\254\247\377\1\267\310\305\377\377\333\343\342\377" \
+ "\377\333\343\342\377\302\333\343\342\377\4\237\265\261\377\223\254\247" \
+ "\377\234\263\256\377\374\375\374\377\212\377\377\377\377\1\270\310\305" \
+ "\377\202\223\254\247\377\6\322\334\333\377\333\343\342\377\327\340\337" \
+ "\377\227\257\252\377\223\254\247\377\256\300\275\377\213\377\377\377" \
+ "\377\4\244\271\265\377\223\254\247\377\232\261\255\377\331\342\341\377" \
+ "\377\333\343\342\377\211\333\343\342\377\1\235\255\252\377\207czu\377" \
+ "\1\274\310\306\377\377\333\343\342\377\256\333\343\342\377\1\312\326" \
+ "\324\377\202\223\254\247\377\1\307\324\321\377\212\377\377\377\377\4" \
+ "\364\367\366\377\225\255\250\377\223\254\247\377\251\275\271\377\203" \
+ "\333\343\342\377\1\262\303\300\377\202\223\254\247\377\1\354\361\360" \
+ "\377\212\377\377\377\377\1\321\334\332\377\202\223\254\247\377\1\303" \
+ "\320\316\377\377\333\343\342\377\211\333\343\342\377\1|\217\214\377\207" \
+ "Slg\377\1\270\304\302\377\377\333\343\342\377\256\333\343\342\377\4\253" \
+ "\276\273\377\223\254\247\377\224\255\250\377\363\366\365\377\212\377" \
+ "\377\377\377\1\312\326\323\377\202\223\254\247\377\1\307\324\322\377" \
+ "\203\333\343\342\377\1\320\332\331\377\202\223\254\247\377\1\277\316" \
+ "\313\377\212\377\377\377\377\4\371\372\372\377\230\260\253\377\223\254" \
+ "\247\377\244\271\265\377\377\333\343\342\377\211\333\343\342\377\1ax" \
+ "t\377\207Slg\377\1\270\304\302\377\377\333\343\342\377\255\333\343\342" \
+ "\377\4\324\335\334\377\224\255\250\377\223\254\247\377\266\307\303\377" \
+ "\212\377\377\377\377\5\375\375\375\377\236\264\260\377\223\254\247\377" \
+ "\236\264\260\377\332\342\341\377\204\333\343\342\377\4\246\273\267\377" \
+ "\223\254\247\377\230\257\253\377\371\372\372\377\212\377\377\377\377" \
+ "\1\300\316\313\377\202\223\254\247\377\1\316\331\330\377\377\333\343" \
+ "\342\377\207\333\343\342\377\1\325\335\334\377\205Slg\377\4Yql\377\216" \
+ "\237\234\377\251\270\265\377\323\334\332\377\377\333\343\342\377\255" \
+ "\333\343\342\377\1\267\307\304\377\202\223\254\247\377\1\343\352\350" \
+ "\377\212\377\377\377\377\1\333\343\342\377\202\223\254\247\377\1\274" \
+ "\313\310\377\205\333\343\342\377\1\305\322\320\377\202\223\254\247\377" \
+ "\1\320\333\331\377\212\377\377\377\377\1\355\361\360\377\202\223\254" \
+ "\247\377\1\260\302\277\377\377\333\343\342\377\207\333\343\342\377\1" \
+ "\313\325\324\377\204Slg\377\2i\200{\377\313\325\324\377\377\333\343\342" \
+ "\377\257\333\343\342\377\4\331\342\341\377\232\261\255\377\223\254\247" \
+ "\377\245\271\265\377\213\377\377\377\377\4\256\300\275\377\223\254\247" \
+ "\377\226\256\251\377\327\337\336\377\205\333\343\342\377\4\332\342\341" \
+ "\377\234\262\256\377\223\254\247\377\243\271\264\377\213\377\377\377" \
+ "\377\4\256\301\275\377\223\254\247\377\226\256\251\377\327\337\336\377" \
+ "\377\333\343\342\377\206\333\343\342\377\1\302\315\313\377\204Slg\377" \
+ "\1\273\307\305\377\377\333\343\342\377\260\333\343\342\377\1\303\320" \
+ "\316\377\202\223\254\247\377\1\322\334\332\377\212\377\377\377\377\1" \
+ "\354\361\360\377\202\223\254\247\377\1\260\302\277\377\207\333\343\342" \
+ "\377\1\271\311\306\377\202\223\254\247\377\1\342\350\347\377\212\377" \
+ "\377\377\377\1\334\344\342\377\202\223\254\247\377\1\274\313\310\377" \
+ "\377\333\343\342\377\206\333\343\342\377\1\307\322\320\377\203Slg\377" \
+ "\1^uq\377\377\333\343\342\377\261\333\343\342\377\4\244\271\265\377\223" \
+ "\254\247\377\230\260\253\377\371\373\372\377\212\377\377\377\377\1\277" \
+ "\316\313\377\202\223\254\247\377\1\316\331\327\377\207\333\343\342\377" \
+ "\4\325\336\335\377\225\255\250\377\223\254\247\377\264\306\302\377\212" \
+ "\377\377\377\377\5\375\376\375\377\237\265\261\377\223\254\247\377\236" \
+ "\264\260\377\332\342\341\377\377\333\343\342\377\205\333\343\342\377" \
+ "\1\326\337\336\377\203Slg\377\1q\207\202\377\377\333\343\342\377\260" \
+ "\333\343\342\377\1\316\331\327\377\202\223\254\247\377\1\300\317\314" \
+ "\377\212\377\377\377\377\4\371\372\372\377\230\257\253\377\223\254\247" \
+ "\377\244\271\265\377\211\333\343\342\377\4\255\300\274\377\223\254\247" \
+ "\377\224\254\250\377\362\365\364\377\212\377\377\377\377\1\312\326\324" \
+ "\377\202\223\254\247\377\1\307\324\322\377\377\333\343\342\377\206\333" \
+ "\343\342\377\1^vq\377\202Slg\377\1o\205\201\377\377\333\343\342\377\260" \
+ "\333\343\342\377\1\260\302\277\377\202\223\254\247\377\1\356\361\361" \
+ "\377\212\377\377\377\377\1\320\333\331\377\202\223\254\247\377\1\303" \
+ "\320\316\377\211\333\343\342\377\1\314\327\325\377\202\223\254\247\377" \
+ "\1\306\323\320\377\212\377\377\377\377\4\365\367\367\377\225\255\251" \
+ "\377\223\254\247\377\251\275\271\377\377\333\343\342\377\206\333\343" \
+ "\342\377\1}\221\215\377\202Slg\377\1byt\377\230\333\343\342\377\1\305" \
+ "\317\316\377\202\270\305\303\377\1\315\326\325\377\377\333\343\342\377" \
+ "\223\333\343\342\377\4\326\337\336\377\226\256\251\377\223\254\247\377" \
+ "\257\301\276\377\213\377\377\377\377\4\243\271\264\377\223\254\247\377" \
+ "\232\261\255\377\331\342\341\377\212\333\343\342\377\4\242\267\263\377" \
+ "\223\254\247\377\233\262\256\377\374\374\374\377\212\377\377\377\377" \
+ "\1\271\311\306\377\202\223\254\247\377\1\322\334\333\377\377\333\343" \
+ "\342\377\205\333\343\342\377\1\270\304\302\377\203Slg\377\1\305\320\316" \
+ "\377\227\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\377\333\343\342\377\223\333\343\342\377\1\273\313\310\377\202\223\254" \
+ "\247\377\1\334\344\343\377\212\377\377\377\377\1\342\351\347\377\202" \
+ "\223\254\247\377\1\267\307\304\377\213\333\343\342\377\1\300\316\314" \
+ "\377\202\223\254\247\377\1\327\340\336\377\212\377\377\377\377\1\346" \
+ "\354\353\377\202\223\254\247\377\1\265\306\302\377\377\333\343\342\377" \
+ "\206\333\343\342\377\1k\201|\377\202Slg\377\1\216\240\235\377\227\333" \
+ "\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343" \
+ "\342\377\222\333\343\342\377\5\332\342\341\377\235\264\257\377\223\254" \
+ "\247\377\237\265\261\377\375\376\375\377\212\377\377\377\377\4\264\306" \
+ "\302\377\223\254\247\377\224\255\250\377\324\335\334\377\213\333\343" \
+ "\342\377\4\331\341\340\377\230\260\253\377\223\254\247\377\252\275\271" \
+ "\377\213\377\377\377\377\4\250\274\270\377\223\254\247\377\230\260\253" \
+ "\377\331\341\340\377\377\333\343\342\377\205\333\343\342\377\5\301\315" \
+ "\313\377Yrm\377Slg\377Umh\377\277\313\311\377\226\333\343\342\377\1\202" \
+ "\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\222\333" \
+ "\343\342\377\1\307\324\322\377\202\223\254\247\377\1\313\327\324\377" \
+ "\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223\254\247\377" \
+ "\253\276\273\377\215\333\343\342\377\1\264\305\302\377\202\223\254\247" \
+ "\377\1\350\356\355\377\212\377\377\377\377\1\325\337\335\377\202\223" \
+ "\254\247\377\1\300\316\314\377\377\333\343\342\377\206\333\343\342\377" \
+ "\5\265\302\300\377Umh\377Slg\377]up\377\301\314\312\377\225\333\343\342" \
+ "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\222\333\343\342\377\4\251\274\271\377\223\254\247\377\225\256\251\377" \
+ "\366\370\367\377\212\377\377\377\377\1\306\323\321\377\202\223\254\247" \
+ "\377\1\312\326\324\377\215\333\343\342\377\1\322\334\332\377\202\223" \
+ "\254\247\377\1\273\313\310\377\212\377\377\377\377\4\373\374\373\377" \
+ "\232\261\255\377\223\254\247\377\242\267\263\377\377\333\343\342\377" \
+ "\207\333\343\342\377\6\267\304\302\377e{w\377Slg\377Vni\377\224\245\242" \
+ "\377\321\332\331\377\223\333\343\342\377\1\202\225\221\377\202Slg\377" \
+ "\1\243\262\257\377\377\333\343\342\377\221\333\343\342\377\1\322\334" \
+ "\332\377\202\223\254\247\377\1\271\311\306\377\212\377\377\377\377\4" \
+ "\374\374\374\377\233\262\256\377\223\254\247\377\240\266\261\377\217" \
+ "\333\343\342\377\4\251\275\271\377\223\254\247\377\226\256\251\377\366" \
+ "\370\370\377\212\377\377\377\377\1\304\321\317\377\202\223\254\247\377" \
+ "\1\314\327\325\377\377\333\343\342\377\203\333\343\342\377\1\330\340" \
+ "\337\377\203\322\333\332\377\2\315\326\325\377\207\232\226\377\202Sl" \
+ "g\377\6Vni\377|\220\214\377\234\254\251\377\264\301\277\377\303\316\314" \
+ "\377\314\325\324\377\216\322\333\332\377\1\177\223\217\377\202Slg\377" \
+ "\1\243\262\257\377\377\333\343\342\377\221\333\343\342\377\1\264\305" \
+ "\302\377\202\223\254\247\377\1\346\353\352\377\212\377\377\377\377\1" \
+ "\330\341\337\377\202\223\254\247\377\1\276\315\312\377\217\333\343\342" \
+ "\377\1\307\324\322\377\202\223\254\247\377\1\315\330\326\377\212\377" \
+ "\377\377\377\1\357\362\362\377\202\223\254\247\377\1\256\300\275\377" \
+ "\377\333\343\342\377\203\333\343\342\377\1\250\267\264\377\236Slg\377" \
+ "\1\243\262\257\377\377\333\343\342\377\220\333\343\342\377\4\331\341" \
+ "\340\377\230\260\253\377\223\254\247\377\247\273\267\377\213\377\377" \
+ "\377\377\4\252\276\272\377\223\254\247\377\227\257\252\377\330\340\337" \
+ "\377\217\333\343\342\377\5\332\342\341\377\236\264\260\377\223\254\247" \
+ "\377\240\266\262\377\376\376\376\377\212\377\377\377\377\4\261\303\277" \
+ "\377\223\254\247\377\225\255\250\377\325\336\335\377\377\333\343\342" \
+ "\377\202\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377" \
+ "\377\333\343\342\377\220\333\343\342\377\1\300\316\314\377\202\223\254" \
+ "\247\377\1\324\336\334\377\212\377\377\377\377\1\351\356\355\377\202" \
+ "\223\254\247\377\1\262\304\301\377\221\333\343\342\377\1\273\313\310" \
+ "\377\202\223\254\247\377\1\336\345\344\377\212\377\377\377\377\1\336" \
+ "\346\344\377\202\223\254\247\377\1\271\311\306\377\377\333\343\342\377" \
+ "\202\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377\377" \
+ "\333\343\342\377\220\333\343\342\377\4\241\267\263\377\223\254\247\377" \
+ "\231\261\254\377\372\373\373\377\212\377\377\377\377\1\274\313\310\377" \
+ "\202\223\254\247\377\1\320\333\331\377\221\333\343\342\377\4\326\337" \
+ "\336\377\226\256\251\377\223\254\247\377\261\303\277\377\212\377\377" \
+ "\377\377\5\376\376\376\377\240\266\262\377\223\254\247\377\234\262\256" \
+ "\377\332\342\341\377\377\333\343\342\377\2\333\343\342\377\250\267\264" \
+ "\377\236Slg\377\1\243\262\257\377\377\333\343\342\377\217\333\343\342" \
+ "\377\1\314\327\325\377\202\223\254\247\377\1\303\321\316\377\212\377" \
+ "\377\377\377\4\367\371\370\377\226\256\251\377\223\254\247\377\247\273" \
+ "\267\377\223\333\343\342\377\1\260\302\277\377\202\223\254\247\377\1" \
+ "\357\362\362\377\212\377\377\377\377\1\315\330\326\377\202\223\254\247" \
+ "\377\1\305\322\320\377\377\333\343\342\377\2\333\343\342\377\250\267" \
+ "\264\377\236Slg\377\1\243\262\257\377\377\333\343\342\377\217\333\343" \
+ "\342\377\1\255\300\274\377\202\223\254\247\377\1\357\363\362\377\212" \
+ "\377\377\377\377\1\315\330\326\377\202\223\254\247\377\1\305\322\320" \
+ "\377\223\333\343\342\377\1\316\331\327\377\202\223\254\247\377\1\302" \
+ "\320\315\377\212\377\377\377\377\4\366\370\370\377\226\256\251\377\223" \
+ "\254\247\377\247\273\267\377\377\333\343\342\377\2\333\343\342\377\250" \
+ "\267\264\377\202Slg\377\1u\211\205\377\230\270\305\303\377\1v\213\207" \
+ "\377\202Slg\377\1\243\262\257\377\377\333\343\342\377\216\333\343\342" \
+ "\377\4\325\336\335\377\224\255\250\377\223\254\247\377\261\303\277\377" \
+ "\212\377\377\377\377\5\376\376\376\377\240\266\262\377\223\254\247\377" \
+ "\234\263\256\377\332\342\341\377\224\333\343\342\377\4\244\271\265\377" \
+ "\223\254\247\377\231\261\254\377\372\373\373\377\212\377\377\377\377" \
+ "\1\273\313\310\377\202\223\254\247\377\1\320\333\331\377\377\333\343" \
+ "\342\377\1\250\267\264\377\202Slg\377\1\200\224\220\377\230\333\343\342" \
+ "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\216\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1\337\346" \
+ "\345\377\212\377\377\377\377\1\336\346\344\377\202\223\254\247\377\1" \
+ "\271\311\306\377\225\333\343\342\377\1\303\320\316\377\202\223\254\247" \
+ "\377\1\323\335\333\377\212\377\377\377\377\1\351\356\355\377\202\223" \
+ "\254\247\377\1\262\304\300\377\377\333\343\342\377\1\250\267\264\377" \
+ "\202Slg\377\1\200\224\220\377\230\333\343\342\377\1\202\225\221\377\202" \
+ "Slg\377\1\243\262\257\377\377\333\343\342\377\215\333\343\342\377\5\332" \
+ "\342\341\377\233\262\256\377\223\254\247\377\241\267\262\377\376\376" \
+ "\376\377\212\377\377\377\377\4\261\303\277\377\223\254\247\377\225\255" \
+ "\250\377\325\336\335\377\225\333\343\342\377\4\331\342\341\377\232\261" \
+ "\255\377\223\254\247\377\246\272\266\377\213\377\377\377\377\4\252\275" \
+ "\271\377\223\254\247\377\227\257\252\377\327\340\337\377\376\333\343" \
+ "\342\377\1\250\267\264\377\202Slg\377\1\200\224\220\377\230\333\343\342" \
+ "\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\377\333\343\342\377" \
+ "\215\333\343\342\377\1\304\322\317\377\202\223\254\247\377\1\315\331" \
+ "\326\377\212\377\377\377\377\1\357\363\362\377\202\223\254\247\377\1" \
+ "\256\300\275\377\227\333\343\342\377\1\267\307\304\377\202\223\254\247" \
+ "\377\1\345\353\351\377\212\377\377\377\377\1\330\341\337\377\202\223" \
+ "\254\247\377\1\276\315\312\377\376\333\343\342\377\1\250\267\264\377" \
+ "\202Slg\377\1\200\224\220\377\230\333\343\342\377\1\202\225\221\377\202" \
+ "Slg\377\1\243\262\257\377\377\333\343\342\377\215\333\343\342\377\4\246" \
+ "\272\266\377\223\254\247\377\226\256\252\377\367\371\370\377\212\377" \
+ "\377\377\377\1\302\320\315\377\202\223\254\247\377\1\314\330\326\377" \
+ "\227\333\343\342\377\4\324\335\334\377\224\255\250\377\223\254\247\377" \
+ "\267\310\305\377\212\377\377\377\377\4\374\374\374\377\233\262\256\377" \
+ "\223\254\247\377\237\265\261\377\376\333\343\342\377\1\311\324\322\377" \
+ "\202\254\271\267\377\1\274\307\306\377\230\333\343\342\377\1\325\336" \
+ "\335\377\202\322\333\332\377\1\327\340\337\377\377\333\343\342\377\214" \
+ "\333\343\342\377\1\320\332\331\377\202\223\254\247\377\1\274\313\310" \
+ "\377\212\377\377\377\377\4\372\373\373\377\231\261\254\377\223\254\247" \
+ "\377\242\267\263\377\231\333\343\342\377\4\253\276\273\377\223\254\247" \
+ "\377\225\255\250\377\364\366\366\377\212\377\377\377\377\1\306\323\321" \
+ "\377\202\223\254\247\377\1\311\325\323\377\377\333\343\342\377\377\333" \
+ "\343\342\377\252\333\343\342\377\1\262\303\300\377\202\223\254\247\377" \
+ "\1\351\356\355\377\212\377\377\377\377\1\324\336\334\377\202\223\254" \
+ "\247\377\1\301\317\314\377\231\333\343\342\377\1\312\326\324\377\202" \
+ "\223\254\247\377\1\311\325\323\377\212\377\377\377\377\4\362\365\364" \
+ "\377\224\254\250\377\223\254\247\377\253\276\273\377\377\333\343\342" \
+ "\377\377\333\343\342\377\251\333\343\342\377\4\327\340\337\377\227\257" \
+ "\252\377\223\254\247\377\253\276\272\377\213\377\377\377\377\4\246\273" \
+ "\267\377\223\254\247\377\230\260\253\377\331\341\340\377\213\333\343" \
+ "\342\377\3\306\323\320\377\274\313\311\377\316\330\327\377\214\333\343" \
+ "\342\377\4\237\265\261\377\223\254\247\377\236\264\257\377\375\375\375" \
+ "\377\212\377\377\377\377\4\264\306\302\377\223\254\247\377\224\255\250" \
+ "\377\323\335\334\377\377\333\343\342\377\225\333\343\342\377\5|\220\214" \
+ "\377x\214\210\377\217\241\235\377\266\302\300\377\331\342\341\377\377" \
+ "\333\343\342\377\216\333\343\342\377\1\275\314\312\377\202\223\254\247" \
+ "\377\1\330\341\337\377\212\377\377\377\377\1\346\353\352\377\202\223" \
+ "\254\247\377\1\265\306\303\377\212\333\343\342\377\2\331\341\340\377" \
+ "\250\275\271\377\203\223\254\247\377\1\240\266\262\377\213\333\343\342" \
+ "\377\1\276\315\312\377\202\223\254\247\377\1\332\343\341\377\212\377" \
+ "\377\377\377\1\342\351\347\377\202\223\254\247\377\1\267\307\304\377" \
+ "\374\333\343\342\377\1\315\326\325\377\202\264\301\277\377\1\277\312" \
+ "\310\377\224\333\343\342\377\1h\177z\377\203Slg\377\2h\177z\377\267\303" \
+ "\301\377\377\333\343\342\377\215\333\343\342\377\4\237\265\261\377\223" \
+ "\254\247\377\234\263\256\377\374\375\374\377\212\377\377\377\377\1\270" \
+ "\310\305\377\202\223\254\247\377\1\322\334\333\377\212\333\343\342\377" \
+ "\7\306\323\320\377\223\254\247\377\236\264\260\377\303\321\316\377\236" \
+ "\265\260\377\223\254\247\377\305\323\320\377\212\333\343\342\377\4\330" \
+ "\340\337\377\227\257\252\377\223\254\247\377\255\300\274\377\213\377" \
+ "\377\377\377\4\243\271\264\377\223\254\247\377\232\261\254\377\331\341" \
+ "\340\377\373\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210" \
+ "\377\224\333\343\342\377\1h\177z\377\204Slg\377\2Tmh\377\251\270\265" \
+ "\377\377\333\343\342\377\213\333\343\342\377\1\311\325\323\377\202\223" \
+ "\254\247\377\1\307\324\321\377\212\377\377\377\377\4\364\367\366\377" \
+ "\225\255\250\377\223\254\247\377\251\275\271\377\213\333\343\342\377" \
+ "\7\260\302\277\377\223\254\247\377\325\336\334\377\377\377\377\377\327" \
+ "\340\337\377\223\254\247\377\250\274\271\377\213\333\343\342\377\1\262" \
+ "\304\300\377\202\223\254\247\377\1\353\360\357\377\212\377\377\377\377" \
+ "\1\321\333\331\377\202\223\254\247\377\1\302\320\316\377\373\333\343" \
+ "\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\224\333\343\342" \
+ "\377\1h\177z\377\205Slg\377\2Xpk\377\311\323\322\377\377\333\343\342" \
+ "\377\212\333\343\342\377\4\253\276\272\377\223\254\247\377\224\254\250" \
+ "\377\362\365\364\377\212\377\377\377\377\1\312\326\323\377\202\223\254" \
+ "\247\377\1\310\324\322\377\213\333\343\342\377\7\255\300\275\377\223" \
+ "\254\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254" \
+ "\247\377\245\272\265\377\213\333\343\342\377\1\320\333\331\377\202\223" \
+ "\254\247\377\1\276\315\312\377\212\377\377\377\377\4\371\372\372\377" \
+ "\230\257\253\377\223\254\247\377\244\271\265\377\373\333\343\342\377" \
+ "\1\250\267\264\377\202Slg\377\1x\214\210\377\224\333\343\342\377\4\303" \
+ "\316\314\377\260\275\273\377\233\253\250\377f}x\377\203Slg\377\1\217" \
+ "\241\235\377\377\333\343\342\377\211\333\343\342\377\4\323\335\333\377" \
+ "\224\254\247\377\223\254\247\377\265\306\303\377\212\377\377\377\377" \
+ "\4\375\375\375\377\236\264\260\377\223\254\247\377\236\264\260\377\214" \
+ "\333\343\342\377\7\255\300\275\377\223\254\247\377\341\350\346\377\377" \
+ "\377\377\377\356\362\361\377\223\254\247\377\245\272\265\377\214\333" \
+ "\343\342\377\4\247\273\267\377\223\254\247\377\227\257\252\377\370\372" \
+ "\371\377\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1" \
+ "\316\331\327\377\372\333\343\342\377\1\250\267\264\377\202Slg\377\1x" \
+ "\214\210\377\227\333\343\342\377\2\331\342\341\377\211\233\230\377\202" \
+ "Slg\377\1d{v\377\377\333\343\342\377\211\333\343\342\377\1\266\307\304" \
+ "\377\202\223\254\247\377\1\343\351\350\377\212\377\377\377\377\1\333" \
+ "\343\342\377\202\223\254\247\377\1\274\313\310\377\214\333\343\342\377" \
+ "\7\255\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
+ "\362\361\377\223\254\247\377\245\272\265\377\214\333\343\342\377\1\305" \
+ "\322\320\377\202\223\254\247\377\1\317\332\330\377\212\377\377\377\377" \
+ "\1\354\361\360\377\202\223\254\247\377\1\260\302\276\377\372\333\343" \
+ "\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343\342" \
+ "\377\2\326\337\336\377]tp\377\202Slg\377\1\317\331\327\377\377\333\343" \
+ "\342\377\207\333\343\342\377\4\331\341\340\377\232\261\254\377\223\254" \
+ "\247\377\244\271\265\377\213\377\377\377\377\4\256\300\275\377\223\254" \
+ "\247\377\226\256\251\377\327\337\336\377\214\333\343\342\377\7\255\300" \
+ "\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362\361" \
+ "\377\223\254\247\377\245\272\265\377\214\333\343\342\377\5\332\342\341" \
+ "\377\234\262\256\377\223\254\247\377\243\270\264\377\376\376\376\377" \
+ "\212\377\377\377\377\4\256\300\275\377\223\254\247\377\226\256\251\377" \
+ "\326\337\336\377\371\333\343\342\377\1\250\267\264\377\202Slg\377\1x" \
+ "\214\210\377\231\333\343\342\377\1v\212\206\377\202Slg\377\1\301\315" \
+ "\313\377\377\333\343\342\377\207\333\343\342\377\1\302\320\315\377\202" \
+ "\223\254\247\377\1\321\334\332\377\212\377\377\377\377\1\354\361\360" \
+ "\377\202\223\254\247\377\1\260\302\277\377\215\333\343\342\377\7\255" \
+ "\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362" \
+ "\361\377\223\254\247\377\245\272\265\377\215\333\343\342\377\1\271\311" \
+ "\306\377\202\223\254\247\377\1\341\350\346\377\212\377\377\377\377\1" \
+ "\333\343\342\377\202\223\254\247\377\1\273\313\310\377\371\333\343\342" \
+ "\377\1\250\267\264\377\202Slg\377\1x\214\210\377\231\333\343\342\377" \
+ "\1\177\222\217\377\202Slg\377\1\272\306\304\377\377\333\343\342\377\207" \
+ "\333\343\342\377\4\243\270\264\377\223\254\247\377\230\260\253\377\371" \
+ "\372\372\377\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377" \
+ "\1\316\331\330\377\215\333\343\342\377\7\255\300\275\377\223\254\247" \
+ "\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377" \
+ "\245\272\265\377\215\333\343\342\377\4\325\336\335\377\225\255\250\377" \
+ "\223\254\247\377\264\305\301\377\212\377\377\377\377\5\375\375\375\377" \
+ "\236\265\260\377\223\254\247\377\235\264\257\377\332\342\341\377\370" \
+ "\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\231\333" \
+ "\343\342\377\1i\177{\377\202Slg\377\1\276\312\310\377\377\333\343\342" \
+ "\377\206\333\343\342\377\1\316\331\327\377\202\223\254\247\377\7\300" \
+ "\316\313\377\377\377\377\377\327\340\337\377\272\312\306\377\254\277" \
+ "\273\377\276\315\312\377\343\352\350\377\204\377\377\377\377\4\371\372" \
+ "\372\377\230\257\253\377\223\254\247\377\245\271\265\377\216\333\343" \
+ "\342\377\7\255\300\275\377\223\254\247\377\341\350\346\377\377\377\377" \
+ "\377\356\362\361\377\223\254\247\377\245\272\265\377\216\333\343\342" \
+ "\377\1\256\300\275\377\202\223\254\247\377\1\361\364\364\377\204\377" \
+ "\377\377\377\7\350\355\354\377\300\317\314\377\254\300\274\377\267\310" \
+ "\304\377\323\335\333\377\376\376\376\377\312\326\324\377\202\223\254" \
+ "\247\377\1\307\323\321\377\370\333\343\342\377\1\250\267\264\377\202" \
+ "Slg\377\1x\214\210\377\230\333\343\342\377\1\254\272\270\377\203Slg\377" \
+ "\1\307\321\320\377\354\333\343\342\377\1\205\241\234\377\210|\233\225" \
+ "\377\1\262\303\300\377\217\312\326\324\377\1\251\274\271\377\202\223" \
+ "\254\247\377\2\350\355\354\377\257\301\275\377\205\223\254\247\377\1" \
+ "\301\317\315\377\203\377\377\377\377\1\320\333\331\377\202\223\254\247" \
+ "\377\1\267\310\305\377\216\312\326\324\377\7\247\273\267\377\223\254" \
+ "\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247" \
+ "\377\240\266\262\377\216\312\326\324\377\1\276\315\312\377\202\223\254" \
+ "\247\377\1\305\322\320\377\203\377\377\377\377\2\312\327\324\377\224" \
+ "\255\250\377\204\223\254\247\377\5\251\275\271\377\354\360\360\377\225" \
+ "\255\251\377\223\254\247\377\243\270\264\377\217\312\326\324\377\1\273" \
+ "\313\310\377\210|\233\225\377\2\177\235\227\377\330\341\337\377\325\333" \
+ "\343\342\377\1\273\307\305\377\210\270\305\303\377\1\223\244\241\377" \
+ "\202Slg\377\1n\204\200\377\223\270\305\303\377\6\267\303\301\377\257" \
+ "\274\272\377\247\265\263\377\232\252\247\377t\210\204\377Tmh\377\202" \
+ "Slg\377\2Woj\377\330\340\337\377\354\333\343\342\377\1u\225\217\377\227" \
+ "o\221\212\377\15q\222\213\377\221\252\245\377\223\254\247\377\256\301" \
+ "\275\377\277\316\313\377\223\254\247\377\242\267\263\377\334\344\343" \
+ "\377\354\360\357\377\323\335\333\377\232\261\255\377\223\254\247\377" \
+ "\327\340\337\377\202\377\377\377\377\3\243\271\264\377\223\254\247\377" \
+ "\217\251\243\377\217o\221\212\377\7\205\242\234\377\223\254\247\377\341" \
+ "\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377\212\245" \
+ "\240\377\217o\221\212\377\22\213\246\240\377\223\254\247\377\233\262" \
+ "\255\377\373\374\374\377\377\377\377\377\343\352\350\377\223\254\247" \
+ "\377\226\257\252\377\316\331\327\377\354\360\357\377\340\347\345\377" \
+ "\250\274\270\377\223\254\247\377\265\306\303\377\271\311\306\377\223" \
+ "\254\247\377\222\253\246\377s\224\215\377\230o\221\212\377\1\327\340" \
+ "\337\377\325\333\343\342\377\1\\so\377\247Slg\377\1t\210\204\377\355" \
+ "\333\343\342\377\1u\225\217\377\227o\221\212\377\1~\234\226\377\202\223" \
+ "\254\247\377\4\331\342\340\377\224\255\250\377\230\260\253\377\361\365" \
+ "\364\377\203\377\377\377\377\5\341\350\346\377\223\254\247\377\247\274" \
+ "\270\377\377\377\377\377\342\351\347\377\202\223\254\247\377\1\200\236" \
+ "\230\377\217o\221\212\377\7\205\242\234\377\223\254\247\377\341\350\346" \
+ "\377\377\377\377\377\356\362\361\377\223\254\247\377\212\245\240\377" \
+ "\217o\221\212\377\1|\232\224\377\202\223\254\247\377\5\326\340\336\377" \
+ "\377\377\377\377\262\304\301\377\223\254\247\377\325\337\335\377\203" \
+ "\377\377\377\377\4\370\371\371\377\235\264\257\377\223\254\247\377\332" \
+ "\342\340\377\202\223\254\247\377\1\202\237\231\377\230o\221\212\377\1" \
+ "\327\340\337\377\325\333\343\342\377\1\\so\377\247Slg\377\1\253\271\266" \
+ "\377\355\333\343\342\377\1u\225\217\377\227o\221\212\377\6\215\250\242" \
+ "\377\223\254\247\377\236\265\260\377\344\352\350\377\223\254\247\377" \
+ "\262\304\300\377\205\377\377\377\377\7\233\262\255\377\225\255\250\377" \
+ "\374\374\374\377\264\306\302\377\223\254\247\377\222\253\246\377r\223" \
+ "\214\377\217o\221\212\377\7\205\242\234\377\223\254\247\377\341\350\346" \
+ "\377\377\377\377\377\356\362\361\377\223\254\247\377\212\245\240\377" \
+ "\220o\221\212\377\7\220\251\244\377\223\254\247\377\251\275\271\377\377" \
+ "\377\377\377\235\264\257\377\223\254\247\377\372\373\373\377\204\377" \
+ "\377\377\377\7\275\314\311\377\223\254\247\377\333\343\342\377\247\273" \
+ "\267\377\223\254\247\377\220\251\244\377p\221\212\377\227o\221\212\377" \
+ "\1\327\340\337\377\325\333\343\342\377\1\\so\377\246Slg\377\2u\211\205" \
+ "\377\331\341\340\377\355\333\343\342\377\1u\225\217\377\226o\221\212" \
+ "\377\1y\230\222\377\202\223\254\247\377\4\312\326\324\377\353\360\357" \
+ "\377\223\254\247\377\254\277\273\377\204\377\377\377\377\7\375\375\375" \
+ "\377\227\257\252\377\230\260\253\377\361\364\363\377\224\254\250\377" \
+ "\223\254\247\377\206\242\234\377\220o\221\212\377\7\205\242\234\377\223" \
+ "\254\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254" \
+ "\247\377\212\245\240\377\220o\221\212\377\1\201\237\231\377\202\223\254" \
+ "\247\377\4\350\355\354\377\243\270\264\377\223\254\247\377\365\367\367" \
+ "\377\204\377\377\377\377\4\267\310\304\377\223\254\247\377\340\347\345" \
+ "\377\325\336\334\377\202\223\254\247\377\1|\233\224\377\227o\221\212" \
+ "\377\1\327\340\337\377\325\333\343\342\377\1\\so\377\245Slg\377\2}\220" \
+ "\215\377\321\332\331\377\356\333\343\342\377\1u\225\217\377\226o\221" \
+ "\212\377\10\210\243\236\377\223\254\247\377\225\255\251\377\365\367\367" \
+ "\377\376\376\376\377\231\261\254\377\223\254\247\377\342\351\347\377" \
+ "\203\377\377\377\377\4\315\331\326\377\223\254\247\377\260\302\276\377" \
+ "\306\323\321\377\202\223\254\247\377\1w\227\220\377\220o\221\212\377" \
+ "\7\205\242\234\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
+ "\362\361\377\223\254\247\377\212\245\240\377\220o\221\212\377\7s\224" \
+ "\215\377\222\253\246\377\223\254\247\377\272\312\307\377\273\313\307" \
+ "\377\223\254\247\377\301\317\315\377\203\377\377\377\377\10\354\360\357" \
+ "\377\226\256\251\377\225\256\251\377\366\370\370\377\373\374\373\377" \
+ "\232\261\254\377\223\254\247\377\213\246\240\377\227o\221\212\377\1\327" \
+ "\340\337\377\325\333\343\342\377\1\\so\377\241Slg\377\4Xpk\377n\204\200" \
+ "\377\213\235\232\377\274\310\306\377\360\333\343\342\377\1u\225\217\377" \
+ "\210o\221\212\377\1u\225\216\377\214x\230\221\377\4{\232\223\377\222" \
+ "\253\246\377\223\254\247\377\271\311\306\377\202\377\377\377\377\14\324" \
+ "\336\334\377\223\254\247\377\225\256\251\377\277\316\313\377\321\334" \
+ "\331\377\266\307\303\377\223\254\247\377\225\256\251\377\347\354\353" \
+ "\377\233\262\256\377\223\254\247\377\215\250\242\377\221x\230\221\377" \
+ "\7\210\244\237\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
+ "\362\361\377\223\254\247\377\214\247\241\377\221x\230\221\377\14\212" \
+ "\245\240\377\223\254\247\377\225\256\251\377\352\356\356\377\231\260" \
+ "\253\377\223\254\247\377\260\302\277\377\320\333\331\377\303\321\316" \
+ "\377\230\260\253\377\223\254\247\377\312\326\324\377\202\377\377\377" \
+ "\377\1\303\321\316\377\202\223\254\247\377\1}\234\225\377\214x\230\221" \
+ "\377\1v\226\217\377\211o\221\212\377\1\327\340\337\377\325\333\343\342" \
+ "\377\1\317\330\327\377\210\316\327\326\377\1\240\260\255\377\202Slg\377" \
+ "\1t\211\205\377\223\316\327\326\377\2\320\331\330\377\327\340\337\377" \
+ "\364\333\343\342\377\1\236\265\260\377\210\232\262\255\377\1\307\323" \
+ "\321\377\214\333\343\342\377\1\264\305\302\377\202\223\254\247\377\1" \
+ "\346\354\353\377\203\377\377\377\377\2\314\330\325\377\226\256\251\377" \
+ "\203\223\254\247\377\3\233\263\256\377\335\345\343\377\330\341\337\377" \
+ "\202\223\254\247\377\1\276\315\312\377\221\333\343\342\377\7\255\300" \
+ "\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362\361" \
+ "\377\223\254\247\377\245\272\265\377\221\333\343\342\377\1\307\324\322" \
+ "\377\202\223\254\247\377\3\314\327\325\377\343\352\351\377\237\265\261" \
+ "\377\203\223\254\247\377\3\224\255\250\377\305\322\320\377\375\376\376" \
+ "\377\202\377\377\377\377\1\360\363\362\377\202\223\254\247\377\1\255" \
+ "\300\274\377\214\333\343\342\377\1\317\331\330\377\211\232\262\255\377" \
+ "\1\331\341\340\377\336\333\343\342\377\1\250\267\264\377\202Slg\377\1" \
+ "x\214\210\377\377\333\343\342\377\237\333\343\342\377\4\330\341\340\377" \
+ "\230\260\253\377\223\254\247\377\250\274\270\377\205\377\377\377\377" \
+ "\12\360\364\363\377\325\336\334\377\307\324\321\377\331\342\340\377\367" \
+ "\371\370\377\377\377\377\377\252\276\272\377\223\254\247\377\227\257" \
+ "\252\377\330\340\337\377\221\333\343\342\377\7\255\300\275\377\223\254" \
+ "\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247" \
+ "\377\245\272\265\377\221\333\343\342\377\12\332\342\341\377\236\264\260" \
+ "\377\223\254\247\377\240\266\261\377\375\376\375\377\371\373\373\377" \
+ "\333\343\342\377\310\325\322\377\322\334\332\377\355\361\361\377\205" \
+ "\377\377\377\377\4\262\304\300\377\223\254\247\377\224\255\250\377\325" \
+ "\336\335\377\364\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214" \
+ "\210\377\377\333\343\342\377\237\333\343\342\377\1\277\316\313\377\202" \
+ "\223\254\247\377\1\325\337\335\377\212\377\377\377\377\1\351\356\355" \
+ "\377\202\223\254\247\377\1\263\304\301\377\222\333\343\342\377\7\255" \
+ "\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362" \
+ "\361\377\223\254\247\377\245\272\265\377\222\333\343\342\377\1\274\313" \
+ "\310\377\202\223\254\247\377\1\335\345\343\377\212\377\377\377\377\1" \
+ "\337\346\345\377\202\223\254\247\377\1\271\311\306\377\364\333\343\342" \
+ "\377\1\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377" \
+ "\237\333\343\342\377\4\241\267\263\377\223\254\247\377\232\261\255\377" \
+ "\373\374\373\377\212\377\377\377\377\1\274\313\310\377\202\223\254\247" \
+ "\377\1\320\333\331\377\222\333\343\342\377\7\255\300\275\377\223\254" \
+ "\247\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247" \
+ "\377\245\272\265\377\222\333\343\342\377\4\327\337\336\377\226\256\251" \
+ "\377\223\254\247\377\260\302\276\377\212\377\377\377\377\5\376\376\376" \
+ "\377\241\267\263\377\223\254\247\377\233\262\256\377\332\342\341\377" \
+ "\363\333\343\342\377\1\264\300\276\377\202p\205\201\377\1\215\237\234" \
+ "\377\377\333\343\342\377\236\333\343\342\377\1\313\327\325\377\202\223" \
+ "\254\247\377\1\304\321\317\377\212\377\377\377\377\4\367\371\370\377" \
+ "\226\256\251\377\223\254\247\377\247\273\267\377\223\333\343\342\377" \
+ "\7\255\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356" \
+ "\362\361\377\223\254\247\377\245\272\265\377\223\333\343\342\377\1\260" \
+ "\302\277\377\202\223\254\247\377\1\356\362\361\377\212\377\377\377\377" \
+ "\1\316\331\327\377\202\223\254\247\377\1\304\321\317\377\377\333\343" \
+ "\342\377\377\333\343\342\377\226\333\343\342\377\1\255\300\274\377\202" \
+ "\223\254\247\377\1\360\363\363\377\212\377\377\377\377\1\315\330\326" \
+ "\377\202\223\254\247\377\1\305\322\320\377\223\333\343\342\377\7\255" \
+ "\300\275\377\223\254\247\377\341\350\346\377\377\377\377\377\356\362" \
+ "\361\377\223\254\247\377\245\272\265\377\223\333\343\342\377\1\316\331" \
+ "\327\377\202\223\254\247\377\1\301\317\314\377\212\377\377\377\377\4" \
+ "\367\371\371\377\226\256\252\377\223\254\247\377\246\272\266\377\377" \
+ "\333\343\342\377\377\333\343\342\377\225\333\343\342\377\4\325\336\335" \
+ "\377\224\255\250\377\223\254\247\377\262\304\300\377\212\377\377\377" \
+ "\377\5\376\376\376\377\240\266\262\377\223\254\247\377\234\263\256\377" \
+ "\332\342\341\377\223\333\343\342\377\7\255\300\275\377\223\254\247\377" \
+ "\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377\245" \
+ "\272\265\377\224\333\343\342\377\4\244\271\265\377\223\254\247\377\230" \
+ "\260\253\377\372\373\373\377\212\377\377\377\377\1\274\314\311\377\202" \
+ "\223\254\247\377\1\317\332\330\377\377\333\343\342\377\377\333\343\342" \
+ "\377\224\333\343\342\377\1\270\310\306\377\202\223\254\247\377\1\340" \
+ "\347\345\377\212\377\377\377\377\1\337\346\345\377\202\223\254\247\377" \
+ "\1\272\311\307\377\224\333\343\342\377\7\255\300\275\377\223\254\247" \
+ "\377\341\350\346\377\377\377\377\377\356\362\361\377\223\254\247\377" \
+ "\245\272\265\377\224\333\343\342\377\1\303\320\316\377\202\223\254\247" \
+ "\377\1\322\335\333\377\212\377\377\377\377\1\352\357\356\377\202\223" \
+ "\254\247\377\1\262\303\300\377\377\333\343\342\377\377\333\343\342\377" \
+ "\223\333\343\342\377\5\332\342\341\377\233\262\255\377\223\254\247\377" \
+ "\241\267\263\377\376\376\376\377\212\377\377\377\377\4\261\303\277\377" \
+ "\223\254\247\377\225\255\251\377\325\337\335\377\224\333\343\342\377" \
+ "\7\264\305\302\377\223\254\247\377\316\331\327\377\377\377\377\377\331" \
+ "\342\340\377\223\254\247\377\252\276\273\377\224\333\343\342\377\4\331" \
+ "\342\341\377\232\261\255\377\223\254\247\377\245\272\266\377\213\377" \
+ "\377\377\377\4\253\276\273\377\223\254\247\377\226\257\252\377\327\340" \
+ "\337\377\377\333\343\342\377\206\333\343\342\377\6\330\340\337\377\304" \
+ "\316\315\377\255\272\270\377\254\272\270\377\273\307\305\377\325\336" \
+ "\335\377\377\333\343\342\377\206\333\343\342\377\1\304\321\317\377\202" \
+ "\223\254\247\377\1\316\331\327\377\212\377\377\377\377\1\357\363\362" \
+ "\377\202\223\254\247\377\1\256\301\275\377\225\333\343\342\377\7\310" \
+ "\324\323\377\222\253\246\377\225\255\250\377\256\301\275\377\227\257" \
+ "\252\377\223\254\247\377\300\316\314\377\225\333\343\342\377\1\267\310" \
+ "\305\377\202\223\254\247\377\1\344\352\351\377\212\377\377\377\377\1" \
+ "\330\341\337\377\202\223\254\247\377\1\275\314\311\377\377\333\343\342" \
+ "\377\204\333\343\342\377\3\320\331\330\377\205\227\224\377Uni\377\204" \
+ "Slg\377\3Xpk\377\201\225\221\377\310\323\321\377\377\333\343\342\377" \
+ "\204\333\343\342\377\4\246\272\266\377\223\254\247\377\227\257\252\377" \
+ "\367\371\371\377\212\377\377\377\377\1\302\320\315\377\202\223\254\247" \
+ "\377\1\314\330\326\377\226\333\343\342\377\2\274\313\311\377\225\255" \
+ "\250\377\202\223\254\247\377\1\264\305\302\377\226\333\343\342\377\4" \
+ "\324\335\334\377\224\255\250\377\223\254\247\377\267\307\304\377\212" \
+ "\377\377\377\377\4\374\375\374\377\234\263\256\377\223\254\247\377\237" \
+ "\265\261\377\363\333\343\342\377\1\200\224\220\377\205t\211\205\377\1" \
+ "w\213\207\377\210\333\343\342\377\2\262\277\275\377\\to\377\210Slg\377" \
+ "\2Xql\377\252\270\266\377\377\333\343\342\377\202\333\343\342\377\1\317" \
+ "\332\330\377\202\223\254\247\377\1\275\314\311\377\212\377\377\377\377" \
+ "\4\372\373\373\377\231\261\254\377\223\254\247\377\242\270\263\377\230" \
+ "\333\343\342\377\3\330\341\340\377\313\326\324\377\327\337\336\377\230" \
+ "\333\343\342\377\4\253\276\273\377\223\254\247\377\224\255\250\377\363" \
+ "\366\366\377\212\377\377\377\377\1\307\324\321\377\202\223\254\247\377" \
+ "\1\311\325\323\377\361\333\343\342\377\1\275\311\307\377\206Slg\377\1" \
+ "Vni\377\207\333\343\342\377\2\306\321\317\377Yrm\377\212Slg\377\2Tmh" \
+ "\377\256\273\271\377\377\333\343\342\377\2\333\343\342\377\261\303\300" \
+ "\377\202\223\254\247\377\1\352\357\356\377\212\377\377\377\377\1\324" \
+ "\336\334\377\202\223\254\247\377\1\301\317\314\377\263\333\343\342\377" \
+ "\1\312\326\324\377\202\223\254\247\377\1\310\325\322\377\212\377\377" \
+ "\377\377\4\363\365\365\377\224\255\250\377\223\254\247\377\253\276\272" \
+ "\377\361\333\343\342\377\1\212\234\231\377\206Slg\377\1Vni\377\206\333" \
+ "\343\342\377\2\326\337\336\377l\201}\377\214Slg\377\2Xpk\377\313\325" \
+ "\323\377\376\333\343\342\377\4\327\340\337\377\226\257\252\377\223\254" \
+ "\247\377\253\277\273\377\213\377\377\377\377\4\247\273\267\377\223\254" \
+ "\247\377\231\260\254\377\331\341\340\377\264\333\343\342\377\4\240\266" \
+ "\261\377\223\254\247\377\235\263\257\377\374\375\375\377\212\377\377" \
+ "\377\377\4\266\307\303\377\223\254\247\377\224\254\247\377\323\335\333" \
+ "\377\357\333\343\342\377\2\331\342\341\377]up\377\204Slg\377\3czu\377" \
+ "\203\226\222\377\243\262\257\377\206\333\343\342\377\1\235\255\252\377" \
+ "\216Slg\377\1\177\222\217\377\376\333\343\342\377\1\275\314\311\377\202" \
+ "\223\254\247\377\1\331\342\340\377\212\377\377\377\377\1\346\353\352" \
+ "\377\202\223\254\247\377\1\265\306\303\377\265\333\343\342\377\1\276" \
+ "\315\312\377\202\223\254\247\377\1\331\342\340\377\212\377\377\377\377" \
+ "\1\343\351\350\377\202\223\254\247\377\1\266\307\304\377\357\333\343" \
+ "\342\377\1\276\311\307\377\204Slg\377\2\224\244\241\377\331\341\340\377" \
+ "\207\333\343\342\377\2\332\342\341\377f|x\377\205Slg\377\6byt\377\252" \
+ "\270\266\377\307\321\320\377\313\325\324\377\257\275\272\377\202\225" \
+ "\221\377\204Slg\377\1\313\325\323\377\375\333\343\342\377\4\237\265\260" \
+ "\377\223\254\247\377\235\263\257\377\374\375\375\377\212\377\377\377" \
+ "\377\1\270\310\305\377\202\223\254\247\377\1\322\334\333\377\265\333" \
+ "\343\342\377\4\330\340\337\377\227\257\252\377\223\254\247\377\254\277" \
+ "\273\377\213\377\377\377\377\4\244\271\265\377\223\254\247\377\231\261" \
+ "\254\377\331\341\340\377\356\333\343\342\377\1\227\250\245\377\203Sl" \
+ "g\377\1\255\273\271\377\211\333\343\342\377\1\266\303\301\377\205Slg" \
+ "\377\2l\202~\377\321\332\331\377\205\333\343\342\377\1\233\253\250\377" \
+ "\203Slg\377\1\232\252\247\377\374\333\343\342\377\1\310\325\323\377\202" \
+ "\223\254\247\377\1\307\324\322\377\212\377\377\377\377\4\364\367\366" \
+ "\377\225\255\250\377\223\254\247\377\251\275\271\377\267\333\343\342" \
+ "\377\1\262\304\301\377\202\223\254\247\377\1\353\357\356\377\212\377" \
+ "\377\377\377\1\322\334\332\377\202\223\254\247\377\1\302\320\315\377" \
+ "\356\333\343\342\377\1z\216\212\377\202Slg\377\1w\214\210\377\212\333" \
+ "\343\342\377\1\177\222\217\377\204Slg\377\2Tlg\377\277\312\310\377\207" \
+ "\333\343\342\377\1y\215\211\377\202Slg\377\1v\212\206\377\374\333\343" \
+ "\342\377\4\252\276\272\377\223\254\247\377\224\255\250\377\363\366\365" \
+ "\377\212\377\377\377\377\1\312\326\323\377\202\223\254\247\377\1\310" \
+ "\324\322\377\267\333\343\342\377\1\320\333\331\377\202\223\254\247\377" \
+ "\1\275\314\311\377\212\377\377\377\377\4\371\373\372\377\230\260\253" \
+ "\377\223\254\247\377\243\270\264\377\356\333\343\342\377\1ayt\377\202" \
+ "Slg\377\1\277\312\310\377\211\333\343\342\377\2\325\335\334\377Woj\377" \
+ "\204Slg\377\1\211\233\230\377\210\333\343\342\377\1\265\302\300\377\202" \
+ "Slg\377\1\\so\377\373\333\343\342\377\4\323\335\333\377\224\254\247\377" \
+ "\223\254\247\377\266\307\303\377\212\377\377\377\377\4\375\375\375\377" \
+ "\236\264\260\377\223\254\247\377\236\264\260\377\271\333\343\342\377" \
+ "\4\247\273\267\377\223\254\247\377\227\257\252\377\370\371\371\377\212" \
+ "\377\377\377\377\1\300\317\314\377\202\223\254\247\377\1\315\330\327" \
+ "\377\354\333\343\342\377\1\324\335\334\377\202Slg\377\1Xql\377\212\333" \
+ "\343\342\377\1\260\275\273\377\205Slg\377\1\301\315\313\377\211\333\343" \
+ "\342\377\1[sn\377\202Slg\377\1\315\327\325\377\372\333\343\342\377\1" \
+ "\266\306\303\377\202\223\254\247\377\1\343\352\350\377\212\377\377\377" \
+ "\377\1\333\343\342\377\202\223\254\247\377\1\274\313\311\377\271\333" \
+ "\343\342\377\1\305\322\320\377\202\223\254\247\377\1\317\332\330\377" \
+ "\212\377\377\377\377\1\356\361\361\377\202\223\254\247\377\1\257\301" \
+ "\276\377\354\333\343\342\377\1\312\324\323\377\202Slg\377\1l\201}\377" \
+ "\212\333\343\342\377\1\207\231\226\377\204Slg\377\1l\202~\377\212\333" \
+ "\343\342\377\1k\201|\377\202Slg\377\1\304\317\315\377\371\333\343\342" \
+ "\377\4\331\341\340\377\231\260\254\377\223\254\247\377\245\271\265\377" \
+ "\213\377\377\377\377\4\256\300\275\377\223\254\247\377\226\256\252\377" \
+ "\327\340\336\377\271\333\343\342\377\5\332\342\341\377\234\263\256\377" \
+ "\223\254\247\377\242\267\263\377\376\376\376\377\212\377\377\377\377" \
+ "\4\257\301\276\377\223\254\247\377\225\256\251\377\326\337\336\377\353" \
+ "\333\343\342\377\1\301\315\313\377\202Slg\377\1~\222\216\377\211\333" \
+ "\343\342\377\2\332\342\341\377_vr\377\204Slg\377\1\237\257\254\377\212" \
+ "\333\343\342\377\1y\215\211\377\202Slg\377\1\275\310\306\377\371\333" \
+ "\343\342\377\1\301\317\315\377\202\223\254\247\377\1\322\334\332\377" \
+ "\212\377\377\377\377\1\354\361\360\377\202\223\254\247\377\1\260\302" \
+ "\277\377\273\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1" \
+ "\340\347\346\377\212\377\377\377\377\1\334\344\343\377\202\223\254\247" \
+ "\377\1\273\312\307\377\353\333\343\342\377\1\301\315\313\377\202Slg\377" \
+ "\1y\216\212\377\211\333\343\342\377\1\270\305\303\377\204Slg\377\2Tm" \
+ "h\377\317\331\327\377\212\333\343\342\377\1\202\225\221\377\202Slg\377" \
+ "\1\273\307\305\377\371\333\343\342\377\4\243\270\264\377\223\254\247" \
+ "\377\230\260\253\377\371\373\372\377\212\377\377\377\377\1\277\316\313" \
+ "\377\202\223\254\247\377\1\317\331\330\377\273\333\343\342\377\4\325" \
+ "\337\335\377\225\255\250\377\223\254\247\377\263\304\301\377\212\377" \
+ "\377\377\377\5\375\376\375\377\237\265\261\377\223\254\247\377\235\263" \
+ "\257\377\332\342\341\377\352\333\343\342\377\1\310\323\321\377\202Sl" \
+ "g\377\1k\201}\377\211\333\343\342\377\1\205\230\224\377\204Slg\377\1" \
+ "v\212\206\377\213\333\343\342\377\1t\210\204\377\202Slg\377\1\301\315" \
+ "\313\377\370\333\343\342\377\1\315\330\326\377\202\223\254\247\377\1" \
+ "\301\317\314\377\212\377\377\377\377\4\371\372\372\377\230\257\253\377" \
+ "\223\254\247\377\245\272\266\377\275\333\343\342\377\1\256\300\275\377" \
+ "\202\223\254\247\377\1\361\364\363\377\212\377\377\377\377\1\313\327" \
+ "\324\377\202\223\254\247\377\1\306\323\321\377\352\333\343\342\377\1" \
+ "\321\332\331\377\202Slg\377\2\\to\377\332\342\341\377\207\333\343\342" \
+ "\377\2\324\335\334\377Xql\377\204Slg\377\1\243\262\257\377\213\333\343" \
+ "\342\377\1czu\377\202Slg\377\1\310\323\321\377\370\333\343\342\377\1" \
+ "\257\301\276\377\202\223\254\247\377\1\356\362\361\377\212\377\377\377" \
+ "\377\1\321\333\331\377\202\223\254\247\377\1\303\321\316\377\275\333" \
+ "\343\342\377\1\314\330\326\377\202\223\254\247\377\1\304\322\317\377" \
+ "\212\377\377\377\377\4\366\370\367\377\225\255\251\377\223\254\247\377" \
+ "\250\274\270\377\353\333\343\342\377\1ayt\377\202Slg\377\1\267\303\301" \
+ "\377\207\333\343\342\377\1\241\260\255\377\204Slg\377\2Tlg\377\316\330" \
+ "\326\377\212\333\343\342\377\2\330\340\337\377Tmh\377\202Slg\377\1\325" \
+ "\336\335\377\367\333\343\342\377\4\326\337\336\377\225\256\251\377\223" \
+ "\254\247\377\257\302\276\377\213\377\377\377\377\4\243\271\264\377\223" \
+ "\254\247\377\232\262\255\377\331\342\341\377\276\333\343\342\377\4\242" \
+ "\270\263\377\223\254\247\377\232\261\255\377\373\374\374\377\212\377" \
+ "\377\377\377\1\271\311\306\377\202\223\254\247\377\1\321\333\332\377" \
+ "\352\333\343\342\377\1~\222\216\377\202Slg\377\1\177\222\217\377\206" \
+ "\333\343\342\377\2\320\332\330\377\\to\377\204Slg\377\1z\216\212\377" \
+ "\213\333\343\342\377\1\253\271\266\377\202Slg\377\1e|w\377\370\333\343" \
+ "\342\377\1\272\312\307\377\202\223\254\247\377\1\335\344\343\377\212" \
+ "\377\377\377\377\1\342\351\347\377\202\223\254\247\377\1\267\310\305" \
+ "\377\277\333\343\342\377\1\301\317\314\377\202\223\254\247\377\1\325" \
+ "\337\335\377\212\377\377\377\377\1\347\354\353\377\202\223\254\247\377" \
+ "\1\264\305\302\377\352\333\343\342\377\1\251\270\265\377\203Slg\377\2" \
+ "\220\242\236\377\331\342\341\377\203\333\343\342\377\2\320\331\330\377" \
+ "x\214\210\377\205Slg\377\1\264\300\276\377\212\333\343\342\377\2\331" \
+ "\342\341\377h~z\377\202Slg\377\1}\220\215\377\367\333\343\342\377\5\332" \
+ "\342\341\377\234\263\257\377\223\254\247\377\237\265\261\377\375\376" \
+ "\375\377\212\377\377\377\377\4\264\306\302\377\223\254\247\377\224\255" \
+ "\250\377\324\336\334\377\277\333\343\342\377\4\331\341\340\377\230\260" \
+ "\253\377\223\254\247\377\250\274\270\377\213\377\377\377\377\4\250\274" \
+ "\270\377\223\254\247\377\230\257\253\377\330\341\340\377\351\333\343" \
+ "\342\377\2\325\336\335\377[sn\377\203Slg\377\5i\177{\377\207\232\226" \
+ "\377\230\251\246\377\204\227\223\377^vq\377\205Slg\377\2e|w\377\332\342" \
+ "\341\377\212\333\343\342\377\1\232\252\247\377\203Slg\377\1\234\253\251" \
+ "\377\367\333\343\342\377\1\306\323\321\377\202\223\254\247\377\1\313" \
+ "\327\325\377\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223" \
+ "\254\247\377\254\277\273\377\301\333\343\342\377\1\265\306\303\377\202" \
+ "\223\254\247\377\1\347\354\353\377\212\377\377\377\377\1\325\337\335" \
+ "\377\202\223\254\247\377\1\277\316\313\377\352\333\343\342\377\1\237" \
+ "\257\254\377\215Slg\377\1\244\262\260\377\211\333\343\342\377\2\320\332" \
+ "\330\377}\220\215\377\204Slg\377\1\301\314\312\377\367\333\343\342\377" \
+ "\4\250\274\270\377\223\254\247\377\225\256\251\377\366\370\367\377\212" \
+ "\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\312\326\324" \
+ "\377\301\333\343\342\377\1\322\334\333\377\202\223\254\247\377\1\271" \
+ "\311\306\377\212\377\377\377\377\4\373\374\374\377\233\262\255\377\223" \
+ "\254\247\377\241\267\262\377\352\333\343\342\377\2\331\342\341\377t\211" \
+ "\205\377\213Slg\377\1|\220\214\377\207\333\343\342\377\4\274\310\306" \
+ "\377\211\233\230\377n\204\200\377Voj\377\204Slg\377\2_vr\377\332\342" \
+ "\341\377\366\333\343\342\377\1\321\333\332\377\202\223\254\247\377\1" \
+ "\272\312\307\377\212\377\377\377\377\4\374\375\374\377\233\262\256\377" \
+ "\223\254\247\377\240\266\262\377\303\333\343\342\377\4\251\275\271\377" \
+ "\223\254\247\377\225\255\251\377\365\367\367\377\212\377\377\377\377" \
+ "\1\304\322\317\377\202\223\254\247\377\1\313\326\325\377\352\333\343" \
+ "\342\377\2\323\334\333\377o\204\200\377\211Slg\377\2d{v\377\321\332\331" \
+ "\377\207\333\343\342\377\1\227\250\245\377\207Slg\377\1\217\240\235\377" \
+ "\367\333\343\342\377\1\263\305\301\377\202\223\254\247\377\1\350\355" \
+ "\354\377\212\377\377\377\377\1\330\341\337\377\202\223\254\247\377\1" \
+ "\277\315\313\377\303\333\343\342\377\1\310\324\322\377\202\223\254\247" \
+ "\377\1\313\327\324\377\212\377\377\377\377\1\361\364\363\377\202\223" \
+ "\254\247\377\1\254\277\274\377\353\333\343\342\377\3\327\337\336\377" \
+ "\226\247\244\377Xql\377\205Slg\377\3Umh\377\216\240\235\377\323\334\333" \
+ "\377\210\333\343\342\377\1\227\250\245\377\207Slg\377\1\305\320\316\377" \
+ "\366\333\343\342\377\4\330\341\337\377\230\257\253\377\223\254\247\377" \
+ "\251\274\270\377\213\377\377\377\377\4\252\276\272\377\223\254\247\377" \
+ "\227\257\252\377\330\341\337\377\304\333\343\342\377\4\236\264\260\377" \
+ "\223\254\247\377\237\265\261\377\375\376\375\377\212\377\377\377\377" \
+ "\4\263\304\301\377\223\254\247\377\224\255\250\377\325\336\335\377\354" \
+ "\333\343\342\377\7\326\337\336\377\261\277\274\377\231\251\246\377\213" \
+ "\235\232\377\226\246\243\377\256\273\271\377\312\324\323\377\212\333" \
+ "\343\342\377\1\257\274\272\377\206\201\224\220\377\1\221\242\237\377" \
+ "\367\333\343\342\377\1\277\315\313\377\202\223\254\247\377\1\326\337" \
+ "\335\377\212\377\377\377\377\1\351\356\355\377\202\223\254\247\377\1" \
+ "\263\304\301\377\305\333\343\342\377\1\274\313\311\377\202\223\254\247" \
+ "\377\1\334\344\343\377\212\377\377\377\377\1\340\347\346\377\202\223" \
+ "\254\247\377\1\270\310\305\377\377\333\343\342\377\375\333\343\342\377" \
+ "\4\241\266\262\377\223\254\247\377\233\262\255\377\373\374\374\377\212" \
+ "\377\377\377\377\1\274\313\310\377\202\223\254\247\377\1\321\333\331" \
+ "\377\305\333\343\342\377\4\327\337\336\377\226\256\251\377\223\254\247" \
+ "\377\257\301\276\377\212\377\377\377\377\5\376\376\376\377\242\267\263" \
+ "\377\223\254\247\377\233\262\255\377\332\342\341\377\377\333\343\342" \
+ "\377\373\333\343\342\377\1\312\326\324\377\202\223\254\247\377\1\304" \
+ "\322\317\377\212\377\377\377\377\4\367\371\370\377\226\256\251\377\223" \
+ "\254\247\377\247\273\270\377\307\333\343\342\377\1\260\302\277\377\202" \
+ "\223\254\247\377\1\355\361\360\377\212\377\377\377\377\1\317\332\330" \
+ "\377\202\223\254\247\377\1\304\321\317\377\377\333\343\342\377\373\333" \
+ "\343\342\377\1\254\277\274\377\202\223\254\247\377\1\361\364\363\377" \
+ "\212\377\377\377\377\1\315\330\326\377\202\223\254\247\377\1\306\323" \
+ "\320\377\307\333\343\342\377\1\316\331\330\377\202\223\254\247\377\1" \
+ "\300\317\314\377\212\377\377\377\377\4\370\371\371\377\227\257\252\377" \
+ "\223\254\247\377\245\272\266\377\377\333\343\342\377\372\333\343\342" \
+ "\377\4\324\336\334\377\224\255\250\377\223\254\247\377\263\305\301\377" \
+ "\212\377\377\377\377\5\376\376\376\377\240\266\262\377\223\254\247\377" \
+ "\234\263\256\377\332\342\341\377\310\333\343\342\377\4\245\271\265\377" \
+ "\223\254\247\377\230\260\253\377\371\372\372\377\212\377\377\377\377" \
+ "\1\275\314\311\377\202\223\254\247\377\1\317\332\330\377\345\333\343" \
+ "\342\377\1\316\330\326\377\202\270\305\303\377\1\302\315\313\377\377" \
+ "\333\343\342\377\220\333\343\342\377\1\270\310\305\377\202\223\254\247" \
+ "\377\1\341\350\346\377\212\377\377\377\377\1\337\346\345\377\202\223" \
+ "\254\247\377\1\272\312\307\377\311\333\343\342\377\1\303\321\316\377" \
+ "\202\223\254\247\377\1\322\334\332\377\212\377\377\377\377\1\353\357" \
+ "\356\377\202\223\254\247\377\1\261\303\277\377\345\333\343\342\377\1" \
+ "\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377\217\333" \
+ "\343\342\377\5\332\342\341\377\232\262\255\377\223\254\247\377\242\270" \
+ "\263\377\376\376\376\377\212\377\377\377\377\4\261\303\277\377\223\254" \
+ "\247\377\225\255\251\377\326\337\336\377\311\333\343\342\377\4\331\342" \
+ "\341\377\232\261\255\377\223\254\247\377\244\271\265\377\213\377\377" \
+ "\377\377\4\254\277\273\377\223\254\247\377\226\256\252\377\327\340\337" \
+ "\377\344\333\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377" \
+ "\377\333\343\342\377\217\333\343\342\377\1\303\321\317\377\202\223\254" \
+ "\247\377\1\317\332\330\377\212\377\377\377\377\1\357\363\362\377\202" \
+ "\223\254\247\377\1\256\301\275\377\313\333\343\342\377\1\267\310\305" \
+ "\377\202\223\254\247\377\1\343\351\350\377\212\377\377\377\377\1\331" \
+ "\342\340\377\202\223\254\247\377\1\275\314\311\377\344\333\343\342\377" \
+ "\1\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377\217" \
+ "\333\343\342\377\4\245\272\266\377\223\254\247\377\227\257\252\377\370" \
+ "\372\371\377\212\377\377\377\377\1\303\321\316\377\202\223\254\247\377" \
+ "\1\315\330\326\377\313\333\343\342\377\4\324\336\334\377\224\255\250" \
+ "\377\223\254\247\377\266\307\303\377\212\377\377\377\377\4\374\375\375" \
+ "\377\235\263\257\377\223\254\247\377\236\265\260\377\344\333\343\342" \
+ "\377\1\250\267\264\377\202Slg\377\1x\214\210\377\377\333\343\342\377" \
+ "\216\333\343\342\377\1\317\332\330\377\202\223\254\247\377\1\276\315" \
+ "\312\377\212\377\377\377\377\4\372\373\373\377\231\261\254\377\223\254" \
+ "\247\377\243\270\264\377\315\333\343\342\377\4\254\277\273\377\223\254" \
+ "\247\377\224\254\250\377\363\365\365\377\212\377\377\377\377\1\310\325" \
+ "\322\377\202\223\254\247\377\1\310\324\322\377\343\333\343\342\377\1" \
+ "\250\267\264\377\202Slg\377\1r\207\203\377\232\305\320\316\377\3\306" \
+ "\320\317\377\316\327\326\377\330\340\337\377\360\333\343\342\377\1\261" \
+ "\303\277\377\202\223\254\247\377\1\353\360\357\377\212\377\377\377\377" \
+ "\1\324\336\334\377\202\223\254\247\377\1\301\317\315\377\315\333\343" \
+ "\342\377\1\312\326\324\377\202\223\254\247\377\1\307\324\321\377\212" \
+ "\377\377\377\377\4\363\366\366\377\224\255\250\377\223\254\247\377\252" \
+ "\275\272\377\343\333\343\342\377\1\250\267\264\377\240Slg\377\4[sn\377" \
+ "t\211\205\377\226\247\244\377\273\307\305\377\353\333\343\342\377\4\327" \
+ "\340\336\377\226\256\252\377\223\254\247\377\254\277\274\377\213\377" \
+ "\377\377\377\4\247\273\267\377\223\254\247\377\231\260\254\377\331\341" \
+ "\340\377\316\333\343\342\377\4\240\266\262\377\223\254\247\377\234\263" \
+ "\256\377\374\375\374\377\212\377\377\377\377\4\267\307\304\377\223\254" \
+ "\247\377\224\254\247\377\323\334\333\377\342\333\343\342\377\1\250\267" \
+ "\264\377\244Slg\377\2n\203\177\377\257\274\272\377\351\333\343\342\377" \
+ "\1\274\313\311\377\202\223\254\247\377\1\332\343\341\377\212\377\377" \
+ "\377\377\1\346\353\352\377\202\223\254\247\377\1\265\306\303\377\317" \
+ "\333\343\342\377\1\276\315\312\377\202\223\254\247\377\1\330\341\337" \
+ "\377\212\377\377\377\377\1\344\352\351\377\202\223\254\247\377\1\266" \
+ "\306\303\377\342\333\343\342\377\1\250\267\264\377\246Slg\377\2\177\222" \
+ "\217\377\324\335\334\377\347\333\343\342\377\4\236\264\260\377\223\254" \
+ "\247\377\235\264\257\377\374\375\375\377\212\377\377\377\377\1\270\310" \
+ "\305\377\202\223\254\247\377\1\323\334\333\377\317\333\343\342\377\4" \
+ "\330\340\337\377\227\257\252\377\223\254\247\377\253\276\272\377\213" \
+ "\377\377\377\377\4\245\272\266\377\223\254\247\377\231\260\254\377\331" \
+ "\341\340\377\341\333\343\342\377\1\250\267\264\377\247Slg\377\2i\200" \
+ "{\377\317\330\327\377\345\333\343\342\377\1\310\324\322\377\202\223\254" \
+ "\247\377\1\310\325\322\377\212\377\377\377\377\4\365\367\367\377\225" \
+ "\255\250\377\223\254\247\377\252\275\271\377\321\333\343\342\377\1\263" \
+ "\304\301\377\202\223\254\247\377\1\352\357\356\377\212\377\377\377\377" \
+ "\1\322\335\333\377\202\223\254\247\377\1\301\317\315\377\341\333\343" \
+ "\342\377\1\250\267\264\377\250Slg\377\2u\212\206\377\331\341\340\377" \
+ "\344\333\343\342\377\4\252\275\271\377\223\254\247\377\225\255\250\377" \
+ "\364\366\366\377\212\377\377\377\377\1\312\326\323\377\202\223\254\247" \
+ "\377\1\310\324\322\377\321\333\343\342\377\1\321\333\331\377\202\223" \
+ "\254\247\377\1\274\314\311\377\212\377\377\377\377\4\372\373\373\377" \
+ "\231\260\254\377\223\254\247\377\243\270\264\377\341\333\343\342\377" \
+ "\1\321\333\331\377\203\301\314\312\377\2\247\266\263\377[sn\377\203S" \
+ "lg\377\6r\207\203\377\216\240\235\377\247\265\263\377\264\301\277\377" \
+ "\273\307\305\377\300\314\312\377\202\301\314\312\377\7\300\314\312\377" \
+ "\273\307\305\377\265\301\277\377\250\266\264\377\220\241\236\377t\210" \
+ "\204\377Tlg\377\202Slg\377\2Zrm\377\246\264\262\377\203\301\314\312\377" \
+ "\6\274\310\306\377\266\302\300\377\254\271\267\377\223\244\241\377w\214" \
+ "\210\377Uni\377\205Slg\377\1\225\246\243\377\343\333\343\342\377\1\323" \
+ "\334\333\377\202\223\254\247\377\1\267\307\304\377\212\377\377\377\377" \
+ "\4\375\375\375\377\236\264\260\377\223\254\247\377\236\265\260\377\323" \
+ "\333\343\342\377\4\247\273\267\377\223\254\247\377\226\256\252\377\367" \
+ "\371\371\377\212\377\377\377\377\1\301\317\314\377\202\223\254\247\377" \
+ "\1\315\330\326\377\342\333\343\342\377\7\332\342\341\377\236\255\253" \
+ "\377Vni\377Slg\377Wpk\377\225\245\242\377\313\325\324\377\216\333\343" \
+ "\342\377\7\315\326\325\377\230\250\245\377Yrm\377Slg\377Uni\377\232\252" \
+ "\247\377\331\342\341\377\206\333\343\342\377\3\320\331\330\377\235\255" \
+ "\252\377[sn\377\203Slg\377\2Yql\377\321\332\331\377\342\333\343\342\377" \
+ "\1\265\306\303\377\202\223\254\247\377\1\345\353\351\377\212\377\377" \
+ "\377\377\1\333\343\342\377\202\223\254\247\377\1\274\313\311\377\323" \
+ "\333\343\342\377\1\305\322\320\377\202\223\254\247\377\1\316\331\327" \
+ "\377\212\377\377\377\377\1\356\362\361\377\202\223\254\247\377\1\256" \
+ "\301\275\377\342\333\343\342\377\1\226\246\243\377\202Slg\377\2o\205" \
+ "\201\377\313\325\324\377\222\333\343\342\377\2\316\330\326\377v\212\206" \
+ "\377\202Slg\377\1\217\241\235\377\210\333\343\342\377\2\316\330\326\377" \
+ "q\206\202\377\203Slg\377\1\230\250\245\377\341\333\343\342\377\4\331" \
+ "\341\340\377\231\260\254\377\223\254\247\377\246\272\266\377\213\377" \
+ "\377\377\377\4\256\300\275\377\223\254\247\377\226\256\252\377\327\340" \
+ "\336\377\323\333\343\342\377\5\332\342\341\377\234\263\256\377\223\254" \
+ "\247\377\241\267\262\377\376\376\376\377\212\377\377\377\377\4\260\302" \
+ "\276\377\223\254\247\377\225\255\251\377\326\337\336\377\340\333\343" \
+ "\342\377\1\262\277\275\377\202Slg\377\2q\207\202\377\325\335\334\377" \
+ "\224\333\343\342\377\2\327\337\336\377v\212\206\377\202Slg\377\1\254" \
+ "\272\270\377\210\333\343\342\377\2\321\333\331\377g}y\377\202Slg\377" \
+ "\1i\177{\377\341\333\343\342\377\1\301\317\314\377\202\223\254\247\377" \
+ "\1\323\335\333\377\212\377\377\377\377\1\354\361\360\377\202\223\254" \
+ "\247\377\1\261\303\277\377\325\333\343\342\377\1\272\311\307\377\202" \
+ "\223\254\247\377\1\337\346\345\377\212\377\377\377\377\1\335\345\344" \
+ "\377\202\223\254\247\377\1\272\312\307\377\337\333\343\342\377\5\327" \
+ "\337\336\377]up\377Slg\377Voj\377\306\320\317\377\226\333\343\342\377" \
+ "\5\312\324\323\377Xpk\377Slg\377Yrm\377\324\335\334\377\210\333\343\342" \
+ "\377\1\261\277\274\377\203Slg\377\1\317\331\327\377\340\333\343\342\377" \
+ "\4\243\270\264\377\223\254\247\377\231\260\254\377\372\373\373\377\212" \
+ "\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1\317\332\330" \
+ "\377\325\333\343\342\377\4\325\337\335\377\225\255\251\377\223\254\247" \
+ "\377\261\303\300\377\212\377\377\377\377\5\376\376\376\377\240\266\261" \
+ "\377\223\254\247\377\234\263\257\377\332\342\341\377\336\333\343\342" \
+ "\377\1\254\272\270\377\202Slg\377\1\201\224\220\377\230\333\343\342\377" \
+ "\1\206\230\225\377\202Slg\377\1\246\265\262\377\211\333\343\342\377\1" \
+ "g}y\377\202Slg\377\1\257\274\272\377\337\333\343\342\377\1\314\330\326" \
+ "\377\202\223\254\247\377\1\302\320\315\377\212\377\377\377\377\4\371" \
+ "\372\372\377\230\257\253\377\223\254\247\377\245\272\266\377\327\333" \
+ "\343\342\377\1\256\301\275\377\202\223\254\247\377\1\360\363\362\377" \
+ "\212\377\377\377\377\1\314\327\325\377\202\223\254\247\377\1\306\323" \
+ "\320\377\336\333\343\342\377\1x\215\211\377\202Slg\377\1\254\272\270" \
+ "\377\230\333\343\342\377\1\257\274\272\377\202Slg\377\1r\207\203\377" \
+ "\211\333\343\342\377\1\214\235\232\377\202Slg\377\1\237\257\254\377\337" \
+ "\333\343\342\377\1\256\301\275\377\202\223\254\247\377\1\357\362\362" \
+ "\377\212\377\377\377\377\1\321\333\331\377\202\223\254\247\377\1\303" \
+ "\321\317\377\327\333\343\342\377\1\314\330\326\377\202\223\254\247\377" \
+ "\1\303\321\316\377\212\377\377\377\377\4\366\370\370\377\225\256\251" \
+ "\377\223\254\247\377\247\273\270\377\336\333\343\342\377\1\\so\377\202" \
+ "Slg\377\1\277\313\311\377\230\333\343\342\377\1\301\315\313\377\202S" \
+ "lg\377\2Vni\377\332\342\341\377\210\333\343\342\377\1\244\263\260\377" \
+ "\202Slg\377\1\226\246\243\377\336\333\343\342\377\4\325\337\335\377\225" \
+ "\255\251\377\223\254\247\377\260\302\277\377\213\377\377\377\377\4\243" \
+ "\271\264\377\223\254\247\377\232\262\255\377\332\342\341\377\330\333" \
+ "\343\342\377\4\243\270\264\377\223\254\247\377\232\261\254\377\373\374" \
+ "\373\377\212\377\377\377\377\1\272\312\307\377\202\223\254\247\377\1" \
+ "\321\333\332\377\334\333\343\342\377\1\326\336\335\377\203Slg\377\1\311" \
+ "\324\322\377\230\333\343\342\377\1\314\325\324\377\203Slg\377\1\317\331" \
+ "\327\377\210\333\343\342\377\1\256\274\271\377\202Slg\377\1\215\236\233" \
+ "\377\336\333\343\342\377\1\272\311\307\377\202\223\254\247\377\1\336" \
+ "\345\344\377\212\377\377\377\377\1\342\351\347\377\202\223\254\247\377" \
+ "\1\270\310\305\377\331\333\343\342\377\1\301\317\314\377\202\223\254" \
+ "\247\377\1\325\336\334\377\212\377\377\377\377\1\350\355\354\377\202" \
+ "\223\254\247\377\1\263\304\301\377\334\333\343\342\377\1\307\322\320" \
+ "\377\203Slg\377\1\276\311\307\377\230\333\343\342\377\1\302\315\313\377" \
+ "\203Slg\377\1\301\314\312\377\210\333\343\342\377\1\261\276\274\377\202" \
+ "Slg\377\1\215\237\234\377\335\333\343\342\377\5\332\342\341\377\234\263" \
+ "\256\377\223\254\247\377\240\266\262\377\376\376\376\377\212\377\377" \
+ "\377\377\4\265\306\302\377\223\254\247\377\224\255\250\377\324\336\334" \
+ "\377\331\333\343\342\377\6\331\341\340\377\231\260\254\377\222\253\247" \
+ "\377\237\265\261\377\351\356\355\377\370\371\371\377\211\377\377\377" \
+ "\377\4\251\275\271\377\223\254\247\377\227\257\252\377\330\341\337\377" \
+ "\333\333\343\342\377\1\303\316\314\377\203Slg\377\1\251\267\265\377\230" \
+ "\333\343\342\377\1\257\274\272\377\203Slg\377\1\275\310\306\377\210\333" \
+ "\343\342\377\1\243\262\257\377\202Slg\377\1\224\245\242\377\335\333\343" \
+ "\342\377\1\305\322\320\377\202\223\254\247\377\1\315\330\326\377\212" \
+ "\377\377\377\377\4\362\365\364\377\224\254\250\377\223\254\247\377\254" \
+ "\277\274\377\333\333\343\342\377\2\265\306\303\377\222\254\246\377\203" \
+ "\223\254\247\377\7\233\262\255\377\252\276\272\377\271\311\306\377\310" \
+ "\325\322\377\330\341\337\377\347\354\353\377\366\370\370\377\202\377" \
+ "\377\377\377\1\327\340\336\377\202\223\254\247\377\1\277\315\313\377" \
+ "\333\333\343\342\377\1\321\332\331\377\203Slg\377\1|\220\214\377\230" \
+ "\333\343\342\377\1\200\223\220\377\203Slg\377\1\313\325\323\377\210\333" \
+ "\343\342\377\1\225\245\242\377\202Slg\377\1\234\253\251\377\335\333\343" \
+ "\342\377\4\247\273\267\377\223\254\247\377\226\256\251\377\366\370\370" \
+ "\377\212\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\312" \
+ "\326\324\377\333\333\343\342\377\1\322\334\333\377\202\223\254\247\377" \
+ "\5\245\271\266\377\307\324\321\377\267\310\304\377\247\274\270\377\230" \
+ "\260\253\377\204\223\254\247\377\6\231\261\254\377\250\274\270\377\266" \
+ "\306\303\377\226\256\251\377\222\254\247\377\236\265\261\377\334\333" \
+ "\343\342\377\1Woj\377\202Slg\377\2Umh\377\277\312\310\377\226\333\343" \
+ "\342\377\2\300\314\312\377Uni\377\202Slg\377\2Tlg\377\330\340\337\377" \
+ "\210\333\343\342\377\1\177\223\217\377\202Slg\377\1\252\270\266\377\334" \
+ "\333\343\342\377\1\321\333\331\377\202\223\254\247\377\1\273\312\307" \
+ "\377\212\377\377\377\377\4\374\375\374\377\233\262\256\377\223\254\247" \
+ "\377\241\266\262\377\335\333\343\342\377\4\245\271\265\377\223\254\247" \
+ "\377\224\254\247\377\365\367\367\377\203\377\377\377\377\7\365\367\367" \
+ "\377\345\353\352\377\325\337\335\377\306\323\320\377\267\307\304\377" \
+ "\247\273\267\377\230\260\253\377\202\223\254\247\377\2\222\253\247\377" \
+ "\312\326\324\377\333\333\343\342\377\1y\215\211\377\203Slg\377\2f}x\377" \
+ "\316\330\326\377\224\333\343\342\377\2\317\330\327\377g~y\377\203Slg" \
+ "\377\1s\210\204\377\210\333\343\342\377\2\316\327\326\377Vni\377\202" \
+ "Slg\377\1\276\311\307\377\334\333\343\342\377\1\263\304\301\377\202\223" \
+ "\254\247\377\1\350\356\355\377\212\377\377\377\377\1\330\341\337\377" \
+ "\202\223\254\247\377\1\277\315\313\377\335\333\343\342\377\1\310\324" \
+ "\322\377\202\222\254\247\377\1\310\325\323\377\212\377\377\377\377\4" \
+ "\347\355\354\377\223\253\246\377\222\253\246\377\250\274\267\377\202" \
+ "\333\343\342\377\2\306\323\321\377\331\340\337\377\327\333\343\342\377" \
+ "\1\250\266\264\377\204Slg\377\2ayt\377\274\310\306\377\222\333\343\342" \
+ "\377\2\275\310\306\377czu\377\204Slg\377\1\243\262\257\377\210\333\343" \
+ "\342\377\1\223\244\241\377\203Slg\377\1\321\333\331\377\333\333\343\342" \
+ "\377\4\330\340\337\377\227\257\252\377\223\254\247\377\251\275\271\377" \
+ "\213\377\377\377\377\4\252\276\272\377\223\254\247\377\230\257\253\377" \
+ "\330\341\337\377\336\333\343\342\377\4\232\261\254\377\223\254\247\377" \
+ "\232\260\254\377\375\375\375\377\212\377\377\377\377\7\256\301\274\377" \
+ "\223\254\247\377\223\253\247\377\311\325\323\377\234\264\256\377\223" \
+ "\254\247\377\277\316\313\377\327\333\343\342\377\2\323\334\333\377^u" \
+ "q\377\205Slg\377\3}\221\215\377\270\305\303\377\330\340\337\377\214\333" \
+ "\343\342\377\3\330\340\337\377\270\304\302\377}\220\215\377\205Slg\377" \
+ "\2]tp\377\321\332\331\377\207\333\343\342\377\2\237\256\253\377Tlg\377" \
+ "\202Slg\377\1h~z\377\334\333\343\342\377\1\276\315\312\377\202\223\254" \
+ "\247\377\1\327\340\336\377\212\377\377\377\377\1\351\356\355\377\202" \
+ "\223\254\247\377\1\263\305\301\377\337\333\343\342\377\4\272\312\310" \
+ "\377\223\253\247\377\222\253\246\377\333\343\342\377\212\377\377\377" \
+ "\377\7\341\350\347\377\222\254\246\377\223\253\247\377\264\305\302\377" \
+ "\230\257\253\377\223\254\247\377\241\267\263\377\330\333\343\342\377" \
+ "\1\251\270\265\377\207Slg\377\6Yrm\377z\216\212\377\220\242\236\377\245" \
+ "\264\261\377\263\300\276\377\270\305\303\377\202\276\312\310\377\6\271" \
+ "\305\303\377\263\300\276\377\246\264\262\377\220\242\236\377y\216\212" \
+ "\377Yql\377\207Slg\377\1\250\267\264\377\205\333\343\342\377\3\331\342" \
+ "\341\377\271\306\304\377\204\226\223\377\204Slg\377\1\212\234\231\377" \
+ "\334\333\343\342\377\4\240\266\262\377\223\254\247\377\233\262\256\377" \
+ "\374\374\374\377\212\377\377\377\377\1\274\313\310\377\202\223\254\247" \
+ "\377\1\321\333\332\377\337\333\343\342\377\4\327\340\336\377\224\254" \
+ "\250\377\223\254\247\377\250\273\267\377\212\377\377\377\377\5\376\376" \
+ "\376\377\236\264\257\377\223\254\247\377\227\257\252\377\263\304\302" \
+ "\377\202\223\254\247\377\1\313\327\325\377\330\333\343\342\377\1}\221" \
+ "\215\377\232Slg\377\1~\222\216\377\205\333\343\342\377\2\325\336\335" \
+ "\377`xs\377\206Slg\377\1\256\274\271\377\333\333\343\342\377\1\312\326" \
+ "\324\377\202\223\254\247\377\1\306\323\320\377\212\377\377\377\377\4" \
+ "\367\371\370\377\226\256\251\377\223\254\247\377\247\273\270\377\341" \
+ "\333\343\342\377\4\255\277\274\377\223\253\246\377\222\253\246\377\354" \
+ "\361\360\377\212\377\377\377\377\4\317\332\330\377\222\253\246\377\223" \
+ "\253\246\377\274\314\311\377\202\223\254\247\377\1\254\277\274\377\330" \
+ "\333\343\342\377\2\327\340\337\377}\221\215\377\230Slg\377\2}\221\215" \
+ "\377\330\340\337\377\205\333\343\342\377\1\323\334\333\377\206Slg\377" \
+ "\2[sn\377\327\337\336\377\333\333\343\342\377\4\254\277\273\377\223\254" \
+ "\247\377\224\254\250\377\362\365\364\377\212\377\377\377\377\1\315\330" \
+ "\326\377\202\223\254\247\377\1\306\323\321\377\341\333\343\342\377\4" \
+ "\317\331\330\377\222\253\247\377\223\253\246\377\273\313\310\377\212" \
+ "\377\377\377\377\10\370\372\371\377\225\255\251\377\223\254\247\377\240" \
+ "\266\262\377\251\274\271\377\223\254\247\377\225\255\250\377\324\336" \
+ "\335\377\330\333\343\342\377\2\330\341\340\377\213\235\232\377\226Sl" \
+ "g\377\2\211\234\230\377\330\340\337\377\206\333\343\342\377\1\323\334" \
+ "\333\377\206Slg\377\1\212\234\231\377\333\333\343\342\377\4\324\336\334" \
+ "\377\224\255\250\377\223\254\247\377\264\305\302\377\212\377\377\377" \
+ "\377\5\376\376\376\377\240\266\262\377\223\254\247\377\234\263\257\377" \
+ "\332\342\341\377\342\333\343\342\377\4\240\266\262\377\223\254\247\377" \
+ "\225\255\250\377\371\372\372\377\203\377\377\377\377\3\367\371\371\377" \
+ "\300\317\314\377\273\313\307\377\204\377\377\377\377\4\271\312\306\377" \
+ "\223\254\246\377\223\254\247\377\276\314\311\377\202\223\254\247\377" \
+ "\1\271\311\305\377\332\333\343\342\377\2\270\304\302\377e|w\377\222S" \
+ "lg\377\2d{v\377\267\303\301\377\211\333\343\342\377\206\322\333\332\377" \
+ "\1\327\340\337\377\333\333\343\342\377\1\267\310\305\377\202\223\254" \
+ "\247\377\1\342\350\347\377\212\377\377\377\377\1\337\346\345\377\202" \
+ "\223\254\247\377\1\272\312\307\377\343\333\343\342\377\4\303\321\317" \
+ "\377\222\254\247\377\223\254\246\377\320\332\330\377\203\377\377\377" \
+ "\377\4\373\374\374\377\233\262\255\377\224\255\250\377\363\366\365\377" \
+ "\203\377\377\377\377\10\354\360\357\377\222\253\246\377\222\254\247\377" \
+ "\255\300\274\377\233\262\255\377\223\254\247\377\233\262\255\377\332" \
+ "\342\341\377\332\333\343\342\377\3\327\337\336\377\251\270\265\377q\207" \
+ "\202\377\216Slg\377\3q\206\202\377\251\267\265\377\326\337\336\377\353" \
+ "\333\343\342\377\5\331\342\341\377\232\261\255\377\223\254\247\377\243" \
+ "\270\264\377\376\376\376\377\212\377\377\377\377\4\261\303\277\377\223" \
+ "\254\247\377\225\255\251\377\326\337\336\377\343\333\343\342\377\4\332" \
+ "\342\341\377\227\257\252\377\223\254\247\377\235\264\257\377\204\377" \
+ "\377\377\377\3\304\321\317\377\223\254\247\377\307\324\321\377\204\377" \
+ "\377\377\377\4\246\273\267\377\223\254\247\377\222\253\247\377\222\253" \
+ "\246\377\202\223\254\247\377\1\304\321\317\377\335\333\343\342\377\6" \
+ "\306\321\317\377\247\265\263\377\212\234\231\377o\205\201\377dzv\377" \
+ "[sn\377\202Tlg\377\6[sn\377dzv\377o\205\201\377\212\234\231\377\247\265" \
+ "\263\377\306\320\317\377\356\333\343\342\377\1\303\320\316\377\202\223" \
+ "\254\247\377\1\320\333\331\377\212\377\377\377\377\1\357\363\362\377" \
+ "\202\223\254\247\377\1\256\301\275\377\345\333\343\342\377\4\265\306" \
+ "\303\377\223\254\247\377\222\254\246\377\342\351\347\377\203\377\377" \
+ "\377\377\4\361\364\363\377\224\255\250\377\234\263\257\377\374\375\375" \
+ "\377\203\377\377\377\377\4\333\343\341\377\223\253\246\377\222\254\246" \
+ "\377\221\254\246\377\202\223\254\247\377\1\246\272\266\377\343\333\343" \
+ "\342\377\2\332\342\341\377\331\342\341\377\364\333\343\342\377\4\245" \
+ "\271\265\377\223\254\247\377\230\257\253\377\371\372\372\377\212\377" \
+ "\377\377\377\1\303\321\316\377\202\223\254\247\377\1\315\330\326\377" \
+ "\345\333\343\342\377\4\324\336\334\377\223\253\247\377\223\254\247\377" \
+ "\257\302\275\377\204\377\377\377\377\3\262\304\301\377\223\254\247\377" \
+ "\330\341\337\377\203\377\377\377\377\5\375\375\375\377\231\260\253\377" \
+ "\223\254\247\377\230\260\253\377\257\301\276\377\202\223\254\247\377" \
+ "\1\317\332\330\377\377\333\343\342\377\330\333\343\342\377\1\316\331" \
+ "\330\377\202\223\254\247\377\1\277\316\313\377\212\377\377\377\377\4" \
+ "\372\373\373\377\232\261\254\377\223\254\247\377\243\270\264\377\347" \
+ "\333\343\342\377\4\247\273\270\377\222\253\246\377\223\253\247\377\362" \
+ "\365\364\377\203\377\377\377\377\3\340\347\345\377\223\254\247\377\253" \
+ "\276\272\377\204\377\377\377\377\4\307\323\321\377\223\253\247\377\223" \
+ "\253\246\377\276\314\312\377\202\223\254\247\377\1\261\303\300\377\377" \
+ "\333\343\342\377\330\333\343\342\377\1\260\302\277\377\202\223\254\247" \
+ "\377\1\354\361\360\377\212\377\377\377\377\1\324\336\334\377\202\223" \
+ "\254\247\377\1\301\317\315\377\347\333\343\342\377\1\312\326\324\377" \
+ "\202\223\253\246\377\1\302\321\316\377\204\377\377\377\377\3\242\267" \
+ "\263\377\223\254\247\377\351\356\355\377\203\377\377\377\377\10\364\367" \
+ "\366\377\223\253\247\377\223\254\247\377\245\271\266\377\243\270\264" \
+ "\377\223\254\247\377\227\257\252\377\327\340\337\377\377\333\343\342" \
+ "\377\326\333\343\342\377\4\327\337\336\377\226\256\251\377\223\254\247" \
+ "\377\256\300\275\377\213\377\377\377\377\4\247\273\267\377\223\254\247" \
+ "\377\231\260\254\377\331\341\340\377\350\333\343\342\377\4\234\262\256" \
+ "\377\223\254\247\377\227\257\252\377\374\374\374\377\203\377\377\377" \
+ "\377\3\316\332\327\377\223\254\247\377\274\314\310\377\204\377\377\377" \
+ "\377\4\261\304\300\377\222\253\246\377\222\254\247\377\274\313\311\377" \
+ "\202\223\254\247\377\1\275\314\311\377\356\333\343\342\377\1\277\313" \
+ "\311\377\202\260\275\273\377\1\311\323\322\377\343\333\343\342\377\1" \
+ "\274\313\310\377\202\223\254\247\377\1\333\343\342\377\212\377\377\377" \
+ "\377\1\346\353\352\377\202\223\254\247\377\1\266\306\303\377\351\333" \
+ "\343\342\377\4\276\314\312\377\223\254\246\377\222\253\246\377\330\341" \
+ "\337\377\203\377\377\377\377\4\370\371\371\377\227\257\252\377\226\257" \
+ "\252\377\367\371\370\377\203\377\377\377\377\7\345\353\352\377\223\254" \
+ "\246\377\223\253\246\377\261\303\301\377\231\261\254\377\223\254\247" \
+ "\377\236\265\261\377\356\333\343\342\377\1\202\225\221\377\202Slg\377" \
+ "\1\243\262\257\377\343\333\343\342\377\4\236\264\260\377\223\254\247" \
+ "\377\236\264\260\377\375\375\375\377\212\377\377\377\377\4\270\310\305" \
+ "\377\223\254\247\377\224\254\247\377\323\335\333\377\351\333\343\342" \
+ "\377\4\330\341\337\377\224\255\251\377\223\254\247\377\244\271\264\377" \
+ "\204\377\377\377\377\3\275\314\311\377\223\254\247\377\315\331\326\377" \
+ "\204\377\377\377\377\7\240\266\262\377\223\254\247\377\226\255\251\377" \
+ "\265\306\302\377\225\255\250\377\255\277\274\377\327\340\337\377\355" \
+ "\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\342\333" \
+ "\343\342\377\1\307\324\322\377\202\223\254\247\377\1\312\326\323\377" \
+ "\212\377\377\377\377\4\365\367\367\377\225\255\250\377\223\254\247\377" \
+ "\252\275\272\377\353\333\343\342\377\4\260\301\276\377\223\253\246\377" \
+ "\222\253\247\377\351\356\355\377\203\377\377\377\377\4\352\357\356\377" \
+ "\223\254\247\377\241\266\262\377\376\376\376\377\203\377\377\377\377" \
+ "\1\323\335\333\377\202\223\254\246\377\2\275\314\311\377\324\336\334" \
+ "\377\357\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\342\333\343\342\377\4\251\275\271\377\223\254\247\377\225\255\250\377" \
+ "\364\367\366\377\212\377\377\377\377\1\312\326\323\377\202\223\254\247" \
+ "\377\1\310\324\322\377\353\333\343\342\377\4\321\333\331\377\223\254" \
+ "\246\377\222\254\246\377\266\307\304\377\204\377\377\377\377\3\253\277" \
+ "\273\377\223\254\247\377\336\346\344\377\203\377\377\377\377\4\372\373" \
+ "\373\377\226\257\251\377\223\254\247\377\236\264\260\377\360\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\341\333\343\342" \
+ "\377\1\322\334\333\377\202\223\254\247\377\1\270\310\305\377\212\377" \
+ "\377\377\377\4\375\375\375\377\236\264\260\377\223\254\247\377\236\265" \
+ "\260\377\355\333\343\342\377\4\243\270\264\377\223\254\247\377\224\255" \
+ "\247\377\366\370\370\377\203\377\377\377\377\3\331\342\340\377\223\254" \
+ "\247\377\261\303\300\377\204\377\377\377\377\4\276\314\312\377\223\253" \
+ "\246\377\223\253\247\377\314\330\326\377\331\333\343\342\377\6\331\341" \
+ "\340\377\306\320\317\377\256\273\271\377\237\257\254\377\230\250\245" \
+ "\377\220\242\236\377\220\216\237\234\377\1g~y\377\202Slg\377\1\243\262" \
+ "\257\377\341\333\343\342\377\1\265\306\302\377\202\223\254\247\377\1" \
+ "\346\353\352\377\212\377\377\377\377\1\333\343\342\377\202\223\254\247" \
+ "\377\1\275\314\311\377\355\333\343\342\377\4\306\323\320\377\222\253" \
+ "\246\377\223\254\246\377\313\327\325\377\203\377\377\377\377\4\374\375" \
+ "\375\377\234\263\257\377\223\254\247\377\357\363\362\377\203\377\377" \
+ "\377\377\4\357\363\362\377\223\254\247\377\223\253\246\377\253\275\272" \
+ "\377\327\333\343\342\377\3\271\306\304\377\205\230\224\377Yrm\377\230" \
+ "Slg\377\1\243\262\257\377\340\333\343\342\377\4\331\341\340\377\230\260" \
+ "\253\377\223\254\247\377\247\273\267\377\213\377\377\377\377\4\256\300" \
+ "\275\377\223\254\247\377\226\256\252\377\327\340\337\377\355\333\343" \
+ "\342\377\5\332\342\341\377\230\260\254\377\223\254\247\377\233\262\255" \
+ "\377\376\376\376\377\203\377\377\377\377\3\307\324\321\377\223\254\247" \
+ "\377\302\320\315\377\204\377\377\377\377\1\245\272\265\377\202\223\254" \
+ "\247\377\1\325\337\335\377\324\333\343\342\377\2\317\330\327\377\200" \
+ "\224\220\377\233Slg\377\1\243\262\257\377\340\333\343\342\377\1\300\316" \
+ "\314\377\202\223\254\247\377\1\324\336\334\377\212\377\377\377\377\1" \
+ "\354\361\360\377\202\223\254\247\377\1\261\303\277\377\357\333\343\342" \
+ "\377\1\270\311\306\377\202\222\254\247\377\1\336\346\344\377\203\377" \
+ "\377\377\377\13\363\366\365\377\224\255\250\377\231\261\254\377\372\373" \
+ "\373\377\374\375\375\377\330\341\337\377\252\276\272\377\223\254\247" \
+ "\377\222\254\246\377\223\253\247\377\271\311\306\377\323\333\343\342" \
+ "\377\2\320\331\330\377h\177z\377\234Slg\377\1\243\262\257\377\340\333" \
+ "\343\342\377\4\242\267\263\377\223\254\247\377\232\261\254\377\372\373" \
+ "\373\377\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1" \
+ "\317\332\330\377\357\333\343\342\377\4\326\337\336\377\224\254\247\377" \
+ "\223\254\247\377\252\276\272\377\204\377\377\377\377\13\266\307\303\377" \
+ "\223\254\247\377\260\302\276\377\233\263\256\377\223\254\247\377\234" \
+ "\263\257\377\306\323\320\377\236\265\260\377\223\254\247\377\234\263" \
+ "\256\377\332\342\341\377\322\333\343\342\377\1x\214\210\377\235Slg\377" \
+ "\1\243\262\257\377\337\333\343\342\377\1\314\327\325\377\202\223\254" \
+ "\247\377\1\303\321\316\377\212\377\377\377\377\4\371\372\372\377\230" \
+ "\257\253\377\223\254\247\377\245\272\266\377\361\333\343\342\377\4\252" \
+ "\276\272\377\222\254\246\377\223\253\246\377\357\362\362\377\202\377" \
+ "\377\377\377\11\341\350\346\377\253\276\273\377\223\253\247\377\223\254" \
+ "\246\377\253\276\272\377\330\341\340\377\374\375\375\377\377\377\377" \
+ "\377\315\330\326\377\202\223\254\247\377\1\305\322\320\377\321\333\343" \
+ "\342\377\1\267\304\302\377\212Slg\377\3Xpk\377byt\377k\201|\377\216l" \
+ "\201}\377\1[sn\377\202Slg\377\1\243\262\257\377\337\333\343\342\377\1" \
+ "\256\300\275\377\202\223\254\247\377\1\357\363\362\377\212\377\377\377" \
+ "\377\1\321\333\331\377\202\223\254\247\377\1\304\321\317\377\361\333" \
+ "\343\342\377\12\315\330\326\377\222\254\246\377\222\254\247\377\272\312" \
+ "\307\377\317\332\330\377\242\270\263\377\223\254\247\377\227\257\252" \
+ "\377\275\314\311\377\352\357\356\377\204\377\377\377\377\4\366\370\370" \
+ "\377\226\256\251\377\223\254\247\377\247\273\267\377\321\333\343\342" \
+ "\377\1\204\226\223\377\205Slg\377\5]up\377\212\234\231\377\270\305\303" \
+ "\377\315\326\325\377\327\337\336\377\221\333\343\342\377\1\202\225\221" \
+ "\377\202Slg\377\1\243\262\257\377\336\333\343\342\377\4\325\336\335\377" \
+ "\225\255\250\377\223\254\247\377\261\303\300\377\213\377\377\377\377" \
+ "\4\243\271\264\377\223\254\247\377\233\262\255\377\332\342\341\377\362" \
+ "\333\343\342\377\7\236\264\261\377\223\254\247\377\222\253\246\377\223" \
+ "\254\247\377\241\267\263\377\316\331\327\377\367\371\371\377\207\377" \
+ "\377\377\377\1\274\313\310\377\202\223\254\247\377\1\320\333\331\377" \
+ "\320\333\343\342\377\1`ws\377\204Slg\377\2\220\241\236\377\330\341\340" \
+ "\377\225\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\336\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1\337\346" \
+ "\345\377\212\377\377\377\377\1\342\351\347\377\202\223\254\247\377\1" \
+ "\270\310\305\377\363\333\343\342\377\5\301\317\315\377\222\253\246\377" \
+ "\223\253\247\377\300\317\314\377\376\376\376\377\211\377\377\377\377" \
+ "\1\351\356\355\377\202\223\254\247\377\1\262\304\301\377\317\333\343" \
+ "\342\377\1\322\333\332\377\204Slg\377\2{\217\213\377\331\342\341\377" \
+ "\226\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\335" \
+ "\333\343\342\377\5\332\342\341\377\234\262\256\377\223\254\247\377\241" \
+ "\267\262\377\376\376\376\377\212\377\377\377\377\4\265\306\302\377\223" \
+ "\254\247\377\224\255\250\377\324\336\334\377\363\333\343\342\377\4\331" \
+ "\341\340\377\231\260\254\377\223\254\247\377\246\272\266\377\213\377" \
+ "\377\377\377\4\252\275\271\377\223\254\247\377\227\257\252\377\330\340" \
+ "\337\377\316\333\343\342\377\1\307\321\320\377\204Slg\377\1\311\323\322" \
+ "\377\227\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377" \
+ "\335\333\343\342\377\1\305\322\320\377\202\223\254\247\377\1\315\331" \
+ "\326\377\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223\254" \
+ "\247\377\254\277\274\377\365\333\343\342\377\1\266\306\303\377\202\223" \
+ "\254\247\377\1\345\353\352\377\212\377\377\377\377\1\330\341\337\377" \
+ "\202\223\254\247\377\1\276\315\312\377\316\333\343\342\377\1\303\316" \
+ "\314\377\203Slg\377\2Zrm\377\332\342\341\377\227\333\343\342\377\1\267" \
+ "\303\301\377\202\243\262\257\377\1\304\316\315\377\335\333\343\342\377" \
+ "\4\247\273\267\377\223\254\247\377\226\256\252\377\367\371\370\377\212" \
+ "\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\313\326\325" \
+ "\377\365\333\343\342\377\1\323\334\333\377\202\223\254\247\377\1\267" \
+ "\310\305\377\212\377\377\377\377\4\374\374\374\377\233\262\256\377\223" \
+ "\254\247\377\240\266\261\377\316\333\343\342\377\1\322\333\332\377\203" \
+ "Slg\377\1q\207\202\377\370\333\343\342\377\1\320\333\331\377\202\223" \
+ "\254\247\377\1\274\313\310\377\212\377\377\377\377\4\374\375\374\377" \
+ "\234\263\256\377\223\254\247\377\241\266\262\377\367\333\343\342\377" \
+ "\4\252\275\271\377\223\254\247\377\225\255\250\377\364\366\366\377\212" \
+ "\377\377\377\377\1\306\323\321\377\202\223\254\247\377\1\312\326\324" \
+ "\377\316\333\343\342\377\1[sn\377\202Slg\377\1{\217\213\377\370\333\343" \
+ "\342\377\1\262\304\300\377\202\223\254\247\377\1\351\356\355\377\212" \
+ "\377\377\377\377\1\330\341\337\377\202\223\254\247\377\1\277\316\313" \
+ "\377\367\333\343\342\377\1\310\324\322\377\202\223\254\247\377\1\311" \
+ "\325\323\377\212\377\377\377\377\4\362\365\364\377\224\254\250\377\223" \
+ "\254\247\377\253\276\273\377\316\333\343\342\377\1y\215\211\377\202S" \
+ "lg\377\1o\204\200\377\367\333\343\342\377\4\330\340\337\377\227\257\252" \
+ "\377\223\254\247\377\253\276\272\377\213\377\377\377\377\4\252\276\272" \
+ "\377\223\254\247\377\230\257\253\377\330\341\337\377\370\333\343\342" \
+ "\377\4\236\265\260\377\223\254\247\377\236\264\257\377\375\375\375\377" \
+ "\212\377\377\377\377\4\265\306\302\377\223\254\247\377\224\255\250\377" \
+ "\324\335\334\377\315\333\343\342\377\1\270\304\302\377\202Slg\377\2U" \
+ "ni\377\320\332\330\377\366\333\343\342\377\1\276\315\312\377\202\223" \
+ "\254\247\377\1\330\341\337\377\212\377\377\377\377\1\351\356\355\377" \
+ "\202\223\254\247\377\1\264\305\302\377\371\333\343\342\377\1\275\314" \
+ "\311\377\202\223\254\247\377\1\333\343\341\377\212\377\377\377\377\1" \
+ "\342\351\347\377\202\223\254\247\377\1\267\307\304\377\316\333\343\342" \
+ "\377\1q\206\202\377\202Slg\377\1\233\253\250\377\227\333\343\342\377" \
+ "\1\205\230\224\377\202Voj\377\1\244\263\260\377\333\333\343\342\377\4" \
+ "\237\265\261\377\223\254\247\377\234\263\256\377\374\375\374\377\212" \
+ "\377\377\377\377\1\274\313\310\377\202\223\254\247\377\1\321\333\332" \
+ "\377\371\333\343\342\377\4\327\340\336\377\226\256\252\377\223\254\247" \
+ "\377\255\300\274\377\213\377\377\377\377\4\243\271\264\377\223\254\247" \
+ "\377\232\261\255\377\331\342\341\377\315\333\343\342\377\5\313\325\323" \
+ "\377ayt\377Slg\377Xpk\377\305\317\316\377\226\333\343\342\377\1\202\225" \
+ "\221\377\202Slg\377\1\243\262\257\377\332\333\343\342\377\1\311\325\323" \
+ "\377\202\223\254\247\377\1\310\325\322\377\212\377\377\377\377\4\367" \
+ "\371\370\377\226\256\251\377\223\254\247\377\250\274\270\377\373\333" \
+ "\343\342\377\1\261\303\277\377\202\223\254\247\377\1\356\361\361\377" \
+ "\212\377\377\377\377\1\322\334\332\377\202\223\254\247\377\1\303\320" \
+ "\316\377\316\333\343\342\377\5\305\317\316\377]up\377Slg\377^vq\377\275" \
+ "\311\307\377\225\333\343\342\377\1\202\225\221\377\202Slg\377\1\243\262" \
+ "\257\377\332\333\343\342\377\4\253\276\273\377\223\254\247\377\224\255" \
+ "\250\377\363\366\366\377\212\377\377\377\377\1\315\330\326\377\202\223" \
+ "\254\247\377\1\306\323\321\377\373\333\343\342\377\1\317\332\330\377" \
+ "\202\223\254\247\377\1\300\317\314\377\212\377\377\377\377\4\371\373" \
+ "\372\377\230\260\253\377\223\254\247\377\244\271\265\377\317\333\343" \
+ "\342\377\6\314\325\324\377}\221\215\377Slg\377Tlg\377\206\230\225\377" \
+ "\277\312\310\377\223\333\343\342\377\1\202\225\221\377\202Slg\377\1\243" \
+ "\262\257\377\331\333\343\342\377\4\323\335\334\377\224\255\250\377\223" \
+ "\254\247\377\267\307\304\377\212\377\377\377\377\5\376\376\376\377\240" \
+ "\266\262\377\223\254\247\377\235\263\257\377\332\342\341\377\374\333" \
+ "\343\342\377\4\245\272\266\377\223\254\247\377\230\260\253\377\371\373" \
+ "\372\377\212\377\377\377\377\1\301\317\314\377\202\223\254\247\377\1" \
+ "\316\331\327\377\313\333\343\342\377\1\313\325\324\377\204\260\275\273" \
+ "\377\1\206\230\225\377\203Slg\377\5czu\377\177\223\217\377\227\250\245" \
+ "\377\244\262\260\377\253\271\267\377\216\260\275\273\377\1s\210\204\377" \
+ "\202Slg\377\1\243\262\257\377\331\333\343\342\377\1\267\307\304\377\202" \
+ "\223\254\247\377\1\344\352\351\377\212\377\377\377\377\1\336\346\344" \
+ "\377\202\223\254\247\377\1\273\312\307\377\375\333\343\342\377\1\304" \
+ "\321\317\377\202\223\254\247\377\1\322\334\332\377\212\377\377\377\377" \
+ "\1\356\361\361\377\202\223\254\247\377\1\260\302\277\377\313\333\343" \
+ "\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377\330\333\343\342" \
+ "\377\4\331\342\341\377\232\261\255\377\223\254\247\377\245\272\266\377" \
+ "\213\377\377\377\377\4\261\303\277\377\223\254\247\377\225\256\251\377" \
+ "\326\337\336\377\375\333\343\342\377\4\332\342\341\377\233\262\255\377" \
+ "\223\254\247\377\244\271\265\377\213\377\377\377\377\4\257\302\276\377" \
+ "\223\254\247\377\226\256\251\377\327\337\336\377\312\333\343\342\377" \
+ "\1\250\267\264\377\236Slg\377\1\243\262\257\377\330\333\343\342\377\1" \
+ "\302\320\316\377\202\223\254\247\377\1\322\335\333\377\212\377\377\377" \
+ "\377\1\357\363\362\377\202\223\254\247\377\1\257\301\276\377\377\333" \
+ "\343\342\377\1\270\310\305\377\202\223\254\247\377\1\343\351\350\377" \
+ "\212\377\377\377\377\1\335\344\343\377\202\223\254\247\377\1\273\313" \
+ "\310\377\312\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257" \
+ "\377\330\333\343\342\377\4\244\271\265\377\223\254\247\377\231\260\254" \
+ "\377\372\373\373\377\212\377\377\377\377\1\302\320\315\377\202\223\254" \
+ "\247\377\1\315\330\327\377\377\333\343\342\377\4\324\336\334\377\224" \
+ "\255\250\377\223\254\247\377\266\307\303\377\212\377\377\377\377\5\375" \
+ "\376\375\377\237\265\261\377\223\254\247\377\236\264\260\377\332\342" \
+ "\341\377\311\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257" \
+ "\377\327\333\343\342\377\1\316\331\327\377\202\223\254\247\377\1\301" \
+ "\317\314\377\212\377\377\377\377\4\372\373\373\377\231\261\254\377\223" \
+ "\254\247\377\243\270\264\377\377\333\343\342\377\202\333\343\342\377" \
+ "\4\254\277\274\377\223\254\247\377\224\255\250\377\363\366\365\377\212" \
+ "\377\377\377\377\1\313\327\325\377\202\223\254\247\377\1\307\324\322" \
+ "\377\311\333\343\342\377\1\250\267\264\377\236Slg\377\1\243\262\257\377" \
+ "\327\333\343\342\377\1\260\302\276\377\202\223\254\247\377\1\356\362" \
+ "\361\377\212\377\377\377\377\1\324\336\334\377\202\223\254\247\377\1" \
+ "\301\317\315\377\377\333\343\342\377\202\333\343\342\377\1\312\326\324" \
+ "\377\202\223\254\247\377\1\307\324\321\377\212\377\377\377\377\4\366" \
+ "\370\367\377\225\256\251\377\223\254\247\377\251\275\271\377\311\333" \
+ "\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\326\333\343\342" \
+ "\377\4\326\337\336\377\226\256\251\377\223\254\247\377\260\302\276\377" \
+ "\213\377\377\377\377\4\246\273\267\377\223\254\247\377\231\261\254\377" \
+ "\331\341\340\377\377\333\343\342\377\203\333\343\342\377\4\241\266\262" \
+ "\377\223\254\247\377\234\263\256\377\374\375\374\377\212\377\377\377" \
+ "\377\1\272\312\307\377\202\223\254\247\377\1\322\334\333\377\310\333" \
+ "\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\326\333\343\342" \
+ "\377\1\273\313\310\377\202\223\254\247\377\1\335\345\344\377\212\377" \
+ "\377\377\377\1\346\353\352\377\202\223\254\247\377\1\266\306\303\377" \
+ "\377\333\343\342\377\204\333\343\342\377\1\277\315\313\377\202\223\254" \
+ "\247\377\1\330\341\337\377\212\377\377\377\377\1\350\355\354\377\202" \
+ "\223\254\247\377\1\264\305\302\377\310\333\343\342\377\1\250\267\264" \
+ "\377\202Slg\377\1x\214\210\377\230\333\343\342\377\1\202\225\221\377" \
+ "\202Slg\377\1\243\262\257\377\325\333\343\342\377\5\332\342\341\377\235" \
+ "\264\257\377\223\254\247\377\240\266\261\377\376\376\376\377\212\377" \
+ "\377\377\377\4\270\310\305\377\223\254\247\377\224\254\247\377\323\335" \
+ "\333\377\377\333\343\342\377\204\333\343\342\377\4\330\341\337\377\230" \
+ "\257\253\377\223\254\247\377\253\276\273\377\213\377\377\377\377\4\251" \
+ "\274\270\377\223\254\247\377\230\260\253\377\331\341\340\377\307\333" \
+ "\343\342\377\1\250\267\264\377\202Slg\377\1x\214\210\377\230\333\343" \
+ "\342\377\1\202\225\221\377\202Slg\377\1\243\262\257\377\325\333\343\342" \
+ "\377\1\307\324\322\377\202\223\254\247\377\1\314\330\325\377\212\377" \
+ "\377\377\377\4\364\367\366\377\225\255\250\377\223\254\247\377\252\276" \
+ "\272\377\377\333\343\342\377\206\333\343\342\377\1\263\305\301\377\202" \
+ "\223\254\247\377\1\352\357\356\377\212\377\377\377\377\1\326\340\336" \
+ "\377\202\223\254\247\377\1\300\316\314\377\307\333\343\342\377\1\250" \
+ "\267\264\377\202Slg\377\1x\214\210\377\230\333\343\342\377\1\223\244" \
+ "\241\377\202l\201}\377\1\255\272\270\377\325\333\343\342\377\4\251\274" \
+ "\271\377\223\254\247\377\225\256\251\377\366\370\370\377\212\377\377" \
+ "\377\377\1\312\326\323\377\202\223\254\247\377\1\310\325\323\377\377" \
+ "\333\343\342\377\206\333\343\342\377\1\321\333\332\377\202\223\254\247" \
+ "\377\1\274\314\311\377\212\377\377\377\377\4\373\374\374\377\233\262" \
+ "\255\377\223\254\247\377\242\267\263\377\377\333\343\342\377\274\333" \
+ "\343\342\377\1\322\334\332\377\202\223\254\247\377\1\272\312\307\377" \
+ "\212\377\377\377\377\4\375\375\375\377\236\264\260\377\223\254\247\377" \
+ "\237\265\260\377\377\333\343\342\377\210\333\343\342\377\4\250\274\270" \
+ "\377\223\254\247\377\226\256\252\377\367\371\371\377\212\377\377\377" \
+ "\377\1\304\322\317\377\202\223\254\247\377\1\314\327\325\377\377\333" \
+ "\343\342\377\273\333\343\342\377\1\264\305\302\377\202\223\254\247\377" \
+ "\1\350\355\354\377\212\377\377\377\377\1\333\343\342\377\202\223\254" \
+ "\247\377\1\275\314\311\377\377\333\343\342\377\210\333\343\342\377\1" \
+ "\306\323\321\377\202\223\254\247\377\1\316\331\327\377\212\377\377\377" \
+ "\377\1\361\364\363\377\202\223\254\247\377\1\255\300\274\377\377\333" \
+ "\343\342\377\272\333\343\342\377\4\331\341\340\377\230\260\253\377\223" \
+ "\254\247\377\251\275\271\377\213\377\377\377\377\4\256\300\275\377\223" \
+ "\254\247\377\226\257\252\377\327\340\337\377\377\333\343\342\377\210" \
+ "\333\343\342\377\5\332\342\341\377\234\263\257\377\223\254\247\377\241" \
+ "\267\263\377\376\376\376\377\212\377\377\377\377\4\263\305\301\377\223" \
+ "\254\247\377\225\255\250\377\325\336\335\377\377\333\343\342\377\271" \
+ "\333\343\342\377\1\300\316\314\377\202\223\254\247\377\1\327\340\336" \
+ "\377\212\377\377\377\377\1\354\361\360\377\202\223\254\247\377\1\261" \
+ "\303\300\377\377\333\343\342\377\212\333\343\342\377\1\272\312\307\377" \
+ "\202\223\254\247\377\1\340\347\345\377\212\377\377\377\377\1\341\350" \
+ "\346\377\202\223\254\247\377\1\271\311\306\377\340\333\343\342\377\1" \
+ "\317\330\327\377\202\305\320\316\377\1\320\331\330\377\324\333\343\342" \
+ "\377\4\241\267\263\377\223\254\247\377\233\262\255\377\374\374\374\377" \
+ "\212\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1\317\332" \
+ "\330\377\377\333\343\342\377\212\333\343\342\377\4\326\337\336\377\225" \
+ "\256\251\377\223\254\247\377\262\304\300\377\212\377\377\377\377\5\376" \
+ "\376\376\377\243\270\264\377\223\254\247\377\234\262\256\377\332\342" \
+ "\341\377\337\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244" \
+ "\377\323\333\343\342\377\1\314\327\325\377\202\223\254\247\377\1\305" \
+ "\323\320\377\212\377\377\377\377\4\371\372\372\377\230\257\253\377\223" \
+ "\254\247\377\246\272\266\377\377\333\343\342\377\214\333\343\342\377" \
+ "\1\257\301\276\377\202\223\254\247\377\1\360\363\363\377\212\377\377" \
+ "\377\377\1\317\332\330\377\202\223\254\247\377\1\305\322\320\377\337" \
+ "\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\323\333" \
+ "\343\342\377\1\255\300\274\377\202\223\254\247\377\1\361\364\364\377" \
+ "\212\377\377\377\377\1\320\333\331\377\202\223\254\247\377\1\304\321" \
+ "\317\377\377\333\343\342\377\214\333\343\342\377\1\315\330\326\377\202" \
+ "\223\254\247\377\1\304\321\317\377\212\377\377\377\377\4\370\372\371" \
+ "\377\227\257\252\377\223\254\247\377\246\273\267\377\337\333\343\342" \
+ "\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\322\333\343\342\377" \
+ "\4\325\336\335\377\224\255\250\377\223\254\247\377\264\305\302\377\213" \
+ "\377\377\377\377\4\243\271\264\377\223\254\247\377\233\262\255\377\332" \
+ "\342\341\377\377\333\343\342\377\215\333\343\342\377\4\243\270\264\377" \
+ "\223\254\247\377\232\261\255\377\373\374\373\377\212\377\377\377\377" \
+ "\1\276\315\312\377\202\223\254\247\377\1\320\332\331\377\336\333\343" \
+ "\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\322\333\343\342" \
+ "\377\1\271\311\306\377\202\223\254\247\377\1\341\350\347\377\212\377" \
+ "\377\377\377\1\342\351\347\377\202\223\254\247\377\1\270\310\306\377" \
+ "\377\333\343\342\377\216\333\343\342\377\1\301\317\315\377\202\223\254" \
+ "\247\377\1\325\337\335\377\212\377\377\377\377\1\353\360\357\377\202" \
+ "\223\254\247\377\1\262\303\300\377\334\333\343\342\377\3\304\317\316" \
+ "\377\220\242\236\377]to\377\202Slg\377\1\227\247\244\377\321\333\343" \
+ "\342\377\5\332\342\341\377\233\262\256\377\223\254\247\377\243\270\264" \
+ "\377\376\376\376\377\212\377\377\377\377\4\264\306\302\377\223\254\247" \
+ "\377\224\255\250\377\325\336\335\377\377\333\343\342\377\216\333\343" \
+ "\342\377\4\331\341\340\377\231\260\254\377\223\254\247\377\247\273\267" \
+ "\377\213\377\377\377\377\4\255\300\274\377\223\254\247\377\227\257\252" \
+ "\377\327\340\337\377\330\333\343\342\377\3\323\335\333\377\246\263\261" \
+ "\377p\206\202\377\205Slg\377\1\227\247\244\377\321\333\343\342\377\1" \
+ "\304\322\317\377\202\223\254\247\377\1\320\333\331\377\212\377\377\377" \
+ "\377\4\362\365\364\377\224\254\250\377\223\254\247\377\236\264\260\377" \
+ "\377\333\343\342\377\220\333\343\342\377\1\266\306\303\377\202\223\254" \
+ "\247\377\1\346\354\353\377\202\377\377\377\377\4\370\371\371\377\342" \
+ "\351\347\377\333\343\342\377\360\363\363\377\204\377\377\377\377\1\332" \
+ "\343\341\377\202\223\254\247\377\1\276\315\312\377\326\333\343\342\377" \
+ "\3\273\306\304\377\206\230\225\377Xpl\377\207Slg\377\1\227\247\244\377" \
+ "\321\333\343\342\377\4\246\272\266\377\223\254\247\377\227\257\252\377" \
+ "\370\372\371\377\212\377\377\377\377\1\306\323\321\377\203\223\254\247" \
+ "\377\1\314\327\325\377\377\333\343\342\377\217\333\343\342\377\6\323" \
+ "\335\333\377\224\254\247\377\223\254\247\377\267\307\304\377\304\321" \
+ "\317\377\242\267\263\377\204\223\254\247\377\10\232\262\255\377\263\304" \
+ "\301\377\353\360\357\377\377\377\377\377\374\375\375\377\235\264\257" \
+ "\377\223\254\247\377\237\265\261\377\323\333\343\342\377\3\315\327\325" \
+ "\377\233\253\250\377g}y\377\212Slg\377\1\227\247\244\377\320\333\343" \
+ "\342\377\1\320\332\331\377\202\223\254\247\377\1\277\315\312\377\212" \
+ "\377\377\377\377\6\374\374\374\377\233\262\256\377\223\254\247\377\235" \
+ "\264\257\377\223\254\247\377\266\307\304\377\377\333\343\342\377\220" \
+ "\333\343\342\377\3\252\275\272\377\222\253\247\377\222\254\247\377\202" \
+ "\223\254\247\377\12\237\265\261\377\266\307\304\377\276\315\312\377\250" \
+ "\274\270\377\225\256\251\377\223\254\247\377\225\256\251\377\312\327" \
+ "\324\377\375\376\376\377\311\325\323\377\202\223\254\247\377\1\311\325" \
+ "\323\377\317\333\343\342\377\4\330\341\340\377\260\275\273\377|\217\214" \
+ "\377Umh\377\214Slg\377\1\227\247\244\377\320\333\343\342\377\1\262\303" \
+ "\300\377\202\223\254\247\377\1\354\360\357\377\212\377\377\377\377\1" \
+ "\330\341\337\377\202\223\254\247\377\3\306\323\320\377\223\254\247\377" \
+ "\250\273\270\377\377\333\343\342\377\220\333\343\342\377\1\263\305\301" \
+ "\377\202\223\254\247\377\2\263\305\301\377\362\365\365\377\204\377\377" \
+ "\377\377\11\374\374\374\377\317\332\330\377\226\257\252\377\223\254\247" \
+ "\377\257\301\276\377\363\365\365\377\225\255\250\377\223\254\247\377" \
+ "\253\276\272\377\315\333\343\342\377\3\305\320\316\377\220\242\236\377" \
+ "_vr\377\217Slg\377\1\227\247\244\377\317\333\343\342\377\4\327\340\337" \
+ "\377\227\257\252\377\223\254\247\377\255\300\274\377\213\377\377\377" \
+ "\377\6\252\275\271\377\223\254\247\377\233\262\255\377\366\370\370\377" \
+ "\224\255\250\377\230\260\254\377\377\333\343\342\377\217\333\343\342" \
+ "\377\4\321\333\331\377\226\256\251\377\223\254\247\377\324\336\334\377" \
+ "\210\377\377\377\377\10\355\361\361\377\243\270\264\377\223\254\247\377" \
+ "\315\330\326\377\267\310\305\377\223\254\247\377\224\255\250\377\323" \
+ "\335\334\377\311\333\343\342\377\3\324\335\334\377\245\264\262\377q\206" \
+ "\203\377\217Slg\377\1\\to\377\202Slg\377\1\227\247\244\377\317\333\343" \
+ "\342\377\1\275\314\311\377\202\223\254\247\377\1\333\343\341\377\212" \
+ "\377\377\377\377\1\351\356\355\377\202\223\254\247\377\5\304\322\317" \
+ "\377\377\377\377\377\231\261\254\377\224\254\247\377\331\342\341\377" \
+ "\377\333\343\342\377\215\333\343\342\377\4\332\342\341\377\244\271\265" \
+ "\377\223\254\247\377\302\320\316\377\212\377\377\377\377\4\351\356\355" \
+ "\377\225\255\250\377\226\256\251\377\327\340\335\377\202\223\254\247" \
+ "\377\1\266\307\304\377\307\333\343\342\377\3\273\307\305\377\206\231" \
+ "\225\377Xpl\377\216Slg\377\4d{w\377\230\250\245\377\313\325\323\377\216" \
+ "\237\234\377\202Slg\377\1\227\247\244\377\317\333\343\342\377\4\237\265" \
+ "\261\377\223\254\247\377\236\264\257\377\375\375\375\377\212\377\377" \
+ "\377\377\1\274\313\310\377\202\223\254\247\377\202\361\364\363\377\2" \
+ "\223\254\247\377\240\265\261\377\377\333\343\342\377\216\333\343\342" \
+ "\377\4\306\323\321\377\223\254\247\377\244\271\264\377\373\374\374\377" \
+ "\213\377\377\377\377\7\310\325\322\377\223\254\247\377\267\310\305\377" \
+ "\246\272\266\377\223\254\247\377\232\261\254\377\331\341\340\377\303" \
+ "\333\343\342\377\3\316\327\326\377\233\253\251\377g}y\377\216Slg\377" \
+ "\4Wpj\377\204\226\223\377\270\305\302\377\332\342\341\377\202\333\343" \
+ "\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\316\333\343\342" \
+ "\377\1\311\325\323\377\202\223\254\247\377\1\311\325\323\377\206\377" \
+ "\377\377\377\14\346\353\352\377\301\317\314\377\337\346\345\377\376\376" \
+ "\376\377\367\371\370\377\226\256\251\377\223\254\247\377\263\304\301" \
+ "\377\377\377\377\377\332\342\341\377\223\254\247\377\256\302\276\377" \
+ "\377\333\343\342\377\216\333\343\342\377\3\267\307\304\377\223\254\247" \
+ "\377\316\331\327\377\214\377\377\377\377\4\367\370\370\377\223\254\247" \
+ "\377\240\266\262\377\323\335\333\377\202\223\254\247\377\1\302\320\316" \
+ "\377\300\333\343\342\377\4\330\341\340\377\261\275\273\377|\220\214\377" \
+ "Umh\377\216Slg\377\3p\205\201\377\244\263\260\377\323\334\333\377\205" \
+ "\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\316\333" \
+ "\343\342\377\4\253\276\272\377\223\254\247\377\225\255\250\377\364\367" \
+ "\366\377\205\377\377\377\377\1\326\337\336\377\203\223\254\247\377\2" \
+ "\302\320\315\377\315\330\326\377\202\223\254\247\377\5\340\347\346\377" \
+ "\377\377\377\377\257\301\276\377\223\254\247\377\276\315\313\377\377" \
+ "\333\343\342\377\216\333\343\342\377\3\251\274\271\377\223\254\247\377" \
+ "\344\352\351\377\215\377\377\377\377\6\240\266\262\377\223\254\247\377" \
+ "\362\365\364\377\231\261\254\377\223\254\247\377\244\271\265\377\252" \
+ "\333\343\342\377\11\330\340\337\377\243\262\257\377\204\227\224\377j" \
+ "\200{\377Wpj\377f|x\377{\216\213\377\255\274\271\377\330\341\340\377" \
+ "\213\333\343\342\377\3\305\320\316\377\221\242\237\377_vr\377\216Slg" \
+ "\377\3^vq\377\220\241\236\377\304\317\315\377\210\333\343\342\377\1\216" \
+ "\237\234\377\202Slg\377\1\227\247\244\377\316\333\343\342\377\3\226\256" \
+ "\251\377\223\254\247\377\266\307\303\377\206\377\377\377\377\15\252\276" \
+ "\272\377\223\254\247\377\302\320\316\377\223\254\247\377\232\261\255" \
+ "\377\237\265\261\377\223\254\247\377\242\270\263\377\376\376\376\377" \
+ "\321\334\331\377\223\254\247\377\235\263\257\377\330\340\340\377\377" \
+ "\333\343\342\377\216\333\343\342\377\3\234\262\256\377\223\254\247\377" \
+ "\370\372\371\377\215\377\377\377\377\4\264\306\302\377\223\254\247\377" \
+ "\344\352\351\377\300\316\313\377\202\223\254\247\377\1\325\336\335\377" \
+ "\250\333\343\342\377\2\303\316\315\377m\202~\377\207Slg\377\2g}y\377" \
+ "\306\321\317\377\207\333\343\342\377\3\324\335\334\377\246\265\263\377" \
+ "q\206\203\377\216Slg\377\4Umh\377|\217\214\377\260\275\273\377\330\340" \
+ "\337\377\212\333\343\342\377\1\257\274\273\377\202\216\237\234\377\1" \
+ "\264\300\277\377\316\333\343\342\377\3\230\257\253\377\223\254\247\377" \
+ "\276\315\312\377\206\377\377\377\377\5\270\311\305\377\223\254\247\377" \
+ "\244\271\264\377\223\254\247\377\240\266\262\377\202\223\254\247\377" \
+ "\5\317\332\330\377\335\345\343\377\226\256\251\377\223\254\247\377\312" \
+ "\326\324\377\377\333\343\342\377\217\333\343\342\377\3\241\267\263\377" \
+ "\223\254\247\377\356\362\362\377\215\377\377\377\377\4\253\276\272\377" \
+ "\223\254\247\377\355\361\360\377\310\325\322\377\202\223\254\247\377" \
+ "\1\327\340\336\377\247\333\343\342\377\2\261\275\273\377Woj\377\211S" \
+ "lg\377\2[to\377\301\314\312\377\204\333\343\342\377\3\273\307\305\377" \
+ "\207\231\225\377Yql\377\206Slg\377\4Rkg\377Skf\377Slf\377Rkg\377\204" \
+ "Slg\377\3h~z\377\234\254\251\377\316\327\326\377\337\333\343\342\377" \
+ "\3\233\262\255\377\223\254\247\377\271\311\306\377\206\377\377\377\377" \
+ "\10\351\356\355\377\240\266\261\377\223\254\247\377\233\262\256\377\247" \
+ "\273\266\377\223\254\247\377\226\256\252\377\267\310\304\377\202\223" \
+ "\254\247\377\1\267\307\305\377\377\333\343\342\377\220\333\343\342\377" \
+ "\3\260\302\277\377\223\254\247\377\330\341\340\377\214\377\377\377\377" \
+ "\5\375\376\376\377\226\257\252\377\227\257\252\377\376\376\376\377\304" \
+ "\321\317\377\202\223\254\247\377\1\332\342\341\377\246\333\343\342\377" \
+ "\2\315\327\325\377]to\377\203Slg\377\5Zqm\377x\214\210\377\210\232\226" \
+ "\377r\210\204\377Vnj\377\203Slg\377\5j\200{\377\327\340\336\377\316\327" \
+ "\326\377\233\253\251\377g}y\377\211Slg\377\10Skf\377Rkg\377Slg\377Rl" \
+ "f\377Slg\377Zqm\377\207\233\227\377\275\310\306\377\342\333\343\342\377" \
+ "\3\236\264\260\377\223\254\247\377\264\306\302\377\207\377\377\377\377" \
+ "\3\376\376\376\377\346\354\353\377\354\360\357\377\204\223\254\247\377" \
+ "\2\232\261\255\377\305\322\320\377\377\333\343\342\377\221\333\343\342" \
+ "\377\3\276\315\312\377\223\254\247\377\274\313\310\377\214\377\377\377" \
+ "\377\7\344\352\351\377\223\254\247\377\253\277\273\377\377\377\377\377" \
+ "\277\315\312\377\223\254\247\377\225\255\250\377\247\333\343\342\377" \
+ "\1y\215\212\377\203Slg\377\2x\214\211\377\315\327\325\377\203\333\343" \
+ "\342\377\2\301\314\312\377h~z\377\203Slg\377\2j\200{\377Umh\377\213S" \
+ "lg\377\6Skf\377Rkg\377Slg\377Xqk\377\250\266\263\377\325\336\335\377" \
+ "\344\333\343\342\377\3\241\266\262\377\223\254\247\377\260\302\276\377" \
+ "\211\377\377\377\377\1\302\320\315\377\202\223\254\247\377\3\231\260" \
+ "\253\377\260\302\277\377\325\336\336\377\377\333\343\342\377\222\333" \
+ "\343\342\377\4\323\334\334\377\226\256\251\377\223\254\247\377\344\352" \
+ "\351\377\212\377\377\377\377\10\374\374\374\377\245\272\265\377\223\254" \
+ "\247\377\320\333\331\377\377\377\377\377\272\312\307\377\223\254\247" \
+ "\377\230\257\253\377\246\333\343\342\377\1\314\325\325\377\203Slg\377" \
+ "\2j\201|\377\326\337\336\377\205\333\343\342\377\2\311\323\321\377Yq" \
+ "l\377\217Slg\377\4_uq\377Slh\377Slg\377i\200{\377\346\333\343\342\377" \
+ "\3\244\271\265\377\223\254\247\377\253\276\273\377\210\377\377\377\377" \
+ "\4\372\373\373\377\231\261\254\377\223\254\247\377\242\267\263\377\377" \
+ "\333\343\342\377\226\333\343\342\377\4\275\314\311\377\223\254\247\377" \
+ "\241\266\262\377\371\372\372\377\211\377\377\377\377\10\303\321\316\377" \
+ "\223\254\247\377\254\277\273\377\376\376\376\377\377\377\377\377\265" \
+ "\306\303\377\223\254\247\377\233\262\255\377\246\333\343\342\377\1\263" \
+ "\300\276\377\203Slg\377\1\263\300\276\377\207\333\343\342\377\1\222\243" \
+ "\237\377\214Slg\377\7Vnj\377\200\223\220\377\264\300\277\377\300\313" \
+ "\311\377Umi\377Slg\377i\200{\377\346\333\343\342\377\3\247\273\267\377" \
+ "\223\254\247\377\246\273\267\377\210\377\377\377\377\1\324\336\334\377" \
+ "\202\223\254\247\377\1\302\320\315\377\377\333\343\342\377\227\333\343" \
+ "\342\377\4\246\272\267\377\223\254\247\377\241\267\262\377\345\353\352" \
+ "\377\206\377\377\377\377\5\367\371\370\377\267\310\305\377\223\254\247" \
+ "\377\227\257\252\377\357\363\362\377\202\377\377\377\377\3\261\303\277" \
+ "\377\223\254\247\377\236\264\260\377\246\333\343\342\377\1\232\252\247" \
+ "\377\203Slg\377\1\317\330\327\377\207\333\343\342\377\1\260\275\273\377" \
+ "\212Slg\377\3l\201}\377\240\260\254\377\320\332\331\377\202\333\343\342" \
+ "\377\4\301\314\312\377Umi\377Slg\377i\200{\377\346\333\343\342\377\3" \
+ "\252\275\272\377\223\254\247\377\242\267\263\377\210\377\377\377\377" \
+ "\4\246\273\267\377\223\254\247\377\231\261\254\377\331\341\340\377\377" \
+ "\333\343\342\377\227\333\343\342\377\16\325\336\334\377\246\272\267\377" \
+ "\223\254\247\377\224\255\250\377\271\311\306\377\322\334\332\377\351" \
+ "\356\355\377\361\364\363\377\333\343\341\377\304\322\317\377\235\264" \
+ "\257\377\223\254\247\377\235\263\257\377\341\350\346\377\203\377\377" \
+ "\377\377\3\254\277\273\377\223\254\247\377\241\267\262\377\246\333\343" \
+ "\342\377\1\233\253\250\377\203Slg\377\1\315\327\325\377\207\333\343\342" \
+ "\377\1\256\274\272\377\207Slg\377\3[to\377\214\236\232\377\300\314\312" \
+ "\377\205\333\343\342\377\4\301\314\312\377Umi\377Slg\377i\200{\377\346" \
+ "\333\343\342\377\3\255\300\274\377\223\254\247\377\235\263\257\377\207" \
+ "\377\377\377\377\1\346\353\352\377\202\223\254\247\377\1\266\307\304" \
+ "\377\377\333\343\342\377\232\333\343\342\377\2\275\314\311\377\226\256" \
+ "\251\377\207\223\254\247\377\2\267\310\305\377\367\371\370\377\204\377" \
+ "\377\377\377\3\247\273\267\377\223\254\247\377\244\271\265\377\246\333" \
+ "\343\342\377\1\265\301\300\377\203Slg\377\1\261\275\273\377\207\333\343" \
+ "\342\377\1\217\240\235\377\206Slg\377\2p\205\201\377\311\324\322\377" \
+ "\207\333\343\342\377\4\301\314\312\377Umi\377Slg\377i\200{\377\346\333" \
+ "\343\342\377\3\260\302\277\377\223\254\247\377\230\260\253\377\207\377" \
+ "\377\377\377\4\270\310\305\377\223\254\247\377\224\254\247\377\323\335" \
+ "\333\377\377\333\343\342\377\233\333\343\342\377\10\324\336\335\377\302" \
+ "\321\316\377\264\305\302\377\244\271\265\377\223\254\247\377\223\253" \
+ "\246\377\241\266\262\377\353\360\357\377\206\377\377\377\377\3\242\270" \
+ "\263\377\223\254\247\377\247\273\267\377\246\333\343\342\377\1\316\327" \
+ "\326\377\203Slg\377\2i\177{\377\326\337\336\377\205\333\343\342\377\2" \
+ "\307\322\320\377Vpk\377\207Slg\377\4Umh\377|\217\214\377\260\275\273" \
+ "\377\330\341\340\377\204\333\343\342\377\4\301\314\312\377Umi\377Slg" \
+ "\377i\200{\377\346\333\343\342\377\1\263\304\301\377\202\223\254\247" \
+ "\377\206\377\377\377\377\4\364\367\366\377\225\255\250\377\223\254\247" \
+ "\377\253\276\272\377\377\333\343\342\377\240\333\343\342\377\1\264\305" \
+ "\302\377\202\223\254\247\377\1\351\356\355\377\206\377\377\377\377\3" \
+ "\236\264\257\377\223\254\247\377\252\275\272\377\247\333\343\342\377" \
+ "\1\177\222\216\377\203Slg\377\2v\212\206\377\312\324\323\377\203\333" \
+ "\343\342\377\2\271\305\303\377e|w\377\203Slg\377\2j\201|\377Umh\377\206" \
+ "Slg\377\3^vq\377\220\242\236\377\304\317\316\377\202\333\343\342\377" \
+ "\4\301\314\312\377Umi\377Slg\377i\200{\377\346\333\343\342\377\1\266" \
+ "\307\304\377\202\223\254\247\377\1\373\374\374\377\205\377\377\377\377" \
+ "\1\312\326\323\377\202\223\254\247\377\1\311\325\323\377\377\333\343" \
+ "\342\377\240\333\343\342\377\1\321\333\332\377\202\223\254\247\377\1" \
+ "\274\313\310\377\206\377\377\377\377\3\231\260\254\377\223\254\247\377" \
+ "\255\300\274\377\247\333\343\342\377\2\320\332\331\377_wr\377\203Slg" \
+ "\377\4Uni\377k\201|\377{\216\213\377e}w\377\204Slg\377\5m\203\177\377" \
+ "\330\340\337\377\316\330\326\377\235\254\252\377i\177z\377\207Slg\377" \
+ "\6p\206\202\377\246\263\261\377\273\307\304\377Umi\377Slg\377i\200{\377" \
+ "\346\333\343\342\377\1\271\311\306\377\202\223\254\247\377\1\366\370" \
+ "\370\377\204\377\377\377\377\4\375\375\375\377\236\264\260\377\223\254" \
+ "\247\377\237\265\261\377\377\333\343\342\377\242\333\343\342\377\4\250" \
+ "\274\270\377\223\254\247\377\226\256\252\377\367\371\370\377\205\377" \
+ "\377\377\377\3\224\255\250\377\223\254\247\377\260\302\277\377\250\333" \
+ "\343\342\377\2\266\303\300\377Yql\377\211Slg\377\2_vr\377\305\320\316" \
+ "\377\204\333\343\342\377\3\274\311\307\377\210\232\227\377Zrm\377\206" \
+ "Slg\377\4Wnj\377Skg\377Slg\377i\200{\377\346\333\343\342\377\1\274\313" \
+ "\311\377\202\223\254\247\377\1\361\364\364\377\204\377\377\377\377\1" \
+ "\333\343\342\377\202\223\254\247\377\1\275\314\311\377\377\333\343\342" \
+ "\377\242\333\343\342\377\1\306\323\321\377\202\223\254\247\377\1\315" \
+ "\331\326\377\204\377\377\377\377\1\374\374\374\377\202\223\254\247\377" \
+ "\1\263\305\301\377\251\333\343\342\377\2\311\324\322\377v\212\206\377" \
+ "\207Slg\377\2k\201|\377\311\324\322\377\207\333\343\342\377\3\325\336" \
+ "\335\377\251\267\264\377t\211\205\377\204Slg\377\6Skf\377Rkg\377Slg\377" \
+ "Uoi\377\232\253\247\377\314\326\325\377\344\333\343\342\377\1\277\316" \
+ "\313\377\202\223\254\247\377\1\355\361\360\377\204\377\377\377\377\4" \
+ "\256\300\275\377\223\254\247\377\226\257\252\377\327\340\337\377\377" \
+ "\333\343\342\377\242\333\343\342\377\5\332\342\341\377\235\263\257\377" \
+ "\223\254\247\377\241\267\262\377\376\376\376\377\203\377\377\377\377" \
+ "\1\367\371\370\377\202\223\254\247\377\1\266\307\304\377\252\333\343" \
+ "\342\377\11\332\342\341\377\260\275\273\377\222\243\237\377w\213\210" \
+ "\377d{w\377r\207\203\377\206\230\225\377\265\302\300\377\332\342\341" \
+ "\377\213\333\343\342\377\5\307\322\320\377\225\245\242\377bxt\377Slg" \
+ "\377Skf\377\203Slf\377\5Slg\377Tmh\377{\216\213\377\257\274\273\377\330" \
+ "\340\337\377\341\333\343\342\377\1\302\320\316\377\202\223\254\247\377" \
+ "\1\350\355\354\377\203\377\377\377\377\1\354\361\360\377\202\223\254" \
+ "\247\377\1\262\303\300\377\377\333\343\342\377\244\333\343\342\377\1" \
+ "\273\312\307\377\202\223\254\247\377\1\337\346\345\377\203\377\377\377" \
+ "\377\1\362\365\364\377\202\223\254\247\377\1\271\311\306\377\300\333" \
+ "\343\342\377\6\332\342\341\377\265\301\300\377~\223\217\377Vnj\377Sk" \
+ "g\377Slf\377\204Slg\377\3^uq\377\217\241\236\377\304\317\315\377\337" \
+ "\333\343\342\377\1\305\322\320\377\202\223\254\247\377\1\343\352\350" \
+ "\377\203\377\377\377\377\1\277\316\313\377\202\223\254\247\377\1\317" \
+ "\332\330\377\377\333\343\342\377\244\333\343\342\377\4\326\337\336\377" \
+ "\225\256\251\377\223\254\247\377\261\303\300\377\203\377\377\377\377" \
+ "\1\356\361\361\377\202\223\254\247\377\1\274\313\311\377\303\333\343" \
+ "\342\377\3\321\332\331\377\240\257\255\377m\202~\377\207Slg\377\3p\205" \
+ "\201\377\244\263\260\377\323\334\333\377\212\333\343\342\377\1\257\274" \
+ "\273\377\202\216\237\234\377\1\264\300\277\377\316\333\343\342\377\1" \
+ "\310\325\323\377\202\223\254\247\377\7\243\271\264\377\272\312\307\377" \
+ "\315\330\326\377\336\345\344\377\230\257\253\377\223\254\247\377\246" \
+ "\272\266\377\377\333\343\342\377\246\333\343\342\377\1\257\301\276\377" \
+ "\202\223\254\247\377\4\332\342\340\377\317\332\330\377\274\313\310\377" \
+ "\246\273\267\377\202\223\254\247\377\1\277\316\313\377\306\333\343\342" \
+ "\377\3\301\314\312\377\215\237\233\377\\to\377\206Slg\377\3Xpk\377\204" \
+ "\227\224\377\271\305\303\377\210\333\343\342\377\1\216\237\234\377\202" \
+ "Slg\377\1\227\247\244\377\316\333\343\342\377\1\313\327\325\377\210\223" \
+ "\254\247\377\1\304\321\317\377\377\333\343\342\377\246\333\343\342\377" \
+ "\1\315\330\327\377\210\223\254\247\377\1\303\320\316\377\310\333\343" \
+ "\342\377\3\326\337\336\377\255\272\270\377x\215\210\377\207Slg\377\3" \
+ "e}w\377\232\252\246\377\314\325\325\377\205\333\343\342\377\1\216\237" \
+ "\234\377\202Slg\377\1\227\247\244\377\316\333\343\342\377\5\326\337\336" \
+ "\377\271\311\306\377\217\245\241\377\206\237\232\377\220\251\244\377" \
+ "\203\223\254\247\377\2\233\262\256\377\332\342\341\377\377\333\343\342" \
+ "\377\247\333\343\342\377\1\243\270\264\377\203\223\254\247\377\5\221" \
+ "\252\245\377\210\241\234\377\203\233\226\377\267\310\305\377\323\335" \
+ "\333\377\313\333\343\342\377\3\313\326\324\377\230\251\246\377f|x\377" \
+ "\206Slg\377\4Tmh\377z\216\212\377\256\274\272\377\330\340\337\377\202" \
+ "\333\343\342\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\320\333" \
+ "\343\342\377\1p\206\202\377\202Slg\377\4\\up\377o\207\203\377\270\310" \
+ "\305\377\303\321\316\377\377\333\343\342\377\250\333\343\342\377\10\307" \
+ "\324\322\377\267\307\304\377\200\226\221\377]vq\377Tmh\377Slg\377Woj" \
+ "\377\331\342\341\377\316\333\343\342\377\4\332\342\341\377\271\305\303" \
+ "\377\204\227\224\377Xpk\377\206Slg\377\4]up\377\217\240\235\377\303\316" \
+ "\315\377\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342" \
+ "\377\1Zrm\377\203Slg\377\1y\216\211\377\377\333\343\342\377\254\333\343" \
+ "\342\377\2\226\247\244\377Tmh\377\202Slg\377\2[sn\377\307\322\320\377" \
+ "\321\333\343\342\377\3\323\334\333\377\245\264\261\377q\205\201\377\207" \
+ "Slg\377\1Xpl\377\202Slg\377\1\227\247\244\377\320\333\343\342\377\1_" \
+ "wr\377\203Slg\377\1\227\247\244\377\377\333\343\342\377\254\333\343\342" \
+ "\377\2\261\276\274\377[sn\377\202Slg\377\2Zrm\377\260\276\273\377\324" \
+ "\333\343\342\377\3\304\317\316\377\221\242\237\377_vr\377\207Slg\377" \
+ "\1\227\247\244\377\320\333\343\342\377\1p\206\202\377\202Slg\377\2Xp" \
+ "l\377\317\330\327\377\377\333\343\342\377\254\333\343\342\377\2\311\324" \
+ "\322\377Zrn\377\202Slg\377\2Yrm\377\313\325\324\377\326\333\343\342\377" \
+ "\4\330\341\340\377\261\276\274\377|\221\215\377Umh\377\204Slg\377\1\227" \
+ "\247\244\377\320\333\343\342\377\1\203\226\222\377\202Slg\377\1\222\243" \
+ "\237\377\377\333\343\342\377\256\333\343\342\377\4Xpk\377Slg\377Yql\377" \
+ "\241\261\256\377\332\333\343\342\377\3\316\330\326\377\235\254\252\377" \
+ "byu\377\202Slg\377\1\227\247\244\377\320\333\343\342\377\4\224\245\242" \
+ "\377Slg\377Yql\377\320\331\330\377\377\333\343\342\377\256\333\343\342" \
+ "\377\4j\200{\377Slg\377o\204\200\377\332\342\341\377\334\333\343\342" \
+ "\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342\377" \
+ "\3\245\264\262\377Slg\377\223\243\241\377\377\333\343\342\377\257\333" \
+ "\343\342\377\3\205\230\224\377Vnj\377\312\324\323\377\335\333\343\342" \
+ "\377\1\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342\377" \
+ "\3\267\304\302\377Zqm\377\320\332\331\377\377\333\343\342\377\257\333" \
+ "\343\342\377\2\304\317\315\377\264\301\277\377\336\333\343\342\377\1" \
+ "\216\237\234\377\202Slg\377\1\227\247\244\377\320\333\343\342\377\2\311" \
+ "\323\321\377\223\244\242\377\377\333\343\342\377\377\333\343\342\377" \
+ "\221\333\343\342\377\1\256\273\270\377\202\211\233\230\377\1\262\277" \
+ "\275\377\320\333\343\342\377\2\330\341\340\377\321\332\331\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\231\333\343" \
+ "\342\377")
+
+
diff --git a/packages/psplash/files/angstrom/psplash-hand-img.h b/packages/psplash/files/angstrom/psplash-hand-img.h
new file mode 100644
index 0000000000..a03d16e57a
--- /dev/null
+++ b/packages/psplash/files/angstrom/psplash-hand-img.h
@@ -0,0 +1,1336 @@
+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
+
+#define HAND_IMG_ROWSTRIDE (1016)
+#define HAND_IMG_WIDTH (254)
+#define HAND_IMG_HEIGHT (264)
+#define HAND_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */
+#define HAND_IMG_RLE_PIXEL_DATA ((uint8*) \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\331\333\343\342\377\5\327" \
+ "\340\337\377\314\327\325\377\306\323\320\377\321\333\331\377\332\342" \
+ "\341\377\377\333\343\342\377\206\333\343\342\377\1\276\311\307\377\202" \
+ "g~y\377\357\333\343\342\377\2\253\276\272\377\233\262\255\377\204\223" \
+ "\254\247\377\3\225\255\250\377\240\266\262\377\303\321\316\377\377\333" \
+ "\343\342\377\204\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
+ "\343\342\377\11\231\260\254\377\223\254\247\377\243\271\264\377\267\307" \
+ "\304\377\277\316\313\377\256\301\275\377\232\261\255\377\223\254\247" \
+ "\377\271\311\306\377\377\333\343\342\377\204\333\343\342\377\1\270\305" \
+ "\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377" \
+ "\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\364\333\343" \
+ "\342\377\4\332\342\341\377\316\330\326\377\277\312\310\377\260\275\273" \
+ "\377\213\254\271\267\377\1\225\246\243\377\202Slg\377\357\333\343\342" \
+ "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
+ "\247\377\271\311\306\377\362\333\343\342\377\3\266\302\300\377v\212\206" \
+ "\377Vni\377\221Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\360\333" \
+ "\343\342\377\2\320\331\330\377n\204\200\377\224Slg\377\357\333\343\342" \
+ "\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254" \
+ "\247\377\271\311\306\377\357\333\343\342\377\2\332\342\341\377x\215\211" \
+ "\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377" \
+ "\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333\343\342" \
+ "\377\1\240\260\255\377\204Slg\377\4Uni\377s\210\203\377\177\222\217\377" \
+ "\213\235\231\377\213\222\243\240\377\1\202\225\221\377\202Slg\377\357" \
+ "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
+ "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1{\217\213\377" \
+ "\203Slg\377\2\230\250\245\377\317\330\327\377\216\333\343\342\377\1\270" \
+ "\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\1byt\377\202Slg\377\1\230\250\245\377\220\333\343\342\377" \
+ "\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231\260\254\377" \
+ "\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377" \
+ "\356\333\343\342\377\1\324\335\334\377\203Slg\377\1\324\334\333\377\220" \
+ "\333\343\342\377\1\274\307\306\377\202_vr\377\357\333\343\342\377\202" \
+ "\231\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377" \
+ "\271\311\306\377\356\333\343\342\377\4\332\342\341\377Xql\377Slg\377" \
+ "f|x\377\377\333\343\342\377\204\333\343\342\377\202\231\260\254\377\204" \
+ "\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357" \
+ "\333\343\342\377\3n\204\200\377Slg\377_vr\377\377\333\343\342\377\204" \
+ "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
+ "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\1\243\262\257" \
+ "\377\202Slg\377\1\311\324\322\377\220\333\343\342\377\1\325\336\335\377" \
+ "\202\305\320\316\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\4\327\337\336\377dzv\377Slg\377\220\242\236\377\220\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
+ "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
+ "\311\306\377\360\333\343\342\377\4\307\321\320\377`ws\377Slg\377\240" \
+ "\260\255\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\357\333" \
+ "\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335\377" \
+ "\223\254\247\377\271\311\306\377\361\333\343\342\377\6\307\322\320\377" \
+ "u\211\205\377Slg\377m\202~\377\246\265\262\377\321\333\331\377\214\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
+ "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
+ "\311\306\377\362\333\343\342\377\2\332\342\341\377\213\235\231\377\203" \
+ "Slg\377\3Xpk\377f}x\377s\210\203\377\211t\211\205\377\1l\201}\377\202" \
+ "Slg\377\357\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3" \
+ "\326\337\335\377\223\254\247\377\271\311\306\377\361\333\343\342\377" \
+ "\2\265\302\300\377i\177{\377\223Slg\377\357\333\343\342\377\202\231\260" \
+ "\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271\311" \
+ "\306\377\360\333\343\342\377\2\255\272\270\377Uni\377\224Slg\377\357" \
+ "\333\343\342\377\202\231\260\254\377\204\377\377\377\377\3\326\337\335" \
+ "\377\223\254\247\377\271\311\306\377\357\333\343\342\377\2\316\327\326" \
+ "\377Wpk\377\225Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\1\220\241\236\377\203Slg\377\5Woj\377\205\227\224\377\254" \
+ "\271\267\377\270\304\302\377\304\316\315\377\213\311\324\322\377\1\254" \
+ "\271\267\377\202Slg\377\357\333\343\342\377\202\231\260\254\377\204\377" \
+ "\377\377\377\3\326\337\335\377\223\254\247\377\271\311\306\377\357\333" \
+ "\343\342\377\1i\177{\377\202Slg\377\2dzv\377\316\327\326\377\217\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\357\333\343\342\377\202\231" \
+ "\260\254\377\204\377\377\377\377\3\326\337\335\377\223\254\247\377\271" \
+ "\311\306\377\356\333\343\342\377\2\331\342\341\377Voj\377\202Slg\377" \
+ "\1\273\307\305\377\220\333\343\342\377\1\270\305\303\377\202Slg\377\357" \
+ "\333\343\342\377\3\241\267\262\377\223\254\247\377\363\366\365\377\203" \
+ "\377\377\377\377\3\304\321\317\377\223\254\247\377\301\317\314\377\356" \
+ "\333\343\342\377\1\324\335\334\377\202Slg\377\2Xpk\377\331\342\341\377" \
+ "\220\333\343\342\377\1\311\324\322\377\202\226\247\244\377\357\333\343" \
+ "\342\377\3\264\305\302\377\223\254\247\377\326\337\335\377\203\377\377" \
+ "\377\377\3\246\273\267\377\223\254\247\377\324\335\334\377\357\333\343" \
+ "\342\377\3_vr\377Slg\377i\177{\377\377\333\343\342\377\202\333\343\342" \
+ "\377\5\317\332\331\377\257\301\276\377\217\251\244\377\223\254\247\377" \
+ "\270\310\305\377\202\377\377\377\377\6\365\367\367\377\223\254\247\377" \
+ "\217\251\244\377\234\263\257\377\275\314\312\377\330\341\340\377\355" \
+ "\333\343\342\377\4\177\222\217\377Slg\377Vni\377\327\337\336\377\376" \
+ "\333\343\342\377\2\277\316\313\377\207\243\236\377\203o\221\212\377\7" \
+ "\221\253\246\377\233\262\256\377\376\376\376\377\377\377\377\377\330" \
+ "\341\337\377\223\254\247\377\202\237\231\377\202o\221\212\377\3t\225" \
+ "\216\377\234\263\257\377\322\334\333\377\353\333\343\342\377\1\277\313" \
+ "\311\377\202Slg\377\1\273\307\305\377\220\333\343\342\377\1\307\322\320" \
+ "\377\202\216\237\234\377\351\333\343\342\377\2\310\325\323\377\216\251" \
+ "\243\377\204o\221\212\377\10v\226\220\377\221\252\245\377\223\254\247" \
+ "\377\324\336\334\377\340\347\346\377\262\304\300\377\223\254\247\377" \
+ "\210\244\237\377\204o\221\212\377\3u\225\217\377\250\274\270\377\327" \
+ "\340\337\377\352\333\343\342\377\4\226\246\243\377Slg\377h\177z\377\321" \
+ "\333\331\377\217\333\343\342\377\1\270\305\303\377\202Slg\377\350\333" \
+ "\343\342\377\2\264\305\302\377q\223\214\377\202o\221\212\377\5q\223\214" \
+ "\377\233\263\256\377\300\317\314\377\331\342\340\377\273\312\307\377" \
+ "\204\223\254\247\377\5\225\255\250\377\330\341\337\377\321\333\332\377" \
+ "\261\303\277\377\206\243\235\377\203o\221\212\377\2\205\242\234\377\317" \
+ "\332\331\377\352\333\343\342\377\4\230\250\245\377Tmh\377q\206\202\377" \
+ "\276\311\307\377\216\333\343\342\377\1\270\305\303\377\202Slg\377\346" \
+ "\333\343\342\377\2\332\342\341\377\241\267\263\377\203o\221\212\377\2" \
+ "\227\257\253\377\315\331\327\377\203\333\343\342\377\1\321\333\332\377" \
+ "\204\262\303\300\377\1\272\312\307\377\204\333\343\342\377\2\270\310" \
+ "\306\377\177\235\227\377\202o\221\212\377\2z\231\222\377\304\322\320" \
+ "\377\347\333\343\342\377\1\317\330\327\377\202\301\314\312\377\10\247" \
+ "\266\263\377^vq\377Slg\377o\204\200\377\232\252\247\377\247\266\263\377" \
+ "\264\301\277\377\277\313\311\377\211\301\314\312\377\1\245\264\261\377" \
+ "\202Slg\377\346\333\343\342\377\1\236\265\260\377\202o\221\212\377\2" \
+ "t\225\216\377\273\313\310\377\220\333\343\342\377\2\327\340\337\377\225" \
+ "\256\251\377\202o\221\212\377\2t\225\216\377\310\325\323\377\346\333" \
+ "\343\342\377\1\233\253\250\377\226Slg\377\345\333\343\342\377\1\261\303" \
+ "\277\377\202o\221\212\377\2|\233\225\377\311\325\323\377\223\333\343" \
+ "\342\377\1\247\273\267\377\202o\221\212\377\2|\233\225\377\322\334\333" \
+ "\377\345\333\343\342\377\1\233\253\250\377\226Slg\377\344\333\343\342" \
+ "\377\5\304\321\317\377q\222\213\377o\221\212\377u\226\217\377\312\326" \
+ "\324\377\225\333\343\342\377\1\242\270\264\377\202o\221\212\377\2\211" \
+ "\244\237\377\332\342\341\377\344\333\343\342\377\1\233\253\250\377\226" \
+ "Slg\377\344\333\343\342\377\4\207\243\236\377o\221\212\377p\222\213\377" \
+ "\275\314\312\377\226\333\343\342\377\2\332\342\341\377\220\252\245\377" \
+ "\202o\221\212\377\1\264\305\302\377\344\333\343\342\377\3\233\253\250" \
+ "\377Slg\377\\so\377\221x\215\211\377\1o\204\200\377\202Slg\377\343\333" \
+ "\343\342\377\1\267\310\305\377\202o\221\212\377\1\237\265\261\377\230" \
+ "\333\343\342\377\5\324\336\334\377v\226\220\377o\221\212\377|\233\225" \
+ "\377\330\341\337\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211" \
+ "\205\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343" \
+ "\342\377\5\332\342\341\377~\234\226\377o\221\212\377t\225\216\377\322" \
+ "\334\333\377\231\333\343\342\377\1\251\275\271\377\202o\221\212\377\1" \
+ "\255\300\275\377\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205" \
+ "\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342" \
+ "\377\1\304\321\317\377\202o\221\212\377\1\245\272\266\377\232\333\343" \
+ "\342\377\4\327\340\337\377y\231\222\377o\221\212\377\207\243\236\377" \
+ "\343\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343" \
+ "\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\1\243\270\264" \
+ "\377\202o\221\212\377\1\314\327\325\377\233\333\343\342\377\1\234\263" \
+ "\257\377\202o\221\212\377\1\321\333\332\377\342\333\343\342\377\3\277" \
+ "\312\310\377\237\256\253\377\256\273\271\377\221\333\343\342\377\1\323" \
+ "\334\333\377\202\275\310\306\377\342\333\343\342\377\3\202\237\231\377" \
+ "o\221\212\377\201\236\230\377\234\333\343\342\377\1\276\315\312\377\202" \
+ "o\221\212\377\1\261\303\300\377\377\333\343\342\377\333\333\343\342\377" \
+ "\1\330\341\340\377\202o\221\212\377\1\234\263\256\377\234\333\343\342" \
+ "\377\1\330\341\337\377\202o\221\212\377\1\234\263\257\377\377\333\343" \
+ "\342\377\333\333\343\342\377\1\317\332\330\377\202o\221\212\377\1\250" \
+ "\274\270\377\235\333\343\342\377\3y\230\222\377o\221\212\377\222\254" \
+ "\246\377\377\333\343\342\377\333\333\343\342\377\1\304\322\320\377\202" \
+ "o\221\212\377\1\264\306\302\377\235\333\343\342\377\3\205\242\234\377" \
+ "o\221\212\377\207\243\236\377\350\333\343\342\377\13\327\340\337\377" \
+ "\267\303\301\377\225\246\243\377{\217\213\377p\205\201\377f}x\377k\201" \
+ "}\377u\211\205\377\205\227\224\377\245\263\261\377\310\323\321\377\347" \
+ "\333\343\342\377\1\275\314\312\377\202o\221\212\377\1\274\314\311\377" \
+ "\235\333\343\342\377\3\215\250\242\377o\221\212\377\200\236\230\377\346" \
+ "\333\343\342\377\3\324\334\333\377\231\251\246\377_wr\377\212Slg\377" \
+ "\2x\215\211\377\270\304\302\377\345\333\343\342\377\1\306\323\321\377" \
+ "\202o\221\212\377\1\263\304\301\377\235\333\343\342\377\3\203\240\232" \
+ "\377o\221\212\377\211\244\237\377\345\333\343\342\377\2\300\314\312\377" \
+ "f|x\377\216Slg\377\2\216\240\235\377\330\340\337\377\343\333\343\342" \
+ "\377\1\320\333\331\377\202o\221\212\377\1\247\273\267\377\235\333\343" \
+ "\342\377\3w\227\221\377o\221\212\377\223\254\250\377\344\333\343\342" \
+ "\377\2\273\307\305\377Woj\377\220Slg\377\2y\216\212\377\330\341\340\377" \
+ "\342\333\343\342\377\4\331\342\340\377p\221\213\377o\221\212\377\231" \
+ "\261\254\377\234\333\343\342\377\1\326\337\336\377\202o\221\212\377\1" \
+ "\236\265\260\377\331\333\343\342\377\3\272\306\304\377\231\251\246\377" \
+ "\310\322\321\377\207\333\343\342\377\2\310\322\321\377\\to\377\205Sl" \
+ "g\377\7Woj\377dzv\377q\206\202\377}\221\215\377w\214\210\377k\201|\377" \
+ "]up\377\206Slg\377\1\211\233\230\377\343\333\343\342\377\3\206\242\234" \
+ "\377o\221\212\377|\233\225\377\234\333\343\342\377\1\271\311\306\377" \
+ "\202o\221\212\377\1\265\306\303\377\330\333\343\342\377\1\222\243\240" \
+ "\377\203Slg\377\1\271\306\304\377\206\333\343\342\377\1|\217\214\377" \
+ "\203Slg\377\3dzv\377\231\252\247\377\314\326\324\377\207\333\343\342" \
+ "\377\4\330\340\337\377\267\304\302\377\201\224\220\377Vni\377\203Slg" \
+ "\377\1\274\307\306\377\342\333\343\342\377\1\247\274\270\377\202o\221" \
+ "\212\377\1\307\323\321\377\233\333\343\342\377\4\227\257\253\377o\221" \
+ "\212\377q\222\213\377\324\336\334\377\327\333\343\342\377\2\325\335\334" \
+ "\377Zrm\377\203Slg\377\1\205\227\224\377\205\333\343\342\377\1\275\310" \
+ "\306\377\202Slg\377\3Umh\377\251\270\265\377\331\342\341\377\214\333" \
+ "\343\342\377\2\317\331\327\377y\216\212\377\202Slg\377\1t\211\205\377" \
+ "\342\333\343\342\377\1\310\325\323\377\202o\221\212\377\1\237\265\261" \
+ "\377\232\333\343\342\377\4\325\336\335\377v\226\217\377o\221\212\377" \
+ "\213\246\241\377\330\333\343\342\377\2\331\341\340\377czu\377\203Slg" \
+ "\377\1\221\243\237\377\205\333\343\342\377\4\220\241\236\377Slg\377T" \
+ "lg\377\253\271\267\377\217\333\343\342\377\2\326\336\335\377s\210\204" \
+ "\377\202Slg\377\1\317\331\327\377\342\333\343\342\377\4\203\240\232\377" \
+ "o\221\212\377r\223\214\377\317\331\330\377\205\333\343\342\377\2\305" \
+ "\322\320\377\322\334\332\377\212\333\343\342\377\3\332\342\341\377\305" \
+ "\322\320\377\322\334\333\377\205\333\343\342\377\1\243\270\264\377\202" \
+ "o\221\212\377\1\262\304\301\377\331\333\343\342\377\5\250\266\264\377" \
+ "Yql\377Slg\377f|x\377\310\322\321\377\205\333\343\342\377\3k\201}\377" \
+ "Slg\377\212\234\231\377\221\333\343\342\377\4\321\332\331\377Tmh\377" \
+ "Slg\377\253\271\267\377\342\333\343\342\377\1\276\315\312\377\202o\221" \
+ "\212\377\1\227\257\253\377\204\333\343\342\377\6\327\340\337\377\227" \
+ "\257\252\377\223\254\247\377\251\275\271\377\307\324\322\377\332\342" \
+ "\341\377\205\333\343\342\377\5\325\337\335\377\272\311\307\377\234\263" \
+ "\256\377\223\254\247\377\263\304\301\377\204\333\343\342\377\5\317\332" \
+ "\331\377s\224\215\377o\221\212\377\201\236\230\377\331\342\340\377\332" \
+ "\333\343\342\377\3\324\334\333\377\274\307\306\377\332\342\341\377\206" \
+ "\333\343\342\377\3Xql\377Slg\377\255\272\270\377\222\333\343\342\377" \
+ "\3m\202~\377Slg\377\230\251\246\377\343\333\343\342\377\1\216\250\243" \
+ "\377\202o\221\212\377\1\264\305\302\377\203\333\343\342\377\3\275\314" \
+ "\312\377\223\254\247\377\225\255\250\377\202\223\254\247\377\7\236\264" \
+ "\260\377\273\313\310\377\327\337\336\377\333\343\342\377\315\330\326" \
+ "\377\256\301\275\377\225\255\251\377\202\223\254\247\377\3\224\254\250" \
+ "\377\227\257\252\377\330\341\337\377\202\333\343\342\377\2\330\341\337" \
+ "\377\207\243\236\377\202o\221\212\377\1\273\312\310\377\343\333\343\342" \
+ "\377\1\324\335\334\377\202Slg\377\1\314\326\324\377\222\333\343\342\377" \
+ "\3\214\236\233\377Slg\377\214\235\232\377\343\333\343\342\377\5\312\326" \
+ "\324\377t\225\216\377o\221\212\377q\223\214\377\303\320\316\377\202\333" \
+ "\343\342\377\5\237\265\261\377\223\254\247\377\347\355\354\377\335\344" \
+ "\343\377\257\301\276\377\202\223\254\247\377\2\250\274\270\377\321\334" \
+ "\332\377\202\223\254\247\377\6\231\261\254\377\303\321\316\377\360\363" \
+ "\363\377\271\311\306\377\223\254\247\377\277\315\313\377\202\333\343" \
+ "\342\377\1\227\257\252\377\202o\221\212\377\1\222\254\246\377\344\333" \
+ "\343\342\377\1\325\335\334\377\202Slg\377\1\313\325\323\377\222\333\343" \
+ "\342\377\3\213\235\231\377Slg\377\214\236\233\377\344\333\343\342\377" \
+ "\1\273\312\310\377\202o\221\212\377\5v\226\220\377\277\316\313\377\311" \
+ "\325\323\377\223\254\247\377\251\275\271\377\203\377\377\377\377\7\355" \
+ "\361\360\377\227\257\253\377\226\256\251\377\273\312\307\377\223\254" \
+ "\247\377\271\311\306\377\372\373\373\377\202\377\377\377\377\5\346\354" \
+ "\353\377\223\254\247\377\240\266\262\377\330\341\340\377\232\261\255" \
+ "\377\202o\221\212\377\2\203\240\232\377\326\337\336\377\334\333\343\342" \
+ "\377\3\322\333\332\377\267\303\301\377\331\341\340\377\206\333\343\342" \
+ "\377\3Yql\377Slg\377\253\271\267\377\222\333\343\342\377\3k\201}\377" \
+ "Slg\377\231\251\246\377\345\333\343\342\377\1\252\276\272\377\202o\221" \
+ "\212\377\4p\222\213\377\234\263\256\377\223\254\247\377\327\340\336\377" \
+ "\203\377\377\377\377\2\344\352\351\377\232\261\254\377\202\223\254\247" \
+ "\377\3\224\255\250\377\262\303\300\377\371\372\372\377\203\377\377\377" \
+ "\377\3\250\274\270\377\223\254\247\377\214\246\241\377\202o\221\212\377" \
+ "\2y\231\222\377\317\331\330\377\334\333\343\342\377\5\247\266\263\377" \
+ "Xql\377Slg\377`ws\377\305\320\316\377\205\333\343\342\377\3l\201}\377" \
+ "Slg\377\210\233\227\377\221\333\343\342\377\4\317\331\327\377Tlg\377" \
+ "Slg\377\254\271\267\377\346\333\343\342\377\6\257\301\276\377p\222\213" \
+ "\377r\223\214\377\222\253\246\377\233\262\256\377\374\374\374\377\202" \
+ "\377\377\377\377\11\316\331\327\377\223\254\247\377\252\275\272\377\320" \
+ "\333\331\377\332\343\341\377\305\323\320\377\227\257\253\377\237\265" \
+ "\261\377\362\365\364\377\202\377\377\377\377\6\325\337\335\377\223\254" \
+ "\247\377\206\242\234\377o\221\212\377\202\237\231\377\315\330\326\377" \
+ "\334\333\343\342\377\2\331\341\340\377czu\377\203Slg\377\1\217\241\235" \
+ "\377\205\333\343\342\377\1\221\243\237\377\202Slg\377\1\251\267\265\377" \
+ "\217\333\343\342\377\5\325\335\334\377p\206\202\377Slg\377Tlg\377\320" \
+ "\331\330\377\347\333\343\342\377\4\277\316\313\377\204\241\233\377\223" \
+ "\254\247\377\306\323\320\377\202\377\377\377\377\4\352\357\356\377\225" \
+ "\255\250\377\300\317\314\377\376\376\376\377\203\377\377\377\377\12\361" \
+ "\364\363\377\236\264\260\377\257\302\276\377\376\376\376\377\377\377" \
+ "\377\377\373\374\373\377\232\261\254\377\222\253\246\377\217\251\244" \
+ "\377\325\337\335\377\335\333\343\342\377\2\325\336\335\377[sn\377\203" \
+ "Slg\377\1\206\231\225\377\205\333\343\342\377\1\276\312\310\377\202S" \
+ "lg\377\3Umh\377\251\267\265\377\331\342\341\377\214\333\343\342\377\2" \
+ "\315\326\325\377v\213\207\377\202Slg\377\1v\213\207\377\350\333\343\342" \
+ "\377\4\331\341\340\377\230\260\253\377\224\254\247\377\362\365\364\377" \
+ "\202\377\377\377\377\3\272\312\307\377\243\270\264\377\374\375\375\377" \
+ "\205\377\377\377\377\3\335\345\343\377\223\254\247\377\352\357\356\377" \
+ "\202\377\377\377\377\3\304\321\317\377\223\254\247\377\267\307\304\377" \
+ "\337\333\343\342\377\1\223\244\240\377\202Slg\377\2Umh\377\275\310\306" \
+ "\377\206\333\343\342\377\1~\222\216\377\203Slg\377\4czu\377\227\247\244" \
+ "\377\310\322\321\377\331\341\340\377\206\333\343\342\377\4\325\335\334" \
+ "\377\263\300\276\377}\220\215\377Tmh\377\203Slg\377\1\277\312\310\377" \
+ "\350\333\343\342\377\3\302\320\315\377\223\254\247\377\264\305\302\377" \
+ "\203\377\377\377\377\2\243\271\264\377\277\316\313\377\206\377\377\377" \
+ "\377\3\373\374\373\377\224\255\250\377\322\335\333\377\202\377\377\377" \
+ "\377\4\360\363\363\377\223\254\247\377\232\262\255\377\332\342\341\377" \
+ "\337\333\343\342\377\3\274\310\306\377\236\255\253\377\315\327\325\377" \
+ "\207\333\343\342\377\2\311\324\322\377^uq\377\205Slg\377\7Tmh\377_wr" \
+ "\377m\202~\377y\215\211\377s\210\204\377f}x\377Yql\377\206Slg\377\1\217" \
+ "\240\235\377\351\333\343\342\377\3\244\271\265\377\223\254\247\377\342" \
+ "\350\347\377\203\377\377\377\377\2\240\266\262\377\302\320\315\377\206" \
+ "\377\377\377\377\3\374\375\375\377\225\255\251\377\317\332\330\377\203" \
+ "\377\377\377\377\3\262\304\300\377\223\254\247\377\303\321\317\377\352" \
+ "\333\343\342\377\2\275\311\307\377Xql\377\220Slg\377\2}\221\215\377\331" \
+ "\342\341\377\350\333\343\342\377\4\316\331\327\377\223\254\247\377\243" \
+ "\270\264\377\376\376\376\377\203\377\377\377\377\2\267\307\304\377\250" \
+ "\274\270\377\206\377\377\377\377\3\345\353\351\377\223\254\247\377\346" \
+ "\354\353\377\203\377\377\377\377\3\340\347\345\377\223\254\247\377\245" \
+ "\272\266\377\353\333\343\342\377\2\303\316\314\377h\177z\377\215Slg\377" \
+ "\3Tlg\377\225\245\242\377\331\341\340\377\351\333\343\342\377\3\257\302" \
+ "\276\377\223\254\247\377\320\333\331\377\204\377\377\377\377\3\340\347" \
+ "\346\377\223\254\247\377\317\332\330\377\204\377\377\377\377\4\371\372" \
+ "\372\377\245\272\266\377\246\272\266\377\374\375\375\377\203\377\377" \
+ "\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377\317\331\330" \
+ "\377\353\333\343\342\377\3\325\335\334\377\235\255\252\377czu\377\211" \
+ "Slg\377\3Tlg\377\177\222\217\377\277\312\310\377\352\333\343\342\377" \
+ "\4\326\337\336\377\225\256\251\377\227\257\253\377\371\372\372\377\205" \
+ "\377\377\377\377\11\277\316\313\377\223\254\247\377\272\312\307\377\341" \
+ "\350\346\377\353\360\357\377\326\340\336\377\240\266\261\377\227\257" \
+ "\252\377\352\357\356\377\205\377\377\377\377\3\316\331\327\377\223\254" \
+ "\247\377\260\302\277\377\355\333\343\342\377\13\330\341\340\377\273\307" \
+ "\305\377\231\252\247\377\177\222\217\377t\211\205\377k\201|\377o\205" \
+ "\201\377y\215\211\377\211\233\230\377\251\267\265\377\314\326\324\377" \
+ "\354\333\343\342\377\3\273\312\310\377\223\254\247\377\277\316\313\377" \
+ "\207\377\377\377\377\2\315\330\327\377\224\255\250\377\203\223\254\247" \
+ "\377\2\235\263\257\377\360\363\362\377\206\377\377\377\377\4\370\371" \
+ "\371\377\227\257\252\377\226\256\252\377\327\340\336\377\377\333\343" \
+ "\342\377\343\333\343\342\377\4\332\342\341\377\235\263\257\377\223\254" \
+ "\247\377\354\361\360\377\207\377\377\377\377\7\310\325\322\377\223\254" \
+ "\247\377\262\303\300\377\307\323\321\377\231\260\253\377\225\255\251" \
+ "\377\365\367\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247" \
+ "\377\274\313\311\377\346\333\343\342\377\1\316\327\326\377\205\301\314" \
+ "\312\377\1\327\340\337\377\365\333\343\342\377\3\306\323\321\377\223" \
+ "\254\247\377\256\300\275\377\207\377\377\377\377\10\374\375\375\377\235" \
+ "\264\257\377\224\255\250\377\324\336\334\377\333\343\342\377\266\307" \
+ "\304\377\223\254\247\377\312\326\324\377\207\377\377\377\377\3\353\357" \
+ "\356\377\223\254\247\377\236\264\260\377\346\333\343\342\377\1\204\227" \
+ "\223\377\205Slg\377\1\311\324\322\377\365\333\343\342\377\3\250\274\270" \
+ "\377\223\254\247\377\335\345\344\377\207\377\377\377\377\3\332\342\340" \
+ "\377\223\254\247\377\254\277\274\377\202\333\343\342\377\4\323\335\334" \
+ "\377\224\255\250\377\236\265\260\377\375\376\375\377\207\377\377\377" \
+ "\377\3\256\301\275\377\223\254\247\377\310\324\322\377\345\333\343\342" \
+ "\377\1i\177{\377\205Slg\377\1\311\324\322\377\364\333\343\342\377\4\321" \
+ "\334\332\377\223\254\247\377\240\265\261\377\376\376\376\377\207\377" \
+ "\377\377\377\3\254\277\274\377\223\254\247\377\312\326\324\377\203\333" \
+ "\343\342\377\3\253\276\272\377\223\254\247\377\334\344\342\377\207\377" \
+ "\377\377\377\3\333\343\342\377\223\254\247\377\251\275\271\377\345\333" \
+ "\343\342\377\1Vni\377\202Slg\377\4Yrm\377\234\253\251\377\302\315\313" \
+ "\377\331\342\341\377\364\333\343\342\377\3\264\305\302\377\223\254\247" \
+ "\377\314\330\325\377\207\377\377\377\377\3\353\360\357\377\223\254\247" \
+ "\377\241\266\262\377\204\333\343\342\377\3\311\325\323\377\223\254\247" \
+ "\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377\236\265\260" \
+ "\377\223\254\247\377\322\334\333\377\343\333\343\342\377\1\324\334\333" \
+ "\377\203Slg\377\1\261\277\274\377\366\333\343\342\377\4\330\341\340\377" \
+ "\230\260\253\377\225\256\251\377\366\370\370\377\207\377\377\377\377" \
+ "\3\276\315\312\377\223\254\247\377\277\315\313\377\205\333\343\342\377" \
+ "\3\237\265\261\377\223\254\247\377\355\361\360\377\207\377\377\377\377" \
+ "\3\312\326\324\377\223\254\247\377\265\306\303\377\343\333\343\342\377" \
+ "\1\326\337\336\377\202Slg\377\1]up\377\367\333\343\342\377\3\277\316" \
+ "\313\377\223\254\247\377\272\312\307\377\207\377\377\377\377\4\370\371" \
+ "\371\377\227\257\252\377\230\257\253\377\330\341\337\377\205\333\343" \
+ "\342\377\3\275\314\312\377\223\254\247\377\277\316\313\377\207\377\377" \
+ "\377\377\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340" \
+ "\377\343\333\343\342\377\3`ws\377Slg\377i\200{\377\367\333\343\342\377" \
+ "\3\241\267\263\377\223\254\247\377\350\355\354\377\207\377\377\377\377" \
+ "\3\317\332\330\377\223\254\247\377\263\305\301\377\206\333\343\342\377" \
+ "\4\327\340\337\377\227\257\252\377\230\260\253\377\371\372\372\377\207" \
+ "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\314\377\343" \
+ "\333\343\342\377\4y\215\211\377Slg\377Vni\377\327\340\337\377\220\333" \
+ "\343\342\377\1\324\335\334\377\202\301\314\312\377\342\333\343\342\377" \
+ "\3\313\327\325\377\223\254\247\377\251\275\271\377\207\377\377\377\377" \
+ "\4\376\376\376\377\242\267\263\377\223\254\247\377\321\333\332\377\207" \
+ "\333\343\342\377\3\262\303\300\377\223\254\247\377\321\334\332\377\207" \
+ "\377\377\377\377\3\346\354\352\377\223\254\247\377\242\270\263\377\343" \
+ "\333\343\342\377\1\260\276\273\377\202Slg\377\1\300\313\311\377\220\333" \
+ "\343\342\377\1\270\305\303\377\202Slg\377\342\333\343\342\377\3\255\300" \
+ "\274\377\223\254\247\377\327\340\336\377\207\377\377\377\377\3\340\347" \
+ "\346\377\223\254\247\377\247\273\270\377\210\333\343\342\377\3\320\332" \
+ "\331\377\223\254\247\377\244\271\265\377\210\377\377\377\377\3\247\273" \
+ "\267\377\223\254\247\377\314\330\326\377\342\333\343\342\377\5\331\342" \
+ "\341\377o\205\201\377Slg\377x\215\211\377\331\342\341\377\217\333\343" \
+ "\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377\4\325\336\335" \
+ "\377\225\255\250\377\233\262\255\377\374\374\374\377\207\377\377\377" \
+ "\377\3\263\305\301\377\223\254\247\377\306\323\321\377\211\333\343\342" \
+ "\377\3\246\273\267\377\223\254\247\377\343\351\350\377\207\377\377\377" \
+ "\377\3\325\336\334\377\223\254\247\377\256\300\275\377\343\333\343\342" \
+ "\377\5\316\330\326\377dzv\377Slg\377\220\241\236\377\332\342\341\377" \
+ "\216\333\343\342\377\1\270\305\303\377\202Slg\377\341\333\343\342\377" \
+ "\3\270\310\306\377\223\254\247\377\305\323\320\377\207\377\377\377\377" \
+ "\4\361\364\363\377\223\254\247\377\234\263\257\377\332\342\341\377\211" \
+ "\333\343\342\377\3\304\322\317\377\223\254\247\377\265\306\302\377\207" \
+ "\377\377\377\377\4\373\374\373\377\232\261\254\377\225\255\251\377\325" \
+ "\337\335\377\343\333\343\342\377\6\316\327\326\377\200\224\220\377Sl" \
+ "g\377h~z\377\246\265\262\377\326\336\335\377\214\333\343\342\377\1\270" \
+ "\305\303\377\202Slg\377\340\333\343\342\377\4\332\342\341\377\233\262" \
+ "\255\377\223\254\247\377\361\364\364\377\207\377\377\377\377\3\304\322" \
+ "\317\377\223\254\247\377\272\312\307\377\212\333\343\342\377\4\332\342" \
+ "\341\377\233\262\256\377\224\254\247\377\362\365\364\377\207\377\377" \
+ "\377\377\3\303\321\316\377\223\254\247\377\272\311\307\377\341\333\343" \
+ "\342\377\1\257\274\272\377\203}\220\215\377\1^vq\377\203Slg\377\3^vq" \
+ "\377n\203\177\377{\217\213\377\211}\220\215\377\1r\207\203\377\202Sl" \
+ "g\377\340\333\343\342\377\3\304\321\317\377\223\254\247\377\264\305\301" \
+ "\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225\256\251" \
+ "\377\326\337\336\377\213\333\343\342\377\3\271\311\306\377\223\254\247" \
+ "\377\307\324\321\377\207\377\377\377\377\4\360\363\362\377\223\254\247" \
+ "\377\234\263\256\377\332\342\341\377\340\333\343\342\377\1\233\253\250" \
+ "\377\226Slg\377\340\333\343\342\377\3\246\272\266\377\223\254\247\377" \
+ "\341\350\347\377\207\377\377\377\377\3\326\337\335\377\223\254\247\377" \
+ "\256\301\275\377\214\333\343\342\377\4\325\336\335\377\225\255\250\377" \
+ "\234\263\256\377\374\375\374\377\207\377\377\377\377\3\262\304\300\377" \
+ "\223\254\247\377\305\322\320\377\340\333\343\342\377\1\233\253\250\377" \
+ "\226Slg\377\337\333\343\342\377\4\317\332\330\377\223\254\247\377\242" \
+ "\270\263\377\376\376\376\377\207\377\377\377\377\3\251\274\270\377\223" \
+ "\254\247\377\315\330\326\377\215\333\343\342\377\3\255\300\274\377\223" \
+ "\254\247\377\330\341\337\377\207\377\377\377\377\3\337\346\345\377\223" \
+ "\254\247\377\247\273\267\377\340\333\343\342\377\1\233\253\250\377\226" \
+ "Slg\377\337\333\343\342\377\3\261\303\300\377\223\254\247\377\320\333" \
+ "\331\377\207\377\377\377\377\3\347\355\354\377\223\254\247\377\243\270" \
+ "\264\377\216\333\343\342\377\3\314\327\325\377\223\254\247\377\252\276" \
+ "\272\377\207\377\377\377\377\4\376\376\376\377\241\267\262\377\223\254" \
+ "\247\377\320\333\331\377\337\333\343\342\377\3\233\253\250\377Slg\377" \
+ "m\202~\377\221\275\310\306\377\1\242\261\256\377\202Slg\377\336\333\343" \
+ "\342\377\1\327\340\337\377\202\227\257\252\377\1\370\372\371\377\207" \
+ "\377\377\377\377\3\272\312\307\377\223\254\247\377\301\317\315\377\217" \
+ "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
+ "\377\377\377\377\3\316\331\327\377\223\254\247\377\263\304\301\377\337" \
+ "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\275\314\311\377" \
+ "\223\254\247\377\277\315\312\377\207\377\377\377\377\4\366\370\367\377" \
+ "\225\256\251\377\231\260\254\377\331\341\340\377\217\333\343\342\377" \
+ "\3\300\316\314\377\223\254\247\377\274\313\310\377\207\377\377\377\377" \
+ "\4\367\371\371\377\226\256\252\377\227\257\252\377\330\340\337\377\336" \
+ "\333\343\342\377\3\233\253\250\377Slg\377t\211\205\377\221\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\336\333\343\342\377\3\237\265\260\377" \
+ "\223\254\247\377\354\360\357\377\207\377\377\377\377\3\313\327\325\377" \
+ "\223\254\247\377\266\306\303\377\220\333\343\342\377\4\331\341\340\377" \
+ "\230\260\253\377\226\256\252\377\367\371\370\377\207\377\377\377\377" \
+ "\3\274\314\311\377\223\254\247\377\276\315\312\377\336\333\343\342\377" \
+ "\3\237\256\253\377[sn\377{\217\213\377\221\333\343\342\377\1\302\315" \
+ "\313\377\202x\215\211\377\335\333\343\342\377\3\310\325\323\377\223\254" \
+ "\247\377\255\300\274\377\207\377\377\377\377\4\375\376\375\377\237\265" \
+ "\261\377\224\254\247\377\323\334\333\377\221\333\343\342\377\3\264\305" \
+ "\302\377\223\254\247\377\315\331\326\377\207\377\377\377\377\3\352\357" \
+ "\356\377\223\254\247\377\240\266\261\377\377\333\343\342\377\323\333" \
+ "\343\342\377\3\252\276\272\377\223\254\247\377\333\343\341\377\207\377" \
+ "\377\377\377\3\335\344\343\377\223\254\247\377\252\275\272\377\222\333" \
+ "\343\342\377\4\322\334\332\377\223\254\247\377\241\266\262\377\376\376" \
+ "\376\377\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326" \
+ "\324\377\356\333\343\342\377\1\331\342\341\377\341\333\343\342\377\4" \
+ "\323\335\333\377\224\254\247\377\235\264\257\377\375\375\375\377\207" \
+ "\377\377\377\377\3\257\302\276\377\223\254\247\377\310\324\322\377\207" \
+ "\333\343\342\377\4\327\340\337\377\264\305\302\377\260\302\277\377\305" \
+ "\321\317\377\210\333\343\342\377\3\251\274\271\377\223\254\247\377\337" \
+ "\346\345\377\207\377\377\377\377\3\330\341\337\377\223\254\247\377\253" \
+ "\276\273\377\356\333\343\342\377\5\264\301\277\377^uq\377w\214\210\377" \
+ "\236\255\253\377\330\341\340\377\335\333\343\342\377\3\266\306\303\377" \
+ "\223\254\247\377\311\325\323\377\207\377\377\377\377\3\356\362\361\377" \
+ "\223\254\247\377\236\265\260\377\210\333\343\342\377\5\251\275\272\377" \
+ "\226\256\251\377\240\266\261\377\222\253\246\377\316\331\330\377\207" \
+ "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\300\377\207" \
+ "\377\377\377\377\4\374\375\374\377\234\263\256\377\224\255\250\377\324" \
+ "\335\334\377\334\333\343\342\377\3\241\260\255\377_vr\377z\216\212\377" \
+ "\216\333\343\342\377\1\264\301\277\377\203Slg\377\2m\202~\377\312\324" \
+ "\323\377\333\333\343\342\377\4\331\341\340\377\231\261\254\377\225\255" \
+ "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
+ "\247\377\275\314\311\377\207\333\343\342\377\6\331\342\341\377\225\255" \
+ "\250\377\320\333\331\377\374\375\375\377\234\263\256\377\261\303\300" \
+ "\377\207\333\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247" \
+ "\377\360\363\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247" \
+ "\377\267\310\305\377\334\333\343\342\377\3\233\253\250\377Slg\377p\205" \
+ "\201\377\216\333\343\342\377\2\270\305\303\377Woj\377\203Slg\377\1~\221" \
+ "\216\377\333\333\343\342\377\3\301\317\315\377\223\254\247\377\270\310" \
+ "\305\377\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256" \
+ "\252\377\327\340\336\377\207\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\210\333\343\342\377\3\273\313\310\377\223\254\247\377\303\321\316" \
+ "\377\207\377\377\377\377\4\363\365\365\377\224\255\250\377\232\261\255" \
+ "\377\331\342\341\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205" \
+ "\201\377\217\333\343\342\377\3\332\342\341\377\306\321\317\377\206\230" \
+ "\225\377\202Slg\377\1\300\313\311\377\332\333\343\342\377\3\243\270\264" \
+ "\377\223\254\247\377\345\353\352\377\207\377\377\377\377\3\322\335\333" \
+ "\377\223\254\247\377\261\303\277\377\210\333\343\342\377\6\331\340\337" \
+ "\377\223\254\247\377\332\342\341\377\377\377\377\377\251\275\271\377" \
+ "\255\300\275\377\210\333\343\342\377\4\326\337\336\377\226\256\251\377" \
+ "\232\261\254\377\372\373\373\377\207\377\377\377\377\3\266\307\303\377" \
+ "\223\254\247\377\303\320\316\377\333\333\343\342\377\3\233\253\250\377" \
+ "Slg\377p\205\201\377\221\333\343\342\377\4\332\342\341\377q\207\202\377" \
+ "Slg\377\246\264\262\377\331\333\343\342\377\3\315\330\326\377\223\254" \
+ "\247\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254" \
+ "\247\377\317\332\330\377\210\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\211\333\343\342\377\3\260\302\276\377\223\254\247\377\324\336\334" \
+ "\377\207\377\377\377\377\3\343\351\350\377\223\254\247\377\244\271\265" \
+ "\377\333\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\222\333" \
+ "\343\342\377\3\223\244\240\377Slg\377\223\244\240\377\331\333\343\342" \
+ "\377\3\257\301\276\377\223\254\247\377\324\336\334\377\207\377\377\377" \
+ "\377\3\344\352\351\377\223\254\247\377\245\272\266\377\211\333\343\342" \
+ "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
+ "\251\275\271\377\255\300\275\377\211\333\343\342\377\3\316\331\327\377" \
+ "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
+ "\223\254\247\377\316\331\327\377\332\333\343\342\377\3\233\253\250\377" \
+ "Slg\377p\205\201\377\222\333\343\342\377\3\213\235\232\377Slg\377\214" \
+ "\235\232\377\330\333\343\342\377\10\326\337\336\377\225\256\251\377\231" \
+ "\261\254\377\372\373\373\377\354\360\357\377\301\317\315\377\325\337" \
+ "\335\377\373\374\374\377\203\377\377\377\377\3\266\307\303\377\223\254" \
+ "\247\377\303\321\317\377\211\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\212\333\343\342\377\3\244\271\265\377\223\254\247\377\346\353\352" \
+ "\377\203\377\377\377\377\7\356\362\362\377\303\321\316\377\322\334\332" \
+ "\377\372\373\373\377\322\334\332\377\223\254\247\377\260\302\277\377" \
+ "\332\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343" \
+ "\342\377\4\314\325\324\377_wr\377Slg\377\235\254\252\377\306\333\343" \
+ "\342\377\1\203\240\232\377\205r\223\214\377\1w\227\221\377\213\253\276" \
+ "\273\377\16\240\265\262\377\223\254\247\377\302\320\315\377\266\307\304" \
+ "\377\223\254\247\377\233\262\256\377\223\254\247\377\233\262\255\377" \
+ "\346\353\352\377\377\377\377\377\363\366\365\377\224\255\250\377\225" \
+ "\256\251\377\252\275\272\377\211\253\276\273\377\6\252\275\272\377\223" \
+ "\254\247\377\332\342\341\377\377\377\377\377\250\274\270\377\233\262" \
+ "\256\377\212\253\276\273\377\3\242\267\264\377\223\254\247\377\270\310" \
+ "\305\377\202\377\377\377\377\11\275\315\312\377\223\254\247\377\232\262" \
+ "\255\377\224\255\250\377\231\261\254\377\332\344\341\377\230\260\253" \
+ "\377\224\254\250\377\251\275\271\377\212\253\276\273\377\1\227\257\253" \
+ "\377\205r\223\214\377\2s\224\215\377\261\303\300\377\300\333\343\342" \
+ "\377\1\267\304\302\377\206\211\234\230\377\3p\205\201\377Slg\377^vq\377" \
+ "\216\211\234\230\377\4\206\231\225\377\177\223\217\377r\207\203\377T" \
+ "mh\377\202Slg\377\1\257\274\272\377\306\333\343\342\377\1|\233\224\377" \
+ "\221o\221\212\377\15\215\250\242\377\223\254\247\377\335\345\343\377" \
+ "\223\254\247\377\317\332\330\377\375\375\375\377\360\363\363\377\243" \
+ "\270\264\377\265\306\303\377\377\377\377\377\310\325\322\377\223\254" \
+ "\247\377\200\236\227\377\212o\221\212\377\6p\221\212\377\223\254\247" \
+ "\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242\234\377" \
+ "\213o\221\212\377\15\217\251\244\377\224\255\250\377\365\367\367\377" \
+ "\361\364\364\377\224\255\250\377\306\323\321\377\374\375\375\377\363" \
+ "\366\365\377\252\276\272\377\255\300\274\377\300\317\314\377\223\254" \
+ "\247\377~\234\226\377\221o\221\212\377\1\256\301\276\377\300\333\343" \
+ "\342\377\1\237\256\253\377\234Slg\377\2]up\377\321\333\331\377\306\333" \
+ "\343\342\377\1|\233\224\377\220o\221\212\377\6y\230\222\377\223\254\247" \
+ "\377\261\303\277\377\277\316\313\377\235\264\257\377\376\376\376\377" \
+ "\202\377\377\377\377\6\317\332\330\377\224\255\250\377\362\366\365\377" \
+ "\234\263\257\377\222\253\246\377r\223\214\377\212o\221\212\377\6p\221" \
+ "\212\377\223\254\247\377\332\342\341\377\377\377\377\377\247\273\267" \
+ "\377\205\242\234\377\213o\221\212\377\6\201\236\230\377\223\254\247\377" \
+ "\312\326\323\377\310\324\322\377\227\257\252\377\372\373\373\377\202" \
+ "\377\377\377\377\5\331\342\340\377\223\254\247\377\337\346\345\377\223" \
+ "\254\247\377\215\247\242\377\221o\221\212\377\1\256\301\276\377\300\333" \
+ "\343\342\377\1\237\256\253\377\234Slg\377\1\246\265\262\377\307\333\343" \
+ "\342\377\1|\233\224\377\220o\221\212\377\6\210\244\236\377\223\254\247" \
+ "\377\336\346\344\377\320\333\330\377\225\256\251\377\365\367\367\377" \
+ "\202\377\377\377\377\5\275\315\312\377\236\264\260\377\327\341\337\377" \
+ "\223\254\247\377\206\242\234\377\213o\221\212\377\6p\221\212\377\223" \
+ "\254\247\377\332\342\341\377\377\377\377\377\247\273\267\377\205\242" \
+ "\234\377\213o\221\212\377\6r\223\214\377\222\253\246\377\236\264\260" \
+ "\377\327\340\336\377\223\254\247\377\354\360\357\377\202\377\377\377" \
+ "\377\6\310\324\322\377\231\260\253\377\371\373\373\377\257\301\276\377" \
+ "\223\254\247\377x\230\221\377\220o\221\212\377\1\256\301\276\377\300" \
+ "\333\343\342\377\1\237\256\253\377\232Slg\377\2q\207\202\377\267\304" \
+ "\302\377\310\333\343\342\377\1|\233\224\377\217o\221\212\377\16s\224" \
+ "\215\377\222\253\246\377\240\266\262\377\376\376\376\377\371\372\372" \
+ "\377\230\260\253\377\250\274\270\377\326\337\336\377\301\317\315\377" \
+ "\226\256\251\377\310\325\322\377\253\277\273\377\223\254\247\377w\227" \
+ "\220\377\213o\221\212\377\6p\221\212\377\223\254\247\377\332\342\341" \
+ "\377\377\377\377\377\247\273\267\377\205\242\234\377\214o\221\212\377" \
+ "\15\206\242\235\377\223\254\247\377\330\341\340\377\234\263\256\377\245" \
+ "\272\265\377\324\336\334\377\305\322\317\377\230\260\253\377\301\317" \
+ "\314\377\377\377\377\377\334\344\343\377\223\254\247\377\207\243\236" \
+ "\377\220o\221\212\377\1\256\301\276\377\300\333\343\342\377\1\306\321" \
+ "\317\377\206\254\271\267\377\3\202\225\221\377Slg\377f|x\377\216\254" \
+ "\271\267\377\3\263\300\276\377\304\317\315\377\325\335\334\377\312\333" \
+ "\343\342\377\1\255\300\274\377\205\244\271\265\377\1\251\275\271\377" \
+ "\211\333\343\342\377\3\263\305\301\377\223\254\247\377\315\330\326\377" \
+ "\202\377\377\377\377\10\341\350\346\377\257\301\275\377\223\254\247\377" \
+ "\234\263\256\377\306\323\321\377\345\352\351\377\223\254\247\377\241" \
+ "\266\262\377\214\333\343\342\377\6\331\340\337\377\223\254\247\377\332" \
+ "\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\214\333" \
+ "\343\342\377\16\311\325\323\377\223\254\247\377\256\300\275\377\344\352" \
+ "\351\377\262\304\301\377\223\254\247\377\231\261\254\377\303\321\316" \
+ "\377\365\367\367\377\377\377\377\377\375\376\375\377\237\265\260\377" \
+ "\223\254\247\377\322\334\333\377\210\333\343\342\377\1\310\324\322\377" \
+ "\206\244\271\265\377\1\304\322\320\377\307\333\343\342\377\3\233\253" \
+ "\250\377Slg\377p\205\201\377\352\333\343\342\377\4\330\341\337\377\230" \
+ "\257\253\377\226\256\251\377\366\370\370\377\204\377\377\377\377\6\361" \
+ "\364\363\377\374\375\375\377\377\377\377\377\275\314\311\377\223\254" \
+ "\247\377\277\315\313\377\214\333\343\342\377\6\331\340\337\377\223\254" \
+ "\247\377\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275" \
+ "\377\215\333\343\342\377\6\237\265\261\377\223\254\247\377\354\361\360" \
+ "\377\377\377\377\377\362\365\365\377\372\373\373\377\204\377\377\377" \
+ "\377\3\313\327\324\377\223\254\247\377\265\306\302\377\327\333\343\342" \
+ "\377\3\233\253\250\377Slg\377p\205\201\377\352\333\343\342\377\3\277" \
+ "\315\313\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\370" \
+ "\371\371\377\227\257\252\377\230\257\253\377\330\341\337\377\214\333" \
+ "\343\342\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377" \
+ "\377\377\251\275\271\377\255\300\275\377\215\333\343\342\377\3\275\314" \
+ "\312\377\223\254\247\377\277\316\313\377\207\377\377\377\377\4\366\370" \
+ "\367\377\225\256\251\377\230\260\253\377\331\341\340\377\326\333\343" \
+ "\342\377\3\253\271\266\377t\211\205\377\213\235\231\377\352\333\343\342" \
+ "\377\3\241\266\262\377\223\254\247\377\351\356\355\377\207\377\377\377" \
+ "\377\3\317\332\330\377\223\254\247\377\263\305\301\377\215\333\343\342" \
+ "\377\6\331\340\337\377\223\254\247\377\332\342\341\377\377\377\377\377" \
+ "\251\275\271\377\255\300\275\377\215\333\343\342\377\4\327\340\337\377" \
+ "\227\257\252\377\227\257\253\377\371\372\372\377\207\377\377\377\377" \
+ "\3\271\311\306\377\223\254\247\377\300\316\314\377\377\333\343\342\377" \
+ "\303\333\343\342\377\3\312\326\324\377\223\254\247\377\252\275\271\377" \
+ "\207\377\377\377\377\4\376\376\376\377\242\267\263\377\223\254\247\377" \
+ "\321\333\332\377\215\333\343\342\377\6\331\340\337\377\223\254\247\377" \
+ "\332\342\341\377\377\377\377\377\251\275\271\377\255\300\275\377\216" \
+ "\333\343\342\377\3\262\303\300\377\223\254\247\377\320\333\331\377\207" \
+ "\377\377\377\377\3\347\354\353\377\223\254\247\377\242\267\263\377\377" \
+ "\333\343\342\377\303\333\343\342\377\3\254\277\274\377\223\254\247\377" \
+ "\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377" \
+ "\247\273\270\377\216\333\343\342\377\6\331\340\337\377\223\254\247\377" \
+ "\330\341\337\377\377\377\377\377\250\274\270\377\255\300\275\377\216" \
+ "\333\343\342\377\3\320\332\331\377\223\254\247\377\243\271\264\377\210" \
+ "\377\377\377\377\3\250\274\270\377\223\254\247\377\314\327\325\377\377" \
+ "\333\343\342\377\301\333\343\342\377\4\324\336\334\377\224\255\250\377" \
+ "\233\262\256\377\374\374\374\377\207\377\377\377\377\3\263\304\301\377" \
+ "\223\254\247\377\306\323\321\377\217\333\343\342\377\5\237\265\261\377" \
+ "\252\275\271\377\322\334\332\377\223\254\247\377\275\314\311\377\217" \
+ "\333\343\342\377\3\246\273\267\377\223\254\247\377\342\351\347\377\207" \
+ "\377\377\377\377\3\325\337\335\377\223\254\247\377\256\300\275\377\343" \
+ "\333\343\342\377\6\267\303\301\377\223\244\240\377|\220\214\377\213\235" \
+ "\231\377\250\267\264\377\311\323\322\377\327\333\343\342\377\3\270\310" \
+ "\305\377\223\254\247\377\306\323\321\377\207\377\377\377\377\4\361\364" \
+ "\363\377\223\254\247\377\234\263\257\377\332\342\341\377\217\333\343" \
+ "\342\377\1\307\323\321\377\202\223\254\247\377\2\240\265\261\377\332" \
+ "\342\341\377\217\333\343\342\377\3\304\322\317\377\223\254\247\377\264" \
+ "\306\302\377\207\377\377\377\377\4\373\374\374\377\232\262\255\377\225" \
+ "\255\250\377\325\336\335\377\325\333\343\342\377\1\302\315\313\377\204" \
+ "\222\243\240\377\1\253\271\267\377\205\333\343\342\377\2\323\334\333" \
+ "\377\200\223\220\377\205Slg\377\2Uni\377\247\266\263\377\325\333\343" \
+ "\342\377\4\332\342\341\377\233\262\255\377\224\254\247\377\362\365\364" \
+ "\377\207\377\377\377\377\3\304\322\317\377\223\254\247\377\272\312\307" \
+ "\377\221\333\343\342\377\3\327\337\336\377\326\337\335\377\331\340\337" \
+ "\377\220\333\343\342\377\4\332\342\341\377\233\262\256\377\224\254\247" \
+ "\377\362\365\364\377\207\377\377\377\377\3\304\322\317\377\223\254\247" \
+ "\377\271\311\306\377\325\333\343\342\377\1\211\233\230\377\204Slg\377" \
+ "\1\201\224\220\377\205\333\343\342\377\1\200\223\220\377\210Slg\377\1" \
+ "\227\247\244\377\324\333\343\342\377\3\303\321\317\377\223\254\247\377" \
+ "\265\306\302\377\207\377\377\377\377\4\373\374\374\377\232\261\255\377" \
+ "\225\256\251\377\326\337\336\377\245\333\343\342\377\3\271\311\306\377" \
+ "\223\254\247\377\306\323\320\377\207\377\377\377\377\4\361\364\363\377" \
+ "\223\254\247\377\234\262\256\377\332\342\341\377\323\333\343\342\377" \
+ "\2\330\341\340\377]up\377\203Slg\377\2[sn\377\227\247\244\377\204\333" \
+ "\343\342\377\1\247\266\263\377\212Slg\377\1\305\317\316\377\323\333\343" \
+ "\342\377\3\245\272\266\377\223\254\247\377\342\351\347\377\207\377\377" \
+ "\377\377\3\325\337\335\377\223\254\247\377\256\301\275\377\246\333\343" \
+ "\342\377\4\325\336\335\377\225\255\250\377\233\262\256\377\374\374\374" \
+ "\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\305\322\320" \
+ "\377\323\333\343\342\377\1\265\302\300\377\202Slg\377\3]up\377\263\300" \
+ "\275\377\332\342\341\377\205\333\343\342\377\1i\177{\377\203Slg\377\5" \
+ "Yrm\377\233\253\250\377\266\302\300\377\246\264\262\377x\214\210\377" \
+ "\202Slg\377\1\204\227\223\377\322\333\343\342\377\3\317\332\330\377\223" \
+ "\254\247\377\243\270\264\377\210\377\377\377\377\3\250\274\270\377\223" \
+ "\254\247\377\315\330\326\377\247\333\343\342\377\3\255\300\274\377\223" \
+ "\254\247\377\330\341\337\377\207\377\377\377\377\3\340\347\346\377\223" \
+ "\254\247\377\247\273\267\377\323\333\343\342\377\4\212\234\231\377Sl" \
+ "g\377Voj\377\307\322\320\377\206\333\343\342\377\1\270\305\303\377\203" \
+ "Slg\377\2Vni\377\303\316\314\377\203\333\343\342\377\5\331\342\341\377" \
+ "\210\233\227\377Slg\377Umh\377\315\327\325\377\321\333\343\342\377\3" \
+ "\261\303\277\377\223\254\247\377\321\333\331\377\207\377\377\377\377" \
+ "\3\347\354\353\377\223\254\247\377\243\270\264\377\250\333\343\342\377" \
+ "\3\314\327\325\377\223\254\247\377\252\275\271\377\207\377\377\377\377" \
+ "\4\376\376\376\377\242\267\263\377\223\254\247\377\320\333\331\377\322" \
+ "\333\343\342\377\3u\211\205\377Slg\377\221\242\237\377\207\333\343\342" \
+ "\377\1\204\227\223\377\203Slg\377\1\221\243\237\377\205\333\343\342\377" \
+ "\4\317\331\327\377Voj\377Slg\377\266\303\301\377\320\333\343\342\377" \
+ "\4\327\340\336\377\226\256\252\377\227\257\253\377\371\372\372\377\207" \
+ "\377\377\377\377\3\271\311\306\377\223\254\247\377\301\317\315\377\251" \
+ "\333\343\342\377\3\241\267\263\377\223\254\247\377\351\356\355\377\207" \
+ "\377\377\377\377\3\317\332\330\377\223\254\247\377\262\304\300\377\322" \
+ "\333\343\342\377\3dzv\377Slg\377\274\307\306\377\206\333\343\342\377" \
+ "\2\331\341\340\377\\to\377\202Slg\377\2Tmh\377\315\327\325\377\206\333" \
+ "\343\342\377\3z\216\212\377Slg\377\246\264\262\377\320\333\343\342\377" \
+ "\3\274\313\311\377\223\254\247\377\277\316\313\377\207\377\377\377\377" \
+ "\4\365\367\367\377\225\255\251\377\231\260\254\377\331\341\340\377\251" \
+ "\333\343\342\377\3\300\316\314\377\223\254\247\377\273\313\310\377\207" \
+ "\377\377\377\377\1\370\371\371\377\202\227\257\252\377\1\327\340\337" \
+ "\377\320\333\343\342\377\4\331\341\340\377Umh\377Slg\377\317\330\327" \
+ "\377\206\333\343\342\377\1\271\306\304\377\203Slg\377\1z\216\212\377" \
+ "\207\333\343\342\377\3\213\235\231\377Slg\377\225\246\243\377\320\333" \
+ "\343\342\377\3\236\265\260\377\223\254\247\377\355\361\360\377\207\377" \
+ "\377\377\377\3\313\327\324\377\223\254\247\377\266\306\303\377\252\333" \
+ "\343\342\377\4\331\341\340\377\230\260\253\377\226\256\251\377\366\370" \
+ "\370\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\276\315" \
+ "\312\377\320\333\343\342\377\1\324\334\333\377\202Slg\377\1\325\336\335" \
+ "\377\206\333\343\342\377\1\216\240\235\377\203Slg\377\1\255\272\270\377" \
+ "\207\333\343\342\377\3\227\247\244\377Slg\377\210\233\227\377\317\333" \
+ "\343\342\377\3\310\324\322\377\223\254\247\377\256\301\275\377\207\377" \
+ "\377\377\377\4\375\376\375\377\237\265\260\377\224\254\247\377\323\334" \
+ "\333\377\253\333\343\342\377\3\264\305\302\377\223\254\247\377\315\330" \
+ "\326\377\207\377\377\377\377\3\353\357\356\377\223\254\247\377\237\265" \
+ "\261\377\321\333\343\342\377\3\\to\377Slg\377\310\322\321\377\205\333" \
+ "\343\342\377\2\330\341\340\377_vr\377\202Slg\377\2Xpk\377\325\336\335" \
+ "\377\207\333\343\342\377\3\214\235\232\377Slg\377\216\237\234\377\317" \
+ "\333\343\342\377\3\252\275\271\377\223\254\247\377\333\343\342\377\207" \
+ "\377\377\377\377\3\334\344\343\377\223\254\247\377\252\275\272\377\254" \
+ "\333\343\342\377\4\322\334\332\377\223\254\247\377\240\266\262\377\376" \
+ "\376\376\377\207\377\377\377\377\3\254\277\273\377\223\254\247\377\311" \
+ "\325\323\377\320\333\343\342\377\3n\203\177\377Slg\377\257\274\272\377" \
+ "\205\333\343\342\377\1\261\277\274\377\203Slg\377\1\200\223\220\377\210" \
+ "\333\343\342\377\3{\217\213\377Slg\377\227\247\244\377\316\333\343\342" \
+ "\377\4\323\334\333\377\223\254\247\377\236\265\260\377\375\375\375\377" \
+ "\207\377\377\377\377\3\257\301\276\377\223\254\247\377\310\324\322\377" \
+ "\255\333\343\342\377\3\251\274\271\377\223\254\247\377\336\346\344\377" \
+ "\207\377\377\377\377\3\331\342\340\377\223\254\247\377\253\276\273\377" \
+ "\320\333\343\342\377\3\201\224\220\377Slg\377v\212\206\377\204\333\343" \
+ "\342\377\2\330\340\337\377i\200{\377\203Slg\377\1\260\276\273\377\207" \
+ "\333\343\342\377\4\325\335\334\377^uq\377Slg\377\253\271\267\377\316" \
+ "\333\343\342\377\3\265\306\303\377\223\254\247\377\312\326\324\377\207" \
+ "\377\377\377\377\3\356\361\361\377\223\254\247\377\236\265\260\377\256" \
+ "\333\343\342\377\3\307\323\321\377\223\254\247\377\261\303\277\377\207" \
+ "\377\377\377\377\4\374\375\375\377\235\263\257\377\224\255\250\377\323" \
+ "\335\334\377\317\333\343\342\377\1\263\300\275\377\202Slg\377\5\206\231" \
+ "\225\377\314\326\324\377\333\343\342\377\315\327\325\377\177\222\217" \
+ "\377\203Slg\377\2czu\377\331\341\340\377\207\333\343\342\377\1\234\253" \
+ "\251\377\202Slg\377\1\303\316\314\377\315\333\343\342\377\4\331\341\340" \
+ "\377\231\260\254\377\225\255\251\377\365\367\367\377\207\377\377\377" \
+ "\377\3\300\317\314\377\223\254\247\377\275\314\311\377\256\333\343\342" \
+ "\377\4\332\342\341\377\235\264\257\377\223\254\247\377\357\362\362\377" \
+ "\207\377\377\377\377\3\310\325\322\377\223\254\247\377\267\307\304\377" \
+ "\320\333\343\342\377\1m\202~\377\203Slg\377\1Xql\377\205Slg\377\1\235" \
+ "\254\252\377\207\333\343\342\377\4\241\261\256\377Voj\377Slg\377czu\377" \
+ "\316\333\343\342\377\3\301\317\314\377\223\254\247\377\271\311\306\377" \
+ "\207\377\377\377\377\4\371\373\372\377\230\260\253\377\226\256\252\377" \
+ "\327\340\336\377\257\333\343\342\377\3\273\313\310\377\223\254\247\377" \
+ "\302\320\315\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377" \
+ "\232\261\254\377\331\341\340\377\317\333\343\342\377\2\265\302\300\377" \
+ "Voj\377\207Slg\377\2o\205\201\377\330\340\337\377\204\333\343\342\377" \
+ "\3\274\307\306\377\210\233\227\377k\201}\377\203Slg\377\1\221\243\237" \
+ "\377\316\333\343\342\377\3\243\270\264\377\223\254\247\377\346\354\352" \
+ "\377\207\377\377\377\377\3\322\334\332\377\223\254\247\377\261\303\277" \
+ "\377\260\333\343\342\377\4\326\337\336\377\226\256\251\377\231\261\254" \
+ "\377\372\373\373\377\207\377\377\377\377\3\267\307\304\377\223\254\247" \
+ "\377\302\320\316\377\320\333\343\342\377\2\274\310\306\377_wr\377\205" \
+ "Slg\377\2j\200|\377\311\324\322\377\205\333\343\342\377\1\226\247\244" \
+ "\377\205Slg\377\1\300\313\311\377\315\333\343\342\377\3\314\330\326\377" \
+ "\223\254\247\377\247\273\267\377\210\377\377\377\377\3\244\271\265\377" \
+ "\223\254\247\377\317\332\330\377\261\333\343\342\377\3\260\302\276\377" \
+ "\223\254\247\377\324\336\334\377\207\377\377\377\377\3\344\352\351\377" \
+ "\223\254\247\377\244\271\265\377\321\333\343\342\377\7\316\330\326\377" \
+ "\250\266\264\377\214\236\233\377v\213\207\377\206\230\225\377\244\263" \
+ "\260\377\330\341\340\377\206\333\343\342\377\1\243\262\257\377\204l\201" \
+ "}\377\1x\215\211\377\316\333\343\342\377\3\256\301\275\377\223\254\247" \
+ "\377\325\336\334\377\207\377\377\377\377\3\343\351\350\377\223\254\247" \
+ "\377\245\272\266\377\262\333\343\342\377\3\316\331\327\377\223\254\247" \
+ "\377\246\273\267\377\210\377\377\377\377\3\245\272\266\377\223\254\247" \
+ "\377\316\331\327\377\377\333\343\342\377\261\333\343\342\377\4\325\337" \
+ "\335\377\225\255\251\377\232\261\254\377\373\374\373\377\207\377\377" \
+ "\377\377\3\266\307\303\377\223\254\247\377\303\321\317\377\263\333\343" \
+ "\342\377\3\244\271\265\377\223\254\247\377\345\353\352\377\207\377\377" \
+ "\377\377\3\322\335\333\377\223\254\247\377\260\302\276\377\377\333\343" \
+ "\342\377\261\333\343\342\377\3\272\311\307\377\223\254\247\377\303\321" \
+ "\316\377\207\377\377\377\377\4\363\366\365\377\224\255\250\377\232\262" \
+ "\255\377\332\342\341\377\263\333\343\342\377\3\302\320\316\377\223\254" \
+ "\247\377\270\310\305\377\207\377\377\377\377\4\372\373\373\377\231\260" \
+ "\254\377\226\256\251\377\326\337\336\377\377\333\343\342\377\257\333" \
+ "\343\342\377\4\332\342\341\377\234\263\256\377\223\254\247\377\360\363" \
+ "\362\377\207\377\377\377\377\3\307\324\321\377\223\254\247\377\270\310" \
+ "\305\377\264\333\343\342\377\4\331\341\340\377\232\261\254\377\225\255" \
+ "\250\377\364\367\366\377\207\377\377\377\377\3\301\317\314\377\223\254" \
+ "\247\377\273\313\310\377\314\333\343\342\377\3\277\312\310\377\237\256" \
+ "\253\377\254\272\270\377\337\333\343\342\377\3\305\322\320\377\223\254" \
+ "\247\377\262\304\300\377\207\377\377\377\377\4\374\375\374\377\234\263" \
+ "\256\377\224\255\250\377\324\336\334\377\265\333\343\342\377\3\266\307" \
+ "\304\377\223\254\247\377\311\325\323\377\207\377\377\377\377\4\356\362" \
+ "\361\377\223\254\247\377\235\264\257\377\332\342\341\377\313\333\343" \
+ "\342\377\3\233\253\250\377Slg\377p\205\201\377\337\333\343\342\377\3" \
+ "\247\273\267\377\223\254\247\377\337\346\345\377\207\377\377\377\377" \
+ "\3\330\341\337\377\223\254\247\377\254\277\274\377\266\333\343\342\377" \
+ "\4\323\335\334\377\224\255\250\377\235\264\257\377\375\375\375\377\207" \
+ "\377\377\377\377\3\260\302\276\377\223\254\247\377\307\323\321\377\313" \
+ "\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343\342" \
+ "\377\4\321\333\331\377\223\254\247\377\241\266\262\377\376\376\376\377" \
+ "\207\377\377\377\377\3\253\276\273\377\223\254\247\377\312\326\324\377" \
+ "\267\333\343\342\377\3\253\276\272\377\223\254\247\377\333\343\341\377" \
+ "\207\377\377\377\377\3\335\345\343\377\223\254\247\377\251\274\271\377" \
+ "\313\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\336\333\343" \
+ "\342\377\3\263\304\301\377\223\254\247\377\315\331\326\377\207\377\377" \
+ "\377\377\3\351\356\355\377\223\254\247\377\241\266\262\377\270\333\343" \
+ "\342\377\3\311\325\323\377\223\254\247\377\254\277\273\377\207\377\377" \
+ "\377\377\4\375\376\375\377\240\265\261\377\223\254\247\377\321\334\332" \
+ "\377\312\333\343\342\377\3\233\253\250\377Slg\377[sn\377\223x\215\211" \
+ "\377\5z\216\212\377\202\225\221\377\214\236\233\377\246\265\262\377\310" \
+ "\323\321\377\305\333\343\342\377\4\330\340\337\377\227\257\252\377\226" \
+ "\256\252\377\367\371\370\377\207\377\377\377\377\3\274\313\310\377\223" \
+ "\254\247\377\277\315\313\377\271\333\343\342\377\3\237\265\261\377\223" \
+ "\254\247\377\353\360\357\377\207\377\377\377\377\3\314\327\325\377\223" \
+ "\254\247\377\264\305\302\377\312\333\343\342\377\1\233\253\250\377\232" \
+ "Slg\377\2x\214\210\377\275\311\307\377\303\333\343\342\377\3\276\315" \
+ "\312\377\223\254\247\377\274\313\310\377\207\377\377\377\377\4\367\371" \
+ "\370\377\226\256\251\377\230\257\253\377\330\341\337\377\271\333\343" \
+ "\342\377\3\275\314\312\377\223\254\247\377\276\315\312\377\207\377\377" \
+ "\377\377\4\366\370\370\377\225\256\251\377\230\260\253\377\330\341\340" \
+ "\377\311\333\343\342\377\1\233\253\250\377\233Slg\377\2Tmh\377\237\256" \
+ "\253\377\302\333\343\342\377\3\240\266\262\377\223\254\247\377\351\356" \
+ "\355\377\207\377\377\377\377\3\315\330\326\377\223\254\247\377\263\305" \
+ "\301\377\272\333\343\342\377\1\327\340\337\377\202\227\257\252\377\1" \
+ "\370\371\371\377\207\377\377\377\377\3\272\312\307\377\223\254\247\377" \
+ "\300\316\314\377\311\333\343\342\377\1\233\253\250\377\235Slg\377\1\243" \
+ "\262\257\377\300\333\343\342\377\3\312\326\324\377\223\254\247\377\252" \
+ "\276\272\377\207\377\377\377\377\4\376\376\376\377\240\266\262\377\223" \
+ "\254\247\377\321\333\332\377\273\333\343\342\377\3\262\303\300\377\223" \
+ "\254\247\377\317\332\330\377\207\377\377\377\377\3\350\355\354\377\223" \
+ "\254\247\377\241\267\263\377\311\333\343\342\377\4\321\332\331\377\305" \
+ "\320\316\377\305\317\316\377\207\231\226\377\202Slg\377\5j\200|\377\224" \
+ "\245\242\377\244\263\260\377\264\300\276\377\302\315\313\377\202\305" \
+ "\320\316\377\16\274\307\306\377\254\272\270\377\235\255\252\377\207\232" \
+ "\226\377Xql\377Slg\377^vq\377\257\274\272\377\305\320\316\377\304\316" \
+ "\315\377\266\303\301\377\247\265\263\377\227\250\245\377s\210\203\377" \
+ "\203Slg\377\2Vni\377\304\317\315\377\277\333\343\342\377\3\254\277\273" \
+ "\377\223\254\247\377\330\341\337\377\207\377\377\377\377\3\336\346\344" \
+ "\377\223\254\247\377\247\273\270\377\274\333\343\342\377\4\320\332\331" \
+ "\377\223\254\247\377\242\270\263\377\376\376\376\377\207\377\377\377" \
+ "\377\3\251\275\271\377\223\254\247\377\313\327\325\377\311\333\343\342" \
+ "\377\5\327\340\337\377y\215\211\377Slg\377q\207\202\377\266\302\300\377" \
+ "\213\333\343\342\377\5\321\333\331\377\233\253\250\377Yrm\377Wpk\377" \
+ "\255\273\271\377\205\333\343\342\377\2\271\305\303\377r\207\203\377\202" \
+ "Slg\377\1\203\226\222\377\276\333\343\342\377\4\324\336\334\377\224\255" \
+ "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\261\303" \
+ "\277\377\223\254\247\377\306\323\321\377\275\333\343\342\377\3\246\273" \
+ "\267\377\223\254\247\377\340\347\346\377\207\377\377\377\377\3\326\340" \
+ "\336\377\223\254\247\377\255\300\274\377\311\333\343\342\377\4\211\234" \
+ "\230\377Slg\377n\204\200\377\325\336\335\377\216\333\343\342\377\4\263" \
+ "\300\275\377Tlg\377Wpk\377\300\314\312\377\205\333\343\342\377\5\325" \
+ "\335\334\377f}x\377Slg\377Umh\377\324\334\333\377\275\333\343\342\377" \
+ "\3\267\310\305\377\223\254\247\377\307\324\321\377\207\377\377\377\377" \
+ "\4\357\363\362\377\223\254\247\377\234\263\257\377\332\342\341\377\275" \
+ "\333\343\342\377\3\304\322\317\377\223\254\247\377\263\304\301\377\207" \
+ "\377\377\377\377\4\373\374\374\377\233\262\255\377\225\255\250\377\325" \
+ "\336\335\377\307\333\343\342\377\4\275\311\307\377Slg\377\\so\377\316" \
+ "\327\326\377\220\333\343\342\377\3\227\250\245\377Slg\377p\206\202\377" \
+ "\206\333\343\342\377\4\276\312\310\377Tlg\377Slg\377\266\302\300\377" \
+ "\274\333\343\342\377\4\331\342\341\377\232\261\255\377\224\254\247\377" \
+ "\362\365\364\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377" \
+ "\272\312\307\377\276\333\343\342\377\4\332\342\341\377\233\262\256\377" \
+ "\223\254\247\377\361\364\363\377\207\377\377\377\377\3\305\322\320\377" \
+ "\223\254\247\377\271\311\306\377\307\333\343\342\377\3\211\233\230\377" \
+ "Slg\377|\217\214\377\221\333\343\342\377\1\304\317\315\377\202Slg\377" \
+ "\1\305\317\316\377\206\333\343\342\377\3f}x\377Slg\377\235\254\252\377" \
+ "\274\333\343\342\377\3\303\320\316\377\223\254\247\377\265\306\302\377" \
+ "\207\377\377\377\377\4\372\373\373\377\231\261\254\377\225\255\251\377" \
+ "\326\337\336\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
+ "\304\322\317\377\207\377\377\377\377\4\361\364\363\377\223\254\247\377" \
+ "\233\262\256\377\332\342\341\377\306\333\343\342\377\3e{w\377Slg\377" \
+ "\227\250\245\377\221\333\343\342\377\4\331\342\341\377Xql\377Slg\377" \
+ "\241\261\256\377\206\333\343\342\377\3}\221\215\377Slg\377\221\242\237" \
+ "\377\274\333\343\342\377\3\245\271\265\377\223\254\247\377\343\351\350" \
+ "\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301\275" \
+ "\377\300\333\343\342\377\4\325\336\335\377\225\255\250\377\232\262\255" \
+ "\377\373\374\374\377\207\377\377\377\377\3\264\305\301\377\223\254\247" \
+ "\377\304\321\317\377\305\333\343\342\377\4\332\342\341\377Vni\377Slg" \
+ "\377\243\262\257\377\222\333\343\342\377\3czu\377Slg\377\223\244\241" \
+ "\377\206\333\343\342\377\3\224\244\241\377Slg\377\210\233\227\377\273" \
+ "\333\343\342\377\3\316\331\330\377\223\254\247\377\244\271\264\377\210" \
+ "\377\377\377\377\3\246\273\267\377\223\254\247\377\315\330\326\377\301" \
+ "\333\343\342\377\4\255\300\274\377\222\253\246\377\315\330\326\377\376" \
+ "\376\376\377\206\377\377\377\377\3\341\350\346\377\223\254\247\377\246" \
+ "\272\266\377\305\333\343\342\377\1\322\333\332\377\202Slg\377\1\205\230" \
+ "\224\377\221\333\343\342\377\1\316\327\326\377\202Slg\377\1\211\234\230" \
+ "\377\206\333\343\342\377\3\220\242\236\377Slg\377\222\243\240\377\273" \
+ "\333\343\342\377\3\260\302\277\377\223\254\247\377\321\334\332\377\207" \
+ "\377\377\377\377\3\345\353\352\377\223\254\247\377\243\270\264\377\302" \
+ "\333\343\342\377\16\314\327\325\377\223\254\246\377\223\254\247\377\226" \
+ "\256\251\377\244\271\265\377\264\305\302\377\303\321\316\377\323\335" \
+ "\333\377\342\351\350\377\361\365\364\377\375\375\375\377\242\270\263" \
+ "\377\223\254\247\377\317\332\330\377\304\333\343\342\377\4\332\342\341" \
+ "\377Vni\377Slg\377f|x\377\221\333\343\342\377\1\256\274\271\377\202S" \
+ "lg\377\1\226\246\243\377\206\333\343\342\377\3\202\225\221\377Slg\377" \
+ "\237\257\254\377\272\333\343\342\377\4\327\337\336\377\226\256\251\377" \
+ "\230\260\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377" \
+ "\223\254\247\377\301\317\315\377\303\333\343\342\377\15\232\262\255\377" \
+ "\223\254\246\377\325\336\335\377\331\342\340\377\312\326\324\377\273" \
+ "\313\310\377\254\277\273\377\235\263\257\377\223\254\247\377\226\256" \
+ "\251\377\234\263\256\377\222\254\246\377\256\300\274\377\305\333\343" \
+ "\342\377\1i\200{\377\202Slg\377\1\224\244\241\377\217\333\343\342\377" \
+ "\2\313\325\323\377czu\377\202Slg\377\1\253\271\266\377\205\333\343\342" \
+ "\377\4\331\341\340\377czu\377Slg\377\254\272\270\377\272\333\343\342" \
+ "\377\3\274\313\310\377\223\254\247\377\277\316\313\377\207\377\377\377" \
+ "\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341\340\377" \
+ "\303\333\343\342\377\3\275\313\311\377\222\254\246\377\257\301\276\377" \
+ "\205\377\377\377\377\3\372\373\373\377\353\360\357\377\327\340\335\377" \
+ "\202\224\255\250\377\3\327\340\337\377\331\342\341\377\322\334\333\377" \
+ "\302\333\343\342\377\1\226\247\244\377\203Slg\377\2\231\252\247\377\330" \
+ "\341\340\377\214\333\343\342\377\2\310\323\321\377f|x\377\202Slg\377" \
+ "\2Voj\377\323\334\332\377\205\333\343\342\377\1\253\271\266\377\202S" \
+ "lg\377\1\272\306\304\377\272\333\343\342\377\3\236\264\260\377\223\254" \
+ "\247\377\355\361\360\377\207\377\377\377\377\3\311\325\323\377\223\254" \
+ "\247\377\266\306\303\377\304\333\343\342\377\4\331\341\340\377\224\255" \
+ "\250\377\224\254\247\377\366\370\367\377\207\377\377\377\377\5\263\305" \
+ "\301\377\222\254\246\377\266\306\302\377\232\262\254\377\240\266\262" \
+ "\377\302\333\343\342\377\2\314\325\324\377Xql\377\203Slg\377\4_wr\377" \
+ "\221\243\237\377\304\316\315\377\330\341\340\377\206\333\343\342\377" \
+ "\4\322\333\332\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377\1\211" \
+ "\233\230\377\205\333\343\342\377\5\263\300\276\377Xql\377Slg\377Xql\377" \
+ "\326\336\335\377\271\333\343\342\377\3\310\324\322\377\223\254\247\377" \
+ "\256\301\275\377\207\377\377\377\377\4\375\375\375\377\235\264\257\377" \
+ "\223\254\247\377\323\334\333\377\305\333\343\342\377\3\256\300\276\377" \
+ "\223\253\246\377\305\322\320\377\207\377\377\377\377\6\353\360\357\377" \
+ "\222\254\247\377\231\261\255\377\241\267\262\377\223\254\247\377\312" \
+ "\326\324\377\302\333\343\342\377\1\237\256\253\377\206Slg\377\7Tlg\377" \
+ "^vq\377l\202~\377y\215\211\377s\210\203\377e|w\377Xpk\377\206Slg\377" \
+ "\2_wr\377\321\333\331\377\203\333\343\342\377\2\255\272\270\377q\207" \
+ "\202\377\203Slg\377\1~\222\216\377\272\333\343\342\377\3\251\275\271" \
+ "\377\223\254\247\377\334\344\342\377\207\377\377\377\377\3\333\343\341" \
+ "\377\223\254\247\377\252\275\271\377\306\333\343\342\377\4\322\334\332" \
+ "\377\223\253\246\377\231\260\253\377\375\376\375\377\207\377\377\377" \
+ "\377\5\242\267\263\377\222\253\246\377\265\305\302\377\223\254\247\377" \
+ "\254\277\273\377\303\333\343\342\377\1\220\242\236\377\221Slg\377\2_" \
+ "vr\377\304\316\315\377\204\333\343\342\377\1}\220\215\377\204Slg\377" \
+ "\1\251\267\265\377\271\333\343\342\377\4\322\334\333\377\223\254\247" \
+ "\377\236\265\260\377\375\376\375\377\207\377\377\377\377\3\255\300\274" \
+ "\377\223\254\247\377\310\324\322\377\307\333\343\342\377\3\241\266\263" \
+ "\377\223\253\247\377\332\342\341\377\203\377\377\377\377\2\371\372\372" \
+ "\377\364\367\366\377\202\377\377\377\377\6\326\340\336\377\222\254\246" \
+ "\377\243\270\263\377\230\260\253\377\225\255\250\377\324\336\334\377" \
+ "\303\333\343\342\377\2\242\261\256\377Yql\377\216Slg\377\2s\210\204\377" \
+ "\310\322\321\377\205\333\343\342\377\1\235\255\252\377\204\201\224\220" \
+ "\377\1\321\333\331\377\271\333\343\342\377\3\265\306\302\377\223\254" \
+ "\247\377\312\326\324\377\207\377\377\377\377\3\354\360\357\377\223\254" \
+ "\247\377\236\265\260\377\310\333\343\342\377\3\306\322\320\377\222\253" \
+ "\246\377\244\271\266\377\203\377\377\377\377\2\244\271\264\377\272\312" \
+ "\307\377\202\377\377\377\377\6\374\375\375\377\227\257\252\377\223\254" \
+ "\246\377\260\303\277\377\223\254\247\377\267\310\305\377\304\333\343" \
+ "\342\377\3\313\325\323\377\212\234\231\377Yrm\377\212Slg\377\3n\203\177" \
+ "\377\247\266\263\377\332\342\341\377\304\333\343\342\377\4\331\341\340" \
+ "\377\230\260\253\377\225\255\251\377\365\367\367\377\207\377\377\377" \
+ "\377\3\277\315\312\377\223\254\247\377\275\314\311\377\310\333\343\342" \
+ "\377\4\332\342\341\377\227\257\253\377\223\253\246\377\356\361\361\377" \
+ "\202\377\377\377\377\3\312\326\324\377\226\256\251\377\367\370\370\377" \
+ "\202\377\377\377\377\6\300\316\314\377\223\253\246\377\226\256\250\377" \
+ "\223\254\247\377\233\261\255\377\332\342\341\377\305\333\343\342\377" \
+ "\13\324\335\334\377\261\277\274\377\224\244\241\377|\217\214\377r\207" \
+ "\203\377j\200|\377n\203\177\377v\213\207\377\205\227\224\377\242\261" \
+ "\256\377\303\316\314\377\307\333\343\342\377\3\301\317\314\377\223\254" \
+ "\247\377\271\311\306\377\207\377\377\377\377\4\370\372\371\377\227\257" \
+ "\252\377\226\256\252\377\327\340\336\377\311\333\343\342\377\3\267\310" \
+ "\305\377\223\253\246\377\266\307\304\377\202\377\377\377\377\3\365\367" \
+ "\367\377\225\256\251\377\315\330\326\377\202\377\377\377\377\6\364\366" \
+ "\366\377\223\254\246\377\223\253\247\377\235\263\260\377\223\254\247" \
+ "\377\303\321\317\377\377\333\343\342\377\230\333\343\342\377\3\242\267" \
+ "\263\377\223\254\247\377\346\354\353\377\207\377\377\377\377\3\320\333" \
+ "\331\377\223\254\247\377\261\303\277\377\312\333\343\342\377\4\326\337" \
+ "\336\377\223\254\247\377\224\255\250\377\371\373\372\377\202\377\377" \
+ "\377\377\3\271\311\306\377\241\266\262\377\376\376\376\377\202\377\377" \
+ "\377\377\5\253\277\273\377\223\253\247\377\263\305\302\377\223\254\247" \
+ "\377\245\271\265\377\377\333\343\342\377\227\333\343\342\377\3\314\330" \
+ "\326\377\223\254\247\377\247\273\267\377\207\377\377\377\377\4\376\376" \
+ "\376\377\243\270\264\377\223\254\247\377\317\332\330\377\313\333\343" \
+ "\342\377\3\251\274\270\377\222\254\247\377\315\330\325\377\202\377\377" \
+ "\377\377\3\346\354\353\377\223\254\247\377\337\346\345\377\202\377\377" \
+ "\377\377\2\344\352\350\377\223\254\246\377\202\235\263\257\377\2\223" \
+ "\254\247\377\316\331\330\377\377\333\343\342\377\226\333\343\342\377" \
+ "\3\256\300\275\377\223\254\247\377\325\337\335\377\207\377\377\377\377" \
+ "\3\341\350\347\377\223\254\247\377\245\272\266\377\314\333\343\342\377" \
+ "\3\316\331\327\377\222\253\246\377\234\263\256\377\203\377\377\377\377" \
+ "\2\247\274\270\377\261\303\300\377\203\377\377\377\377\5\234\263\256" \
+ "\377\223\253\246\377\263\305\301\377\223\254\247\377\260\303\277\377" \
+ "\322\333\343\342\377\1\304\317\315\377\202\201\224\220\377\277\333\343" \
+ "\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374\373" \
+ "\377\207\377\377\377\377\3\264\305\302\377\223\254\247\377\303\321\317" \
+ "\377\315\333\343\342\377\3\235\263\260\377\223\253\246\377\342\351\347" \
+ "\377\202\377\377\377\377\3\325\336\334\377\223\254\247\377\360\363\363" \
+ "\377\202\377\377\377\377\5\315\330\326\377\223\253\246\377\247\274\267" \
+ "\377\227\256\251\377\253\276\273\377\322\333\343\342\377\1\270\305\303" \
+ "\377\202Slg\377\277\333\343\342\377\3\271\311\306\377\223\254\247\377" \
+ "\303\321\316\377\207\377\377\377\377\4\361\364\364\377\224\254\247\377" \
+ "\232\262\255\377\332\342\341\377\315\333\343\342\377\3\300\317\315\377" \
+ "\223\254\246\377\253\277\272\377\202\377\377\377\377\3\373\374\374\377" \
+ "\232\262\255\377\303\321\316\377\202\377\377\377\377\4\372\373\373\377" \
+ "\225\255\251\377\224\254\247\377\321\333\332\377\323\333\343\342\377" \
+ "\1\270\305\303\377\202Slg\377\276\333\343\342\377\4\332\342\341\377\234" \
+ "\263\256\377\223\254\247\377\360\363\363\377\207\377\377\377\377\3\305" \
+ "\323\320\377\223\254\247\377\270\310\305\377\316\333\343\342\377\4\331" \
+ "\341\340\377\226\255\251\377\223\253\247\377\363\366\365\377\202\377" \
+ "\377\377\377\3\304\321\317\377\232\262\255\377\373\374\374\377\202\377" \
+ "\377\377\377\3\267\310\304\377\222\253\246\377\270\310\304\377\306\333" \
+ "\343\342\377\2\317\331\327\377\301\314\312\377\213\275\310\306\377\1" \
+ "\242\261\256\377\202Slg\377\276\333\343\342\377\3\305\322\320\377\223" \
+ "\254\247\377\262\304\300\377\207\377\377\377\377\4\374\374\374\377\233" \
+ "\262\255\377\224\255\250\377\324\336\334\377\317\333\343\342\377\3\261" \
+ "\303\300\377\223\253\246\377\276\315\313\377\202\377\377\377\377\3\360" \
+ "\364\363\377\223\254\247\377\325\337\335\377\202\377\377\377\377\4\357" \
+ "\362\362\377\222\253\246\377\231\260\253\377\332\342\341\377\301\333" \
+ "\343\342\377\4\305\320\316\377\204\227\223\377e|w\377Voj\377\220Slg\377" \
+ "\276\333\343\342\377\3\247\273\267\377\223\254\247\377\340\347\345\377" \
+ "\207\377\377\377\377\3\327\340\336\377\223\254\247\377\254\277\274\377" \
+ "\320\333\343\342\377\4\323\335\334\377\223\253\247\377\226\256\252\377" \
+ "\374\375\374\377\202\377\377\377\377\2\262\304\301\377\250\274\270\377" \
+ "\202\377\377\377\377\4\354\360\357\377\232\262\255\377\223\253\247\377" \
+ "\306\323\321\377\277\333\343\342\377\3\325\335\334\377\202\225\221\377" \
+ "Tlg\377\223Slg\377\275\333\343\342\377\4\320\333\331\377\223\254\247" \
+ "\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\251\275\271" \
+ "\377\223\254\247\377\312\326\324\377\321\333\343\342\377\3\244\271\264" \
+ "\377\223\254\247\377\325\337\335\377\202\377\377\377\377\10\340\347\346" \
+ "\377\223\254\247\377\312\327\324\377\255\300\274\377\226\256\251\377" \
+ "\255\277\274\377\222\254\247\377\250\274\270\377\277\333\343\342\377" \
+ "\1\207\232\226\377\225Slg\377\275\333\343\342\377\3\262\304\300\377\223" \
+ "\254\247\377\316\331\327\377\207\377\377\377\377\3\350\355\354\377\223" \
+ "\254\247\377\240\266\262\377\322\333\343\342\377\16\311\325\323\377\223" \
+ "\254\246\377\241\266\263\377\377\377\377\377\364\367\366\377\310\325" \
+ "\322\377\227\257\252\377\234\263\256\377\312\327\324\377\365\370\367" \
+ "\377\376\376\376\377\240\266\261\377\223\254\247\377\321\333\332\377" \
+ "\275\333\343\342\377\1\257\275\272\377\205Slg\377\4Voj\377axt\377k\201" \
+ "|\377t\211\205\377\212x\215\211\377\1o\204\200\377\202Slg\377\274\333" \
+ "\343\342\377\4\330\340\337\377\227\257\252\377\226\256\252\377\367\371" \
+ "\371\377\207\377\377\377\377\3\273\312\307\377\223\254\247\377\277\315" \
+ "\313\377\323\333\343\342\377\7\231\260\254\377\223\253\247\377\260\302" \
+ "\276\377\225\256\251\377\257\301\276\377\334\344\343\377\376\376\376" \
+ "\377\203\377\377\377\377\3\315\330\326\377\223\254\247\377\264\305\302" \
+ "\377\275\333\343\342\377\1\201\225\221\377\203Slg\377\3~\222\216\377" \
+ "\261\277\274\377\327\340\337\377\215\333\343\342\377\1\270\305\303\377" \
+ "\202Slg\377\274\333\343\342\377\3\276\315\312\377\223\254\247\377\274" \
+ "\314\311\377\207\377\377\377\377\4\366\370\370\377\225\256\251\377\230" \
+ "\257\253\377\330\341\337\377\323\333\343\342\377\4\273\312\310\377\222" \
+ "\254\246\377\244\271\265\377\356\362\361\377\206\377\377\377\377\4\366" \
+ "\370\370\377\226\256\251\377\230\257\253\377\330\341\340\377\274\333" \
+ "\343\342\377\1i\200{\377\202Slg\377\1\204\226\223\377\220\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\274\333\343\342\377\3\237\265\261\377" \
+ "\223\254\247\377\352\357\356\377\207\377\377\377\377\3\314\330\325\377" \
+ "\223\254\247\377\263\304\301\377\324\333\343\342\377\4\327\340\337\377" \
+ "\227\257\252\377\226\256\252\377\367\371\371\377\207\377\377\377\377" \
+ "\3\273\313\310\377\223\254\247\377\277\316\313\377\273\333\343\342\377" \
+ "\2\330\340\337\377Uni\377\202Slg\377\1\321\333\331\377\220\333\343\342" \
+ "\377\1\270\305\303\377\202Slg\377\273\333\343\342\377\3\312\326\324\377" \
+ "\223\254\247\377\253\276\273\377\207\377\377\377\377\4\376\376\376\377" \
+ "\240\265\261\377\223\254\247\377\321\333\332\377\325\333\343\342\377" \
+ "\3\262\303\300\377\223\254\247\377\316\331\327\377\207\377\377\377\377" \
+ "\3\350\356\355\377\223\254\247\377\241\267\262\377\273\333\343\342\377" \
+ "\4\326\337\336\377Tlg\377Slg\377byt\377\221\333\343\342\377\1\330\341" \
+ "\340\377\202\322\333\332\377\273\333\343\342\377\3\253\276\273\377\223" \
+ "\254\247\377\330\341\337\377\207\377\377\377\377\3\335\345\344\377\223" \
+ "\254\247\377\247\273\270\377\326\333\343\342\377\4\320\332\331\377\223" \
+ "\254\247\377\241\267\262\377\376\376\376\377\207\377\377\377\377\3\252" \
+ "\275\271\377\223\254\247\377\313\326\325\377\273\333\343\342\377\3cz" \
+ "u\377Slg\377l\202~\377\316\333\343\342\377\4\323\335\334\377\224\255" \
+ "\250\377\234\263\256\377\374\375\374\377\207\377\377\377\377\3\260\302" \
+ "\276\377\223\254\247\377\306\323\321\377\327\333\343\342\377\3\246\273" \
+ "\267\377\223\254\247\377\340\347\345\377\207\377\377\377\377\3\327\340" \
+ "\336\377\223\254\247\377\254\277\274\377\273\333\343\342\377\4\207\231" \
+ "\226\377Slg\377Vni\377\327\337\336\377\315\333\343\342\377\3\267\307" \
+ "\304\377\223\254\247\377\307\324\321\377\207\377\377\377\377\4\356\362" \
+ "\361\377\223\254\247\377\234\263\257\377\332\342\341\377\327\333\343" \
+ "\342\377\3\304\322\317\377\223\254\247\377\262\304\300\377\207\377\377" \
+ "\377\377\4\374\374\374\377\233\262\256\377\224\255\250\377\325\336\335" \
+ "\377\272\333\343\342\377\1\305\317\316\377\202Slg\377\1\271\306\304\377" \
+ "\220\333\343\342\377\1\307\322\320\377\202\216\237\234\377\271\333\343" \
+ "\342\377\4\331\342\341\377\232\261\255\377\224\255\250\377\363\366\365" \
+ "\377\207\377\377\377\377\3\302\320\315\377\223\254\247\377\272\312\307" \
+ "\377\330\333\343\342\377\4\332\342\341\377\233\262\256\377\223\254\247" \
+ "\377\360\363\363\377\207\377\377\377\377\3\306\323\320\377\223\254\247" \
+ "\377\270\310\305\377\273\333\343\342\377\4\232\252\247\377Slg\377d{v" \
+ "\377\317\330\327\377\217\333\343\342\377\1\270\305\303\377\202Slg\377" \
+ "\271\333\343\342\377\3\303\320\316\377\223\254\247\377\266\307\303\377" \
+ "\207\377\377\377\377\4\372\373\373\377\231\260\254\377\225\255\251\377" \
+ "\326\337\336\377\331\333\343\342\377\3\271\311\306\377\223\254\247\377" \
+ "\303\321\316\377\207\377\377\377\377\4\362\365\364\377\224\254\247\377" \
+ "\233\262\255\377\332\342\341\377\273\333\343\342\377\4\226\246\243\377" \
+ "Tmh\377l\201}\377\267\303\301\377\216\333\343\342\377\1\270\305\303\377" \
+ "\202Slg\377\271\333\343\342\377\3\244\271\265\377\223\254\247\377\343" \
+ "\352\350\377\207\377\377\377\377\3\323\335\333\377\223\254\247\377\256" \
+ "\301\275\377\332\333\343\342\377\4\325\336\335\377\225\255\250\377\232" \
+ "\261\254\377\373\374\373\377\207\377\377\377\377\3\264\306\302\377\223" \
+ "\254\247\377\304\321\317\377\271\333\343\342\377\1\317\330\327\377\202" \
+ "\301\314\312\377\10\246\265\262\377^vq\377Slg\377k\201}\377\226\247\244" \
+ "\377\245\264\261\377\263\300\276\377\277\313\311\377\211\301\314\312" \
+ "\377\1\245\264\261\377\202Slg\377\270\333\343\342\377\3\316\331\327\377" \
+ "\223\254\247\377\245\271\265\377\210\377\377\377\377\3\246\272\266\377" \
+ "\223\254\247\377\315\330\326\377\333\333\343\342\377\3\255\300\274\377" \
+ "\223\254\247\377\325\336\334\377\207\377\377\377\377\3\342\350\347\377" \
+ "\223\254\247\377\245\272\266\377\271\333\343\342\377\1\233\253\250\377" \
+ "\226Slg\377\270\333\343\342\377\3\260\302\276\377\223\254\247\377\322" \
+ "\334\332\377\207\377\377\377\377\3\344\352\351\377\223\254\247\377\243" \
+ "\270\264\377\334\333\343\342\377\3\314\327\325\377\223\254\247\377\247" \
+ "\273\267\377\207\377\377\377\377\4\376\376\376\377\243\270\264\377\223" \
+ "\254\247\377\317\332\330\377\270\333\343\342\377\1\233\253\250\377\226" \
+ "Slg\377\267\333\343\342\377\4\326\337\336\377\226\256\251\377\230\260" \
+ "\253\377\371\373\372\377\207\377\377\377\377\3\267\307\304\377\223\254" \
+ "\247\377\301\317\315\377\335\333\343\342\377\3\241\267\263\377\223\254" \
+ "\247\377\346\354\353\377\207\377\377\377\377\3\320\333\331\377\223\254" \
+ "\247\377\261\303\277\377\270\333\343\342\377\1\233\253\250\377\226Sl" \
+ "g\377\267\333\343\342\377\3\273\313\310\377\223\254\247\377\300\317\314" \
+ "\377\207\377\377\377\377\4\363\366\366\377\224\255\250\377\231\260\254" \
+ "\377\331\341\340\377\335\333\343\342\377\3\300\316\314\377\223\254\247" \
+ "\377\271\311\306\377\207\377\377\377\377\4\371\372\372\377\227\257\253" \
+ "\377\226\256\252\377\327\340\337\377\267\333\343\342\377\3\233\253\250" \
+ "\377Slg\377[sn\377\221x\215\211\377\1o\204\200\377\202Slg\377\266\333" \
+ "\343\342\377\4\332\342\341\377\235\264\257\377\223\254\247\377\356\361" \
+ "\361\377\207\377\377\377\377\3\310\325\322\377\223\254\247\377\266\306" \
+ "\303\377\336\333\343\342\377\4\330\341\340\377\230\260\253\377\225\255" \
+ "\251\377\365\367\367\377\207\377\377\377\377\3\277\316\313\377\223\254" \
+ "\247\377\275\314\311\377\267\333\343\342\377\3\233\253\250\377Slg\377" \
+ "p\205\201\377\221\333\343\342\377\1\270\305\303\377\202Slg\377\266\333" \
+ "\343\342\377\3\307\324\322\377\223\254\247\377\257\301\276\377\207\377" \
+ "\377\377\377\4\374\375\375\377\235\264\257\377\223\254\247\377\323\334" \
+ "\333\377\337\333\343\342\377\3\264\305\302\377\223\254\247\377\312\326" \
+ "\324\377\207\377\377\377\377\3\354\361\360\377\223\254\247\377\236\265" \
+ "\260\377\267\333\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221" \
+ "\333\343\342\377\1\270\305\303\377\202Slg\377\266\333\343\342\377\3\251" \
+ "\274\271\377\223\254\247\377\334\344\343\377\207\377\377\377\377\3\332" \
+ "\342\340\377\223\254\247\377\252\275\271\377\340\333\343\342\377\4\322" \
+ "\334\332\377\223\254\247\377\236\265\260\377\375\375\375\377\207\377" \
+ "\377\377\377\3\256\300\275\377\223\254\247\377\310\324\322\377\266\333" \
+ "\343\342\377\3\233\253\250\377Slg\377p\205\201\377\221\333\343\342\377" \
+ "\1\270\305\303\377\202Slg\377\265\333\343\342\377\4\322\334\332\377\223" \
+ "\254\247\377\237\265\260\377\375\376\375\377\207\377\377\377\377\3\254" \
+ "\277\273\377\223\254\247\377\310\324\322\377\341\333\343\342\377\3\251" \
+ "\274\271\377\223\254\247\377\333\343\342\377\207\377\377\377\377\3\333" \
+ "\343\342\377\223\254\247\377\252\275\272\377\266\333\343\342\377\3\277" \
+ "\312\310\377\237\256\253\377\254\272\270\377\221\333\343\342\377\1\323" \
+ "\334\333\377\202\275\310\306\377\265\333\343\342\377\3\264\305\302\377" \
+ "\223\254\247\377\313\327\324\377\207\377\377\377\377\3\353\360\357\377" \
+ "\223\254\247\377\236\265\260\377\342\333\343\342\377\3\307\323\321\377" \
+ "\223\254\247\377\256\301\275\377\207\377\377\377\377\4\375\375\375\377" \
+ "\236\264\260\377\224\254\247\377\323\334\333\377\377\333\343\342\377" \
+ "\5\333\343\342\377\331\341\340\377\230\260\253\377\225\256\251\377\366" \
+ "\370\367\377\207\377\377\377\377\3\275\314\311\377\223\254\247\377\274" \
+ "\313\311\377\342\333\343\342\377\4\332\342\341\377\235\264\257\377\223" \
+ "\254\247\377\355\361\360\377\207\377\377\377\377\3\312\326\323\377\223" \
+ "\254\247\377\266\306\303\377\377\333\343\342\377\4\333\343\342\377\300" \
+ "\316\314\377\223\254\247\377\271\311\306\377\207\377\377\377\377\4\370" \
+ "\371\371\377\227\257\252\377\226\256\252\377\327\340\336\377\343\333" \
+ "\343\342\377\3\273\313\310\377\223\254\247\377\277\316\313\377\207\377" \
+ "\377\377\377\4\364\367\366\377\225\255\250\377\231\260\254\377\331\341" \
+ "\340\377\310\333\343\342\377\3\307\322\320\377\305\320\316\377\324\334" \
+ "\333\377\264\333\343\342\377\3\241\267\263\377\223\254\247\377\347\354" \
+ "\353\377\207\377\377\377\377\3\317\332\330\377\223\254\247\377\261\303" \
+ "\277\377\344\333\343\342\377\4\326\337\336\377\226\256\251\377\227\257" \
+ "\253\377\371\372\372\377\207\377\377\377\377\3\270\310\305\377\223\254" \
+ "\247\377\301\317\315\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
+ "\267\377\263\333\343\342\377\3\314\327\325\377\223\254\247\377\250\274" \
+ "\270\377\207\377\377\377\377\4\376\376\376\377\242\270\263\377\223\254" \
+ "\247\377\317\332\330\377\345\333\343\342\377\3\260\302\276\377\223\254" \
+ "\247\377\321\333\331\377\207\377\377\377\377\3\346\353\352\377\223\254" \
+ "\247\377\243\270\264\377\310\333\343\342\377\3_vr\377Slg\377\254\271" \
+ "\267\377\263\333\343\342\377\3\255\300\274\377\223\254\247\377\325\337" \
+ "\335\377\207\377\377\377\377\3\340\347\346\377\223\254\247\377\245\272" \
+ "\266\377\346\333\343\342\377\3\316\331\327\377\223\254\247\377\244\271" \
+ "\265\377\210\377\377\377\377\3\247\273\267\377\223\254\247\377\315\330" \
+ "\326\377\307\333\343\342\377\3^vq\377Slg\377\254\271\267\377\262\333" \
+ "\343\342\377\4\325\336\335\377\225\255\250\377\232\261\255\377\373\374" \
+ "\374\377\207\377\377\377\377\3\263\304\301\377\223\254\247\377\303\321" \
+ "\317\377\347\333\343\342\377\3\244\271\265\377\223\254\247\377\342\351" \
+ "\347\377\207\377\377\377\377\3\324\336\334\377\223\254\247\377\256\301" \
+ "\275\377\304\333\343\342\377\3\317\331\327\377\236\255\253\377i\177{" \
+ "\377\202Slg\377\1\254\271\267\377\262\333\343\342\377\3\271\311\306\377" \
+ "\223\254\247\377\304\322\317\377\207\377\377\377\377\4\361\364\363\377" \
+ "\223\254\247\377\226\256\251\377\332\342\341\377\347\333\343\342\377" \
+ "\3\302\320\316\377\223\254\247\377\265\306\302\377\202\377\377\377\377" \
+ "\3\371\373\372\377\356\361\361\377\375\375\375\377\202\377\377\377\377" \
+ "\4\372\373\373\377\232\261\254\377\225\255\251\377\326\337\336\377\300" \
+ "\333\343\342\377\4\331\341\340\377\263\300\276\377~\222\216\377Uni\377" \
+ "\204Slg\377\1\254\271\267\377\261\333\343\342\377\4\332\342\341\377\233" \
+ "\262\256\377\223\254\247\377\361\364\363\377\207\377\377\377\377\1\304" \
+ "\322\317\377\202\223\254\247\377\1\312\326\324\377\347\333\343\342\377" \
+ "\5\331\341\340\377\232\261\254\377\223\254\247\377\302\320\315\377\244" \
+ "\271\265\377\202\223\254\247\377\7\226\256\251\377\251\275\271\377\331" \
+ "\342\340\377\377\377\377\377\303\321\316\377\223\254\247\377\272\312" \
+ "\307\377\276\333\343\342\377\3\310\322\321\377\224\244\241\377axt\377" \
+ "\207Slg\377\1\254\271\267\377\261\333\343\342\377\3\304\322\317\377\223" \
+ "\254\247\377\263\304\301\377\207\377\377\377\377\5\373\374\374\377\233" \
+ "\262\255\377\225\255\251\377\233\262\256\377\264\305\302\377\350\333" \
+ "\343\342\377\1\260\303\277\377\202\224\255\250\377\13\277\315\312\377" \
+ "\330\341\337\377\345\353\351\377\322\334\332\377\263\304\301\377\223" \
+ "\254\247\377\267\307\304\377\353\357\356\377\223\254\247\377\234\263" \
+ "\257\377\332\342\341\377\272\333\343\342\377\3\326\336\335\377\251\267" \
+ "\265\377t\211\205\377\212Slg\377\1\254\271\267\377\261\333\343\342\377" \
+ "\3\246\272\266\377\223\254\247\377\340\347\346\377\207\377\377\377\377" \
+ "\5\326\337\335\377\223\254\247\377\271\311\306\377\262\304\300\377\246" \
+ "\272\266\377\347\333\343\342\377\4\331\341\340\377\236\264\260\377\240" \
+ "\266\261\377\351\356\355\377\205\377\377\377\377\6\330\341\337\377\226" \
+ "\256\252\377\275\314\311\377\261\303\300\377\223\254\247\377\306\323" \
+ "\320\377\270\333\343\342\377\3\276\312\310\377\211\234\230\377[sn\377" \
+ "\211Slg\377\4Voj\377Umh\377Slg\377\254\271\267\377\260\333\343\342\377" \
+ "\4\320\332\331\377\223\254\247\377\242\267\263\377\376\376\376\377\207" \
+ "\377\377\377\377\5\250\274\270\377\223\254\247\377\346\354\353\377\272" \
+ "\312\307\377\242\267\263\377\347\333\343\342\377\3\265\306\302\377\225" \
+ "\255\250\377\352\357\356\377\207\377\377\377\377\5\322\334\332\377\223" \
+ "\254\247\377\311\325\323\377\223\254\247\377\247\273\270\377\265\333" \
+ "\343\342\377\3\320\332\330\377\237\256\253\377k\201|\377\212Slg\377\6" \
+ "n\204\200\377\242\261\256\377\321\333\331\377_vr\377Slg\377\254\271\267" \
+ "\377\260\333\343\342\377\3\262\303\300\377\223\254\247\377\317\332\330" \
+ "\377\204\377\377\377\377\11\367\371\370\377\352\357\356\377\377\377\377" \
+ "\377\347\355\354\377\223\254\247\377\247\273\267\377\377\377\377\377" \
+ "\244\271\265\377\257\301\276\377\347\333\343\342\377\2\234\263\256\377" \
+ "\303\321\316\377\211\377\377\377\377\5\250\274\270\377\267\307\304\377" \
+ "\241\266\262\377\223\254\247\377\321\333\332\377\261\333\343\342\377" \
+ "\4\331\342\341\377\264\301\277\377\200\223\220\377Vni\377\211Slg\377" \
+ "\3^vq\377\220\241\236\377\303\316\314\377\203\333\343\342\377\3_vr\377" \
+ "Slg\377\254\271\267\377\257\333\343\342\377\1\327\340\337\377\202\227" \
+ "\257\252\377\1\370\371\371\377\203\377\377\377\377\12\352\357\356\377" \
+ "\226\256\252\377\223\254\247\377\277\316\313\377\271\311\306\377\223" \
+ "\254\247\377\325\337\335\377\351\356\355\377\223\254\247\377\277\316" \
+ "\313\377\346\333\343\342\377\3\325\336\335\377\223\254\247\377\335\344" \
+ "\343\377\211\377\377\377\377\5\302\320\315\377\241\267\262\377\315\331" \
+ "\326\377\223\254\247\377\263\304\301\377\241\333\343\342\377\6\274\307" \
+ "\306\377\217\241\235\377t\211\205\377|\217\214\377\242\261\256\377\310" \
+ "\322\321\377\210\333\343\342\377\3\311\323\322\377\225\246\243\377by" \
+ "t\377\213Slg\377\2\245\264\261\377\330\341\340\377\205\333\343\342\377" \
+ "\3_vr\377Slg\377\254\271\267\377\257\333\343\342\377\3\314\327\325\377" \
+ "\223\254\247\377\264\305\301\377\204\377\377\377\377\12\307\324\322\377" \
+ "\226\256\252\377\261\303\300\377\230\260\253\377\224\255\250\377\232" \
+ "\261\255\377\367\371\370\377\244\271\265\377\241\266\262\377\331\341" \
+ "\340\377\346\333\343\342\377\3\312\326\324\377\223\254\247\377\353\360" \
+ "\357\377\211\377\377\377\377\5\320\333\331\377\223\254\247\377\361\364" \
+ "\364\377\223\254\247\377\243\270\264\377\237\333\343\342\377\3\327\340" \
+ "\337\377\217\241\235\377Tlg\377\205Slg\377\1\236\255\253\377\204\333" \
+ "\343\342\377\3\326\337\336\377\253\271\266\377v\212\206\377\212Slg\377" \
+ "\2g}y\377\222\243\240\377\202Slg\377\1\305\320\316\377\206\333\343\342" \
+ "\377\3\264\301\277\377\260\275\273\377\314\326\324\377\257\333\343\342" \
+ "\377\3\316\331\330\377\223\254\247\377\263\304\301\377\204\377\377\377" \
+ "\377\11\351\356\355\377\226\256\251\377\223\254\247\377\251\275\271\377" \
+ "\223\254\247\377\272\312\307\377\244\271\265\377\225\255\251\377\316" \
+ "\331\327\377\347\333\343\342\377\3\326\337\336\377\223\254\247\377\332" \
+ "\343\341\377\211\377\377\377\377\5\277\316\313\377\243\270\264\377\363" \
+ "\365\365\377\223\254\247\377\246\272\266\377\237\333\343\342\377\1\217" \
+ "\241\235\377\203Slg\377\2e{w\377czu\377\203Slg\377\5\254\271\267\377" \
+ "\333\343\342\377\300\313\311\377\213\235\232\377[sn\377\211Slg\377\5" \
+ "Yql\377\206\231\225\377\273\307\305\377\333\343\342\377\316\327\326\377" \
+ "\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\321\334\332\377\223" \
+ "\254\247\377\256\301\275\377\205\377\377\377\377\3\366\370\367\377\346" \
+ "\354\352\377\237\265\260\377\202\223\254\247\377\2\240\266\262\377\315" \
+ "\330\327\377\351\333\343\342\377\2\235\264\257\377\275\314\311\377\210" \
+ "\377\377\377\377\6\375\375\375\377\243\271\264\377\271\311\306\377\356" \
+ "\362\361\377\223\254\247\377\251\275\271\377\236\333\343\342\377\5\274" \
+ "\307\306\377Tlg\377Slg\377e{w\377\300\313\311\377\202\333\343\342\377" \
+ "\5\274\307\306\377axt\377Slg\377Vni\377k\201}\377\212Slg\377\3r\207\203" \
+ "\377\246\265\262\377\324\335\334\377\203\333\343\342\377\1\316\327\326" \
+ "\377\202Slg\377\1\305\320\316\377\270\333\343\342\377\3\324\336\334\377" \
+ "\223\254\247\377\251\275\271\377\206\377\377\377\377\5\335\344\343\377" \
+ "\223\254\247\377\233\262\255\377\300\316\314\377\331\341\340\377\352" \
+ "\333\343\342\377\3\272\312\307\377\223\254\247\377\343\351\350\377\207" \
+ "\377\377\377\377\6\310\325\322\377\224\254\250\377\350\355\354\377\351" \
+ "\356\355\377\223\254\247\377\254\277\273\377\236\333\343\342\377\1\217" \
+ "\241\235\377\202Slg\377\1\300\313\311\377\204\333\343\342\377\1\270\305" \
+ "\303\377\212Slg\377\3_wr\377\222\243\240\377\306\320\317\377\206\333" \
+ "\343\342\377\1\316\327\326\377\202Slg\377\1\305\320\316\377\270\333\343" \
+ "\342\377\3\327\340\337\377\223\254\247\377\245\272\266\377\206\377\377" \
+ "\377\377\3\257\301\276\377\223\254\247\377\306\323\320\377\354\333\343" \
+ "\342\377\4\332\342\341\377\244\271\265\377\233\262\255\377\335\345\343" \
+ "\377\204\377\377\377\377\10\375\376\375\377\312\326\324\377\224\254\250" \
+ "\377\307\324\321\377\377\377\377\377\344\352\351\377\223\254\247\377" \
+ "\257\301\276\377\236\333\343\342\377\3t\211\205\377Slg\377g~y\377\206" \
+ "\333\343\342\377\1\\to\377\206Slg\377\4Uni\377}\221\215\377\261\277\274" \
+ "\377\330\341\340\377\210\333\343\342\377\1\316\327\326\377\202Slg\377" \
+ "\1\305\320\316\377\270\333\343\342\377\3\332\342\341\377\223\254\247" \
+ "\377\240\266\262\377\205\377\377\377\377\4\356\361\361\377\223\254\247" \
+ "\377\234\263\257\377\332\342\341\377\355\333\343\342\377\17\324\336\334" \
+ "\377\250\273\270\377\223\254\247\377\261\303\277\377\312\326\324\377" \
+ "\327\340\336\377\304\322\317\377\246\273\267\377\223\254\247\377\304" \
+ "\322\317\377\375\375\375\377\377\377\377\377\340\347\345\377\223\254" \
+ "\247\377\262\303\300\377\236\333\343\342\377\3v\212\206\377Slg\377f|" \
+ "x\377\206\333\343\342\377\1[sn\377\204Slg\377\3i\177{\377\235\255\252" \
+ "\377\317\330\327\377\213\333\343\342\377\1\316\327\326\377\202Slg\377" \
+ "\1\305\320\316\377\271\333\343\342\377\2\225\255\251\377\234\263\256" \
+ "\377\205\377\377\377\377\3\300\317\314\377\223\254\247\377\272\312\307" \
+ "\377\360\333\343\342\377\7\277\316\313\377\245\272\266\377\227\257\252" \
+ "\377\223\254\247\377\225\255\250\377\257\301\276\377\346\353\352\377" \
+ "\203\377\377\377\377\3\333\343\342\377\223\254\247\377\265\306\302\377" \
+ "\236\333\343\342\377\1\220\242\236\377\202Slg\377\1\277\312\310\377\204" \
+ "\333\343\342\377\1\266\302\300\377\205Slg\377\3z\216\212\377\257\274" \
+ "\272\377\330\340\337\377\213\333\343\342\377\1\316\327\326\377\202Sl" \
+ "g\377\1\305\320\316\377\271\333\343\342\377\2\230\260\253\377\230\257" \
+ "\253\377\204\377\377\377\377\4\371\373\372\377\230\260\253\377\225\255" \
+ "\251\377\326\337\336\377\362\333\343\342\377\4\332\342\341\377\266\307" \
+ "\304\377\223\254\247\377\302\320\315\377\204\377\377\377\377\3\326\337" \
+ "\335\377\223\254\247\377\267\310\305\377\236\333\343\342\377\14\276\311" \
+ "\307\377Tmh\377Slg\377d{v\377\274\307\306\377\333\343\342\377\321\332" \
+ "\331\377\235\255\252\377^vq\377Slg\377Vni\377k\201}\377\204Slg\377\3" \
+ "^uq\377\217\241\235\377\304\317\315\377\211\333\343\342\377\1\316\327" \
+ "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\2\233\262\255" \
+ "\377\223\254\247\377\204\377\377\377\377\3\322\334\332\377\223\254\247" \
+ "\377\256\301\275\377\364\333\343\342\377\4\325\336\335\377\225\255\250" \
+ "\377\231\261\254\377\372\373\373\377\203\377\377\377\377\3\321\334\332" \
+ "\377\223\254\247\377\272\312\307\377\237\333\343\342\377\1\223\244\240" \
+ "\377\203Slg\377\2_vr\377Wpk\377\203Slg\377\5\254\271\267\377\333\343" \
+ "\342\377\300\314\312\377\214\236\233\377\\so\377\204Slg\377\3p\205\201" \
+ "\377\245\263\261\377\324\334\333\377\206\333\343\342\377\1\316\327\326" \
+ "\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\236\264\260\377" \
+ "\223\254\247\377\373\374\374\377\203\377\377\377\377\3\245\271\265\377" \
+ "\223\254\247\377\315\330\326\377\365\333\343\342\377\3\255\300\274\377" \
+ "\223\254\247\377\324\336\334\377\203\377\377\377\377\3\315\330\326\377" \
+ "\223\254\247\377\275\314\312\377\237\333\343\342\377\3\330\340\337\377" \
+ "\225\246\243\377Umh\377\205Slg\377\1\236\255\253\377\204\333\343\342" \
+ "\377\4\327\337\336\377\254\271\267\377w\214\210\377Tlg\377\203Slg\377" \
+ "\3Xpk\377\205\230\224\377\272\306\304\377\204\333\343\342\377\1\316\327" \
+ "\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377\3\241\266\262" \
+ "\377\223\254\247\377\366\370\370\377\202\377\377\377\377\3\343\352\350" \
+ "\377\223\254\247\377\243\270\264\377\366\333\343\342\377\3\314\327\325" \
+ "\377\223\254\247\377\246\273\267\377\203\377\377\377\377\3\307\324\322" \
+ "\377\223\254\247\377\300\316\314\377\241\333\343\342\377\6\302\315\313" \
+ "\377\230\250\245\377}\220\215\377\203\226\222\377\246\265\262\377\311" \
+ "\324\322\377\210\333\343\342\377\3\313\325\323\377\227\250\245\377d{" \
+ "v\377\204Slg\377\5f}x\377\233\253\250\377\315\327\325\377\333\343\342" \
+ "\377\316\327\326\377\202Slg\377\1\305\320\316\377\271\333\343\342\377" \
+ "\3\244\271\265\377\223\254\247\377\362\365\364\377\202\377\377\377\377" \
+ "\3\266\307\303\377\223\254\247\377\301\317\315\377\367\333\343\342\377" \
+ "\3\241\267\263\377\223\254\247\377\345\353\352\377\202\377\377\377\377" \
+ "\3\303\321\316\377\223\254\247\377\303\321\317\377\261\333\343\342\377" \
+ "\4\332\342\341\377\267\304\302\377\203\226\222\377Wpk\377\203Slg\377" \
+ "\3Tmh\377|\217\214\377\245\264\261\377\202Slg\377\1\305\320\316\377\206" \
+ "\333\343\342\377\3\317\331\327\377\316\327\326\377\326\337\336\377\260" \
+ "\333\343\342\377\10\247\273\267\377\223\254\247\377\301\317\314\377\333" \
+ "\343\341\377\344\352\351\377\224\255\250\377\231\260\254\377\331\341" \
+ "\340\377\367\333\343\342\377\10\300\316\314\377\223\254\247\377\265\306" \
+ "\303\377\345\353\351\377\322\335\333\377\250\274\270\377\223\254\247" \
+ "\377\306\323\321\377\264\333\343\342\377\3\323\334\332\377\243\262\257" \
+ "\377o\204\200\377\206Slg\377\1\267\304\302\377\206\333\343\342\377\3" \
+ "_vr\377Slg\377\254\271\267\377\260\333\343\342\377\1\252\275\271\377" \
+ "\205\223\254\247\377\1\266\306\303\377\370\333\343\342\377\2\330\341" \
+ "\340\377\230\260\253\377\205\223\254\247\377\1\311\325\323\377\267\333" \
+ "\343\342\377\3\303\316\314\377\217\240\235\377]up\377\204Slg\377\3r\207" \
+ "\203\377\246\265\262\377\324\335\334\377\203\333\343\342\377\3_vr\377" \
+ "Slg\377\254\271\267\377\260\333\343\342\377\7\327\337\336\377\220\243" \
+ "\237\377k\204\177\377u\216\211\377\205\235\230\377\235\263\257\377\323" \
+ "\334\333\377\371\333\343\342\377\7\267\307\304\377\233\261\255\377~\227" \
+ "\222\377q\212\205\377m\206\201\377\273\310\306\377\332\342\341\377\271" \
+ "\333\343\342\377\4\330\340\337\377\256\274\271\377z\216\212\377Tmh\377" \
+ "\203Slg\377\7Yql\377\206\231\225\377\273\307\305\377\333\343\342\377" \
+ "_vr\377Slg\377\254\271\267\377\261\333\343\342\377\1x\214\210\377\202" \
+ "Slg\377\1~\221\216\377\374\333\343\342\377\5\325\335\334\377axt\377S" \
+ "lg\377Tmh\377\251\270\265\377\275\333\343\342\377\3\315\326\325\377\232" \
+ "\252\247\377f}x\377\204Slg\377\4g}y\377Woj\377Slg\377\254\271\267\377" \
+ "\261\333\343\342\377\1}\220\215\377\202Slg\377\1\240\257\254\377\375" \
+ "\333\343\342\377\1f}x\377\202Slg\377\1\222\243\240\377\300\333\343\342" \
+ "\377\3\272\306\304\377\206\230\225\377Xql\377\204Slg\377\1\254\271\267" \
+ "\377\261\333\343\342\377\4\216\237\234\377Slg\377_wr\377\326\336\335" \
+ "\377\375\333\343\342\377\4r\207\203\377Slg\377axt\377\317\330\327\377" \
+ "\302\333\343\342\377\3\324\334\333\377\246\264\262\377q\207\202\377\202" \
+ "Slg\377\1\254\271\267\377\261\333\343\342\377\3\237\257\254\377Slg\377" \
+ "\240\257\254\377\376\333\343\342\377\3\216\240\235\377Wpk\377\246\264" \
+ "\262\377\306\333\343\342\377\3_vr\377Slg\377\254\271\267\377\261\333" \
+ "\343\342\377\3\260\276\273\377axt\377\326\337\336\377\376\333\343\342" \
+ "\377\2\265\302\277\377v\213\207\377\307\333\343\342\377\3_vr\377Slg\377" \
+ "\254\271\267\377\261\333\343\342\377\2\302\315\313\377\242\261\256\377" \
+ "\377\333\343\342\377\311\333\343\342\377\3z\216\212\377p\205\201\377" \
+ "\266\303\301\377\261\333\343\342\377\2\326\336\335\377\327\340\337\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343" \
+ "\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377" \
+ "\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333" \
+ "\343\342\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342" \
+ "\377\377\333\343\342\377\377\333\343\342\377\377\333\343\342\377\377" \
+ "\333\343\342\377\344\333\343\342\377")
+
+
diff --git a/packages/psplash/psplash_svn.bb b/packages/psplash/psplash_svn.bb
index 6b51d33597..668770760f 100644
--- a/packages/psplash/psplash_svn.bb
+++ b/packages/psplash/psplash_svn.bb
@@ -3,7 +3,7 @@ SECTION = "base"
LICENSE = "GPL"
PV = "0.0+svn${SRCDATE}"
-PR = "r3"
+PR = "r4"
# 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.4.4-manifest.inc b/packages/python/python-2.4.4-manifest.inc
index 33f5bac2f2..d8a62c63da 100644
--- a/packages/python/python-2.4.4-manifest.inc
+++ b/packages/python/python-2.4.4-manifest.inc
@@ -1,5 +1,5 @@
########################################################################################################################
-### AUTO-GENERATED by '/local/pkg/oe/org.openembedded.dev/contrib/python/generate-manifest.py' [(C) 2002-2007 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Mon Dec 25 00:05:05 2006
+### AUTO-GENERATED by './generate-manifest.py' [(C) 2002-2007 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Thu Jun 21 09:51:32 2007
###
### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
###
@@ -8,273 +8,279 @@
########################################################################################################################
-PROVIDES+="python-profile python-threading python-distutils python-textutils python-codecs python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-resource python-devel python-math python-hotshot python-unixadmin python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-syslog python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-misc"
+PROVIDES+="python-profile python-threading python-distutils python-textutils python-codecs python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
-PACKAGES="python-profile python-threading python-distutils python-textutils python-codecs python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-resource python-devel python-math python-hotshot python-unixadmin python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-syslog python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-misc-dbg python-misc"
-
-DESCRIPTION_python-misc-dbg="Misc Python debug files"
-FILES_python-misc-dbg="${libdir}/python2.4/lib-dynload/.debug"
-RDEPENDS_python-misc-dbg="python-core"
-
-DESCRIPTION_python-misc="Misc Python files"
-PR_python-misc="ml1"
-FILES_python-misc="${libdir}/python2.4/"
-RDEPENDS_python-misc="python-core"
+PACKAGES="python-profile python-threading python-distutils python-textutils python-codecs python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
DESCRIPTION_python-profile="Python Basic Profiling Support"
-PR_python-profile="ml0"
+PR_python-profile="ml2"
RDEPENDS_python-profile="python-core"
FILES_python-profile="${libdir}/python2.4/profile.* ${libdir}/python2.4/pstats.* "
DESCRIPTION_python-threading="Python Threading & Synchronization Support"
-PR_python-threading="ml0"
+PR_python-threading="ml2"
RDEPENDS_python-threading="python-core python-lang"
FILES_python-threading="${libdir}/python2.4/_threading_local.* ${libdir}/python2.4/dummy_thread.* ${libdir}/python2.4/dummy_threading.* ${libdir}/python2.4/mutex.* ${libdir}/python2.4/threading.* ${libdir}/python2.4/Queue.* "
DESCRIPTION_python-distutils="Python Distribution Utilities"
-PR_python-distutils="ml0"
+PR_python-distutils="ml2"
RDEPENDS_python-distutils="python-core"
FILES_python-distutils="${libdir}/python2.4/config ${libdir}/python2.4/distutils "
DESCRIPTION_python-textutils="Python Option Parsing, Text Wrapping and Comma-Separated-Value Support"
-PR_python-textutils="ml0"
+PR_python-textutils="ml2"
RDEPENDS_python-textutils="python-core python-io python-re python-stringold"
FILES_python-textutils="${libdir}/python2.4/lib-dynload/_csv.so ${libdir}/python2.4/csv.* ${libdir}/python2.4/optparse.* ${libdir}/python2.4/textwrap.* "
DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support"
-PR_python-codecs="ml0"
+PR_python-codecs="ml2"
RDEPENDS_python-codecs="python-core"
FILES_python-codecs="${libdir}/python2.4/codecs.* ${libdir}/python2.4/encodings ${libdir}/python2.4/gettext.* ${libdir}/python2.4/locale.* ${libdir}/python2.4/lib-dynload/_locale.so ${libdir}/python2.4/lib-dynload/unicodedata.so ${libdir}/python2.4/stringprep.* ${libdir}/python2.4/xdrlib.* "
DESCRIPTION_python-pickle="Python Persistence Support"
-PR_python-pickle="ml0"
+PR_python-pickle="ml2"
RDEPENDS_python-pickle="python-core python-codecs python-io python-re"
FILES_python-pickle="${libdir}/python2.4/pickle.* ${libdir}/python2.4/shelve.* ${libdir}/python2.4/lib-dynload/cPickle.so "
DESCRIPTION_python-datetime="Python Calendar and Time support"
-PR_python-datetime="ml0"
+PR_python-datetime="ml2"
RDEPENDS_python-datetime="python-core python-codecs"
FILES_python-datetime="${libdir}/python2.4/_strptime.* ${libdir}/python2.4/calendar.* ${libdir}/python2.4/lib-dynload/datetime.so "
DESCRIPTION_python-core="Python Interpreter and core modules (needed!)"
-PR_python-core="ml0"
+PR_python-core="ml4"
RDEPENDS_python-core=""
-FILES_python-core="/usr/lib/python2.4/__future__.* /usr/lib/python2.4/copy.* /usr/lib/python2.4/copy_reg.* /usr/lib/python2.4/ConfigParser.py /usr/lib/python2.4/getopt.* /usr/lib/python2.4/linecache.* /usr/lib/python2.4/new.* /usr/lib/python2.4/os.* /usr/lib/python2.4/posixpath.* /usr/lib/python2.4/warnings.* /usr/lib/python2.4/site.* /usr/lib/python2.4/stat.* /usr/lib/python2.4/UserDict.* /usr/lib/python2.4/UserList.* /usr/lib/python2.4/UserString.* /usr/lib/python2.4/lib-dynload/binascii.so /usr/lib/python2.4/lib-dynload/struct.so /usr/lib/python2.4/lib-dynload/time.so /usr/lib/python2.4/lib-dynload/xreadlines.so /usr/lib/python2.4/types.* /usr/bin/python "
+FILES_python-core="/usr/lib/python2.4/__future__.* /usr/lib/python2.4/copy.* /usr/lib/python2.4/copy_reg.* /usr/lib/python2.4/ConfigParser.* /usr/lib/python2.4/getopt.* /usr/lib/python2.4/linecache.* /usr/lib/python2.4/new.* /usr/lib/python2.4/os.* /usr/lib/python2.4/posixpath.* /usr/lib/python2.4/warnings.* /usr/lib/python2.4/site.* /usr/lib/python2.4/stat.* /usr/lib/python2.4/UserDict.* /usr/lib/python2.4/UserList.* /usr/lib/python2.4/UserString.* /usr/lib/python2.4/lib-dynload/binascii.so /usr/lib/python2.4/lib-dynload/struct.so /usr/lib/python2.4/lib-dynload/time.so /usr/lib/python2.4/lib-dynload/xreadlines.so /usr/lib/python2.4/types.* /usr/bin/python* "
DESCRIPTION_python-io="Python Low-Level I/O"
-PR_python-io="ml0"
+PR_python-io="ml2"
RDEPENDS_python-io="python-core python-math"
FILES_python-io="${libdir}/python2.4/lib-dynload/_socket.so ${libdir}/python2.4/lib-dynload/_ssl.so ${libdir}/python2.4/lib-dynload/select.so ${libdir}/python2.4/lib-dynload/termios.so ${libdir}/python2.4/lib-dynload/cStringIO.so ${libdir}/python2.4/pipes.* ${libdir}/python2.4/socket.* ${libdir}/python2.4/tempfile.* ${libdir}/python2.4/StringIO.* "
DESCRIPTION_python-compiler="Python Compiler Support"
-PR_python-compiler="ml0"
+PR_python-compiler="ml2"
RDEPENDS_python-compiler="python-core"
FILES_python-compiler="${libdir}/python2.4/compiler "
DESCRIPTION_python-compression="Python High Level Compression Support"
-PR_python-compression="ml0"
+PR_python-compression="ml2"
RDEPENDS_python-compression="python-core python-zlib"
FILES_python-compression="${libdir}/python2.4/gzip.* ${libdir}/python2.4/zipfile.* "
DESCRIPTION_python-re="Python Regular Expression APIs"
-PR_python-re="ml0"
+PR_python-re="ml2"
RDEPENDS_python-re="python-core"
FILES_python-re="${libdir}/python2.4/re.* ${libdir}/python2.4/sre.* ${libdir}/python2.4/sre_compile.* ${libdir}/python2.4/sre_constants* ${libdir}/python2.4/sre_parse.* "
DESCRIPTION_python-xmlrpc="Python XMLRPC Support"
-PR_python-xmlrpc="ml0"
+PR_python-xmlrpc="ml2"
RDEPENDS_python-xmlrpc="python-core python-xml python-netserver python-lang"
FILES_python-xmlrpc="${libdir}/python2.4/xmlrpclib.* ${libdir}/python2.4/SimpleXMLRPCServer.* "
DESCRIPTION_python-terminal="Python Terminal Controlling Support"
-PR_python-terminal="ml0"
+PR_python-terminal="ml2"
RDEPENDS_python-terminal="python-core python-io"
FILES_python-terminal="${libdir}/python2.4/pty.* ${libdir}/python2.4/tty.* "
DESCRIPTION_python-email="Python Email Support"
-PR_python-email="ml0"
-RDEPENDS_python-email="python-core python-io python-re"
+PR_python-email="ml2"
+RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image"
FILES_python-email="${libdir}/python2.4/email "
DESCRIPTION_python-image="Python Graphical Image Handling"
-PR_python-image="ml0"
+PR_python-image="ml2"
RDEPENDS_python-image="python-core"
FILES_python-image="${libdir}/python2.4/colorsys.* ${libdir}/python2.4/imghdr.* ${libdir}/python2.4/lib-dynload/imageop.so ${libdir}/python2.4/lib-dynload/rgbimg.so "
+DESCRIPTION_python-core-dbg="Python core module debug information"
+PR_python-core-dbg="ml2"
+RDEPENDS_python-core-dbg="python-core"
+FILES_python-core-dbg="/usr/lib/python2.4/lib-dynload/.debug /usr/bin/.debug /usr/lib/.debug "
+
DESCRIPTION_python-resource="Python Resource Control Interface"
-PR_python-resource="ml0"
+PR_python-resource="ml2"
RDEPENDS_python-resource="python-core"
FILES_python-resource="${libdir}/python2.4/lib-dynload/resource.so "
DESCRIPTION_python-devel="Python Development Package"
-PR_python-devel="ml0"
+PR_python-devel="ml2"
RDEPENDS_python-devel="python-core"
FILES_python-devel="/usr/include /usr/lib/python2.4/config "
DESCRIPTION_python-math="Python Math Support"
-PR_python-math="ml0"
+PR_python-math="ml2"
RDEPENDS_python-math="python-core"
FILES_python-math="${libdir}/python2.4/lib-dynload/cmath.so ${libdir}/python2.4/lib-dynload/math.so ${libdir}/python2.4/lib-dynload/_random.so ${libdir}/python2.4/random.* ${libdir}/python2.4/sets.* "
DESCRIPTION_python-hotshot="Python Hotshot Profiler"
-PR_python-hotshot="ml0"
+PR_python-hotshot="ml2"
RDEPENDS_python-hotshot="python-core"
FILES_python-hotshot="${libdir}/python2.4/hotshot ${libdir}/python2.4/lib-dynload/_hotshot.so "
DESCRIPTION_python-unixadmin="Python Unix Administration Support"
-PR_python-unixadmin="ml0"
+PR_python-unixadmin="ml2"
RDEPENDS_python-unixadmin="python-core"
FILES_python-unixadmin="${libdir}/python2.4/lib-dynload/nis.so ${libdir}/python2.4/lib-dynload/grp.so ${libdir}/python2.4/lib-dynload/pwd.so ${libdir}/python2.4/getpass.* "
+DESCRIPTION_python-syslog="Python's syslog Interface"
+PR_python-syslog="ml2"
+RDEPENDS_python-syslog="python-core"
+FILES_python-syslog="${libdir}/python2.4/lib-dynload/syslog.so "
+
DESCRIPTION_python-tkinter="Python Tcl/Tk Bindings"
-PR_python-tkinter="ml0"
+PR_python-tkinter="ml2"
RDEPENDS_python-tkinter="python-core"
FILES_python-tkinter="${libdir}/python2.4/lib-dynload/_tkinter.so ${libdir}/python2.4/lib-tk "
DESCRIPTION_python-gdbm="Python GNU Database Support"
-PR_python-gdbm="ml0"
+PR_python-gdbm="ml2"
RDEPENDS_python-gdbm="python-core"
FILES_python-gdbm="${libdir}/python2.4/lib-dynload/gdbm.so "
DESCRIPTION_python-fcntl="Python's fcntl Interface"
-PR_python-fcntl="ml0"
+PR_python-fcntl="ml2"
RDEPENDS_python-fcntl="python-core"
FILES_python-fcntl="${libdir}/python2.4/lib-dynload/fcntl.so "
DESCRIPTION_python-netclient="Python Internet Protocol Clients"
-PR_python-netclient="ml0"
+PR_python-netclient="ml2"
RDEPENDS_python-netclient="python-core python-datetime python-io python-lang python-logging python-mime"
FILES_python-netclient="${libdir}/python2.4/*Cookie*.* ${libdir}/python2.4/base64.* ${libdir}/python2.4/cookielib.* ${libdir}/python2.4/ftplib.* ${libdir}/python2.4/gopherlib.* ${libdir}/python2.4/hmac.* ${libdir}/python2.4/httplib.* ${libdir}/python2.4/mimetypes.* ${libdir}/python2.4/nntplib.* ${libdir}/python2.4/poplib.* ${libdir}/python2.4/smtplib.* ${libdir}/python2.4/telnetlib.* ${libdir}/python2.4/urllib.* ${libdir}/python2.4/urllib2.* ${libdir}/python2.4/urlparse.* "
DESCRIPTION_python-pprint="Python Pretty-Print Support"
-PR_python-pprint="ml0"
+PR_python-pprint="ml2"
RDEPENDS_python-pprint="python-core"
FILES_python-pprint="${libdir}/python2.4/pprint.* "
DESCRIPTION_python-netserver="Python Internet Protocol Servers"
-PR_python-netserver="ml0"
+PR_python-netserver="ml2"
RDEPENDS_python-netserver="python-core python-netclient"
FILES_python-netserver="${libdir}/python2.4/cgi.* ${libdir}/python2.4/BaseHTTPServer.* ${libdir}/python2.4/SimpleHTTPServer.* ${libdir}/python2.4/SocketServer.* "
DESCRIPTION_python-curses="Python Curses Support"
-PR_python-curses="ml0"
+PR_python-curses="ml2"
RDEPENDS_python-curses="python-core"
FILES_python-curses="${libdir}/python2.4/curses ${libdir}/python2.4/lib-dynload/_curses.so ${libdir}/python2.4/lib-dynload/_curses_panel.so "
-DESCRIPTION_python-syslog="Python's syslog Interface"
-PR_python-syslog="ml0"
-RDEPENDS_python-syslog="python-core"
-FILES_python-syslog="${libdir}/python2.4/lib-dynload/syslog.so "
+DESCRIPTION_python-smtpd="Python Simple Mail Transport Daemon"
+PR_python-smtpd="ml2"
+RDEPENDS_python-smtpd="python-core python-netserver python-email python-mime"
+FILES_python-smtpd="/usr/bin/smtpd.* "
DESCRIPTION_python-html="Python HTML Processing"
-PR_python-html="ml0"
+PR_python-html="ml2"
RDEPENDS_python-html="python-core"
FILES_python-html="${libdir}/python2.4/formatter.* ${libdir}/python2.4/htmlentitydefs.* ${libdir}/python2.4/htmllib.* ${libdir}/python2.4/markupbase.* ${libdir}/python2.4/sgmllib.* "
DESCRIPTION_python-readline="Python Readline Support"
-PR_python-readline="ml0"
+PR_python-readline="ml2"
RDEPENDS_python-readline="python-core"
FILES_python-readline="${libdir}/python2.4/lib-dynload/readline.so ${libdir}/python2.4/rlcompleter.* "
DESCRIPTION_python-subprocess="Python Subprocess Support"
-PR_python-subprocess="ml0"
-RDEPENDS_python-subprocess="python-core python-io python-re"
+PR_python-subprocess="ml2"
+RDEPENDS_python-subprocess="python-core python-io python-re python-fcntl python-pickle"
FILES_python-subprocess="${libdir}/python2.4/subprocess.* "
DESCRIPTION_python-pydoc="Python Interactive Help Support"
-PR_python-pydoc="ml0"
+PR_python-pydoc="ml2"
RDEPENDS_python-pydoc="python-core python-lang python-stringold python-re"
FILES_python-pydoc="/usr/bin/pydoc /usr/lib/python2.4/pydoc.* "
DESCRIPTION_python-logging="Python Logging Support"
-PR_python-logging="ml0"
+PR_python-logging="ml2"
RDEPENDS_python-logging="python-core"
FILES_python-logging="${libdir}/python2.4/logging "
DESCRIPTION_python-mailbox="Python Mailbox Format Support"
-PR_python-mailbox="ml0"
+PR_python-mailbox="ml2"
RDEPENDS_python-mailbox="python-core python-mime"
FILES_python-mailbox="${libdir}/python2.4/mailbox.* "
DESCRIPTION_python-xml="Python basic XML support."
-PR_python-xml="ml0"
+PR_python-xml="ml2"
RDEPENDS_python-xml="python-core python-re"
FILES_python-xml="${libdir}/python2.4/lib-dynload/pyexpat.so ${libdir}/python2.4/xml ${libdir}/python2.4/xmllib.* "
DESCRIPTION_python-mime="Python MIME Handling APIs"
-PR_python-mime="ml0"
+PR_python-mime="ml2"
RDEPENDS_python-mime="python-core python-io"
-FILES_python-mime="${libdir}/python2.4/mimetools.* ${libdir}/python2.4/quopri.* ${libdir}/python2.4/rfc822.* "
+FILES_python-mime="${libdir}/python2.4/mimetools.* ${libdir}/python2.4/uu.* ${libdir}/python2.4/quopri.* ${libdir}/python2.4/rfc822.* "
DESCRIPTION_python-tests="Python Tests"
-PR_python-tests="ml0"
+PR_python-tests="ml2"
RDEPENDS_python-tests="python-core"
FILES_python-tests="${libdir}/python2.4/test "
DESCRIPTION_python-unittest="Python Unit Testing Framework"
-PR_python-unittest="ml0"
+PR_python-unittest="ml2"
RDEPENDS_python-unittest="python-core python-stringold python-lang"
FILES_python-unittest="${libdir}/python2.4/unittest.* "
DESCRIPTION_python-stringold="Python String APIs [deprecated]"
-PR_python-stringold="ml0"
+PR_python-stringold="ml2"
RDEPENDS_python-stringold="python-core python-re"
FILES_python-stringold="${libdir}/python2.4/lib-dynload/strop.so ${libdir}/python2.4/string.* "
+DESCRIPTION_python-robotparser="Python robots.txt parser"
+PR_python-robotparser="ml2"
+RDEPENDS_python-robotparser="python-core python-netclient"
+FILES_python-robotparser="${libdir}/python2.4/robotparser.* "
+
DESCRIPTION_python-lib-old-and-deprecated="Python Deprecated Libraries"
-PR_python-lib-old-and-deprecated="ml0"
+PR_python-lib-old-and-deprecated="ml2"
RDEPENDS_python-lib-old-and-deprecated="python-core"
FILES_python-lib-old-and-deprecated="${libdir}/python2.4/lib-old "
DESCRIPTION_python-compile="Python Bytecode Compilation Support"
-PR_python-compile="ml0"
+PR_python-compile="ml2"
RDEPENDS_python-compile="python-core"
FILES_python-compile="${libdir}/python2.4/py_compile.* ${libdir}/python2.4/compileall.* "
DESCRIPTION_python-shell="Python Shell-Like Functionality"
-PR_python-shell="ml0"
+PR_python-shell="ml2"
RDEPENDS_python-shell="python-core python-re"
FILES_python-shell="${libdir}/python2.4/commands.* ${libdir}/python2.4/dircache.* ${libdir}/python2.4/fnmatch.* ${libdir}/python2.4/glob.* ${libdir}/python2.4/popen2.* ${libdir}/python2.4/shutil.* "
DESCRIPTION_python-bsddb="Python Berkeley Database Bindings"
-PR_python-bsddb="ml0"
+PR_python-bsddb="ml2"
RDEPENDS_python-bsddb="python-core"
FILES_python-bsddb="${libdir}/python2.4/bsddb "
DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
-PR_python-mmap="ml0"
+PR_python-mmap="ml2"
RDEPENDS_python-mmap="python-core python-io"
FILES_python-mmap="${libdir}/python2.4/lib-dynload/mmap.so "
DESCRIPTION_python-zlib="Python zlib Support."
-PR_python-zlib="ml0"
+PR_python-zlib="ml2"
RDEPENDS_python-zlib="python-core"
FILES_python-zlib="${libdir}/python2.4/lib-dynload/zlib.so "
DESCRIPTION_python-db="Python File-Based Database Support"
-PR_python-db="ml0"
+PR_python-db="ml2"
RDEPENDS_python-db="python-core"
FILES_python-db="${libdir}/python2.4/anydbm.* ${libdir}/python2.4/dumbdbm.* ${libdir}/python2.4/whichdb.* "
DESCRIPTION_python-crypt="Python Basic Cryptographic and Hashing Support"
-PR_python-crypt="ml0"
+PR_python-crypt="ml2"
RDEPENDS_python-crypt="python-core"
FILES_python-crypt="${libdir}/python2.4/lib-dynload/crypt.so ${libdir}/python2.4/lib-dynload/md5.so ${libdir}/python2.4/lib-dynload/rotor.so ${libdir}/python2.4/lib-dynload/sha.so "
DESCRIPTION_python-idle="Python Integrated Development Environment"
-PR_python-idle="ml0"
+PR_python-idle="ml2"
RDEPENDS_python-idle="python-core python-tkinter"
FILES_python-idle="/usr/bin/idle /usr/lib/python2.4/idlelib "
DESCRIPTION_python-lang="Python Low-Level Language Support"
-PR_python-lang="ml0"
+PR_python-lang="ml2"
RDEPENDS_python-lang="python-core"
FILES_python-lang="${libdir}/python2.4/lib-dynload/array.so ${libdir}/python2.4/lib-dynload/parser.so ${libdir}/python2.4/lib-dynload/operator.so ${libdir}/python2.4/lib-dynload/_weakref.so ${libdir}/python2.4/lib-dynload/itertools.so ${libdir}/python2.4/lib-dynload/collections.so ${libdir}/python2.4/lib-dynload/_bisect.so ${libdir}/python2.4/lib-dynload/_heapq.so ${libdir}/python2.4/atexit.* ${libdir}/python2.4/bisect.* ${libdir}/python2.4/code.* ${libdir}/python2.4/codeop.* ${libdir}/python2.4/dis.* ${libdir}/python2.4/heapq.* ${libdir}/python2.4/inspect.* ${libdir}/python2.4/keyword.* ${libdir}/python2.4/opcode.* ${libdir}/python2.4/repr.* ${libdir}/python2.4/token.* ${libdir}/python2.4/tokenize.* ${libdir}/python2.4/traceback.* ${libdir}/python2.4/linecache.* ${libdir}/python2.4/weakref.* "
DESCRIPTION_python-audio="Python Audio Handling"
-PR_python-audio="ml0"
+PR_python-audio="ml2"
RDEPENDS_python-audio="python-core"
-FILES_python-audio="${libdir}/python2.4/wave.* ${libdir}/python2.4/chunk.* ${libdir}/python2.4/lib-dynload/ossaudiodev.so ${libdir}/python2.4/lib-dynload/audioop.so "
+FILES_python-audio="${libdir}/python2.4/wave.* ${libdir}/python2.4/chunk.* ${libdir}/python2.4/sndhdr.* ${libdir}/python2.4/lib-dynload/ossaudiodev.so ${libdir}/python2.4/lib-dynload/audioop.so "
diff --git a/packages/python/python-fam_1.1.1.bb b/packages/python/python-fam_1.1.1.bb
new file mode 100644
index 0000000000..cf74265aa3
--- /dev/null
+++ b/packages/python/python-fam_1.1.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Python access to the File Alteration Monitor"
+HOMEPAGE = "http://python-fam.sourceforge.net/"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "fam"
+RDEPENDS = "fam python-core python-io"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
+
+inherit distutils
+
diff --git a/packages/python/python-pygtk2_2.6.3.bb b/packages/python/python-pygtk2_2.6.3.bb
index ffd837f0da..417de0a109 100644
--- a/packages/python/python-pygtk2_2.6.3.bb
+++ b/packages/python/python-pygtk2_2.6.3.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "Python GTK+ Bindings"
SECTION = "devel/python"
-# needs gtk+-2.6.x
-DEPENDS = "gtk+ libglade"
+DEPENDS = "gtk+-2.6.10 libglade"
RDEPENDS = "python-shell"
SRCNAME = "pygtk"
LICENSE = "LGPL"
diff --git a/packages/python/python-pygtk2_2.8.6.bb b/packages/python/python-pygtk2_2.8.6.bb
index b3d8c93584..361737684c 100644
--- a/packages/python/python-pygtk2_2.8.6.bb
+++ b/packages/python/python-pygtk2_2.8.6.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "Python GTK+ Bindings"
SECTION = "devel/python"
PRIORITY = "optional"
-DEPENDS = "gtk+ libglade"
+# needs gtk+ 2.8.x
+DEPENDS = "gtk+-2.8.16 libglade"
RDEPENDS = "python-shell"
SRCNAME = "pygtk"
LICENSE = "LGPL"
diff --git a/packages/python/python-setuptools_0.6c5.bb b/packages/python/python-setuptools_0.6c5.bb
new file mode 100644
index 0000000000..0ee3a02229
--- /dev/null
+++ b/packages/python/python-setuptools_0.6c5.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Download, build, install, upgrade, and uninstall Python packages"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/setuptools"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT-like"
+RDEPENDS = "python-core python-zlib"
+SRCNAME = "setuptools"
+PR = "r0"
+
+SRC_URI = "http://cheeseshop.python.org/packages/source/s/setuptools/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_install_prepend() {
+ install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages
+}
+
+do_stage() {
+ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
+ ${STAGING_BINDIR_NATIVE}/python setup.py install
+}
+
+# Deal with .pth file error
+export PYTHONPATH="${D}/${libdir}/${PYTHON_DIR}/site-packages"
+
diff --git a/packages/python/python-simplejson_1.7.1.bb b/packages/python/python-simplejson_1.7.1.bb
new file mode 100644
index 0000000000..e41d9085af
--- /dev/null
+++ b/packages/python/python-simplejson_1.7.1.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "Simple, fast, extensible JSON encoder/decoder for Python"
+HOMEPAGE = "http://cheeseshop.python.org/pypi/simplejson"
+SECTION = "devel/python"
+PRIORITY = "optional"
+LICENSE = "MIT"
+DEPENDS = "python-setuptools"
+# python-netserver is needed for cgi stuff
+# python-zlib is needed to unpack egg created by setuptools
+RDEPENDS = "python-core python-re python-io python-netserver python-zlib"
+SRCNAME = "simplejson"
+PR = "r0"
+
+SRC_URI = "http://cheeseshop.python.org/packages/source/s/simplejson/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
+
+do_install_prepend() {
+ install -d ${D}/${libdir}/${PYTHON_DIR}/site-packages
+}
+
+# Deal with .pth file error
+export PYTHONPATH="${D}/${libdir}/python2.4/site-packages"
+
diff --git a/packages/python/python_2.4.4.bb b/packages/python/python_2.4.4.bb
index 303f956721..6ec186cb83 100644
--- a/packages/python/python_2.4.4.bb
+++ b/packages/python/python_2.4.4.bb
@@ -5,7 +5,7 @@ SECTION = "devel/python"
PRIORITY = "optional"
DEPENDS = "python-native readline zlib gdbm openssl tcl tk"
DEPENDS_sharprom = "python-native readline zlib gdbm openssl"
-PR = "ml1"
+PR = "ml2"
PYTHON_MAJMIN = "2.4"
@@ -68,3 +68,12 @@ RPROVIDES_python-core = "python"
RPROVIDES_python-curses = "python"
PACKAGES =+ "libpython2"
FILES_libpython2 = "${libdir}/libpython*"
+
+# catch all the rest (unsorted)
+PACKAGES += "python-misc"
+FILES_python-misc = "${libdir}/python2.4"
+
+# catch manpage
+PACKAGES += "python-man"
+FILES_python-man = "${datadir}/man"
+
diff --git a/packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2 b/packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
deleted file mode 100644
index 8ddb3cc83d..0000000000
--- a/packages/s3c2410-utils/files/s3c2410_boot_usb-20060807.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2 b/packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2
deleted file mode 100644
index 3458364699..0000000000
--- a/packages/s3c2410-utils/files/sjf2410-linux-20060807.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb b/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
deleted file mode 100644
index f53d175a80..0000000000
--- a/packages/s3c2410-utils/s3c2410-boot-usb-native_20060807.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "Boots a S3C2410 device with a user supplied kernel zImage"
-DEPENDS = "libusb-native"
-SECTION = "devel"
-AUTHOR = "Harald Welte"
-LICENSE = "GPL"
-PR = "r0"
-
-SRC_URI = "file://s3c2410_boot_usb-20060807.tar.bz2"
-S = "${WORKDIR}/s3c2410_boot_usb"
-
-inherit native
-
-do_compile() {
- ${CC} ${CFLAGS} ${LDFLAGS} -lusb -o s3c2410-boot-usb boot_usb.c
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0755 s3c2410-boot-usb ${DEPLOY_DIR_IMAGE}
-}
-
-do_stage() {
- :
-}
-
-do_install() {
- :
-}
-
-addtask deploy before do_build after do_compile
diff --git a/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb b/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
deleted file mode 100644
index 0ec6642dc2..0000000000
--- a/packages/s3c2410-utils/sjf2410-linux-native_20060807.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Jtag utility to interface w/ a S3C2410 device"
-SECTION = "devel"
-AUTHOR = "Harald Welte"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "file://sjf2410-linux-20060807.tar.bz2"
-S = "${WORKDIR}/sjf2410-linux"
-
-inherit native
-
-CFLAGS += "-DLINUX_PPDEV"
-
-do_compile() {
- oe_runmake
-}
-
-do_deploy() {
- install -d ${DEPLOY_DIR_IMAGE}
- install -m 0755 sjf2410 ${DEPLOY_DIR_IMAGE}/sjf2410
-}
-
-do_stage() {
- :
-}
-
-do_install() {
- :
-}
-
-addtask deploy before do_package after do_install
diff --git a/packages/sidplay-base/.mtn2git_empty b/packages/sidplay-base/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sidplay-base/.mtn2git_empty
diff --git a/packages/sidplay-base/sidplay-base_1.0.9.bb b/packages/sidplay-base/sidplay-base_1.0.9.bb
new file mode 100644
index 0000000000..f6d3af14c1
--- /dev/null
+++ b/packages/sidplay-base/sidplay-base_1.0.9.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "A spartanic SID music player based on libsidplay 1.x"
+SECTION = "console/multimedia"
+LICENSE = "GPL"
+HOMEPAGE = "http://www.geocities.com/SiliconValley/Lakes/5147/sidplay/linux.html"
+DEPENDS = "libsidplay"
+
+SRC_URI = "http://www.geocities.com/SiliconValley/Lakes/5147/sidplay/packages/sidplay-base-${PV}.tgz"
+S = "${WORKDIR}/sidplay-base-${PV}"
+
+inherit autotools
diff --git a/packages/slugos-init/files/initscripts/umountinitrd.sh b/packages/slugos-init/files/initscripts/umountinitrd.sh
index 2798fe5985..93f05a00f6 100644
--- a/packages/slugos-init/files/initscripts/umountinitrd.sh
+++ b/packages/slugos-init/files/initscripts/umountinitrd.sh
@@ -20,6 +20,8 @@ do
umount /mnt;;
/initrd)# need the device for a remount
ffsdev="$(mtblockdev $ffspart)"
+ [ -n "$ffsdev" ] || \
+ ffsdev="$(mtblockdev rootfs)"
echo "Remounting $ffsdev read-only on /initrd" >&2
if test -n "$ffsdev" -a -b "$ffsdev"
then
diff --git a/packages/slugos-init/files/reflash b/packages/slugos-init/files/reflash
index 131f0b67de..22a18bb068 100644
--- a/packages/slugos-init/files/reflash
+++ b/packages/slugos-init/files/reflash
@@ -146,7 +146,7 @@ then
then
imgksize="$size"
imgkoffset="$base"
- elif test "$name" = "$ffspart"
+ elif test "$name" = "$ffspart" -o "$name" = "rootfs"
then
imgffssize="$size"
imgffsoffset="$base"
@@ -320,6 +320,8 @@ ffssize=0
if test -n "$ffsfile"
then
ffsdev="$(mtblockdev $ffspart)"
+ [ -n "$ffsdev" ] || \
+ ffsdev="$(mtblockdev rootfs)"
test -n "$ffsdev" -a -b "$ffsdev" || {
echo "reflash: $ffspart($ffsdev): cannot find $ffspart mtd partition." >&2
echo " check /proc/mtd, either the partition does not exist or there is no" >&2
diff --git a/packages/slugos-init/files/sysconf b/packages/slugos-init/files/sysconf
index d91c184425..84a14af550 100644
--- a/packages/slugos-init/files/sysconf
+++ b/packages/slugos-init/files/sysconf
@@ -8,7 +8,6 @@
# to load these functions!)
test "$1" != sysconf && . /etc/default/functions
-# NSLU2 flash layout is non-standard.
case "$(machine)" in
nslu2)
kpart="Kernel"
@@ -493,6 +492,8 @@ sysconf_test_restore(){
sysconf_save(){
local sysdev ffsdev ffsdir saved list size status
ffsdev="$(mtblockdev $ffspart)"
+ [ -n "$ffsdev" ] || \
+ ffsdev="$(mtblockdev rootfs)"
sysdev="$(mtblockdev $syspart)"
status=1
if test -n "$sysdev" -a -b "$sysdev" -a -n "$ffsdev" -a -b "$ffsdev"
@@ -622,6 +623,8 @@ sysconf_restore(){
test "$1" = auto && sysconf_noninteractive=1
ffsdev="$(mtblockdev $ffspart)"
+ [ -n "$ffsdev" ] || \
+ ffsdev="$(mtblockdev rootfs)"
sysdev="$(mtblockdev $syspart)"
status=1
if test -n "$sysdev" -a -b "$sysdev" -a -n "$ffsdev" -a -b "$ffsdev" &&
diff --git a/packages/slugos-init/files/turnup b/packages/slugos-init/files/turnup
index 10bccb8279..761e07829d 100644
--- a/packages/slugos-init/files/turnup
+++ b/packages/slugos-init/files/turnup
@@ -159,7 +159,7 @@ fsoptions() {
# get_flash <directory> {mount options}
# mount the flash device, writeable, on the given directory
get_flash() {
- local ffsdir ffsdev
+ local ffsdir ffspart ffsdev
ffsdir="$1"
shift
@@ -169,9 +169,12 @@ get_flash() {
}
case "$(machine)" in
- nslu2) ffsdev="$(mtblockdev Flashdisk)";;
- *) ffsdev="$(mtblockdev filesystem)";;
+ nslu2) ffspart="Flashdisk";;
+ *) ffspart="filesystem";;
esac
+ ffsdev="$(mtblockdev $ffspart)"
+ [ -n "$ffsdev" ] || \
+ ffsdev="$(mtblockdev rootfs)"
umountflash "$ffsdev" &&
mountflash "$ffsdev" "$ffsdir" "$@"
}
diff --git a/packages/slugos-init/slugos-init_0.10.bb b/packages/slugos-init/slugos-init_0.10.bb
index 77e1efb314..8e08a3d755 100644
--- a/packages/slugos-init/slugos-init_0.10.bb
+++ b/packages/slugos-init/slugos-init_0.10.bb
@@ -4,7 +4,7 @@ PRIORITY = "required"
LICENSE = "GPL"
DEPENDS = "base-files devio"
RDEPENDS = "busybox devio"
-PR = "r84"
+PR = "r86"
SRC_URI = "file://boot/flash \
file://boot/disk \
diff --git a/packages/sphyrna/.mtn2git_empty b/packages/sphyrna/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sphyrna/.mtn2git_empty
diff --git a/packages/sphyrna/sphyrna_svn.bb b/packages/sphyrna/sphyrna_svn.bb
new file mode 100644
index 0000000000..048d001905
--- /dev/null
+++ b/packages/sphyrna/sphyrna_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Sphyrna - Hammerhead Reverse Engineering"
+HOMEPAGE = "http://projects.linuxtogo.org/projects/sphyrna"
+LICENSE = "GPLv2"
+DEPENDS = "readline"
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://projects.linuxtogo.org/svn;module=sphyrna"
+
+S = "${WORKDIR}/${PN}"
+
+inherit autotools
+
+PACKAGES = "sphyrna-console sphyrna-python"
+
+FILES_sphyrna-console = "${bindir}/hhconsole"
+FILES_sphyrna-python = "${bindir}/decode.py ${libdir}/python2.4/site-packages/sphyrna/*"
+
+PACKAGE_ARCH_sphyrna-python = "all"
+RDEPENDS_sphyrna-python = "python-core python-re"
diff --git a/packages/sysvinit/sysvinit_2.86.bb b/packages/sysvinit/sysvinit_2.86.bb
index c8ce5ba191..7360a13104 100644
--- a/packages/sysvinit/sysvinit_2.86.bb
+++ b/packages/sysvinit/sysvinit_2.86.bb
@@ -51,7 +51,8 @@ EXTRA_OEMAKE += "'INSTALL=install' \
'usrbindir=${bindir}' \
'usrsbindir=${sbindir}' \
'includedir=${includedir}' \
- 'mandir=${mandir}'"
+ 'mandir=${mandir}' \
+ DISTRO=''"
do_install () {
oe_runmake 'ROOT=${D}' install
diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb
index d89d781202..0c11eeedc1 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 = "r36"
+PR = "r37"
DEPENDS = "task-boot"
PROVIDES = "${PACKAGES}"
@@ -196,8 +196,7 @@ RRECOMMENDS_task-base-alsa = "\
RDEPENDS_task-base-pcmcia = "\
${PCMCIA_MANAGER} \
- ${@base_contains('DISTRO_FEATURES', 'wifi', 'prism3-firmware', '',d)} \
- ${@base_contains('DISTRO_FEATURES', 'wifi', 'prism3-support', '',d)} \
+ ${@base_contains('DISTRO_FEATURES', 'wifi', 'prism-firmware', '',d)} \
${@base_contains('DISTRO_FEATURES', 'wifi', 'spectrum-fw', '',d)} \
"
diff --git a/packages/tasks/task-boot.bb b/packages/tasks/task-boot.bb
index 4f3b0fc817..3d08f465ba 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 = "r36"
+PR = "r37"
PROVIDES = "${PACKAGES}"
PACKAGES = 'task-boot'
@@ -46,11 +46,9 @@ RDEPENDS_task-boot = "\
${DISTRO_DEV_MANAGER} \
${DISTRO_INIT_MANAGER} \
${DISTRO_LOGIN_MANAGER} \
- ${DISTRO_EXTRA_RDEPENDS} \
${MACHINE_ESSENTIAL_EXTRA_RDEPENDS} \
- ${MACHINE_EXTRA_RDEPENDS}"
+ "
RRECOMMENDS_task-boot = "\
${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS} \
- ${MACHINE_EXTRA_RRECOMMENDS} \
- ${DISTRO_EXTRA_RRECOMMENDS} "
+ "
diff --git a/packages/tasks/task-hentges-base.bb b/packages/tasks/task-hentges-base.bb
deleted file mode 100644
index 89b39aeba9..0000000000
--- a/packages/tasks/task-hentges-base.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
-# License: MIT (see http://www.opensource.org/licenses/mit-license.php
-# for a copy of the license)
-#
-# Filename: task-hentges-base.bb
-# Date: 20070516 (YMD)
-
-DESCRIPTION = "task-hentges-base"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "MIT"
-
-######################################################################################
-
-ALLOW_EMPTY = "1"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-######################################################################################
-
-PV = "${HENTGES_PV}"
-PR = "${HENTGES_PR}"
-
-######################################################################################
-
-#DEPENDS = "${HENTGES_DEPENDS}"
-#
-RDEPENDS = "${HENTGES_BASE_RDEPENDS}"
diff --git a/packages/tasks/task-hentges-x11.bb b/packages/tasks/task-hentges-x11.bb
deleted file mode 100644
index db658e9014..0000000000
--- a/packages/tasks/task-hentges-x11.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
-# License: MIT (see http://www.opensource.org/licenses/mit-license.php
-# for a copy of the license)
-#
-# Filename: task-hentges-x11.bb
-# Date: 20070522 (YMD)
-
-DESCRIPTION = "task-hentges-x11"
-HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
-LICENSE = "MIT"
-
-######################################################################################
-
-ALLOW_EMPTY = "1"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-######################################################################################
-
-PV = "${HENTGES_PV}"
-PR = "${HENTGES_PR}"
-
-######################################################################################
-
-DEPENDS = "task-angstrom-x11"
-
-RDEPENDS = "${HENTGES_X11_RDEPENDS}"
diff --git a/packages/tasks/task-opie-16mb.bb b/packages/tasks/task-opie-16mb.bb
new file mode 100644
index 0000000000..610e06ffb0
--- /dev/null
+++ b/packages/tasks/task-opie-16mb.bb
@@ -0,0 +1,54 @@
+DESCRIPTION = "Tasks for small OPIE image"
+SECTION = "opie/base"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+ALLOW_EMPTY = "1"
+LICENSE = "MIT"
+
+PR = "r0"
+
+PACKAGES = "task-opie-16mb-base \
+ task-opie-16mb-applets \
+ task-opie-16mb-inputmethods \
+ task-opie-16mb-settings \
+ task-opie-16mb-apps \
+ task-opie-16mb-pim \
+ "
+
+#
+# Dependencies to get the launcher up and running
+#
+RDEPENDS_task-opie-16mb-base = "opie-init opie-alarm opie-qcop opie-qss opie-quicklauncher \
+ opie-taskbar opie-pics opie-sounds opie-freetype \
+ ttf-dejavu-sans ttf-dejavu-sans-mono"
+
+#
+# things for reasonable bootstrap image
+#
+RDEPENDS_task-opie-16mb-applets = "opie-aboutapplet opie-clockapplet opie-suspendapplet \
+ opie-homeapplet opie-rotateapplet \
+ opie-brightnessapplet opie-volumeapplet \
+ opie-screenshotapplet \
+ ${@base_contains("COMBINED_FEATURES", "irda", "opie-irdaapplet", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "apm", "opie-batteryapplet", "",d)} \
+ ${@base_contains("COMBINED_FEATURES", "pcmcia", "opie-pcmciaapplet", "",d)} \
+ ${@base_contains("MACHINE_FEATURES", "keyboard", "opie-vtapplet opie-logoutapplet", "",d)}"
+
+#
+# clamshell models can benefit from the autorotate applet
+#
+RDEPENDS_task-opie-16mb-applets_append_c7x0 = " opie-autorotateapplet"
+RDEPENDS_task-opie-16mb-applets_append_spitz = " opie-autorotateapplet"
+RDEPENDS_task-opie-16mb-applets_append_akita = " opie-autorotateapplet"
+
+RDEPENDS_task-opie-16mb-inputmethods = "opie-multikey"
+
+RDEPENDS_task-opie-16mb-settings = "opie-packagemanager opie-light-and-power opie-appearance \
+ opie-systemtime opie-networksettings opie-button-settings \
+ opie-icon-reload opie-launcher-settings opie-security \
+ opie-securityplugin-pin"
+
+RDEPENDS_task-opie-16mb-apps = "opie-console opie-clock opie-backup opie-sysinfo \
+ opie-advancedfm"
+
+RDEPENDS_task-opie-16mb-pim = "opie-addressbook opie-datebook opie-drawpad \
+ opie-search opie-textedit opie-today opie-todo"
diff --git a/packages/tasks/task-opie-all.bb b/packages/tasks/task-opie-all.bb
new file mode 100644
index 0000000000..c47aa0c420
--- /dev/null
+++ b/packages/tasks/task-opie-all.bb
@@ -0,0 +1,65 @@
+DESCRIPTION = "Tasks for OPIE stuff"
+SECTION = "opie/base"
+ALLOW_EMPTY = "1"
+LICENSE = "MIT"
+
+PACKAGES = "task-opie-applets task-opie-inputmethods task-opie-styles \
+ task-opie-decorations task-opie-multimedia"
+
+#
+# all OPIE stuff
+#
+RDEPENDS_task-opie-applets = "opie-aboutapplet opie-autorotateapplet opie-batteryapplet \
+ opie-bluetoothapplet opie-brightnessapplet opie-cardmon \
+ opie-clipboardapplet opie-clockapplet opie-homeapplet \
+ opie-irdaapplet opie-lockapplet opie-logoutapplet \
+ opie-mailapplet opie-memoryapplet opie-multikeyapplet \
+ opie-networkapplet opie-notesapplet opie-pcmciaapplet \
+ opie-pyquicklaunchapplet opie-restartapplet \
+ opie-restartapplet2 opie-rotateapplet \
+ opie-screenshotapplet opie-suspendapplet opie-vmemo \
+ opie-volumeapplet opie-vtapplet opie-zkbapplet \
+ "
+RDEPENDS_task-opie-inputmethods = "opie-dasher opie-dvorak opie-handwriting \
+ opie-handwriting-classicset opie-jumpx opie-keyboard \
+ opie-keyview opie-kjumpx opie-multikey opie-unikeyboard"
+
+RDEPENDS_task-opie-styles = "opie-style-flat opie-style-fresh opie-style-liquid opie-style-metal \
+ opie-style-web opie-style-phase opie-theme"
+
+RDEPENDS_task-opie-decorations = "opie-deco-flat opie-deco-liquid opie-deco-polished"
+
+RDEPENDS_task-opie-multimedia = "opie-mediaplayer1 \
+ opie-mediaplayer1-libmadplugin \
+ opie-mediaplayer1-libmodplugin \
+ opie-mediaplayer1-libtremorplugin \
+ opie-mediaplayer1-libwavplugin \
+ opie-mediaplayer2 \
+ opie-mediaplayer2-skin-default \
+ opie-mediaplayer2-skin-default-landscape \
+ opie-mediaplayer2-skin-pod \
+ opie-mediaplayer2-skin-techno \
+ opie-powerchord opie-recorder opie-tonleiter"
+
+RDEPENDS_task-opie-settings = "opie-appearance opie-aqpkg opie-backup opie-button-settings \
+ opie-citytime opie-confeditor opie-doctab \
+ opie-formatter opie-language opie-launcher-settings \
+ opie-light-and-power opie-mediummount opie-networksettings \
+ opie-packagemanager opie-security opie-sshkeys opie-sysinfo \
+ opie-systemtime opie-usermanager opie-icon-reload \
+ opie-vmemo-settings"
+
+RDEPENDS_task-opie-pim = "task-opie-base-pim task-opie-todayplugins task-opie-datebookplugins \
+ opie-mail opie-pimconverter"
+
+RDEPENDS_task-opie-datebookplugins= "opie-datebook-birthdayplugin \
+ opie-datebook-chrisholidayplugin \
+ opie-datebook-nationalholidayplugin"
+
+RDEPENDS_task-opie-todayplugins = "opie-today-addressbookplugin opie-today-datebookplugin \
+ opie-today-fortuneplugin opie-today-mailplugin \
+ opie-today-stocktickerplugin opie-today-todolistplugin \
+ opie-today-weatherplugin"
+
+RDEPENDS_task-opie-wlan = "wireless-tools opie-wellenreiter opie-networksettings-wlanplugin"
+
diff --git a/packages/tasks/task-opie-apps.bb b/packages/tasks/task-opie-apps.bb
new file mode 100644
index 0000000000..1c03dcc9d9
--- /dev/null
+++ b/packages/tasks/task-opie-apps.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Tasks for OPIE stuff"
+SECTION = "opie/base"
+ALLOW_EMPTY = "1"
+LICENSE = "MIT"
+
+PACKAGES = "task-opie-apps task-opie-extra-apps"
+
+RDEPENDS_task-opie-apps = "opie-advancedfm opie-bartender opie-calculator \
+ opie-checkbook opie-clock \
+ opie-console opie-dagger opie-embeddedkonsole \
+ opie-euroconv opie-eye opie-ftp opie-gutenbrowser \
+ opie-helpbrowser opie-irc opie-keypebble opie-odict \
+ opie-oxygen opie-rdesktop opie-reader opie-remote \
+ opie-sheet opie-tableviewer opie-tinykate \
+ opie-wellenreiter opie-write opie-zsafe"
+
+#
+# additional things for a >= 24mb distribution
+#
+
+RDEPENDS_task-opie-extra-apps = "opie-calculator opie-checkbook opie-mail opie-eye \
+ opie-rdesktop opie-wellenreiter opie-irc \
+ opie-mediaplayer2 \
+ qpdf2"
+# konqueror-embedded
diff --git a/packages/tasks/task-opie-games.bb b/packages/tasks/task-opie-games.bb
new file mode 100644
index 0000000000..70d2f39b29
--- /dev/null
+++ b/packages/tasks/task-opie-games.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Tasks for OPIE stuff"
+SECTION = "opie/base"
+ALLOW_EMPTY = "1"
+LICENSE = "MIT"
+
+PACKAGES = "task-opie-games task-opie-extra-games"
+
+RDEPENDS_task-opie-games = "opie-backgammon opie-bounce opie-buzzword opie-fifteen \
+ opie-go opie-kbill opie-kcheckers opie-kpacman opie-mindbreaker \
+ opie-minesweep opie-oyatzee opie-parashoot opie-qasteroids \
+ opie-sfcave opie-snake opie-solitaire opie-tetrix opie-tictac \
+ opie-wordgame opie-zlines opie-zsame"
+
+#
+# additional things for a >= 24mb distribution
+#
+
+RDEPENDS_task-opie-extra-games = "opie-parashoot opie-mindbreaker opie-fifteen opie-tictac \
+ opie-tetrix"
+
diff --git a/packages/tasks/task-opie.bb b/packages/tasks/task-opie.bb
index 960770ef7c..7380b5fc20 100644
--- a/packages/tasks/task-opie.bb
+++ b/packages/tasks/task-opie.bb
@@ -5,20 +5,18 @@ ALLOW_EMPTY = "1"
LICENSE = "MIT"
PROVIDES = "task-opie-everything"
-PR = "r7"
+PR = "r9"
-PACKAGES = "task-opie-applets task-opie-apps task-opie-base \
+PACKAGES = "task-opie-base \
task-opie-base-applets task-opie-base-apps \
task-opie-base-decorations task-opie-base-inputmethods \
task-opie-base-pim task-opie-base-settings \
task-opie-base-styles task-opie-bluetooth \
task-opie-base-todayplugins \
- task-opie-datebookplugins task-opie-decorations \
- task-opie-extra-apps task-opie-extra-settings \
- task-opie-extra-styles task-opie-extra-games \
- task-opie-games task-opie-inputmethods task-opie-irda \
- task-opie-multimedia task-opie-pim task-opie-settings \
- task-opie-styles task-opie-todayplugins task-opie-wlan"
+ task-opie-extra-settings \
+ task-opie-extra-styles \
+ task-opie-irda \
+ "
RDEPENDS_task-opie-everything := "${PACKAGES}"
@@ -36,7 +34,7 @@ RDEPENDS_task-opie-base = "opie-init opie-alarm opie-qcop opie-qss opie-quicklau
#
RDEPENDS_task-opie-base-applets = "opie-aboutapplet opie-clockapplet opie-suspendapplet \
opie-homeapplet opie-rotateapplet \
- opie-brightnessapplet opie-volumeapplet \
+ opie-brightnessapplet opie-volumeapplet \
opie-screenshotapplet \
${@base_contains("COMBINED_FEATURES", "irda", "opie-irdaapplet", "",d)} \
${@base_contains("COMBINED_FEATURES", "apm", "opie-batteryapplet", "",d)} \
@@ -85,93 +83,7 @@ RDEPENDS_task-opie-base-pim = "opie-addressbook opie-datebook opie-drawpad \
task-opie-base-todayplugins \
opie-datebook-birthdayplugin"
-#
-# all OPIE stuff
-#
-RDEPENDS_task-opie-applets = "opie-aboutapplet opie-autorotateapplet opie-batteryapplet \
- opie-bluetoothapplet opie-brightnessapplet opie-cardmon \
- opie-clipboardapplet opie-clockapplet opie-homeapplet \
- opie-irdaapplet opie-lockapplet opie-logoutapplet \
- opie-mailapplet opie-memoryapplet opie-multikeyapplet \
- opie-networkapplet opie-notesapplet opie-pcmciaapplet \
- opie-pyquicklaunchapplet opie-restartapplet \
- opie-restartapplet2 opie-rotateapplet \
- opie-screenshotapplet opie-suspendapplet opie-vmemo \
- opie-volumeapplet opie-vtapplet opie-zkbapplet \
- "
-RDEPENDS_task-opie-apps = "opie-advancedfm opie-bartender opie-calculator \
- opie-checkbook opie-clock \
- opie-console opie-dagger opie-embeddedkonsole \
- opie-euroconv opie-eye opie-ftp opie-gutenbrowser \
- opie-helpbrowser opie-irc opie-keypebble opie-odict \
- opie-oxygen opie-rdesktop opie-reader opie-remote \
- opie-sheet opie-tableviewer opie-tinykate \
- opie-wellenreiter opie-write opie-zsafe"
-
-RDEPENDS_task-opie-decorations = "opie-deco-flat opie-deco-liquid opie-deco-polished"
-
-RDEPENDS_task-opie-games = "opie-backgammon opie-bounce opie-buzzword opie-fifteen \
- opie-go opie-kbill opie-kcheckers opie-kpacman opie-mindbreaker \
- opie-minesweep opie-oyatzee opie-parashoot opie-qasteroids \
- opie-sfcave opie-snake opie-solitaire opie-tetrix opie-tictac \
- opie-wordgame opie-zlines opie-zsame"
-
-RDEPENDS_task-opie-inputmethods = "opie-dasher opie-dvorak opie-handwriting \
- opie-handwriting-classicset opie-jumpx opie-keyboard \
- opie-keyview opie-kjumpx opie-multikey opie-unikeyboard"
-
-RDEPENDS_task-opie-multimedia = "opie-mediaplayer1 \
- opie-mediaplayer1-libmadplugin \
- opie-mediaplayer1-libmodplugin \
- opie-mediaplayer1-libtremorplugin \
- opie-mediaplayer1-libwavplugin \
- opie-mediaplayer2 \
- opie-mediaplayer2-skin-default \
- opie-mediaplayer2-skin-default-landscape \
- opie-mediaplayer2-skin-pod \
- opie-mediaplayer2-skin-techno \
- opie-powerchord opie-recorder opie-tonleiter"
-
-RDEPENDS_task-opie-settings = "opie-appearance opie-aqpkg opie-backup opie-button-settings \
- opie-citytime opie-confeditor opie-doctab \
- opie-formatter opie-language opie-launcher-settings \
- opie-light-and-power opie-mediummount opie-networksettings \
- opie-packagemanager opie-security opie-sshkeys opie-sysinfo \
- opie-systemtime opie-usermanager opie-icon-reload \
- opie-vmemo-settings"
-
-RDEPENDS_task-opie-styles = "opie-style-flat opie-style-fresh opie-style-liquid opie-style-metal \
- opie-style-web opie-style-phase opie-theme"
-
-RDEPENDS_task-opie-datebookplugins= "opie-datebook-birthdayplugin \
- opie-datebook-chrisholidayplugin \
- opie-datebook-nationalholidayplugin"
-
-RDEPENDS_task-opie-todayplugins = "opie-today-addressbookplugin opie-today-datebookplugin \
- opie-today-fortuneplugin opie-today-mailplugin \
- opie-today-stocktickerplugin opie-today-todolistplugin \
- opie-today-weatherplugin"
-
-RDEPENDS_task-opie-pim = "task-opie-base-pim task-opie-todayplugins task-opie-datebookplugins \
- opie-mail opie-pimconverter"
-
RDEPENDS_task-opie-bluetooth = "bluez-utils obexftp obexpush libopieobex0 \
opie-bluepin opie-bluetoothmanager opie-bluetoothapplet"
-RDEPENDS_task-opie-wlan = "wireless-tools opie-wellenreiter opie-networksettings-wlanplugin"
-
RDEPENDS_task-opie-irda = "irda-utils libopieobex0 obexftp obexpush"
-
-#
-# additional things for a >= 24mb distribution
-#
-
-RDEPENDS_task-opie-extra-apps = "opie-calculator opie-checkbook opie-mail opie-eye \
- opie-rdesktop opie-wellenreiter opie-irc \
- opie-mediaplayer2 \
- qpdf2"
-# konqueror-embedded
-
-RDEPENDS_task-opie-extra-games = "opie-parashoot opie-mindbreaker opie-fifteen opie-tictac \
- opie-tetrix"
-
diff --git a/packages/tasks/task-python-everything_20060425.bb b/packages/tasks/task-python-everything_20060425.bb
index 5824ed39c7..5723a4294f 100644
--- a/packages/tasks/task-python-everything_20060425.bb
+++ b/packages/tasks/task-python-everything_20060425.bb
@@ -1,7 +1,7 @@
DESCRIPTION= "Everything Python"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml10"
+PR = "ml13"
BROKEN_BECAUSE_GCC4 = "\
python-egenix-mx-base"
@@ -13,6 +13,7 @@ RDEPENDS = "\
python-crypto \
python-dialog \
python-pycurl \
+ python-fam \
python-fnorb \
python-fpconst \
python-gammu \
@@ -56,6 +57,8 @@ RDEPENDS = "\
python-quicklauncher \
python-scapy \
python-scons \
+ python-setuptools \
+ python-simplejson \
python-sip \
python-sgmlop \
python-snmplib \
diff --git a/packages/tasks/task-slugos.bb b/packages/tasks/task-slugos.bb
index acb6bcaae5..3596e9ea1e 100644
--- a/packages/tasks/task-slugos.bb
+++ b/packages/tasks/task-slugos.bb
@@ -6,7 +6,7 @@
DESCRIPTION = "Task packages for the SlugOS distribution"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r9"
+PR = "r10"
PACKAGE_ARCH = "${MACHINE_ARCH}"
ALLOW_EMPTY = "1"
@@ -95,6 +95,11 @@ SLUGOS_STANDARD_RRECOMMENDS += "\
kernel-module-via-velocity \
"
+# Add modules required for Wifi support
+SLUGOS_STANDARD_RRECOMMENDS += "\
+madwifi-ng-modules madwifi-ng-tools \
+"
+
# Add modules required for Network Console support
# NOTE: This module is desirable for systems lacking a physical
# console, but is usually only enabled if specific needs or issues
diff --git a/packages/tetex/tetex-native_3.0.bb b/packages/tetex/tetex-native_3.0.bb
index ed487452bf..4d683ff3d1 100644
--- a/packages/tetex/tetex-native_3.0.bb
+++ b/packages/tetex/tetex-native_3.0.bb
@@ -1,7 +1,7 @@
require tetex_${PV}.bb
inherit native
DEPENDS = ""
-PR = "r1"
+PR = "r2"
PACKAGES=""
RRECOMMENDS_${PN}=""
@@ -28,3 +28,8 @@ do_install () {
:
}
+
+do_rm_work () {
+ :
+}
+
diff --git a/packages/tetex/tetex_3.0.bb b/packages/tetex/tetex_3.0.bb
index 68e5184439..eedf8820b2 100644
--- a/packages/tetex/tetex_3.0.bb
+++ b/packages/tetex/tetex_3.0.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.tug.org/tetex"
LICENSE = "GPL"
SECTION = "console/utils"
DEPENDS = "tetex-native flex gd ncurses libpng t1lib virtual/libx11 libxau libxext libxt zlib"
-PR = "r5"
+PR = "r6"
SRC_URI = "ftp://dante.ctan.org/tex-archive/systems/unix/teTeX/current/distrib/tetex-src-${PV}.tar.gz \
file://configure.patch;patch=1"
@@ -26,7 +26,7 @@ EXTRA_OECONF = "--with-system-libgd \
--with-system-zlib \
--without-dialog \
--without-xdvik \
- --without-x11 \
+ --with-x11 \
--without-mf-x-toolkit"
# NOTE: In theory, teTeX has a good buildsystem, which automatically detects
@@ -49,7 +49,7 @@ do_configure() {
install:
echo "mickey _is_ cool - he tamed the tetex buildsystem"
all:
- echo "mickeys suck - he adds easter eggs in output that no one will ever read..."
+ echo "mickey sucks - he adds easter eggs in output that no one will ever read..."
EOF
}
# NOTE: Make sure it is using _our_ libtool and nothing else :/
@@ -83,10 +83,16 @@ do_install() {
DESTDIR="" \
LIBTOOL="${STAGING_BINDIR_NATIVE}/${HOST_SYS}-libtool"
MAKE="make -e" oe_runmake -e install
+ ln -sf ${bindir}/pdfetex ${D}${bindir}/latex
+ mv ${D}${libdir}/.libs/* ${D}${libdir}/ -f || true
}
-RRECOMMENDS_${PN} = "tetex-texmf-dvips tetex-texmf-texconfig tetex-texmf-fonts"
-PACKAGES =+ "tetex-texmf-dvips tetex-texmf-texconfig tetex-texi2html"
+RRECOMMENDS_${PN} = "tetex-bin tetex-texmf-dvips tetex-texmf-texconfig tetex-texmf-fonts"
+PACKAGES =+ "libkpathsea tetex-bin tetex-texmf-dvips tetex-texmf-texconfig tetex-texi2html"
+
+FILES_libkpathsea = "${libdir}/libkpathsea.so.*"
+FILES_tetex-bin = "${bindir}/*"
+
FILES_${PN} += "${localstatedir} ${datadir}"
FILES_${PN}-doc += "${datadir}/texinfo ${datadir}/man ${datadir}/info"
FILES_tetex-texmf-dvips = "${datadir}/texmf/dvips"
diff --git a/packages/uboot/files/gta01_nand.h b/packages/uboot/files/gta01_nand.h
deleted file mode 100644
index 04cb743158..0000000000
--- a/packages/uboot/files/gta01_nand.h
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
- *
- * Configuation settings for the FIC GTA01 Linux GSM phone
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* we want to start u-boot directly from within NAND flash */
-#define CONFIG_S3C2410_NAND_BOOT 1
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-
-/* input clock of PLL */
-#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA01 has 12MHz input clock */
-
-
-#define USE_920T_MMU 1
-#define CONFIG_USE_IRQ 1
-
-/*
- * Size of malloc() pool
- */
-#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-
-/*
- * Hardware drivers
- */
-
-/*
- * select serial console configuration
- */
-#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
-//#define CONFIG_HWFLOW 1
-
-/************************************************************
- * RTC
- ************************************************************/
-#define CONFIG_RTC_S3C24X0 1
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE 115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-#define CONFIG_COMMANDS (\
- CFG_CMD_BDI | \
- CFG_CMD_LOADS | \
- CFG_CMD_LAODB | \
- CFG_CMD_IMI | \
- CFG_CMD_CACHE | \
- CFG_CMD_MEMORY | \
- CFG_CMD_ENV | \
- /* CFG_CMD_IRQ | */ \
- CFG_CMD_BOOTD | \
- CFG_CMD_CONSOLE | \
- CFG_CMD_ASKENV | \
- CFG_CMD_RUN | \
- CFG_CMD_ECHO | \
- CFG_CMD_I2C | \
- CFG_CMD_REGINFO | \
- CFG_CMD_IMMAP | \
- CFG_CMD_DATE | \
- CFG_CMD_AUTOSCRIPT | \
- CFG_CMD_BSP | \
- CFG_CMD_ELF | \
- CFG_CMD_MISC | \
- CFG_CMD_USB | \
- CFG_CMD_JFFS2 | \
- CFG_CMD_DIAG | \
- /* CFG_CMD_HWFLOW | */ \
- CFG_CMD_SAVES | \
- CFG_CMD_NAND | \
- CFG_CMD_PORTIO | \
- CFG_CMD_MMC | \
- CFG_CMD_FAT | \
- CFG_CMD_EXT2 | \
- 0)
-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-#include <cmd_confdefs.h>
-
-#define CONFIG_BOOTDELAY 3
-#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
-/*#define CONFIG_BOOTFILE "elinos-lart" */
-#define CONFIG_BOOTCOMMAND "nand load 0x32000000 0x34000 0x200000; bootm 0x32000000"
-
-#define CONFIG_DOS_PARTITION 1
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-/* what's this ? it's not used anywhere */
-#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CFG_LONGHELP /* undef to save memory */
-#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
-#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-#define CFG_MAXARGS 16 /* max number of command args */
-#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-
-#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-
-#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-
-#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define CFG_HZ 1562500
-
-/* valid baudrates */
-#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-
-/*-----------------------------------------------------------------------
- * Stack sizes
- *
- * The stack sizes are set up in start.S using the settings below
- */
-#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-#ifdef CONFIG_USE_IRQ
-#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-#endif
-
-#define CONFIG_USB_OHCI 1
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#if 1
-#define CFG_NO_FLASH 1
-#else
-#define CFG_MAX_FLASH_SECT 1
-#define CFG_MAX_FLASH_BANKS 1
-#endif
-
-#define CFG_ENV_IS_IN_NAND 1
-#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-
-#define NAND_MAX_CHIPS 1
-#define CFG_NAND_BASE 0x4e000000
-#define CFG_MAX_NAND_DEVICE 1
-
-#define CONFIG_MMC 1
-#define CFG_MMC_BASE 0xff000000
-
-/* EXT2 driver */
-#define CONFIG_EXT2 1
-
-/* FAT driver in u-boot is broken currently */
-#define CONFIG_FAT 1
-#define CONFIG_SUPPORT_VFAT 1
-
-/* JFFS2 driver */
-#define CONFIG_JFFS2_NAND 1
-#define CONFIG_JFFS2_NAND_DEV 0
-#define CONFIG_JFFS2_NAND_OFF 0x634000
-#define CONFIG_JFFS2_NAND_SIZE 0x39cc000
-
-/* ATAG configuration */
-#define CONFIG_INITRD_TAG 1
-#define CONFIG_SETUP_MEMORY_TAGS 1
-#define CONFIG_CMDLINE_TAG 1
-#if 0
-#define CONFIG_SERIAL_TAG 1
-#define CONFIG_REVISION_TAG 1
-#endif
-
-#define CONFIG_DRIVER_S3C24X0_I2C 1
-#define CONFIG_HARD_I2C 1
-#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50707 data sheet */
-#define CFG_I2C_SLAVE 0x7f
-
-
-#if 0
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_S3C2410
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-
-#define VIDEO_KBD_INIT_FCT 0
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
-
-#define LCD_VIDEO_ADDR 0x33d00000
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/qt2410.h b/packages/uboot/files/qt2410.h
deleted file mode 100644
index 627f365f86..0000000000
--- a/packages/uboot/files/qt2410.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- * Gary Jennejohn <gj@denx.de>
- * David Mueller <d.mueller@elsoft.ch>
- *
- * Configuation settings for the SAMSUNG SMDK2410 board.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#if 0
-/* If we want to start u-boot from usb bootloader in NOR flash */
-#define CONFIG_SKIP_RELOCATE_UBOOT 1
-#define CONFIG_SKIP_LOWLEVEL_INIT 1
-#else
-/* If we want to start u-boot directly from within NAND flash */
-#define CONFIG_S3C2410_NAND_BOOT 1
-#endif
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-
-/* input clock of PLL */
-#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
-
-
-#define USE_920T_MMU 1
-#define CONFIG_USE_IRQ 1
-//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
-
-/*
- * Size of malloc() pool
- */
-#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-
-/*
- * Hardware drivers
- */
-#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
-#define CS8900_BASE 0x19000300
-#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
-
-/*
- * select serial console configuration
- */
-#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
-#define CONFIG_HWFLOW 1
-
-/************************************************************
- * RTC
- ************************************************************/
-#define CONFIG_RTC_S3C24X0 1
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE 115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-#define CONFIG_COMMANDS \
- (CONFIG_CMD_DFL | \
- CFG_CMD_BSP | \
- CFG_CMD_CACHE | \
- CFG_CMD_DATE | \
- CFG_CMD_DHCP | \
- CFG_CMD_DIAG | \
- CFG_CMD_ELF | \
- CFG_CMD_EXT2 | \
- CFG_CMD_FAT | \
- CFG_CMD_HWFLOW | \
- /* CFG_CMD_IDE | */ \
- /* CFG_CMD_IRQ | */ \
- CFG_CMD_JFFS2 | \
- CFG_CMD_MMC | \
- CFG_CMD_NAND | \
- CFG_CMD_PING | \
- CFG_CMD_PORTIO | \
- CFG_CMD_REGINFO | \
- CFG_CMD_SAVES | \
- CFG_CMD_USB)
-
-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-#include <cmd_confdefs.h>
-
-#define CONFIG_BOOTDELAY 3
-#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
-/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
-#define CONFIG_NETMASK 255.255.255.0
-#define CONFIG_IPADDR 10.0.0.110
-#define CONFIG_SERVERIP 10.0.0.1
-/*#define CONFIG_BOOTFILE "elinos-lart" */
-#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
-
-#define CONFIG_DOS_PARTITION 1
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-/* what's this ? it's not used anywhere */
-#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CFG_LONGHELP /* undef to save memory */
-#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
-#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-#define CFG_MAXARGS 16 /* max number of command args */
-#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-
-#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-
-#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-
-#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define CFG_HZ 1562500
-
-/* valid baudrates */
-#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-
-/*-----------------------------------------------------------------------
- * Stack sizes
- *
- * The stack sizes are set up in start.S using the settings below
- */
-#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-#ifdef CONFIG_USE_IRQ
-#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-#endif
-
-/* IDE/ATA config */
-
-#if 0
-#define CFG_IDE_MAXBUS 1
-#define CFG_IDE_MAXDEVICE 2
-#define CFG_IDE_PREINIT 0
-
-#define CFG_ATA_BASE_ADDR
-#endif
-
-#define CONFIG_USB_OHCI 1
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-
-#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
-
-#define CFG_FLASH_BASE PHYS_FLASH_1
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
-#if 0
-#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
-#endif
-
-#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
-#ifdef CONFIG_AMD_LV800
-#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
-#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
-#endif
-#ifdef CONFIG_AMD_LV400
-#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
-#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
-#endif
-
-/* timeout values are in ticks */
-#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
-#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
-
-#define CFG_ENV_IS_IN_NAND 1
-#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-
-#define NAND_MAX_CHIPS 1
-#define CFG_NAND_BASE 0x4e000000
-#define CFG_MAX_NAND_DEVICE 1
-
-#define CONFIG_MMC 1
-#define CFG_MMC_BASE 0xff000000
-
-#define CONFIG_EXT2 1
-
-/* FAT driver in u-boot is broken currently */
-#define CONFIG_FAT 1
-#define CONFIG_SUPPORT_VFAT
-
-/* ATAG configuration */
-#define CONFIG_INITRD_TAG 1
-#define CONFIG_SETUP_MEMORY_TAGS 1
-#define CONFIG_CMDLINE_TAG 1
-#if 0
-#define CONFIG_SERIAL_TAG 1
-#define CONFIG_REVISION_TAG 1
-#endif
-
-
-#if 0
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_S3C2410
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-
-#define VIDEO_KBD_INIT_FCT 0
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
-
-#define LCD_VIDEO_ADDR 0x33d00000
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/qt2410_nand.h b/packages/uboot/files/qt2410_nand.h
deleted file mode 100644
index 627f365f86..0000000000
--- a/packages/uboot/files/qt2410_nand.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- * Gary Jennejohn <gj@denx.de>
- * David Mueller <d.mueller@elsoft.ch>
- *
- * Configuation settings for the SAMSUNG SMDK2410 board.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#if 0
-/* If we want to start u-boot from usb bootloader in NOR flash */
-#define CONFIG_SKIP_RELOCATE_UBOOT 1
-#define CONFIG_SKIP_LOWLEVEL_INIT 1
-#else
-/* If we want to start u-boot directly from within NAND flash */
-#define CONFIG_S3C2410_NAND_BOOT 1
-#endif
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-
-/* input clock of PLL */
-#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
-
-
-#define USE_920T_MMU 1
-#define CONFIG_USE_IRQ 1
-//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
-
-/*
- * Size of malloc() pool
- */
-#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-
-/*
- * Hardware drivers
- */
-#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
-#define CS8900_BASE 0x19000300
-#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
-
-/*
- * select serial console configuration
- */
-#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
-#define CONFIG_HWFLOW 1
-
-/************************************************************
- * RTC
- ************************************************************/
-#define CONFIG_RTC_S3C24X0 1
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE 115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-#define CONFIG_COMMANDS \
- (CONFIG_CMD_DFL | \
- CFG_CMD_BSP | \
- CFG_CMD_CACHE | \
- CFG_CMD_DATE | \
- CFG_CMD_DHCP | \
- CFG_CMD_DIAG | \
- CFG_CMD_ELF | \
- CFG_CMD_EXT2 | \
- CFG_CMD_FAT | \
- CFG_CMD_HWFLOW | \
- /* CFG_CMD_IDE | */ \
- /* CFG_CMD_IRQ | */ \
- CFG_CMD_JFFS2 | \
- CFG_CMD_MMC | \
- CFG_CMD_NAND | \
- CFG_CMD_PING | \
- CFG_CMD_PORTIO | \
- CFG_CMD_REGINFO | \
- CFG_CMD_SAVES | \
- CFG_CMD_USB)
-
-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-#include <cmd_confdefs.h>
-
-#define CONFIG_BOOTDELAY 3
-#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
-/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
-#define CONFIG_NETMASK 255.255.255.0
-#define CONFIG_IPADDR 10.0.0.110
-#define CONFIG_SERVERIP 10.0.0.1
-/*#define CONFIG_BOOTFILE "elinos-lart" */
-#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
-
-#define CONFIG_DOS_PARTITION 1
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-/* what's this ? it's not used anywhere */
-#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CFG_LONGHELP /* undef to save memory */
-#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
-#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-#define CFG_MAXARGS 16 /* max number of command args */
-#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-
-#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-
-#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-
-#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define CFG_HZ 1562500
-
-/* valid baudrates */
-#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-
-/*-----------------------------------------------------------------------
- * Stack sizes
- *
- * The stack sizes are set up in start.S using the settings below
- */
-#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-#ifdef CONFIG_USE_IRQ
-#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-#endif
-
-/* IDE/ATA config */
-
-#if 0
-#define CFG_IDE_MAXBUS 1
-#define CFG_IDE_MAXDEVICE 2
-#define CFG_IDE_PREINIT 0
-
-#define CFG_ATA_BASE_ADDR
-#endif
-
-#define CONFIG_USB_OHCI 1
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-
-#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
-
-#define CFG_FLASH_BASE PHYS_FLASH_1
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
-#if 0
-#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
-#endif
-
-#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
-#ifdef CONFIG_AMD_LV800
-#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
-#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
-#endif
-#ifdef CONFIG_AMD_LV400
-#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
-#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
-#endif
-
-/* timeout values are in ticks */
-#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
-#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
-
-#define CFG_ENV_IS_IN_NAND 1
-#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-
-#define NAND_MAX_CHIPS 1
-#define CFG_NAND_BASE 0x4e000000
-#define CFG_MAX_NAND_DEVICE 1
-
-#define CONFIG_MMC 1
-#define CFG_MMC_BASE 0xff000000
-
-#define CONFIG_EXT2 1
-
-/* FAT driver in u-boot is broken currently */
-#define CONFIG_FAT 1
-#define CONFIG_SUPPORT_VFAT
-
-/* ATAG configuration */
-#define CONFIG_INITRD_TAG 1
-#define CONFIG_SETUP_MEMORY_TAGS 1
-#define CONFIG_CMDLINE_TAG 1
-#if 0
-#define CONFIG_SERIAL_TAG 1
-#define CONFIG_REVISION_TAG 1
-#endif
-
-
-#if 0
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_S3C2410
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-
-#define VIDEO_KBD_INIT_FCT 0
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
-
-#define LCD_VIDEO_ADDR 0x33d00000
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/qt2410_ram.h b/packages/uboot/files/qt2410_ram.h
deleted file mode 100644
index 62cc88eaf0..0000000000
--- a/packages/uboot/files/qt2410_ram.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- * Gary Jennejohn <gj@denx.de>
- * David Mueller <d.mueller@elsoft.ch>
- *
- * Configuation settings for the SAMSUNG SMDK2410 board.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#if 1
-/* If we want to start u-boot from usb bootloader in NOR flash */
-#define CONFIG_SKIP_RELOCATE_UBOOT 1
-#define CONFIG_SKIP_LOWLEVEL_INIT 1
-#else
-/* If we want to start u-boot directly from within NAND flash */
-#define CONFIG_S3C2410_NAND_BOOT 1
-#endif
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-
-/* input clock of PLL */
-#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
-
-
-#define USE_920T_MMU 1
-#define CONFIG_USE_IRQ 1
-//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
-
-/*
- * Size of malloc() pool
- */
-#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-
-/*
- * Hardware drivers
- */
-#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
-#define CS8900_BASE 0x19000300
-#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
-
-/*
- * select serial console configuration
- */
-#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
-#define CONFIG_HWFLOW 1
-
-/************************************************************
- * RTC
- ************************************************************/
-#define CONFIG_RTC_S3C24X0 1
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE 115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-#define CONFIG_COMMANDS \
- (CONFIG_CMD_DFL | \
- CFG_CMD_BSP | \
- CFG_CMD_CACHE | \
- CFG_CMD_DATE | \
- CFG_CMD_DHCP | \
- CFG_CMD_DIAG | \
- CFG_CMD_ELF | \
- CFG_CMD_EXT2 | \
- CFG_CMD_FAT | \
- CFG_CMD_HWFLOW | \
- /* CFG_CMD_IDE | */ \
- /* CFG_CMD_IRQ | */ \
- CFG_CMD_JFFS2 | \
- CFG_CMD_MMC | \
- CFG_CMD_NAND | \
- CFG_CMD_PING | \
- CFG_CMD_PORTIO | \
- CFG_CMD_REGINFO | \
- CFG_CMD_SAVES | \
- CFG_CMD_USB)
-
-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-#include <cmd_confdefs.h>
-
-#define CONFIG_BOOTDELAY 3
-#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
-/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
-#define CONFIG_NETMASK 255.255.255.0
-#define CONFIG_IPADDR 10.0.0.110
-#define CONFIG_SERVERIP 10.0.0.1
-/*#define CONFIG_BOOTFILE "elinos-lart" */
-#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
-
-#define CONFIG_DOS_PARTITION 1
-
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-/* what's this ? it's not used anywhere */
-#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CFG_LONGHELP /* undef to save memory */
-#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
-#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-#define CFG_MAXARGS 16 /* max number of command args */
-#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-
-#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-
-#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-
-#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define CFG_HZ 1562500
-
-/* valid baudrates */
-#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-
-/*-----------------------------------------------------------------------
- * Stack sizes
- *
- * The stack sizes are set up in start.S using the settings below
- */
-#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-#ifdef CONFIG_USE_IRQ
-#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-#endif
-
-/* IDE/ATA config */
-
-#if 0
-#define CFG_IDE_MAXBUS 1
-#define CFG_IDE_MAXDEVICE 2
-#define CFG_IDE_PREINIT 0
-
-#define CFG_ATA_BASE_ADDR
-#endif
-
-#define CONFIG_USB_OHCI 1
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-
-#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
-
-#define CFG_FLASH_BASE PHYS_FLASH_1
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-
-#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
-#if 0
-#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
-#endif
-
-#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
-#ifdef CONFIG_AMD_LV800
-#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
-#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
-#endif
-#ifdef CONFIG_AMD_LV400
-#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
-#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
-#endif
-
-/* timeout values are in ticks */
-#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
-#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
-
-#define CFG_ENV_IS_IN_NAND 1
-#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-
-#define NAND_MAX_CHIPS 1
-#define CFG_NAND_BASE 0x4e000000
-#define CFG_MAX_NAND_DEVICE 1
-
-#define CONFIG_MMC 1
-#define CFG_MMC_BASE 0xff000000
-
-#define CONFIG_EXT2 1
-
-/* FAT driver in u-boot is broken currently */
-#define CONFIG_FAT 1
-#define CONFIG_SUPPORT_VFAT
-
-/* ATAG configuration */
-#define CONFIG_INITRD_TAG 1
-#define CONFIG_SETUP_MEMORY_TAGS 1
-#define CONFIG_CMDLINE_TAG 1
-#if 0
-#define CONFIG_SERIAL_TAG 1
-#define CONFIG_REVISION_TAG 1
-#endif
-
-
-#if 0
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_S3C2410
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-
-#define VIDEO_KBD_INIT_FCT 0
-#define VIDEO_TSTC_FCT serial_tstc
-#define VIDEO_GETC_FCT serial_getc
-
-#define LCD_VIDEO_ADDR 0x33d00000
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/u-boot-20060807-qt2410.patch b/packages/uboot/files/u-boot-20060807-qt2410.patch
deleted file mode 100644
index ed9f987c81..0000000000
--- a/packages/uboot/files/u-boot-20060807-qt2410.patch
+++ /dev/null
@@ -1,8435 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 128ae59..5d7b5bb 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1638,6 +1638,9 @@ omap730p2_cs3boot_config : unconfig
- sbc2410x_config: unconfig
- @./mkconfig $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
-
-+qt2410_config : unconfig
-+ @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
-+
- scb9328_config : unconfig
- @./mkconfig $(@:_config=) arm arm920t scb9328 NULL imx
-
-diff --git a/board/qt2410/Makefile b/board/qt2410/Makefile
-new file mode 100644
-index 0000000..407b256
---- /dev/null
-+++ b/board/qt2410/Makefile
-@@ -0,0 +1,47 @@
-+#
-+# (C) Copyright 2000, 2001, 2002
-+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-+#
-+# See file CREDITS for list of people who contributed to this
-+# project.
-+#
-+# This program is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU General Public License as
-+# published by the Free Software Foundation; either version 2 of
-+# the License, or (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+# MA 02111-1307 USA
-+#
-+
-+include $(TOPDIR)/config.mk
-+
-+LIB = lib$(BOARD).a
-+
-+OBJS := qt2410.o flash.o
-+SOBJS := lowlevel_init.o
-+
-+$(LIB): $(OBJS) $(SOBJS)
-+ $(AR) crv $@ $(OBJS) $(SOBJS)
-+
-+clean:
-+ rm -f $(SOBJS) $(OBJS)
-+
-+distclean: clean
-+ rm -f $(LIB) core *.bak .depend
-+
-+#########################################################################
-+
-+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
-+
-+-include .depend
-+
-+#########################################################################
-diff --git a/board/qt2410/config.mk b/board/qt2410/config.mk
-new file mode 100644
-index 0000000..1af85da
---- /dev/null
-+++ b/board/qt2410/config.mk
-@@ -0,0 +1,25 @@
-+#
-+# (C) Copyright 2002
-+# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+#
-+# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
-+#
-+# see http://www.samsung.com/ for more information on SAMSUNG
-+#
-+
-+#
-+# SMDK2410 has 1 bank of 64 MB DRAM
-+#
-+# 3000'0000 to 3400'0000
-+#
-+# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-+# optionally with a ramdisk at 3080'0000
-+#
-+# we load ourself to 33F8'0000
-+#
-+# download area is 3300'0000
-+#
-+
-+
-+TEXT_BASE = 0x33F80000
-diff --git a/board/qt2410/flash.c b/board/qt2410/flash.c
-new file mode 100644
-index 0000000..993946b
---- /dev/null
-+++ b/board/qt2410/flash.c
-@@ -0,0 +1,433 @@
-+/*
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Alex Zuepke <azu@sysgo.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+
-+ulong myflush (void);
-+
-+
-+#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
-+#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
-+
-+flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-+
-+
-+#define CMD_READ_ARRAY 0x000000F0
-+#define CMD_UNLOCK1 0x000000AA
-+#define CMD_UNLOCK2 0x00000055
-+#define CMD_ERASE_SETUP 0x00000080
-+#define CMD_ERASE_CONFIRM 0x00000030
-+#define CMD_PROGRAM 0x000000A0
-+#define CMD_UNLOCK_BYPASS 0x00000020
-+
-+#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
-+#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
-+
-+#define BIT_ERASE_DONE 0x00000080
-+#define BIT_RDY_MASK 0x00000080
-+#define BIT_PROGRAM_ERROR 0x00000020
-+#define BIT_TIMEOUT 0x80000000 /* our flag */
-+
-+#define READY 1
-+#define ERR 2
-+#define TMO 4
-+
-+/*-----------------------------------------------------------------------
-+ */
-+
-+ulong flash_init (void)
-+{
-+ int i, j;
-+ ulong size = 0;
-+
-+ for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
-+ ulong flashbase = 0;
-+
-+ flash_info[i].flash_id =
-+#if defined(CONFIG_AMD_LV400)
-+ (AMD_MANUFACT & FLASH_VENDMASK) |
-+ (AMD_ID_LV400B & FLASH_TYPEMASK);
-+#elif defined(CONFIG_AMD_LV800)
-+ (AMD_MANUFACT & FLASH_VENDMASK) |
-+ (AMD_ID_LV800B & FLASH_TYPEMASK);
-+#else
-+#error "Unknown flash configured"
-+#endif
-+ flash_info[i].size = FLASH_BANK_SIZE;
-+ flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
-+ memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
-+ if (i == 0)
-+ flashbase = PHYS_FLASH_1;
-+ else
-+ panic ("configured too many flash banks!\n");
-+ for (j = 0; j < flash_info[i].sector_count; j++) {
-+ if (j <= 3) {
-+ /* 1st one is 16 KB */
-+ if (j == 0) {
-+ flash_info[i].start[j] =
-+ flashbase + 0;
-+ }
-+
-+ /* 2nd and 3rd are both 8 KB */
-+ if ((j == 1) || (j == 2)) {
-+ flash_info[i].start[j] =
-+ flashbase + 0x4000 + (j -
-+ 1) *
-+ 0x2000;
-+ }
-+
-+ /* 4th 32 KB */
-+ if (j == 3) {
-+ flash_info[i].start[j] =
-+ flashbase + 0x8000;
-+ }
-+ } else {
-+ flash_info[i].start[j] =
-+ flashbase + (j - 3) * MAIN_SECT_SIZE;
-+ }
-+ }
-+ size += flash_info[i].size;
-+ }
-+
-+ flash_protect (FLAG_PROTECT_SET,
-+ CFG_FLASH_BASE,
-+ CFG_FLASH_BASE + monitor_flash_len - 1,
-+ &flash_info[0]);
-+
-+ flash_protect (FLAG_PROTECT_SET,
-+ CFG_ENV_ADDR,
-+ CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-+
-+ return size;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ */
-+void flash_print_info (flash_info_t * info)
-+{
-+ int i;
-+
-+ switch (info->flash_id & FLASH_VENDMASK) {
-+ case (AMD_MANUFACT & FLASH_VENDMASK):
-+ printf ("AMD: ");
-+ break;
-+ default:
-+ printf ("Unknown Vendor ");
-+ break;
-+ }
-+
-+ switch (info->flash_id & FLASH_TYPEMASK) {
-+ case (AMD_ID_LV400B & FLASH_TYPEMASK):
-+ printf ("1x Amd29LV400BB (4Mbit)\n");
-+ break;
-+ case (AMD_ID_LV800B & FLASH_TYPEMASK):
-+ printf ("1x Amd29LV800BB (8Mbit)\n");
-+ break;
-+ default:
-+ printf ("Unknown Chip Type\n");
-+ goto Done;
-+ break;
-+ }
-+
-+ printf (" Size: %ld MB in %d Sectors\n",
-+ info->size >> 20, info->sector_count);
-+
-+ printf (" Sector Start Addresses:");
-+ for (i = 0; i < info->sector_count; i++) {
-+ if ((i % 5) == 0) {
-+ printf ("\n ");
-+ }
-+ printf (" %08lX%s", info->start[i],
-+ info->protect[i] ? " (RO)" : " ");
-+ }
-+ printf ("\n");
-+
-+ Done:;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ */
-+
-+int flash_erase (flash_info_t * info, int s_first, int s_last)
-+{
-+ ushort result;
-+ int iflag, cflag, prot, sect;
-+ int rc = ERR_OK;
-+ int chip;
-+
-+ /* first look for protection bits */
-+
-+ if (info->flash_id == FLASH_UNKNOWN)
-+ return ERR_UNKNOWN_FLASH_TYPE;
-+
-+ if ((s_first < 0) || (s_first > s_last)) {
-+ return ERR_INVAL;
-+ }
-+
-+ if ((info->flash_id & FLASH_VENDMASK) !=
-+ (AMD_MANUFACT & FLASH_VENDMASK)) {
-+ return ERR_UNKNOWN_FLASH_VENDOR;
-+ }
-+
-+ prot = 0;
-+ for (sect = s_first; sect <= s_last; ++sect) {
-+ if (info->protect[sect]) {
-+ prot++;
-+ }
-+ }
-+ if (prot)
-+ return ERR_PROTECTED;
-+
-+ /*
-+ * Disable interrupts which might cause a timeout
-+ * here. Remember that our exception vectors are
-+ * at address 0 in the flash, and we don't want a
-+ * (ticker) exception to happen while the flash
-+ * chip is in programming mode.
-+ */
-+ cflag = icache_status ();
-+ icache_disable ();
-+ iflag = disable_interrupts ();
-+
-+ /* Start erase on unprotected sectors */
-+ for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-+ printf ("Erasing sector %2d ... ", sect);
-+
-+ /* arm simple, non interrupt dependent timer */
-+ reset_timer_masked ();
-+
-+ if (info->protect[sect] == 0) { /* not protected */
-+ vu_short *addr = (vu_short *) (info->start[sect]);
-+
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-+ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-+ MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-+
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-+ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-+ *addr = CMD_ERASE_CONFIRM;
-+
-+ /* wait until flash is ready */
-+ chip = 0;
-+
-+ do {
-+ result = *addr;
-+
-+ /* check timeout */
-+ if (get_timer_masked () >
-+ CFG_FLASH_ERASE_TOUT) {
-+ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-+ chip = TMO;
-+ break;
-+ }
-+
-+ if (!chip
-+ && (result & 0xFFFF) & BIT_ERASE_DONE)
-+ chip = READY;
-+
-+ if (!chip
-+ && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
-+ chip = ERR;
-+
-+ } while (!chip);
-+
-+ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-+
-+ if (chip == ERR) {
-+ rc = ERR_PROG_ERROR;
-+ goto outahere;
-+ }
-+ if (chip == TMO) {
-+ rc = ERR_TIMOUT;
-+ goto outahere;
-+ }
-+
-+ printf ("ok.\n");
-+ } else { /* it was protected */
-+
-+ printf ("protected!\n");
-+ }
-+ }
-+
-+ if (ctrlc ())
-+ printf ("User Interrupt!\n");
-+
-+ outahere:
-+ /* allow flash to settle - wait 10 ms */
-+ udelay_masked (10000);
-+
-+ if (iflag)
-+ enable_interrupts ();
-+
-+ if (cflag)
-+ icache_enable ();
-+
-+ return rc;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ * Copy memory to flash
-+ */
-+
-+volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
-+{
-+ vu_short *addr = (vu_short *) dest;
-+ ushort result;
-+ int rc = ERR_OK;
-+ int cflag, iflag;
-+ int chip;
-+
-+ /*
-+ * Check if Flash is (sufficiently) erased
-+ */
-+ result = *addr;
-+ if ((result & data) != data)
-+ return ERR_NOT_ERASED;
-+
-+
-+ /*
-+ * Disable interrupts which might cause a timeout
-+ * here. Remember that our exception vectors are
-+ * at address 0 in the flash, and we don't want a
-+ * (ticker) exception to happen while the flash
-+ * chip is in programming mode.
-+ */
-+ cflag = icache_status ();
-+ icache_disable ();
-+ iflag = disable_interrupts ();
-+
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-+ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
-+ *addr = CMD_PROGRAM;
-+ *addr = data;
-+
-+ /* arm simple, non interrupt dependent timer */
-+ reset_timer_masked ();
-+
-+ /* wait until flash is ready */
-+ chip = 0;
-+ do {
-+ result = *addr;
-+
-+ /* check timeout */
-+ if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
-+ chip = ERR | TMO;
-+ break;
-+ }
-+ if (!chip && ((result & 0x80) == (data & 0x80)))
-+ chip = READY;
-+
-+ if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
-+ result = *addr;
-+
-+ if ((result & 0x80) == (data & 0x80))
-+ chip = READY;
-+ else
-+ chip = ERR;
-+ }
-+
-+ } while (!chip);
-+
-+ *addr = CMD_READ_ARRAY;
-+
-+ if (chip == ERR || *addr != data)
-+ rc = ERR_PROG_ERROR;
-+
-+ if (iflag)
-+ enable_interrupts ();
-+
-+ if (cflag)
-+ icache_enable ();
-+
-+ return rc;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ * Copy memory to flash.
-+ */
-+
-+int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-+{
-+ ulong cp, wp;
-+ int l;
-+ int i, rc;
-+ ushort data;
-+
-+ wp = (addr & ~1); /* get lower word aligned address */
-+
-+ /*
-+ * handle unaligned start bytes
-+ */
-+ if ((l = addr - wp) != 0) {
-+ data = 0;
-+ for (i = 0, cp = wp; i < l; ++i, ++cp) {
-+ data = (data >> 8) | (*(uchar *) cp << 8);
-+ }
-+ for (; i < 2 && cnt > 0; ++i) {
-+ data = (data >> 8) | (*src++ << 8);
-+ --cnt;
-+ ++cp;
-+ }
-+ for (; cnt == 0 && i < 2; ++i, ++cp) {
-+ data = (data >> 8) | (*(uchar *) cp << 8);
-+ }
-+
-+ if ((rc = write_hword (info, wp, data)) != 0) {
-+ return (rc);
-+ }
-+ wp += 2;
-+ }
-+
-+ /*
-+ * handle word aligned part
-+ */
-+ while (cnt >= 2) {
-+ data = *((vu_short *) src);
-+ if ((rc = write_hword (info, wp, data)) != 0) {
-+ return (rc);
-+ }
-+ src += 2;
-+ wp += 2;
-+ cnt -= 2;
-+ }
-+
-+ if (cnt == 0) {
-+ return ERR_OK;
-+ }
-+
-+ /*
-+ * handle unaligned tail bytes
-+ */
-+ data = 0;
-+ for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
-+ data = (data >> 8) | (*src++ << 8);
-+ --cnt;
-+ }
-+ for (; i < 2; ++i, ++cp) {
-+ data = (data >> 8) | (*(uchar *) cp << 8);
-+ }
-+
-+ return write_hword (info, wp, data);
-+}
-diff --git a/board/qt2410/lowlevel_init.S b/board/qt2410/lowlevel_init.S
-new file mode 100644
-index 0000000..310f2a0
---- /dev/null
-+++ b/board/qt2410/lowlevel_init.S
-@@ -0,0 +1,167 @@
-+/*
-+ * Memory Setup stuff - taken from blob memsetup.S
-+ *
-+ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
-+ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
-+ *
-+ * Modified for the Samsung SMDK2410 by
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+
-+#include <config.h>
-+#include <version.h>
-+
-+
-+/* some parameters for the board */
-+
-+/*
-+ *
-+ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
-+ *
-+ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
-+ *
-+ */
-+
-+#define BWSCON 0x48000000
-+
-+/* BWSCON */
-+#define DW8 (0x0)
-+#define DW16 (0x1)
-+#define DW32 (0x2)
-+#define WAIT (0x1<<2)
-+#define UBLB (0x1<<3)
-+
-+#define B1_BWSCON (DW32)
-+#define B2_BWSCON (DW16)
-+#define B3_BWSCON (DW16 + WAIT + UBLB)
-+#define B4_BWSCON (DW16)
-+#define B5_BWSCON (DW16)
-+#define B6_BWSCON (DW32)
-+#define B7_BWSCON (DW32)
-+
-+/* BANK0CON */
-+#define B0_Tacs 0x0 /* 0clk */
-+#define B0_Tcos 0x0 /* 0clk */
-+#define B0_Tacc 0x7 /* 14clk */
-+#define B0_Tcoh 0x0 /* 0clk */
-+#define B0_Tah 0x0 /* 0clk */
-+#define B0_Tacp 0x0
-+#define B0_PMC 0x0 /* normal */
-+
-+/* BANK1CON */
-+#define B1_Tacs 0x0 /* 0clk */
-+#define B1_Tcos 0x0 /* 0clk */
-+#define B1_Tacc 0x7 /* 14clk */
-+#define B1_Tcoh 0x0 /* 0clk */
-+#define B1_Tah 0x0 /* 0clk */
-+#define B1_Tacp 0x0
-+#define B1_PMC 0x0
-+
-+#define B2_Tacs 0x0
-+#define B2_Tcos 0x0
-+#define B2_Tacc 0x7
-+#define B2_Tcoh 0x0
-+#define B2_Tah 0x0
-+#define B2_Tacp 0x0
-+#define B2_PMC 0x0
-+
-+#define B3_Tacs 0x0 /* 0clk */
-+#define B3_Tcos 0x3 /* 4clk */
-+#define B3_Tacc 0x7 /* 14clk */
-+#define B3_Tcoh 0x1 /* 1clk */
-+#define B3_Tah 0x0 /* 0clk */
-+#define B3_Tacp 0x3 /* 6clk */
-+#define B3_PMC 0x0 /* normal */
-+
-+#define B4_Tacs 0x0 /* 0clk */
-+#define B4_Tcos 0x0 /* 0clk */
-+#define B4_Tacc 0x7 /* 14clk */
-+#define B4_Tcoh 0x0 /* 0clk */
-+#define B4_Tah 0x0 /* 0clk */
-+#define B4_Tacp 0x0
-+#define B4_PMC 0x0 /* normal */
-+
-+#define B5_Tacs 0x0 /* 0clk */
-+#define B5_Tcos 0x0 /* 0clk */
-+#define B5_Tacc 0x7 /* 14clk */
-+#define B5_Tcoh 0x0 /* 0clk */
-+#define B5_Tah 0x0 /* 0clk */
-+#define B5_Tacp 0x0
-+#define B5_PMC 0x0 /* normal */
-+
-+#define B6_MT 0x3 /* SDRAM */
-+#define B6_Trcd 0x1
-+#define B6_SCAN 0x1 /* 9bit */
-+
-+#define B7_MT 0x3 /* SDRAM */
-+#define B7_Trcd 0x1 /* 3clk */
-+#define B7_SCAN 0x1 /* 9bit */
-+
-+/* REFRESH parameter */
-+#define REFEN 0x1 /* Refresh enable */
-+#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-+#define Trp 0x0 /* 2clk */
-+#define Trc 0x3 /* 7clk */
-+#define Tchr 0x2 /* 3clk */
-+#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
-+/**************************************/
-+
-+_TEXT_BASE:
-+ .word TEXT_BASE
-+
-+.globl lowlevel_init
-+lowlevel_init:
-+ /* memory control configuration */
-+ /* make r0 relative the current location so that it */
-+ /* reads SMRDATA out of FLASH rather than memory ! */
-+ ldr r0, =SMRDATA
-+ ldr r1, _TEXT_BASE
-+ sub r0, r0, r1
-+ ldr r1, =BWSCON /* Bus Width Status Controller */
-+ add r2, r0, #13*4
-+0:
-+ ldr r3, [r0], #4
-+ str r3, [r1], #4
-+ cmp r2, r0
-+ bne 0b
-+
-+ /* everything is fine now */
-+ mov pc, lr
-+
-+ .ltorg
-+/* the literal pools origin */
-+
-+SMRDATA:
-+ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
-+ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
-+ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
-+ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
-+ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
-+ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
-+ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
-+ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
-+ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
-+ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
-+ .word 0x32
-+ .word 0x30
-+ .word 0x30
-diff --git a/board/qt2410/qt2410.c b/board/qt2410/qt2410.c
-new file mode 100644
-index 0000000..133b748
---- /dev/null
-+++ b/board/qt2410/qt2410.c
-@@ -0,0 +1,130 @@
-+/*
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ *
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+#include <s3c2410.h>
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#define FCLK_SPEED 1
-+
-+#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
-+#define M_MDIV 0xC3
-+#define M_PDIV 0x4
-+#define M_SDIV 0x1
-+#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
-+#if 0
-+#define M_MDIV 0xA1
-+#define M_PDIV 0x3
-+#define M_SDIV 0x1
-+#else
-+#define M_MDIV 0x5c
-+#define M_PDIV 0x4
-+#define M_SDIV 0x0
-+#endif
-+#endif
-+
-+#define USB_CLOCK 1
-+
-+#if USB_CLOCK==0
-+#define U_M_MDIV 0xA1
-+#define U_M_PDIV 0x3
-+#define U_M_SDIV 0x1
-+#elif USB_CLOCK==1
-+#define U_M_MDIV 0x48
-+#define U_M_PDIV 0x3
-+#define U_M_SDIV 0x2
-+#endif
-+
-+static inline void delay (unsigned long loops)
-+{
-+ __asm__ volatile ("1:\n"
-+ "subs %0, %1, #1\n"
-+ "bne 1b":"=r" (loops):"0" (loops));
-+}
-+
-+/*
-+ * Miscellaneous platform dependent initialisations
-+ */
-+
-+int board_init (void)
-+{
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-+
-+ /* to reduce PLL lock time, adjust the LOCKTIME register */
-+ clk_power->LOCKTIME = 0xFFFFFF;
-+
-+ /* configure MPLL */
-+ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (4000);
-+
-+ /* configure UPLL */
-+ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (8000);
-+
-+ /* set up the I/O ports */
-+ gpio->GPACON = 0x007FFFFF;
-+ gpio->GPBCON = 0x00044555;
-+ gpio->GPBUP = 0x000007FF;
-+ gpio->GPCCON = 0xAAAAAAAA;
-+ gpio->GPCUP = 0x0000FFFF;
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+ gpio->GPECON = 0xAAAAAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+ gpio->GPFCON = 0x000055AA;
-+ gpio->GPFUP = 0x000000FF;
-+ gpio->GPGCON = 0xFF95FFBA;
-+ //gpio->GPGUP = 0x0000FFFF;
-+ gpio->GPGUP = 0x0000AFEF;
-+ gpio->GPHCON = 0x0028FAAA;
-+ gpio->GPHUP = 0x000007FF;
-+
-+ /* arch number of SMDK2410-Board */
-+ gd->bd->bi_arch_number = MACH_TYPE_QT2410;
-+
-+ /* adress of boot parameters */
-+ gd->bd->bi_boot_params = 0x30000100;
-+
-+ icache_enable();
-+ dcache_enable();
-+
-+ return 0;
-+}
-+
-+int dram_init (void)
-+{
-+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-+
-+ return 0;
-+}
-diff --git a/board/qt2410/u-boot.lds b/board/qt2410/u-boot.lds
-new file mode 100644
-index 0000000..f4fbf96
---- /dev/null
-+++ b/board/qt2410/u-boot.lds
-@@ -0,0 +1,57 @@
-+/*
-+ * (C) Copyright 2002
-+ * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-+/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-+OUTPUT_ARCH(arm)
-+ENTRY(_start)
-+SECTIONS
-+{
-+ . = 0x00000000;
-+
-+ . = ALIGN(4);
-+ .text :
-+ {
-+ cpu/arm920t/start.o (.text)
-+ *(.text)
-+ }
-+
-+ . = ALIGN(4);
-+ .rodata : { *(.rodata) }
-+
-+ . = ALIGN(4);
-+ .data : { *(.data) }
-+
-+ . = ALIGN(4);
-+ .got : { *(.got) }
-+
-+ . = .;
-+ __u_boot_cmd_start = .;
-+ .u_boot_cmd : { *(.u_boot_cmd) }
-+ __u_boot_cmd_end = .;
-+
-+ . = ALIGN(4);
-+ __bss_start = .;
-+ .bss : { *(.bss) }
-+ _end = .;
-+}
-diff --git a/cpu/arm920t/s3c24x0/Makefile b/cpu/arm920t/s3c24x0/Makefile
-index af9e4ef..10f33f2 100644
---- a/cpu/arm920t/s3c24x0/Makefile
-+++ b/cpu/arm920t/s3c24x0/Makefile
-@@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
- LIB = lib$(SOC).a
-
- OBJS = i2c.o interrupts.o serial.o speed.o \
-- usb_ohci.o
-+ usb_ohci.o mmc.o nand_read.o nand.o
-
- all: .depend $(LIB)
-
-diff --git a/cpu/arm920t/s3c24x0/mmc.c b/cpu/arm920t/s3c24x0/mmc.c
-new file mode 100644
-index 0000000..b7057e2
---- /dev/null
-+++ b/cpu/arm920t/s3c24x0/mmc.c
-@@ -0,0 +1,568 @@
-+/*
-+ * u-boot S3C2410 MMC/SD card driver
-+ * (C) Copyright 2006 by Harald Welte <laforge@gnumonks.org>
-+ *
-+ * based on u-boot pxa MMC driver and linux/drivers/mmc/s3c2410mci.c
-+ * (C) 2005-2005 Thomas Kleffel
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <config.h>
-+#include <common.h>
-+#include <mmc.h>
-+#include <asm/errno.h>
-+#include <asm/io.h>
-+#include <s3c2410.h>
-+#include <part.h>
-+
-+#ifdef CONFIG_MMC
-+
-+#define CONFIG_MMC_WIDE
-+
-+//#define MMC_DEBUG
-+
-+#ifdef MMC_DEBUG
-+#ifdef debug
-+#undef debug
-+#endif
-+#define debug printf
-+#endif
-+
-+static S3C2410_SDI *sdi;
-+
-+extern int
-+fat_register_device(block_dev_desc_t *dev_desc, int part_no);
-+
-+static block_dev_desc_t mmc_dev;
-+
-+block_dev_desc_t * mmc_get_dev(int dev)
-+{
-+ return ((block_dev_desc_t *)&mmc_dev);
-+}
-+
-+/*
-+ * FIXME needs to read cid and csd info to determine block size
-+ * and other parameters
-+ */
-+static uchar mmc_buf[MMC_BLOCK_SIZE];
-+static mmc_csd_t mmc_csd;
-+static int mmc_ready = 0;
-+static int wide = 0;
-+
-+
-+#define CMD_F_RESP 0x01
-+#define CMD_F_RESP_LONG 0x02
-+
-+static u_int32_t *
-+/****************************************************/
-+mmc_cmd(ushort cmd, ulong arg, ushort flags)
-+/****************************************************/
-+{
-+ static u_int32_t resp[5];
-+ ulong status;
-+ int i;
-+
-+ u_int32_t ccon, csta;
-+ u_int32_t csta_rdy_bit = S3C2410_SDICMDSTAT_CMDSENT;
-+
-+ memset(resp, 0, sizeof(resp));
-+
-+ debug("mmc_cmd CMD%d arg=0x%08x flags=%x\n", cmd, arg, flags);
-+
-+ sdi->SDICSTA = 0xffffffff;
-+ sdi->SDIDSTA = 0xffffffff;
-+ sdi->SDIFSTA = 0xffffffff;
-+
-+ sdi->SDICARG = arg;
-+
-+ ccon = cmd & S3C2410_SDICMDCON_INDEX;
-+ ccon |= S3C2410_SDICMDCON_SENDERHOST|S3C2410_SDICMDCON_CMDSTART;
-+
-+ if (flags & CMD_F_RESP) {
-+ ccon |= S3C2410_SDICMDCON_WAITRSP;
-+ csta_rdy_bit = S3C2410_SDICMDSTAT_RSPFIN; /* 1 << 9 */
-+ }
-+
-+ if (flags & CMD_F_RESP_LONG)
-+ ccon |= S3C2410_SDICMDCON_LONGRSP;
-+
-+ sdi->SDICCON = ccon;
-+
-+ while (1) {
-+ csta = sdi->SDICSTA;
-+ if (csta & csta_rdy_bit)
-+ break;
-+ if (csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
-+ printf("===============> MMC CMD Timeout\n");
-+ sdi->SDICSTA |= S3C2410_SDICMDSTAT_CMDTIMEOUT;
-+ break;
-+ }
-+ }
-+
-+ debug("final MMC CMD status 0x%x\n", csta);
-+
-+ sdi->SDICSTA |= csta_rdy_bit;
-+
-+ if (flags & CMD_F_RESP) {
-+ resp[0] = sdi->SDIRSP0;
-+ resp[1] = sdi->SDIRSP1;
-+ resp[2] = sdi->SDIRSP2;
-+ resp[3] = sdi->SDIRSP3;
-+ }
-+
-+#if 0
-+ for (i=0; i<4; i ++) {
-+ debug("MMC resp[%d] = 0x%08x\n", i, resp[i]);
-+ }
-+#endif
-+
-+ return resp;
-+}
-+
-+#define FIFO_FILL(host) ((host->SDIFSTA & S3C2410_SDIFSTA_COUNTMASK) >> 2)
-+
-+static int
-+/****************************************************/
-+mmc_block_read(uchar *dst, ulong src, ulong len)
-+/****************************************************/
-+{
-+ u_int32_t dcon, fifo;
-+ u_int32_t *dst_u32 = (u_int32_t *)dst;
-+ u_int32_t *resp;
-+
-+ if (len == 0) {
-+ return 0;
-+ }
-+
-+ debug("mmc_block_rd dst %lx src %lx len %d\n", (ulong)dst, src, len);
-+
-+ /* set block len */
-+ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, len, CMD_F_RESP);
-+ sdi->SDIBSIZE = len;
-+
-+ //sdi->SDIPRE = 0xff;
-+
-+ /* setup data */
-+ dcon = (len >> 9) & S3C2410_SDIDCON_BLKNUM_MASK;
-+ dcon |= S3C2410_SDIDCON_BLOCKMODE;
-+ dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
-+ if (wide)
-+ dcon |= S3C2410_SDIDCON_WIDEBUS;
-+ sdi->SDIDCON = dcon;
-+
-+ /* send read command */
-+ resp = mmc_cmd(MMC_CMD_READ_BLOCK, src, CMD_F_RESP);
-+
-+ while (len > 0) {
-+ u_int32_t sdidsta = sdi->SDIDSTA;
-+ fifo = FIFO_FILL(sdi);
-+ if (sdidsta & (S3C2410_SDIDSTA_FIFOFAIL|
-+ S3C2410_SDIDSTA_CRCFAIL|
-+ S3C2410_SDIDSTA_RXCRCFAIL|
-+ S3C2410_SDIDSTA_DATATIMEOUT)) {
-+ printf("mmc_block_read: err SDIDSTA=0x%08x\n", sdidsta);
-+ return -EIO;
-+ }
-+
-+ while (fifo--) {
-+ //debug("dst_u32 = 0x%08x\n", dst_u32);
-+ *(dst_u32++) = sdi->SDIDAT;
-+ if (len >= 4)
-+ len -= 4;
-+ else {
-+ len = 0;
-+ break;
-+ }
-+ }
-+ }
-+
-+#if 1
-+ debug("waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
-+ while (!(sdi->SDIDSTA & (1 << 4))) {}
-+ debug("done waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
-+#endif
-+
-+ sdi->SDIDCON = 0;
-+
-+#if 0
-+ if (!(sdi->SDIDSTA & S3C2410_SDIDSTA_XFERFINISH))
-+ printf("mmc_block_read; transfer not finished!\n");
-+#endif
-+
-+ return 0;
-+}
-+
-+static int
-+/****************************************************/
-+mmc_block_write(ulong dst, uchar *src, int len)
-+/****************************************************/
-+{
-+#if 0
-+ uchar *resp;
-+ ushort argh, argl;
-+ ulong status;
-+
-+ if (len == 0) {
-+ return 0;
-+ }
-+
-+ debug("mmc_block_wr dst %lx src %lx len %d\n", dst, (ulong)src, len);
-+
-+ argh = len >> 16;
-+ argl = len & 0xffff;
-+
-+ /* set block len */
-+ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, argh, argl, CMD_F_RESP);
-+
-+ /* send write command */
-+ argh = dst >> 16;
-+ argl = dst & 0xffff;
-+ MMC_STRPCL = MMC_STRPCL_STOP_CLK;
-+ MMC_NOB = 1;
-+ MMC_BLKLEN = len;
-+ resp = mmc_cmd(MMC_CMD_WRITE_BLOCK, dst, CMD_F_RESP,
-+ MMC_CMDAT_R1|MMC_CMDAT_WRITE|MMC_CMDAT_BLOCK|MMC_CMDAT_DATA_EN);
-+
-+ MMC_I_MASK = ~MMC_I_MASK_TXFIFO_WR_REQ;
-+ while (len) {
-+ if (MMC_I_REG & MMC_I_REG_TXFIFO_WR_REQ) {
-+ int i, bytes = min(32,len);
-+
-+ for (i=0; i<bytes; i++) {
-+ MMC_TXFIFO = *src++;
-+ }
-+ if (bytes < 32) {
-+ MMC_PRTBUF = MMC_PRTBUF_BUF_PART_FULL;
-+ }
-+ len -= bytes;
-+ }
-+ status = MMC_STAT;
-+ if (status & MMC_STAT_ERRORS) {
-+ printf("MMC_STAT error %lx\n", status);
-+ return -1;
-+ }
-+ }
-+ MMC_I_MASK = ~MMC_I_MASK_DATA_TRAN_DONE;
-+ while (!(MMC_I_REG & MMC_I_REG_DATA_TRAN_DONE));
-+ MMC_I_MASK = ~MMC_I_MASK_PRG_DONE;
-+ while (!(MMC_I_REG & MMC_I_REG_PRG_DONE));
-+ status = MMC_STAT;
-+ if (status & MMC_STAT_ERRORS) {
-+ printf("MMC_STAT error %lx\n", status);
-+ return -1;
-+ }
-+#endif
-+ return 0;
-+}
-+
-+
-+int
-+/****************************************************/
-+mmc_read(ulong src, uchar *dst, int size)
-+/****************************************************/
-+{
-+ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
-+ ulong mmc_block_size, mmc_block_address;
-+
-+ if (size == 0) {
-+ return 0;
-+ }
-+
-+ if (!mmc_ready) {
-+ printf("Please initialize the MMC first\n");
-+ return -1;
-+ }
-+
-+ mmc_block_size = MMC_BLOCK_SIZE;
-+ mmc_block_address = ~(mmc_block_size - 1);
-+
-+ src -= CFG_MMC_BASE;
-+ end = src + size;
-+ part_start = ~mmc_block_address & src;
-+ part_end = ~mmc_block_address & end;
-+ aligned_start = mmc_block_address & src;
-+ aligned_end = mmc_block_address & end;
-+
-+ /* all block aligned accesses */
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_start) {
-+ part_len = mmc_block_size - part_start;
-+ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(dst, mmc_buf+part_start, part_len);
-+ dst += part_len;
-+ src += part_len;
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ for (; src < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
-+ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read((uchar *)(dst), src, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_end && src < end) {
-+ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(dst, mmc_buf, part_end);
-+ }
-+ return 0;
-+}
-+
-+int
-+/****************************************************/
-+mmc_write(uchar *src, ulong dst, int size)
-+/****************************************************/
-+{
-+ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
-+ ulong mmc_block_size, mmc_block_address;
-+
-+ if (size == 0) {
-+ return 0;
-+ }
-+
-+ if (!mmc_ready) {
-+ printf("Please initialize the MMC first\n");
-+ return -1;
-+ }
-+
-+ mmc_block_size = MMC_BLOCK_SIZE;
-+ mmc_block_address = ~(mmc_block_size - 1);
-+
-+ dst -= CFG_MMC_BASE;
-+ end = dst + size;
-+ part_start = ~mmc_block_address & dst;
-+ part_end = ~mmc_block_address & end;
-+ aligned_start = mmc_block_address & dst;
-+ aligned_end = mmc_block_address & end;
-+
-+ /* all block aligned accesses */
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_start) {
-+ part_len = mmc_block_size - part_start;
-+ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ (ulong)src, dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(mmc_buf+part_start, src, part_len);
-+ if ((mmc_block_write(aligned_start, mmc_buf, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ dst += part_len;
-+ src += part_len;
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ for (; dst < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
-+ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_write(dst, (uchar *)src, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_end && dst < end) {
-+ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(mmc_buf, src, part_end);
-+ if ((mmc_block_write(aligned_end, mmc_buf, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+ulong
-+/****************************************************/
-+mmc_bread(int dev_num, ulong blknr, ulong blkcnt, ulong *dst)
-+/****************************************************/
-+{
-+ int mmc_block_size = MMC_BLOCK_SIZE;
-+ ulong src = blknr * mmc_block_size + CFG_MMC_BASE;
-+
-+ mmc_read(src, (uchar *)dst, blkcnt*mmc_block_size);
-+ return blkcnt;
-+}
-+
-+static u_int16_t rca = MMC_DEFAULT_RCA;
-+
-+static u_int32_t mmc_size(const struct mmc_csd *csd)
-+{
-+ u_int32_t block_len, mult, blocknr;
-+
-+ block_len = csd->read_bl_len << 12;
-+ mult = csd->c_size_mult1 << 8;
-+ blocknr = (csd->c_size+1) * mult;
-+
-+ return blocknr * block_len;
-+}
-+
-+int
-+/****************************************************/
-+mmc_init(int verbose)
-+/****************************************************/
-+{
-+ int retries, rc = -ENODEV;
-+ int is_sd = 0;
-+ u_int32_t *resp;
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+
-+ sdi = S3C2410_GetBase_SDI();
-+
-+ debug("mmc_init(PCLK=%u)\n", get_PCLK());
-+
-+ clk_power->CLKCON |= (1 << 9);
-+
-+ /* S3C2410 has some bug that prevents reliable operation at higher speed */
-+ //sdi->SDIPRE = 0x3e; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
-+ sdi->SDIPRE = 0x02; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
-+ sdi->SDIBSIZE = 512;
-+ sdi->SDIDTIMER = 0xffff;
-+ sdi->SDIIMSK = 0x0;
-+ sdi->SDICON = S3C2410_SDICON_FIFORESET|S3C2440_SDICON_MMCCLOCK;
-+ udelay(125000); /* FIXME: 74 SDCLK cycles */
-+
-+ mmc_csd.c_size = 0;
-+
-+ /* reset */
-+ retries = 10;
-+ resp = mmc_cmd(MMC_CMD_RESET, 0, 0);
-+
-+ printf("trying to detect SD Card...\n");
-+ while (retries--) {
-+ int i;
-+ udelay(100000);
-+ resp = mmc_cmd(55, 0x00000000, CMD_F_RESP);
-+ resp = mmc_cmd(41, 0x00300000, CMD_F_RESP);
-+
-+ if (resp[0] & (1 << 31)) {
-+ is_sd = 1;
-+ break;
-+ }
-+ }
-+
-+ if (retries == 0 && !is_sd) {
-+ retries = 10;
-+ printf("failed to detect SD Card, trying MMC\n");
-+ resp = mmc_cmd(MMC_CMD_SEND_OP_COND, 0x00ffc000, CMD_F_RESP);
-+ while (retries-- && resp && !(resp[4] & 0x80)) {
-+ debug("resp %x %x\n", resp[0], resp[1]);
-+ udelay(50);
-+ resp = mmc_cmd(1, 0x00ffff00, CMD_F_RESP);
-+ }
-+ }
-+
-+ /* try to get card id */
-+ resp = mmc_cmd(MMC_CMD_ALL_SEND_CID, 0, CMD_F_RESP|CMD_F_RESP_LONG);
-+ if (resp) {
-+ /* TODO configure mmc driver depending on card attributes */
-+ mmc_cid_t *cid = (mmc_cid_t *)resp;
-+ if (verbose) {
-+ printf("MMC found. Card desciption is:\n");
-+ printf("Manufacturer ID = %02x%02x%02x\n",
-+ cid->id[0], cid->id[1], cid->id[2]);
-+ printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
-+ cid->hwrev = cid->fwrev = 0; /* null terminate string */
-+ printf("Product Name = %s\n",cid->name);
-+ printf("Serial Number = %02x%02x%02x\n",
-+ cid->sn[0], cid->sn[1], cid->sn[2]);
-+ printf("Month = %d\n",cid->month);
-+ printf("Year = %d\n",1997 + cid->year);
-+ }
-+ /* fill in device description */
-+ mmc_dev.if_type = IF_TYPE_MMC;
-+ mmc_dev.part_type = PART_TYPE_DOS;
-+ mmc_dev.dev = 0;
-+ mmc_dev.lun = 0;
-+ mmc_dev.type = 0;
-+ /* FIXME fill in the correct size (is set to 32MByte) */
-+ mmc_dev.blksz = 512;
-+ mmc_dev.lba = 0x10000;
-+ sprintf(mmc_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x",
-+ cid->id[0], cid->id[1], cid->id[2],
-+ cid->sn[0], cid->sn[1], cid->sn[2]);
-+ sprintf(mmc_dev.product,"%s",cid->name);
-+ sprintf(mmc_dev.revision,"%x %x",cid->hwrev, cid->fwrev);
-+ mmc_dev.removable = 0;
-+ mmc_dev.block_read = mmc_bread;
-+
-+ /* MMC exists, get CSD too */
-+ resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, CMD_F_RESP);
-+ if (is_sd)
-+ rca = resp[0] >> 16;
-+
-+ resp = mmc_cmd(MMC_CMD_SEND_CSD, rca<<16, CMD_F_RESP|CMD_F_RESP_LONG);
-+ if (resp) {
-+ mmc_csd_t *csd = (mmc_csd_t *)resp;
-+ memcpy(&mmc_csd, csd, sizeof(csd));
-+ rc = 0;
-+ mmc_ready = 1;
-+ /* FIXME add verbose printout for csd */
-+ printf("READ_BL_LEN=%u, C_SIZE_MULT=%u, C_SIZE=%u\n",
-+ csd->read_bl_len, csd->c_size_mult1, csd->c_size);
-+ printf("size = %u\n", mmc_size(csd));
-+ }
-+ }
-+
-+ resp = mmc_cmd(MMC_CMD_SELECT_CARD, rca<<16, CMD_F_RESP);
-+
-+#ifdef CONFIG_MMC_WIDE
-+ if (is_sd) {
-+ resp = mmc_cmd(55, rca<<16, CMD_F_RESP);
-+ resp = mmc_cmd(6, 0x02, CMD_F_RESP);
-+ wide = 1;
-+ }
-+#endif
-+
-+ fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
-+
-+ return rc;
-+}
-+
-+int
-+mmc_ident(block_dev_desc_t *dev)
-+{
-+ return 0;
-+}
-+
-+int
-+mmc2info(ulong addr)
-+{
-+ /* FIXME hard codes to 32 MB device */
-+ if (addr >= CFG_MMC_BASE && addr < CFG_MMC_BASE + 0x02000000) {
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+#endif /* CONFIG_MMC */
-diff --git a/cpu/arm920t/s3c24x0/nand.c b/cpu/arm920t/s3c24x0/nand.c
-new file mode 100644
-index 0000000..f720229
---- /dev/null
-+++ b/cpu/arm920t/s3c24x0/nand.c
-@@ -0,0 +1,212 @@
-+/*
-+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+
-+#if 0
-+#define DEBUGN printf
-+#else
-+#define DEBUGN(x, args ...) {}
-+#endif
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-+#if !defined(CFG_NAND_LEGACY)
-+
-+#include <nand.h>
-+#include <s3c2410.h>
-+
-+#define __REGb(x) (*(volatile unsigned char *)(x))
-+#define __REGi(x) (*(volatile unsigned int *)(x))
-+
-+#define NF_BASE 0x4e000000
-+#define NFCONF __REGi(NF_BASE + 0x0)
-+#define NFCMD __REGb(NF_BASE + 0x4)
-+#define NFADDR __REGb(NF_BASE + 0x8)
-+#define NFDATA __REGb(NF_BASE + 0xc)
-+#define NFSTAT __REGb(NF_BASE + 0x10)
-+
-+#define S3C2410_NFCONF_EN (1<<15)
-+#define S3C2410_NFCONF_512BYTE (1<<14)
-+#define S3C2410_NFCONF_4STEP (1<<13)
-+#define S3C2410_NFCONF_INITECC (1<<12)
-+#define S3C2410_NFCONF_nFCE (1<<11)
-+#define S3C2410_NFCONF_TACLS(x) ((x)<<8)
-+#define S3C2410_NFCONF_TWRPH0(x) ((x)<<4)
-+#define S3C2410_NFCONF_TWRPH1(x) ((x)<<0)
-+
-+static u16 s3c2410_read_word(struct mtd_info *mtd)
-+{
-+ unsigned char byte = 0;
-+
-+ printf("s3c2410_read_word: WARNING, this function is not implemented yet\n");
-+ return byte;
-+}
-+
-+static void s3c2410_write_word(struct mtd_info *mtd, u16 word)
-+{
-+ printf("s3c2410_write_word: WARNING, this function is not implemented yet\n");
-+}
-+
-+static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+
-+ DEBUGN("hwcontrol(): 0x%02x: ", cmd);
-+
-+ switch (cmd) {
-+ case NAND_CTL_SETNCE:
-+ NFCONF &= ~S3C2410_NFCONF_nFCE;
-+ DEBUGN("NFCONF=0x%08x\n", NFCONF);
-+ break;
-+ case NAND_CTL_CLRNCE:
-+ NFCONF |= S3C2410_NFCONF_nFCE;
-+ DEBUGN("NFCONF=0x%08x\n", NFCONF);
-+ break;
-+ case NAND_CTL_SETALE:
-+ chip->IO_ADDR_W = NF_BASE + 0x8;
-+ DEBUGN("SETALE\n");
-+ break;
-+ case NAND_CTL_SETCLE:
-+ chip->IO_ADDR_W = NF_BASE + 0x4;
-+ DEBUGN("SETCLE\n");
-+ break;
-+ default:
-+ chip->IO_ADDR_W = NF_BASE + 0xc;
-+ break;
-+ }
-+ return;
-+}
-+
-+static int s3c2410_dev_ready(struct mtd_info *mtd)
-+{
-+ DEBUGN("dev_ready\n");
-+ return (NFSTAT & 0x01);
-+}
-+
-+static void s3c2410_cmdfunc(struct mtd_info *mtd, unsigned cmd,
-+ int column, int page_addr)
-+{
-+ DEBUGN("cmdfunc(): 0x%02x, col=%d, page=%d\n", cmd, column, page_addr);
-+
-+ switch (cmd) {
-+ case NAND_CMD_READ0:
-+ case NAND_CMD_READ1:
-+ case NAND_CMD_READOOB:
-+ NFCMD = cmd;
-+ NFADDR = column & 0xff;
-+ NFADDR = page_addr & 0xff;
-+ NFADDR = (page_addr >> 8) & 0xff;
-+ NFADDR = (page_addr >> 16) & 0xff;
-+ break;
-+ case NAND_CMD_READID:
-+ NFCMD = cmd;
-+ NFADDR = 0;
-+ break;
-+ case NAND_CMD_PAGEPROG:
-+ NFCMD = cmd;
-+ printf("PAGEPROG not implemented\n");
-+ break;
-+ case NAND_CMD_ERASE1:
-+ NFCMD = cmd;
-+ NFADDR = page_addr & 0xff;
-+ NFADDR = (page_addr >> 8) & 0xff;
-+ NFADDR = (page_addr >> 16) & 0xff;
-+ break;
-+ case NAND_CMD_ERASE2:
-+ NFCMD = cmd;
-+ break;
-+ case NAND_CMD_SEQIN:
-+ printf("SEQIN not implemented\n");
-+ break;
-+ case NAND_CMD_STATUS:
-+ NFCMD = cmd;
-+ break;
-+ case NAND_CMD_RESET:
-+ NFCMD = cmd;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ while (!s3c2410_dev_ready(mtd));
-+}
-+
-+void board_nand_init(struct nand_chip *nand)
-+{
-+ u_int32_t cfg;
-+ u_int8_t tacls, twrph0, twrph1;
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+
-+ DEBUGN("board_nand_init()\n");
-+
-+ clk_power->CLKCON |= (1 << 4);
-+
-+ /* initialize hardware */
-+ twrph0 = 3; twrph1 = 0; tacls = 0;
-+
-+ /* default timings: maximum */
-+ //twrph0 = 8; twrph1 = 8; tacls = 8;
-+
-+ cfg = S3C2410_NFCONF_EN;
-+ cfg |= S3C2410_NFCONF_TACLS(tacls - 1);
-+ cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1);
-+ cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1);
-+
-+ //NFCONF = cfg;
-+ NFCONF = 0xf842;
-+
-+ /* initialize nand_chip data structure */
-+ nand->IO_ADDR_R = nand->IO_ADDR_W = 0x4e00000c;
-+
-+ /* read_buf and write_buf are default */
-+ /* read_byte and write_byte are default */
-+
-+ /* need to override word read/write since default routines try 16bit wide
-+ * register access of an (in our case) 8bit register */
-+ nand->read_word = s3c2410_read_word;
-+ nand->write_word = s3c2410_write_word;
-+
-+ /* hwcontrol always must be implemented */
-+ nand->hwcontrol = s3c2410_hwcontrol;
-+
-+ nand->dev_ready = s3c2410_dev_ready;
-+
-+ nand->eccmode = NAND_ECC_SOFT;
-+ nand->options = 0;
-+ //nand->waitfunc = dfc_wait;
-+
-+ //nand->cmdfunc = s3c2410_cmdfunc;
-+ //nand->autooob = &delta_oob;
-+ //nand->badblock_pattern = &delta_bbt_descr;
-+
-+#if 0
-+ /* reset */
-+ nand->hwcontrol(NULL, NAND_CTL_SETNCE);
-+ nand->cmdfunc(NULL, NAND_CMD_RESET, -1, -1);
-+ while (nand->dev_ready(NULL) == 0) {}
-+ nand->hwcontrol(NULL, NAND_CTL_CLRNCE);
-+#endif
-+
-+ DEBUGN("end of nand_init\n");
-+}
-+
-+#else
-+ #error "U-Boot legacy NAND support not available for S3C2410"
-+#endif
-+#endif
-diff --git a/cpu/arm920t/s3c24x0/nand_read.c b/cpu/arm920t/s3c24x0/nand_read.c
-new file mode 100644
-index 0000000..9d97932
---- /dev/null
-+++ b/cpu/arm920t/s3c24x0/nand_read.c
-@@ -0,0 +1,75 @@
-+/*
-+ * nand_read.c: Simple NAND read functions for booting from NAND
-+ *
-+ * Taken from GPLv2 licensed vivi bootloader,
-+ * Copyright (C) 2002 MIZI Research, Inc.
-+ *
-+ * Author: Hwang, Chideok <hwang@mizi.com>
-+ * Date : $Date: 2004/02/04 10:37:37 $
-+ *
-+ * u-boot integration (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
-+ */
-+
-+#include <common.h>
-+
-+#ifdef CONFIG_S3C2410_NAND_BOOT
-+
-+#define __REGb(x) (*(volatile unsigned char *)(x))
-+#define __REGi(x) (*(volatile unsigned int *)(x))
-+#define NF_BASE 0x4e000000
-+#define NFCONF __REGi(NF_BASE + 0x0)
-+#define NFCMD __REGb(NF_BASE + 0x4)
-+#define NFADDR __REGb(NF_BASE + 0x8)
-+#define NFDATA __REGb(NF_BASE + 0xc)
-+#define NFSTAT __REGb(NF_BASE + 0x10)
-+
-+#define BUSY 1
-+inline void wait_idle(void) {
-+ int i;
-+
-+ while(!(NFSTAT & BUSY))
-+ for(i=0; i<10; i++);
-+}
-+
-+#define NAND_SECTOR_SIZE 512
-+#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
-+
-+/* low level nand read function */
-+int
-+nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
-+{
-+ int i, j;
-+
-+ if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
-+ return -1; /* invalid alignment */
-+ }
-+
-+ /* chip Enable */
-+ NFCONF &= ~0x800;
-+ for(i=0; i<10; i++);
-+
-+ for(i=start_addr; i < (start_addr + size);) {
-+ /* READ0 */
-+ NFCMD = 0;
-+
-+ /* Write Address */
-+ NFADDR = i & 0xff;
-+ NFADDR = (i >> 9) & 0xff;
-+ NFADDR = (i >> 17) & 0xff;
-+ NFADDR = (i >> 25) & 0xff;
-+
-+ wait_idle();
-+
-+ for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {
-+ *buf = (NFDATA & 0xff);
-+ buf++;
-+ }
-+ }
-+
-+ /* chip Disable */
-+ NFCONF |= 0x800; /* chip disable */
-+
-+ return 0;
-+}
-+
-+#endif /* CONFIG_S3C2410_NAND_BOOT */
-diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S
-index 346f0d0..232e2c2 100644
---- a/cpu/arm920t/start.S
-+++ b/cpu/arm920t/start.S
-@@ -5,6 +5,10 @@
- * Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
- * Copyright (c) 2002 Gary Jennejohn <gj@denx.de>
- *
-+ * S3C2410 NAND portions
-+ * Copyright (c) 2001 MIZI Research, Inc.
-+ * Copyright (c) 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
-@@ -27,6 +31,7 @@
-
- #include <config.h>
- #include <version.h>
-+#include <s3c2410.h>
-
-
- /*
-@@ -161,6 +166,7 @@ #ifndef CONFIG_SKIP_LOWLEVEL_INIT
- #endif
-
- #ifndef CONFIG_SKIP_RELOCATE_UBOOT
-+#ifndef CONFIG_S3C2410_NAND_BOOT
- relocate: /* relocate U-Boot to RAM */
- adr r0, _start /* r0 <- current position of code */
- ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
-@@ -177,6 +183,93 @@ copy_loop:
- stmia r1!, {r3-r10} /* copy to target address [r1] */
- cmp r0, r2 /* until source end addreee [r2] */
- ble copy_loop
-+#else /* NAND_BOOT */
-+relocate:
-+copy_myself:
-+ /* mov r10, lr */
-+
-+ @ reset NAND
-+ mov r1, #S3C2410_NAND_BASE
-+ ldr r2, =0xf842 @ initial value enable tacls=3,rph0=6,rph1=0
-+ str r2, [r1, #oNFCONF]
-+ ldr r2, [r1, #oNFCONF]
-+ bic r2, r2, #0x800 @ enable chip
-+ str r2, [r1, #oNFCONF]
-+ mov r2, #0xff @ RESET command
-+ strb r2, [r1, #oNFCMD]
-+ mov r3, #0 @ wait
-+1: add r3, r3, #0x1
-+ cmp r3, #0xa
-+ blt 1b
-+2: ldr r2, [r1, #oNFSTAT] @ wait ready
-+ tst r2, #0x1
-+ beq 2b
-+ ldr r2, [r1, #oNFCONF]
-+ orr r2, r2, #0x800 @ disable chip
-+ str r2, [r1, #oNFCONF]
-+
-+#if 0
-+ @ get ready to call C functions (for nand_read())
-+ ldr sp, DW_STACK_START @ setup stack pointer
-+ mov fp, #0 @ no previous frame, so fp=0
-+#else
-+ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
-+ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
-+ sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */
-+#ifdef CONFIG_USE_IRQ
-+ sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
-+#endif
-+ sub sp, r0, #12 /* leave 3 words for abort-stack */
-+#endif
-+
-+ @ copy u-boot to RAM
-+ ldr r0, _TEXT_BASE
-+ mov r1, #0x0
-+ mov r2, #0x30000
-+ bl nand_read_ll
-+
-+ tst r0, #0x0
-+ beq ok_nand_read
-+#ifdef CONFIG_DEBUG_LL
-+bad_nand_read:
-+ ldr r0, STR_FAIL
-+ ldr r1, SerBase
-+ bl PrintWord
-+1: b 1b @ infinite loop
-+#endif
-+
-+ok_nand_read:
-+#ifdef CONFIG_DEBUG_LL
-+ ldr r0, STR_OK
-+ ldr r1, SerBase
-+ bl PrintWord
-+#endif
-+
-+ @ verify
-+ mov r0, #0
-+ @ldr r1, =0x33f00000
-+ ldr r1, _TEXT_BASE
-+ mov r2, #0x400 @ 4 bytes * 1024 = 4K-bytes
-+go_next:
-+ ldr r3, [r0], #4
-+ ldr r4, [r1], #4
-+ teq r3, r4
-+ bne notmatch
-+ subs r2, r2, #4
-+ beq done_nand_read
-+ bne go_next
-+notmatch:
-+#ifdef CONFIG_DEBUG_LL
-+ sub r0, r0, #4
-+ ldr r1, SerBase
-+ bl PrintHexWord
-+ ldr r0, STR_FAIL
-+ ldr r1, SerBase
-+ bl PrintWord
-+#endif
-+1: b 1b
-+done_nand_read:
-+#endif /* NAND_BOOT */
- #endif /* CONFIG_SKIP_RELOCATE_UBOOT */
-
- /* Set up the stack */
-diff --git a/drivers/Makefile b/drivers/Makefile
-index 9be95c7..eef266a 100644
---- a/drivers/Makefile
-+++ b/drivers/Makefile
-@@ -50,7 +50,7 @@ OBJS = 3c589.o 5701rls.o ali512x.o \
- videomodes.o w83c553f.o \
- ks8695eth.o \
- pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o \
-- rpx_pcmcia.o
-+ rpx_pcmcia.o s3c2410_fb.o
-
- all: $(LIB)
-
-diff --git a/drivers/cs8900.c b/drivers/cs8900.c
-index 082434c..1cce622 100644
---- a/drivers/cs8900.c
-+++ b/drivers/cs8900.c
-@@ -120,6 +120,7 @@ void cs8900_get_enetaddr (uchar * addr)
- unsigned char env_enetaddr[6];
- char *tmp = getenv ("ethaddr");
- char *end;
-+ unsigned short chip_id;
-
- for (i=0; i<6; i++) {
- env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
-@@ -128,7 +129,9 @@ void cs8900_get_enetaddr (uchar * addr)
- }
-
- /* verify chip id */
-- if (get_reg_init_bus (PP_ChipID) != 0x630e)
-+ chip_id = get_reg_init_bus (PP_ChipID);
-+ printf("\ncs8900a chipid 0x%04x\n", chip_id);
-+ if (chip_id != 0x630e)
- return;
- eth_reset ();
- if ((get_reg (PP_SelfST) & (PP_SelfSTAT_EEPROM | PP_SelfSTAT_EEPROM_OK)) ==
-diff --git a/drivers/s3c2410_fb.c b/drivers/s3c2410_fb.c
-new file mode 100644
-index 0000000..fc389a9
---- /dev/null
-+++ b/drivers/s3c2410_fb.c
-@@ -0,0 +1,182 @@
-+/*
-+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+
-+#if defined(CONFIG_VIDEO_S3C2410)
-+
-+#include <video_fb.h>
-+#include "videomodes.h"
-+#include <s3c2410.h>
-+/*
-+ * Export Graphic Device
-+ */
-+GraphicDevice smi;
-+
-+#define VIDEO_MEM_SIZE 0x200000
-+
-+/*******************************************************************************
-+ *
-+ * Init video chip with common Linux graphic modes (lilo)
-+ */
-+void *video_hw_init (void)
-+{
-+ S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
-+ GraphicDevice *pGD = (GraphicDevice *)&smi;
-+ int videomode;
-+ unsigned long t1, hsynch, vsynch;
-+ char *penv;
-+ int tmp, i, bits_per_pixel;
-+ struct ctfb_res_modes *res_mode;
-+ struct ctfb_res_modes var_mode;
-+ unsigned char videoout;
-+ unsigned int *vm;
-+
-+ /* Search for video chip */
-+ printf("Video: ");
-+
-+ tmp = 0;
-+
-+ videomode = CFG_DEFAULT_VIDEO_MODE;
-+ /* get video mode via environment */
-+ if ((penv = getenv ("videomode")) != NULL) {
-+ /* deceide if it is a string */
-+ if (penv[0] <= '9') {
-+ videomode = (int) simple_strtoul (penv, NULL, 16);
-+ tmp = 1;
-+ }
-+ } else {
-+ tmp = 1;
-+ }
-+ if (tmp) {
-+ /* parameter are vesa modes */
-+ /* search params */
-+ for (i = 0; i < VESA_MODES_COUNT; i++) {
-+ if (vesa_modes[i].vesanr == videomode)
-+ break;
-+ }
-+ if (i == VESA_MODES_COUNT) {
-+ printf ("no VESA Mode found, switching to mode 0x%x ", CFG_DEFAULT_VIDEO_MODE);
-+ i = 0;
-+ }
-+ res_mode =
-+ (struct ctfb_res_modes *) &res_mode_init[vesa_modes[i].
-+ resindex];
-+ bits_per_pixel = vesa_modes[i].bits_per_pixel;
-+ } else {
-+
-+ res_mode = (struct ctfb_res_modes *) &var_mode;
-+ bits_per_pixel = video_get_params (res_mode, penv);
-+ }
-+
-+ /* calculate hsynch and vsynch freq (info only) */
-+ t1 = (res_mode->left_margin + res_mode->xres +
-+ res_mode->right_margin + res_mode->hsync_len) / 8;
-+ t1 *= 8;
-+ t1 *= res_mode->pixclock;
-+ t1 /= 1000;
-+ hsynch = 1000000000L / t1;
-+ t1 *=
-+ (res_mode->upper_margin + res_mode->yres +
-+ res_mode->lower_margin + res_mode->vsync_len);
-+ t1 /= 1000;
-+ vsynch = 1000000000L / t1;
-+
-+ /* fill in Graphic device struct */
-+ sprintf (pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", res_mode->xres,
-+ res_mode->yres, bits_per_pixel, (hsynch / 1000),
-+ (vsynch / 1000));
-+ printf ("%s\n", pGD->modeIdent);
-+ pGD->winSizeX = res_mode->xres;
-+ pGD->winSizeY = res_mode->yres;
-+ pGD->plnSizeX = res_mode->xres;
-+ pGD->plnSizeY = res_mode->yres;
-+ switch (bits_per_pixel) {
-+ case 8:
-+ pGD->gdfBytesPP = 1;
-+ pGD->gdfIndex = GDF__8BIT_INDEX;
-+ break;
-+ case 15:
-+ pGD->gdfBytesPP = 2;
-+ pGD->gdfIndex = GDF_15BIT_555RGB;
-+ break;
-+ case 16:
-+ pGD->gdfBytesPP = 2;
-+ pGD->gdfIndex = GDF_16BIT_565RGB;
-+ break;
-+ case 24:
-+ pGD->gdfBytesPP = 3;
-+ pGD->gdfIndex = GDF_24BIT_888RGB;
-+ break;
-+ }
-+
-+#if 0
-+ pGD->isaBase = CFG_ISA_IO;
-+ pGD->pciBase = pci_mem_base;
-+ pGD->dprBase = (pci_mem_base + 0x400000 + 0x8000);
-+ pGD->vprBase = (pci_mem_base + 0x400000 + 0xc000);
-+ pGD->cprBase = (pci_mem_base + 0x400000 + 0xe000);
-+#endif
-+ pGD->frameAdrs = LCD_VIDEO_ADDR;
-+ pGD->memSize = VIDEO_MEM_SIZE;
-+
-+ lcd->LCDSADDR1 = LCD_VIDEO_ADDR >> 1;
-+ lcd->LCDSADDR2 = (LCD_VIDEO_ADDR + 0x4b000) >> 1;
-+ lcd->LCDSADDR3 = 0x000000f0;
-+
-+ lcd->LCDCON1 = 0x00000479;
-+ lcd->LCDCON2 = 0x014fc183;
-+ lcd->LCDCON3 = 0x0060ef07;
-+ lcd->LCDCON4 = 0x00000003;
-+ lcd->LCDCON5 = 0x00000b09;
-+ lcd->LPCSEL = 0x00000cf0;
-+
-+ pGD->winSizeX = pGD->plnSizeX = 240;
-+ pGD->winSizeY = pGD->plnSizeY = 320;
-+ pGD->gdfBytesPP = 2;
-+ pGD->gdfIndex = GDF_16BIT_565RGB;
-+
-+ /* Enable Display */
-+ videoout = 2; /* Default output is CRT */
-+ if ((penv = getenv ("videoout")) != NULL) {
-+ /* deceide if it is a string */
-+ videoout = (int) simple_strtoul (penv, NULL, 16);
-+ }
-+
-+ printf("clearing video memory\n");
-+ /* Clear video memory */
-+ i = pGD->memSize/4;
-+ vm = (unsigned int *)pGD->frameAdrs;
-+ while(i--)
-+ *vm++ = 0;
-+
-+ printf("returning from video_hw_init\n");
-+ return ((void*)&smi);
-+}
-+
-+void
-+video_set_lut (unsigned int index, /* color number */
-+ unsigned char r, /* red */
-+ unsigned char g, /* green */
-+ unsigned char b /* blue */
-+ )
-+{
-+}
-+
-+#endif /* CONFIG_VIDEO_S3C2410 */
-diff --git a/drivers/usbdcore_s3c2410.c b/drivers/usbdcore_s3c2410.c
-new file mode 100644
-index 0000000..143fdf2
---- /dev/null
-+++ b/drivers/usbdcore_s3c2410.c
-@@ -0,0 +1,1609 @@
-+/*
-+ * (C) Copyright 2003
-+ * Gerry Hamel, geh@ti.com, Texas Instruments
-+ *
-+ * Based on
-+ * linux/drivers/usb/device/bi/omap.c
-+ * TI OMAP1510 USB bus interface driver
-+ *
-+ * Author: MontaVista Software, Inc.
-+ * source@mvista.com
-+ * (C) Copyright 2002
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#include <common.h>
-+
-+#if defined(CONFIG_S3C2410) && defined(CONFIG_USB_DEVICE)
-+
-+#include <asm/io.h>
-+
-+#include "usbdcore.h"
-+#include "usbdcore_s3c2410.h"
-+#include "usbdcore_ep0.h"
-+
-+
-+#define UDC_INIT_MDELAY 80 /* Device settle delay */
-+#define UDC_MAX_ENDPOINTS 31 /* Number of endpoints on this UDC */
-+
-+/* Some kind of debugging output... */
-+#if 1
-+#define UDCDBG(str)
-+#define UDCDBGA(fmt,args...)
-+#else /* The bugs still exists... */
-+#define UDCDBG(str) serial_printf("[%s] %s:%d: " str "\n", __FILE__,__FUNCTION__,__LINE__)
-+#define UDCDBGA(fmt,args...) serial_printf("[%s] %s:%d: " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##args)
-+#endif
-+
-+#if 1
-+#define UDCREG(name)
-+#define UDCREGL(name)
-+#else /* The bugs still exists... */
-+#define UDCREG(name) serial_printf("%s():%d: %s[%08x]=%.4x\n",__FUNCTION__,__LINE__, (#name), name, inw(name)) /* For 16-bit regs */
-+#define UDCREGL(name) serial_printf("%s():%d: %s[%08x]=%.8x\n",__FUNCTION__,__LINE__, (#name), name, inl(name)) /* For 32-bit regs */
-+#endif
-+
-+
-+static struct urb *ep0_urb = NULL;
-+
-+static struct usb_device_instance *udc_device; /* Used in interrupt handler */
-+static u16 udc_devstat = 0; /* UDC status (DEVSTAT) */
-+static u32 udc_interrupts = 0;
-+
-+static void udc_stall_ep (unsigned int ep_addr);
-+
-+
-+static struct usb_endpoint_instance *s3c2410_find_ep (int ep)
-+{
-+ int i;
-+
-+ for (i = 0; i < udc_device->bus->max_endpoints; i++) {
-+ if (udc_device->bus->endpoint_array[i].endpoint_address == ep)
-+ return &udc_device->bus->endpoint_array[i];
-+ }
-+ return NULL;
-+}
-+
-+/* ************************************************************************** */
-+/* IO
-+ */
-+
-+/*
-+ * omap1510_prepare_endpoint_for_rx
-+ *
-+ * This function implements TRM Figure 14-11.
-+ *
-+ * The endpoint to prepare for transfer is specified as a physical endpoint
-+ * number. For OUT (rx) endpoints 1 through 15, the corresponding endpoint
-+ * configuration register is checked to see if the endpoint is ISO or not.
-+ * If the OUT endpoint is valid and is non-ISO then its FIFO is enabled.
-+ * No action is taken for endpoint 0 or for IN (tx) endpoints 16 through 30.
-+ */
-+static void omap1510_prepare_endpoint_for_rx (int ep_addr)
-+{
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("omap1510_prepare_endpoint %x", ep_addr);
-+ if (((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)) {
-+ if ((inw (UDC_EP_RX (ep_num)) &
-+ (UDC_EPn_RX_Valid | UDC_EPn_RX_Iso)) ==
-+ UDC_EPn_RX_Valid) {
-+ /* rx endpoint is valid, non-ISO, so enable its FIFO */
-+ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ outw (0, UDC_EP_NUM);
-+ }
-+ }
-+}
-+
-+/* omap1510_configure_endpoints
-+ *
-+ * This function implements TRM Figure 14-10.
-+ */
-+static void omap1510_configure_endpoints (struct usb_device_instance *device)
-+{
-+ int ep;
-+ struct usb_bus_instance *bus;
-+ struct usb_endpoint_instance *endpoint;
-+ unsigned short ep_ptr;
-+ unsigned short ep_size;
-+ unsigned short ep_isoc;
-+ unsigned short ep_doublebuffer;
-+ int ep_addr;
-+ int packet_size;
-+ int buffer_size;
-+ int attributes;
-+
-+ bus = device->bus;
-+
-+ /* There is a dedicated 2048 byte buffer for USB packets that may be
-+ * arbitrarily partitioned among the endpoints on 8-byte boundaries.
-+ * The first 8 bytes are reserved for receiving setup packets on
-+ * endpoint 0.
-+ */
-+ ep_ptr = 8; /* reserve the first 8 bytes for the setup fifo */
-+
-+ for (ep = 0; ep < bus->max_endpoints; ep++) {
-+ endpoint = bus->endpoint_array + ep;
-+ ep_addr = endpoint->endpoint_address;
-+ if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ /* IN endpoint */
-+ packet_size = endpoint->tx_packetSize;
-+ attributes = endpoint->tx_attributes;
-+ } else {
-+ /* OUT endpoint */
-+ packet_size = endpoint->rcv_packetSize;
-+ attributes = endpoint->rcv_attributes;
-+ }
-+
-+ switch (packet_size) {
-+ case 0:
-+ ep_size = 0;
-+ break;
-+ case 8:
-+ ep_size = 0;
-+ break;
-+ case 16:
-+ ep_size = 1;
-+ break;
-+ case 32:
-+ ep_size = 2;
-+ break;
-+ case 64:
-+ ep_size = 3;
-+ break;
-+ case 128:
-+ ep_size = 4;
-+ break;
-+ case 256:
-+ ep_size = 5;
-+ break;
-+ case 512:
-+ ep_size = 6;
-+ break;
-+ default:
-+ UDCDBGA ("ep 0x%02x has bad packet size %d",
-+ ep_addr, packet_size);
-+ packet_size = 0;
-+ ep_size = 0;
-+ break;
-+ }
-+
-+ switch (attributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_CONTROL:
-+ case USB_ENDPOINT_XFER_BULK:
-+ case USB_ENDPOINT_XFER_INT:
-+ default:
-+ /* A non-isochronous endpoint may optionally be
-+ * double-buffered. For now we disable
-+ * double-buffering.
-+ */
-+ ep_doublebuffer = 0;
-+ ep_isoc = 0;
-+ if (packet_size > 64)
-+ packet_size = 0;
-+ if (!ep || !ep_doublebuffer)
-+ buffer_size = packet_size;
-+ else
-+ buffer_size = packet_size * 2;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ /* Isochronous endpoints are always double-
-+ * buffered, but the double-buffering bit
-+ * in the endpoint configuration register
-+ * becomes the msb of the endpoint size so we
-+ * set the double-buffering flag to zero.
-+ */
-+ ep_doublebuffer = 0;
-+ ep_isoc = 1;
-+ buffer_size = packet_size * 2;
-+ break;
-+ }
-+
-+ /* check to see if our packet buffer RAM is exhausted */
-+ if ((ep_ptr + buffer_size) > 2048) {
-+ UDCDBGA ("out of packet RAM for ep 0x%02x buf size %d", ep_addr, buffer_size);
-+ buffer_size = packet_size = 0;
-+ }
-+
-+ /* force a default configuration for endpoint 0 since it is
-+ * always enabled
-+ */
-+ if (!ep && ((packet_size < 8) || (packet_size > 64))) {
-+ buffer_size = packet_size = 64;
-+ ep_size = 3;
-+ }
-+
-+ if (!ep) {
-+ /* configure endpoint 0 */
-+ outw ((ep_size << 12) | (ep_ptr >> 3), UDC_EP0);
-+ /*UDCDBGA("ep 0 buffer offset 0x%03x packet size 0x%03x", */
-+ /* ep_ptr, packet_size); */
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ /* IN endpoint */
-+ if (packet_size) {
-+ outw ((1 << 15) | (ep_doublebuffer << 14) |
-+ (ep_size << 12) | (ep_isoc << 11) |
-+ (ep_ptr >> 3),
-+ UDC_EP_TX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ UDCDBGA ("IN ep %d buffer offset 0x%03x"
-+ " packet size 0x%03x",
-+ ep_addr & USB_ENDPOINT_NUMBER_MASK,
-+ ep_ptr, packet_size);
-+ } else {
-+ outw (0,
-+ UDC_EP_TX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ }
-+ } else {
-+ /* OUT endpoint */
-+ if (packet_size) {
-+ outw ((1 << 15) | (ep_doublebuffer << 14) |
-+ (ep_size << 12) | (ep_isoc << 11) |
-+ (ep_ptr >> 3),
-+ UDC_EP_RX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ UDCDBGA ("OUT ep %d buffer offset 0x%03x"
-+ " packet size 0x%03x",
-+ ep_addr & USB_ENDPOINT_NUMBER_MASK,
-+ ep_ptr, packet_size);
-+ } else {
-+ outw (0,
-+ UDC_EP_RX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ }
-+ }
-+ ep_ptr += buffer_size;
-+ }
-+}
-+
-+static void s3c2410_deconfigure_device (void)
-+{
-+ int epnum;
-+
-+ UDCDBG ("clear Cfg_Lock");
-+ outw (inw (UDC_SYSCON1) & ~UDC_Cfg_Lock, UDC_SYSCON1);
-+ UDCREG (UDC_SYSCON1);
-+
-+ /* deconfigure all endpoints */
-+ for (epnum = 1; epnum <= 15; epnum++) {
-+ outw (0, UDC_EP_RX (epnum));
-+ outw (0, UDC_EP_TX (epnum));
-+ }
-+}
-+
-+static void s3c2410_configure_device (struct usb_device_instance *device)
-+{
-+ u_int32_t tmp;
-+
-+ s3c2410_configure_endpoints(device);
-+
-+ /* disable EP0-4 SUBD interrupts ? */
-+ outw(0x00, S3C2410_UDC_USB_INT_EN_REG);
-+
-+ /* UPLL already configured by board-level init code */
-+
-+ /* configure USB pads to device mode */
-+ tmp = inw(S3C2410_MISCCR);
-+ tmp &= ~(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND1);
-+ outw(tmp, S3C2410_MISCCR);
-+
-+ tmp = inb(S3C2410_CLKSLOW);
-+ tmp &= ~S3C2410_CLKSLOW_USB_CLK_DISABLE;
-+ outw(tmp, S3C2410_CLKSLOW);
-+
-+ /* clear interrupt registers */
-+ inb(S3C2410_UDC_EP_INT_REG);
-+ inb(S3C2410_UDC_USB_INT_REG);
-+
-+ /* enable USB interrupts for RESET and SUSPEND/RESUME */
-+ outb(S3C2410_UDC_USBINT_RESET|S3C2410_UDC_USBINT_SUSPEND,
-+ S3C2410_UDC_USB_INT_EN_REG);
-+
-+}
-+
-+/* omap1510_write_noniso_tx_fifo
-+ *
-+ * This function implements TRM Figure 14-30.
-+ *
-+ * If the endpoint has an active tx_urb, then the next packet of data from the
-+ * URB is written to the tx FIFO. The total amount of data in the urb is given
-+ * by urb->actual_length. The maximum amount of data that can be sent in any
-+ * one packet is given by endpoint->tx_packetSize. The number of data bytes
-+ * from this URB that have already been transmitted is given by endpoint->sent.
-+ * endpoint->last is updated by this routine with the number of data bytes
-+ * transmitted in this packet.
-+ *
-+ * In accordance with Figure 14-30, the EP_NUM register must already have been
-+ * written with the value to select the appropriate tx FIFO before this routine
-+ * is called.
-+ */
-+static void omap1510_write_noniso_tx_fifo (struct usb_endpoint_instance
-+ *endpoint)
-+{
-+ struct urb *urb = endpoint->tx_urb;
-+
-+ if (urb) {
-+ unsigned int last, i;
-+
-+ UDCDBGA ("urb->buffer %p, buffer_length %d, actual_length %d",
-+ urb->buffer, urb->buffer_length, urb->actual_length);
-+ if ((last =
-+ MIN (urb->actual_length - endpoint->sent,
-+ endpoint->tx_packetSize))) {
-+ u8 *cp = urb->buffer + endpoint->sent;
-+
-+ UDCDBGA ("endpoint->sent %d, tx_packetSize %d, last %d", endpoint->sent, endpoint->tx_packetSize, last);
-+
-+ if (((u32) cp & 1) == 0) { /* word aligned? */
-+ outsw (UDC_DATA, cp, last >> 1);
-+ } else { /* byte aligned. */
-+ for (i = 0; i < (last >> 1); i++) {
-+ u16 w = ((u16) cp[2 * i + 1] << 8) |
-+ (u16) cp[2 * i];
-+ outw (w, UDC_DATA);
-+ }
-+ }
-+ if (last & 1) {
-+ outb (*(cp + last - 1), UDC_DATA);
-+ }
-+ }
-+ endpoint->last = last;
-+ }
-+}
-+
-+/* omap1510_read_noniso_rx_fifo
-+ *
-+ * This function implements TRM Figure 14-28.
-+ *
-+ * If the endpoint has an active rcv_urb, then the next packet of data is read
-+ * from the rcv FIFO and written to rcv_urb->buffer at offset
-+ * rcv_urb->actual_length to append the packet data to the data from any
-+ * previous packets for this transfer. We assume that there is sufficient room
-+ * left in the buffer to hold an entire packet of data.
-+ *
-+ * The return value is the number of bytes read from the FIFO for this packet.
-+ *
-+ * In accordance with Figure 14-28, the EP_NUM register must already have been
-+ * written with the value to select the appropriate rcv FIFO before this routine
-+ * is called.
-+ */
-+static int omap1510_read_noniso_rx_fifo (struct usb_endpoint_instance
-+ *endpoint)
-+{
-+ struct urb *urb = endpoint->rcv_urb;
-+ int len = 0;
-+
-+ if (urb) {
-+ len = inw (UDC_RXFSTAT);
-+
-+ if (len) {
-+ unsigned char *cp = urb->buffer + urb->actual_length;
-+
-+ insw (UDC_DATA, cp, len >> 1);
-+ if (len & 1)
-+ *(cp + len - 1) = inb (UDC_DATA);
-+ }
-+ }
-+ return len;
-+}
-+
-+/* omap1510_prepare_for_control_write_status
-+ *
-+ * This function implements TRM Figure 14-17.
-+ *
-+ * We have to deal here with non-autodecoded control writes that haven't already
-+ * been dealt with by ep0_recv_setup. The non-autodecoded standard control
-+ * write requests are: set/clear endpoint feature, set configuration, set
-+ * interface, and set descriptor. ep0_recv_setup handles set/clear requests for
-+ * ENDPOINT_HALT by halting the endpoint for a set request and resetting the
-+ * endpoint for a clear request. ep0_recv_setup returns an error for
-+ * SET_DESCRIPTOR requests which causes them to be terminated with a stall by
-+ * the setup handler. A SET_INTERFACE request is handled by ep0_recv_setup by
-+ * generating a DEVICE_SET_INTERFACE event. This leaves only the
-+ * SET_CONFIGURATION event for us to deal with here.
-+ *
-+ */
-+static void omap1510_prepare_for_control_write_status (struct urb *urb)
-+{
-+ struct usb_device_request *request = &urb->device_request;;
-+
-+ /* check for a SET_CONFIGURATION request */
-+ if (request->bRequest == USB_REQ_SET_CONFIGURATION) {
-+ int configuration = le16_to_cpu (request->wValue) & 0xff;
-+ unsigned short devstat = inw (UDC_DEVSTAT);
-+
-+ if ((devstat & (UDC_ADD | UDC_CFG)) == UDC_ADD) {
-+ /* device is currently in ADDRESSED state */
-+ if (configuration) {
-+ /* Assume the specified non-zero configuration
-+ * value is valid and switch to the CONFIGURED
-+ * state.
-+ */
-+ outw (UDC_Dev_Cfg, UDC_SYSCON2);
-+ }
-+ } else if ((devstat & UDC_CFG) == UDC_CFG) {
-+ /* device is currently in CONFIGURED state */
-+ if (!configuration) {
-+ /* Switch to ADDRESSED state. */
-+ outw (UDC_Clr_Cfg, UDC_SYSCON2);
-+ }
-+ }
-+ }
-+
-+ /* select EP0 tx FIFO */
-+ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+ /* clear endpoint (no data bytes in status stage) */
-+ outw (UDC_Clr_EP, UDC_CTRL);
-+ /* enable the EP0 tx FIFO */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the endpoint */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+}
-+
-+/* udc_state_transition_up
-+ * udc_state_transition_down
-+ *
-+ * Helper functions to implement device state changes. The device states and
-+ * the events that transition between them are:
-+ *
-+ * STATE_ATTACHED
-+ * || /\
-+ * \/ ||
-+ * DEVICE_HUB_CONFIGURED DEVICE_HUB_RESET
-+ * || /\
-+ * \/ ||
-+ * STATE_POWERED
-+ * || /\
-+ * \/ ||
-+ * DEVICE_RESET DEVICE_POWER_INTERRUPTION
-+ * || /\
-+ * \/ ||
-+ * STATE_DEFAULT
-+ * || /\
-+ * \/ ||
-+ * DEVICE_ADDRESS_ASSIGNED DEVICE_RESET
-+ * || /\
-+ * \/ ||
-+ * STATE_ADDRESSED
-+ * || /\
-+ * \/ ||
-+ * DEVICE_CONFIGURED DEVICE_DE_CONFIGURED
-+ * || /\
-+ * \/ ||
-+ * STATE_CONFIGURED
-+ *
-+ * udc_state_transition_up transitions up (in the direction from STATE_ATTACHED
-+ * to STATE_CONFIGURED) from the specified initial state to the specified final
-+ * state, passing through each intermediate state on the way. If the initial
-+ * state is at or above (i.e. nearer to STATE_CONFIGURED) the final state, then
-+ * no state transitions will take place.
-+ *
-+ * udc_state_transition_down transitions down (in the direction from
-+ * STATE_CONFIGURED to STATE_ATTACHED) from the specified initial state to the
-+ * specified final state, passing through each intermediate state on the way.
-+ * If the initial state is at or below (i.e. nearer to STATE_ATTACHED) the final
-+ * state, then no state transitions will take place.
-+ *
-+ * These functions must only be called with interrupts disabled.
-+ */
-+static void udc_state_transition_up (usb_device_state_t initial,
-+ usb_device_state_t final)
-+{
-+ if (initial < final) {
-+ switch (initial) {
-+ case STATE_ATTACHED:
-+ usbd_device_event_irq (udc_device,
-+ DEVICE_HUB_CONFIGURED, 0);
-+ if (final == STATE_POWERED)
-+ break;
-+ case STATE_POWERED:
-+ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
-+ if (final == STATE_DEFAULT)
-+ break;
-+ case STATE_DEFAULT:
-+ usbd_device_event_irq (udc_device,
-+ DEVICE_ADDRESS_ASSIGNED, 0);
-+ if (final == STATE_ADDRESSED)
-+ break;
-+ case STATE_ADDRESSED:
-+ usbd_device_event_irq (udc_device, DEVICE_CONFIGURED,
-+ 0);
-+ case STATE_CONFIGURED:
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+}
-+
-+static void udc_state_transition_down (usb_device_state_t initial,
-+ usb_device_state_t final)
-+{
-+ if (initial > final) {
-+ switch (initial) {
-+ case STATE_CONFIGURED:
-+ usbd_device_event_irq (udc_device, DEVICE_DE_CONFIGURED, 0);
-+ if (final == STATE_ADDRESSED)
-+ break;
-+ case STATE_ADDRESSED:
-+ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
-+ if (final == STATE_DEFAULT)
-+ break;
-+ case STATE_DEFAULT:
-+ usbd_device_event_irq (udc_device, DEVICE_POWER_INTERRUPTION, 0);
-+ if (final == STATE_POWERED)
-+ break;
-+ case STATE_POWERED:
-+ usbd_device_event_irq (udc_device, DEVICE_HUB_RESET, 0);
-+ case STATE_ATTACHED:
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+}
-+
-+/* Handle all device state changes.
-+ * This function implements TRM Figure 14-21.
-+ */
-+static void omap1510_udc_state_changed (void)
-+{
-+ u16 bits;
-+ u16 devstat = inw (UDC_DEVSTAT);
-+
-+ UDCDBGA ("state changed, devstat %x, old %x", devstat, udc_devstat);
-+
-+ bits = devstat ^ udc_devstat;
-+ if (bits) {
-+ if (bits & UDC_ATT) {
-+ if (devstat & UDC_ATT) {
-+ UDCDBG ("device attached and powered");
-+ udc_state_transition_up (udc_device->device_state, STATE_POWERED);
-+ } else {
-+ UDCDBG ("device detached or unpowered");
-+ udc_state_transition_down (udc_device->device_state, STATE_ATTACHED);
-+ }
-+ }
-+ if (bits & UDC_USB_Reset) {
-+ if (devstat & UDC_USB_Reset) {
-+ UDCDBG ("device reset in progess");
-+ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
-+ } else {
-+ UDCDBG ("device reset completed");
-+ }
-+ }
-+ if (bits & UDC_DEF) {
-+ if (devstat & UDC_DEF) {
-+ UDCDBG ("device entering default state");
-+ udc_state_transition_up (udc_device->device_state, STATE_DEFAULT);
-+ } else {
-+ UDCDBG ("device leaving default state");
-+ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
-+ }
-+ }
-+ if (bits & UDC_SUS) {
-+ if (devstat & UDC_SUS) {
-+ UDCDBG ("entering suspended state");
-+ usbd_device_event_irq (udc_device, DEVICE_BUS_INACTIVE, 0);
-+ } else {
-+ UDCDBG ("leaving suspended state");
-+ usbd_device_event_irq (udc_device, DEVICE_BUS_ACTIVITY, 0);
-+ }
-+ }
-+ if (bits & UDC_R_WK_OK) {
-+ UDCDBGA ("remote wakeup %s", (devstat & UDC_R_WK_OK)
-+ ? "enabled" : "disabled");
-+ }
-+ if (bits & UDC_ADD) {
-+ if (devstat & UDC_ADD) {
-+ UDCDBG ("default -> addressed");
-+ udc_state_transition_up (udc_device->device_state, STATE_ADDRESSED);
-+ } else {
-+ UDCDBG ("addressed -> default");
-+ udc_state_transition_down (udc_device->device_state, STATE_DEFAULT);
-+ }
-+ }
-+ if (bits & UDC_CFG) {
-+ if (devstat & UDC_CFG) {
-+ UDCDBG ("device configured");
-+ /* The ep0_recv_setup function generates the
-+ * DEVICE_CONFIGURED event when a
-+ * USB_REQ_SET_CONFIGURATION setup packet is
-+ * received, so we should already be in the
-+ * state STATE_CONFIGURED.
-+ */
-+ udc_state_transition_up (udc_device->device_state, STATE_CONFIGURED);
-+ } else {
-+ UDCDBG ("device deconfigured");
-+ udc_state_transition_down (udc_device->device_state, STATE_ADDRESSED);
-+ }
-+ }
-+ }
-+
-+ /* Clear interrupt source */
-+ outw (UDC_DS_Chg, UDC_IRQ_SRC);
-+
-+ /* Save current DEVSTAT */
-+ udc_devstat = devstat;
-+}
-+
-+static void s3c2410_udc_ep0(void)
-+{
-+ u_int8_t ep0csr;
-+
-+ UDCDBG("-> Entering EP0 handler");
-+
-+ S3C2410_UDC_SETIX(EP0);
-+ ep0csr = inb(S3C2410_UDC_IN_CSR1_REG);
-+
-+ /* clear stall status */
-+ if (ep0csr & S3C2410_UDC_EP0_CSR_SENTSTL) {
-+ clear_sp0_sst;
-+ /* FIXME */
-+ ep0_idle();
-+ }
-+
-+ if (ep0csr & S3C2410_UDC_EP0_CSR_SE
-+ && dev->ep0state != EP0_IDLE) {
-+ clear_ep0_se;
-+ ep0_idle();
-+ }
-+
-+ switch (dev->ep0state) {
-+ case EP0_IDLE:
-+ if (ep0crs & S3C2410_UDC_EP0_CSR_OPKRDY) {
-+ }
-+ break;
-+ case EP0_IN_DATA_PHASE:
-+ break;
-+ case EP0_OUT_DATA_PHASE:
-+ break;
-+ case EP0_END_XFER:
-+ break;
-+ case EP0_STALL:
-+ set_ep0_ss;
-+ break;
-+ }
-+}
-+
-+
-+}
-+
-+/* Handle SETUP USB interrupt.
-+ * This function implements TRM Figure 14-14.
-+ */
-+static void omap1510_udc_setup (struct usb_endpoint_instance *endpoint)
-+{
-+ UDCDBG ("-> Entering device setup");
-+
-+ do {
-+ const int setup_pktsize = 8;
-+ unsigned char *datap =
-+ (unsigned char *) &ep0_urb->device_request;
-+
-+ /* Gain access to EP 0 setup FIFO */
-+ outw (UDC_Setup_Sel, UDC_EP_NUM);
-+
-+ /* Read control request data */
-+ insb (UDC_DATA, datap, setup_pktsize);
-+
-+ UDCDBGA ("EP0 setup read [%x %x %x %x %x %x %x %x]",
-+ *(datap + 0), *(datap + 1), *(datap + 2),
-+ *(datap + 3), *(datap + 4), *(datap + 5),
-+ *(datap + 6), *(datap + 7));
-+
-+ /* Reset EP0 setup FIFO */
-+ outw (0, UDC_EP_NUM);
-+ } while (inw (UDC_IRQ_SRC) & UDC_Setup);
-+
-+ /* Try to process setup packet */
-+ if (ep0_recv_setup (ep0_urb)) {
-+ /* Not a setup packet, stall next EP0 transaction */
-+ udc_stall_ep (0);
-+ UDCDBG ("can't parse setup packet, still waiting for setup");
-+ return;
-+ }
-+
-+ /* Check direction */
-+ if ((ep0_urb->device_request.bmRequestType & USB_REQ_DIRECTION_MASK)
-+ == USB_REQ_HOST2DEVICE) {
-+ UDCDBG ("control write on EP0");
-+ if (le16_to_cpu (ep0_urb->device_request.wLength)) {
-+ /* We don't support control write data stages.
-+ * The only standard control write request with a data
-+ * stage is SET_DESCRIPTOR, and ep0_recv_setup doesn't
-+ * support that so we just stall those requests. A
-+ * function driver might support a non-standard
-+ * write request with a data stage, but it isn't
-+ * obvious what we would do with the data if we read it
-+ * so we'll just stall it. It seems like the API isn't
-+ * quite right here.
-+ */
-+#if 0
-+ /* Here is what we would do if we did support control
-+ * write data stages.
-+ */
-+ ep0_urb->actual_length = 0;
-+ outw (0, UDC_EP_NUM);
-+ /* enable the EP0 rx FIFO */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+#else
-+ /* Stall this request */
-+ UDCDBG ("Stalling unsupported EP0 control write data "
-+ "stage.");
-+ udc_stall_ep (0);
-+#endif
-+ } else {
-+ omap1510_prepare_for_control_write_status (ep0_urb);
-+ }
-+ } else {
-+ UDCDBG ("control read on EP0");
-+ /* The ep0_recv_setup function has already placed our response
-+ * packet data in ep0_urb->buffer and the packet length in
-+ * ep0_urb->actual_length.
-+ */
-+ endpoint->tx_urb = ep0_urb;
-+ endpoint->sent = 0;
-+ /* select the EP0 tx FIFO */
-+ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+ /* Write packet data to the FIFO. omap1510_write_noniso_tx_fifo
-+ * will update endpoint->last with the number of bytes written
-+ * to the FIFO.
-+ */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable the FIFO to start the packet transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the EP0 tx FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ }
-+
-+ UDCDBG ("<- Leaving device setup");
-+}
-+
-+/* Handle endpoint 0 RX interrupt
-+ * This routine implements TRM Figure 14-16.
-+ */
-+static void omap1510_udc_ep0_rx (struct usb_endpoint_instance *endpoint)
-+{
-+ unsigned short status;
-+
-+ UDCDBG ("RX on EP0");
-+ /* select EP0 rx FIFO */
-+ outw (UDC_EP_Sel, UDC_EP_NUM);
-+
-+ status = inw (UDC_STAT_FLG);
-+
-+ if (status & UDC_ACK) {
-+ /* Check direction */
-+ if ((ep0_urb->device_request.bmRequestType
-+ & USB_REQ_DIRECTION_MASK) == USB_REQ_HOST2DEVICE) {
-+ /* This rx interrupt must be for a control write data
-+ * stage packet.
-+ *
-+ * We don't support control write data stages.
-+ * We should never end up here.
-+ */
-+
-+ /* clear the EP0 rx FIFO */
-+ outw (UDC_Clr_EP, UDC_CTRL);
-+
-+ /* deselect the EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+
-+ UDCDBG ("Stalling unexpected EP0 control write "
-+ "data stage packet");
-+ udc_stall_ep (0);
-+ } else {
-+ /* This rx interrupt must be for a control read status
-+ * stage packet.
-+ */
-+ UDCDBG ("ACK on EP0 control read status stage packet");
-+ /* deselect EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+ }
-+ } else if (status & UDC_STALL) {
-+ UDCDBG ("EP0 stall during RX");
-+ /* deselect EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+ } else {
-+ /* deselect EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+ }
-+}
-+
-+/* Handle endpoint 0 TX interrupt
-+ * This routine implements TRM Figure 14-18.
-+ */
-+static void omap1510_udc_ep0_tx (struct usb_endpoint_instance *endpoint)
-+{
-+ unsigned short status;
-+ struct usb_device_request *request = &ep0_urb->device_request;
-+
-+ UDCDBG ("TX on EP0");
-+ /* select EP0 TX FIFO */
-+ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+
-+ status = inw (UDC_STAT_FLG);
-+ if (status & UDC_ACK) {
-+ /* Check direction */
-+ if ((request->bmRequestType & USB_REQ_DIRECTION_MASK) ==
-+ USB_REQ_HOST2DEVICE) {
-+ /* This tx interrupt must be for a control write status
-+ * stage packet.
-+ */
-+ UDCDBG ("ACK on EP0 control write status stage packet");
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ } else {
-+ /* This tx interrupt must be for a control read data
-+ * stage packet.
-+ */
-+ int wLength = le16_to_cpu (request->wLength);
-+
-+ /* Update our count of bytes sent so far in this
-+ * transfer.
-+ */
-+ endpoint->sent += endpoint->last;
-+
-+ /* We are finished with this transfer if we have sent
-+ * all of the bytes in our tx urb (urb->actual_length)
-+ * unless we need a zero-length terminating packet. We
-+ * need a zero-length terminating packet if we returned
-+ * fewer bytes than were requested (wLength) by the host,
-+ * and the number of bytes we returned is an exact
-+ * multiple of the packet size endpoint->tx_packetSize.
-+ */
-+ if ((endpoint->sent == ep0_urb->actual_length)
-+ && ((ep0_urb->actual_length == wLength)
-+ || (endpoint->last !=
-+ endpoint->tx_packetSize))) {
-+ /* Done with control read data stage. */
-+ UDCDBG ("control read data stage complete");
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ /* select EP0 RX FIFO to prepare for control
-+ * read status stage.
-+ */
-+ outw (UDC_EP_Sel, UDC_EP_NUM);
-+ /* clear the EP0 RX FIFO */
-+ outw (UDC_Clr_EP, UDC_CTRL);
-+ /* enable the EP0 RX FIFO */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the EP0 RX FIFO */
-+ outw (0, UDC_EP_NUM);
-+ } else {
-+ /* We still have another packet of data to send
-+ * in this control read data stage or else we
-+ * need a zero-length terminating packet.
-+ */
-+ UDCDBG ("ACK control read data stage packet");
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable the EP0 tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ }
-+ }
-+ } else if (status & UDC_STALL) {
-+ UDCDBG ("EP0 stall during TX");
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ } else {
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ }
-+}
-+
-+/* Handle RX transaction on non-ISO endpoint.
-+ * This function implements TRM Figure 14-27.
-+ * The ep argument is a physical endpoint number for a non-ISO OUT endpoint
-+ * in the range 1 to 15.
-+ */
-+static void omap1510_udc_epn_rx (int ep)
-+{
-+ unsigned short status;
-+
-+ /* Check endpoint status */
-+ status = inw (UDC_STAT_FLG);
-+
-+ if (status & UDC_ACK) {
-+ int nbytes;
-+ struct usb_endpoint_instance *endpoint =
-+ omap1510_find_ep (ep);
-+
-+ nbytes = omap1510_read_noniso_rx_fifo (endpoint);
-+ usbd_rcv_complete (endpoint, nbytes, 0);
-+
-+ /* enable rx FIFO to prepare for next packet */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ } else if (status & UDC_STALL) {
-+ UDCDBGA ("STALL on RX endpoint %d", ep);
-+ } else if (status & UDC_NAK) {
-+ UDCDBGA ("NAK on RX ep %d", ep);
-+ } else {
-+ serial_printf ("omap-bi: RX on ep %d with status %x", ep,
-+ status);
-+ }
-+}
-+
-+/* Handle TX transaction on non-ISO endpoint.
-+ * This function implements TRM Figure 14-29.
-+ * The ep argument is a physical endpoint number for a non-ISO IN endpoint
-+ * in the range 16 to 30.
-+ */
-+static void omap1510_udc_epn_tx (int ep)
-+{
-+ unsigned short status;
-+
-+ /*serial_printf("omap1510_udc_epn_tx( %x )\n",ep); */
-+
-+ /* Check endpoint status */
-+ status = inw (UDC_STAT_FLG);
-+
-+ if (status & UDC_ACK) {
-+ struct usb_endpoint_instance *endpoint =
-+ omap1510_find_ep (ep);
-+
-+ /* We need to transmit a terminating zero-length packet now if
-+ * we have sent all of the data in this URB and the transfer
-+ * size was an exact multiple of the packet size.
-+ */
-+ if (endpoint->tx_urb
-+ && (endpoint->last == endpoint->tx_packetSize)
-+ && (endpoint->tx_urb->actual_length - endpoint->sent -
-+ endpoint->last == 0)) {
-+ /* Prepare to transmit a zero-length packet. */
-+ endpoint->sent += endpoint->last;
-+ /* write 0 bytes of data to FIFO */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ } else if (endpoint->tx_urb
-+ && endpoint->tx_urb->actual_length) {
-+ /* retire the data that was just sent */
-+ usbd_tx_complete (endpoint);
-+ /* Check to see if we have more data ready to transmit
-+ * now.
-+ */
-+ if (endpoint->tx_urb
-+ && endpoint->tx_urb->actual_length) {
-+ /* write data to FIFO */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ }
-+ }
-+ } else if (status & UDC_STALL) {
-+ UDCDBGA ("STALL on TX endpoint %d", ep);
-+ } else if (status & UDC_NAK) {
-+ UDCDBGA ("NAK on TX endpoint %d", ep);
-+ } else {
-+ /*serial_printf("omap-bi: TX on ep %d with status %x\n", ep, status); */
-+ }
-+}
-+
-+
-+/*
-+-------------------------------------------------------------------------------
-+*/
-+
-+/* Handle general USB interrupts and dispatch according to type.
-+ * This function implements TRM Figure 14-13.
-+ */
-+void s3c2410_udc_irq (void)
-+{
-+ u_int8_t save_idx = inb(S3C2410_UDC_INDEX_REG);
-+ u_int8_t usb_status = inb(S3C2410_UDC_USB_INT_REG);
-+ u_int8_t usbd_status = inb(S3C2410_UDC_EP_INT_REG);
-+
-+ UDCDBGA("< IRQ usbs=0x%02x, usbds=0x%02x start >", usb_status,
-+ usbd_status);
-+
-+ if (usb_status & S3C2410_UDC_USBINT_RESET) {
-+ valid_irq++;
-+ }
-+
-+ if (usb_status & S3C2410_UDC_USBINT_RESUME) {
-+ valid_irq++;
-+
-+ }
-+
-+ if (usb_status & S3C2410_UDC_USBINT_SUSPEND) {
-+ valid_irq++;
-+
-+ }
-+
-+ /* Endpoint Interrupts */
-+ if (usbd_status) {
-+ int i;
-+
-+ if (usbd_status & S3C2410_UDC_INT_EP0) {
-+ s3c2410_udc_ep0();
-+ outb(S3C2410_UDC_INT_EP0, S3C2410_UDC_EP_INT_REG);
-+ valid_irq++;
-+ }
-+
-+ for (i = 1; i < 5; i++) {
-+ u_int32_t tmp = 1 << i;
-+
-+ if (usbd_status & tmp) {
-+ /* FIXME: Handle EP X */
-+ s3c2410_udc_epn(i);
-+ outb(tmp, S3C2410_UDC_EP_INT_REG);
-+ valid_irq++;
-+ }
-+ }
-+ }
-+ outb(save_idx, S3C2410_UDC_INDEX_REG);
-+
-+#if 0
-+ if (!(irq_src & ~UDC_SOF_Flg)) /* ignore SOF interrupts ) */
-+ return;
-+
-+ UDCDBGA ("< IRQ #%d start >- %x", udc_interrupts, irq_src);
-+ /*serial_printf("< IRQ #%d start >- %x\n", udc_interrupts, irq_src); */
-+
-+ if (irq_src & UDC_DS_Chg) {
-+ /* Device status changed */
-+ omap1510_udc_state_changed ();
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_EP0_RX) {
-+ /* Endpoint 0 receive */
-+ outw (UDC_EP0_RX, UDC_IRQ_SRC); /* ack interrupt */
-+ omap1510_udc_ep0_rx (udc_device->bus->endpoint_array + 0);
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_EP0_TX) {
-+ /* Endpoint 0 transmit */
-+ outw (UDC_EP0_TX, UDC_IRQ_SRC); /* ack interrupt */
-+ omap1510_udc_ep0_tx (udc_device->bus->endpoint_array + 0);
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_Setup) {
-+ /* Device setup */
-+ omap1510_udc_setup (udc_device->bus->endpoint_array + 0);
-+ valid_irq++;
-+ }
-+ /*if (!valid_irq) */
-+ /* serial_printf("unknown interrupt, IRQ_SRC %.4x\n", irq_src); */
-+#endif
-+ UDCDBGA ("< IRQ end >", udc_interrupts);
-+
-+ udc_interrupts++;
-+}
-+
-+/* This function implements TRM Figure 14-26. */
-+void omap1510_udc_noniso_irq (void)
-+{
-+ unsigned short epnum;
-+ unsigned short irq_src = inw (UDC_IRQ_SRC);
-+ int valid_irq = 0;
-+
-+ if (!(irq_src & (UDC_EPn_RX | UDC_EPn_TX)))
-+ return;
-+
-+ UDCDBGA ("non-ISO IRQ, IRQ_SRC %x", inw (UDC_IRQ_SRC));
-+
-+ if (irq_src & UDC_EPn_RX) { /* Endpoint N OUT transaction */
-+ /* Determine the endpoint number for this interrupt */
-+ epnum = (inw (UDC_EPN_STAT) & 0x0f00) >> 8;
-+ UDCDBGA ("RX on ep %x", epnum);
-+
-+ /* acknowledge interrupt */
-+ outw (UDC_EPn_RX, UDC_IRQ_SRC);
-+
-+ if (epnum) {
-+ /* select the endpoint FIFO */
-+ outw (UDC_EP_Sel | epnum, UDC_EP_NUM);
-+
-+ omap1510_udc_epn_rx (epnum);
-+
-+ /* deselect the endpoint FIFO */
-+ outw (epnum, UDC_EP_NUM);
-+ }
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_EPn_TX) { /* Endpoint N IN transaction */
-+ /* Determine the endpoint number for this interrupt */
-+ epnum = (inw (UDC_EPN_STAT) & 0x000f) | USB_DIR_IN;
-+ UDCDBGA ("TX on ep %x", epnum);
-+
-+ /* acknowledge interrupt */
-+ outw (UDC_EPn_TX, UDC_IRQ_SRC);
-+
-+ if (epnum) {
-+ /* select the endpoint FIFO */
-+ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
-+
-+ omap1510_udc_epn_tx (epnum);
-+
-+ /* deselect the endpoint FIFO */
-+ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
-+ }
-+ valid_irq++;
-+ }
-+ if (!valid_irq)
-+ serial_printf (": unknown non-ISO interrupt, IRQ_SRC %.4x\n",
-+ irq_src);
-+}
-+
-+/*
-+-------------------------------------------------------------------------------
-+*/
-+
-+
-+/*
-+ * Start of public functions.
-+ */
-+
-+/* Called to start packet transmission. */
-+void udc_endpoint_write (struct usb_endpoint_instance *endpoint)
-+{
-+ unsigned short epnum =
-+ endpoint->endpoint_address & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("Starting transmit on ep %x", epnum);
-+
-+ if (endpoint->tx_urb) {
-+ /* select the endpoint FIFO */
-+ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
-+ /* write data to FIFO */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the endpoint FIFO */
-+ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
-+ }
-+}
-+
-+/* Start to initialize h/w stuff */
-+int udc_init (void)
-+{
-+ u16 udc_rev;
-+ uchar value;
-+ ulong gpio;
-+ int i;
-+
-+ /* Let the device settle down before we start */
-+ for (i = 0; i < UDC_INIT_MDELAY; i++) udelay(1000);
-+
-+ udc_device = NULL;
-+
-+ UDCDBG ("starting");
-+
-+ /* Check peripheral reset. Must be 1 to make sure
-+ MPU TIPB peripheral reset is inactive */
-+ UDCREG (ARM_RSTCT2);
-+
-+ /* Set and check clock control.
-+ * We might ought to be using the clock control API to do
-+ * this instead of fiddling with the clock registers directly
-+ * here.
-+ */
-+ outw ((1 << 4) | (1 << 5), CLOCK_CTRL);
-+ UDCREG (CLOCK_CTRL);
-+ /* Set and check APLL */
-+ outw (0x0008, APLL_CTRL);
-+ UDCREG (APLL_CTRL);
-+ /* Set and check DPLL */
-+ outw (0x2210, DPLL_CTRL);
-+ UDCREG (DPLL_CTRL);
-+ /* Set and check SOFT */
-+ outw ((1 << 4) | (1 << 3) | 1, SOFT_REQ);
-+ /* Short delay to wait for DPLL */
-+ udelay (1000);
-+
-+ /* Print banner with device revision */
-+ udc_rev = inw (UDC_REV) & 0xff;
-+ printf ("USB: TI OMAP1510 USB function module rev %d.%d\n",
-+ udc_rev >> 4, udc_rev & 0xf);
-+
-+#ifdef CONFIG_OMAP_SX1
-+ i2c_read (0x32, 0x04, 1, &value, 1);
-+ value |= 0x04;
-+ i2c_write (0x32, 0x04, 1, &value, 1);
-+
-+ i2c_read (0x32, 0x03, 1, &value, 1);
-+ value |= 0x01;
-+ i2c_write (0x32, 0x03, 1, &value, 1);
-+
-+ gpio = inl(GPIO_PIN_CONTROL_REG);
-+ gpio |= 0x0002; /* A_IRDA_OFF */
-+ gpio |= 0x0800; /* A_SWITCH */
-+ gpio |= 0x8000; /* A_USB_ON */
-+ outl (gpio, GPIO_PIN_CONTROL_REG);
-+
-+ gpio = inl(GPIO_DIR_CONTROL_REG);
-+ gpio &= ~0x0002; /* A_IRDA_OFF */
-+ gpio &= ~0x0800; /* A_SWITCH */
-+ gpio &= ~0x8000; /* A_USB_ON */
-+ outl (gpio, GPIO_DIR_CONTROL_REG);
-+
-+ gpio = inl(GPIO_DATA_OUTPUT_REG);
-+ gpio |= 0x0002; /* A_IRDA_OFF */
-+ gpio &= ~0x0800; /* A_SWITCH */
-+ gpio &= ~0x8000; /* A_USB_ON */
-+ outl (gpio, GPIO_DATA_OUTPUT_REG);
-+#endif
-+
-+ /* The VBUS_MODE bit selects whether VBUS detection is done via
-+ * software (1) or hardware (0). When software detection is
-+ * selected, VBUS_CTRL selects whether USB is not connected (0)
-+ * or connected (1).
-+ */
-+ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
-+ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
-+ UDCREGL (FUNC_MUX_CTRL_0);
-+
-+ /*
-+ * At this point, device is ready for configuration...
-+ */
-+
-+ UDCDBG ("disable USB interrupts");
-+ outw (0, UDC_IRQ_EN);
-+ UDCREG (UDC_IRQ_EN);
-+
-+ UDCDBG ("disable USB DMA");
-+ outw (0, UDC_DMA_IRQ_EN);
-+ UDCREG (UDC_DMA_IRQ_EN);
-+
-+ UDCDBG ("initialize SYSCON1");
-+ outw (UDC_Self_Pwr | UDC_Pullup_En, UDC_SYSCON1);
-+ UDCREG (UDC_SYSCON1);
-+
-+ return 0;
-+}
-+
-+/* Stall endpoint */
-+static void udc_stall_ep (unsigned int ep_addr)
-+{
-+ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("stall ep_addr %d", ep_addr);
-+
-+ /* REVISIT?
-+ * The OMAP TRM section 14.2.4.2 says we must check that the FIFO
-+ * is empty before halting the endpoint. The current implementation
-+ * doesn't check that the FIFO is empty.
-+ */
-+
-+ if (!ep_num) {
-+ outw (UDC_Stall_Cmd, UDC_SYSCON2);
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
-+ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
-+ /* we have a valid rx endpoint, so halt it */
-+ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
-+ outw (UDC_Set_Halt, UDC_CTRL);
-+ outw (ep_num, UDC_EP_NUM);
-+ }
-+ } else {
-+ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
-+ /* we have a valid tx endpoint, so halt it */
-+ outw (UDC_EP_Sel | UDC_EP_Dir | ep_num, UDC_EP_NUM);
-+ outw (UDC_Set_Halt, UDC_CTRL);
-+ outw (ep_num, UDC_EP_NUM);
-+ }
-+ }
-+}
-+
-+/* Reset endpoint */
-+#if 0
-+static void udc_reset_ep (unsigned int ep_addr)
-+{
-+ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("reset ep_addr %d", ep_addr);
-+
-+ if (!ep_num) {
-+ /* control endpoint 0 can't be reset */
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
-+ UDCDBGA ("UDC_EP_RX(%d) = 0x%04x", ep_num,
-+ inw (UDC_EP_RX (ep_num)));
-+ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
-+ /* we have a valid rx endpoint, so reset it */
-+ outw (ep_num | UDC_EP_Sel, UDC_EP_NUM);
-+ outw (UDC_Reset_EP, UDC_CTRL);
-+ outw (ep_num, UDC_EP_NUM);
-+ UDCDBGA ("OUT endpoint %d reset", ep_num);
-+ }
-+ } else {
-+ UDCDBGA ("UDC_EP_TX(%d) = 0x%04x", ep_num,
-+ inw (UDC_EP_TX (ep_num)));
-+ /* Resetting of tx endpoints seems to be causing the USB function
-+ * module to fail, which causes problems when the driver is
-+ * uninstalled. We'll skip resetting tx endpoints for now until
-+ * we figure out what the problem is.
-+ */
-+#if 0
-+ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
-+ /* we have a valid tx endpoint, so reset it */
-+ outw (ep_num | UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+ outw (UDC_Reset_EP, UDC_CTRL);
-+ outw (ep_num | UDC_EP_Dir, UDC_EP_NUM);
-+ UDCDBGA ("IN endpoint %d reset", ep_num);
-+ }
-+#endif
-+ }
-+}
-+#endif
-+
-+/* ************************************************************************** */
-+
-+/**
-+ * udc_check_ep - check logical endpoint
-+ *
-+ * Return physical endpoint number to use for this logical endpoint or zero if not valid.
-+ */
-+#if 0
-+int udc_check_ep (int logical_endpoint, int packetsize)
-+{
-+ if ((logical_endpoint == 0x80) ||
-+ ((logical_endpoint & 0x8f) != logical_endpoint)) {
-+ return 0;
-+ }
-+
-+ switch (packetsize) {
-+ case 8:
-+ case 16:
-+ case 32:
-+ case 64:
-+ case 128:
-+ case 256:
-+ case 512:
-+ break;
-+ default:
-+ return 0;
-+ }
-+
-+ return EP_ADDR_TO_PHYS_EP (logical_endpoint);
-+}
-+#endif
-+
-+/*
-+ * udc_setup_ep - setup endpoint
-+ *
-+ * Associate a physical endpoint with endpoint_instance
-+ */
-+void udc_setup_ep (struct usb_device_instance *device,
-+ unsigned int ep, struct usb_endpoint_instance *endpoint)
-+{
-+ UDCDBGA ("setting up endpoint addr %x", endpoint->endpoint_address);
-+
-+ /* This routine gets called by bi_modinit for endpoint 0 and from
-+ * bi_config for all of the other endpoints. bi_config gets called
-+ * during the DEVICE_CREATE, DEVICE_CONFIGURED, and
-+ * DEVICE_SET_INTERFACE events. We need to reconfigure the OMAP packet
-+ * RAM after bi_config scans the selected device configuration and
-+ * initializes the endpoint structures, but before this routine enables
-+ * the OUT endpoint FIFOs. Since bi_config calls this routine in a
-+ * loop for endpoints 1 through UDC_MAX_ENDPOINTS, we reconfigure our
-+ * packet RAM here when ep==1.
-+ * I really hate to do this here, but it seems like the API exported
-+ * by the USB bus interface controller driver to the usbd-bi module
-+ * isn't quite right so there is no good place to do this.
-+ */
-+ if (ep == 1) {
-+ omap1510_deconfigure_device ();
-+ omap1510_configure_device (device);
-+ }
-+
-+ if (endpoint && (ep < UDC_MAX_ENDPOINTS)) {
-+ int ep_addr = endpoint->endpoint_address;
-+
-+ if (!ep_addr) {
-+ /* nothing to do for endpoint 0 */
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ /* nothing to do for IN (tx) endpoints */
-+ } else { /* OUT (rx) endpoint */
-+ if (endpoint->rcv_packetSize) {
-+ /*struct urb* urb = &(urb_out_array[ep&0xFF]); */
-+ /*urb->endpoint = endpoint; */
-+ /*urb->device = device; */
-+ /*urb->buffer_length = sizeof(urb->buffer); */
-+
-+ /*endpoint->rcv_urb = urb; */
-+ omap1510_prepare_endpoint_for_rx (ep_addr);
-+ }
-+ }
-+ }
-+}
-+
-+/**
-+ * udc_disable_ep - disable endpoint
-+ * @ep:
-+ *
-+ * Disable specified endpoint
-+ */
-+#if 0
-+void udc_disable_ep (unsigned int ep_addr)
-+{
-+ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+ struct usb_endpoint_instance *endpoint = omap1510_find_ep (ep_addr); /*udc_device->bus->endpoint_array + ep; */
-+
-+ UDCDBGA ("disable ep_addr %d", ep_addr);
-+
-+ if (!ep_num) {
-+ /* nothing to do for endpoint 0 */ ;
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ if (endpoint->tx_packetSize) {
-+ /* we have a valid tx endpoint */
-+ /*usbd_flush_tx(endpoint); */
-+ endpoint->tx_urb = NULL;
-+ }
-+ } else {
-+ if (endpoint->rcv_packetSize) {
-+ /* we have a valid rx endpoint */
-+ /*usbd_flush_rcv(endpoint); */
-+ endpoint->rcv_urb = NULL;
-+ }
-+ }
-+}
-+#endif
-+
-+/* ************************************************************************** */
-+
-+/**
-+ * udc_connected - is the USB cable connected
-+ *
-+ * Return non-zero if cable is connected.
-+ */
-+#if 0
-+int udc_connected (void)
-+{
-+ return ((inw (UDC_DEVSTAT) & UDC_ATT) == UDC_ATT);
-+}
-+#endif
-+
-+/* Turn on the USB connection by enabling the pullup resistor */
-+void udc_connect (void)
-+{
-+ UDCDBG ("connect, enable Pullup");
-+}
-+
-+/* Turn off the USB connection by disabling the pullup resistor */
-+void udc_disconnect (void)
-+{
-+ UDCDBG ("disconnect, disable Pullup");
-+}
-+
-+/* ************************************************************************** */
-+
-+
-+/*
-+ * udc_disable_interrupts - disable interrupts
-+ * switch off interrupts
-+ */
-+#if 0
-+void udc_disable_interrupts (struct usb_device_instance *device)
-+{
-+ UDCDBG ("disabling all interrupts");
-+ outw (0, UDC_IRQ_EN);
-+}
-+#endif
-+
-+/* ************************************************************************** */
-+
-+/**
-+ * udc_ep0_packetsize - return ep0 packetsize
-+ */
-+#if 0
-+int udc_ep0_packetsize (void)
-+{
-+ return EP0_PACKETSIZE;
-+}
-+#endif
-+
-+/* Switch on the UDC */
-+void udc_enable (struct usb_device_instance *device)
-+{
-+ UDCDBGA ("enable device %p, status %d", device, device->status);
-+
-+ /* initialize driver state variables */
-+ udc_devstat = 0;
-+
-+ /* Save the device structure pointer */
-+ udc_device = device;
-+
-+ /* Setup ep0 urb */
-+ if (!ep0_urb) {
-+ ep0_urb =
-+ usbd_alloc_urb (udc_device,
-+ udc_device->bus->endpoint_array);
-+ } else {
-+ serial_printf ("udc_enable: ep0_urb already allocated %p\n",
-+ ep0_urb);
-+ }
-+
-+#ifdef FIXME
-+ /* The VBUS_MODE bit selects whether VBUS detection is done via
-+ * software (1) or hardware (0). When software detection is
-+ * selected, VBUS_CTRL selects whether USB is not connected (0)
-+ * or connected (1).
-+ */
-+ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_CTRL | UDC_VBUS_MODE,
-+ FUNC_MUX_CTRL_0);
-+ UDCREGL (FUNC_MUX_CTRL_0);
-+#endif
-+
-+ s3c2410_configure_device(device);
-+}
-+
-+/* Switch off the UDC */
-+void udc_disable (void)
-+{
-+ UDCDBG ("disable UDC");
-+
-+ s3c2410_deconfigure_device();
-+
-+#ifdef FIXME
-+ /* The VBUS_MODE bit selects whether VBUS detection is done via
-+ * software (1) or hardware (0). When software detection is
-+ * selected, VBUS_CTRL selects whether USB is not connected (0)
-+ * or connected (1).
-+ */
-+ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
-+ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
-+ UDCREGL (FUNC_MUX_CTRL_0);
-+#endif
-+
-+ /* Free ep0 URB */
-+ if (ep0_urb) {
-+ /*usbd_dealloc_urb(ep0_urb); */
-+ ep0_urb = NULL;
-+ }
-+
-+ /* Reset device pointer.
-+ * We ought to do this here to balance the initialization of udc_device
-+ * in udc_enable, but some of our other exported functions get called
-+ * by the bus interface driver after udc_disable, so we have to hang on
-+ * to the device pointer to avoid a null pointer dereference. */
-+ /* udc_device = NULL; */
-+}
-+
-+/**
-+ * udc_startup - allow udc code to do any additional startup
-+ */
-+void udc_startup_events (struct usb_device_instance *device)
-+{
-+ /* The DEVICE_INIT event puts the USB device in the state STATE_INIT. */
-+ usbd_device_event_irq (device, DEVICE_INIT, 0);
-+
-+ /* The DEVICE_CREATE event puts the USB device in the state
-+ * STATE_ATTACHED.
-+ */
-+ usbd_device_event_irq (device, DEVICE_CREATE, 0);
-+
-+ /* Some USB controller driver implementations signal
-+ * DEVICE_HUB_CONFIGURED and DEVICE_RESET events here.
-+ * DEVICE_HUB_CONFIGURED causes a transition to the state STATE_POWERED,
-+ * and DEVICE_RESET causes a transition to the state STATE_DEFAULT.
-+ * The OMAP USB client controller has the capability to detect when the
-+ * USB cable is connected to a powered USB bus via the ATT bit in the
-+ * DEVSTAT register, so we will defer the DEVICE_HUB_CONFIGURED and
-+ * DEVICE_RESET events until later.
-+ */
-+
-+ udc_enable (device);
-+}
-+
-+#endif
-diff --git a/examples/Makefile b/examples/Makefile
-index a342d75..082e52e 100644
---- a/examples/Makefile
-+++ b/examples/Makefile
-@@ -60,7 +60,7 @@ endif
- include $(TOPDIR)/config.mk
-
- SREC = hello_world.srec
--BIN = hello_world.bin hello_world
-+BIN = hello_world hello_world.bin
-
- ifeq ($(CPU),mpc8xx)
- SREC = test_burst.srec
-@@ -122,7 +122,7 @@ clibdir := $(shell dirname `$(CC) $(CFLA
-
- CPPFLAGS += -I..
-
--all: .depend $(OBJS) $(LIB) $(SREC) $(BIN)
-+all: .depend $(OBJS) $(LIB) $(BIN) $(SREC)
-
- #########################################################################
- $(LIB): .depend $(LIBOBJS)
-diff --git a/include/asm-arm/arch-s3c24x0/mmc.h b/include/asm-arm/arch-s3c24x0/mmc.h
-new file mode 100644
-index 0000000..d9178f3
---- /dev/null
-+++ b/include/asm-arm/arch-s3c24x0/mmc.h
-@@ -0,0 +1,112 @@
-+/*
-+ * linux/drivers/mmc/mmc_pxa.h
-+ *
-+ * Author: Vladimir Shebordaev, Igor Oblakov
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * $Id: mmc_pxa.h,v 0.3.1.6 2002/09/25 19:25:48 ted Exp ted $
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+#ifndef __MMC_PXA_P_H__
-+#define __MMC_PXA_P_H__
-+
-+#include <asm/arch/regs-sdi.h>
-+
-+#define MMC_DEFAULT_RCA (1<<16)
-+
-+#define MMC_BLOCK_SIZE 512
-+#define MMC_CMD_RESET 0
-+#define MMC_CMD_SEND_OP_COND 1
-+#define MMC_CMD_ALL_SEND_CID 2
-+#define MMC_CMD_SET_RCA 3
-+#define MMC_CMD_SELECT_CARD 7
-+#define MMC_CMD_SEND_CSD 9
-+#define MMC_CMD_SEND_CID 10
-+#define MMC_CMD_SEND_STATUS 13
-+#define MMC_CMD_SET_BLOCKLEN 16
-+#define MMC_CMD_READ_BLOCK 17
-+#define MMC_CMD_RD_BLK_MULTI 18
-+#define MMC_CMD_WRITE_BLOCK 24
-+
-+#define MMC_MAX_BLOCK_SIZE 512
-+
-+#define MMC_R1_IDLE_STATE 0x01
-+#define MMC_R1_ERASE_STATE 0x02
-+#define MMC_R1_ILLEGAL_CMD 0x04
-+#define MMC_R1_COM_CRC_ERR 0x08
-+#define MMC_R1_ERASE_SEQ_ERR 0x01
-+#define MMC_R1_ADDR_ERR 0x02
-+#define MMC_R1_PARAM_ERR 0x04
-+
-+#define MMC_R1B_WP_ERASE_SKIP 0x0002
-+#define MMC_R1B_ERR 0x0004
-+#define MMC_R1B_CC_ERR 0x0008
-+#define MMC_R1B_CARD_ECC_ERR 0x0010
-+#define MMC_R1B_WP_VIOLATION 0x0020
-+#define MMC_R1B_ERASE_PARAM 0x0040
-+#define MMC_R1B_OOR 0x0080
-+#define MMC_R1B_IDLE_STATE 0x0100
-+#define MMC_R1B_ERASE_RESET 0x0200
-+#define MMC_R1B_ILLEGAL_CMD 0x0400
-+#define MMC_R1B_COM_CRC_ERR 0x0800
-+#define MMC_R1B_ERASE_SEQ_ERR 0x1000
-+#define MMC_R1B_ADDR_ERR 0x2000
-+#define MMC_R1B_PARAM_ERR 0x4000
-+
-+typedef struct mmc_cid
-+{
-+/* FIXME: BYTE_ORDER */
-+ uchar year:4,
-+ month:4;
-+ uchar sn[3];
-+ uchar fwrev:4,
-+ hwrev:4;
-+ uchar name[6];
-+ uchar id[3];
-+} mmc_cid_t;
-+
-+typedef struct mmc_csd
-+{
-+ uchar ecc:2,
-+ file_format:2,
-+ tmp_write_protect:1,
-+ perm_write_protect:1,
-+ copy:1,
-+ file_format_grp:1;
-+ uint64_t content_prot_app:1,
-+ rsvd3:4,
-+ write_bl_partial:1,
-+ write_bl_len:4,
-+ r2w_factor:3,
-+ default_ecc:2,
-+ wp_grp_enable:1,
-+ wp_grp_size:5,
-+ erase_grp_mult:5,
-+ erase_grp_size:5,
-+ c_size_mult1:3,
-+ vdd_w_curr_max:3,
-+ vdd_w_curr_min:3,
-+ vdd_r_curr_max:3,
-+ vdd_r_curr_min:3,
-+ c_size:12,
-+ rsvd2:2,
-+ dsr_imp:1,
-+ read_blk_misalign:1,
-+ write_blk_misalign:1,
-+ read_bl_partial:1;
-+
-+ ushort read_bl_len:4,
-+ ccc:12;
-+ uchar tran_speed;
-+ uchar nsac;
-+ uchar taac;
-+ uchar rsvd1:2,
-+ spec_vers:4,
-+ csd_structure:2;
-+} mmc_csd_t;
-+
-+
-+#endif /* __MMC_PXA_P_H__ */
-diff --git a/include/asm-arm/arch-s3c24x0/regs-sdi.h b/include/asm-arm/arch-s3c24x0/regs-sdi.h
-new file mode 100644
-index 0000000..9b5b9d1
---- /dev/null
-+++ b/include/asm-arm/arch-s3c24x0/regs-sdi.h
-@@ -0,0 +1,110 @@
-+/* linux/include/asm/arch-s3c2410/regs-sdi.h
-+ *
-+ * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk>
-+ * http://www.simtec.co.uk/products/SWLINUX/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * S3C2410 MMC/SDIO register definitions
-+ *
-+ * Changelog:
-+ * 18-Aug-2004 Ben Dooks Created initial file
-+ * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates
-+ * 29-Nov-2004 Ben Dooks Updated Koen's patch
-+*/
-+
-+#ifndef __ASM_ARM_REGS_SDI
-+#define __ASM_ARM_REGS_SDI "regs-sdi.h"
-+
-+#define S3C2440_SDICON_SDRESET (1<<8)
-+#define S3C2440_SDICON_MMCCLOCK (1<<5)
-+#define S3C2410_SDICON_BYTEORDER (1<<4)
-+#define S3C2410_SDICON_SDIOIRQ (1<<3)
-+#define S3C2410_SDICON_RWAITEN (1<<2)
-+#define S3C2410_SDICON_FIFORESET (1<<1)
-+#define S3C2410_SDICON_CLOCKTYPE (1<<0)
-+
-+#define S3C2410_SDICMDCON_ABORT (1<<12)
-+#define S3C2410_SDICMDCON_WITHDATA (1<<11)
-+#define S3C2410_SDICMDCON_LONGRSP (1<<10)
-+#define S3C2410_SDICMDCON_WAITRSP (1<<9)
-+#define S3C2410_SDICMDCON_CMDSTART (1<<8)
-+#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
-+#define S3C2410_SDICMDCON_INDEX (0x3f)
-+
-+#define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
-+#define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
-+#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1<<10)
-+#define S3C2410_SDICMDSTAT_RSPFIN (1<<9)
-+#define S3C2410_SDICMDSTAT_XFERING (1<<8)
-+#define S3C2410_SDICMDSTAT_INDEX (0xff)
-+
-+#define S3C2440_SDIDCON_DS_BYTE (0<<22)
-+#define S3C2440_SDIDCON_DS_HALFWORD (1<<22)
-+#define S3C2440_SDIDCON_DS_WORD (2<<22)
-+#define S3C2410_SDIDCON_IRQPERIOD (1<<21)
-+#define S3C2410_SDIDCON_TXAFTERRESP (1<<20)
-+#define S3C2410_SDIDCON_RXAFTERCMD (1<<19)
-+#define S3C2410_SDIDCON_BUSYAFTERCMD (1<<18)
-+#define S3C2410_SDIDCON_BLOCKMODE (1<<17)
-+#define S3C2410_SDIDCON_WIDEBUS (1<<16)
-+#define S3C2410_SDIDCON_DMAEN (1<<15)
-+#define S3C2410_SDIDCON_STOP (1<<14)
-+#define S3C2440_SDIDCON_DATSTART (1<<14)
-+#define S3C2410_SDIDCON_DATMODE (3<<12)
-+#define S3C2410_SDIDCON_BLKNUM (0x7ff)
-+
-+/* constants for S3C2410_SDIDCON_DATMODE */
-+#define S3C2410_SDIDCON_XFER_READY (0<<12)
-+#define S3C2410_SDIDCON_XFER_CHKSTART (1<<12)
-+#define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
-+#define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
-+
-+#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
-+#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
-+
-+#define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
-+#define S3C2410_SDIDSTA_SDIOIRQDETECT (1<<9)
-+#define S3C2410_SDIDSTA_FIFOFAIL (1<<8) /* reserved on 2440 */
-+#define S3C2410_SDIDSTA_CRCFAIL (1<<7)
-+#define S3C2410_SDIDSTA_RXCRCFAIL (1<<6)
-+#define S3C2410_SDIDSTA_DATATIMEOUT (1<<5)
-+#define S3C2410_SDIDSTA_XFERFINISH (1<<4)
-+#define S3C2410_SDIDSTA_BUSYFINISH (1<<3)
-+#define S3C2410_SDIDSTA_SBITERR (1<<2) /* reserved on 2410a/2440 */
-+#define S3C2410_SDIDSTA_TXDATAON (1<<1)
-+#define S3C2410_SDIDSTA_RXDATAON (1<<0)
-+
-+#define S3C2440_SDIFSTA_FIFORESET (1<<16)
-+#define S3C2440_SDIFSTA_FIFOFAIL (3<<14) /* 3 is correct (2 bits) */
-+#define S3C2410_SDIFSTA_TFDET (1<<13)
-+#define S3C2410_SDIFSTA_RFDET (1<<12)
-+#define S3C2410_SDIFSTA_TFHALF (1<<11)
-+#define S3C2410_SDIFSTA_TFEMPTY (1<<10)
-+#define S3C2410_SDIFSTA_RFLAST (1<<9)
-+#define S3C2410_SDIFSTA_RFFULL (1<<8)
-+#define S3C2410_SDIFSTA_RFHALF (1<<7)
-+#define S3C2410_SDIFSTA_COUNTMASK (0x7f)
-+
-+#define S3C2410_SDIIMSK_RESPONSECRC (1<<17)
-+#define S3C2410_SDIIMSK_CMDSENT (1<<16)
-+#define S3C2410_SDIIMSK_CMDTIMEOUT (1<<15)
-+#define S3C2410_SDIIMSK_RESPONSEND (1<<14)
-+#define S3C2410_SDIIMSK_READWAIT (1<<13)
-+#define S3C2410_SDIIMSK_SDIOIRQ (1<<12)
-+#define S3C2410_SDIIMSK_FIFOFAIL (1<<11)
-+#define S3C2410_SDIIMSK_CRCSTATUS (1<<10)
-+#define S3C2410_SDIIMSK_DATACRC (1<<9)
-+#define S3C2410_SDIIMSK_DATATIMEOUT (1<<8)
-+#define S3C2410_SDIIMSK_DATAFINISH (1<<7)
-+#define S3C2410_SDIIMSK_BUSYFINISH (1<<6)
-+#define S3C2410_SDIIMSK_SBITERR (1<<5) /* reserved 2440/2410a */
-+#define S3C2410_SDIIMSK_TXFIFOHALF (1<<4)
-+#define S3C2410_SDIIMSK_TXFIFOEMPTY (1<<3)
-+#define S3C2410_SDIIMSK_RXFIFOLAST (1<<2)
-+#define S3C2410_SDIIMSK_RXFIFOFULL (1<<1)
-+#define S3C2410_SDIIMSK_RXFIFOHALF (1<<0)
-+
-+#endif /* __ASM_ARM_REGS_SDI */
-diff --git a/include/asm-arm/mach-types.h b/include/asm-arm/mach-types.h
-index 7d7888e..4e9c6d9 100644
---- a/include/asm-arm/mach-types.h
-+++ b/include/asm-arm/mach-types.h
-@@ -424,7 +424,7 @@ #define MACH_TYPE_MT02 4
- #define MACH_TYPE_MPORT3S 411
- #define MACH_TYPE_RA_ALPHA 412
- #define MACH_TYPE_XCEP 413
--#define MACH_TYPE_ARCOM_MERCURY 414
-+#define MACH_TYPE_ARCOM_VULCAN 414
- #define MACH_TYPE_STARGATE 415
- #define MACH_TYPE_ARMADILLOJ 416
- #define MACH_TYPE_ELROY_JACK 417
-@@ -457,7 +457,7 @@ #define MACH_TYPE_ESL_SARVA 4
- #define MACH_TYPE_XM250 444
- #define MACH_TYPE_T6TC1XB 445
- #define MACH_TYPE_ESS710 446
--#define MACH_TYPE_MX3ADS 447
-+#define MACH_TYPE_MX31ADS 447
- #define MACH_TYPE_HIMALAYA 448
- #define MACH_TYPE_BOLFENK 449
- #define MACH_TYPE_AT91RM9200KR 450
-@@ -736,7 +736,308 @@ #define MACH_TYPE_ADSPORTAL 7
- #define MACH_TYPE_LN2410SBC 725
- #define MACH_TYPE_CB3RUFC 726
- #define MACH_TYPE_MP2USB 727
--#define MACH_TYPE_PDNB3 1002
-+#define MACH_TYPE_NTNP425C 728
-+#define MACH_TYPE_COLIBRI 729
-+#define MACH_TYPE_PCM7220 730
-+#define MACH_TYPE_GATEWAY7001 731
-+#define MACH_TYPE_PCM027 732
-+#define MACH_TYPE_CMPXA 733
-+#define MACH_TYPE_ANUBIS 734
-+#define MACH_TYPE_ITE8152 735
-+#define MACH_TYPE_LPC3XXX 736
-+#define MACH_TYPE_PUPPETEER 737
-+#define MACH_TYPE_MACH_VADATECH 738
-+#define MACH_TYPE_E570 739
-+#define MACH_TYPE_X50 740
-+#define MACH_TYPE_RECON 741
-+#define MACH_TYPE_XBOARDGP8 742
-+#define MACH_TYPE_FPIC2 743
-+#define MACH_TYPE_AKITA 744
-+#define MACH_TYPE_A81 745
-+#define MACH_TYPE_SVM_SC25X 746
-+#define MACH_TYPE_VADATECH020 747
-+#define MACH_TYPE_TLI 748
-+#define MACH_TYPE_EDB9315LC 749
-+#define MACH_TYPE_PASSEC 750
-+#define MACH_TYPE_DS_TIGER 751
-+#define MACH_TYPE_E310 752
-+#define MACH_TYPE_E330 753
-+#define MACH_TYPE_RT3000 754
-+#define MACH_TYPE_NOKIA770 755
-+#define MACH_TYPE_PNX0106 756
-+#define MACH_TYPE_HX21XX 757
-+#define MACH_TYPE_FARADAY 758
-+#define MACH_TYPE_SBC9312 759
-+#define MACH_TYPE_BATMAN 760
-+#define MACH_TYPE_JPD201 761
-+#define MACH_TYPE_MIPSA 762
-+#define MACH_TYPE_KACOM 763
-+#define MACH_TYPE_SWARCOCPU 764
-+#define MACH_TYPE_SWARCODSL 765
-+#define MACH_TYPE_BLUEANGEL 766
-+#define MACH_TYPE_HAIRYGRAMA 767
-+#define MACH_TYPE_BANFF 768
-+#define MACH_TYPE_CARMEVA 769
-+#define MACH_TYPE_SAM255 770
-+#define MACH_TYPE_PPM10 771
-+#define MACH_TYPE_EDB9315A 772
-+#define MACH_TYPE_SUNSET 773
-+#define MACH_TYPE_STARGATE2 774
-+#define MACH_TYPE_INTELMOTE2 775
-+#define MACH_TYPE_TRIZEPS4 776
-+#define MACH_TYPE_MAINSTONE2 777
-+#define MACH_TYPE_EZ_IXP42X 778
-+#define MACH_TYPE_TAPWAVE_ZODIAC 779
-+#define MACH_TYPE_UNIVERSALMETER 780
-+#define MACH_TYPE_HICOARM9 781
-+#define MACH_TYPE_PNX4008 782
-+#define MACH_TYPE_KWS6000 783
-+#define MACH_TYPE_PORTUX920T 784
-+#define MACH_TYPE_EZ_X5 785
-+#define MACH_TYPE_OMAP_RUDOLPH 786
-+#define MACH_TYPE_CPUAT91 787
-+#define MACH_TYPE_REA9200 788
-+#define MACH_TYPE_ACTS_PUNE_SA1110 789
-+#define MACH_TYPE_IXP425 790
-+#define MACH_TYPE_ARGONPLUSODYSSEY 791
-+#define MACH_TYPE_PERCH 792
-+#define MACH_TYPE_EIS05R1 793
-+#define MACH_TYPE_PEPPERPAD 794
-+#define MACH_TYPE_SB3010 795
-+#define MACH_TYPE_RM9200 796
-+#define MACH_TYPE_DMA03 797
-+#define MACH_TYPE_ROAD_S101 798
-+#define MACH_TYPE_IQ_NEXTGEN_A 799
-+#define MACH_TYPE_IQ_NEXTGEN_B 800
-+#define MACH_TYPE_IQ_NEXTGEN_C 801
-+#define MACH_TYPE_IQ_NEXTGEN_D 802
-+#define MACH_TYPE_IQ_NEXTGEN_E 803
-+#define MACH_TYPE_MALLOW_AT91 804
-+#define MACH_TYPE_CYBERTRACKER_I 805
-+#define MACH_TYPE_GESBC931X 806
-+#define MACH_TYPE_CENTIPAD 807
-+#define MACH_TYPE_ARMSOC 808
-+#define MACH_TYPE_SE4200 809
-+#define MACH_TYPE_EMS197A 810
-+#define MACH_TYPE_MICRO9 811
-+#define MACH_TYPE_MICRO9L 812
-+#define MACH_TYPE_UC5471DSP 813
-+#define MACH_TYPE_SJ5471ENG 814
-+#define MACH_TYPE_CMPXA26X 815
-+#define MACH_TYPE_NC 816
-+#define MACH_TYPE_OMAP_PALMTE 817
-+#define MACH_TYPE_AJAX52X 818
-+#define MACH_TYPE_SIRIUSTAR 819
-+#define MACH_TYPE_IODATA_HDLG 820
-+#define MACH_TYPE_AT91RM9200UTL 821
-+#define MACH_TYPE_BIOSAFE 822
-+#define MACH_TYPE_MP1000 823
-+#define MACH_TYPE_PARSY 824
-+#define MACH_TYPE_CCXP 825
-+#define MACH_TYPE_OMAP_GSAMPLE 826
-+#define MACH_TYPE_REALVIEW_EB 827
-+#define MACH_TYPE_SAMOA 828
-+#define MACH_TYPE_T3XSCALE 829
-+#define MACH_TYPE_I878 830
-+#define MACH_TYPE_BORZOI 831
-+#define MACH_TYPE_GECKO 832
-+#define MACH_TYPE_DS101 833
-+#define MACH_TYPE_OMAP_PALMTT2 834
-+#define MACH_TYPE_XSCALE_PALMLD 835
-+#define MACH_TYPE_CC9C 836
-+#define MACH_TYPE_SBC1670 837
-+#define MACH_TYPE_IXDP28X5 838
-+#define MACH_TYPE_OMAP_PALMTT 839
-+#define MACH_TYPE_ML696K 840
-+#define MACH_TYPE_ARCOM_ZEUS 841
-+#define MACH_TYPE_OSIRIS 842
-+#define MACH_TYPE_MAESTRO 843
-+#define MACH_TYPE_TUNGE2 844
-+#define MACH_TYPE_IXBBM 845
-+#define MACH_TYPE_MX27 846
-+#define MACH_TYPE_AX8004 847
-+#define MACH_TYPE_AT91SAM9261EK 848
-+#define MACH_TYPE_LOFT 849
-+#define MACH_TYPE_MAGPIE 850
-+#define MACH_TYPE_MX21 851
-+#define MACH_TYPE_MB87M3400 852
-+#define MACH_TYPE_MGUARD_DELTA 853
-+#define MACH_TYPE_DAVINCI_DVDP 854
-+#define MACH_TYPE_HTCUNIVERSAL 855
-+#define MACH_TYPE_TPAD 856
-+#define MACH_TYPE_ROVERP3 857
-+#define MACH_TYPE_JORNADA928 858
-+#define MACH_TYPE_MV88FXX81 859
-+#define MACH_TYPE_STMP36XX 860
-+#define MACH_TYPE_SXNI79524 861
-+#define MACH_TYPE_AMS_DELTA 862
-+#define MACH_TYPE_URANIUM 863
-+#define MACH_TYPE_UCON 864
-+#define MACH_TYPE_NAS100D 865
-+#define MACH_TYPE_L083_1000 866
-+#define MACH_TYPE_EZX 867
-+#define MACH_TYPE_PNX5220 868
-+#define MACH_TYPE_BUTTE 869
-+#define MACH_TYPE_SRM2 870
-+#define MACH_TYPE_DSBR 871
-+#define MACH_TYPE_CRYSTALBALL 872
-+#define MACH_TYPE_TINYPXA27X 873
-+#define MACH_TYPE_HERBIE 874
-+#define MACH_TYPE_MAGICIAN 875
-+#define MACH_TYPE_CM4002 876
-+#define MACH_TYPE_B4 877
-+#define MACH_TYPE_MAUI 878
-+#define MACH_TYPE_CYBERTRACKER_G 879
-+#define MACH_TYPE_NXDKN 880
-+#define MACH_TYPE_MIO8390 881
-+#define MACH_TYPE_OMI_BOARD 882
-+#define MACH_TYPE_MX21CIV 883
-+#define MACH_TYPE_MAHI_CDAC 884
-+#define MACH_TYPE_XSCALE_PALMTX 885
-+#define MACH_TYPE_S3C2413 887
-+#define MACH_TYPE_SAMSYS_EP0 888
-+#define MACH_TYPE_WG302V1 889
-+#define MACH_TYPE_WG302V2 890
-+#define MACH_TYPE_EB42X 891
-+#define MACH_TYPE_IQ331ES 892
-+#define MACH_TYPE_COSYDSP 893
-+#define MACH_TYPE_UPLAT7D 894
-+#define MACH_TYPE_PTDAVINCI 895
-+#define MACH_TYPE_MBUS 896
-+#define MACH_TYPE_NADIA2VB 897
-+#define MACH_TYPE_R1000 898
-+#define MACH_TYPE_HW90250 899
-+#define MACH_TYPE_OMAP_2430SDP 900
-+#define MACH_TYPE_DAVINCI_EVM 901
-+#define MACH_TYPE_OMAP_TORNADO 902
-+#define MACH_TYPE_OLOCREEK 903
-+#define MACH_TYPE_PALMZ72 904
-+#define MACH_TYPE_NXDB500 905
-+#define MACH_TYPE_APF9328 906
-+#define MACH_TYPE_OMAP_WIPOQ 907
-+#define MACH_TYPE_OMAP_TWIP 908
-+#define MACH_TYPE_XSCALE_PALMTREO650 909
-+#define MACH_TYPE_ACUMEN 910
-+#define MACH_TYPE_XP100 911
-+#define MACH_TYPE_FS2410 912
-+#define MACH_TYPE_PXA270_CERF 913
-+#define MACH_TYPE_SQ2FTLPALM 914
-+#define MACH_TYPE_BSEMSERVER 915
-+#define MACH_TYPE_NETCLIENT 916
-+#define MACH_TYPE_XSCALE_PALMTT5 917
-+#define MACH_TYPE_OMAP_PALMTC 918
-+#define MACH_TYPE_OMAP_APOLLON 919
-+#define MACH_TYPE_ARGONLVEVB 920
-+#define MACH_TYPE_REA_2D 921
-+#define MACH_TYPE_TI3E524 922
-+#define MACH_TYPE_ATEB9200 923
-+#define MACH_TYPE_AUCKLAND 924
-+#define MACH_TYPE_AK3320M 925
-+#define MACH_TYPE_DURAMAX 926
-+#define MACH_TYPE_N35 927
-+#define MACH_TYPE_PRONGHORN 928
-+#define MACH_TYPE_FUNDY 929
-+#define MACH_TYPE_LOGICPD_PXA270 930
-+#define MACH_TYPE_CPU777 931
-+#define MACH_TYPE_SIMICON9201 932
-+#define MACH_TYPE_LEAP2_HPM 933
-+#define MACH_TYPE_CM922TXA10 934
-+#define MACH_TYPE_PXA 935
-+#define MACH_TYPE_SANDGATE2 936
-+#define MACH_TYPE_SANDGATE2G 937
-+#define MACH_TYPE_SANDGATE2P 938
-+#define MACH_TYPE_FRED_JACK 939
-+#define MACH_TYPE_TTG_COLOR1 940
-+#define MACH_TYPE_NXEB500HMI 941
-+#define MACH_TYPE_NETDCU8 942
-+#define MACH_TYPE_ML675050_CPU_BOA 943
-+#define MACH_TYPE_NG_FVX538 944
-+#define MACH_TYPE_NG_FVS338 945
-+#define MACH_TYPE_PNX4103 946
-+#define MACH_TYPE_HESDB 947
-+#define MACH_TYPE_XSILO 948
-+#define MACH_TYPE_ESPRESSO 949
-+#define MACH_TYPE_EMLC 950
-+#define MACH_TYPE_SISTERON 951
-+#define MACH_TYPE_RX1950 952
-+#define MACH_TYPE_TSC_VENUS 953
-+#define MACH_TYPE_DS101J 954
-+#define MACH_TYPE_MXC30030ADS 955
-+#define MACH_TYPE_FUJITSU_WIMAXSOC 956
-+#define MACH_TYPE_DUALPCMODEM 957
-+#define MACH_TYPE_GESBC9312 958
-+#define MACH_TYPE_HTCAPACHE 959
-+#define MACH_TYPE_IXDP435 960
-+#define MACH_TYPE_CATPROVT100 961
-+#define MACH_TYPE_PICOTUX1XX 962
-+#define MACH_TYPE_PICOTUX2XX 963
-+#define MACH_TYPE_DSMG600 964
-+#define MACH_TYPE_EMPC2 965
-+#define MACH_TYPE_VENTURA 966
-+#define MACH_TYPE_PHIDGET_SBC 967
-+#define MACH_TYPE_IJ3K 968
-+#define MACH_TYPE_PISGAH 969
-+#define MACH_TYPE_OMAP_FSAMPLE 970
-+#define MACH_TYPE_SG720 971
-+#define MACH_TYPE_REDFOX 972
-+#define MACH_TYPE_MYSH_EP9315_1 973
-+#define MACH_TYPE_TPF106 974
-+#define MACH_TYPE_AT91RM9200KG 975
-+#define MACH_TYPE_SLEDB 976
-+#define MACH_TYPE_ONTRACK 977
-+#define MACH_TYPE_PM1200 978
-+#define MACH_TYPE_ESS24XXX 979
-+#define MACH_TYPE_COREMP7 980
-+#define MACH_TYPE_NEXCODER_6446 981
-+#define MACH_TYPE_STVC8380 982
-+#define MACH_TYPE_TEKLYNX 983
-+#define MACH_TYPE_CARBONADO 984
-+#define MACH_TYPE_SYSMOS_MP730 985
-+#define MACH_TYPE_SNAPPER_CL15 986
-+#define MACH_TYPE_PGIGIM 987
-+#define MACH_TYPE_PTX9160P2 988
-+#define MACH_TYPE_DCORE1 989
-+#define MACH_TYPE_VICTORPXA 990
-+#define MACH_TYPE_MX2DTB 991
-+#define MACH_TYPE_PXA_IREX_ER0100 992
-+#define MACH_TYPE_OMAP_PALMZ71 993
-+#define MACH_TYPE_BARTEC_DEG 994
-+#define MACH_TYPE_HW50251 995
-+#define MACH_TYPE_IBOX 996
-+#define MACH_TYPE_ATLASLH7A404 997
-+#define MACH_TYPE_PT2026 998
-+#define MACH_TYPE_HTCALPINE 999
-+#define MACH_TYPE_BARTEC_VTU 1000
-+#define MACH_TYPE_VCOREII 1001
-+#define MACH_TYPE_PDNB3 1002
-+#define MACH_TYPE_HTCBEETLES 1003
-+#define MACH_TYPE_S3C6400 1004
-+#define MACH_TYPE_S3C2443 1005
-+#define MACH_TYPE_OMAP_LDK 1006
-+#define MACH_TYPE_SMDK2460 1007
-+#define MACH_TYPE_SMDK2440 1008
-+#define MACH_TYPE_SMDK2412 1009
-+#define MACH_TYPE_WEBBOX 1010
-+#define MACH_TYPE_CWWNDP 1011
-+#define MACH_TYPE_DRAGON 1012
-+#define MACH_TYPE_OPENDO_CPU_BOARD 1013
-+#define MACH_TYPE_CCM2200 1014
-+#define MACH_TYPE_ETWARM 1015
-+#define MACH_TYPE_M93030 1016
-+#define MACH_TYPE_CC7U 1017
-+#define MACH_TYPE_MTT_RANGER 1018
-+#define MACH_TYPE_NEXUS 1019
-+#define MACH_TYPE_DESMAN 1020
-+#define MACH_TYPE_BKDE303 1021
-+#define MACH_TYPE_SMDK2413 1022
-+#define MACH_TYPE_AML_M7200 1023
-+#define MACH_TYPE_AML_M5900 1024
-+#define MACH_TYPE_SG640 1025
-+#define MACH_TYPE_EDG79524 1026
-+#define MACH_TYPE_AI2410 1027
-+#define MACH_TYPE_IXP465 1028
-+#define MACH_TYPE_BALLOON3 1029
-+#define MACH_TYPE_QT2410 1108
-
- #ifdef CONFIG_ARCH_EBSA110
- # ifdef machine_arch_type
-@@ -3541,9 +3842,9 @@ # define machine_arch_type __machine_ar
- # else
- # define machine_arch_type MACH_TYPE_RAMSES
- # endif
--# define machine_is_ramses() (machine_arch_type == MACH_TYPE_RAMSES)
-+# define machine_is_mnci() (machine_arch_type == MACH_TYPE_RAMSES)
- #else
--# define machine_is_ramses() (0)
-+# define machine_is_mnci() (0)
- #endif
-
- #ifdef CONFIG_ARCH_S28X
-@@ -4501,9 +4802,9 @@ # define machine_arch_type __machine_ar
- # else
- # define machine_arch_type MACH_TYPE_M825XX
- # endif
--# define machine_is_m825xx() (machine_arch_type == MACH_TYPE_M825XX)
-+# define machine_is_comcerto() (machine_arch_type == MACH_TYPE_M825XX)
- #else
--# define machine_is_m825xx() (0)
-+# define machine_is_comcerto() (0)
- #endif
-
- #ifdef CONFIG_SA1100_M7100
-@@ -5658,16 +5959,16 @@ #else
- # define machine_is_xcep() (0)
- #endif
-
--#ifdef CONFIG_MACH_ARCOM_MERCURY
-+#ifdef CONFIG_MACH_ARCOM_VULCAN
- # ifdef machine_arch_type
- # undef machine_arch_type
- # define machine_arch_type __machine_arch_type
- # else
--# define machine_arch_type MACH_TYPE_ARCOM_MERCURY
-+# define machine_arch_type MACH_TYPE_ARCOM_VULCAN
- # endif
--# define machine_is_arcom_mercury() (machine_arch_type == MACH_TYPE_ARCOM_MERCURY)
-+# define machine_is_arcom_vulcan() (machine_arch_type == MACH_TYPE_ARCOM_VULCAN)
- #else
--# define machine_is_arcom_mercury() (0)
-+# define machine_is_arcom_vulcan() (0)
- #endif
-
- #ifdef CONFIG_MACH_STARGATE
-@@ -6054,16 +6355,16 @@ #else
- # define machine_is_ess710() (0)
- #endif
-
--#ifdef CONFIG_MACH_MX3ADS
-+#ifdef CONFIG_MACH_MX31ADS
- # ifdef machine_arch_type
- # undef machine_arch_type
- # define machine_arch_type __machine_arch_type
- # else
--# define machine_arch_type MACH_TYPE_MX3ADS
-+# define machine_arch_type MACH_TYPE_MX31ADS
- # endif
--# define machine_is_mx3ads() (machine_arch_type == MACH_TYPE_MX3ADS)
-+# define machine_is_mx31ads() (machine_arch_type == MACH_TYPE_MX31ADS)
- #else
--# define machine_is_mx3ads() (0)
-+# define machine_is_mx31ads() (0)
- #endif
-
- #ifdef CONFIG_MACH_HIMALAYA
-@@ -7333,9 +7634,9 @@ # define machine_arch_type __machine_ar
- # else
- # define machine_arch_type MACH_TYPE_ARGONPLUSEVB
- # endif
--# define machine_is_argonplusevb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
-+# define machine_is_i30030evb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
- #else
--# define machine_is_argonplusevb() (0)
-+# define machine_is_i30030evb() (0)
- #endif
-
- #ifdef CONFIG_MACH_SCMA11EVB
-@@ -7345,9 +7646,9 @@ # define machine_arch_type __machine_ar
- # else
- # define machine_arch_type MACH_TYPE_SCMA11EVB
- # endif
--# define machine_is_scma11evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
-+# define machine_is_mxc27530evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
- #else
--# define machine_is_scma11evb() (0)
-+# define machine_is_mxc27530evb() (0)
- #endif
-
- #ifdef CONFIG_MACH_SMDK2800
-@@ -8305,9 +8606,9 @@ # define machine_arch_type __machine_ar
- # else
- # define machine_arch_type MACH_TYPE_SCMA11BB
- # endif
--# define machine_is_scma11bb() (machine_arch_type == MACH_TYPE_SCMA11BB)
-+# define machine_is_mxc27530ads() (machine_arch_type == MACH_TYPE_SCMA11BB)
- #else
--# define machine_is_scma11bb() (0)
-+# define machine_is_mxc27530ads() (0)
- #endif
-
- #ifdef CONFIG_MACH_TRIZEPS3
-@@ -9193,9 +9494,9 @@ # define machine_arch_type __machine_ar
- # else
- # define machine_arch_type MACH_TYPE_ZEUSEVB
- # endif
--# define machine_is_zeusevb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
-+# define machine_is_mxc91131evb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
- #else
--# define machine_is_zeusevb() (0)
-+# define machine_is_mxc91131evb() (0)
- #endif
-
- #ifdef CONFIG_MACH_P700
-@@ -9402,6 +9703,3630 @@ #else
- # define machine_is_mp2usb() (0)
- #endif
-
-+#ifdef CONFIG_MACH_NTNP425C
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NTNP425C
-+# endif
-+# define machine_is_ntnp425c() (machine_arch_type == MACH_TYPE_NTNP425C)
-+#else
-+# define machine_is_ntnp425c() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_COLIBRI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_COLIBRI
-+# endif
-+# define machine_is_colibri() (machine_arch_type == MACH_TYPE_COLIBRI)
-+#else
-+# define machine_is_colibri() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PCM7220
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PCM7220
-+# endif
-+# define machine_is_pcm7220() (machine_arch_type == MACH_TYPE_PCM7220)
-+#else
-+# define machine_is_pcm7220() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GATEWAY7001
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GATEWAY7001
-+# endif
-+# define machine_is_gateway7001() (machine_arch_type == MACH_TYPE_GATEWAY7001)
-+#else
-+# define machine_is_gateway7001() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PCM027
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PCM027
-+# endif
-+# define machine_is_pcm027() (machine_arch_type == MACH_TYPE_PCM027)
-+#else
-+# define machine_is_pcm027() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CMPXA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CMPXA
-+# endif
-+# define machine_is_cmpxa() (machine_arch_type == MACH_TYPE_CMPXA)
-+#else
-+# define machine_is_cmpxa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ANUBIS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ANUBIS
-+# endif
-+# define machine_is_anubis() (machine_arch_type == MACH_TYPE_ANUBIS)
-+#else
-+# define machine_is_anubis() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ITE8152
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ITE8152
-+# endif
-+# define machine_is_ite8152() (machine_arch_type == MACH_TYPE_ITE8152)
-+#else
-+# define machine_is_ite8152() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LPC3XXX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LPC3XXX
-+# endif
-+# define machine_is_lpc3xxx() (machine_arch_type == MACH_TYPE_LPC3XXX)
-+#else
-+# define machine_is_lpc3xxx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PUPPETEER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PUPPETEER
-+# endif
-+# define machine_is_puppeteer() (machine_arch_type == MACH_TYPE_PUPPETEER)
-+#else
-+# define machine_is_puppeteer() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MACH_VADATECH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MACH_VADATECH
-+# endif
-+# define machine_is_vt001() (machine_arch_type == MACH_TYPE_MACH_VADATECH)
-+#else
-+# define machine_is_vt001() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_E570
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_E570
-+# endif
-+# define machine_is_e570() (machine_arch_type == MACH_TYPE_E570)
-+#else
-+# define machine_is_e570() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_X50
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_X50
-+# endif
-+# define machine_is_x50() (machine_arch_type == MACH_TYPE_X50)
-+#else
-+# define machine_is_x50() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RECON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RECON
-+# endif
-+# define machine_is_recon() (machine_arch_type == MACH_TYPE_RECON)
-+#else
-+# define machine_is_recon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XBOARDGP8
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XBOARDGP8
-+# endif
-+# define machine_is_xboardgp8() (machine_arch_type == MACH_TYPE_XBOARDGP8)
-+#else
-+# define machine_is_xboardgp8() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FPIC2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FPIC2
-+# endif
-+# define machine_is_fpic2() (machine_arch_type == MACH_TYPE_FPIC2)
-+#else
-+# define machine_is_fpic2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AKITA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AKITA
-+# endif
-+# define machine_is_akita() (machine_arch_type == MACH_TYPE_AKITA)
-+#else
-+# define machine_is_akita() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_A81
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_A81
-+# endif
-+# define machine_is_a81() (machine_arch_type == MACH_TYPE_A81)
-+#else
-+# define machine_is_a81() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SVM_SC25X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SVM_SC25X
-+# endif
-+# define machine_is_svm_sc25x() (machine_arch_type == MACH_TYPE_SVM_SC25X)
-+#else
-+# define machine_is_svm_sc25x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VADATECH020
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VADATECH020
-+# endif
-+# define machine_is_vt020() (machine_arch_type == MACH_TYPE_VADATECH020)
-+#else
-+# define machine_is_vt020() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TLI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TLI
-+# endif
-+# define machine_is_tli() (machine_arch_type == MACH_TYPE_TLI)
-+#else
-+# define machine_is_tli() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EDB9315LC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EDB9315LC
-+# endif
-+# define machine_is_edb9315lc() (machine_arch_type == MACH_TYPE_EDB9315LC)
-+#else
-+# define machine_is_edb9315lc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PASSEC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PASSEC
-+# endif
-+# define machine_is_passec() (machine_arch_type == MACH_TYPE_PASSEC)
-+#else
-+# define machine_is_passec() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DS_TIGER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DS_TIGER
-+# endif
-+# define machine_is_ds_tiger() (machine_arch_type == MACH_TYPE_DS_TIGER)
-+#else
-+# define machine_is_ds_tiger() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_E310
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_E310
-+# endif
-+# define machine_is_e310() (machine_arch_type == MACH_TYPE_E310)
-+#else
-+# define machine_is_e310() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_E330
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_E330
-+# endif
-+# define machine_is_e330() (machine_arch_type == MACH_TYPE_E330)
-+#else
-+# define machine_is_e330() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RT3000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RT3000
-+# endif
-+# define machine_is_rt3000() (machine_arch_type == MACH_TYPE_RT3000)
-+#else
-+# define machine_is_rt3000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NOKIA770
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NOKIA770
-+# endif
-+# define machine_is_nokia770() (machine_arch_type == MACH_TYPE_NOKIA770)
-+#else
-+# define machine_is_nokia770() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX0106
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX0106
-+# endif
-+# define machine_is_pnx0106() (machine_arch_type == MACH_TYPE_PNX0106)
-+#else
-+# define machine_is_pnx0106() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HX21XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HX21XX
-+# endif
-+# define machine_is_hx21xx() (machine_arch_type == MACH_TYPE_HX21XX)
-+#else
-+# define machine_is_hx21xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FARADAY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FARADAY
-+# endif
-+# define machine_is_faraday() (machine_arch_type == MACH_TYPE_FARADAY)
-+#else
-+# define machine_is_faraday() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SBC9312
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SBC9312
-+# endif
-+# define machine_is_sbc9312() (machine_arch_type == MACH_TYPE_SBC9312)
-+#else
-+# define machine_is_sbc9312() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BATMAN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BATMAN
-+# endif
-+# define machine_is_batman() (machine_arch_type == MACH_TYPE_BATMAN)
-+#else
-+# define machine_is_batman() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_JPD201
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_JPD201
-+# endif
-+# define machine_is_jpd201() (machine_arch_type == MACH_TYPE_JPD201)
-+#else
-+# define machine_is_jpd201() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MIPSA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MIPSA
-+# endif
-+# define machine_is_mipsa() (machine_arch_type == MACH_TYPE_MIPSA)
-+#else
-+# define machine_is_mipsa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_KACOM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_KACOM
-+# endif
-+# define machine_is_kacom() (machine_arch_type == MACH_TYPE_KACOM)
-+#else
-+# define machine_is_kacom() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SWARCOCPU
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SWARCOCPU
-+# endif
-+# define machine_is_swarcocpu() (machine_arch_type == MACH_TYPE_SWARCOCPU)
-+#else
-+# define machine_is_swarcocpu() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SWARCODSL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SWARCODSL
-+# endif
-+# define machine_is_swarcodsl() (machine_arch_type == MACH_TYPE_SWARCODSL)
-+#else
-+# define machine_is_swarcodsl() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BLUEANGEL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BLUEANGEL
-+# endif
-+# define machine_is_blueangel() (machine_arch_type == MACH_TYPE_BLUEANGEL)
-+#else
-+# define machine_is_blueangel() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HAIRYGRAMA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HAIRYGRAMA
-+# endif
-+# define machine_is_hairygrama() (machine_arch_type == MACH_TYPE_HAIRYGRAMA)
-+#else
-+# define machine_is_hairygrama() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BANFF
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BANFF
-+# endif
-+# define machine_is_banff() (machine_arch_type == MACH_TYPE_BANFF)
-+#else
-+# define machine_is_banff() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CARMEVA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CARMEVA
-+# endif
-+# define machine_is_carmeva() (machine_arch_type == MACH_TYPE_CARMEVA)
-+#else
-+# define machine_is_carmeva() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SAM255
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SAM255
-+# endif
-+# define machine_is_sam255() (machine_arch_type == MACH_TYPE_SAM255)
-+#else
-+# define machine_is_sam255() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PPM10
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PPM10
-+# endif
-+# define machine_is_ppm10() (machine_arch_type == MACH_TYPE_PPM10)
-+#else
-+# define machine_is_ppm10() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EDB9315A
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EDB9315A
-+# endif
-+# define machine_is_edb9315a() (machine_arch_type == MACH_TYPE_EDB9315A)
-+#else
-+# define machine_is_edb9315a() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SUNSET
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SUNSET
-+# endif
-+# define machine_is_sunset() (machine_arch_type == MACH_TYPE_SUNSET)
-+#else
-+# define machine_is_sunset() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_STARGATE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_STARGATE2
-+# endif
-+# define machine_is_stargate2() (machine_arch_type == MACH_TYPE_STARGATE2)
-+#else
-+# define machine_is_stargate2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_INTELMOTE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_INTELMOTE2
-+# endif
-+# define machine_is_intelmote2() (machine_arch_type == MACH_TYPE_INTELMOTE2)
-+#else
-+# define machine_is_intelmote2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TRIZEPS4
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TRIZEPS4
-+# endif
-+# define machine_is_trizeps4() (machine_arch_type == MACH_TYPE_TRIZEPS4)
-+#else
-+# define machine_is_trizeps4() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAINSTONE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAINSTONE2
-+# endif
-+# define machine_is_mainstone2() (machine_arch_type == MACH_TYPE_MAINSTONE2)
-+#else
-+# define machine_is_mainstone2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EZ_IXP42X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EZ_IXP42X
-+# endif
-+# define machine_is_ez_ixp42x() (machine_arch_type == MACH_TYPE_EZ_IXP42X)
-+#else
-+# define machine_is_ez_ixp42x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TAPWAVE_ZODIAC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TAPWAVE_ZODIAC
-+# endif
-+# define machine_is_tapwave_zodiac() (machine_arch_type == MACH_TYPE_TAPWAVE_ZODIAC)
-+#else
-+# define machine_is_tapwave_zodiac() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UNIVERSALMETER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UNIVERSALMETER
-+# endif
-+# define machine_is_universalmeter() (machine_arch_type == MACH_TYPE_UNIVERSALMETER)
-+#else
-+# define machine_is_universalmeter() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HICOARM9
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HICOARM9
-+# endif
-+# define machine_is_hicoarm9() (machine_arch_type == MACH_TYPE_HICOARM9)
-+#else
-+# define machine_is_hicoarm9() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX4008
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX4008
-+# endif
-+# define machine_is_pnx4008() (machine_arch_type == MACH_TYPE_PNX4008)
-+#else
-+# define machine_is_pnx4008() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_KWS6000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_KWS6000
-+# endif
-+# define machine_is_kws6000() (machine_arch_type == MACH_TYPE_KWS6000)
-+#else
-+# define machine_is_kws6000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PORTUX920T
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PORTUX920T
-+# endif
-+# define machine_is_portux920t() (machine_arch_type == MACH_TYPE_PORTUX920T)
-+#else
-+# define machine_is_portux920t() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EZ_X5
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EZ_X5
-+# endif
-+# define machine_is_ez_x5() (machine_arch_type == MACH_TYPE_EZ_X5)
-+#else
-+# define machine_is_ez_x5() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_RUDOLPH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_RUDOLPH
-+# endif
-+# define machine_is_omap_rudolph() (machine_arch_type == MACH_TYPE_OMAP_RUDOLPH)
-+#else
-+# define machine_is_omap_rudolph() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CPUAT91
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CPUAT91
-+# endif
-+# define machine_is_cpuat91() (machine_arch_type == MACH_TYPE_CPUAT91)
-+#else
-+# define machine_is_cpuat91() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REA9200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REA9200
-+# endif
-+# define machine_is_rea9200() (machine_arch_type == MACH_TYPE_REA9200)
-+#else
-+# define machine_is_rea9200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ACTS_PUNE_SA1110
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ACTS_PUNE_SA1110
-+# endif
-+# define machine_is_acts_pune_sa1110() (machine_arch_type == MACH_TYPE_ACTS_PUNE_SA1110)
-+#else
-+# define machine_is_acts_pune_sa1110() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXP425
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXP425
-+# endif
-+# define machine_is_ixp425() (machine_arch_type == MACH_TYPE_IXP425)
-+#else
-+# define machine_is_ixp425() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARGONPLUSODYSSEY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARGONPLUSODYSSEY
-+# endif
-+# define machine_is_i30030ads() (machine_arch_type == MACH_TYPE_ARGONPLUSODYSSEY)
-+#else
-+# define machine_is_i30030ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PERCH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PERCH
-+# endif
-+# define machine_is_perch() (machine_arch_type == MACH_TYPE_PERCH)
-+#else
-+# define machine_is_perch() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EIS05R1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EIS05R1
-+# endif
-+# define machine_is_eis05r1() (machine_arch_type == MACH_TYPE_EIS05R1)
-+#else
-+# define machine_is_eis05r1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PEPPERPAD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PEPPERPAD
-+# endif
-+# define machine_is_pepperpad() (machine_arch_type == MACH_TYPE_PEPPERPAD)
-+#else
-+# define machine_is_pepperpad() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SB3010
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SB3010
-+# endif
-+# define machine_is_sb3010() (machine_arch_type == MACH_TYPE_SB3010)
-+#else
-+# define machine_is_sb3010() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RM9200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RM9200
-+# endif
-+# define machine_is_rm9200() (machine_arch_type == MACH_TYPE_RM9200)
-+#else
-+# define machine_is_rm9200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DMA03
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DMA03
-+# endif
-+# define machine_is_dma03() (machine_arch_type == MACH_TYPE_DMA03)
-+#else
-+# define machine_is_dma03() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ROAD_S101
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ROAD_S101
-+# endif
-+# define machine_is_road_s101() (machine_arch_type == MACH_TYPE_ROAD_S101)
-+#else
-+# define machine_is_road_s101() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_A
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_A
-+# endif
-+# define machine_is_iq_nextgen_a() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_A)
-+#else
-+# define machine_is_iq_nextgen_a() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_B
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_B
-+# endif
-+# define machine_is_iq_nextgen_b() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_B)
-+#else
-+# define machine_is_iq_nextgen_b() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_C
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_C
-+# endif
-+# define machine_is_iq_nextgen_c() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_C)
-+#else
-+# define machine_is_iq_nextgen_c() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_D
-+# endif
-+# define machine_is_iq_nextgen_d() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_D)
-+#else
-+# define machine_is_iq_nextgen_d() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_E
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_E
-+# endif
-+# define machine_is_iq_nextgen_e() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_E)
-+#else
-+# define machine_is_iq_nextgen_e() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MALLOW_AT91
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MALLOW_AT91
-+# endif
-+# define machine_is_mallow_at91() (machine_arch_type == MACH_TYPE_MALLOW_AT91)
-+#else
-+# define machine_is_mallow_at91() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CYBERTRACKER_I
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CYBERTRACKER_I
-+# endif
-+# define machine_is_cybertracker_i() (machine_arch_type == MACH_TYPE_CYBERTRACKER_I)
-+#else
-+# define machine_is_cybertracker_i() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GESBC931X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GESBC931X
-+# endif
-+# define machine_is_gesbc931x() (machine_arch_type == MACH_TYPE_GESBC931X)
-+#else
-+# define machine_is_gesbc931x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CENTIPAD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CENTIPAD
-+# endif
-+# define machine_is_centipad() (machine_arch_type == MACH_TYPE_CENTIPAD)
-+#else
-+# define machine_is_centipad() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARMSOC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARMSOC
-+# endif
-+# define machine_is_armsoc() (machine_arch_type == MACH_TYPE_ARMSOC)
-+#else
-+# define machine_is_armsoc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SE4200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SE4200
-+# endif
-+# define machine_is_se4200() (machine_arch_type == MACH_TYPE_SE4200)
-+#else
-+# define machine_is_se4200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EMS197A
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EMS197A
-+# endif
-+# define machine_is_ems197a() (machine_arch_type == MACH_TYPE_EMS197A)
-+#else
-+# define machine_is_ems197a() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MICRO9
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MICRO9
-+# endif
-+# define machine_is_micro9() (machine_arch_type == MACH_TYPE_MICRO9)
-+#else
-+# define machine_is_micro9() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MICRO9L
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MICRO9L
-+# endif
-+# define machine_is_micro9l() (machine_arch_type == MACH_TYPE_MICRO9L)
-+#else
-+# define machine_is_micro9l() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UC5471DSP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UC5471DSP
-+# endif
-+# define machine_is_uc5471dsp() (machine_arch_type == MACH_TYPE_UC5471DSP)
-+#else
-+# define machine_is_uc5471dsp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SJ5471ENG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SJ5471ENG
-+# endif
-+# define machine_is_sj5471eng() (machine_arch_type == MACH_TYPE_SJ5471ENG)
-+#else
-+# define machine_is_sj5471eng() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CMPXA26X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CMPXA26X
-+# endif
-+# define machine_is_none() (machine_arch_type == MACH_TYPE_CMPXA26X)
-+#else
-+# define machine_is_none() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NC
-+# endif
-+# define machine_is_nc1() (machine_arch_type == MACH_TYPE_NC)
-+#else
-+# define machine_is_nc1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTE
-+# endif
-+# define machine_is_omap_palmte() (machine_arch_type == MACH_TYPE_OMAP_PALMTE)
-+#else
-+# define machine_is_omap_palmte() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AJAX52X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AJAX52X
-+# endif
-+# define machine_is_ajax52x() (machine_arch_type == MACH_TYPE_AJAX52X)
-+#else
-+# define machine_is_ajax52x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SIRIUSTAR
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SIRIUSTAR
-+# endif
-+# define machine_is_siriustar() (machine_arch_type == MACH_TYPE_SIRIUSTAR)
-+#else
-+# define machine_is_siriustar() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IODATA_HDLG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IODATA_HDLG
-+# endif
-+# define machine_is_iodata_hdlg() (machine_arch_type == MACH_TYPE_IODATA_HDLG)
-+#else
-+# define machine_is_iodata_hdlg() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AT91RM9200UTL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AT91RM9200UTL
-+# endif
-+# define machine_is_at91rm9200utl() (machine_arch_type == MACH_TYPE_AT91RM9200UTL)
-+#else
-+# define machine_is_at91rm9200utl() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BIOSAFE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BIOSAFE
-+# endif
-+# define machine_is_biosafe() (machine_arch_type == MACH_TYPE_BIOSAFE)
-+#else
-+# define machine_is_biosafe() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MP1000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MP1000
-+# endif
-+# define machine_is_mp1000() (machine_arch_type == MACH_TYPE_MP1000)
-+#else
-+# define machine_is_mp1000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PARSY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PARSY
-+# endif
-+# define machine_is_parsy() (machine_arch_type == MACH_TYPE_PARSY)
-+#else
-+# define machine_is_parsy() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CCXP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CCXP
-+# endif
-+# define machine_is_ccxp270() (machine_arch_type == MACH_TYPE_CCXP)
-+#else
-+# define machine_is_ccxp270() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_GSAMPLE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_GSAMPLE
-+# endif
-+# define machine_is_omap_gsample() (machine_arch_type == MACH_TYPE_OMAP_GSAMPLE)
-+#else
-+# define machine_is_omap_gsample() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REALVIEW_EB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REALVIEW_EB
-+# endif
-+# define machine_is_realview_eb() (machine_arch_type == MACH_TYPE_REALVIEW_EB)
-+#else
-+# define machine_is_realview_eb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SAMOA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SAMOA
-+# endif
-+# define machine_is_samoa() (machine_arch_type == MACH_TYPE_SAMOA)
-+#else
-+# define machine_is_samoa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_T3XSCALE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_T3XSCALE
-+# endif
-+# define machine_is_t3xscale() (machine_arch_type == MACH_TYPE_T3XSCALE)
-+#else
-+# define machine_is_t3xscale() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_I878
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_I878
-+# endif
-+# define machine_is_i878() (machine_arch_type == MACH_TYPE_I878)
-+#else
-+# define machine_is_i878() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BORZOI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BORZOI
-+# endif
-+# define machine_is_borzoi() (machine_arch_type == MACH_TYPE_BORZOI)
-+#else
-+# define machine_is_borzoi() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GECKO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GECKO
-+# endif
-+# define machine_is_gecko() (machine_arch_type == MACH_TYPE_GECKO)
-+#else
-+# define machine_is_gecko() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DS101
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DS101
-+# endif
-+# define machine_is_ds101() (machine_arch_type == MACH_TYPE_DS101)
-+#else
-+# define machine_is_ds101() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTT2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTT2
-+# endif
-+# define machine_is_omap_palmtt2() (machine_arch_type == MACH_TYPE_OMAP_PALMTT2)
-+#else
-+# define machine_is_omap_palmtt2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMLD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMLD
-+# endif
-+# define machine_is_xscale_palmld() (machine_arch_type == MACH_TYPE_XSCALE_PALMLD)
-+#else
-+# define machine_is_xscale_palmld() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CC9C
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CC9C
-+# endif
-+# define machine_is_cc9c() (machine_arch_type == MACH_TYPE_CC9C)
-+#else
-+# define machine_is_cc9c() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SBC1670
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SBC1670
-+# endif
-+# define machine_is_sbc1670() (machine_arch_type == MACH_TYPE_SBC1670)
-+#else
-+# define machine_is_sbc1670() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXDP28X5
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXDP28X5
-+# endif
-+# define machine_is_ixdp28x5() (machine_arch_type == MACH_TYPE_IXDP28X5)
-+#else
-+# define machine_is_ixdp28x5() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTT
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTT
-+# endif
-+# define machine_is_omap_palmtt() (machine_arch_type == MACH_TYPE_OMAP_PALMTT)
-+#else
-+# define machine_is_omap_palmtt() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ML696K
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ML696K
-+# endif
-+# define machine_is_ml696k() (machine_arch_type == MACH_TYPE_ML696K)
-+#else
-+# define machine_is_ml696k() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARCOM_ZEUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARCOM_ZEUS
-+# endif
-+# define machine_is_arcom_zeus() (machine_arch_type == MACH_TYPE_ARCOM_ZEUS)
-+#else
-+# define machine_is_arcom_zeus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OSIRIS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OSIRIS
-+# endif
-+# define machine_is_osiris() (machine_arch_type == MACH_TYPE_OSIRIS)
-+#else
-+# define machine_is_osiris() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAESTRO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAESTRO
-+# endif
-+# define machine_is_maestro() (machine_arch_type == MACH_TYPE_MAESTRO)
-+#else
-+# define machine_is_maestro() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TUNGE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TUNGE2
-+# endif
-+# define machine_is_tunge2() (machine_arch_type == MACH_TYPE_TUNGE2)
-+#else
-+# define machine_is_tunge2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXBBM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXBBM
-+# endif
-+# define machine_is_ixbbm() (machine_arch_type == MACH_TYPE_IXBBM)
-+#else
-+# define machine_is_ixbbm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX27
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX27
-+# endif
-+# define machine_is_mx27ads() (machine_arch_type == MACH_TYPE_MX27)
-+#else
-+# define machine_is_mx27ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AX8004
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AX8004
-+# endif
-+# define machine_is_ax8004() (machine_arch_type == MACH_TYPE_AX8004)
-+#else
-+# define machine_is_ax8004() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AT91SAM9261EK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AT91SAM9261EK
-+# endif
-+# define machine_is_at91sam9261ek() (machine_arch_type == MACH_TYPE_AT91SAM9261EK)
-+#else
-+# define machine_is_at91sam9261ek() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LOFT
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LOFT
-+# endif
-+# define machine_is_loft() (machine_arch_type == MACH_TYPE_LOFT)
-+#else
-+# define machine_is_loft() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAGPIE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAGPIE
-+# endif
-+# define machine_is_magpie() (machine_arch_type == MACH_TYPE_MAGPIE)
-+#else
-+# define machine_is_magpie() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX21
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX21
-+# endif
-+# define machine_is_mx21ads() (machine_arch_type == MACH_TYPE_MX21)
-+#else
-+# define machine_is_mx21ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MB87M3400
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MB87M3400
-+# endif
-+# define machine_is_mb87m3400() (machine_arch_type == MACH_TYPE_MB87M3400)
-+#else
-+# define machine_is_mb87m3400() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MGUARD_DELTA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MGUARD_DELTA
-+# endif
-+# define machine_is_mguard_delta() (machine_arch_type == MACH_TYPE_MGUARD_DELTA)
-+#else
-+# define machine_is_mguard_delta() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DAVINCI_DVDP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DAVINCI_DVDP
-+# endif
-+# define machine_is_davinci_dvdp() (machine_arch_type == MACH_TYPE_DAVINCI_DVDP)
-+#else
-+# define machine_is_davinci_dvdp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCUNIVERSAL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCUNIVERSAL
-+# endif
-+# define machine_is_htcuniversal() (machine_arch_type == MACH_TYPE_HTCUNIVERSAL)
-+#else
-+# define machine_is_htcuniversal() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TPAD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TPAD
-+# endif
-+# define machine_is_tpad() (machine_arch_type == MACH_TYPE_TPAD)
-+#else
-+# define machine_is_tpad() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ROVERP3
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ROVERP3
-+# endif
-+# define machine_is_roverp3() (machine_arch_type == MACH_TYPE_ROVERP3)
-+#else
-+# define machine_is_roverp3() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_JORNADA928
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_JORNADA928
-+# endif
-+# define machine_is_jornada928() (machine_arch_type == MACH_TYPE_JORNADA928)
-+#else
-+# define machine_is_jornada928() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MV88FXX81
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MV88FXX81
-+# endif
-+# define machine_is_mv88fxx81() (machine_arch_type == MACH_TYPE_MV88FXX81)
-+#else
-+# define machine_is_mv88fxx81() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_STMP36XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_STMP36XX
-+# endif
-+# define machine_is_stmp36xx() (machine_arch_type == MACH_TYPE_STMP36XX)
-+#else
-+# define machine_is_stmp36xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SXNI79524
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SXNI79524
-+# endif
-+# define machine_is_sxni79524() (machine_arch_type == MACH_TYPE_SXNI79524)
-+#else
-+# define machine_is_sxni79524() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AMS_DELTA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AMS_DELTA
-+# endif
-+# define machine_is_ams_delta() (machine_arch_type == MACH_TYPE_AMS_DELTA)
-+#else
-+# define machine_is_ams_delta() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_URANIUM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_URANIUM
-+# endif
-+# define machine_is_uranium() (machine_arch_type == MACH_TYPE_URANIUM)
-+#else
-+# define machine_is_uranium() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UCON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UCON
-+# endif
-+# define machine_is_ucon() (machine_arch_type == MACH_TYPE_UCON)
-+#else
-+# define machine_is_ucon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NAS100D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NAS100D
-+# endif
-+# define machine_is_nas100d() (machine_arch_type == MACH_TYPE_NAS100D)
-+#else
-+# define machine_is_nas100d() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_L083_1000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_L083_1000
-+# endif
-+# define machine_is_l083() (machine_arch_type == MACH_TYPE_L083_1000)
-+#else
-+# define machine_is_l083() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EZX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EZX
-+# endif
-+# define machine_is_ezx() (machine_arch_type == MACH_TYPE_EZX)
-+#else
-+# define machine_is_ezx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX5220
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX5220
-+# endif
-+# define machine_is_pnx5220() (machine_arch_type == MACH_TYPE_PNX5220)
-+#else
-+# define machine_is_pnx5220() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BUTTE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BUTTE
-+# endif
-+# define machine_is_butte() (machine_arch_type == MACH_TYPE_BUTTE)
-+#else
-+# define machine_is_butte() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SRM2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SRM2
-+# endif
-+# define machine_is_srm2() (machine_arch_type == MACH_TYPE_SRM2)
-+#else
-+# define machine_is_srm2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DSBR
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DSBR
-+# endif
-+# define machine_is_dsbr() (machine_arch_type == MACH_TYPE_DSBR)
-+#else
-+# define machine_is_dsbr() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CRYSTALBALL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CRYSTALBALL
-+# endif
-+# define machine_is_crystalball() (machine_arch_type == MACH_TYPE_CRYSTALBALL)
-+#else
-+# define machine_is_crystalball() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TINYPXA27X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TINYPXA27X
-+# endif
-+# define machine_is_tinypxa27x() (machine_arch_type == MACH_TYPE_TINYPXA27X)
-+#else
-+# define machine_is_tinypxa27x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HERBIE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HERBIE
-+# endif
-+# define machine_is_herbie() (machine_arch_type == MACH_TYPE_HERBIE)
-+#else
-+# define machine_is_herbie() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAGICIAN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAGICIAN
-+# endif
-+# define machine_is_magician() (machine_arch_type == MACH_TYPE_MAGICIAN)
-+#else
-+# define machine_is_magician() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CM4002
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CM4002
-+# endif
-+# define machine_is_cm4002() (machine_arch_type == MACH_TYPE_CM4002)
-+#else
-+# define machine_is_cm4002() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_B4
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_B4
-+# endif
-+# define machine_is_b4() (machine_arch_type == MACH_TYPE_B4)
-+#else
-+# define machine_is_b4() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAUI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAUI
-+# endif
-+# define machine_is_maui() (machine_arch_type == MACH_TYPE_MAUI)
-+#else
-+# define machine_is_maui() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CYBERTRACKER_G
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CYBERTRACKER_G
-+# endif
-+# define machine_is_cybertracker_g() (machine_arch_type == MACH_TYPE_CYBERTRACKER_G)
-+#else
-+# define machine_is_cybertracker_g() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NXDKN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NXDKN
-+# endif
-+# define machine_is_nxdkn() (machine_arch_type == MACH_TYPE_NXDKN)
-+#else
-+# define machine_is_nxdkn() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MIO8390
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MIO8390
-+# endif
-+# define machine_is_mio8390() (machine_arch_type == MACH_TYPE_MIO8390)
-+#else
-+# define machine_is_mio8390() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMI_BOARD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMI_BOARD
-+# endif
-+# define machine_is_omi_board() (machine_arch_type == MACH_TYPE_OMI_BOARD)
-+#else
-+# define machine_is_omi_board() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX21CIV
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX21CIV
-+# endif
-+# define machine_is_mx21civ() (machine_arch_type == MACH_TYPE_MX21CIV)
-+#else
-+# define machine_is_mx21civ() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAHI_CDAC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAHI_CDAC
-+# endif
-+# define machine_is_mahi_cdac() (machine_arch_type == MACH_TYPE_MAHI_CDAC)
-+#else
-+# define machine_is_mahi_cdac() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMTX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMTX
-+# endif
-+# define machine_is_xscale_palmtx() (machine_arch_type == MACH_TYPE_XSCALE_PALMTX)
-+#else
-+# define machine_is_xscale_palmtx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_S3C2413
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_S3C2413
-+# endif
-+# define machine_is_s3c2413() (machine_arch_type == MACH_TYPE_S3C2413)
-+#else
-+# define machine_is_s3c2413() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SAMSYS_EP0
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SAMSYS_EP0
-+# endif
-+# define machine_is_samsys_ep0() (machine_arch_type == MACH_TYPE_SAMSYS_EP0)
-+#else
-+# define machine_is_samsys_ep0() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_WG302V1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_WG302V1
-+# endif
-+# define machine_is_wg302v1() (machine_arch_type == MACH_TYPE_WG302V1)
-+#else
-+# define machine_is_wg302v1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_WG302V2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_WG302V2
-+# endif
-+# define machine_is_wg302v2() (machine_arch_type == MACH_TYPE_WG302V2)
-+#else
-+# define machine_is_wg302v2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EB42X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EB42X
-+# endif
-+# define machine_is_eb42x() (machine_arch_type == MACH_TYPE_EB42X)
-+#else
-+# define machine_is_eb42x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ331ES
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ331ES
-+# endif
-+# define machine_is_iq331es() (machine_arch_type == MACH_TYPE_IQ331ES)
-+#else
-+# define machine_is_iq331es() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_COSYDSP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_COSYDSP
-+# endif
-+# define machine_is_cosydsp() (machine_arch_type == MACH_TYPE_COSYDSP)
-+#else
-+# define machine_is_cosydsp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UPLAT7D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UPLAT7D
-+# endif
-+# define machine_is_uplat7d_proto() (machine_arch_type == MACH_TYPE_UPLAT7D)
-+#else
-+# define machine_is_uplat7d_proto() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PTDAVINCI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PTDAVINCI
-+# endif
-+# define machine_is_ptdavinci() (machine_arch_type == MACH_TYPE_PTDAVINCI)
-+#else
-+# define machine_is_ptdavinci() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MBUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MBUS
-+# endif
-+# define machine_is_mbus() (machine_arch_type == MACH_TYPE_MBUS)
-+#else
-+# define machine_is_mbus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NADIA2VB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NADIA2VB
-+# endif
-+# define machine_is_nadia2vb() (machine_arch_type == MACH_TYPE_NADIA2VB)
-+#else
-+# define machine_is_nadia2vb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_R1000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_R1000
-+# endif
-+# define machine_is_r1000() (machine_arch_type == MACH_TYPE_R1000)
-+#else
-+# define machine_is_r1000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HW90250
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HW90250
-+# endif
-+# define machine_is_hw90250() (machine_arch_type == MACH_TYPE_HW90250)
-+#else
-+# define machine_is_hw90250() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_2430SDP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_2430SDP
-+# endif
-+# define machine_is_omap_2430sdp() (machine_arch_type == MACH_TYPE_OMAP_2430SDP)
-+#else
-+# define machine_is_omap_2430sdp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DAVINCI_EVM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DAVINCI_EVM
-+# endif
-+# define machine_is_davinci_evm() (machine_arch_type == MACH_TYPE_DAVINCI_EVM)
-+#else
-+# define machine_is_davinci_evm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_TORNADO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_TORNADO
-+# endif
-+# define machine_is_omap_tornado() (machine_arch_type == MACH_TYPE_OMAP_TORNADO)
-+#else
-+# define machine_is_omap_tornado() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OLOCREEK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OLOCREEK
-+# endif
-+# define machine_is_olocreek() (machine_arch_type == MACH_TYPE_OLOCREEK)
-+#else
-+# define machine_is_olocreek() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PALMZ72
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PALMZ72
-+# endif
-+# define machine_is_palmz72() (machine_arch_type == MACH_TYPE_PALMZ72)
-+#else
-+# define machine_is_palmz72() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NXDB500
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NXDB500
-+# endif
-+# define machine_is_nxdb500() (machine_arch_type == MACH_TYPE_NXDB500)
-+#else
-+# define machine_is_nxdb500() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_APF9328
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_APF9328
-+# endif
-+# define machine_is_apf9328() (machine_arch_type == MACH_TYPE_APF9328)
-+#else
-+# define machine_is_apf9328() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_WIPOQ
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_WIPOQ
-+# endif
-+# define machine_is_omap_wipoq() (machine_arch_type == MACH_TYPE_OMAP_WIPOQ)
-+#else
-+# define machine_is_omap_wipoq() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_TWIP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_TWIP
-+# endif
-+# define machine_is_omap_twip() (machine_arch_type == MACH_TYPE_OMAP_TWIP)
-+#else
-+# define machine_is_omap_twip() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMTREO650
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMTREO650
-+# endif
-+# define machine_is_xscale_treo650() (machine_arch_type == MACH_TYPE_XSCALE_PALMTREO650)
-+#else
-+# define machine_is_xscale_treo650() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ACUMEN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ACUMEN
-+# endif
-+# define machine_is_acumen() (machine_arch_type == MACH_TYPE_ACUMEN)
-+#else
-+# define machine_is_acumen() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XP100
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XP100
-+# endif
-+# define machine_is_xp100() (machine_arch_type == MACH_TYPE_XP100)
-+#else
-+# define machine_is_xp100() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FS2410
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FS2410
-+# endif
-+# define machine_is_fs2410() (machine_arch_type == MACH_TYPE_FS2410)
-+#else
-+# define machine_is_fs2410() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PXA270_CERF
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PXA270_CERF
-+# endif
-+# define machine_is_pxa270_cerf() (machine_arch_type == MACH_TYPE_PXA270_CERF)
-+#else
-+# define machine_is_pxa270_cerf() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SQ2FTLPALM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SQ2FTLPALM
-+# endif
-+# define machine_is_sq2ftlpalm() (machine_arch_type == MACH_TYPE_SQ2FTLPALM)
-+#else
-+# define machine_is_sq2ftlpalm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BSEMSERVER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BSEMSERVER
-+# endif
-+# define machine_is_bsemserver() (machine_arch_type == MACH_TYPE_BSEMSERVER)
-+#else
-+# define machine_is_bsemserver() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NETCLIENT
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NETCLIENT
-+# endif
-+# define machine_is_netclient() (machine_arch_type == MACH_TYPE_NETCLIENT)
-+#else
-+# define machine_is_netclient() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMTT5
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMTT5
-+# endif
-+# define machine_is_xscale_palmtt5() (machine_arch_type == MACH_TYPE_XSCALE_PALMTT5)
-+#else
-+# define machine_is_xscale_palmtt5() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTC
-+# endif
-+# define machine_is_xscale_palmtc() (machine_arch_type == MACH_TYPE_OMAP_PALMTC)
-+#else
-+# define machine_is_xscale_palmtc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_APOLLON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_APOLLON
-+# endif
-+# define machine_is_omap_apollon() (machine_arch_type == MACH_TYPE_OMAP_APOLLON)
-+#else
-+# define machine_is_omap_apollon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARGONLVEVB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARGONLVEVB
-+# endif
-+# define machine_is_mxc30030evb() (machine_arch_type == MACH_TYPE_ARGONLVEVB)
-+#else
-+# define machine_is_mxc30030evb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REA_2D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REA_2D
-+# endif
-+# define machine_is_rea_2d() (machine_arch_type == MACH_TYPE_REA_2D)
-+#else
-+# define machine_is_rea_2d() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TI3E524
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TI3E524
-+# endif
-+# define machine_is_eti3e524() (machine_arch_type == MACH_TYPE_TI3E524)
-+#else
-+# define machine_is_eti3e524() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ATEB9200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ATEB9200
-+# endif
-+# define machine_is_ateb9200() (machine_arch_type == MACH_TYPE_ATEB9200)
-+#else
-+# define machine_is_ateb9200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AUCKLAND
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AUCKLAND
-+# endif
-+# define machine_is_auckland() (machine_arch_type == MACH_TYPE_AUCKLAND)
-+#else
-+# define machine_is_auckland() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AK3320M
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AK3320M
-+# endif
-+# define machine_is_ak3220m() (machine_arch_type == MACH_TYPE_AK3320M)
-+#else
-+# define machine_is_ak3220m() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DURAMAX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DURAMAX
-+# endif
-+# define machine_is_duramax() (machine_arch_type == MACH_TYPE_DURAMAX)
-+#else
-+# define machine_is_duramax() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_N35
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_N35
-+# endif
-+# define machine_is_n35() (machine_arch_type == MACH_TYPE_N35)
-+#else
-+# define machine_is_n35() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PRONGHORN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PRONGHORN
-+# endif
-+# define machine_is_pronghorn() (machine_arch_type == MACH_TYPE_PRONGHORN)
-+#else
-+# define machine_is_pronghorn() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FUNDY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FUNDY
-+# endif
-+# define machine_is_fundy() (machine_arch_type == MACH_TYPE_FUNDY)
-+#else
-+# define machine_is_fundy() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LOGICPD_PXA270
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LOGICPD_PXA270
-+# endif
-+# define machine_is_logicpd_pxa270() (machine_arch_type == MACH_TYPE_LOGICPD_PXA270)
-+#else
-+# define machine_is_logicpd_pxa270() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CPU777
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CPU777
-+# endif
-+# define machine_is_cpu777() (machine_arch_type == MACH_TYPE_CPU777)
-+#else
-+# define machine_is_cpu777() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SIMICON9201
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SIMICON9201
-+# endif
-+# define machine_is_simicon9201() (machine_arch_type == MACH_TYPE_SIMICON9201)
-+#else
-+# define machine_is_simicon9201() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LEAP2_HPM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LEAP2_HPM
-+# endif
-+# define machine_is_leap2_hpm() (machine_arch_type == MACH_TYPE_LEAP2_HPM)
-+#else
-+# define machine_is_leap2_hpm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CM922TXA10
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CM922TXA10
-+# endif
-+# define machine_is_cm922txa10() (machine_arch_type == MACH_TYPE_CM922TXA10)
-+#else
-+# define machine_is_cm922txa10() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PXA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PXA
-+# endif
-+# define machine_is_sandgate() (machine_arch_type == MACH_TYPE_PXA)
-+#else
-+# define machine_is_sandgate() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SANDGATE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SANDGATE2
-+# endif
-+# define machine_is_sandgate2() (machine_arch_type == MACH_TYPE_SANDGATE2)
-+#else
-+# define machine_is_sandgate2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SANDGATE2G
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SANDGATE2G
-+# endif
-+# define machine_is_sandgate2g() (machine_arch_type == MACH_TYPE_SANDGATE2G)
-+#else
-+# define machine_is_sandgate2g() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SANDGATE2P
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SANDGATE2P
-+# endif
-+# define machine_is_sandgate2p() (machine_arch_type == MACH_TYPE_SANDGATE2P)
-+#else
-+# define machine_is_sandgate2p() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FRED_JACK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FRED_JACK
-+# endif
-+# define machine_is_fred_jack() (machine_arch_type == MACH_TYPE_FRED_JACK)
-+#else
-+# define machine_is_fred_jack() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TTG_COLOR1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TTG_COLOR1
-+# endif
-+# define machine_is_ttg_color1() (machine_arch_type == MACH_TYPE_TTG_COLOR1)
-+#else
-+# define machine_is_ttg_color1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NXEB500HMI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NXEB500HMI
-+# endif
-+# define machine_is_nxeb500hmi() (machine_arch_type == MACH_TYPE_NXEB500HMI)
-+#else
-+# define machine_is_nxeb500hmi() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NETDCU8
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NETDCU8
-+# endif
-+# define machine_is_netdcu8() (machine_arch_type == MACH_TYPE_NETDCU8)
-+#else
-+# define machine_is_netdcu8() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ML675050_CPU_BOA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ML675050_CPU_BOA
-+# endif
-+# define machine_is_ml675050_cpu_boa() (machine_arch_type == MACH_TYPE_ML675050_CPU_BOA)
-+#else
-+# define machine_is_ml675050_cpu_boa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NG_FVX538
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NG_FVX538
-+# endif
-+# define machine_is_ng_fvx538() (machine_arch_type == MACH_TYPE_NG_FVX538)
-+#else
-+# define machine_is_ng_fvx538() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NG_FVS338
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NG_FVS338
-+# endif
-+# define machine_is_ng_fvs338() (machine_arch_type == MACH_TYPE_NG_FVS338)
-+#else
-+# define machine_is_ng_fvs338() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX4103
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX4103
-+# endif
-+# define machine_is_pnx4103() (machine_arch_type == MACH_TYPE_PNX4103)
-+#else
-+# define machine_is_pnx4103() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HESDB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HESDB
-+# endif
-+# define machine_is_hesdb() (machine_arch_type == MACH_TYPE_HESDB)
-+#else
-+# define machine_is_hesdb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSILO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSILO
-+# endif
-+# define machine_is_xsilo() (machine_arch_type == MACH_TYPE_XSILO)
-+#else
-+# define machine_is_xsilo() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ESPRESSO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ESPRESSO
-+# endif
-+# define machine_is_espresso() (machine_arch_type == MACH_TYPE_ESPRESSO)
-+#else
-+# define machine_is_espresso() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EMLC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EMLC
-+# endif
-+# define machine_is_emlc() (machine_arch_type == MACH_TYPE_EMLC)
-+#else
-+# define machine_is_emlc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SISTERON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SISTERON
-+# endif
-+# define machine_is_sisteron() (machine_arch_type == MACH_TYPE_SISTERON)
-+#else
-+# define machine_is_sisteron() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RX1950
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RX1950
-+# endif
-+# define machine_is_rx1950() (machine_arch_type == MACH_TYPE_RX1950)
-+#else
-+# define machine_is_rx1950() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TSC_VENUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TSC_VENUS
-+# endif
-+# define machine_is_tsc_venus() (machine_arch_type == MACH_TYPE_TSC_VENUS)
-+#else
-+# define machine_is_tsc_venus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DS101J
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DS101J
-+# endif
-+# define machine_is_ds101j() (machine_arch_type == MACH_TYPE_DS101J)
-+#else
-+# define machine_is_ds101j() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MXC30030ADS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MXC30030ADS
-+# endif
-+# define machine_is_mxc30030ads() (machine_arch_type == MACH_TYPE_MXC30030ADS)
-+#else
-+# define machine_is_mxc30030ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FUJITSU_WIMAXSOC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FUJITSU_WIMAXSOC
-+# endif
-+# define machine_is_fujitsu_wimaxsoc() (machine_arch_type == MACH_TYPE_FUJITSU_WIMAXSOC)
-+#else
-+# define machine_is_fujitsu_wimaxsoc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DUALPCMODEM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DUALPCMODEM
-+# endif
-+# define machine_is_dualpcmodem() (machine_arch_type == MACH_TYPE_DUALPCMODEM)
-+#else
-+# define machine_is_dualpcmodem() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GESBC9312
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GESBC9312
-+# endif
-+# define machine_is_gesbc9312() (machine_arch_type == MACH_TYPE_GESBC9312)
-+#else
-+# define machine_is_gesbc9312() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCAPACHE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCAPACHE
-+# endif
-+# define machine_is_htcapache() (machine_arch_type == MACH_TYPE_HTCAPACHE)
-+#else
-+# define machine_is_htcapache() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXDP435
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXDP435
-+# endif
-+# define machine_is_ixdp435() (machine_arch_type == MACH_TYPE_IXDP435)
-+#else
-+# define machine_is_ixdp435() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CATPROVT100
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CATPROVT100
-+# endif
-+# define machine_is_catprovt100() (machine_arch_type == MACH_TYPE_CATPROVT100)
-+#else
-+# define machine_is_catprovt100() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PICOTUX1XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PICOTUX1XX
-+# endif
-+# define machine_is_picotux1xx() (machine_arch_type == MACH_TYPE_PICOTUX1XX)
-+#else
-+# define machine_is_picotux1xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PICOTUX2XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PICOTUX2XX
-+# endif
-+# define machine_is_picotux2xx() (machine_arch_type == MACH_TYPE_PICOTUX2XX)
-+#else
-+# define machine_is_picotux2xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DSMG600
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DSMG600
-+# endif
-+# define machine_is_dsmg600() (machine_arch_type == MACH_TYPE_DSMG600)
-+#else
-+# define machine_is_dsmg600() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EMPC2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EMPC2
-+# endif
-+# define machine_is_empc2() (machine_arch_type == MACH_TYPE_EMPC2)
-+#else
-+# define machine_is_empc2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VENTURA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VENTURA
-+# endif
-+# define machine_is_ventura() (machine_arch_type == MACH_TYPE_VENTURA)
-+#else
-+# define machine_is_ventura() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PHIDGET_SBC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PHIDGET_SBC
-+# endif
-+# define machine_is_phidget_sbc() (machine_arch_type == MACH_TYPE_PHIDGET_SBC)
-+#else
-+# define machine_is_phidget_sbc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IJ3K
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IJ3K
-+# endif
-+# define machine_is_ij3k() (machine_arch_type == MACH_TYPE_IJ3K)
-+#else
-+# define machine_is_ij3k() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PISGAH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PISGAH
-+# endif
-+# define machine_is_pisgah() (machine_arch_type == MACH_TYPE_PISGAH)
-+#else
-+# define machine_is_pisgah() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_FSAMPLE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_FSAMPLE
-+# endif
-+# define machine_is_omap_fsample() (machine_arch_type == MACH_TYPE_OMAP_FSAMPLE)
-+#else
-+# define machine_is_omap_fsample() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SG720
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SG720
-+# endif
-+# define machine_is_sg720() (machine_arch_type == MACH_TYPE_SG720)
-+#else
-+# define machine_is_sg720() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REDFOX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REDFOX
-+# endif
-+# define machine_is_redfox() (machine_arch_type == MACH_TYPE_REDFOX)
-+#else
-+# define machine_is_redfox() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MYSH_EP9315_1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MYSH_EP9315_1
-+# endif
-+# define machine_is_mysh_ep9315_1() (machine_arch_type == MACH_TYPE_MYSH_EP9315_1)
-+#else
-+# define machine_is_mysh_ep9315_1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TPF106
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TPF106
-+# endif
-+# define machine_is_tpf106() (machine_arch_type == MACH_TYPE_TPF106)
-+#else
-+# define machine_is_tpf106() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AT91RM9200KG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AT91RM9200KG
-+# endif
-+# define machine_is_at91rm9200kg() (machine_arch_type == MACH_TYPE_AT91RM9200KG)
-+#else
-+# define machine_is_at91rm9200kg() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SLEDB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SLEDB
-+# endif
-+# define machine_is_racemt2() (machine_arch_type == MACH_TYPE_SLEDB)
-+#else
-+# define machine_is_racemt2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ONTRACK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ONTRACK
-+# endif
-+# define machine_is_ontrack() (machine_arch_type == MACH_TYPE_ONTRACK)
-+#else
-+# define machine_is_ontrack() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PM1200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PM1200
-+# endif
-+# define machine_is_pm1200() (machine_arch_type == MACH_TYPE_PM1200)
-+#else
-+# define machine_is_pm1200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ESS24XXX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ESS24XXX
-+# endif
-+# define machine_is_ess24562() (machine_arch_type == MACH_TYPE_ESS24XXX)
-+#else
-+# define machine_is_ess24562() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_COREMP7
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_COREMP7
-+# endif
-+# define machine_is_coremp7() (machine_arch_type == MACH_TYPE_COREMP7)
-+#else
-+# define machine_is_coremp7() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NEXCODER_6446
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NEXCODER_6446
-+# endif
-+# define machine_is_nexcoder_6446() (machine_arch_type == MACH_TYPE_NEXCODER_6446)
-+#else
-+# define machine_is_nexcoder_6446() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_STVC8380
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_STVC8380
-+# endif
-+# define machine_is_stvc8380() (machine_arch_type == MACH_TYPE_STVC8380)
-+#else
-+# define machine_is_stvc8380() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TEKLYNX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TEKLYNX
-+# endif
-+# define machine_is_teklynx() (machine_arch_type == MACH_TYPE_TEKLYNX)
-+#else
-+# define machine_is_teklynx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CARBONADO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CARBONADO
-+# endif
-+# define machine_is_carbonado() (machine_arch_type == MACH_TYPE_CARBONADO)
-+#else
-+# define machine_is_carbonado() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SYSMOS_MP730
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SYSMOS_MP730
-+# endif
-+# define machine_is_sysmos_mp730() (machine_arch_type == MACH_TYPE_SYSMOS_MP730)
-+#else
-+# define machine_is_sysmos_mp730() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SNAPPER_CL15
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SNAPPER_CL15
-+# endif
-+# define machine_is_snapper_cl15() (machine_arch_type == MACH_TYPE_SNAPPER_CL15)
-+#else
-+# define machine_is_snapper_cl15() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PGIGIM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PGIGIM
-+# endif
-+# define machine_is_pgigim() (machine_arch_type == MACH_TYPE_PGIGIM)
-+#else
-+# define machine_is_pgigim() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PTX9160P2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PTX9160P2
-+# endif
-+# define machine_is_ptx9160p2() (machine_arch_type == MACH_TYPE_PTX9160P2)
-+#else
-+# define machine_is_ptx9160p2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DCORE1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DCORE1
-+# endif
-+# define machine_is_dcore1() (machine_arch_type == MACH_TYPE_DCORE1)
-+#else
-+# define machine_is_dcore1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VICTORPXA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VICTORPXA
-+# endif
-+# define machine_is_victorpxa() (machine_arch_type == MACH_TYPE_VICTORPXA)
-+#else
-+# define machine_is_victorpxa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX2DTB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX2DTB
-+# endif
-+# define machine_is_mx2dtb() (machine_arch_type == MACH_TYPE_MX2DTB)
-+#else
-+# define machine_is_mx2dtb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PXA_IREX_ER0100
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PXA_IREX_ER0100
-+# endif
-+# define machine_is_pxa_irex_er0100() (machine_arch_type == MACH_TYPE_PXA_IREX_ER0100)
-+#else
-+# define machine_is_pxa_irex_er0100() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMZ71
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMZ71
-+# endif
-+# define machine_is_omap_palmz71() (machine_arch_type == MACH_TYPE_OMAP_PALMZ71)
-+#else
-+# define machine_is_omap_palmz71() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BARTEC_DEG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BARTEC_DEG
-+# endif
-+# define machine_is_bartec_deg() (machine_arch_type == MACH_TYPE_BARTEC_DEG)
-+#else
-+# define machine_is_bartec_deg() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HW50251
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HW50251
-+# endif
-+# define machine_is_hw50251() (machine_arch_type == MACH_TYPE_HW50251)
-+#else
-+# define machine_is_hw50251() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IBOX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IBOX
-+# endif
-+# define machine_is_ibox() (machine_arch_type == MACH_TYPE_IBOX)
-+#else
-+# define machine_is_ibox() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ATLASLH7A404
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ATLASLH7A404
-+# endif
-+# define machine_is_atlaslh7a404() (machine_arch_type == MACH_TYPE_ATLASLH7A404)
-+#else
-+# define machine_is_atlaslh7a404() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PT2026
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PT2026
-+# endif
-+# define machine_is_pt2026() (machine_arch_type == MACH_TYPE_PT2026)
-+#else
-+# define machine_is_pt2026() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCALPINE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCALPINE
-+# endif
-+# define machine_is_htcalpine() (machine_arch_type == MACH_TYPE_HTCALPINE)
-+#else
-+# define machine_is_htcalpine() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BARTEC_VTU
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BARTEC_VTU
-+# endif
-+# define machine_is_bartec_vtu() (machine_arch_type == MACH_TYPE_BARTEC_VTU)
-+#else
-+# define machine_is_bartec_vtu() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VCOREII
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VCOREII
-+# endif
-+# define machine_is_vcoreii() (machine_arch_type == MACH_TYPE_VCOREII)
-+#else
-+# define machine_is_vcoreii() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PDNB3
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PDNB3
-+# endif
-+# define machine_is_pdnb3() (machine_arch_type == MACH_TYPE_PDNB3)
-+#else
-+# define machine_is_pdnb3() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCBEETLES
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCBEETLES
-+# endif
-+# define machine_is_htcbeetles() (machine_arch_type == MACH_TYPE_HTCBEETLES)
-+#else
-+# define machine_is_htcbeetles() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_S3C6400
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_S3C6400
-+# endif
-+# define machine_is_s3c6400() (machine_arch_type == MACH_TYPE_S3C6400)
-+#else
-+# define machine_is_s3c6400() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_S3C2443
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_S3C2443
-+# endif
-+# define machine_is_s3c2443() (machine_arch_type == MACH_TYPE_S3C2443)
-+#else
-+# define machine_is_s3c2443() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_LDK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_LDK
-+# endif
-+# define machine_is_omap_ldk() (machine_arch_type == MACH_TYPE_OMAP_LDK)
-+#else
-+# define machine_is_omap_ldk() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2460
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2460
-+# endif
-+# define machine_is_smdk2460() (machine_arch_type == MACH_TYPE_SMDK2460)
-+#else
-+# define machine_is_smdk2460() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2440
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2440
-+# endif
-+# define machine_is_smdk2440() (machine_arch_type == MACH_TYPE_SMDK2440)
-+#else
-+# define machine_is_smdk2440() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2412
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2412
-+# endif
-+# define machine_is_smdk2412() (machine_arch_type == MACH_TYPE_SMDK2412)
-+#else
-+# define machine_is_smdk2412() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_WEBBOX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_WEBBOX
-+# endif
-+# define machine_is_webbox() (machine_arch_type == MACH_TYPE_WEBBOX)
-+#else
-+# define machine_is_webbox() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CWWNDP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CWWNDP
-+# endif
-+# define machine_is_cwwndp() (machine_arch_type == MACH_TYPE_CWWNDP)
-+#else
-+# define machine_is_cwwndp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DRAGON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DRAGON
-+# endif
-+# define machine_is_dragon() (machine_arch_type == MACH_TYPE_DRAGON)
-+#else
-+# define machine_is_dragon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OPENDO_CPU_BOARD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OPENDO_CPU_BOARD
-+# endif
-+# define machine_is_opendo_cpu_board() (machine_arch_type == MACH_TYPE_OPENDO_CPU_BOARD)
-+#else
-+# define machine_is_opendo_cpu_board() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CCM2200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CCM2200
-+# endif
-+# define machine_is_ccm2200() (machine_arch_type == MACH_TYPE_CCM2200)
-+#else
-+# define machine_is_ccm2200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ETWARM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ETWARM
-+# endif
-+# define machine_is_etwarm() (machine_arch_type == MACH_TYPE_ETWARM)
-+#else
-+# define machine_is_etwarm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_M93030
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_M93030
-+# endif
-+# define machine_is_m93030() (machine_arch_type == MACH_TYPE_M93030)
-+#else
-+# define machine_is_m93030() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CC7U
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CC7U
-+# endif
-+# define machine_is_cc7u() (machine_arch_type == MACH_TYPE_CC7U)
-+#else
-+# define machine_is_cc7u() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MTT_RANGER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MTT_RANGER
-+# endif
-+# define machine_is_mtt_ranger() (machine_arch_type == MACH_TYPE_MTT_RANGER)
-+#else
-+# define machine_is_mtt_ranger() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NEXUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NEXUS
-+# endif
-+# define machine_is_nexus() (machine_arch_type == MACH_TYPE_NEXUS)
-+#else
-+# define machine_is_nexus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DESMAN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DESMAN
-+# endif
-+# define machine_is_desman() (machine_arch_type == MACH_TYPE_DESMAN)
-+#else
-+# define machine_is_desman() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BKDE303
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BKDE303
-+# endif
-+# define machine_is_bkde303() (machine_arch_type == MACH_TYPE_BKDE303)
-+#else
-+# define machine_is_bkde303() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2413
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2413
-+# endif
-+# define machine_is_smdk2413() (machine_arch_type == MACH_TYPE_SMDK2413)
-+#else
-+# define machine_is_smdk2413() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AML_M7200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AML_M7200
-+# endif
-+# define machine_is_aml_m7200() (machine_arch_type == MACH_TYPE_AML_M7200)
-+#else
-+# define machine_is_aml_m7200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AML_M5900
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AML_M5900
-+# endif
-+# define machine_is_aml_m5900() (machine_arch_type == MACH_TYPE_AML_M5900)
-+#else
-+# define machine_is_aml_m5900() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SG640
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SG640
-+# endif
-+# define machine_is_sg640() (machine_arch_type == MACH_TYPE_SG640)
-+#else
-+# define machine_is_sg640() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EDG79524
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EDG79524
-+# endif
-+# define machine_is_edg79524() (machine_arch_type == MACH_TYPE_EDG79524)
-+#else
-+# define machine_is_edg79524() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AI2410
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AI2410
-+# endif
-+# define machine_is_ai2410() (machine_arch_type == MACH_TYPE_AI2410)
-+#else
-+# define machine_is_ai2410() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXP465
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXP465
-+# endif
-+# define machine_is_ixp465() (machine_arch_type == MACH_TYPE_IXP465)
-+#else
-+# define machine_is_ixp465() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BALLOON3
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BALLOON3
-+# endif
-+# define machine_is_balloon3() (machine_arch_type == MACH_TYPE_BALLOON3)
-+#else
-+# define machine_is_balloon3() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_QT2410
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_QT2410
-+# endif
-+# define machine_is_qt2410() (machine_arch_type == MACH_TYPE_QT2410)
-+#else
-+# define machine_is_qt2410() (0)
-+#endif
-+
- /*
- * These have not yet been registered
- */
-diff --git a/include/configs/qt2410.h b/include/configs/qt2410.h
-new file mode 100644
-index 0000000..627f365
---- /dev/null
-+++ b/include/configs/qt2410.h
-@@ -0,0 +1,256 @@
-+/*
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ * Gary Jennejohn <gj@denx.de>
-+ * David Mueller <d.mueller@elsoft.ch>
-+ *
-+ * Configuation settings for the SAMSUNG SMDK2410 board.
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#ifndef __CONFIG_H
-+#define __CONFIG_H
-+
-+#if 0
-+/* If we want to start u-boot from usb bootloader in NOR flash */
-+#define CONFIG_SKIP_RELOCATE_UBOOT 1
-+#define CONFIG_SKIP_LOWLEVEL_INIT 1
-+#else
-+/* If we want to start u-boot directly from within NAND flash */
-+#define CONFIG_S3C2410_NAND_BOOT 1
-+#endif
-+
-+/*
-+ * High Level Configuration Options
-+ * (easy to change)
-+ */
-+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-+
-+/* input clock of PLL */
-+#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
-+
-+
-+#define USE_920T_MMU 1
-+#define CONFIG_USE_IRQ 1
-+//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
-+
-+/*
-+ * Size of malloc() pool
-+ */
-+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-+
-+/*
-+ * Hardware drivers
-+ */
-+#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
-+#define CS8900_BASE 0x19000300
-+#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
-+
-+/*
-+ * select serial console configuration
-+ */
-+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
-+#define CONFIG_HWFLOW 1
-+
-+/************************************************************
-+ * RTC
-+ ************************************************************/
-+#define CONFIG_RTC_S3C24X0 1
-+
-+/* allow to overwrite serial and ethaddr */
-+#define CONFIG_ENV_OVERWRITE
-+
-+#define CONFIG_BAUDRATE 115200
-+
-+/***********************************************************
-+ * Command definition
-+ ***********************************************************/
-+#define CONFIG_COMMANDS \
-+ (CONFIG_CMD_DFL | \
-+ CFG_CMD_BSP | \
-+ CFG_CMD_CACHE | \
-+ CFG_CMD_DATE | \
-+ CFG_CMD_DHCP | \
-+ CFG_CMD_DIAG | \
-+ CFG_CMD_ELF | \
-+ CFG_CMD_EXT2 | \
-+ CFG_CMD_FAT | \
-+ CFG_CMD_HWFLOW | \
-+ /* CFG_CMD_IDE | */ \
-+ /* CFG_CMD_IRQ | */ \
-+ CFG_CMD_JFFS2 | \
-+ CFG_CMD_MMC | \
-+ CFG_CMD_NAND | \
-+ CFG_CMD_PING | \
-+ CFG_CMD_PORTIO | \
-+ CFG_CMD_REGINFO | \
-+ CFG_CMD_SAVES | \
-+ CFG_CMD_USB)
-+
-+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-+#include <cmd_confdefs.h>
-+
-+#define CONFIG_BOOTDELAY 3
-+#define CONFIG_BOOTARGS "root=/dev/sda1 console=ttySAC0,115200 loglevel=8 rootdelay=10"
-+/*#define CONFIG_ETHADDR 08:00:3e:26:0a:5b */
-+#define CONFIG_NETMASK 255.255.255.0
-+#define CONFIG_IPADDR 10.0.0.110
-+#define CONFIG_SERVERIP 10.0.0.1
-+/*#define CONFIG_BOOTFILE "elinos-lart" */
-+#define CONFIG_BOOTCOMMAND "mmcinit; ext2load mmc 0 0x32000000 uImage; bootm 0x32000000"
-+
-+#define CONFIG_DOS_PARTITION 1
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-+/* what's this ? it's not used anywhere */
-+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-+#endif
-+
-+/*
-+ * Miscellaneous configurable options
-+ */
-+#define CFG_LONGHELP /* undef to save memory */
-+#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
-+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-+#define CFG_MAXARGS 16 /* max number of command args */
-+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-+
-+#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-+
-+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-+
-+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-+
-+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-+/* it to wrap 100 times (total 1562500) to get 1 sec. */
-+#define CFG_HZ 1562500
-+
-+/* valid baudrates */
-+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-+
-+/*-----------------------------------------------------------------------
-+ * Stack sizes
-+ *
-+ * The stack sizes are set up in start.S using the settings below
-+ */
-+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-+#ifdef CONFIG_USE_IRQ
-+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-+#endif
-+
-+/* IDE/ATA config */
-+
-+#if 0
-+#define CFG_IDE_MAXBUS 1
-+#define CFG_IDE_MAXDEVICE 2
-+#define CFG_IDE_PREINIT 0
-+
-+#define CFG_ATA_BASE_ADDR
-+#endif
-+
-+#define CONFIG_USB_OHCI 1
-+
-+/*-----------------------------------------------------------------------
-+ * Physical Memory Map
-+ */
-+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-+
-+#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
-+
-+#define CFG_FLASH_BASE PHYS_FLASH_1
-+
-+/*-----------------------------------------------------------------------
-+ * FLASH and environment organization
-+ */
-+
-+#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
-+#if 0
-+#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
-+#endif
-+
-+#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
-+#ifdef CONFIG_AMD_LV800
-+#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
-+#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
-+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
-+#endif
-+#ifdef CONFIG_AMD_LV400
-+#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
-+#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
-+#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x070000) /* addr of environment */
-+#endif
-+
-+/* timeout values are in ticks */
-+#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
-+#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
-+
-+#define CFG_ENV_IS_IN_NAND 1
-+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-+
-+#define NAND_MAX_CHIPS 1
-+#define CFG_NAND_BASE 0x4e000000
-+#define CFG_MAX_NAND_DEVICE 1
-+
-+#define CONFIG_MMC 1
-+#define CFG_MMC_BASE 0xff000000
-+
-+#define CONFIG_EXT2 1
-+
-+/* FAT driver in u-boot is broken currently */
-+#define CONFIG_FAT 1
-+#define CONFIG_SUPPORT_VFAT
-+
-+/* ATAG configuration */
-+#define CONFIG_INITRD_TAG 1
-+#define CONFIG_SETUP_MEMORY_TAGS 1
-+#define CONFIG_CMDLINE_TAG 1
-+#if 0
-+#define CONFIG_SERIAL_TAG 1
-+#define CONFIG_REVISION_TAG 1
-+#endif
-+
-+
-+#if 0
-+#define CONFIG_VIDEO
-+#define CONFIG_VIDEO_S3C2410
-+#define CONFIG_CFB_CONSOLE
-+#define CONFIG_VIDEO_LOGO
-+#define CONFIG_VGA_AS_SINGLE_DEVICE
-+
-+#define VIDEO_KBD_INIT_FCT 0
-+#define VIDEO_TSTC_FCT serial_tstc
-+#define VIDEO_GETC_FCT serial_getc
-+
-+#define LCD_VIDEO_ADDR 0x33d00000
-+#endif
-+
-+#endif /* __CONFIG_H */
-diff --git a/include/s3c2410.h b/include/s3c2410.h
-index 86495f6..913521d 100644
---- a/include/s3c2410.h
-+++ b/include/s3c2410.h
-@@ -38,12 +38,6 @@ #define S3C24X0_SPI_CHANNELS 2
- #define S3C2410_ECCSIZE 512
- #define S3C2410_ECCBYTES 3
-
--typedef enum {
-- S3C24X0_UART0,
-- S3C24X0_UART1,
-- S3C24X0_UART2
--} S3C24X0_UARTS_NR;
--
- /* S3C2410 device base addresses */
- #define S3C24X0_MEMCTL_BASE 0x48000000
- #define S3C24X0_USB_HOST_BASE 0x49000000
-@@ -65,9 +59,23 @@ #define S3C24X0_SPI_BASE 0x59000000
- #define S3C2410_SDI_BASE 0x5A000000
-
-
-+#define oNFCONF 0x00
-+#define oNFCMD 0x04
-+#define oNFADDR 0x08
-+#define oNFDATA 0x0C
-+#define oNFSTAT 0x10
-+#define oNFECC 0x14
-+
-+#ifndef __ASSEMBLER__
-+
- /* include common stuff */
- #include <s3c24x0.h>
-
-+typedef enum {
-+ S3C24X0_UART0,
-+ S3C24X0_UART1,
-+ S3C24X0_UART2
-+} S3C24X0_UARTS_NR;
-
- static inline S3C24X0_MEMCTL * const S3C24X0_GetBase_MEMCTL(void)
- {
-@@ -142,6 +150,7 @@ static inline S3C2410_SDI * const S3C241
- return (S3C2410_SDI * const)S3C2410_SDI_BASE;
- }
-
-+#endif
-
- /* ISR */
- #define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0))
-diff --git a/include/s3c24x0.h b/include/s3c24x0.h
-index 71f35a5..557b91f 100644
---- a/include/s3c24x0.h
-+++ b/include/s3c24x0.h
-@@ -637,13 +637,7 @@ typedef struct {
- S3C24X0_REG32 SDIDCNT;
- S3C24X0_REG32 SDIDSTA;
- S3C24X0_REG32 SDIFSTA;
--#ifdef __BIG_ENDIAN
-- S3C24X0_REG8 res[3];
-- S3C24X0_REG8 SDIDAT;
--#else
-- S3C24X0_REG8 SDIDAT;
-- S3C24X0_REG8 res[3];
--#endif
-+ S3C24X0_REG32 SDIDAT;
- S3C24X0_REG32 SDIIMSK;
- } /*__attribute__((__packed__))*/ S3C2410_SDI;
-
-@@ -1123,11 +1117,7 @@ #define rSDIDatCon (*(volatile unsigned
- #define rSDIDatCnt (*(volatile unsigned *)0x5A000030)
- #define rSDIDatSta (*(volatile unsigned *)0x5A000034)
- #define rSDIFSTA (*(volatile unsigned *)0x5A000038)
--#ifdef __BIG_ENDIAN
--#define rSDIDAT (*(volatile unsigned char *)0x5A00003F)
--#else
--#define rSDIDAT (*(volatile unsigned char *)0x5A00003C)
--#endif
-+#define rSDIDAT (*(volatile unsigned *)0x5A00003C)
- #define rSDIIntMsk (*(volatile unsigned *)0x5A000040)
-
- #endif
diff --git a/packages/uboot/files/u-boot-20060907-gta01.patch b/packages/uboot/files/u-boot-20060907-gta01.patch
deleted file mode 100644
index 6aa54fa208..0000000000
--- a/packages/uboot/files/u-boot-20060907-gta01.patch
+++ /dev/null
@@ -1,901 +0,0 @@
-diff --exclude .git -Nru u-boot/Makefile u-boot.new/Makefile
---- u-boot/Makefile 2006-08-11 23:19:07.000000000 +0200
-+++ u-boot.new/Makefile 2006-10-26 13:02:41.000000000 +0200
-@@ -1641,6 +1641,9 @@
- qt2410_config : unconfig
- @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
-
-+gta01_config : unconfig
-+ @./mkconfig $(@:_config=) arm arm920t gta01 NULL s3c24x0
-+
- scb9328_config : unconfig
- @./mkconfig $(@:_config=) arm arm920t scb9328 NULL imx
-
-diff --exclude .git -Nru u-boot/board/gta01/Makefile u-boot.new/board/gta01/Makefile
---- u-boot/board/gta01/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/board/gta01/Makefile 2006-10-25 17:21:44.000000000 +0200
-@@ -0,0 +1,47 @@
-+#
-+# (C) Copyright 2000, 2001, 2002
-+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-+#
-+# See file CREDITS for list of people who contributed to this
-+# project.
-+#
-+# This program is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU General Public License as
-+# published by the Free Software Foundation; either version 2 of
-+# the License, or (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+# MA 02111-1307 USA
-+#
-+
-+include $(TOPDIR)/config.mk
-+
-+LIB = lib$(BOARD).a
-+
-+OBJS := gta01.o
-+SOBJS := lowlevel_init.o
-+
-+$(LIB): $(OBJS) $(SOBJS)
-+ $(AR) crv $@ $(OBJS) $(SOBJS)
-+
-+clean:
-+ rm -f $(SOBJS) $(OBJS)
-+
-+distclean: clean
-+ rm -f $(LIB) core *.bak .depend
-+
-+#########################################################################
-+
-+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
-+
-+-include .depend
-+
-+#########################################################################
-diff --exclude .git -Nru u-boot/board/gta01/config.mk u-boot.new/board/gta01/config.mk
---- u-boot/board/gta01/config.mk 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/board/gta01/config.mk 2006-10-25 17:22:09.000000000 +0200
-@@ -0,0 +1,25 @@
-+#
-+# (C) Copyright 2002
-+# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+#
-+# FIC GTA01 board with S3C2410X (ARM920T) cpu
-+#
-+# see http://www.samsung.com/ for more information on SAMSUNG
-+#
-+
-+#
-+# GTA01 has 1 bank of 64 MB DRAM
-+#
-+# 3000'0000 to 3400'0000
-+#
-+# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-+# optionally with a ramdisk at 3080'0000
-+#
-+# we load ourself to 33F8'0000
-+#
-+# download area is 3300'0000
-+#
-+
-+
-+TEXT_BASE = 0x33F80000
-diff --exclude .git -Nru u-boot/board/gta01/gta01.c u-boot.new/board/gta01/gta01.c
---- u-boot/board/gta01/gta01.c 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/board/gta01/gta01.c 2006-10-25 17:27:50.000000000 +0200
-@@ -0,0 +1,133 @@
-+/*
-+ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * based on existing S3C2410 startup code in u-boot:
-+ *
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ *
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+#include <s3c2410.h>
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#if 1
-+//#define M_MDIV 0xA1 /* Fout = 202.8MHz */
-+//#define M_PDIV 0x3
-+//#define M_SDIV 0x1
-+#define M_MDIV 0x90 /* Fout = 202.8MHz */
-+#define M_PDIV 0x7
-+#define M_SDIV 0x0
-+#else
-+#define M_MDIV 0x5c /* Fout = 150.0MHz */
-+#define M_PDIV 0x4
-+#define M_SDIV 0x0
-+#endif
-+
-+#if 1
-+#define U_M_MDIV 0x78
-+#define U_M_PDIV 0x2
-+#define U_M_SDIV 0x3
-+#else
-+#define U_M_MDIV 0x48
-+#define U_M_PDIV 0x3
-+#define U_M_SDIV 0x2
-+#endif
-+
-+static inline void delay (unsigned long loops)
-+{
-+ __asm__ volatile ("1:\n"
-+ "subs %0, %1, #1\n"
-+ "bne 1b":"=r" (loops):"0" (loops));
-+}
-+
-+/*
-+ * Miscellaneous platform dependent initialisations
-+ */
-+
-+int board_init (void)
-+{
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-+
-+ /* to reduce PLL lock time, adjust the LOCKTIME register */
-+ clk_power->LOCKTIME = 0xFFFFFF;
-+
-+ /* configure MPLL */
-+ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (4000);
-+
-+ /* configure UPLL */
-+ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (8000);
-+
-+ /* set up the I/O ports */
-+ gpio->GPACON = 0x007FFFFF;
-+
-+ gpio->GPBCON = 0x00005056;
-+ gpio->GPBUP = 0x000007FF;
-+
-+ gpio->GPCCON = 0xAAAA12A8;
-+ gpio->GPCUP = 0x0000FFFF;
-+
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+
-+ gpio->GPECON = 0xAAAAAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+
-+ gpio->GPFCON = 0x00002AA9;
-+ gpio->GPFUP = 0x000000FF;
-+
-+ gpio->GPGCON = 0xA846F0C0;
-+ gpio->GPGUP = 0x0000AFEF;
-+
-+ gpio->GPHCON = 0x0008FAAA;
-+ gpio->GPHUP = 0x000007FF;
-+
-+ /* arch number of SMDK2410-Board */
-+ gd->bd->bi_arch_number = MACH_TYPE_GTA01;
-+
-+ /* adress of boot parameters */
-+ gd->bd->bi_boot_params = 0x30000100;
-+
-+ icache_enable();
-+ dcache_enable();
-+
-+ return 0;
-+}
-+
-+int dram_init (void)
-+{
-+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-+
-+ return 0;
-+}
-diff --exclude .git -Nru u-boot/board/gta01/lowlevel_init.S u-boot.new/board/gta01/lowlevel_init.S
---- u-boot/board/gta01/lowlevel_init.S 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/board/gta01/lowlevel_init.S 2006-10-25 17:20:42.000000000 +0200
-@@ -0,0 +1,171 @@
-+/*
-+ * Memory Setup stuff - taken from blob memsetup.S
-+ *
-+ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
-+ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
-+ *
-+ * Modified for the FIC GTA01 by Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+
-+#include <config.h>
-+#include <version.h>
-+
-+
-+/* some parameters for the board */
-+
-+/*
-+ *
-+ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
-+ *
-+ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
-+ *
-+ */
-+
-+#define BWSCON 0x48000000
-+
-+/* BWSCON */
-+#define DW8 (0x0)
-+#define DW16 (0x1)
-+#define DW32 (0x2)
-+#define WAIT (0x1<<2)
-+#define UBLB (0x1<<3)
-+
-+#define B1_BWSCON (DW32)
-+#define B2_BWSCON (DW16)
-+#define B3_BWSCON (DW16 + WAIT + UBLB)
-+#define B4_BWSCON (DW16)
-+#define B5_BWSCON (DW16)
-+#define B6_BWSCON (DW32)
-+#define B7_BWSCON (DW32)
-+
-+/* BANK0CON */
-+#define B0_Tacs 0x0 /* 0clk */
-+#define B0_Tcos 0x0 /* 0clk */
-+#define B0_Tacc 0x7 /* 14clk */
-+#define B0_Tcoh 0x0 /* 0clk */
-+#define B0_Tah 0x0 /* 0clk */
-+#define B0_Tacp 0x0
-+#define B0_PMC 0x0 /* normal */
-+
-+/* BANK1CON */
-+#define B1_Tacs 0x0 /* 0clk */
-+#define B1_Tcos 0x0 /* 0clk */
-+#define B1_Tacc 0x7 /* 14clk */
-+#define B1_Tcoh 0x0 /* 0clk */
-+#define B1_Tah 0x0 /* 0clk */
-+#define B1_Tacp 0x0
-+#define B1_PMC 0x0
-+
-+#define B2_Tacs 0x0
-+#define B2_Tcos 0x0
-+#define B2_Tacc 0x7
-+#define B2_Tcoh 0x0
-+#define B2_Tah 0x0
-+#define B2_Tacp 0x0
-+#define B2_PMC 0x0
-+
-+#define B3_Tacs 0x0 /* 0clk */
-+#define B3_Tcos 0x3 /* 4clk */
-+#define B3_Tacc 0x7 /* 14clk */
-+#define B3_Tcoh 0x1 /* 1clk */
-+#define B3_Tah 0x0 /* 0clk */
-+#define B3_Tacp 0x3 /* 6clk */
-+#define B3_PMC 0x0 /* normal */
-+
-+#define B4_Tacs 0x0 /* 0clk */
-+#define B4_Tcos 0x0 /* 0clk */
-+#define B4_Tacc 0x7 /* 14clk */
-+#define B4_Tcoh 0x0 /* 0clk */
-+#define B4_Tah 0x0 /* 0clk */
-+#define B4_Tacp 0x0
-+#define B4_PMC 0x0 /* normal */
-+
-+#define B5_Tacs 0x0 /* 0clk */
-+#define B5_Tcos 0x0 /* 0clk */
-+#define B5_Tacc 0x7 /* 14clk */
-+#define B5_Tcoh 0x0 /* 0clk */
-+#define B5_Tah 0x0 /* 0clk */
-+#define B5_Tacp 0x0
-+#define B5_PMC 0x0 /* normal */
-+
-+#define B6_MT 0x3 /* SDRAM */
-+#define B6_Trcd 0x1
-+#define B6_SCAN 0x1 /* 9bit */
-+
-+#define B7_MT 0x3 /* SDRAM */
-+#define B7_Trcd 0x1 /* 3clk */
-+#define B7_SCAN 0x1 /* 9bit */
-+
-+/* REFRESH parameter */
-+#define REFEN 0x1 /* Refresh enable */
-+#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-+#define Trp 0x1 /* 3clk */
-+#define Trc 0x3 /* 7clk */
-+#define Tchr 0x2 /* 3clk */
-+//#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
-+#define REFCNT 997 /* period=17.5us, HCLK=60Mhz, (2048+1-15.6*60) */
-+/**************************************/
-+
-+_TEXT_BASE:
-+ .word TEXT_BASE
-+
-+.globl lowlevel_init
-+lowlevel_init:
-+ /* memory control configuration */
-+ /* make r0 relative the current location so that it */
-+ /* reads SMRDATA out of FLASH rather than memory ! */
-+ ldr r0, =SMRDATA
-+ ldr r1, _TEXT_BASE
-+ sub r0, r0, r1
-+ ldr r1, =BWSCON /* Bus Width Status Controller */
-+ add r2, r0, #13*4
-+0:
-+ ldr r3, [r0], #4
-+ str r3, [r1], #4
-+ cmp r2, r0
-+ bne 0b
-+
-+ /* setup asynchronous bus mode */
-+ mrc p15, 0, r1 ,c1 ,c0, 0
-+ orr r1, r1, #0xc0000000
-+ mcr p15, 0, r1, c1, c0, 0
-+
-+ /* everything is fine now */
-+ mov pc, lr
-+
-+ .ltorg
-+/* the literal pools origin */
-+
-+SMRDATA:
-+ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
-+ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
-+ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
-+ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
-+ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
-+ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
-+ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
-+ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
-+ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
-+ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
-+ .word 0xb2
-+ .word 0x30
-+ .word 0x30
-diff --exclude .git -Nru u-boot/board/gta01/u-boot.lds u-boot.new/board/gta01/u-boot.lds
---- u-boot/board/gta01/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/board/gta01/u-boot.lds 2006-10-25 17:28:02.000000000 +0200
-@@ -0,0 +1,57 @@
-+/*
-+ * (C) Copyright 2002
-+ * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-+/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-+OUTPUT_ARCH(arm)
-+ENTRY(_start)
-+SECTIONS
-+{
-+ . = 0x00000000;
-+
-+ . = ALIGN(4);
-+ .text :
-+ {
-+ cpu/arm920t/start.o (.text)
-+ *(.text)
-+ }
-+
-+ . = ALIGN(4);
-+ .rodata : { *(.rodata) }
-+
-+ . = ALIGN(4);
-+ .data : { *(.data) }
-+
-+ . = ALIGN(4);
-+ .got : { *(.got) }
-+
-+ . = .;
-+ __u_boot_cmd_start = .;
-+ .u_boot_cmd : { *(.u_boot_cmd) }
-+ __u_boot_cmd_end = .;
-+
-+ . = ALIGN(4);
-+ __bss_start = .;
-+ .bss : { *(.bss) }
-+ _end = .;
-+}
-diff --exclude .git -Nru u-boot/board/qt2410/qt2410.c.old u-boot.new/board/qt2410/qt2410.c.old
---- u-boot/board/qt2410/qt2410.c.old 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/board/qt2410/qt2410.c.old 2006-10-10 11:09:43.000000000 +0200
-@@ -0,0 +1,127 @@
-+/*
-+ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * based on existing S3C2410 startup code in u-boot:
-+ *
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ *
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+#include <s3c2410.h>
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#if 1
-+#define M_MDIV 0xA1 /* Fout = 202.8MHz */
-+#define M_PDIV 0x3
-+#define M_SDIV 0x1
-+//#define M_MDIV 0x90 /* Fout = 202.8MHz */
-+//#define M_PDIV 0x7
-+//#define M_SDIV 0x0
-+#else
-+#define M_MDIV 0x5c /* Fout = 150.0MHz */
-+#define M_PDIV 0x4
-+#define M_SDIV 0x0
-+#endif
-+
-+#if 1
-+#define U_M_MDIV 0x78
-+#define U_M_PDIV 0x2
-+#define U_M_SDIV 0x3
-+#else
-+#define U_M_MDIV 0x48
-+#define U_M_PDIV 0x3
-+#define U_M_SDIV 0x2
-+#endif
-+
-+static inline void delay (unsigned long loops)
-+{
-+ __asm__ volatile ("1:\n"
-+ "subs %0, %1, #1\n"
-+ "bne 1b":"=r" (loops):"0" (loops));
-+}
-+
-+/*
-+ * Miscellaneous platform dependent initialisations
-+ */
-+
-+int board_init (void)
-+{
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-+
-+ /* to reduce PLL lock time, adjust the LOCKTIME register */
-+ clk_power->LOCKTIME = 0xFFFFFF;
-+
-+ /* configure MPLL */
-+ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (4000);
-+
-+ /* configure UPLL */
-+ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (8000);
-+
-+ /* set up the I/O ports */
-+ gpio->GPACON = 0x007FFFFF;
-+ gpio->GPBCON = 0x00044555;
-+ gpio->GPBUP = 0x000007FF;
-+ gpio->GPCCON = 0xAAAAAAAA;
-+ gpio->GPCUP = 0x0000FFFF;
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+ gpio->GPECON = 0xAAAAAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+ gpio->GPFCON = 0x000055AA;
-+ gpio->GPFUP = 0x000000FF;
-+ gpio->GPGCON = 0xFF95FFBA;
-+ //gpio->GPGUP = 0x0000FFFF;
-+ gpio->GPGUP = 0x0000AFEF;
-+ gpio->GPHCON = 0x0028FAAA;
-+ gpio->GPHUP = 0x000007FF;
-+
-+ /* arch number of SMDK2410-Board */
-+ gd->bd->bi_arch_number = MACH_TYPE_QT2410;
-+
-+ /* adress of boot parameters */
-+ gd->bd->bi_boot_params = 0x30000100;
-+
-+ icache_enable();
-+ dcache_enable();
-+
-+ return 0;
-+}
-+
-+int dram_init (void)
-+{
-+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-+
-+ return 0;
-+}
-diff --exclude .git -Nru u-boot/fs/cramfs/cramfs.c u-boot.new/fs/cramfs/cramfs.c
---- u-boot/fs/cramfs/cramfs.c 2006-07-14 12:41:02.000000000 +0200
-+++ u-boot.new/fs/cramfs/cramfs.c 2006-10-26 14:01:41.000000000 +0200
-@@ -27,7 +27,7 @@
- #include <common.h>
- #include <malloc.h>
-
--#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
-+#if (CONFIG_COMMANDS & CFG_CMD_CRAMFS)
-
- #include <asm/byteorder.h>
- #include <linux/stat.h>
-@@ -343,5 +343,22 @@
- }
- return 1;
- }
--
-+#else
-+int cramfs_load (char *loadoffset, struct part_info *info, char *filename)
-+{
-+ return -1;
-+}
-+int cramfs_ls (struct part_info *info, char *filename)
-+{
-+ return 0;
-+}
-+int cramfs_info (struct part_info *info)
-+{
-+ return 0;
-+}
-+int cramfs_check (struct part_info *info)
-+{
-+ return 0;
-+}
- #endif /* CFG_FS_CRAMFS */
-+
-diff --exclude .git -Nru u-boot/include/asm-arm/mach-types.h u-boot.new/include/asm-arm/mach-types.h
---- u-boot/include/asm-arm/mach-types.h 2006-08-11 23:19:07.000000000 +0200
-+++ u-boot.new/include/asm-arm/mach-types.h 2006-10-25 23:55:00.000000000 +0200
-@@ -1038,6 +1038,7 @@
- #define MACH_TYPE_IXP465 1028
- #define MACH_TYPE_BALLOON3 1029
- #define MACH_TYPE_QT2410 1108
-+#define MACH_TYPE_GTA01 1182
-
- #ifdef CONFIG_ARCH_EBSA110
- # ifdef machine_arch_type
-@@ -13327,6 +13328,19 @@
- # define machine_is_qt2410() (0)
- #endif
-
-+#ifdef CONFIG_MACH_GTA01
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GTA01
-+# endif
-+# define machine_is_gta01() (machine_arch_type == MACH_TYPE_GTA01)
-+#else
-+# define machine_is_gta01() (0)
-+#endif
-+
-+
- /*
- * These have not yet been registered
- */
-diff --exclude .git -Nru u-boot/include/configs/gta01.h u-boot.new/include/configs/gta01.h
---- u-boot/include/configs/gta01.h 1970-01-01 01:00:00.000000000 +0100
-+++ u-boot.new/include/configs/gta01.h 2006-10-26 20:21:30.000000000 +0200
-@@ -0,0 +1,233 @@
-+/*
-+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * Configuation settings for the FIC GTA01 Linux GSM phone
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#ifndef __CONFIG_H
-+#define __CONFIG_H
-+
-+/* we want to start u-boot directly from within NAND flash */
-+#define CONFIG_S3C2410_NAND_BOOT 1
-+
-+/*
-+ * High Level Configuration Options
-+ * (easy to change)
-+ */
-+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-+
-+/* input clock of PLL */
-+#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA01 has 12MHz input clock */
-+
-+
-+#define USE_920T_MMU 1
-+#define CONFIG_USE_IRQ 1
-+
-+/*
-+ * Size of malloc() pool
-+ */
-+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-+
-+/*
-+ * Hardware drivers
-+ */
-+
-+/*
-+ * select serial console configuration
-+ */
-+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
-+//#define CONFIG_HWFLOW 1
-+
-+/************************************************************
-+ * RTC
-+ ************************************************************/
-+#define CONFIG_RTC_S3C24X0 1
-+
-+/* allow to overwrite serial and ethaddr */
-+#define CONFIG_ENV_OVERWRITE
-+
-+#define CONFIG_BAUDRATE 115200
-+
-+/***********************************************************
-+ * Command definition
-+ ***********************************************************/
-+#define CONFIG_COMMANDS (\
-+ CFG_CMD_BDI | \
-+ CFG_CMD_LOADS | \
-+ CFG_CMD_LAODB | \
-+ CFG_CMD_IMI | \
-+ CFG_CMD_CACHE | \
-+ CFG_CMD_MEMORY | \
-+ CFG_CMD_ENV | \
-+ /* CFG_CMD_IRQ | */ \
-+ CFG_CMD_BOOTD | \
-+ CFG_CMD_CONSOLE | \
-+ CFG_CMD_ASKENV | \
-+ CFG_CMD_RUN | \
-+ CFG_CMD_ECHO | \
-+ CFG_CMD_I2C | \
-+ CFG_CMD_REGINFO | \
-+ CFG_CMD_IMMAP | \
-+ CFG_CMD_DATE | \
-+ CFG_CMD_AUTOSCRIPT | \
-+ CFG_CMD_BSP | \
-+ CFG_CMD_ELF | \
-+ CFG_CMD_MISC | \
-+ CFG_CMD_USB | \
-+ CFG_CMD_JFFS2 | \
-+ CFG_CMD_DIAG | \
-+ /* CFG_CMD_HWFLOW | */ \
-+ CFG_CMD_SAVES | \
-+ CFG_CMD_NAND | \
-+ CFG_CMD_PORTIO | \
-+ CFG_CMD_MMC | \
-+ CFG_CMD_FAT | \
-+ CFG_CMD_EXT2 | \
-+ 0)
-+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-+#include <cmd_confdefs.h>
-+
-+#define CONFIG_BOOTDELAY 3
-+#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
-+/*#define CONFIG_BOOTFILE "elinos-lart" */
-+#define CONFIG_BOOTCOMMAND "nand load 0x32000000 0x34000 0x200000; bootm 0x32000000"
-+
-+#define CONFIG_DOS_PARTITION 1
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-+/* what's this ? it's not used anywhere */
-+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-+#endif
-+
-+/*
-+ * Miscellaneous configurable options
-+ */
-+#define CFG_LONGHELP /* undef to save memory */
-+#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
-+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-+#define CFG_MAXARGS 16 /* max number of command args */
-+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-+
-+#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-+
-+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-+
-+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-+
-+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-+/* it to wrap 100 times (total 1562500) to get 1 sec. */
-+#define CFG_HZ 1562500
-+
-+/* valid baudrates */
-+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-+
-+/*-----------------------------------------------------------------------
-+ * Stack sizes
-+ *
-+ * The stack sizes are set up in start.S using the settings below
-+ */
-+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-+#ifdef CONFIG_USE_IRQ
-+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-+#endif
-+
-+#define CONFIG_USB_OHCI 1
-+
-+/*-----------------------------------------------------------------------
-+ * Physical Memory Map
-+ */
-+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-+
-+/*-----------------------------------------------------------------------
-+ * FLASH and environment organization
-+ */
-+
-+#if 1
-+#define CFG_NO_FLASH 1
-+#else
-+#define CFG_MAX_FLASH_SECT 1
-+#define CFG_MAX_FLASH_BANKS 1
-+#endif
-+
-+#define CFG_ENV_IS_IN_NAND 1
-+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-+
-+#define NAND_MAX_CHIPS 1
-+#define CFG_NAND_BASE 0x4e000000
-+#define CFG_MAX_NAND_DEVICE 1
-+
-+#define CONFIG_MMC 1
-+#define CFG_MMC_BASE 0xff000000
-+
-+/* EXT2 driver */
-+#define CONFIG_EXT2 1
-+
-+/* FAT driver in u-boot is broken currently */
-+#define CONFIG_FAT 1
-+#define CONFIG_SUPPORT_VFAT 1
-+
-+/* JFFS2 driver */
-+#define CONFIG_JFFS2_NAND 1
-+#define CONFIG_JFFS2_NAND_DEV 0
-+#define CONFIG_JFFS2_NAND_OFF 0x634000
-+#define CONFIG_JFFS2_NAND_SIZE 0x39cc000
-+
-+/* ATAG configuration */
-+#define CONFIG_INITRD_TAG 1
-+#define CONFIG_SETUP_MEMORY_TAGS 1
-+#define CONFIG_CMDLINE_TAG 1
-+#if 0
-+#define CONFIG_SERIAL_TAG 1
-+#define CONFIG_REVISION_TAG 1
-+#endif
-+
-+#define CONFIG_DRIVER_S3C24X0_I2C 1
-+#define CONFIG_HARD_I2C 1
-+#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50707 data sheet */
-+#define CFG_I2C_SLAVE 0x7f
-+
-+
-+#if 0
-+#define CONFIG_VIDEO
-+#define CONFIG_VIDEO_S3C2410
-+#define CONFIG_CFB_CONSOLE
-+#define CONFIG_VIDEO_LOGO
-+#define CONFIG_VGA_AS_SINGLE_DEVICE
-+
-+#define VIDEO_KBD_INIT_FCT 0
-+#define VIDEO_TSTC_FCT serial_tstc
-+#define VIDEO_GETC_FCT serial_getc
-+
-+#define LCD_VIDEO_ADDR 0x33d00000
-+#endif
-+
-+#endif /* __CONFIG_H */
diff --git a/packages/uboot/files/u-boot-20061030-gta01bv2.patch b/packages/uboot/files/u-boot-20061030-gta01bv2.patch
deleted file mode 100644
index 9e2d19338e..0000000000
--- a/packages/uboot/files/u-boot-20061030-gta01bv2.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-This patch adds support for the GTA01Bv2 variant of the FIC GTA01 (Neo1973) phone
-
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile 2007-01-04 12:22:12.000000000 +0100
-+++ git/Makefile 2007-01-04 12:22:16.000000000 +0100
-@@ -1918,6 +1918,7 @@
-
- gta01_config \
- gta01v3_config \
-+gta01bv2_config \
- gta01v4_config : unconfig
- @board/gta01/split_by_variant.sh $@
-
-Index: git/board/gta01/gta01.c
-===================================================================
---- git.orig/board/gta01/gta01.c 2007-01-04 12:22:12.000000000 +0100
-+++ git/board/gta01/gta01.c 2007-01-04 12:22:16.000000000 +0100
-@@ -35,28 +35,29 @@
-
- DECLARE_GLOBAL_DATA_PTR;
-
--#if 1
-+#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
- //#define M_MDIV 0xA1 /* Fout = 202.8MHz */
- //#define M_PDIV 0x3
- //#define M_SDIV 0x1
- #define M_MDIV 0x90 /* Fout = 202.8MHz */
- #define M_PDIV 0x7
- #define M_SDIV 0x0
--#else
--#define M_MDIV 0x5c /* Fout = 150.0MHz */
--#define M_PDIV 0x4
-+#elif defined(CONFIG_ARCH_GTA01B_v2)
-+#if 0
-+#define M_MDIV 0x7d /* Fout = 266MHz */
-+#define M_PDIV 0x1
-+#define M_SDIV 0x1
-+#endif
-+#define M_MDIV 0x90 /* Fout = 202.8MHz */
-+#define M_PDIV 0x7
- #define M_SDIV 0x0
-+#else
-+#error Please define GTA01 revision
- #endif
-
--#if 1
- #define U_M_MDIV 0x78
- #define U_M_PDIV 0x2
- #define U_M_SDIV 0x3
--#else
--#define U_M_MDIV 0x48
--#define U_M_PDIV 0x3
--#define U_M_SDIV 0x2
--#endif
-
- static inline void delay (unsigned long loops)
- {
-@@ -137,7 +138,31 @@
-
- gpio->GPHCON = 0x0000FAAA;
- gpio->GPHUP = 0x000007FF;
-+#elif defined(CONFIG_ARCH_GTA01B_v2)
-+ gpio->GPACON = 0x005E47FF;
-
-+ gpio->GPBCON = 0x00145416;
-+ gpio->GPBUP = 0x000007FF;
-+ gpio->GPBDAT |= 0x4; /* Set GBP2 to high (Flash power-up) */
-+
-+ gpio->GPCCON = 0xAAAA12A9;
-+ gpio->GPCUP = 0x0000FFFF;
-+
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+
-+ gpio->GPECON = 0xA02AAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+
-+ gpio->GPFCON = 0x0000aa19;
-+ gpio->GPFUP = 0x000000FF;
-+ gpio->GPFDAT |= 0x4; /* Set GBF2 to high (nGSM_EN) */
-+
-+ gpio->GPGCON = 0xFF40F0C1;
-+ gpio->GPGUP = 0x0000AFEF;
-+
-+ gpio->GPHCON = 0x0000FAAA;
-+ gpio->GPHUP = 0x000007FF;
- #else
- #error Please define GTA01 version
- #endif
-@@ -156,9 +181,11 @@
-
- int board_late_init(void)
- {
-+#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
- const char mmc_power = 0x8f;
-- /* enable D3REG 3.3V (SC/MMC power) */
-+ /* enable D2REG 3.3V (SC/MMC power) */
- i2c_write(0x08, 0x25, 1, &mmc_power, 1);
-+#endif
- return 0;
- }
-
-@@ -176,5 +203,7 @@
- return 0x00000130;
- #elif defined(CONFIG_ARCH_GTA01_v4)
- return 0x00000140;
-+#elif defined(CONFIG_ARCH_GTA01B_v2)
-+ return 0x00000220;
- #endif
- }
-Index: git/board/gta01/split_by_variant.sh
-===================================================================
---- git.orig/board/gta01/split_by_variant.sh 2007-01-04 12:22:12.000000000 +0100
-+++ git/board/gta01/split_by_variant.sh 2007-01-04 12:22:16.000000000 +0100
-@@ -15,16 +15,23 @@
- case "$1" in
- gta01v4_config)
- echo "#define CONFIG_ARCH_GTA01_v4" > ${obj}include/config.h
-+ echo "GTA01_BIG_FLASH=n" > ${obj}board/gta01/config.tmp
- ;;
-
- gta01v3_config)
- echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
-+ echo "GTA01_BIG_FLASH=n" > ${obj}board/gta01/config.tmp
- ;;
-
-+ gta01bv2_config)
-+ echo "#define CONFIG_ARCH_GTA01B_v2" > ${obj}include/config.h
-+ echo "GTA01_BIG_FLASH=y" > ${obj}board/gta01/config.tmp
-+ ;;
-
- *)
- echo "$0:: Unrecognised config - using gta01v3_config"
- echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
-+ echo "GTA01_BIG_FLASH=n" > ${obj}board/gta01/config.tmp
- ;;
-
- esac
-Index: git/include/configs/gta01.h
-===================================================================
---- git.orig/include/configs/gta01.h 2007-01-04 12:22:12.000000000 +0100
-+++ git/include/configs/gta01.h 2007-01-04 12:22:16.000000000 +0100
-@@ -128,6 +128,8 @@
- #define CFG_PROMPT "GTA01v3 # " /* Monitor Command Prompt */
- #elif defined(CONFIG_ARCH_GTA01_v4)
- #define CFG_PROMPT "GTA01v4 # " /* Monitor Command Prompt */
-+#elif defined(CONFIG_ARCH_GTA01B_v2)
-+#define CFG_PROMPT "GTA01Bv2 # " /* Monitor Command Prompt */
- #endif
- #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
- #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-@@ -166,7 +168,13 @@
- */
- #define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
- #define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-+#if defined(CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
- #define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-+#elif defined(CONFIG_ARCH_GTA01B_v2)
-+#define PHYS_SDRAM_1_SIZE 0x08000000 /* 128 MB */
-+#else
-+#error Please define GTA01 variant
-+#endif
- #define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-
- /*-----------------------------------------------------------------------
-Index: git/board/gta01/lowlevel_init.S
-===================================================================
---- git.orig/board/gta01/lowlevel_init.S 2007-01-04 12:22:07.000000000 +0100
-+++ git/board/gta01/lowlevel_init.S 2007-01-04 12:22:16.000000000 +0100
-@@ -108,12 +108,16 @@
- #define B5_PMC 0x0 /* normal */
-
- #define B6_MT 0x3 /* SDRAM */
--#define B6_Trcd 0x1
-+#define B6_Trcd 0x1 /* 3clk */
-+#if defined (CONFIG_ARCH_GTA01_v3) || defined(CONFIG_ARCH_GTA01_v4)
- #define B6_SCAN 0x1 /* 9bit */
-+#elif defined(CONFIG_ARCH_GTA01B_v2)
-+#define B6_SCAN 0x2 /* 10bit */
-+#endif
-
- #define B7_MT 0x3 /* SDRAM */
- #define B7_Trcd 0x1 /* 3clk */
--#define B7_SCAN 0x1 /* 9bit */
-+#define B7_SCAN 0x2 /* 10bit */
-
- /* REFRESH parameter */
- #define REFEN 0x1 /* Refresh enable */
-@@ -149,6 +153,19 @@
- orr r1, r1, #0xc0000000
- mcr p15, 0, r1, c1, c0, 0
-
-+#if defined(CONFIG_ARCH_GTA01_v4) || defined(CONFIG_ARCH_GTA01B_v2)
-+ /* switch on power for NAND */
-+ ldr r0, =0x56000010 /* GPBCON */
-+ ldr r1, [r0]
-+ orr r1, r1, #0x10
-+ str r1, [r0]
-+
-+ ldr r0, =0x56000014 /* GPBDAT */
-+ ldr r1, [r0]
-+ orr r1, r1, #(1 <<2)
-+ str r1, [r0]
-+#endif
-+
- /* everything is fine now */
- mov pc, lr
-
-Index: git/board/gta01/config.mk
-===================================================================
---- git.orig/board/gta01/config.mk 2007-01-04 12:22:07.000000000 +0100
-+++ git/board/gta01/config.mk 2007-01-04 12:22:16.000000000 +0100
-@@ -8,18 +8,26 @@
- # see http://www.samsung.com/ for more information on SAMSUNG
- #
-
-+# GTA01v3 has 1 bank of 64 MB SDRAM
-+# GTA01v4 has 1 bank of 64 MB SDRAM
- #
--# GTA01 has 1 bank of 64 MB DRAM
-+# 3000'0000 to 3400'0000
-+# we load ourself to 33F8'0000
-+#
-+# GTA01Bv2 or later has 1 bank of 128 MB SDRAM
- #
--# 3000'0000 to 3400'0000
-+# 3000'0000 to 3800'0000
-+# we load ourself to 37F8'0000
- #
- # Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
- # optionally with a ramdisk at 3080'0000
- #
--# we load ourself to 33F8'0000
--#
--# download area is 3300'0000
--#
-+# download area is 3200'0000 or 3300'0000
-
-+sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-
-+ifeq ($(GTA01_BIG_RAM),y)
-+TEXT_BASE = 0x37F80000
-+else
- TEXT_BASE = 0x33F80000
-+endif
diff --git a/packages/uboot/files/u-boot-20061030-gta01v4.patch b/packages/uboot/files/u-boot-20061030-gta01v4.patch
deleted file mode 100644
index 8910dcf831..0000000000
--- a/packages/uboot/files/u-boot-20061030-gta01v4.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile 2007-01-04 12:22:08.000000000 +0100
-+++ git/Makefile 2007-01-04 12:22:12.000000000 +0100
-@@ -1916,8 +1916,10 @@
- qt2410_config : unconfig
- @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
-
--gta01_config : unconfig
-- @./mkconfig $(@:_config=) arm arm920t gta01 NULL s3c24x0
-+gta01_config \
-+gta01v3_config \
-+gta01v4_config : unconfig
-+ @board/gta01/split_by_variant.sh $@
-
- scb9328_config : unconfig
- @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
-Index: git/board/gta01/gta01.c
-===================================================================
---- git.orig/board/gta01/gta01.c 2007-01-04 12:22:08.000000000 +0100
-+++ git/board/gta01/gta01.c 2007-01-04 12:22:12.000000000 +0100
-@@ -90,6 +90,7 @@
- delay (8000);
-
- /* set up the I/O ports */
-+#if defined(CONFIG_ARCH_GTA01_v3)
- gpio->GPACON = 0x007FFFFF;
-
- gpio->GPBCON = 0x00005056;
-@@ -112,6 +113,34 @@
-
- gpio->GPHCON = 0x0008FAAA;
- gpio->GPHUP = 0x000007FF;
-+#elif defined(CONFIG_ARCH_GTA01_v4)
-+ gpio->GPACON = 0x007FFFFF; //0x005E47FF;
-+
-+ gpio->GPBDAT |= 0x4; /* Set GBP2 to high (Flash power-up) */
-+ gpio->GPBCON = 0x00005056; //0x00045016;
-+ gpio->GPBUP = 0x000007FF;
-+
-+ gpio->GPCCON = 0xAAAA12A9;
-+ gpio->GPCUP = 0x0000FFFF;
-+
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+
-+ gpio->GPECON = 0xA02AAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+
-+ gpio->GPFCON = 0x0000aa09;
-+ gpio->GPFUP = 0x000000FF;
-+
-+ gpio->GPGCON = 0xFF40F0C1;
-+ gpio->GPGUP = 0x0000FFFF;
-+
-+ gpio->GPHCON = 0x0000FAAA;
-+ gpio->GPHUP = 0x000007FF;
-+
-+#else
-+#error Please define GTA01 version
-+#endif
-
- /* arch number of SMDK2410-Board */
- gd->bd->bi_arch_number = MACH_TYPE_GTA01;
-@@ -143,5 +172,9 @@
-
- u_int32_t get_board_rev(void)
- {
-+#if defined(CONFIG_ARCH_GTA01_v3)
- return 0x00000130;
-+#elif defined(CONFIG_ARCH_GTA01_v4)
-+ return 0x00000140;
-+#endif
- }
-Index: git/board/gta01/split_by_variant.sh
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/gta01/split_by_variant.sh 2007-01-04 12:22:12.000000000 +0100
-@@ -0,0 +1,36 @@
-+#!/bin/sh
-+# ---------------------------------------------------------
-+# Set the core module defines according to Core Module
-+# ---------------------------------------------------------
-+# ---------------------------------------------------------
-+# Set up the GTA01 type define
-+# ---------------------------------------------------------
-+
-+mkdir -p ${obj}include
-+if [ "$1" == "" ]
-+then
-+ echo "$0:: No parameters - using GTA01v3 config"
-+ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
-+else
-+ case "$1" in
-+ gta01v4_config)
-+ echo "#define CONFIG_ARCH_GTA01_v4" > ${obj}include/config.h
-+ ;;
-+
-+ gta01v3_config)
-+ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
-+ ;;
-+
-+
-+ *)
-+ echo "$0:: Unrecognised config - using gta01v3_config"
-+ echo "#define CONFIG_ARCH_GTA01_v3" > ${obj}include/config.h
-+ ;;
-+
-+ esac
-+
-+fi
-+# ---------------------------------------------------------
-+# Complete the configuration
-+# ---------------------------------------------------------
-+$MKCONFIG -a gta01 arm arm920t gta01 NULL s3c24x0
-Index: git/include/configs/gta01.h
-===================================================================
---- git.orig/include/configs/gta01.h 2007-01-04 12:22:08.000000000 +0100
-+++ git/include/configs/gta01.h 2007-01-04 12:22:12.000000000 +0100
-@@ -124,7 +124,11 @@
- * Miscellaneous configurable options
- */
- #define CFG_LONGHELP /* undef to save memory */
--#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
-+#if defined(CONFIG_ARCH_GTA01_v3)
-+#define CFG_PROMPT "GTA01v3 # " /* Monitor Command Prompt */
-+#elif defined(CONFIG_ARCH_GTA01_v4)
-+#define CFG_PROMPT "GTA01v4 # " /* Monitor Command Prompt */
-+#endif
- #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
- #define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
- #define CFG_MAXARGS 16 /* max number of command args */
diff --git a/packages/uboot/files/u-boot-20061030-qt2410-gta01.patch b/packages/uboot/files/u-boot-20061030-qt2410-gta01.patch
deleted file mode 100644
index 91f85479bc..0000000000
--- a/packages/uboot/files/u-boot-20061030-qt2410-gta01.patch
+++ /dev/null
@@ -1,9272 +0,0 @@
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile 2007-01-04 12:21:15.000000000 +0100
-+++ git/Makefile 2007-01-04 12:21:18.000000000 +0100
-@@ -1913,6 +1913,12 @@
- sbc2410x_config: unconfig
- @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
-
-+qt2410_config : unconfig
-+ @./mkconfig $(@:_config=) arm arm920t qt2410 NULL s3c24x0
-+
-+gta01_config : unconfig
-+ @./mkconfig $(@:_config=) arm arm920t gta01 NULL s3c24x0
-+
- scb9328_config : unconfig
- @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
-
-Index: git/board/gta01/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/gta01/Makefile 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,47 @@
-+#
-+# (C) Copyright 2000, 2001, 2002
-+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-+#
-+# See file CREDITS for list of people who contributed to this
-+# project.
-+#
-+# This program is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU General Public License as
-+# published by the Free Software Foundation; either version 2 of
-+# the License, or (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+# MA 02111-1307 USA
-+#
-+
-+include $(TOPDIR)/config.mk
-+
-+LIB = lib$(BOARD).a
-+
-+OBJS := gta01.o
-+SOBJS := lowlevel_init.o
-+
-+$(LIB): $(OBJS) $(SOBJS)
-+ $(AR) crv $@ $(OBJS) $(SOBJS)
-+
-+clean:
-+ rm -f $(SOBJS) $(OBJS)
-+
-+distclean: clean
-+ rm -f $(LIB) core *.bak .depend
-+
-+#########################################################################
-+
-+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
-+
-+-include .depend
-+
-+#########################################################################
-Index: git/board/gta01/config.mk
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/gta01/config.mk 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,25 @@
-+#
-+# (C) Copyright 2002
-+# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+#
-+# FIC GTA01 board with S3C2410X (ARM920T) cpu
-+#
-+# see http://www.samsung.com/ for more information on SAMSUNG
-+#
-+
-+#
-+# GTA01 has 1 bank of 64 MB DRAM
-+#
-+# 3000'0000 to 3400'0000
-+#
-+# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-+# optionally with a ramdisk at 3080'0000
-+#
-+# we load ourself to 33F8'0000
-+#
-+# download area is 3300'0000
-+#
-+
-+
-+TEXT_BASE = 0x33F80000
-Index: git/board/gta01/gta01.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/gta01/gta01.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,147 @@
-+/*
-+ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * based on existing S3C2410 startup code in u-boot:
-+ *
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ *
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+#include <s3c2410.h>
-+#include <i2c.h>
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#if 1
-+//#define M_MDIV 0xA1 /* Fout = 202.8MHz */
-+//#define M_PDIV 0x3
-+//#define M_SDIV 0x1
-+#define M_MDIV 0x90 /* Fout = 202.8MHz */
-+#define M_PDIV 0x7
-+#define M_SDIV 0x0
-+#else
-+#define M_MDIV 0x5c /* Fout = 150.0MHz */
-+#define M_PDIV 0x4
-+#define M_SDIV 0x0
-+#endif
-+
-+#if 1
-+#define U_M_MDIV 0x78
-+#define U_M_PDIV 0x2
-+#define U_M_SDIV 0x3
-+#else
-+#define U_M_MDIV 0x48
-+#define U_M_PDIV 0x3
-+#define U_M_SDIV 0x2
-+#endif
-+
-+static inline void delay (unsigned long loops)
-+{
-+ __asm__ volatile ("1:\n"
-+ "subs %0, %1, #1\n"
-+ "bne 1b":"=r" (loops):"0" (loops));
-+}
-+
-+/*
-+ * Miscellaneous platform dependent initialisations
-+ */
-+
-+int board_init (void)
-+{
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-+
-+ /* to reduce PLL lock time, adjust the LOCKTIME register */
-+ clk_power->LOCKTIME = 0xFFFFFF;
-+
-+ /* configure MPLL */
-+ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (4000);
-+
-+ /* configure UPLL */
-+ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (8000);
-+
-+ /* set up the I/O ports */
-+ gpio->GPACON = 0x007FFFFF;
-+
-+ gpio->GPBCON = 0x00005056;
-+ gpio->GPBUP = 0x000007FF;
-+
-+ gpio->GPCCON = 0xAAAA12A8;
-+ gpio->GPCUP = 0x0000FFFF;
-+
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+
-+ gpio->GPECON = 0xAAAAAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+
-+ gpio->GPFCON = 0x00002AA9;
-+ gpio->GPFUP = 0x000000FF;
-+
-+ gpio->GPGCON = 0xA846F0C0;
-+ gpio->GPGUP = 0x0000AFEF;
-+
-+ gpio->GPHCON = 0x0008FAAA;
-+ gpio->GPHUP = 0x000007FF;
-+
-+ /* arch number of SMDK2410-Board */
-+ gd->bd->bi_arch_number = MACH_TYPE_GTA01;
-+
-+ /* adress of boot parameters */
-+ gd->bd->bi_boot_params = 0x30000100;
-+
-+ icache_enable();
-+ dcache_enable();
-+
-+ return 0;
-+}
-+
-+int board_late_init(void)
-+{
-+ const char mmc_power = 0x8f;
-+ /* enable D3REG 3.3V (SC/MMC power) */
-+ i2c_write(0x08, 0x25, 1, &mmc_power, 1);
-+ return 0;
-+}
-+
-+int dram_init (void)
-+{
-+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-+
-+ return 0;
-+}
-+
-+u_int32_t get_board_rev(void)
-+{
-+ return 0x00000130;
-+}
-Index: git/board/gta01/lowlevel_init.S
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/gta01/lowlevel_init.S 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,171 @@
-+/*
-+ * Memory Setup stuff - taken from blob memsetup.S
-+ *
-+ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
-+ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
-+ *
-+ * Modified for the FIC GTA01 by Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+
-+#include <config.h>
-+#include <version.h>
-+
-+
-+/* some parameters for the board */
-+
-+/*
-+ *
-+ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
-+ *
-+ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
-+ *
-+ */
-+
-+#define BWSCON 0x48000000
-+
-+/* BWSCON */
-+#define DW8 (0x0)
-+#define DW16 (0x1)
-+#define DW32 (0x2)
-+#define WAIT (0x1<<2)
-+#define UBLB (0x1<<3)
-+
-+#define B1_BWSCON (DW32)
-+#define B2_BWSCON (DW16)
-+#define B3_BWSCON (DW16 + WAIT + UBLB)
-+#define B4_BWSCON (DW16)
-+#define B5_BWSCON (DW16)
-+#define B6_BWSCON (DW32)
-+#define B7_BWSCON (DW32)
-+
-+/* BANK0CON */
-+#define B0_Tacs 0x0 /* 0clk */
-+#define B0_Tcos 0x0 /* 0clk */
-+#define B0_Tacc 0x7 /* 14clk */
-+#define B0_Tcoh 0x0 /* 0clk */
-+#define B0_Tah 0x0 /* 0clk */
-+#define B0_Tacp 0x0
-+#define B0_PMC 0x0 /* normal */
-+
-+/* BANK1CON */
-+#define B1_Tacs 0x0 /* 0clk */
-+#define B1_Tcos 0x0 /* 0clk */
-+#define B1_Tacc 0x7 /* 14clk */
-+#define B1_Tcoh 0x0 /* 0clk */
-+#define B1_Tah 0x0 /* 0clk */
-+#define B1_Tacp 0x0
-+#define B1_PMC 0x0
-+
-+#define B2_Tacs 0x0
-+#define B2_Tcos 0x0
-+#define B2_Tacc 0x7
-+#define B2_Tcoh 0x0
-+#define B2_Tah 0x0
-+#define B2_Tacp 0x0
-+#define B2_PMC 0x0
-+
-+#define B3_Tacs 0x0 /* 0clk */
-+#define B3_Tcos 0x3 /* 4clk */
-+#define B3_Tacc 0x7 /* 14clk */
-+#define B3_Tcoh 0x1 /* 1clk */
-+#define B3_Tah 0x0 /* 0clk */
-+#define B3_Tacp 0x3 /* 6clk */
-+#define B3_PMC 0x0 /* normal */
-+
-+#define B4_Tacs 0x0 /* 0clk */
-+#define B4_Tcos 0x0 /* 0clk */
-+#define B4_Tacc 0x7 /* 14clk */
-+#define B4_Tcoh 0x0 /* 0clk */
-+#define B4_Tah 0x0 /* 0clk */
-+#define B4_Tacp 0x0
-+#define B4_PMC 0x0 /* normal */
-+
-+#define B5_Tacs 0x0 /* 0clk */
-+#define B5_Tcos 0x0 /* 0clk */
-+#define B5_Tacc 0x7 /* 14clk */
-+#define B5_Tcoh 0x0 /* 0clk */
-+#define B5_Tah 0x0 /* 0clk */
-+#define B5_Tacp 0x0
-+#define B5_PMC 0x0 /* normal */
-+
-+#define B6_MT 0x3 /* SDRAM */
-+#define B6_Trcd 0x1
-+#define B6_SCAN 0x1 /* 9bit */
-+
-+#define B7_MT 0x3 /* SDRAM */
-+#define B7_Trcd 0x1 /* 3clk */
-+#define B7_SCAN 0x1 /* 9bit */
-+
-+/* REFRESH parameter */
-+#define REFEN 0x1 /* Refresh enable */
-+#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-+#define Trp 0x1 /* 3clk */
-+#define Trc 0x3 /* 7clk */
-+#define Tchr 0x2 /* 3clk */
-+//#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
-+#define REFCNT 997 /* period=17.5us, HCLK=60Mhz, (2048+1-15.6*60) */
-+/**************************************/
-+
-+_TEXT_BASE:
-+ .word TEXT_BASE
-+
-+.globl lowlevel_init
-+lowlevel_init:
-+ /* memory control configuration */
-+ /* make r0 relative the current location so that it */
-+ /* reads SMRDATA out of FLASH rather than memory ! */
-+ ldr r0, =SMRDATA
-+ ldr r1, _TEXT_BASE
-+ sub r0, r0, r1
-+ ldr r1, =BWSCON /* Bus Width Status Controller */
-+ add r2, r0, #13*4
-+0:
-+ ldr r3, [r0], #4
-+ str r3, [r1], #4
-+ cmp r2, r0
-+ bne 0b
-+
-+ /* setup asynchronous bus mode */
-+ mrc p15, 0, r1 ,c1 ,c0, 0
-+ orr r1, r1, #0xc0000000
-+ mcr p15, 0, r1, c1, c0, 0
-+
-+ /* everything is fine now */
-+ mov pc, lr
-+
-+ .ltorg
-+/* the literal pools origin */
-+
-+SMRDATA:
-+ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
-+ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
-+ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
-+ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
-+ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
-+ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
-+ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
-+ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
-+ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
-+ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
-+ .word 0xb2
-+ .word 0x30
-+ .word 0x30
-Index: git/board/gta01/u-boot.lds
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/gta01/u-boot.lds 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,57 @@
-+/*
-+ * (C) Copyright 2002
-+ * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-+/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-+OUTPUT_ARCH(arm)
-+ENTRY(_start)
-+SECTIONS
-+{
-+ . = 0x00000000;
-+
-+ . = ALIGN(4);
-+ .text :
-+ {
-+ cpu/arm920t/start.o (.text)
-+ *(.text)
-+ }
-+
-+ . = ALIGN(4);
-+ .rodata : { *(.rodata) }
-+
-+ . = ALIGN(4);
-+ .data : { *(.data) }
-+
-+ . = ALIGN(4);
-+ .got : { *(.got) }
-+
-+ . = .;
-+ __u_boot_cmd_start = .;
-+ .u_boot_cmd : { *(.u_boot_cmd) }
-+ __u_boot_cmd_end = .;
-+
-+ . = ALIGN(4);
-+ __bss_start = .;
-+ .bss : { *(.bss) }
-+ _end = .;
-+}
-Index: git/board/qt2410/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/qt2410/Makefile 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,47 @@
-+#
-+# (C) Copyright 2000, 2001, 2002
-+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-+#
-+# See file CREDITS for list of people who contributed to this
-+# project.
-+#
-+# This program is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU General Public License as
-+# published by the Free Software Foundation; either version 2 of
-+# the License, or (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+# MA 02111-1307 USA
-+#
-+
-+include $(TOPDIR)/config.mk
-+
-+LIB = lib$(BOARD).a
-+
-+OBJS := qt2410.o flash.o
-+SOBJS := lowlevel_init.o
-+
-+$(LIB): $(OBJS) $(SOBJS)
-+ $(AR) crv $@ $(OBJS) $(SOBJS)
-+
-+clean:
-+ rm -f $(SOBJS) $(OBJS)
-+
-+distclean: clean
-+ rm -f $(LIB) core *.bak .depend
-+
-+#########################################################################
-+
-+.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
-+ $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
-+
-+-include .depend
-+
-+#########################################################################
-Index: git/board/qt2410/config.mk
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/qt2410/config.mk 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,25 @@
-+#
-+# (C) Copyright 2002
-+# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+#
-+# SAMSUNG SMDK2410 board with S3C2410X (ARM920T) cpu
-+#
-+# see http://www.samsung.com/ for more information on SAMSUNG
-+#
-+
-+#
-+# SMDK2410 has 1 bank of 64 MB DRAM
-+#
-+# 3000'0000 to 3400'0000
-+#
-+# Linux-Kernel is expected to be at 3000'8000, entry 3000'8000
-+# optionally with a ramdisk at 3080'0000
-+#
-+# we load ourself to 33F8'0000
-+#
-+# download area is 3300'0000
-+#
-+
-+
-+TEXT_BASE = 0x33F80000
-Index: git/board/qt2410/flash.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/qt2410/flash.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,435 @@
-+/*
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Alex Zuepke <azu@sysgo.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+
-+ulong myflush (void);
-+
-+
-+#define FLASH_BANK_SIZE PHYS_FLASH_SIZE
-+#define MAIN_SECT_SIZE 0x10000 /* 64 KB */
-+
-+flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
-+
-+
-+#define CMD_READ_ARRAY 0x000000F0
-+#define CMD_UNLOCK1 0x000000AA
-+#define CMD_UNLOCK2 0x00000055
-+#define CMD_ERASE_SETUP 0x00000080
-+#define CMD_ERASE_CONFIRM 0x00000030
-+#define CMD_PROGRAM 0x000000A0
-+#define CMD_UNLOCK_BYPASS 0x00000020
-+
-+#define MEM_FLASH_ADDR1 (*(volatile u16 *)(CFG_FLASH_BASE + (0x00000555 << 1)))
-+#define MEM_FLASH_ADDR2 (*(volatile u16 *)(CFG_FLASH_BASE + (0x000002AA << 1)))
-+
-+#define BIT_ERASE_DONE 0x00000080
-+#define BIT_RDY_MASK 0x00000080
-+#define BIT_PROGRAM_ERROR 0x00000020
-+#define BIT_TIMEOUT 0x80000000 /* our flag */
-+
-+#define READY 1
-+#define ERR 2
-+#define TMO 4
-+
-+/*-----------------------------------------------------------------------
-+ */
-+
-+ulong flash_init (void)
-+{
-+ int i, j;
-+ ulong size = 0;
-+
-+ for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
-+ ulong flashbase = 0;
-+
-+ flash_info[i].flash_id =
-+#if defined(CONFIG_AMD_LV400)
-+ (AMD_MANUFACT & FLASH_VENDMASK) |
-+ (AMD_ID_LV400B & FLASH_TYPEMASK);
-+#elif defined(CONFIG_AMD_LV800)
-+ (AMD_MANUFACT & FLASH_VENDMASK) |
-+ (AMD_ID_LV800B & FLASH_TYPEMASK);
-+#else
-+#error "Unknown flash configured"
-+#endif
-+ flash_info[i].size = FLASH_BANK_SIZE;
-+ flash_info[i].sector_count = CFG_MAX_FLASH_SECT;
-+ memset (flash_info[i].protect, 0, CFG_MAX_FLASH_SECT);
-+ if (i == 0)
-+ flashbase = PHYS_FLASH_1;
-+ else
-+ panic ("configured too many flash banks!\n");
-+ for (j = 0; j < flash_info[i].sector_count; j++) {
-+ if (j <= 3) {
-+ /* 1st one is 16 KB */
-+ if (j == 0) {
-+ flash_info[i].start[j] =
-+ flashbase + 0;
-+ }
-+
-+ /* 2nd and 3rd are both 8 KB */
-+ if ((j == 1) || (j == 2)) {
-+ flash_info[i].start[j] =
-+ flashbase + 0x4000 + (j -
-+ 1) *
-+ 0x2000;
-+ }
-+
-+ /* 4th 32 KB */
-+ if (j == 3) {
-+ flash_info[i].start[j] =
-+ flashbase + 0x8000;
-+ }
-+ } else {
-+ flash_info[i].start[j] =
-+ flashbase + (j - 3) * MAIN_SECT_SIZE;
-+ }
-+ }
-+ size += flash_info[i].size;
-+ }
-+
-+ flash_protect (FLAG_PROTECT_SET,
-+ CFG_FLASH_BASE,
-+ CFG_FLASH_BASE + monitor_flash_len - 1,
-+ &flash_info[0]);
-+
-+#if 0
-+ flash_protect (FLAG_PROTECT_SET,
-+ CFG_ENV_ADDR,
-+ CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
-+#endif
-+
-+ return size;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ */
-+void flash_print_info (flash_info_t * info)
-+{
-+ int i;
-+
-+ switch (info->flash_id & FLASH_VENDMASK) {
-+ case (AMD_MANUFACT & FLASH_VENDMASK):
-+ printf ("AMD: ");
-+ break;
-+ default:
-+ printf ("Unknown Vendor ");
-+ break;
-+ }
-+
-+ switch (info->flash_id & FLASH_TYPEMASK) {
-+ case (AMD_ID_LV400B & FLASH_TYPEMASK):
-+ printf ("1x Amd29LV400BB (4Mbit)\n");
-+ break;
-+ case (AMD_ID_LV800B & FLASH_TYPEMASK):
-+ printf ("1x Amd29LV800BB (8Mbit)\n");
-+ break;
-+ default:
-+ printf ("Unknown Chip Type\n");
-+ goto Done;
-+ break;
-+ }
-+
-+ printf (" Size: %ld MB in %d Sectors\n",
-+ info->size >> 20, info->sector_count);
-+
-+ printf (" Sector Start Addresses:");
-+ for (i = 0; i < info->sector_count; i++) {
-+ if ((i % 5) == 0) {
-+ printf ("\n ");
-+ }
-+ printf (" %08lX%s", info->start[i],
-+ info->protect[i] ? " (RO)" : " ");
-+ }
-+ printf ("\n");
-+
-+ Done:;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ */
-+
-+int flash_erase (flash_info_t * info, int s_first, int s_last)
-+{
-+ ushort result;
-+ int iflag, cflag, prot, sect;
-+ int rc = ERR_OK;
-+ int chip;
-+
-+ /* first look for protection bits */
-+
-+ if (info->flash_id == FLASH_UNKNOWN)
-+ return ERR_UNKNOWN_FLASH_TYPE;
-+
-+ if ((s_first < 0) || (s_first > s_last)) {
-+ return ERR_INVAL;
-+ }
-+
-+ if ((info->flash_id & FLASH_VENDMASK) !=
-+ (AMD_MANUFACT & FLASH_VENDMASK)) {
-+ return ERR_UNKNOWN_FLASH_VENDOR;
-+ }
-+
-+ prot = 0;
-+ for (sect = s_first; sect <= s_last; ++sect) {
-+ if (info->protect[sect]) {
-+ prot++;
-+ }
-+ }
-+ if (prot)
-+ return ERR_PROTECTED;
-+
-+ /*
-+ * Disable interrupts which might cause a timeout
-+ * here. Remember that our exception vectors are
-+ * at address 0 in the flash, and we don't want a
-+ * (ticker) exception to happen while the flash
-+ * chip is in programming mode.
-+ */
-+ cflag = icache_status ();
-+ icache_disable ();
-+ iflag = disable_interrupts ();
-+
-+ /* Start erase on unprotected sectors */
-+ for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
-+ printf ("Erasing sector %2d ... ", sect);
-+
-+ /* arm simple, non interrupt dependent timer */
-+ reset_timer_masked ();
-+
-+ if (info->protect[sect] == 0) { /* not protected */
-+ vu_short *addr = (vu_short *) (info->start[sect]);
-+
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-+ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-+ MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
-+
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-+ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-+ *addr = CMD_ERASE_CONFIRM;
-+
-+ /* wait until flash is ready */
-+ chip = 0;
-+
-+ do {
-+ result = *addr;
-+
-+ /* check timeout */
-+ if (get_timer_masked () >
-+ CFG_FLASH_ERASE_TOUT) {
-+ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-+ chip = TMO;
-+ break;
-+ }
-+
-+ if (!chip
-+ && (result & 0xFFFF) & BIT_ERASE_DONE)
-+ chip = READY;
-+
-+ if (!chip
-+ && (result & 0xFFFF) & BIT_PROGRAM_ERROR)
-+ chip = ERR;
-+
-+ } while (!chip);
-+
-+ MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
-+
-+ if (chip == ERR) {
-+ rc = ERR_PROG_ERROR;
-+ goto outahere;
-+ }
-+ if (chip == TMO) {
-+ rc = ERR_TIMOUT;
-+ goto outahere;
-+ }
-+
-+ printf ("ok.\n");
-+ } else { /* it was protected */
-+
-+ printf ("protected!\n");
-+ }
-+ }
-+
-+ if (ctrlc ())
-+ printf ("User Interrupt!\n");
-+
-+ outahere:
-+ /* allow flash to settle - wait 10 ms */
-+ udelay_masked (10000);
-+
-+ if (iflag)
-+ enable_interrupts ();
-+
-+ if (cflag)
-+ icache_enable ();
-+
-+ return rc;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ * Copy memory to flash
-+ */
-+
-+volatile static int write_hword (flash_info_t * info, ulong dest, ushort data)
-+{
-+ vu_short *addr = (vu_short *) dest;
-+ ushort result;
-+ int rc = ERR_OK;
-+ int cflag, iflag;
-+ int chip;
-+
-+ /*
-+ * Check if Flash is (sufficiently) erased
-+ */
-+ result = *addr;
-+ if ((result & data) != data)
-+ return ERR_NOT_ERASED;
-+
-+
-+ /*
-+ * Disable interrupts which might cause a timeout
-+ * here. Remember that our exception vectors are
-+ * at address 0 in the flash, and we don't want a
-+ * (ticker) exception to happen while the flash
-+ * chip is in programming mode.
-+ */
-+ cflag = icache_status ();
-+ icache_disable ();
-+ iflag = disable_interrupts ();
-+
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK1;
-+ MEM_FLASH_ADDR2 = CMD_UNLOCK2;
-+ MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS;
-+ *addr = CMD_PROGRAM;
-+ *addr = data;
-+
-+ /* arm simple, non interrupt dependent timer */
-+ reset_timer_masked ();
-+
-+ /* wait until flash is ready */
-+ chip = 0;
-+ do {
-+ result = *addr;
-+
-+ /* check timeout */
-+ if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
-+ chip = ERR | TMO;
-+ break;
-+ }
-+ if (!chip && ((result & 0x80) == (data & 0x80)))
-+ chip = READY;
-+
-+ if (!chip && ((result & 0xFFFF) & BIT_PROGRAM_ERROR)) {
-+ result = *addr;
-+
-+ if ((result & 0x80) == (data & 0x80))
-+ chip = READY;
-+ else
-+ chip = ERR;
-+ }
-+
-+ } while (!chip);
-+
-+ *addr = CMD_READ_ARRAY;
-+
-+ if (chip == ERR || *addr != data)
-+ rc = ERR_PROG_ERROR;
-+
-+ if (iflag)
-+ enable_interrupts ();
-+
-+ if (cflag)
-+ icache_enable ();
-+
-+ return rc;
-+}
-+
-+/*-----------------------------------------------------------------------
-+ * Copy memory to flash.
-+ */
-+
-+int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-+{
-+ ulong cp, wp;
-+ int l;
-+ int i, rc;
-+ ushort data;
-+
-+ wp = (addr & ~1); /* get lower word aligned address */
-+
-+ /*
-+ * handle unaligned start bytes
-+ */
-+ if ((l = addr - wp) != 0) {
-+ data = 0;
-+ for (i = 0, cp = wp; i < l; ++i, ++cp) {
-+ data = (data >> 8) | (*(uchar *) cp << 8);
-+ }
-+ for (; i < 2 && cnt > 0; ++i) {
-+ data = (data >> 8) | (*src++ << 8);
-+ --cnt;
-+ ++cp;
-+ }
-+ for (; cnt == 0 && i < 2; ++i, ++cp) {
-+ data = (data >> 8) | (*(uchar *) cp << 8);
-+ }
-+
-+ if ((rc = write_hword (info, wp, data)) != 0) {
-+ return (rc);
-+ }
-+ wp += 2;
-+ }
-+
-+ /*
-+ * handle word aligned part
-+ */
-+ while (cnt >= 2) {
-+ data = *((vu_short *) src);
-+ if ((rc = write_hword (info, wp, data)) != 0) {
-+ return (rc);
-+ }
-+ src += 2;
-+ wp += 2;
-+ cnt -= 2;
-+ }
-+
-+ if (cnt == 0) {
-+ return ERR_OK;
-+ }
-+
-+ /*
-+ * handle unaligned tail bytes
-+ */
-+ data = 0;
-+ for (i = 0, cp = wp; i < 2 && cnt > 0; ++i, ++cp) {
-+ data = (data >> 8) | (*src++ << 8);
-+ --cnt;
-+ }
-+ for (; i < 2; ++i, ++cp) {
-+ data = (data >> 8) | (*(uchar *) cp << 8);
-+ }
-+
-+ return write_hword (info, wp, data);
-+}
-Index: git/board/qt2410/lowlevel_init.S
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/qt2410/lowlevel_init.S 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,173 @@
-+/*
-+ * Memory Setup stuff - taken from blob memsetup.S
-+ *
-+ * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
-+ * Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
-+ *
-+ * Modified for the Samsung SMDK2410 by
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+
-+#include <config.h>
-+#include <version.h>
-+
-+
-+/* some parameters for the board */
-+
-+/*
-+ *
-+ * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S
-+ *
-+ * Copyright (C) 2002 Samsung Electronics SW.LEE <hitchcar@sec.samsung.com>
-+ *
-+ */
-+
-+#define BWSCON 0x48000000
-+
-+/* BWSCON */
-+#define DW8 (0x0)
-+#define DW16 (0x1)
-+#define DW32 (0x2)
-+#define WAIT (0x1<<2)
-+#define UBLB (0x1<<3)
-+
-+#define B1_BWSCON (DW32)
-+#define B2_BWSCON (DW16)
-+#define B3_BWSCON (DW16 + WAIT + UBLB)
-+#define B4_BWSCON (DW16)
-+#define B5_BWSCON (DW16)
-+#define B6_BWSCON (DW32)
-+#define B7_BWSCON (DW32)
-+
-+/* BANK0CON */
-+#define B0_Tacs 0x0 /* 0clk */
-+#define B0_Tcos 0x0 /* 0clk */
-+#define B0_Tacc 0x7 /* 14clk */
-+#define B0_Tcoh 0x0 /* 0clk */
-+#define B0_Tah 0x0 /* 0clk */
-+#define B0_Tacp 0x0
-+#define B0_PMC 0x0 /* normal */
-+
-+/* BANK1CON */
-+#define B1_Tacs 0x0 /* 0clk */
-+#define B1_Tcos 0x0 /* 0clk */
-+#define B1_Tacc 0x7 /* 14clk */
-+#define B1_Tcoh 0x0 /* 0clk */
-+#define B1_Tah 0x0 /* 0clk */
-+#define B1_Tacp 0x0
-+#define B1_PMC 0x0
-+
-+#define B2_Tacs 0x0
-+#define B2_Tcos 0x0
-+#define B2_Tacc 0x7
-+#define B2_Tcoh 0x0
-+#define B2_Tah 0x0
-+#define B2_Tacp 0x0
-+#define B2_PMC 0x0
-+
-+#define B3_Tacs 0x0 /* 0clk */
-+#define B3_Tcos 0x3 /* 4clk */
-+#define B3_Tacc 0x7 /* 14clk */
-+#define B3_Tcoh 0x1 /* 1clk */
-+#define B3_Tah 0x0 /* 0clk */
-+#define B3_Tacp 0x3 /* 6clk */
-+#define B3_PMC 0x0 /* normal */
-+
-+#define B4_Tacs 0x0 /* 0clk */
-+#define B4_Tcos 0x0 /* 0clk */
-+#define B4_Tacc 0x7 /* 14clk */
-+#define B4_Tcoh 0x0 /* 0clk */
-+#define B4_Tah 0x0 /* 0clk */
-+#define B4_Tacp 0x0
-+#define B4_PMC 0x0 /* normal */
-+
-+#define B5_Tacs 0x0 /* 0clk */
-+#define B5_Tcos 0x0 /* 0clk */
-+#define B5_Tacc 0x7 /* 14clk */
-+#define B5_Tcoh 0x0 /* 0clk */
-+#define B5_Tah 0x0 /* 0clk */
-+#define B5_Tacp 0x0
-+#define B5_PMC 0x0 /* normal */
-+
-+#define B6_MT 0x3 /* SDRAM */
-+#define B6_Trcd 0x1
-+#define B6_SCAN 0x1 /* 9bit */
-+
-+#define B7_MT 0x3 /* SDRAM */
-+#define B7_Trcd 0x1 /* 3clk */
-+#define B7_SCAN 0x1 /* 9bit */
-+
-+/* REFRESH parameter */
-+#define REFEN 0x1 /* Refresh enable */
-+#define TREFMD 0x0 /* CBR(CAS before RAS)/Auto refresh */
-+#define Trp 0x1 /* 3clk */
-+#define Trc 0x3 /* 7clk */
-+#define Tchr 0x2 /* 3clk */
-+//#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
-+#define REFCNT 997 /* period=17.5us, HCLK=60Mhz, (2048+1-15.6*60) */
-+/**************************************/
-+
-+_TEXT_BASE:
-+ .word TEXT_BASE
-+
-+.globl lowlevel_init
-+lowlevel_init:
-+ /* memory control configuration */
-+ /* make r0 relative the current location so that it */
-+ /* reads SMRDATA out of FLASH rather than memory ! */
-+ ldr r0, =SMRDATA
-+ ldr r1, _TEXT_BASE
-+ sub r0, r0, r1
-+ ldr r1, =BWSCON /* Bus Width Status Controller */
-+ add r2, r0, #13*4
-+0:
-+ ldr r3, [r0], #4
-+ str r3, [r1], #4
-+ cmp r2, r0
-+ bne 0b
-+
-+ /* setup asynchronous bus mode */
-+ mrc p15, 0, r1 ,c1 ,c0, 0
-+ orr r1, r1, #0xc0000000
-+ mcr p15, 0, r1, c1, c0, 0
-+
-+ /* everything is fine now */
-+ mov pc, lr
-+
-+ .ltorg
-+/* the literal pools origin */
-+
-+SMRDATA:
-+ .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
-+ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
-+ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
-+ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
-+ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
-+ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
-+ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
-+ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
-+ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
-+ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
-+ .word 0xb2
-+ .word 0x30
-+ .word 0x30
-Index: git/board/qt2410/qt2410.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/qt2410/qt2410.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,127 @@
-+/*
-+ * (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * based on existing S3C2410 startup code in u-boot:
-+ *
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ *
-+ * (C) Copyright 2002
-+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+#include <s3c2410.h>
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#if 1
-+//#define M_MDIV 0xA1 /* Fout = 202.8MHz */
-+//#define M_PDIV 0x3
-+//#define M_SDIV 0x1
-+#define M_MDIV 0x90 /* Fout = 202.8MHz */
-+#define M_PDIV 0x7
-+#define M_SDIV 0x0
-+#else
-+#define M_MDIV 0x5c /* Fout = 150.0MHz */
-+#define M_PDIV 0x4
-+#define M_SDIV 0x0
-+#endif
-+
-+#if 1
-+#define U_M_MDIV 0x78
-+#define U_M_PDIV 0x2
-+#define U_M_SDIV 0x3
-+#else
-+#define U_M_MDIV 0x48
-+#define U_M_PDIV 0x3
-+#define U_M_SDIV 0x2
-+#endif
-+
-+static inline void delay (unsigned long loops)
-+{
-+ __asm__ volatile ("1:\n"
-+ "subs %0, %1, #1\n"
-+ "bne 1b":"=r" (loops):"0" (loops));
-+}
-+
-+/*
-+ * Miscellaneous platform dependent initialisations
-+ */
-+
-+int board_init (void)
-+{
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+ S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
-+
-+ /* to reduce PLL lock time, adjust the LOCKTIME register */
-+ clk_power->LOCKTIME = 0xFFFFFF;
-+
-+ /* configure MPLL */
-+ clk_power->MPLLCON = ((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (4000);
-+
-+ /* configure UPLL */
-+ clk_power->UPLLCON = ((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV);
-+
-+ /* some delay between MPLL and UPLL */
-+ delay (8000);
-+
-+ /* set up the I/O ports */
-+ gpio->GPACON = 0x007FFFFF;
-+ gpio->GPBCON = 0x00044555;
-+ gpio->GPBUP = 0x000007FF;
-+ gpio->GPCCON = 0xAAAAAAAA;
-+ gpio->GPCUP = 0x0000FFFF;
-+ gpio->GPDCON = 0xAAAAAAAA;
-+ gpio->GPDUP = 0x0000FFFF;
-+ gpio->GPECON = 0xAAAAAAAA;
-+ gpio->GPEUP = 0x0000FFFF;
-+ gpio->GPFCON = 0x000055AA;
-+ gpio->GPFUP = 0x000000FF;
-+ gpio->GPGCON = 0xFF95FFBA;
-+ //gpio->GPGUP = 0x0000FFFF;
-+ gpio->GPGUP = 0x0000AFEF;
-+ gpio->GPHCON = 0x0028FAAA;
-+ gpio->GPHUP = 0x000007FF;
-+
-+ /* arch number of SMDK2410-Board */
-+ gd->bd->bi_arch_number = MACH_TYPE_QT2410;
-+
-+ /* adress of boot parameters */
-+ gd->bd->bi_boot_params = 0x30000100;
-+
-+ icache_enable();
-+ dcache_enable();
-+
-+ return 0;
-+}
-+
-+int dram_init (void)
-+{
-+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-+
-+ return 0;
-+}
-Index: git/board/qt2410/u-boot.lds
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/board/qt2410/u-boot.lds 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,57 @@
-+/*
-+ * (C) Copyright 2002
-+ * Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-+/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
-+OUTPUT_ARCH(arm)
-+ENTRY(_start)
-+SECTIONS
-+{
-+ . = 0x00000000;
-+
-+ . = ALIGN(4);
-+ .text :
-+ {
-+ cpu/arm920t/start.o (.text)
-+ *(.text)
-+ }
-+
-+ . = ALIGN(4);
-+ .rodata : { *(.rodata) }
-+
-+ . = ALIGN(4);
-+ .data : { *(.data) }
-+
-+ . = ALIGN(4);
-+ .got : { *(.got) }
-+
-+ . = .;
-+ __u_boot_cmd_start = .;
-+ .u_boot_cmd : { *(.u_boot_cmd) }
-+ __u_boot_cmd_end = .;
-+
-+ . = ALIGN(4);
-+ __bss_start = .;
-+ .bss : { *(.bss) }
-+ _end = .;
-+}
-Index: git/common/Makefile
-===================================================================
---- git.orig/common/Makefile 2007-01-04 12:21:15.000000000 +0100
-+++ git/common/Makefile 2007-01-04 12:21:18.000000000 +0100
-@@ -28,7 +28,7 @@
- AOBJS =
-
- COBJS = main.o ACEX1K.o altera.o bedbug.o circbuf.o \
-- cmd_ace.o cmd_autoscript.o \
-+ cmd_ace.o cmd_arm920.o cmd_autoscript.o \
- cmd_bdinfo.o cmd_bedbug.o cmd_bmp.o cmd_boot.o cmd_bootm.o \
- cmd_cache.o cmd_console.o \
- cmd_date.o cmd_dcr.o cmd_diag.o cmd_display.o cmd_doc.o cmd_dtt.o \
-Index: git/common/cmd_arm920.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/common/cmd_arm920.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,64 @@
-+/*
-+ * (C) Copyright 2003
-+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+/*
-+ * Boot support
-+ */
-+#include <common.h>
-+#include <command.h>
-+#include <net.h> /* for print_IPaddr */
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_BDI)
-+
-+extern unsigned long read_p15_c1(void);
-+extern void write_p15_c1(unsigned long);
-+
-+int do_arm920 ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-+{
-+ int i;
-+
-+ if (strcmp(argv[1], "cp15c1")) {
-+ printf("Usage:\n%s\n", cmdtp->usage);
-+ return 1;
-+ }
-+
-+ if (!strcmp(argv[2], "write")) {
-+ ulong val = simple_strtoul(argv[3], NULL, 16);
-+ printf("setting cp15c1 to 0x%08x\n", val);
-+ write_p15_c1(val);
-+ } else if (!strcmp(argv[2], "read"))
-+ printf("cp15c1 = 0x%08x\n", read_p15_c1());
-+
-+ return 0;
-+}
-+
-+/* -------------------------------------------------------------------- */
-+
-+U_BOOT_CMD(
-+ arm920, 4, 1, do_arm920,
-+ "arm920_cp15 - print cp15",
-+ NULL
-+);
-+#endif /* CFG_CMD_BDI */
-Index: git/cpu/arm920t/cpu.c
-===================================================================
---- git.orig/cpu/arm920t/cpu.c 2007-01-04 12:21:15.000000000 +0100
-+++ git/cpu/arm920t/cpu.c 2007-01-04 12:21:18.000000000 +0100
-@@ -38,7 +38,7 @@
- #endif
-
- /* read co-processor 15, register #1 (control register) */
--static unsigned long read_p15_c1 (void)
-+unsigned long read_p15_c1 (void)
- {
- unsigned long value;
-
-@@ -55,7 +55,7 @@
- }
-
- /* write to co-processor 15, register #1 (control register) */
--static void write_p15_c1 (unsigned long value)
-+void write_p15_c1 (unsigned long value)
- {
- #ifdef MMU_DEBUG
- printf ("write %08lx to p15/c1\n", value);
-Index: git/cpu/arm920t/s3c24x0/Makefile
-===================================================================
---- git.orig/cpu/arm920t/s3c24x0/Makefile 2007-01-04 12:21:15.000000000 +0100
-+++ git/cpu/arm920t/s3c24x0/Makefile 2007-01-04 12:21:18.000000000 +0100
-@@ -26,7 +26,7 @@
- LIB = $(obj)lib$(SOC).a
-
- COBJS = i2c.o interrupts.o serial.o speed.o \
-- usb_ohci.o
-+ usb_ohci.o mmc.o nand_read.o nand.o
-
- SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
- OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
-Index: git/cpu/arm920t/s3c24x0/mmc.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/cpu/arm920t/s3c24x0/mmc.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,568 @@
-+/*
-+ * u-boot S3C2410 MMC/SD card driver
-+ * (C) Copyright 2006 by Harald Welte <laforge@gnumonks.org>
-+ *
-+ * based on u-boot pxa MMC driver and linux/drivers/mmc/s3c2410mci.c
-+ * (C) 2005-2005 Thomas Kleffel
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <config.h>
-+#include <common.h>
-+#include <mmc.h>
-+#include <asm/errno.h>
-+#include <asm/io.h>
-+#include <s3c2410.h>
-+#include <part.h>
-+
-+#ifdef CONFIG_MMC
-+
-+#define CONFIG_MMC_WIDE
-+
-+//#define MMC_DEBUG
-+
-+#ifdef MMC_DEBUG
-+#ifdef debug
-+#undef debug
-+#endif
-+#define debug printf
-+#endif
-+
-+static S3C2410_SDI *sdi;
-+
-+extern int
-+fat_register_device(block_dev_desc_t *dev_desc, int part_no);
-+
-+static block_dev_desc_t mmc_dev;
-+
-+block_dev_desc_t * mmc_get_dev(int dev)
-+{
-+ return ((block_dev_desc_t *)&mmc_dev);
-+}
-+
-+/*
-+ * FIXME needs to read cid and csd info to determine block size
-+ * and other parameters
-+ */
-+static uchar mmc_buf[MMC_BLOCK_SIZE];
-+static mmc_csd_t mmc_csd;
-+static int mmc_ready = 0;
-+static int wide = 0;
-+
-+
-+#define CMD_F_RESP 0x01
-+#define CMD_F_RESP_LONG 0x02
-+
-+static u_int32_t *
-+/****************************************************/
-+mmc_cmd(ushort cmd, ulong arg, ushort flags)
-+/****************************************************/
-+{
-+ static u_int32_t resp[5];
-+ ulong status;
-+ int i;
-+
-+ u_int32_t ccon, csta;
-+ u_int32_t csta_rdy_bit = S3C2410_SDICMDSTAT_CMDSENT;
-+
-+ memset(resp, 0, sizeof(resp));
-+
-+ debug("mmc_cmd CMD%d arg=0x%08x flags=%x\n", cmd, arg, flags);
-+
-+ sdi->SDICSTA = 0xffffffff;
-+ sdi->SDIDSTA = 0xffffffff;
-+ sdi->SDIFSTA = 0xffffffff;
-+
-+ sdi->SDICARG = arg;
-+
-+ ccon = cmd & S3C2410_SDICMDCON_INDEX;
-+ ccon |= S3C2410_SDICMDCON_SENDERHOST|S3C2410_SDICMDCON_CMDSTART;
-+
-+ if (flags & CMD_F_RESP) {
-+ ccon |= S3C2410_SDICMDCON_WAITRSP;
-+ csta_rdy_bit = S3C2410_SDICMDSTAT_RSPFIN; /* 1 << 9 */
-+ }
-+
-+ if (flags & CMD_F_RESP_LONG)
-+ ccon |= S3C2410_SDICMDCON_LONGRSP;
-+
-+ sdi->SDICCON = ccon;
-+
-+ while (1) {
-+ csta = sdi->SDICSTA;
-+ if (csta & csta_rdy_bit)
-+ break;
-+ if (csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
-+ printf("===============> MMC CMD Timeout\n");
-+ sdi->SDICSTA |= S3C2410_SDICMDSTAT_CMDTIMEOUT;
-+ break;
-+ }
-+ }
-+
-+ debug("final MMC CMD status 0x%x\n", csta);
-+
-+ sdi->SDICSTA |= csta_rdy_bit;
-+
-+ if (flags & CMD_F_RESP) {
-+ resp[0] = sdi->SDIRSP0;
-+ resp[1] = sdi->SDIRSP1;
-+ resp[2] = sdi->SDIRSP2;
-+ resp[3] = sdi->SDIRSP3;
-+ }
-+
-+#if 0
-+ for (i=0; i<4; i ++) {
-+ debug("MMC resp[%d] = 0x%08x\n", i, resp[i]);
-+ }
-+#endif
-+
-+ return resp;
-+}
-+
-+#define FIFO_FILL(host) ((host->SDIFSTA & S3C2410_SDIFSTA_COUNTMASK) >> 2)
-+
-+static int
-+/****************************************************/
-+mmc_block_read(uchar *dst, ulong src, ulong len)
-+/****************************************************/
-+{
-+ u_int32_t dcon, fifo;
-+ u_int32_t *dst_u32 = (u_int32_t *)dst;
-+ u_int32_t *resp;
-+
-+ if (len == 0) {
-+ return 0;
-+ }
-+
-+ debug("mmc_block_rd dst %lx src %lx len %d\n", (ulong)dst, src, len);
-+
-+ /* set block len */
-+ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, len, CMD_F_RESP);
-+ sdi->SDIBSIZE = len;
-+
-+ //sdi->SDIPRE = 0xff;
-+
-+ /* setup data */
-+ dcon = (len >> 9) & S3C2410_SDIDCON_BLKNUM_MASK;
-+ dcon |= S3C2410_SDIDCON_BLOCKMODE;
-+ dcon |= S3C2410_SDIDCON_RXAFTERCMD|S3C2410_SDIDCON_XFER_RXSTART;
-+ if (wide)
-+ dcon |= S3C2410_SDIDCON_WIDEBUS;
-+ sdi->SDIDCON = dcon;
-+
-+ /* send read command */
-+ resp = mmc_cmd(MMC_CMD_READ_BLOCK, src, CMD_F_RESP);
-+
-+ while (len > 0) {
-+ u_int32_t sdidsta = sdi->SDIDSTA;
-+ fifo = FIFO_FILL(sdi);
-+ if (sdidsta & (S3C2410_SDIDSTA_FIFOFAIL|
-+ S3C2410_SDIDSTA_CRCFAIL|
-+ S3C2410_SDIDSTA_RXCRCFAIL|
-+ S3C2410_SDIDSTA_DATATIMEOUT)) {
-+ printf("mmc_block_read: err SDIDSTA=0x%08x\n", sdidsta);
-+ return -EIO;
-+ }
-+
-+ while (fifo--) {
-+ //debug("dst_u32 = 0x%08x\n", dst_u32);
-+ *(dst_u32++) = sdi->SDIDAT;
-+ if (len >= 4)
-+ len -= 4;
-+ else {
-+ len = 0;
-+ break;
-+ }
-+ }
-+ }
-+
-+#if 1
-+ debug("waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
-+ while (!(sdi->SDIDSTA & (1 << 4))) {}
-+ debug("done waiting for SDIDSTA (currently 0x%08x\n", sdi->SDIDSTA);
-+#endif
-+
-+ sdi->SDIDCON = 0;
-+
-+#if 0
-+ if (!(sdi->SDIDSTA & S3C2410_SDIDSTA_XFERFINISH))
-+ printf("mmc_block_read; transfer not finished!\n");
-+#endif
-+
-+ return 0;
-+}
-+
-+static int
-+/****************************************************/
-+mmc_block_write(ulong dst, uchar *src, int len)
-+/****************************************************/
-+{
-+#if 0
-+ uchar *resp;
-+ ushort argh, argl;
-+ ulong status;
-+
-+ if (len == 0) {
-+ return 0;
-+ }
-+
-+ debug("mmc_block_wr dst %lx src %lx len %d\n", dst, (ulong)src, len);
-+
-+ argh = len >> 16;
-+ argl = len & 0xffff;
-+
-+ /* set block len */
-+ resp = mmc_cmd(MMC_CMD_SET_BLOCKLEN, argh, argl, CMD_F_RESP);
-+
-+ /* send write command */
-+ argh = dst >> 16;
-+ argl = dst & 0xffff;
-+ MMC_STRPCL = MMC_STRPCL_STOP_CLK;
-+ MMC_NOB = 1;
-+ MMC_BLKLEN = len;
-+ resp = mmc_cmd(MMC_CMD_WRITE_BLOCK, dst, CMD_F_RESP,
-+ MMC_CMDAT_R1|MMC_CMDAT_WRITE|MMC_CMDAT_BLOCK|MMC_CMDAT_DATA_EN);
-+
-+ MMC_I_MASK = ~MMC_I_MASK_TXFIFO_WR_REQ;
-+ while (len) {
-+ if (MMC_I_REG & MMC_I_REG_TXFIFO_WR_REQ) {
-+ int i, bytes = min(32,len);
-+
-+ for (i=0; i<bytes; i++) {
-+ MMC_TXFIFO = *src++;
-+ }
-+ if (bytes < 32) {
-+ MMC_PRTBUF = MMC_PRTBUF_BUF_PART_FULL;
-+ }
-+ len -= bytes;
-+ }
-+ status = MMC_STAT;
-+ if (status & MMC_STAT_ERRORS) {
-+ printf("MMC_STAT error %lx\n", status);
-+ return -1;
-+ }
-+ }
-+ MMC_I_MASK = ~MMC_I_MASK_DATA_TRAN_DONE;
-+ while (!(MMC_I_REG & MMC_I_REG_DATA_TRAN_DONE));
-+ MMC_I_MASK = ~MMC_I_MASK_PRG_DONE;
-+ while (!(MMC_I_REG & MMC_I_REG_PRG_DONE));
-+ status = MMC_STAT;
-+ if (status & MMC_STAT_ERRORS) {
-+ printf("MMC_STAT error %lx\n", status);
-+ return -1;
-+ }
-+#endif
-+ return 0;
-+}
-+
-+
-+int
-+/****************************************************/
-+mmc_read(ulong src, uchar *dst, int size)
-+/****************************************************/
-+{
-+ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
-+ ulong mmc_block_size, mmc_block_address;
-+
-+ if (size == 0) {
-+ return 0;
-+ }
-+
-+ if (!mmc_ready) {
-+ printf("Please initialize the MMC first\n");
-+ return -1;
-+ }
-+
-+ mmc_block_size = MMC_BLOCK_SIZE;
-+ mmc_block_address = ~(mmc_block_size - 1);
-+
-+ src -= CFG_MMC_BASE;
-+ end = src + size;
-+ part_start = ~mmc_block_address & src;
-+ part_end = ~mmc_block_address & end;
-+ aligned_start = mmc_block_address & src;
-+ aligned_end = mmc_block_address & end;
-+
-+ /* all block aligned accesses */
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_start) {
-+ part_len = mmc_block_size - part_start;
-+ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(dst, mmc_buf+part_start, part_len);
-+ dst += part_len;
-+ src += part_len;
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ for (; src < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
-+ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read((uchar *)(dst), src, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_end && src < end) {
-+ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(dst, mmc_buf, part_end);
-+ }
-+ return 0;
-+}
-+
-+int
-+/****************************************************/
-+mmc_write(uchar *src, ulong dst, int size)
-+/****************************************************/
-+{
-+ ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
-+ ulong mmc_block_size, mmc_block_address;
-+
-+ if (size == 0) {
-+ return 0;
-+ }
-+
-+ if (!mmc_ready) {
-+ printf("Please initialize the MMC first\n");
-+ return -1;
-+ }
-+
-+ mmc_block_size = MMC_BLOCK_SIZE;
-+ mmc_block_address = ~(mmc_block_size - 1);
-+
-+ dst -= CFG_MMC_BASE;
-+ end = dst + size;
-+ part_start = ~mmc_block_address & dst;
-+ part_end = ~mmc_block_address & end;
-+ aligned_start = mmc_block_address & dst;
-+ aligned_end = mmc_block_address & end;
-+
-+ /* all block aligned accesses */
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_start) {
-+ part_len = mmc_block_size - part_start;
-+ debug("ps src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ (ulong)src, dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_start, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(mmc_buf+part_start, src, part_len);
-+ if ((mmc_block_write(aligned_start, mmc_buf, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ dst += part_len;
-+ src += part_len;
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ for (; dst < aligned_end; src += mmc_block_size, dst += mmc_block_size) {
-+ debug("al src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_write(dst, (uchar *)src, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ }
-+ debug("src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if (part_end && dst < end) {
-+ debug("pe src %lx dst %lx end %lx pstart %lx pend %lx astart %lx aend %lx\n",
-+ src, (ulong)dst, end, part_start, part_end, aligned_start, aligned_end);
-+ if ((mmc_block_read(mmc_buf, aligned_end, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ memcpy(mmc_buf, src, part_end);
-+ if ((mmc_block_write(aligned_end, mmc_buf, mmc_block_size)) < 0) {
-+ return -1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+ulong
-+/****************************************************/
-+mmc_bread(int dev_num, ulong blknr, ulong blkcnt, ulong *dst)
-+/****************************************************/
-+{
-+ int mmc_block_size = MMC_BLOCK_SIZE;
-+ ulong src = blknr * mmc_block_size + CFG_MMC_BASE;
-+
-+ mmc_read(src, (uchar *)dst, blkcnt*mmc_block_size);
-+ return blkcnt;
-+}
-+
-+static u_int16_t rca = MMC_DEFAULT_RCA;
-+
-+static u_int32_t mmc_size(const struct mmc_csd *csd)
-+{
-+ u_int32_t block_len, mult, blocknr;
-+
-+ block_len = csd->read_bl_len << 12;
-+ mult = csd->c_size_mult1 << 8;
-+ blocknr = (csd->c_size+1) * mult;
-+
-+ return blocknr * block_len;
-+}
-+
-+int
-+/****************************************************/
-+mmc_init(int verbose)
-+/****************************************************/
-+{
-+ int retries, rc = -ENODEV;
-+ int is_sd = 0;
-+ u_int32_t *resp;
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+
-+ sdi = S3C2410_GetBase_SDI();
-+
-+ debug("mmc_init(PCLK=%u)\n", get_PCLK());
-+
-+ clk_power->CLKCON |= (1 << 9);
-+
-+ /* S3C2410 has some bug that prevents reliable operation at higher speed */
-+ //sdi->SDIPRE = 0x3e; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
-+ sdi->SDIPRE = 0x02; /* SDCLK = PCLK/2 / (SDIPRE+1) = 396kHz */
-+ sdi->SDIBSIZE = 512;
-+ sdi->SDIDTIMER = 0xffff;
-+ sdi->SDIIMSK = 0x0;
-+ sdi->SDICON = S3C2410_SDICON_FIFORESET|S3C2440_SDICON_MMCCLOCK;
-+ udelay(125000); /* FIXME: 74 SDCLK cycles */
-+
-+ mmc_csd.c_size = 0;
-+
-+ /* reset */
-+ retries = 10;
-+ resp = mmc_cmd(MMC_CMD_RESET, 0, 0);
-+
-+ printf("trying to detect SD Card...\n");
-+ while (retries--) {
-+ int i;
-+ udelay(100000);
-+ resp = mmc_cmd(55, 0x00000000, CMD_F_RESP);
-+ resp = mmc_cmd(41, 0x00300000, CMD_F_RESP);
-+
-+ if (resp[0] & (1 << 31)) {
-+ is_sd = 1;
-+ break;
-+ }
-+ }
-+
-+ if (retries == 0 && !is_sd) {
-+ retries = 10;
-+ printf("failed to detect SD Card, trying MMC\n");
-+ resp = mmc_cmd(MMC_CMD_SEND_OP_COND, 0x00ffc000, CMD_F_RESP);
-+ while (retries-- && resp && !(resp[4] & 0x80)) {
-+ debug("resp %x %x\n", resp[0], resp[1]);
-+ udelay(50);
-+ resp = mmc_cmd(1, 0x00ffff00, CMD_F_RESP);
-+ }
-+ }
-+
-+ /* try to get card id */
-+ resp = mmc_cmd(MMC_CMD_ALL_SEND_CID, 0, CMD_F_RESP|CMD_F_RESP_LONG);
-+ if (resp) {
-+ /* TODO configure mmc driver depending on card attributes */
-+ mmc_cid_t *cid = (mmc_cid_t *)resp;
-+ if (verbose) {
-+ printf("MMC found. Card desciption is:\n");
-+ printf("Manufacturer ID = %02x%02x%02x\n",
-+ cid->id[0], cid->id[1], cid->id[2]);
-+ printf("HW/FW Revision = %x %x\n",cid->hwrev, cid->fwrev);
-+ cid->hwrev = cid->fwrev = 0; /* null terminate string */
-+ printf("Product Name = %s\n",cid->name);
-+ printf("Serial Number = %02x%02x%02x\n",
-+ cid->sn[0], cid->sn[1], cid->sn[2]);
-+ printf("Month = %d\n",cid->month);
-+ printf("Year = %d\n",1997 + cid->year);
-+ }
-+ /* fill in device description */
-+ mmc_dev.if_type = IF_TYPE_MMC;
-+ mmc_dev.part_type = PART_TYPE_DOS;
-+ mmc_dev.dev = 0;
-+ mmc_dev.lun = 0;
-+ mmc_dev.type = 0;
-+ /* FIXME fill in the correct size (is set to 32MByte) */
-+ mmc_dev.blksz = 512;
-+ mmc_dev.lba = 0x10000;
-+ sprintf(mmc_dev.vendor,"Man %02x%02x%02x Snr %02x%02x%02x",
-+ cid->id[0], cid->id[1], cid->id[2],
-+ cid->sn[0], cid->sn[1], cid->sn[2]);
-+ sprintf(mmc_dev.product,"%s",cid->name);
-+ sprintf(mmc_dev.revision,"%x %x",cid->hwrev, cid->fwrev);
-+ mmc_dev.removable = 0;
-+ mmc_dev.block_read = mmc_bread;
-+
-+ /* MMC exists, get CSD too */
-+ resp = mmc_cmd(MMC_CMD_SET_RCA, MMC_DEFAULT_RCA, CMD_F_RESP);
-+ if (is_sd)
-+ rca = resp[0] >> 16;
-+
-+ resp = mmc_cmd(MMC_CMD_SEND_CSD, rca<<16, CMD_F_RESP|CMD_F_RESP_LONG);
-+ if (resp) {
-+ mmc_csd_t *csd = (mmc_csd_t *)resp;
-+ memcpy(&mmc_csd, csd, sizeof(csd));
-+ rc = 0;
-+ mmc_ready = 1;
-+ /* FIXME add verbose printout for csd */
-+ printf("READ_BL_LEN=%u, C_SIZE_MULT=%u, C_SIZE=%u\n",
-+ csd->read_bl_len, csd->c_size_mult1, csd->c_size);
-+ printf("size = %u\n", mmc_size(csd));
-+ }
-+ }
-+
-+ resp = mmc_cmd(MMC_CMD_SELECT_CARD, rca<<16, CMD_F_RESP);
-+
-+#ifdef CONFIG_MMC_WIDE
-+ if (is_sd) {
-+ resp = mmc_cmd(55, rca<<16, CMD_F_RESP);
-+ resp = mmc_cmd(6, 0x02, CMD_F_RESP);
-+ wide = 1;
-+ }
-+#endif
-+
-+ fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
-+
-+ return rc;
-+}
-+
-+int
-+mmc_ident(block_dev_desc_t *dev)
-+{
-+ return 0;
-+}
-+
-+int
-+mmc2info(ulong addr)
-+{
-+ /* FIXME hard codes to 32 MB device */
-+ if (addr >= CFG_MMC_BASE && addr < CFG_MMC_BASE + 0x02000000) {
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+#endif /* CONFIG_MMC */
-Index: git/cpu/arm920t/s3c24x0/nand.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/cpu/arm920t/s3c24x0/nand.c 2007-01-04 12:21:45.000000000 +0100
-@@ -0,0 +1,213 @@
-+/*
-+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+
-+#if 0
-+#define DEBUGN printf
-+#else
-+#define DEBUGN(x, args ...) {}
-+#endif
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_NAND)
-+#if !defined(CFG_NAND_LEGACY)
-+
-+#include <nand.h>
-+#include <s3c2410.h>
-+
-+#define __REGb(x) (*(volatile unsigned char *)(x))
-+#define __REGi(x) (*(volatile unsigned int *)(x))
-+
-+#define NF_BASE 0x4e000000
-+#define NFCONF __REGi(NF_BASE + 0x0)
-+#define NFCMD __REGb(NF_BASE + 0x4)
-+#define NFADDR __REGb(NF_BASE + 0x8)
-+#define NFDATA __REGb(NF_BASE + 0xc)
-+#define NFSTAT __REGb(NF_BASE + 0x10)
-+
-+#define S3C2410_NFCONF_EN (1<<15)
-+#define S3C2410_NFCONF_512BYTE (1<<14)
-+#define S3C2410_NFCONF_4STEP (1<<13)
-+#define S3C2410_NFCONF_INITECC (1<<12)
-+#define S3C2410_NFCONF_nFCE (1<<11)
-+#define S3C2410_NFCONF_TACLS(x) ((x)<<8)
-+#define S3C2410_NFCONF_TWRPH0(x) ((x)<<4)
-+#define S3C2410_NFCONF_TWRPH1(x) ((x)<<0)
-+
-+static u16 s3c2410_read_word(struct mtd_info *mtd)
-+{
-+ unsigned char byte = 0;
-+
-+ printf("s3c2410_read_word: WARNING, this function is not implemented yet\n");
-+ return byte;
-+}
-+
-+static void s3c2410_write_word(struct mtd_info *mtd, u16 word)
-+{
-+ printf("s3c2410_write_word: WARNING, this function is not implemented yet\n");
-+}
-+
-+static void s3c2410_hwcontrol(struct mtd_info *mtd, int cmd)
-+{
-+ struct nand_chip *chip = mtd->priv;
-+
-+ DEBUGN("hwcontrol(): 0x%02x: ", cmd);
-+
-+ switch (cmd) {
-+ case NAND_CTL_SETNCE:
-+ NFCONF &= ~S3C2410_NFCONF_nFCE;
-+ DEBUGN("NFCONF=0x%08x\n", NFCONF);
-+ break;
-+ case NAND_CTL_CLRNCE:
-+ NFCONF |= S3C2410_NFCONF_nFCE;
-+ DEBUGN("NFCONF=0x%08x\n", NFCONF);
-+ break;
-+ case NAND_CTL_SETALE:
-+ chip->IO_ADDR_W = NF_BASE + 0x8;
-+ DEBUGN("SETALE\n");
-+ break;
-+ case NAND_CTL_SETCLE:
-+ chip->IO_ADDR_W = NF_BASE + 0x4;
-+ DEBUGN("SETCLE\n");
-+ break;
-+ default:
-+ chip->IO_ADDR_W = NF_BASE + 0xc;
-+ break;
-+ }
-+ return;
-+}
-+
-+static int s3c2410_dev_ready(struct mtd_info *mtd)
-+{
-+ DEBUGN("dev_ready\n");
-+ return (NFSTAT & 0x01);
-+}
-+
-+static void s3c2410_cmdfunc(struct mtd_info *mtd, unsigned cmd,
-+ int column, int page_addr)
-+{
-+ DEBUGN("cmdfunc(): 0x%02x, col=%d, page=%d\n", cmd, column, page_addr);
-+
-+ switch (cmd) {
-+ case NAND_CMD_READ0:
-+ case NAND_CMD_READ1:
-+ case NAND_CMD_READOOB:
-+ NFCMD = cmd;
-+ NFADDR = column & 0xff;
-+ NFADDR = page_addr & 0xff;
-+ NFADDR = (page_addr >> 8) & 0xff;
-+ NFADDR = (page_addr >> 16) & 0xff;
-+ break;
-+ case NAND_CMD_READID:
-+ NFCMD = cmd;
-+ NFADDR = 0;
-+ break;
-+ case NAND_CMD_PAGEPROG:
-+ NFCMD = cmd;
-+ printf("PAGEPROG not implemented\n");
-+ break;
-+ case NAND_CMD_ERASE1:
-+ NFCMD = cmd;
-+ NFADDR = page_addr & 0xff;
-+ NFADDR = (page_addr >> 8) & 0xff;
-+ NFADDR = (page_addr >> 16) & 0xff;
-+ break;
-+ case NAND_CMD_ERASE2:
-+ NFCMD = cmd;
-+ break;
-+ case NAND_CMD_SEQIN:
-+ printf("SEQIN not implemented\n");
-+ break;
-+ case NAND_CMD_STATUS:
-+ NFCMD = cmd;
-+ break;
-+ case NAND_CMD_RESET:
-+ NFCMD = cmd;
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ while (!s3c2410_dev_ready(mtd));
-+}
-+
-+int board_nand_init(struct nand_chip *nand)
-+{
-+ u_int32_t cfg;
-+ u_int8_t tacls, twrph0, twrph1;
-+ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
-+
-+ DEBUGN("board_nand_init()\n");
-+
-+ clk_power->CLKCON |= (1 << 4);
-+
-+ /* initialize hardware */
-+ twrph0 = 3; twrph1 = 0; tacls = 0;
-+
-+ /* default timings: maximum */
-+ //twrph0 = 8; twrph1 = 8; tacls = 8;
-+
-+ cfg = S3C2410_NFCONF_EN;
-+ cfg |= S3C2410_NFCONF_TACLS(tacls - 1);
-+ cfg |= S3C2410_NFCONF_TWRPH0(twrph0 - 1);
-+ cfg |= S3C2410_NFCONF_TWRPH1(twrph1 - 1);
-+
-+ //NFCONF = cfg;
-+ NFCONF = 0xf842;
-+
-+ /* initialize nand_chip data structure */
-+ nand->IO_ADDR_R = nand->IO_ADDR_W = 0x4e00000c;
-+
-+ /* read_buf and write_buf are default */
-+ /* read_byte and write_byte are default */
-+
-+ /* need to override word read/write since default routines try 16bit wide
-+ * register access of an (in our case) 8bit register */
-+ nand->read_word = s3c2410_read_word;
-+ nand->write_word = s3c2410_write_word;
-+
-+ /* hwcontrol always must be implemented */
-+ nand->hwcontrol = s3c2410_hwcontrol;
-+
-+ nand->dev_ready = s3c2410_dev_ready;
-+
-+ nand->eccmode = NAND_ECC_SOFT;
-+ nand->options = 0;
-+ //nand->waitfunc = dfc_wait;
-+
-+ //nand->cmdfunc = s3c2410_cmdfunc;
-+ //nand->autooob = &delta_oob;
-+ //nand->badblock_pattern = &delta_bbt_descr;
-+
-+#if 0
-+ /* reset */
-+ nand->hwcontrol(NULL, NAND_CTL_SETNCE);
-+ nand->cmdfunc(NULL, NAND_CMD_RESET, -1, -1);
-+ while (nand->dev_ready(NULL) == 0) {}
-+ nand->hwcontrol(NULL, NAND_CTL_CLRNCE);
-+#endif
-+
-+ DEBUGN("end of nand_init\n");
-+ return 0;
-+}
-+
-+#else
-+ #error "U-Boot legacy NAND support not available for S3C2410"
-+#endif
-+#endif
-Index: git/cpu/arm920t/s3c24x0/nand_read.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/cpu/arm920t/s3c24x0/nand_read.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,75 @@
-+/*
-+ * nand_read.c: Simple NAND read functions for booting from NAND
-+ *
-+ * Taken from GPLv2 licensed vivi bootloader,
-+ * Copyright (C) 2002 MIZI Research, Inc.
-+ *
-+ * Author: Hwang, Chideok <hwang@mizi.com>
-+ * Date : $Date: 2004/02/04 10:37:37 $
-+ *
-+ * u-boot integration (C) 2006 by Harald Welte <hwelte@hmw-consulting.de>
-+ */
-+
-+#include <common.h>
-+
-+#ifdef CONFIG_S3C2410_NAND_BOOT
-+
-+#define __REGb(x) (*(volatile unsigned char *)(x))
-+#define __REGi(x) (*(volatile unsigned int *)(x))
-+#define NF_BASE 0x4e000000
-+#define NFCONF __REGi(NF_BASE + 0x0)
-+#define NFCMD __REGb(NF_BASE + 0x4)
-+#define NFADDR __REGb(NF_BASE + 0x8)
-+#define NFDATA __REGb(NF_BASE + 0xc)
-+#define NFSTAT __REGb(NF_BASE + 0x10)
-+
-+#define BUSY 1
-+inline void wait_idle(void) {
-+ int i;
-+
-+ while(!(NFSTAT & BUSY))
-+ for(i=0; i<10; i++);
-+}
-+
-+#define NAND_SECTOR_SIZE 512
-+#define NAND_BLOCK_MASK (NAND_SECTOR_SIZE - 1)
-+
-+/* low level nand read function */
-+int
-+nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)
-+{
-+ int i, j;
-+
-+ if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
-+ return -1; /* invalid alignment */
-+ }
-+
-+ /* chip Enable */
-+ NFCONF &= ~0x800;
-+ for(i=0; i<10; i++);
-+
-+ for(i=start_addr; i < (start_addr + size);) {
-+ /* READ0 */
-+ NFCMD = 0;
-+
-+ /* Write Address */
-+ NFADDR = i & 0xff;
-+ NFADDR = (i >> 9) & 0xff;
-+ NFADDR = (i >> 17) & 0xff;
-+ NFADDR = (i >> 25) & 0xff;
-+
-+ wait_idle();
-+
-+ for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {
-+ *buf = (NFDATA & 0xff);
-+ buf++;
-+ }
-+ }
-+
-+ /* chip Disable */
-+ NFCONF |= 0x800; /* chip disable */
-+
-+ return 0;
-+}
-+
-+#endif /* CONFIG_S3C2410_NAND_BOOT */
-Index: git/cpu/arm920t/start.S
-===================================================================
---- git.orig/cpu/arm920t/start.S 2007-01-04 12:21:15.000000000 +0100
-+++ git/cpu/arm920t/start.S 2007-01-04 12:21:18.000000000 +0100
-@@ -5,6 +5,10 @@
- * Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
- * Copyright (c) 2002 Gary Jennejohn <gj@denx.de>
- *
-+ * S3C2410 NAND portions
-+ * Copyright (c) 2001 MIZI Research, Inc.
-+ * Copyright (c) 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
-@@ -27,6 +31,7 @@
-
- #include <config.h>
- #include <version.h>
-+#include <s3c2410.h>
-
-
- /*
-@@ -158,9 +163,17 @@
- */
- #ifndef CONFIG_SKIP_LOWLEVEL_INIT
- bl cpu_init_crit
-+#else
-+ /* QT2410: configure bank 3 correctly to make ethernet work */
-+ ldr r1, =0x48000000
-+ ldr r2, =0x00001f4c
-+ str r2, [r1, #0x10]
-+ ldr r2, =0x2211d122
-+ str r2, [r1]
- #endif
-
- #ifndef CONFIG_SKIP_RELOCATE_UBOOT
-+#ifndef CONFIG_S3C2410_NAND_BOOT
- relocate: /* relocate U-Boot to RAM */
- adr r0, _start /* r0 <- current position of code */
- ldr r1, _TEXT_BASE /* test if we run from flash or RAM */
-@@ -177,6 +190,93 @@
- stmia r1!, {r3-r10} /* copy to target address [r1] */
- cmp r0, r2 /* until source end addreee [r2] */
- ble copy_loop
-+#else /* NAND_BOOT */
-+relocate:
-+copy_myself:
-+ /* mov r10, lr */
-+
-+ @ reset NAND
-+ mov r1, #S3C2410_NAND_BASE
-+ ldr r2, =0xf842 @ initial value enable tacls=3,rph0=6,rph1=0
-+ str r2, [r1, #oNFCONF]
-+ ldr r2, [r1, #oNFCONF]
-+ bic r2, r2, #0x800 @ enable chip
-+ str r2, [r1, #oNFCONF]
-+ mov r2, #0xff @ RESET command
-+ strb r2, [r1, #oNFCMD]
-+ mov r3, #0 @ wait
-+1: add r3, r3, #0x1
-+ cmp r3, #0xa
-+ blt 1b
-+2: ldr r2, [r1, #oNFSTAT] @ wait ready
-+ tst r2, #0x1
-+ beq 2b
-+ ldr r2, [r1, #oNFCONF]
-+ orr r2, r2, #0x800 @ disable chip
-+ str r2, [r1, #oNFCONF]
-+
-+#if 0
-+ @ get ready to call C functions (for nand_read())
-+ ldr sp, DW_STACK_START @ setup stack pointer
-+ mov fp, #0 @ no previous frame, so fp=0
-+#else
-+ ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */
-+ sub r0, r0, #CFG_MALLOC_LEN /* malloc area */
-+ sub r0, r0, #CFG_GBL_DATA_SIZE /* bdinfo */
-+#ifdef CONFIG_USE_IRQ
-+ sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
-+#endif
-+ sub sp, r0, #12 /* leave 3 words for abort-stack */
-+#endif
-+
-+ @ copy u-boot to RAM
-+ ldr r0, _TEXT_BASE
-+ mov r1, #0x0
-+ mov r2, #0x30000
-+ bl nand_read_ll
-+
-+ tst r0, #0x0
-+ beq ok_nand_read
-+#ifdef CONFIG_DEBUG_LL
-+bad_nand_read:
-+ ldr r0, STR_FAIL
-+ ldr r1, SerBase
-+ bl PrintWord
-+1: b 1b @ infinite loop
-+#endif
-+
-+ok_nand_read:
-+#ifdef CONFIG_DEBUG_LL
-+ ldr r0, STR_OK
-+ ldr r1, SerBase
-+ bl PrintWord
-+#endif
-+
-+ @ verify
-+ mov r0, #0
-+ @ldr r1, =0x33f00000
-+ ldr r1, _TEXT_BASE
-+ mov r2, #0x400 @ 4 bytes * 1024 = 4K-bytes
-+go_next:
-+ ldr r3, [r0], #4
-+ ldr r4, [r1], #4
-+ teq r3, r4
-+ bne notmatch
-+ subs r2, r2, #4
-+ beq done_nand_read
-+ bne go_next
-+notmatch:
-+#ifdef CONFIG_DEBUG_LL
-+ sub r0, r0, #4
-+ ldr r1, SerBase
-+ bl PrintHexWord
-+ ldr r0, STR_FAIL
-+ ldr r1, SerBase
-+ bl PrintWord
-+#endif
-+1: b 1b
-+done_nand_read:
-+#endif /* NAND_BOOT */
- #endif /* CONFIG_SKIP_RELOCATE_UBOOT */
-
- /* Set up the stack */
-Index: git/drivers/Makefile
-===================================================================
---- git.orig/drivers/Makefile 2007-01-04 12:21:15.000000000 +0100
-+++ git/drivers/Makefile 2007-01-04 12:21:18.000000000 +0100
-@@ -51,7 +51,7 @@
- ks8695eth.o \
- pxa_pcmcia.o mpc8xx_pcmcia.o tqm8xx_pcmcia.o \
- rpx_pcmcia.o \
-- fsl_i2c.o
-+ fsl_i2c.o s3c2410_fb.o
-
- SRCS := $(COBJS:.o=.c)
- OBJS := $(addprefix $(obj),$(COBJS))
-Index: git/drivers/cs8900.c
-===================================================================
---- git.orig/drivers/cs8900.c 2007-01-04 12:21:15.000000000 +0100
-+++ git/drivers/cs8900.c 2007-01-04 12:21:18.000000000 +0100
-@@ -120,6 +120,7 @@
- unsigned char env_enetaddr[6];
- char *tmp = getenv ("ethaddr");
- char *end;
-+ unsigned short chip_id;
-
- for (i=0; i<6; i++) {
- env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
-@@ -128,7 +129,9 @@
- }
-
- /* verify chip id */
-- if (get_reg_init_bus (PP_ChipID) != 0x630e)
-+ chip_id = get_reg_init_bus (PP_ChipID);
-+ printf("\ncs8900a chipid 0x%04x\n", chip_id);
-+ if (chip_id != 0x630e)
- return;
- eth_reset ();
- if ((get_reg (PP_SelfST) & (PP_SelfSTAT_EEPROM | PP_SelfSTAT_EEPROM_OK)) ==
-Index: git/drivers/s3c2410_fb.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/drivers/s3c2410_fb.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,182 @@
-+/*
-+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <common.h>
-+
-+#if defined(CONFIG_VIDEO_S3C2410)
-+
-+#include <video_fb.h>
-+#include "videomodes.h"
-+#include <s3c2410.h>
-+/*
-+ * Export Graphic Device
-+ */
-+GraphicDevice smi;
-+
-+#define VIDEO_MEM_SIZE 0x200000
-+
-+/*******************************************************************************
-+ *
-+ * Init video chip with common Linux graphic modes (lilo)
-+ */
-+void *video_hw_init (void)
-+{
-+ S3C24X0_LCD * const lcd = S3C24X0_GetBase_LCD();
-+ GraphicDevice *pGD = (GraphicDevice *)&smi;
-+ int videomode;
-+ unsigned long t1, hsynch, vsynch;
-+ char *penv;
-+ int tmp, i, bits_per_pixel;
-+ struct ctfb_res_modes *res_mode;
-+ struct ctfb_res_modes var_mode;
-+ unsigned char videoout;
-+ unsigned int *vm;
-+
-+ /* Search for video chip */
-+ printf("Video: ");
-+
-+ tmp = 0;
-+
-+ videomode = CFG_DEFAULT_VIDEO_MODE;
-+ /* get video mode via environment */
-+ if ((penv = getenv ("videomode")) != NULL) {
-+ /* deceide if it is a string */
-+ if (penv[0] <= '9') {
-+ videomode = (int) simple_strtoul (penv, NULL, 16);
-+ tmp = 1;
-+ }
-+ } else {
-+ tmp = 1;
-+ }
-+ if (tmp) {
-+ /* parameter are vesa modes */
-+ /* search params */
-+ for (i = 0; i < VESA_MODES_COUNT; i++) {
-+ if (vesa_modes[i].vesanr == videomode)
-+ break;
-+ }
-+ if (i == VESA_MODES_COUNT) {
-+ printf ("no VESA Mode found, switching to mode 0x%x ", CFG_DEFAULT_VIDEO_MODE);
-+ i = 0;
-+ }
-+ res_mode =
-+ (struct ctfb_res_modes *) &res_mode_init[vesa_modes[i].
-+ resindex];
-+ bits_per_pixel = vesa_modes[i].bits_per_pixel;
-+ } else {
-+
-+ res_mode = (struct ctfb_res_modes *) &var_mode;
-+ bits_per_pixel = video_get_params (res_mode, penv);
-+ }
-+
-+ /* calculate hsynch and vsynch freq (info only) */
-+ t1 = (res_mode->left_margin + res_mode->xres +
-+ res_mode->right_margin + res_mode->hsync_len) / 8;
-+ t1 *= 8;
-+ t1 *= res_mode->pixclock;
-+ t1 /= 1000;
-+ hsynch = 1000000000L / t1;
-+ t1 *=
-+ (res_mode->upper_margin + res_mode->yres +
-+ res_mode->lower_margin + res_mode->vsync_len);
-+ t1 /= 1000;
-+ vsynch = 1000000000L / t1;
-+
-+ /* fill in Graphic device struct */
-+ sprintf (pGD->modeIdent, "%dx%dx%d %ldkHz %ldHz", res_mode->xres,
-+ res_mode->yres, bits_per_pixel, (hsynch / 1000),
-+ (vsynch / 1000));
-+ printf ("%s\n", pGD->modeIdent);
-+ pGD->winSizeX = res_mode->xres;
-+ pGD->winSizeY = res_mode->yres;
-+ pGD->plnSizeX = res_mode->xres;
-+ pGD->plnSizeY = res_mode->yres;
-+ switch (bits_per_pixel) {
-+ case 8:
-+ pGD->gdfBytesPP = 1;
-+ pGD->gdfIndex = GDF__8BIT_INDEX;
-+ break;
-+ case 15:
-+ pGD->gdfBytesPP = 2;
-+ pGD->gdfIndex = GDF_15BIT_555RGB;
-+ break;
-+ case 16:
-+ pGD->gdfBytesPP = 2;
-+ pGD->gdfIndex = GDF_16BIT_565RGB;
-+ break;
-+ case 24:
-+ pGD->gdfBytesPP = 3;
-+ pGD->gdfIndex = GDF_24BIT_888RGB;
-+ break;
-+ }
-+
-+#if 0
-+ pGD->isaBase = CFG_ISA_IO;
-+ pGD->pciBase = pci_mem_base;
-+ pGD->dprBase = (pci_mem_base + 0x400000 + 0x8000);
-+ pGD->vprBase = (pci_mem_base + 0x400000 + 0xc000);
-+ pGD->cprBase = (pci_mem_base + 0x400000 + 0xe000);
-+#endif
-+ pGD->frameAdrs = LCD_VIDEO_ADDR;
-+ pGD->memSize = VIDEO_MEM_SIZE;
-+
-+ lcd->LCDSADDR1 = LCD_VIDEO_ADDR >> 1;
-+ lcd->LCDSADDR2 = (LCD_VIDEO_ADDR + 0x4b000) >> 1;
-+ lcd->LCDSADDR3 = 0x000000f0;
-+
-+ lcd->LCDCON1 = 0x00000479;
-+ lcd->LCDCON2 = 0x014fc183;
-+ lcd->LCDCON3 = 0x0060ef07;
-+ lcd->LCDCON4 = 0x00000003;
-+ lcd->LCDCON5 = 0x00000b09;
-+ lcd->LPCSEL = 0x00000cf0;
-+
-+ pGD->winSizeX = pGD->plnSizeX = 240;
-+ pGD->winSizeY = pGD->plnSizeY = 320;
-+ pGD->gdfBytesPP = 2;
-+ pGD->gdfIndex = GDF_16BIT_565RGB;
-+
-+ /* Enable Display */
-+ videoout = 2; /* Default output is CRT */
-+ if ((penv = getenv ("videoout")) != NULL) {
-+ /* deceide if it is a string */
-+ videoout = (int) simple_strtoul (penv, NULL, 16);
-+ }
-+
-+ printf("clearing video memory\n");
-+ /* Clear video memory */
-+ i = pGD->memSize/4;
-+ vm = (unsigned int *)pGD->frameAdrs;
-+ while(i--)
-+ *vm++ = 0;
-+
-+ printf("returning from video_hw_init\n");
-+ return ((void*)&smi);
-+}
-+
-+void
-+video_set_lut (unsigned int index, /* color number */
-+ unsigned char r, /* red */
-+ unsigned char g, /* green */
-+ unsigned char b /* blue */
-+ )
-+{
-+}
-+
-+#endif /* CONFIG_VIDEO_S3C2410 */
-Index: git/drivers/usbdcore_s3c2410.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/drivers/usbdcore_s3c2410.c 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,1609 @@
-+/*
-+ * (C) Copyright 2003
-+ * Gerry Hamel, geh@ti.com, Texas Instruments
-+ *
-+ * Based on
-+ * linux/drivers/usb/device/bi/omap.c
-+ * TI OMAP1510 USB bus interface driver
-+ *
-+ * Author: MontaVista Software, Inc.
-+ * source@mvista.com
-+ * (C) Copyright 2002
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ */
-+
-+#include <common.h>
-+
-+#if defined(CONFIG_S3C2410) && defined(CONFIG_USB_DEVICE)
-+
-+#include <asm/io.h>
-+
-+#include "usbdcore.h"
-+#include "usbdcore_s3c2410.h"
-+#include "usbdcore_ep0.h"
-+
-+
-+#define UDC_INIT_MDELAY 80 /* Device settle delay */
-+#define UDC_MAX_ENDPOINTS 31 /* Number of endpoints on this UDC */
-+
-+/* Some kind of debugging output... */
-+#if 1
-+#define UDCDBG(str)
-+#define UDCDBGA(fmt,args...)
-+#else /* The bugs still exists... */
-+#define UDCDBG(str) serial_printf("[%s] %s:%d: " str "\n", __FILE__,__FUNCTION__,__LINE__)
-+#define UDCDBGA(fmt,args...) serial_printf("[%s] %s:%d: " fmt "\n", __FILE__,__FUNCTION__,__LINE__, ##args)
-+#endif
-+
-+#if 1
-+#define UDCREG(name)
-+#define UDCREGL(name)
-+#else /* The bugs still exists... */
-+#define UDCREG(name) serial_printf("%s():%d: %s[%08x]=%.4x\n",__FUNCTION__,__LINE__, (#name), name, inw(name)) /* For 16-bit regs */
-+#define UDCREGL(name) serial_printf("%s():%d: %s[%08x]=%.8x\n",__FUNCTION__,__LINE__, (#name), name, inl(name)) /* For 32-bit regs */
-+#endif
-+
-+
-+static struct urb *ep0_urb = NULL;
-+
-+static struct usb_device_instance *udc_device; /* Used in interrupt handler */
-+static u16 udc_devstat = 0; /* UDC status (DEVSTAT) */
-+static u32 udc_interrupts = 0;
-+
-+static void udc_stall_ep (unsigned int ep_addr);
-+
-+
-+static struct usb_endpoint_instance *s3c2410_find_ep (int ep)
-+{
-+ int i;
-+
-+ for (i = 0; i < udc_device->bus->max_endpoints; i++) {
-+ if (udc_device->bus->endpoint_array[i].endpoint_address == ep)
-+ return &udc_device->bus->endpoint_array[i];
-+ }
-+ return NULL;
-+}
-+
-+/* ************************************************************************** */
-+/* IO
-+ */
-+
-+/*
-+ * omap1510_prepare_endpoint_for_rx
-+ *
-+ * This function implements TRM Figure 14-11.
-+ *
-+ * The endpoint to prepare for transfer is specified as a physical endpoint
-+ * number. For OUT (rx) endpoints 1 through 15, the corresponding endpoint
-+ * configuration register is checked to see if the endpoint is ISO or not.
-+ * If the OUT endpoint is valid and is non-ISO then its FIFO is enabled.
-+ * No action is taken for endpoint 0 or for IN (tx) endpoints 16 through 30.
-+ */
-+static void omap1510_prepare_endpoint_for_rx (int ep_addr)
-+{
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("omap1510_prepare_endpoint %x", ep_addr);
-+ if (((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT)) {
-+ if ((inw (UDC_EP_RX (ep_num)) &
-+ (UDC_EPn_RX_Valid | UDC_EPn_RX_Iso)) ==
-+ UDC_EPn_RX_Valid) {
-+ /* rx endpoint is valid, non-ISO, so enable its FIFO */
-+ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ outw (0, UDC_EP_NUM);
-+ }
-+ }
-+}
-+
-+/* omap1510_configure_endpoints
-+ *
-+ * This function implements TRM Figure 14-10.
-+ */
-+static void omap1510_configure_endpoints (struct usb_device_instance *device)
-+{
-+ int ep;
-+ struct usb_bus_instance *bus;
-+ struct usb_endpoint_instance *endpoint;
-+ unsigned short ep_ptr;
-+ unsigned short ep_size;
-+ unsigned short ep_isoc;
-+ unsigned short ep_doublebuffer;
-+ int ep_addr;
-+ int packet_size;
-+ int buffer_size;
-+ int attributes;
-+
-+ bus = device->bus;
-+
-+ /* There is a dedicated 2048 byte buffer for USB packets that may be
-+ * arbitrarily partitioned among the endpoints on 8-byte boundaries.
-+ * The first 8 bytes are reserved for receiving setup packets on
-+ * endpoint 0.
-+ */
-+ ep_ptr = 8; /* reserve the first 8 bytes for the setup fifo */
-+
-+ for (ep = 0; ep < bus->max_endpoints; ep++) {
-+ endpoint = bus->endpoint_array + ep;
-+ ep_addr = endpoint->endpoint_address;
-+ if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ /* IN endpoint */
-+ packet_size = endpoint->tx_packetSize;
-+ attributes = endpoint->tx_attributes;
-+ } else {
-+ /* OUT endpoint */
-+ packet_size = endpoint->rcv_packetSize;
-+ attributes = endpoint->rcv_attributes;
-+ }
-+
-+ switch (packet_size) {
-+ case 0:
-+ ep_size = 0;
-+ break;
-+ case 8:
-+ ep_size = 0;
-+ break;
-+ case 16:
-+ ep_size = 1;
-+ break;
-+ case 32:
-+ ep_size = 2;
-+ break;
-+ case 64:
-+ ep_size = 3;
-+ break;
-+ case 128:
-+ ep_size = 4;
-+ break;
-+ case 256:
-+ ep_size = 5;
-+ break;
-+ case 512:
-+ ep_size = 6;
-+ break;
-+ default:
-+ UDCDBGA ("ep 0x%02x has bad packet size %d",
-+ ep_addr, packet_size);
-+ packet_size = 0;
-+ ep_size = 0;
-+ break;
-+ }
-+
-+ switch (attributes & USB_ENDPOINT_XFERTYPE_MASK) {
-+ case USB_ENDPOINT_XFER_CONTROL:
-+ case USB_ENDPOINT_XFER_BULK:
-+ case USB_ENDPOINT_XFER_INT:
-+ default:
-+ /* A non-isochronous endpoint may optionally be
-+ * double-buffered. For now we disable
-+ * double-buffering.
-+ */
-+ ep_doublebuffer = 0;
-+ ep_isoc = 0;
-+ if (packet_size > 64)
-+ packet_size = 0;
-+ if (!ep || !ep_doublebuffer)
-+ buffer_size = packet_size;
-+ else
-+ buffer_size = packet_size * 2;
-+ break;
-+ case USB_ENDPOINT_XFER_ISOC:
-+ /* Isochronous endpoints are always double-
-+ * buffered, but the double-buffering bit
-+ * in the endpoint configuration register
-+ * becomes the msb of the endpoint size so we
-+ * set the double-buffering flag to zero.
-+ */
-+ ep_doublebuffer = 0;
-+ ep_isoc = 1;
-+ buffer_size = packet_size * 2;
-+ break;
-+ }
-+
-+ /* check to see if our packet buffer RAM is exhausted */
-+ if ((ep_ptr + buffer_size) > 2048) {
-+ UDCDBGA ("out of packet RAM for ep 0x%02x buf size %d", ep_addr, buffer_size);
-+ buffer_size = packet_size = 0;
-+ }
-+
-+ /* force a default configuration for endpoint 0 since it is
-+ * always enabled
-+ */
-+ if (!ep && ((packet_size < 8) || (packet_size > 64))) {
-+ buffer_size = packet_size = 64;
-+ ep_size = 3;
-+ }
-+
-+ if (!ep) {
-+ /* configure endpoint 0 */
-+ outw ((ep_size << 12) | (ep_ptr >> 3), UDC_EP0);
-+ /*UDCDBGA("ep 0 buffer offset 0x%03x packet size 0x%03x", */
-+ /* ep_ptr, packet_size); */
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ /* IN endpoint */
-+ if (packet_size) {
-+ outw ((1 << 15) | (ep_doublebuffer << 14) |
-+ (ep_size << 12) | (ep_isoc << 11) |
-+ (ep_ptr >> 3),
-+ UDC_EP_TX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ UDCDBGA ("IN ep %d buffer offset 0x%03x"
-+ " packet size 0x%03x",
-+ ep_addr & USB_ENDPOINT_NUMBER_MASK,
-+ ep_ptr, packet_size);
-+ } else {
-+ outw (0,
-+ UDC_EP_TX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ }
-+ } else {
-+ /* OUT endpoint */
-+ if (packet_size) {
-+ outw ((1 << 15) | (ep_doublebuffer << 14) |
-+ (ep_size << 12) | (ep_isoc << 11) |
-+ (ep_ptr >> 3),
-+ UDC_EP_RX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ UDCDBGA ("OUT ep %d buffer offset 0x%03x"
-+ " packet size 0x%03x",
-+ ep_addr & USB_ENDPOINT_NUMBER_MASK,
-+ ep_ptr, packet_size);
-+ } else {
-+ outw (0,
-+ UDC_EP_RX (ep_addr &
-+ USB_ENDPOINT_NUMBER_MASK));
-+ }
-+ }
-+ ep_ptr += buffer_size;
-+ }
-+}
-+
-+static void s3c2410_deconfigure_device (void)
-+{
-+ int epnum;
-+
-+ UDCDBG ("clear Cfg_Lock");
-+ outw (inw (UDC_SYSCON1) & ~UDC_Cfg_Lock, UDC_SYSCON1);
-+ UDCREG (UDC_SYSCON1);
-+
-+ /* deconfigure all endpoints */
-+ for (epnum = 1; epnum <= 15; epnum++) {
-+ outw (0, UDC_EP_RX (epnum));
-+ outw (0, UDC_EP_TX (epnum));
-+ }
-+}
-+
-+static void s3c2410_configure_device (struct usb_device_instance *device)
-+{
-+ u_int32_t tmp;
-+
-+ s3c2410_configure_endpoints(device);
-+
-+ /* disable EP0-4 SUBD interrupts ? */
-+ outw(0x00, S3C2410_UDC_USB_INT_EN_REG);
-+
-+ /* UPLL already configured by board-level init code */
-+
-+ /* configure USB pads to device mode */
-+ tmp = inw(S3C2410_MISCCR);
-+ tmp &= ~(S3C2410_MISCCR_USBHOST|S3C2410_MISCCR_USBSUSPND1);
-+ outw(tmp, S3C2410_MISCCR);
-+
-+ tmp = inb(S3C2410_CLKSLOW);
-+ tmp &= ~S3C2410_CLKSLOW_USB_CLK_DISABLE;
-+ outw(tmp, S3C2410_CLKSLOW);
-+
-+ /* clear interrupt registers */
-+ inb(S3C2410_UDC_EP_INT_REG);
-+ inb(S3C2410_UDC_USB_INT_REG);
-+
-+ /* enable USB interrupts for RESET and SUSPEND/RESUME */
-+ outb(S3C2410_UDC_USBINT_RESET|S3C2410_UDC_USBINT_SUSPEND,
-+ S3C2410_UDC_USB_INT_EN_REG);
-+
-+}
-+
-+/* omap1510_write_noniso_tx_fifo
-+ *
-+ * This function implements TRM Figure 14-30.
-+ *
-+ * If the endpoint has an active tx_urb, then the next packet of data from the
-+ * URB is written to the tx FIFO. The total amount of data in the urb is given
-+ * by urb->actual_length. The maximum amount of data that can be sent in any
-+ * one packet is given by endpoint->tx_packetSize. The number of data bytes
-+ * from this URB that have already been transmitted is given by endpoint->sent.
-+ * endpoint->last is updated by this routine with the number of data bytes
-+ * transmitted in this packet.
-+ *
-+ * In accordance with Figure 14-30, the EP_NUM register must already have been
-+ * written with the value to select the appropriate tx FIFO before this routine
-+ * is called.
-+ */
-+static void omap1510_write_noniso_tx_fifo (struct usb_endpoint_instance
-+ *endpoint)
-+{
-+ struct urb *urb = endpoint->tx_urb;
-+
-+ if (urb) {
-+ unsigned int last, i;
-+
-+ UDCDBGA ("urb->buffer %p, buffer_length %d, actual_length %d",
-+ urb->buffer, urb->buffer_length, urb->actual_length);
-+ if ((last =
-+ MIN (urb->actual_length - endpoint->sent,
-+ endpoint->tx_packetSize))) {
-+ u8 *cp = urb->buffer + endpoint->sent;
-+
-+ UDCDBGA ("endpoint->sent %d, tx_packetSize %d, last %d", endpoint->sent, endpoint->tx_packetSize, last);
-+
-+ if (((u32) cp & 1) == 0) { /* word aligned? */
-+ outsw (UDC_DATA, cp, last >> 1);
-+ } else { /* byte aligned. */
-+ for (i = 0; i < (last >> 1); i++) {
-+ u16 w = ((u16) cp[2 * i + 1] << 8) |
-+ (u16) cp[2 * i];
-+ outw (w, UDC_DATA);
-+ }
-+ }
-+ if (last & 1) {
-+ outb (*(cp + last - 1), UDC_DATA);
-+ }
-+ }
-+ endpoint->last = last;
-+ }
-+}
-+
-+/* omap1510_read_noniso_rx_fifo
-+ *
-+ * This function implements TRM Figure 14-28.
-+ *
-+ * If the endpoint has an active rcv_urb, then the next packet of data is read
-+ * from the rcv FIFO and written to rcv_urb->buffer at offset
-+ * rcv_urb->actual_length to append the packet data to the data from any
-+ * previous packets for this transfer. We assume that there is sufficient room
-+ * left in the buffer to hold an entire packet of data.
-+ *
-+ * The return value is the number of bytes read from the FIFO for this packet.
-+ *
-+ * In accordance with Figure 14-28, the EP_NUM register must already have been
-+ * written with the value to select the appropriate rcv FIFO before this routine
-+ * is called.
-+ */
-+static int omap1510_read_noniso_rx_fifo (struct usb_endpoint_instance
-+ *endpoint)
-+{
-+ struct urb *urb = endpoint->rcv_urb;
-+ int len = 0;
-+
-+ if (urb) {
-+ len = inw (UDC_RXFSTAT);
-+
-+ if (len) {
-+ unsigned char *cp = urb->buffer + urb->actual_length;
-+
-+ insw (UDC_DATA, cp, len >> 1);
-+ if (len & 1)
-+ *(cp + len - 1) = inb (UDC_DATA);
-+ }
-+ }
-+ return len;
-+}
-+
-+/* omap1510_prepare_for_control_write_status
-+ *
-+ * This function implements TRM Figure 14-17.
-+ *
-+ * We have to deal here with non-autodecoded control writes that haven't already
-+ * been dealt with by ep0_recv_setup. The non-autodecoded standard control
-+ * write requests are: set/clear endpoint feature, set configuration, set
-+ * interface, and set descriptor. ep0_recv_setup handles set/clear requests for
-+ * ENDPOINT_HALT by halting the endpoint for a set request and resetting the
-+ * endpoint for a clear request. ep0_recv_setup returns an error for
-+ * SET_DESCRIPTOR requests which causes them to be terminated with a stall by
-+ * the setup handler. A SET_INTERFACE request is handled by ep0_recv_setup by
-+ * generating a DEVICE_SET_INTERFACE event. This leaves only the
-+ * SET_CONFIGURATION event for us to deal with here.
-+ *
-+ */
-+static void omap1510_prepare_for_control_write_status (struct urb *urb)
-+{
-+ struct usb_device_request *request = &urb->device_request;;
-+
-+ /* check for a SET_CONFIGURATION request */
-+ if (request->bRequest == USB_REQ_SET_CONFIGURATION) {
-+ int configuration = le16_to_cpu (request->wValue) & 0xff;
-+ unsigned short devstat = inw (UDC_DEVSTAT);
-+
-+ if ((devstat & (UDC_ADD | UDC_CFG)) == UDC_ADD) {
-+ /* device is currently in ADDRESSED state */
-+ if (configuration) {
-+ /* Assume the specified non-zero configuration
-+ * value is valid and switch to the CONFIGURED
-+ * state.
-+ */
-+ outw (UDC_Dev_Cfg, UDC_SYSCON2);
-+ }
-+ } else if ((devstat & UDC_CFG) == UDC_CFG) {
-+ /* device is currently in CONFIGURED state */
-+ if (!configuration) {
-+ /* Switch to ADDRESSED state. */
-+ outw (UDC_Clr_Cfg, UDC_SYSCON2);
-+ }
-+ }
-+ }
-+
-+ /* select EP0 tx FIFO */
-+ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+ /* clear endpoint (no data bytes in status stage) */
-+ outw (UDC_Clr_EP, UDC_CTRL);
-+ /* enable the EP0 tx FIFO */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the endpoint */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+}
-+
-+/* udc_state_transition_up
-+ * udc_state_transition_down
-+ *
-+ * Helper functions to implement device state changes. The device states and
-+ * the events that transition between them are:
-+ *
-+ * STATE_ATTACHED
-+ * || /\
-+ * \/ ||
-+ * DEVICE_HUB_CONFIGURED DEVICE_HUB_RESET
-+ * || /\
-+ * \/ ||
-+ * STATE_POWERED
-+ * || /\
-+ * \/ ||
-+ * DEVICE_RESET DEVICE_POWER_INTERRUPTION
-+ * || /\
-+ * \/ ||
-+ * STATE_DEFAULT
-+ * || /\
-+ * \/ ||
-+ * DEVICE_ADDRESS_ASSIGNED DEVICE_RESET
-+ * || /\
-+ * \/ ||
-+ * STATE_ADDRESSED
-+ * || /\
-+ * \/ ||
-+ * DEVICE_CONFIGURED DEVICE_DE_CONFIGURED
-+ * || /\
-+ * \/ ||
-+ * STATE_CONFIGURED
-+ *
-+ * udc_state_transition_up transitions up (in the direction from STATE_ATTACHED
-+ * to STATE_CONFIGURED) from the specified initial state to the specified final
-+ * state, passing through each intermediate state on the way. If the initial
-+ * state is at or above (i.e. nearer to STATE_CONFIGURED) the final state, then
-+ * no state transitions will take place.
-+ *
-+ * udc_state_transition_down transitions down (in the direction from
-+ * STATE_CONFIGURED to STATE_ATTACHED) from the specified initial state to the
-+ * specified final state, passing through each intermediate state on the way.
-+ * If the initial state is at or below (i.e. nearer to STATE_ATTACHED) the final
-+ * state, then no state transitions will take place.
-+ *
-+ * These functions must only be called with interrupts disabled.
-+ */
-+static void udc_state_transition_up (usb_device_state_t initial,
-+ usb_device_state_t final)
-+{
-+ if (initial < final) {
-+ switch (initial) {
-+ case STATE_ATTACHED:
-+ usbd_device_event_irq (udc_device,
-+ DEVICE_HUB_CONFIGURED, 0);
-+ if (final == STATE_POWERED)
-+ break;
-+ case STATE_POWERED:
-+ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
-+ if (final == STATE_DEFAULT)
-+ break;
-+ case STATE_DEFAULT:
-+ usbd_device_event_irq (udc_device,
-+ DEVICE_ADDRESS_ASSIGNED, 0);
-+ if (final == STATE_ADDRESSED)
-+ break;
-+ case STATE_ADDRESSED:
-+ usbd_device_event_irq (udc_device, DEVICE_CONFIGURED,
-+ 0);
-+ case STATE_CONFIGURED:
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+}
-+
-+static void udc_state_transition_down (usb_device_state_t initial,
-+ usb_device_state_t final)
-+{
-+ if (initial > final) {
-+ switch (initial) {
-+ case STATE_CONFIGURED:
-+ usbd_device_event_irq (udc_device, DEVICE_DE_CONFIGURED, 0);
-+ if (final == STATE_ADDRESSED)
-+ break;
-+ case STATE_ADDRESSED:
-+ usbd_device_event_irq (udc_device, DEVICE_RESET, 0);
-+ if (final == STATE_DEFAULT)
-+ break;
-+ case STATE_DEFAULT:
-+ usbd_device_event_irq (udc_device, DEVICE_POWER_INTERRUPTION, 0);
-+ if (final == STATE_POWERED)
-+ break;
-+ case STATE_POWERED:
-+ usbd_device_event_irq (udc_device, DEVICE_HUB_RESET, 0);
-+ case STATE_ATTACHED:
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+}
-+
-+/* Handle all device state changes.
-+ * This function implements TRM Figure 14-21.
-+ */
-+static void omap1510_udc_state_changed (void)
-+{
-+ u16 bits;
-+ u16 devstat = inw (UDC_DEVSTAT);
-+
-+ UDCDBGA ("state changed, devstat %x, old %x", devstat, udc_devstat);
-+
-+ bits = devstat ^ udc_devstat;
-+ if (bits) {
-+ if (bits & UDC_ATT) {
-+ if (devstat & UDC_ATT) {
-+ UDCDBG ("device attached and powered");
-+ udc_state_transition_up (udc_device->device_state, STATE_POWERED);
-+ } else {
-+ UDCDBG ("device detached or unpowered");
-+ udc_state_transition_down (udc_device->device_state, STATE_ATTACHED);
-+ }
-+ }
-+ if (bits & UDC_USB_Reset) {
-+ if (devstat & UDC_USB_Reset) {
-+ UDCDBG ("device reset in progess");
-+ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
-+ } else {
-+ UDCDBG ("device reset completed");
-+ }
-+ }
-+ if (bits & UDC_DEF) {
-+ if (devstat & UDC_DEF) {
-+ UDCDBG ("device entering default state");
-+ udc_state_transition_up (udc_device->device_state, STATE_DEFAULT);
-+ } else {
-+ UDCDBG ("device leaving default state");
-+ udc_state_transition_down (udc_device->device_state, STATE_POWERED);
-+ }
-+ }
-+ if (bits & UDC_SUS) {
-+ if (devstat & UDC_SUS) {
-+ UDCDBG ("entering suspended state");
-+ usbd_device_event_irq (udc_device, DEVICE_BUS_INACTIVE, 0);
-+ } else {
-+ UDCDBG ("leaving suspended state");
-+ usbd_device_event_irq (udc_device, DEVICE_BUS_ACTIVITY, 0);
-+ }
-+ }
-+ if (bits & UDC_R_WK_OK) {
-+ UDCDBGA ("remote wakeup %s", (devstat & UDC_R_WK_OK)
-+ ? "enabled" : "disabled");
-+ }
-+ if (bits & UDC_ADD) {
-+ if (devstat & UDC_ADD) {
-+ UDCDBG ("default -> addressed");
-+ udc_state_transition_up (udc_device->device_state, STATE_ADDRESSED);
-+ } else {
-+ UDCDBG ("addressed -> default");
-+ udc_state_transition_down (udc_device->device_state, STATE_DEFAULT);
-+ }
-+ }
-+ if (bits & UDC_CFG) {
-+ if (devstat & UDC_CFG) {
-+ UDCDBG ("device configured");
-+ /* The ep0_recv_setup function generates the
-+ * DEVICE_CONFIGURED event when a
-+ * USB_REQ_SET_CONFIGURATION setup packet is
-+ * received, so we should already be in the
-+ * state STATE_CONFIGURED.
-+ */
-+ udc_state_transition_up (udc_device->device_state, STATE_CONFIGURED);
-+ } else {
-+ UDCDBG ("device deconfigured");
-+ udc_state_transition_down (udc_device->device_state, STATE_ADDRESSED);
-+ }
-+ }
-+ }
-+
-+ /* Clear interrupt source */
-+ outw (UDC_DS_Chg, UDC_IRQ_SRC);
-+
-+ /* Save current DEVSTAT */
-+ udc_devstat = devstat;
-+}
-+
-+static void s3c2410_udc_ep0(void)
-+{
-+ u_int8_t ep0csr;
-+
-+ UDCDBG("-> Entering EP0 handler");
-+
-+ S3C2410_UDC_SETIX(EP0);
-+ ep0csr = inb(S3C2410_UDC_IN_CSR1_REG);
-+
-+ /* clear stall status */
-+ if (ep0csr & S3C2410_UDC_EP0_CSR_SENTSTL) {
-+ clear_sp0_sst;
-+ /* FIXME */
-+ ep0_idle();
-+ }
-+
-+ if (ep0csr & S3C2410_UDC_EP0_CSR_SE
-+ && dev->ep0state != EP0_IDLE) {
-+ clear_ep0_se;
-+ ep0_idle();
-+ }
-+
-+ switch (dev->ep0state) {
-+ case EP0_IDLE:
-+ if (ep0crs & S3C2410_UDC_EP0_CSR_OPKRDY) {
-+ }
-+ break;
-+ case EP0_IN_DATA_PHASE:
-+ break;
-+ case EP0_OUT_DATA_PHASE:
-+ break;
-+ case EP0_END_XFER:
-+ break;
-+ case EP0_STALL:
-+ set_ep0_ss;
-+ break;
-+ }
-+}
-+
-+
-+}
-+
-+/* Handle SETUP USB interrupt.
-+ * This function implements TRM Figure 14-14.
-+ */
-+static void omap1510_udc_setup (struct usb_endpoint_instance *endpoint)
-+{
-+ UDCDBG ("-> Entering device setup");
-+
-+ do {
-+ const int setup_pktsize = 8;
-+ unsigned char *datap =
-+ (unsigned char *) &ep0_urb->device_request;
-+
-+ /* Gain access to EP 0 setup FIFO */
-+ outw (UDC_Setup_Sel, UDC_EP_NUM);
-+
-+ /* Read control request data */
-+ insb (UDC_DATA, datap, setup_pktsize);
-+
-+ UDCDBGA ("EP0 setup read [%x %x %x %x %x %x %x %x]",
-+ *(datap + 0), *(datap + 1), *(datap + 2),
-+ *(datap + 3), *(datap + 4), *(datap + 5),
-+ *(datap + 6), *(datap + 7));
-+
-+ /* Reset EP0 setup FIFO */
-+ outw (0, UDC_EP_NUM);
-+ } while (inw (UDC_IRQ_SRC) & UDC_Setup);
-+
-+ /* Try to process setup packet */
-+ if (ep0_recv_setup (ep0_urb)) {
-+ /* Not a setup packet, stall next EP0 transaction */
-+ udc_stall_ep (0);
-+ UDCDBG ("can't parse setup packet, still waiting for setup");
-+ return;
-+ }
-+
-+ /* Check direction */
-+ if ((ep0_urb->device_request.bmRequestType & USB_REQ_DIRECTION_MASK)
-+ == USB_REQ_HOST2DEVICE) {
-+ UDCDBG ("control write on EP0");
-+ if (le16_to_cpu (ep0_urb->device_request.wLength)) {
-+ /* We don't support control write data stages.
-+ * The only standard control write request with a data
-+ * stage is SET_DESCRIPTOR, and ep0_recv_setup doesn't
-+ * support that so we just stall those requests. A
-+ * function driver might support a non-standard
-+ * write request with a data stage, but it isn't
-+ * obvious what we would do with the data if we read it
-+ * so we'll just stall it. It seems like the API isn't
-+ * quite right here.
-+ */
-+#if 0
-+ /* Here is what we would do if we did support control
-+ * write data stages.
-+ */
-+ ep0_urb->actual_length = 0;
-+ outw (0, UDC_EP_NUM);
-+ /* enable the EP0 rx FIFO */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+#else
-+ /* Stall this request */
-+ UDCDBG ("Stalling unsupported EP0 control write data "
-+ "stage.");
-+ udc_stall_ep (0);
-+#endif
-+ } else {
-+ omap1510_prepare_for_control_write_status (ep0_urb);
-+ }
-+ } else {
-+ UDCDBG ("control read on EP0");
-+ /* The ep0_recv_setup function has already placed our response
-+ * packet data in ep0_urb->buffer and the packet length in
-+ * ep0_urb->actual_length.
-+ */
-+ endpoint->tx_urb = ep0_urb;
-+ endpoint->sent = 0;
-+ /* select the EP0 tx FIFO */
-+ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+ /* Write packet data to the FIFO. omap1510_write_noniso_tx_fifo
-+ * will update endpoint->last with the number of bytes written
-+ * to the FIFO.
-+ */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable the FIFO to start the packet transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the EP0 tx FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ }
-+
-+ UDCDBG ("<- Leaving device setup");
-+}
-+
-+/* Handle endpoint 0 RX interrupt
-+ * This routine implements TRM Figure 14-16.
-+ */
-+static void omap1510_udc_ep0_rx (struct usb_endpoint_instance *endpoint)
-+{
-+ unsigned short status;
-+
-+ UDCDBG ("RX on EP0");
-+ /* select EP0 rx FIFO */
-+ outw (UDC_EP_Sel, UDC_EP_NUM);
-+
-+ status = inw (UDC_STAT_FLG);
-+
-+ if (status & UDC_ACK) {
-+ /* Check direction */
-+ if ((ep0_urb->device_request.bmRequestType
-+ & USB_REQ_DIRECTION_MASK) == USB_REQ_HOST2DEVICE) {
-+ /* This rx interrupt must be for a control write data
-+ * stage packet.
-+ *
-+ * We don't support control write data stages.
-+ * We should never end up here.
-+ */
-+
-+ /* clear the EP0 rx FIFO */
-+ outw (UDC_Clr_EP, UDC_CTRL);
-+
-+ /* deselect the EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+
-+ UDCDBG ("Stalling unexpected EP0 control write "
-+ "data stage packet");
-+ udc_stall_ep (0);
-+ } else {
-+ /* This rx interrupt must be for a control read status
-+ * stage packet.
-+ */
-+ UDCDBG ("ACK on EP0 control read status stage packet");
-+ /* deselect EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+ }
-+ } else if (status & UDC_STALL) {
-+ UDCDBG ("EP0 stall during RX");
-+ /* deselect EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+ } else {
-+ /* deselect EP0 rx FIFO */
-+ outw (0, UDC_EP_NUM);
-+ }
-+}
-+
-+/* Handle endpoint 0 TX interrupt
-+ * This routine implements TRM Figure 14-18.
-+ */
-+static void omap1510_udc_ep0_tx (struct usb_endpoint_instance *endpoint)
-+{
-+ unsigned short status;
-+ struct usb_device_request *request = &ep0_urb->device_request;
-+
-+ UDCDBG ("TX on EP0");
-+ /* select EP0 TX FIFO */
-+ outw (UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+
-+ status = inw (UDC_STAT_FLG);
-+ if (status & UDC_ACK) {
-+ /* Check direction */
-+ if ((request->bmRequestType & USB_REQ_DIRECTION_MASK) ==
-+ USB_REQ_HOST2DEVICE) {
-+ /* This tx interrupt must be for a control write status
-+ * stage packet.
-+ */
-+ UDCDBG ("ACK on EP0 control write status stage packet");
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ } else {
-+ /* This tx interrupt must be for a control read data
-+ * stage packet.
-+ */
-+ int wLength = le16_to_cpu (request->wLength);
-+
-+ /* Update our count of bytes sent so far in this
-+ * transfer.
-+ */
-+ endpoint->sent += endpoint->last;
-+
-+ /* We are finished with this transfer if we have sent
-+ * all of the bytes in our tx urb (urb->actual_length)
-+ * unless we need a zero-length terminating packet. We
-+ * need a zero-length terminating packet if we returned
-+ * fewer bytes than were requested (wLength) by the host,
-+ * and the number of bytes we returned is an exact
-+ * multiple of the packet size endpoint->tx_packetSize.
-+ */
-+ if ((endpoint->sent == ep0_urb->actual_length)
-+ && ((ep0_urb->actual_length == wLength)
-+ || (endpoint->last !=
-+ endpoint->tx_packetSize))) {
-+ /* Done with control read data stage. */
-+ UDCDBG ("control read data stage complete");
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ /* select EP0 RX FIFO to prepare for control
-+ * read status stage.
-+ */
-+ outw (UDC_EP_Sel, UDC_EP_NUM);
-+ /* clear the EP0 RX FIFO */
-+ outw (UDC_Clr_EP, UDC_CTRL);
-+ /* enable the EP0 RX FIFO */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the EP0 RX FIFO */
-+ outw (0, UDC_EP_NUM);
-+ } else {
-+ /* We still have another packet of data to send
-+ * in this control read data stage or else we
-+ * need a zero-length terminating packet.
-+ */
-+ UDCDBG ("ACK control read data stage packet");
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable the EP0 tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ }
-+ }
-+ } else if (status & UDC_STALL) {
-+ UDCDBG ("EP0 stall during TX");
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ } else {
-+ /* deselect EP0 TX FIFO */
-+ outw (UDC_EP_Dir, UDC_EP_NUM);
-+ }
-+}
-+
-+/* Handle RX transaction on non-ISO endpoint.
-+ * This function implements TRM Figure 14-27.
-+ * The ep argument is a physical endpoint number for a non-ISO OUT endpoint
-+ * in the range 1 to 15.
-+ */
-+static void omap1510_udc_epn_rx (int ep)
-+{
-+ unsigned short status;
-+
-+ /* Check endpoint status */
-+ status = inw (UDC_STAT_FLG);
-+
-+ if (status & UDC_ACK) {
-+ int nbytes;
-+ struct usb_endpoint_instance *endpoint =
-+ omap1510_find_ep (ep);
-+
-+ nbytes = omap1510_read_noniso_rx_fifo (endpoint);
-+ usbd_rcv_complete (endpoint, nbytes, 0);
-+
-+ /* enable rx FIFO to prepare for next packet */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ } else if (status & UDC_STALL) {
-+ UDCDBGA ("STALL on RX endpoint %d", ep);
-+ } else if (status & UDC_NAK) {
-+ UDCDBGA ("NAK on RX ep %d", ep);
-+ } else {
-+ serial_printf ("omap-bi: RX on ep %d with status %x", ep,
-+ status);
-+ }
-+}
-+
-+/* Handle TX transaction on non-ISO endpoint.
-+ * This function implements TRM Figure 14-29.
-+ * The ep argument is a physical endpoint number for a non-ISO IN endpoint
-+ * in the range 16 to 30.
-+ */
-+static void omap1510_udc_epn_tx (int ep)
-+{
-+ unsigned short status;
-+
-+ /*serial_printf("omap1510_udc_epn_tx( %x )\n",ep); */
-+
-+ /* Check endpoint status */
-+ status = inw (UDC_STAT_FLG);
-+
-+ if (status & UDC_ACK) {
-+ struct usb_endpoint_instance *endpoint =
-+ omap1510_find_ep (ep);
-+
-+ /* We need to transmit a terminating zero-length packet now if
-+ * we have sent all of the data in this URB and the transfer
-+ * size was an exact multiple of the packet size.
-+ */
-+ if (endpoint->tx_urb
-+ && (endpoint->last == endpoint->tx_packetSize)
-+ && (endpoint->tx_urb->actual_length - endpoint->sent -
-+ endpoint->last == 0)) {
-+ /* Prepare to transmit a zero-length packet. */
-+ endpoint->sent += endpoint->last;
-+ /* write 0 bytes of data to FIFO */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ } else if (endpoint->tx_urb
-+ && endpoint->tx_urb->actual_length) {
-+ /* retire the data that was just sent */
-+ usbd_tx_complete (endpoint);
-+ /* Check to see if we have more data ready to transmit
-+ * now.
-+ */
-+ if (endpoint->tx_urb
-+ && endpoint->tx_urb->actual_length) {
-+ /* write data to FIFO */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ }
-+ }
-+ } else if (status & UDC_STALL) {
-+ UDCDBGA ("STALL on TX endpoint %d", ep);
-+ } else if (status & UDC_NAK) {
-+ UDCDBGA ("NAK on TX endpoint %d", ep);
-+ } else {
-+ /*serial_printf("omap-bi: TX on ep %d with status %x\n", ep, status); */
-+ }
-+}
-+
-+
-+/*
-+-------------------------------------------------------------------------------
-+*/
-+
-+/* Handle general USB interrupts and dispatch according to type.
-+ * This function implements TRM Figure 14-13.
-+ */
-+void s3c2410_udc_irq (void)
-+{
-+ u_int8_t save_idx = inb(S3C2410_UDC_INDEX_REG);
-+ u_int8_t usb_status = inb(S3C2410_UDC_USB_INT_REG);
-+ u_int8_t usbd_status = inb(S3C2410_UDC_EP_INT_REG);
-+
-+ UDCDBGA("< IRQ usbs=0x%02x, usbds=0x%02x start >", usb_status,
-+ usbd_status);
-+
-+ if (usb_status & S3C2410_UDC_USBINT_RESET) {
-+ valid_irq++;
-+ }
-+
-+ if (usb_status & S3C2410_UDC_USBINT_RESUME) {
-+ valid_irq++;
-+
-+ }
-+
-+ if (usb_status & S3C2410_UDC_USBINT_SUSPEND) {
-+ valid_irq++;
-+
-+ }
-+
-+ /* Endpoint Interrupts */
-+ if (usbd_status) {
-+ int i;
-+
-+ if (usbd_status & S3C2410_UDC_INT_EP0) {
-+ s3c2410_udc_ep0();
-+ outb(S3C2410_UDC_INT_EP0, S3C2410_UDC_EP_INT_REG);
-+ valid_irq++;
-+ }
-+
-+ for (i = 1; i < 5; i++) {
-+ u_int32_t tmp = 1 << i;
-+
-+ if (usbd_status & tmp) {
-+ /* FIXME: Handle EP X */
-+ s3c2410_udc_epn(i);
-+ outb(tmp, S3C2410_UDC_EP_INT_REG);
-+ valid_irq++;
-+ }
-+ }
-+ }
-+ outb(save_idx, S3C2410_UDC_INDEX_REG);
-+
-+#if 0
-+ if (!(irq_src & ~UDC_SOF_Flg)) /* ignore SOF interrupts ) */
-+ return;
-+
-+ UDCDBGA ("< IRQ #%d start >- %x", udc_interrupts, irq_src);
-+ /*serial_printf("< IRQ #%d start >- %x\n", udc_interrupts, irq_src); */
-+
-+ if (irq_src & UDC_DS_Chg) {
-+ /* Device status changed */
-+ omap1510_udc_state_changed ();
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_EP0_RX) {
-+ /* Endpoint 0 receive */
-+ outw (UDC_EP0_RX, UDC_IRQ_SRC); /* ack interrupt */
-+ omap1510_udc_ep0_rx (udc_device->bus->endpoint_array + 0);
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_EP0_TX) {
-+ /* Endpoint 0 transmit */
-+ outw (UDC_EP0_TX, UDC_IRQ_SRC); /* ack interrupt */
-+ omap1510_udc_ep0_tx (udc_device->bus->endpoint_array + 0);
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_Setup) {
-+ /* Device setup */
-+ omap1510_udc_setup (udc_device->bus->endpoint_array + 0);
-+ valid_irq++;
-+ }
-+ /*if (!valid_irq) */
-+ /* serial_printf("unknown interrupt, IRQ_SRC %.4x\n", irq_src); */
-+#endif
-+ UDCDBGA ("< IRQ end >", udc_interrupts);
-+
-+ udc_interrupts++;
-+}
-+
-+/* This function implements TRM Figure 14-26. */
-+void omap1510_udc_noniso_irq (void)
-+{
-+ unsigned short epnum;
-+ unsigned short irq_src = inw (UDC_IRQ_SRC);
-+ int valid_irq = 0;
-+
-+ if (!(irq_src & (UDC_EPn_RX | UDC_EPn_TX)))
-+ return;
-+
-+ UDCDBGA ("non-ISO IRQ, IRQ_SRC %x", inw (UDC_IRQ_SRC));
-+
-+ if (irq_src & UDC_EPn_RX) { /* Endpoint N OUT transaction */
-+ /* Determine the endpoint number for this interrupt */
-+ epnum = (inw (UDC_EPN_STAT) & 0x0f00) >> 8;
-+ UDCDBGA ("RX on ep %x", epnum);
-+
-+ /* acknowledge interrupt */
-+ outw (UDC_EPn_RX, UDC_IRQ_SRC);
-+
-+ if (epnum) {
-+ /* select the endpoint FIFO */
-+ outw (UDC_EP_Sel | epnum, UDC_EP_NUM);
-+
-+ omap1510_udc_epn_rx (epnum);
-+
-+ /* deselect the endpoint FIFO */
-+ outw (epnum, UDC_EP_NUM);
-+ }
-+ valid_irq++;
-+ }
-+ if (irq_src & UDC_EPn_TX) { /* Endpoint N IN transaction */
-+ /* Determine the endpoint number for this interrupt */
-+ epnum = (inw (UDC_EPN_STAT) & 0x000f) | USB_DIR_IN;
-+ UDCDBGA ("TX on ep %x", epnum);
-+
-+ /* acknowledge interrupt */
-+ outw (UDC_EPn_TX, UDC_IRQ_SRC);
-+
-+ if (epnum) {
-+ /* select the endpoint FIFO */
-+ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
-+
-+ omap1510_udc_epn_tx (epnum);
-+
-+ /* deselect the endpoint FIFO */
-+ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
-+ }
-+ valid_irq++;
-+ }
-+ if (!valid_irq)
-+ serial_printf (": unknown non-ISO interrupt, IRQ_SRC %.4x\n",
-+ irq_src);
-+}
-+
-+/*
-+-------------------------------------------------------------------------------
-+*/
-+
-+
-+/*
-+ * Start of public functions.
-+ */
-+
-+/* Called to start packet transmission. */
-+void udc_endpoint_write (struct usb_endpoint_instance *endpoint)
-+{
-+ unsigned short epnum =
-+ endpoint->endpoint_address & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("Starting transmit on ep %x", epnum);
-+
-+ if (endpoint->tx_urb) {
-+ /* select the endpoint FIFO */
-+ outw (UDC_EP_Sel | UDC_EP_Dir | epnum, UDC_EP_NUM);
-+ /* write data to FIFO */
-+ omap1510_write_noniso_tx_fifo (endpoint);
-+ /* enable tx FIFO to start transmission */
-+ outw (UDC_Set_FIFO_En, UDC_CTRL);
-+ /* deselect the endpoint FIFO */
-+ outw (UDC_EP_Dir | epnum, UDC_EP_NUM);
-+ }
-+}
-+
-+/* Start to initialize h/w stuff */
-+int udc_init (void)
-+{
-+ u16 udc_rev;
-+ uchar value;
-+ ulong gpio;
-+ int i;
-+
-+ /* Let the device settle down before we start */
-+ for (i = 0; i < UDC_INIT_MDELAY; i++) udelay(1000);
-+
-+ udc_device = NULL;
-+
-+ UDCDBG ("starting");
-+
-+ /* Check peripheral reset. Must be 1 to make sure
-+ MPU TIPB peripheral reset is inactive */
-+ UDCREG (ARM_RSTCT2);
-+
-+ /* Set and check clock control.
-+ * We might ought to be using the clock control API to do
-+ * this instead of fiddling with the clock registers directly
-+ * here.
-+ */
-+ outw ((1 << 4) | (1 << 5), CLOCK_CTRL);
-+ UDCREG (CLOCK_CTRL);
-+ /* Set and check APLL */
-+ outw (0x0008, APLL_CTRL);
-+ UDCREG (APLL_CTRL);
-+ /* Set and check DPLL */
-+ outw (0x2210, DPLL_CTRL);
-+ UDCREG (DPLL_CTRL);
-+ /* Set and check SOFT */
-+ outw ((1 << 4) | (1 << 3) | 1, SOFT_REQ);
-+ /* Short delay to wait for DPLL */
-+ udelay (1000);
-+
-+ /* Print banner with device revision */
-+ udc_rev = inw (UDC_REV) & 0xff;
-+ printf ("USB: TI OMAP1510 USB function module rev %d.%d\n",
-+ udc_rev >> 4, udc_rev & 0xf);
-+
-+#ifdef CONFIG_OMAP_SX1
-+ i2c_read (0x32, 0x04, 1, &value, 1);
-+ value |= 0x04;
-+ i2c_write (0x32, 0x04, 1, &value, 1);
-+
-+ i2c_read (0x32, 0x03, 1, &value, 1);
-+ value |= 0x01;
-+ i2c_write (0x32, 0x03, 1, &value, 1);
-+
-+ gpio = inl(GPIO_PIN_CONTROL_REG);
-+ gpio |= 0x0002; /* A_IRDA_OFF */
-+ gpio |= 0x0800; /* A_SWITCH */
-+ gpio |= 0x8000; /* A_USB_ON */
-+ outl (gpio, GPIO_PIN_CONTROL_REG);
-+
-+ gpio = inl(GPIO_DIR_CONTROL_REG);
-+ gpio &= ~0x0002; /* A_IRDA_OFF */
-+ gpio &= ~0x0800; /* A_SWITCH */
-+ gpio &= ~0x8000; /* A_USB_ON */
-+ outl (gpio, GPIO_DIR_CONTROL_REG);
-+
-+ gpio = inl(GPIO_DATA_OUTPUT_REG);
-+ gpio |= 0x0002; /* A_IRDA_OFF */
-+ gpio &= ~0x0800; /* A_SWITCH */
-+ gpio &= ~0x8000; /* A_USB_ON */
-+ outl (gpio, GPIO_DATA_OUTPUT_REG);
-+#endif
-+
-+ /* The VBUS_MODE bit selects whether VBUS detection is done via
-+ * software (1) or hardware (0). When software detection is
-+ * selected, VBUS_CTRL selects whether USB is not connected (0)
-+ * or connected (1).
-+ */
-+ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
-+ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
-+ UDCREGL (FUNC_MUX_CTRL_0);
-+
-+ /*
-+ * At this point, device is ready for configuration...
-+ */
-+
-+ UDCDBG ("disable USB interrupts");
-+ outw (0, UDC_IRQ_EN);
-+ UDCREG (UDC_IRQ_EN);
-+
-+ UDCDBG ("disable USB DMA");
-+ outw (0, UDC_DMA_IRQ_EN);
-+ UDCREG (UDC_DMA_IRQ_EN);
-+
-+ UDCDBG ("initialize SYSCON1");
-+ outw (UDC_Self_Pwr | UDC_Pullup_En, UDC_SYSCON1);
-+ UDCREG (UDC_SYSCON1);
-+
-+ return 0;
-+}
-+
-+/* Stall endpoint */
-+static void udc_stall_ep (unsigned int ep_addr)
-+{
-+ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("stall ep_addr %d", ep_addr);
-+
-+ /* REVISIT?
-+ * The OMAP TRM section 14.2.4.2 says we must check that the FIFO
-+ * is empty before halting the endpoint. The current implementation
-+ * doesn't check that the FIFO is empty.
-+ */
-+
-+ if (!ep_num) {
-+ outw (UDC_Stall_Cmd, UDC_SYSCON2);
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
-+ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
-+ /* we have a valid rx endpoint, so halt it */
-+ outw (UDC_EP_Sel | ep_num, UDC_EP_NUM);
-+ outw (UDC_Set_Halt, UDC_CTRL);
-+ outw (ep_num, UDC_EP_NUM);
-+ }
-+ } else {
-+ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
-+ /* we have a valid tx endpoint, so halt it */
-+ outw (UDC_EP_Sel | UDC_EP_Dir | ep_num, UDC_EP_NUM);
-+ outw (UDC_Set_Halt, UDC_CTRL);
-+ outw (ep_num, UDC_EP_NUM);
-+ }
-+ }
-+}
-+
-+/* Reset endpoint */
-+#if 0
-+static void udc_reset_ep (unsigned int ep_addr)
-+{
-+ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+
-+ UDCDBGA ("reset ep_addr %d", ep_addr);
-+
-+ if (!ep_num) {
-+ /* control endpoint 0 can't be reset */
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
-+ UDCDBGA ("UDC_EP_RX(%d) = 0x%04x", ep_num,
-+ inw (UDC_EP_RX (ep_num)));
-+ if (inw (UDC_EP_RX (ep_num)) & UDC_EPn_RX_Valid) {
-+ /* we have a valid rx endpoint, so reset it */
-+ outw (ep_num | UDC_EP_Sel, UDC_EP_NUM);
-+ outw (UDC_Reset_EP, UDC_CTRL);
-+ outw (ep_num, UDC_EP_NUM);
-+ UDCDBGA ("OUT endpoint %d reset", ep_num);
-+ }
-+ } else {
-+ UDCDBGA ("UDC_EP_TX(%d) = 0x%04x", ep_num,
-+ inw (UDC_EP_TX (ep_num)));
-+ /* Resetting of tx endpoints seems to be causing the USB function
-+ * module to fail, which causes problems when the driver is
-+ * uninstalled. We'll skip resetting tx endpoints for now until
-+ * we figure out what the problem is.
-+ */
-+#if 0
-+ if (inw (UDC_EP_TX (ep_num)) & UDC_EPn_TX_Valid) {
-+ /* we have a valid tx endpoint, so reset it */
-+ outw (ep_num | UDC_EP_Dir | UDC_EP_Sel, UDC_EP_NUM);
-+ outw (UDC_Reset_EP, UDC_CTRL);
-+ outw (ep_num | UDC_EP_Dir, UDC_EP_NUM);
-+ UDCDBGA ("IN endpoint %d reset", ep_num);
-+ }
-+#endif
-+ }
-+}
-+#endif
-+
-+/* ************************************************************************** */
-+
-+/**
-+ * udc_check_ep - check logical endpoint
-+ *
-+ * Return physical endpoint number to use for this logical endpoint or zero if not valid.
-+ */
-+#if 0
-+int udc_check_ep (int logical_endpoint, int packetsize)
-+{
-+ if ((logical_endpoint == 0x80) ||
-+ ((logical_endpoint & 0x8f) != logical_endpoint)) {
-+ return 0;
-+ }
-+
-+ switch (packetsize) {
-+ case 8:
-+ case 16:
-+ case 32:
-+ case 64:
-+ case 128:
-+ case 256:
-+ case 512:
-+ break;
-+ default:
-+ return 0;
-+ }
-+
-+ return EP_ADDR_TO_PHYS_EP (logical_endpoint);
-+}
-+#endif
-+
-+/*
-+ * udc_setup_ep - setup endpoint
-+ *
-+ * Associate a physical endpoint with endpoint_instance
-+ */
-+void udc_setup_ep (struct usb_device_instance *device,
-+ unsigned int ep, struct usb_endpoint_instance *endpoint)
-+{
-+ UDCDBGA ("setting up endpoint addr %x", endpoint->endpoint_address);
-+
-+ /* This routine gets called by bi_modinit for endpoint 0 and from
-+ * bi_config for all of the other endpoints. bi_config gets called
-+ * during the DEVICE_CREATE, DEVICE_CONFIGURED, and
-+ * DEVICE_SET_INTERFACE events. We need to reconfigure the OMAP packet
-+ * RAM after bi_config scans the selected device configuration and
-+ * initializes the endpoint structures, but before this routine enables
-+ * the OUT endpoint FIFOs. Since bi_config calls this routine in a
-+ * loop for endpoints 1 through UDC_MAX_ENDPOINTS, we reconfigure our
-+ * packet RAM here when ep==1.
-+ * I really hate to do this here, but it seems like the API exported
-+ * by the USB bus interface controller driver to the usbd-bi module
-+ * isn't quite right so there is no good place to do this.
-+ */
-+ if (ep == 1) {
-+ omap1510_deconfigure_device ();
-+ omap1510_configure_device (device);
-+ }
-+
-+ if (endpoint && (ep < UDC_MAX_ENDPOINTS)) {
-+ int ep_addr = endpoint->endpoint_address;
-+
-+ if (!ep_addr) {
-+ /* nothing to do for endpoint 0 */
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ /* nothing to do for IN (tx) endpoints */
-+ } else { /* OUT (rx) endpoint */
-+ if (endpoint->rcv_packetSize) {
-+ /*struct urb* urb = &(urb_out_array[ep&0xFF]); */
-+ /*urb->endpoint = endpoint; */
-+ /*urb->device = device; */
-+ /*urb->buffer_length = sizeof(urb->buffer); */
-+
-+ /*endpoint->rcv_urb = urb; */
-+ omap1510_prepare_endpoint_for_rx (ep_addr);
-+ }
-+ }
-+ }
-+}
-+
-+/**
-+ * udc_disable_ep - disable endpoint
-+ * @ep:
-+ *
-+ * Disable specified endpoint
-+ */
-+#if 0
-+void udc_disable_ep (unsigned int ep_addr)
-+{
-+ /*int ep_addr = PHYS_EP_TO_EP_ADDR(ep); */
-+ int ep_num = ep_addr & USB_ENDPOINT_NUMBER_MASK;
-+ struct usb_endpoint_instance *endpoint = omap1510_find_ep (ep_addr); /*udc_device->bus->endpoint_array + ep; */
-+
-+ UDCDBGA ("disable ep_addr %d", ep_addr);
-+
-+ if (!ep_num) {
-+ /* nothing to do for endpoint 0 */ ;
-+ } else if ((ep_addr & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-+ if (endpoint->tx_packetSize) {
-+ /* we have a valid tx endpoint */
-+ /*usbd_flush_tx(endpoint); */
-+ endpoint->tx_urb = NULL;
-+ }
-+ } else {
-+ if (endpoint->rcv_packetSize) {
-+ /* we have a valid rx endpoint */
-+ /*usbd_flush_rcv(endpoint); */
-+ endpoint->rcv_urb = NULL;
-+ }
-+ }
-+}
-+#endif
-+
-+/* ************************************************************************** */
-+
-+/**
-+ * udc_connected - is the USB cable connected
-+ *
-+ * Return non-zero if cable is connected.
-+ */
-+#if 0
-+int udc_connected (void)
-+{
-+ return ((inw (UDC_DEVSTAT) & UDC_ATT) == UDC_ATT);
-+}
-+#endif
-+
-+/* Turn on the USB connection by enabling the pullup resistor */
-+void udc_connect (void)
-+{
-+ UDCDBG ("connect, enable Pullup");
-+}
-+
-+/* Turn off the USB connection by disabling the pullup resistor */
-+void udc_disconnect (void)
-+{
-+ UDCDBG ("disconnect, disable Pullup");
-+}
-+
-+/* ************************************************************************** */
-+
-+
-+/*
-+ * udc_disable_interrupts - disable interrupts
-+ * switch off interrupts
-+ */
-+#if 0
-+void udc_disable_interrupts (struct usb_device_instance *device)
-+{
-+ UDCDBG ("disabling all interrupts");
-+ outw (0, UDC_IRQ_EN);
-+}
-+#endif
-+
-+/* ************************************************************************** */
-+
-+/**
-+ * udc_ep0_packetsize - return ep0 packetsize
-+ */
-+#if 0
-+int udc_ep0_packetsize (void)
-+{
-+ return EP0_PACKETSIZE;
-+}
-+#endif
-+
-+/* Switch on the UDC */
-+void udc_enable (struct usb_device_instance *device)
-+{
-+ UDCDBGA ("enable device %p, status %d", device, device->status);
-+
-+ /* initialize driver state variables */
-+ udc_devstat = 0;
-+
-+ /* Save the device structure pointer */
-+ udc_device = device;
-+
-+ /* Setup ep0 urb */
-+ if (!ep0_urb) {
-+ ep0_urb =
-+ usbd_alloc_urb (udc_device,
-+ udc_device->bus->endpoint_array);
-+ } else {
-+ serial_printf ("udc_enable: ep0_urb already allocated %p\n",
-+ ep0_urb);
-+ }
-+
-+#ifdef FIXME
-+ /* The VBUS_MODE bit selects whether VBUS detection is done via
-+ * software (1) or hardware (0). When software detection is
-+ * selected, VBUS_CTRL selects whether USB is not connected (0)
-+ * or connected (1).
-+ */
-+ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_CTRL | UDC_VBUS_MODE,
-+ FUNC_MUX_CTRL_0);
-+ UDCREGL (FUNC_MUX_CTRL_0);
-+#endif
-+
-+ s3c2410_configure_device(device);
-+}
-+
-+/* Switch off the UDC */
-+void udc_disable (void)
-+{
-+ UDCDBG ("disable UDC");
-+
-+ s3c2410_deconfigure_device();
-+
-+#ifdef FIXME
-+ /* The VBUS_MODE bit selects whether VBUS detection is done via
-+ * software (1) or hardware (0). When software detection is
-+ * selected, VBUS_CTRL selects whether USB is not connected (0)
-+ * or connected (1).
-+ */
-+ outl (inl (FUNC_MUX_CTRL_0) | UDC_VBUS_MODE, FUNC_MUX_CTRL_0);
-+ outl (inl (FUNC_MUX_CTRL_0) & ~UDC_VBUS_CTRL, FUNC_MUX_CTRL_0);
-+ UDCREGL (FUNC_MUX_CTRL_0);
-+#endif
-+
-+ /* Free ep0 URB */
-+ if (ep0_urb) {
-+ /*usbd_dealloc_urb(ep0_urb); */
-+ ep0_urb = NULL;
-+ }
-+
-+ /* Reset device pointer.
-+ * We ought to do this here to balance the initialization of udc_device
-+ * in udc_enable, but some of our other exported functions get called
-+ * by the bus interface driver after udc_disable, so we have to hang on
-+ * to the device pointer to avoid a null pointer dereference. */
-+ /* udc_device = NULL; */
-+}
-+
-+/**
-+ * udc_startup - allow udc code to do any additional startup
-+ */
-+void udc_startup_events (struct usb_device_instance *device)
-+{
-+ /* The DEVICE_INIT event puts the USB device in the state STATE_INIT. */
-+ usbd_device_event_irq (device, DEVICE_INIT, 0);
-+
-+ /* The DEVICE_CREATE event puts the USB device in the state
-+ * STATE_ATTACHED.
-+ */
-+ usbd_device_event_irq (device, DEVICE_CREATE, 0);
-+
-+ /* Some USB controller driver implementations signal
-+ * DEVICE_HUB_CONFIGURED and DEVICE_RESET events here.
-+ * DEVICE_HUB_CONFIGURED causes a transition to the state STATE_POWERED,
-+ * and DEVICE_RESET causes a transition to the state STATE_DEFAULT.
-+ * The OMAP USB client controller has the capability to detect when the
-+ * USB cable is connected to a powered USB bus via the ATT bit in the
-+ * DEVSTAT register, so we will defer the DEVICE_HUB_CONFIGURED and
-+ * DEVICE_RESET events until later.
-+ */
-+
-+ udc_enable (device);
-+}
-+
-+#endif
-Index: git/fs/cramfs/cramfs.c
-===================================================================
---- git.orig/fs/cramfs/cramfs.c 2007-01-04 12:21:15.000000000 +0100
-+++ git/fs/cramfs/cramfs.c 2007-01-04 12:21:18.000000000 +0100
-@@ -27,7 +27,7 @@
- #include <common.h>
- #include <malloc.h>
-
--#if (CONFIG_COMMANDS & CFG_CMD_JFFS2)
-+#if (CONFIG_COMMANDS & CFG_CMD_CRAMFS)
-
- #include <asm/byteorder.h>
- #include <linux/stat.h>
-@@ -343,5 +343,22 @@
- }
- return 1;
- }
--
-+#else
-+int cramfs_load (char *loadoffset, struct part_info *info, char *filename)
-+{
-+ return -1;
-+}
-+int cramfs_ls (struct part_info *info, char *filename)
-+{
-+ return 0;
-+}
-+int cramfs_info (struct part_info *info)
-+{
-+ return 0;
-+}
-+int cramfs_check (struct part_info *info)
-+{
-+ return 0;
-+}
- #endif /* CFG_FS_CRAMFS */
-+
-Index: git/include/asm-arm/arch-s3c24x0/mmc.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/asm-arm/arch-s3c24x0/mmc.h 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,112 @@
-+/*
-+ * linux/drivers/mmc/mmc_pxa.h
-+ *
-+ * Author: Vladimir Shebordaev, Igor Oblakov
-+ * Copyright: MontaVista Software Inc.
-+ *
-+ * $Id: mmc_pxa.h,v 0.3.1.6 2002/09/25 19:25:48 ted Exp ted $
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+#ifndef __MMC_PXA_P_H__
-+#define __MMC_PXA_P_H__
-+
-+#include <asm/arch/regs-sdi.h>
-+
-+#define MMC_DEFAULT_RCA (1<<16)
-+
-+#define MMC_BLOCK_SIZE 512
-+#define MMC_CMD_RESET 0
-+#define MMC_CMD_SEND_OP_COND 1
-+#define MMC_CMD_ALL_SEND_CID 2
-+#define MMC_CMD_SET_RCA 3
-+#define MMC_CMD_SELECT_CARD 7
-+#define MMC_CMD_SEND_CSD 9
-+#define MMC_CMD_SEND_CID 10
-+#define MMC_CMD_SEND_STATUS 13
-+#define MMC_CMD_SET_BLOCKLEN 16
-+#define MMC_CMD_READ_BLOCK 17
-+#define MMC_CMD_RD_BLK_MULTI 18
-+#define MMC_CMD_WRITE_BLOCK 24
-+
-+#define MMC_MAX_BLOCK_SIZE 512
-+
-+#define MMC_R1_IDLE_STATE 0x01
-+#define MMC_R1_ERASE_STATE 0x02
-+#define MMC_R1_ILLEGAL_CMD 0x04
-+#define MMC_R1_COM_CRC_ERR 0x08
-+#define MMC_R1_ERASE_SEQ_ERR 0x01
-+#define MMC_R1_ADDR_ERR 0x02
-+#define MMC_R1_PARAM_ERR 0x04
-+
-+#define MMC_R1B_WP_ERASE_SKIP 0x0002
-+#define MMC_R1B_ERR 0x0004
-+#define MMC_R1B_CC_ERR 0x0008
-+#define MMC_R1B_CARD_ECC_ERR 0x0010
-+#define MMC_R1B_WP_VIOLATION 0x0020
-+#define MMC_R1B_ERASE_PARAM 0x0040
-+#define MMC_R1B_OOR 0x0080
-+#define MMC_R1B_IDLE_STATE 0x0100
-+#define MMC_R1B_ERASE_RESET 0x0200
-+#define MMC_R1B_ILLEGAL_CMD 0x0400
-+#define MMC_R1B_COM_CRC_ERR 0x0800
-+#define MMC_R1B_ERASE_SEQ_ERR 0x1000
-+#define MMC_R1B_ADDR_ERR 0x2000
-+#define MMC_R1B_PARAM_ERR 0x4000
-+
-+typedef struct mmc_cid
-+{
-+/* FIXME: BYTE_ORDER */
-+ uchar year:4,
-+ month:4;
-+ uchar sn[3];
-+ uchar fwrev:4,
-+ hwrev:4;
-+ uchar name[6];
-+ uchar id[3];
-+} mmc_cid_t;
-+
-+typedef struct mmc_csd
-+{
-+ uchar ecc:2,
-+ file_format:2,
-+ tmp_write_protect:1,
-+ perm_write_protect:1,
-+ copy:1,
-+ file_format_grp:1;
-+ uint64_t content_prot_app:1,
-+ rsvd3:4,
-+ write_bl_partial:1,
-+ write_bl_len:4,
-+ r2w_factor:3,
-+ default_ecc:2,
-+ wp_grp_enable:1,
-+ wp_grp_size:5,
-+ erase_grp_mult:5,
-+ erase_grp_size:5,
-+ c_size_mult1:3,
-+ vdd_w_curr_max:3,
-+ vdd_w_curr_min:3,
-+ vdd_r_curr_max:3,
-+ vdd_r_curr_min:3,
-+ c_size:12,
-+ rsvd2:2,
-+ dsr_imp:1,
-+ read_blk_misalign:1,
-+ write_blk_misalign:1,
-+ read_bl_partial:1;
-+
-+ ushort read_bl_len:4,
-+ ccc:12;
-+ uchar tran_speed;
-+ uchar nsac;
-+ uchar taac;
-+ uchar rsvd1:2,
-+ spec_vers:4,
-+ csd_structure:2;
-+} mmc_csd_t;
-+
-+
-+#endif /* __MMC_PXA_P_H__ */
-Index: git/include/asm-arm/arch-s3c24x0/regs-sdi.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/asm-arm/arch-s3c24x0/regs-sdi.h 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,110 @@
-+/* linux/include/asm/arch-s3c2410/regs-sdi.h
-+ *
-+ * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk>
-+ * http://www.simtec.co.uk/products/SWLINUX/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * S3C2410 MMC/SDIO register definitions
-+ *
-+ * Changelog:
-+ * 18-Aug-2004 Ben Dooks Created initial file
-+ * 29-Nov-2004 Koen Martens Added some missing defines, fixed duplicates
-+ * 29-Nov-2004 Ben Dooks Updated Koen's patch
-+*/
-+
-+#ifndef __ASM_ARM_REGS_SDI
-+#define __ASM_ARM_REGS_SDI "regs-sdi.h"
-+
-+#define S3C2440_SDICON_SDRESET (1<<8)
-+#define S3C2440_SDICON_MMCCLOCK (1<<5)
-+#define S3C2410_SDICON_BYTEORDER (1<<4)
-+#define S3C2410_SDICON_SDIOIRQ (1<<3)
-+#define S3C2410_SDICON_RWAITEN (1<<2)
-+#define S3C2410_SDICON_FIFORESET (1<<1)
-+#define S3C2410_SDICON_CLOCKTYPE (1<<0)
-+
-+#define S3C2410_SDICMDCON_ABORT (1<<12)
-+#define S3C2410_SDICMDCON_WITHDATA (1<<11)
-+#define S3C2410_SDICMDCON_LONGRSP (1<<10)
-+#define S3C2410_SDICMDCON_WAITRSP (1<<9)
-+#define S3C2410_SDICMDCON_CMDSTART (1<<8)
-+#define S3C2410_SDICMDCON_SENDERHOST (1<<6)
-+#define S3C2410_SDICMDCON_INDEX (0x3f)
-+
-+#define S3C2410_SDICMDSTAT_CRCFAIL (1<<12)
-+#define S3C2410_SDICMDSTAT_CMDSENT (1<<11)
-+#define S3C2410_SDICMDSTAT_CMDTIMEOUT (1<<10)
-+#define S3C2410_SDICMDSTAT_RSPFIN (1<<9)
-+#define S3C2410_SDICMDSTAT_XFERING (1<<8)
-+#define S3C2410_SDICMDSTAT_INDEX (0xff)
-+
-+#define S3C2440_SDIDCON_DS_BYTE (0<<22)
-+#define S3C2440_SDIDCON_DS_HALFWORD (1<<22)
-+#define S3C2440_SDIDCON_DS_WORD (2<<22)
-+#define S3C2410_SDIDCON_IRQPERIOD (1<<21)
-+#define S3C2410_SDIDCON_TXAFTERRESP (1<<20)
-+#define S3C2410_SDIDCON_RXAFTERCMD (1<<19)
-+#define S3C2410_SDIDCON_BUSYAFTERCMD (1<<18)
-+#define S3C2410_SDIDCON_BLOCKMODE (1<<17)
-+#define S3C2410_SDIDCON_WIDEBUS (1<<16)
-+#define S3C2410_SDIDCON_DMAEN (1<<15)
-+#define S3C2410_SDIDCON_STOP (1<<14)
-+#define S3C2440_SDIDCON_DATSTART (1<<14)
-+#define S3C2410_SDIDCON_DATMODE (3<<12)
-+#define S3C2410_SDIDCON_BLKNUM (0x7ff)
-+
-+/* constants for S3C2410_SDIDCON_DATMODE */
-+#define S3C2410_SDIDCON_XFER_READY (0<<12)
-+#define S3C2410_SDIDCON_XFER_CHKSTART (1<<12)
-+#define S3C2410_SDIDCON_XFER_RXSTART (2<<12)
-+#define S3C2410_SDIDCON_XFER_TXSTART (3<<12)
-+
-+#define S3C2410_SDIDCON_BLKNUM_MASK (0xFFF)
-+#define S3C2410_SDIDCNT_BLKNUM_SHIFT (12)
-+
-+#define S3C2410_SDIDSTA_RDYWAITREQ (1<<10)
-+#define S3C2410_SDIDSTA_SDIOIRQDETECT (1<<9)
-+#define S3C2410_SDIDSTA_FIFOFAIL (1<<8) /* reserved on 2440 */
-+#define S3C2410_SDIDSTA_CRCFAIL (1<<7)
-+#define S3C2410_SDIDSTA_RXCRCFAIL (1<<6)
-+#define S3C2410_SDIDSTA_DATATIMEOUT (1<<5)
-+#define S3C2410_SDIDSTA_XFERFINISH (1<<4)
-+#define S3C2410_SDIDSTA_BUSYFINISH (1<<3)
-+#define S3C2410_SDIDSTA_SBITERR (1<<2) /* reserved on 2410a/2440 */
-+#define S3C2410_SDIDSTA_TXDATAON (1<<1)
-+#define S3C2410_SDIDSTA_RXDATAON (1<<0)
-+
-+#define S3C2440_SDIFSTA_FIFORESET (1<<16)
-+#define S3C2440_SDIFSTA_FIFOFAIL (3<<14) /* 3 is correct (2 bits) */
-+#define S3C2410_SDIFSTA_TFDET (1<<13)
-+#define S3C2410_SDIFSTA_RFDET (1<<12)
-+#define S3C2410_SDIFSTA_TFHALF (1<<11)
-+#define S3C2410_SDIFSTA_TFEMPTY (1<<10)
-+#define S3C2410_SDIFSTA_RFLAST (1<<9)
-+#define S3C2410_SDIFSTA_RFFULL (1<<8)
-+#define S3C2410_SDIFSTA_RFHALF (1<<7)
-+#define S3C2410_SDIFSTA_COUNTMASK (0x7f)
-+
-+#define S3C2410_SDIIMSK_RESPONSECRC (1<<17)
-+#define S3C2410_SDIIMSK_CMDSENT (1<<16)
-+#define S3C2410_SDIIMSK_CMDTIMEOUT (1<<15)
-+#define S3C2410_SDIIMSK_RESPONSEND (1<<14)
-+#define S3C2410_SDIIMSK_READWAIT (1<<13)
-+#define S3C2410_SDIIMSK_SDIOIRQ (1<<12)
-+#define S3C2410_SDIIMSK_FIFOFAIL (1<<11)
-+#define S3C2410_SDIIMSK_CRCSTATUS (1<<10)
-+#define S3C2410_SDIIMSK_DATACRC (1<<9)
-+#define S3C2410_SDIIMSK_DATATIMEOUT (1<<8)
-+#define S3C2410_SDIIMSK_DATAFINISH (1<<7)
-+#define S3C2410_SDIIMSK_BUSYFINISH (1<<6)
-+#define S3C2410_SDIIMSK_SBITERR (1<<5) /* reserved 2440/2410a */
-+#define S3C2410_SDIIMSK_TXFIFOHALF (1<<4)
-+#define S3C2410_SDIIMSK_TXFIFOEMPTY (1<<3)
-+#define S3C2410_SDIIMSK_RXFIFOLAST (1<<2)
-+#define S3C2410_SDIIMSK_RXFIFOFULL (1<<1)
-+#define S3C2410_SDIIMSK_RXFIFOHALF (1<<0)
-+
-+#endif /* __ASM_ARM_REGS_SDI */
-Index: git/include/asm-arm/mach-types.h
-===================================================================
---- git.orig/include/asm-arm/mach-types.h 2007-01-04 12:21:15.000000000 +0100
-+++ git/include/asm-arm/mach-types.h 2007-01-04 12:21:18.000000000 +0100
-@@ -424,7 +424,7 @@
- #define MACH_TYPE_MPORT3S 411
- #define MACH_TYPE_RA_ALPHA 412
- #define MACH_TYPE_XCEP 413
--#define MACH_TYPE_ARCOM_MERCURY 414
-+#define MACH_TYPE_ARCOM_VULCAN 414
- #define MACH_TYPE_STARGATE 415
- #define MACH_TYPE_ARMADILLOJ 416
- #define MACH_TYPE_ELROY_JACK 417
-@@ -457,7 +457,7 @@
- #define MACH_TYPE_XM250 444
- #define MACH_TYPE_T6TC1XB 445
- #define MACH_TYPE_ESS710 446
--#define MACH_TYPE_MX3ADS 447
-+#define MACH_TYPE_MX31ADS 447
- #define MACH_TYPE_HIMALAYA 448
- #define MACH_TYPE_BOLFENK 449
- #define MACH_TYPE_AT91RM9200KR 450
-@@ -736,7 +736,309 @@
- #define MACH_TYPE_LN2410SBC 725
- #define MACH_TYPE_CB3RUFC 726
- #define MACH_TYPE_MP2USB 727
--#define MACH_TYPE_PDNB3 1002
-+#define MACH_TYPE_NTNP425C 728
-+#define MACH_TYPE_COLIBRI 729
-+#define MACH_TYPE_PCM7220 730
-+#define MACH_TYPE_GATEWAY7001 731
-+#define MACH_TYPE_PCM027 732
-+#define MACH_TYPE_CMPXA 733
-+#define MACH_TYPE_ANUBIS 734
-+#define MACH_TYPE_ITE8152 735
-+#define MACH_TYPE_LPC3XXX 736
-+#define MACH_TYPE_PUPPETEER 737
-+#define MACH_TYPE_MACH_VADATECH 738
-+#define MACH_TYPE_E570 739
-+#define MACH_TYPE_X50 740
-+#define MACH_TYPE_RECON 741
-+#define MACH_TYPE_XBOARDGP8 742
-+#define MACH_TYPE_FPIC2 743
-+#define MACH_TYPE_AKITA 744
-+#define MACH_TYPE_A81 745
-+#define MACH_TYPE_SVM_SC25X 746
-+#define MACH_TYPE_VADATECH020 747
-+#define MACH_TYPE_TLI 748
-+#define MACH_TYPE_EDB9315LC 749
-+#define MACH_TYPE_PASSEC 750
-+#define MACH_TYPE_DS_TIGER 751
-+#define MACH_TYPE_E310 752
-+#define MACH_TYPE_E330 753
-+#define MACH_TYPE_RT3000 754
-+#define MACH_TYPE_NOKIA770 755
-+#define MACH_TYPE_PNX0106 756
-+#define MACH_TYPE_HX21XX 757
-+#define MACH_TYPE_FARADAY 758
-+#define MACH_TYPE_SBC9312 759
-+#define MACH_TYPE_BATMAN 760
-+#define MACH_TYPE_JPD201 761
-+#define MACH_TYPE_MIPSA 762
-+#define MACH_TYPE_KACOM 763
-+#define MACH_TYPE_SWARCOCPU 764
-+#define MACH_TYPE_SWARCODSL 765
-+#define MACH_TYPE_BLUEANGEL 766
-+#define MACH_TYPE_HAIRYGRAMA 767
-+#define MACH_TYPE_BANFF 768
-+#define MACH_TYPE_CARMEVA 769
-+#define MACH_TYPE_SAM255 770
-+#define MACH_TYPE_PPM10 771
-+#define MACH_TYPE_EDB9315A 772
-+#define MACH_TYPE_SUNSET 773
-+#define MACH_TYPE_STARGATE2 774
-+#define MACH_TYPE_INTELMOTE2 775
-+#define MACH_TYPE_TRIZEPS4 776
-+#define MACH_TYPE_MAINSTONE2 777
-+#define MACH_TYPE_EZ_IXP42X 778
-+#define MACH_TYPE_TAPWAVE_ZODIAC 779
-+#define MACH_TYPE_UNIVERSALMETER 780
-+#define MACH_TYPE_HICOARM9 781
-+#define MACH_TYPE_PNX4008 782
-+#define MACH_TYPE_KWS6000 783
-+#define MACH_TYPE_PORTUX920T 784
-+#define MACH_TYPE_EZ_X5 785
-+#define MACH_TYPE_OMAP_RUDOLPH 786
-+#define MACH_TYPE_CPUAT91 787
-+#define MACH_TYPE_REA9200 788
-+#define MACH_TYPE_ACTS_PUNE_SA1110 789
-+#define MACH_TYPE_IXP425 790
-+#define MACH_TYPE_ARGONPLUSODYSSEY 791
-+#define MACH_TYPE_PERCH 792
-+#define MACH_TYPE_EIS05R1 793
-+#define MACH_TYPE_PEPPERPAD 794
-+#define MACH_TYPE_SB3010 795
-+#define MACH_TYPE_RM9200 796
-+#define MACH_TYPE_DMA03 797
-+#define MACH_TYPE_ROAD_S101 798
-+#define MACH_TYPE_IQ_NEXTGEN_A 799
-+#define MACH_TYPE_IQ_NEXTGEN_B 800
-+#define MACH_TYPE_IQ_NEXTGEN_C 801
-+#define MACH_TYPE_IQ_NEXTGEN_D 802
-+#define MACH_TYPE_IQ_NEXTGEN_E 803
-+#define MACH_TYPE_MALLOW_AT91 804
-+#define MACH_TYPE_CYBERTRACKER_I 805
-+#define MACH_TYPE_GESBC931X 806
-+#define MACH_TYPE_CENTIPAD 807
-+#define MACH_TYPE_ARMSOC 808
-+#define MACH_TYPE_SE4200 809
-+#define MACH_TYPE_EMS197A 810
-+#define MACH_TYPE_MICRO9 811
-+#define MACH_TYPE_MICRO9L 812
-+#define MACH_TYPE_UC5471DSP 813
-+#define MACH_TYPE_SJ5471ENG 814
-+#define MACH_TYPE_CMPXA26X 815
-+#define MACH_TYPE_NC 816
-+#define MACH_TYPE_OMAP_PALMTE 817
-+#define MACH_TYPE_AJAX52X 818
-+#define MACH_TYPE_SIRIUSTAR 819
-+#define MACH_TYPE_IODATA_HDLG 820
-+#define MACH_TYPE_AT91RM9200UTL 821
-+#define MACH_TYPE_BIOSAFE 822
-+#define MACH_TYPE_MP1000 823
-+#define MACH_TYPE_PARSY 824
-+#define MACH_TYPE_CCXP 825
-+#define MACH_TYPE_OMAP_GSAMPLE 826
-+#define MACH_TYPE_REALVIEW_EB 827
-+#define MACH_TYPE_SAMOA 828
-+#define MACH_TYPE_T3XSCALE 829
-+#define MACH_TYPE_I878 830
-+#define MACH_TYPE_BORZOI 831
-+#define MACH_TYPE_GECKO 832
-+#define MACH_TYPE_DS101 833
-+#define MACH_TYPE_OMAP_PALMTT2 834
-+#define MACH_TYPE_XSCALE_PALMLD 835
-+#define MACH_TYPE_CC9C 836
-+#define MACH_TYPE_SBC1670 837
-+#define MACH_TYPE_IXDP28X5 838
-+#define MACH_TYPE_OMAP_PALMTT 839
-+#define MACH_TYPE_ML696K 840
-+#define MACH_TYPE_ARCOM_ZEUS 841
-+#define MACH_TYPE_OSIRIS 842
-+#define MACH_TYPE_MAESTRO 843
-+#define MACH_TYPE_TUNGE2 844
-+#define MACH_TYPE_IXBBM 845
-+#define MACH_TYPE_MX27 846
-+#define MACH_TYPE_AX8004 847
-+#define MACH_TYPE_AT91SAM9261EK 848
-+#define MACH_TYPE_LOFT 849
-+#define MACH_TYPE_MAGPIE 850
-+#define MACH_TYPE_MX21 851
-+#define MACH_TYPE_MB87M3400 852
-+#define MACH_TYPE_MGUARD_DELTA 853
-+#define MACH_TYPE_DAVINCI_DVDP 854
-+#define MACH_TYPE_HTCUNIVERSAL 855
-+#define MACH_TYPE_TPAD 856
-+#define MACH_TYPE_ROVERP3 857
-+#define MACH_TYPE_JORNADA928 858
-+#define MACH_TYPE_MV88FXX81 859
-+#define MACH_TYPE_STMP36XX 860
-+#define MACH_TYPE_SXNI79524 861
-+#define MACH_TYPE_AMS_DELTA 862
-+#define MACH_TYPE_URANIUM 863
-+#define MACH_TYPE_UCON 864
-+#define MACH_TYPE_NAS100D 865
-+#define MACH_TYPE_L083_1000 866
-+#define MACH_TYPE_EZX 867
-+#define MACH_TYPE_PNX5220 868
-+#define MACH_TYPE_BUTTE 869
-+#define MACH_TYPE_SRM2 870
-+#define MACH_TYPE_DSBR 871
-+#define MACH_TYPE_CRYSTALBALL 872
-+#define MACH_TYPE_TINYPXA27X 873
-+#define MACH_TYPE_HERBIE 874
-+#define MACH_TYPE_MAGICIAN 875
-+#define MACH_TYPE_CM4002 876
-+#define MACH_TYPE_B4 877
-+#define MACH_TYPE_MAUI 878
-+#define MACH_TYPE_CYBERTRACKER_G 879
-+#define MACH_TYPE_NXDKN 880
-+#define MACH_TYPE_MIO8390 881
-+#define MACH_TYPE_OMI_BOARD 882
-+#define MACH_TYPE_MX21CIV 883
-+#define MACH_TYPE_MAHI_CDAC 884
-+#define MACH_TYPE_XSCALE_PALMTX 885
-+#define MACH_TYPE_S3C2413 887
-+#define MACH_TYPE_SAMSYS_EP0 888
-+#define MACH_TYPE_WG302V1 889
-+#define MACH_TYPE_WG302V2 890
-+#define MACH_TYPE_EB42X 891
-+#define MACH_TYPE_IQ331ES 892
-+#define MACH_TYPE_COSYDSP 893
-+#define MACH_TYPE_UPLAT7D 894
-+#define MACH_TYPE_PTDAVINCI 895
-+#define MACH_TYPE_MBUS 896
-+#define MACH_TYPE_NADIA2VB 897
-+#define MACH_TYPE_R1000 898
-+#define MACH_TYPE_HW90250 899
-+#define MACH_TYPE_OMAP_2430SDP 900
-+#define MACH_TYPE_DAVINCI_EVM 901
-+#define MACH_TYPE_OMAP_TORNADO 902
-+#define MACH_TYPE_OLOCREEK 903
-+#define MACH_TYPE_PALMZ72 904
-+#define MACH_TYPE_NXDB500 905
-+#define MACH_TYPE_APF9328 906
-+#define MACH_TYPE_OMAP_WIPOQ 907
-+#define MACH_TYPE_OMAP_TWIP 908
-+#define MACH_TYPE_XSCALE_PALMTREO650 909
-+#define MACH_TYPE_ACUMEN 910
-+#define MACH_TYPE_XP100 911
-+#define MACH_TYPE_FS2410 912
-+#define MACH_TYPE_PXA270_CERF 913
-+#define MACH_TYPE_SQ2FTLPALM 914
-+#define MACH_TYPE_BSEMSERVER 915
-+#define MACH_TYPE_NETCLIENT 916
-+#define MACH_TYPE_XSCALE_PALMTT5 917
-+#define MACH_TYPE_OMAP_PALMTC 918
-+#define MACH_TYPE_OMAP_APOLLON 919
-+#define MACH_TYPE_ARGONLVEVB 920
-+#define MACH_TYPE_REA_2D 921
-+#define MACH_TYPE_TI3E524 922
-+#define MACH_TYPE_ATEB9200 923
-+#define MACH_TYPE_AUCKLAND 924
-+#define MACH_TYPE_AK3320M 925
-+#define MACH_TYPE_DURAMAX 926
-+#define MACH_TYPE_N35 927
-+#define MACH_TYPE_PRONGHORN 928
-+#define MACH_TYPE_FUNDY 929
-+#define MACH_TYPE_LOGICPD_PXA270 930
-+#define MACH_TYPE_CPU777 931
-+#define MACH_TYPE_SIMICON9201 932
-+#define MACH_TYPE_LEAP2_HPM 933
-+#define MACH_TYPE_CM922TXA10 934
-+#define MACH_TYPE_PXA 935
-+#define MACH_TYPE_SANDGATE2 936
-+#define MACH_TYPE_SANDGATE2G 937
-+#define MACH_TYPE_SANDGATE2P 938
-+#define MACH_TYPE_FRED_JACK 939
-+#define MACH_TYPE_TTG_COLOR1 940
-+#define MACH_TYPE_NXEB500HMI 941
-+#define MACH_TYPE_NETDCU8 942
-+#define MACH_TYPE_ML675050_CPU_BOA 943
-+#define MACH_TYPE_NG_FVX538 944
-+#define MACH_TYPE_NG_FVS338 945
-+#define MACH_TYPE_PNX4103 946
-+#define MACH_TYPE_HESDB 947
-+#define MACH_TYPE_XSILO 948
-+#define MACH_TYPE_ESPRESSO 949
-+#define MACH_TYPE_EMLC 950
-+#define MACH_TYPE_SISTERON 951
-+#define MACH_TYPE_RX1950 952
-+#define MACH_TYPE_TSC_VENUS 953
-+#define MACH_TYPE_DS101J 954
-+#define MACH_TYPE_MXC30030ADS 955
-+#define MACH_TYPE_FUJITSU_WIMAXSOC 956
-+#define MACH_TYPE_DUALPCMODEM 957
-+#define MACH_TYPE_GESBC9312 958
-+#define MACH_TYPE_HTCAPACHE 959
-+#define MACH_TYPE_IXDP435 960
-+#define MACH_TYPE_CATPROVT100 961
-+#define MACH_TYPE_PICOTUX1XX 962
-+#define MACH_TYPE_PICOTUX2XX 963
-+#define MACH_TYPE_DSMG600 964
-+#define MACH_TYPE_EMPC2 965
-+#define MACH_TYPE_VENTURA 966
-+#define MACH_TYPE_PHIDGET_SBC 967
-+#define MACH_TYPE_IJ3K 968
-+#define MACH_TYPE_PISGAH 969
-+#define MACH_TYPE_OMAP_FSAMPLE 970
-+#define MACH_TYPE_SG720 971
-+#define MACH_TYPE_REDFOX 972
-+#define MACH_TYPE_MYSH_EP9315_1 973
-+#define MACH_TYPE_TPF106 974
-+#define MACH_TYPE_AT91RM9200KG 975
-+#define MACH_TYPE_SLEDB 976
-+#define MACH_TYPE_ONTRACK 977
-+#define MACH_TYPE_PM1200 978
-+#define MACH_TYPE_ESS24XXX 979
-+#define MACH_TYPE_COREMP7 980
-+#define MACH_TYPE_NEXCODER_6446 981
-+#define MACH_TYPE_STVC8380 982
-+#define MACH_TYPE_TEKLYNX 983
-+#define MACH_TYPE_CARBONADO 984
-+#define MACH_TYPE_SYSMOS_MP730 985
-+#define MACH_TYPE_SNAPPER_CL15 986
-+#define MACH_TYPE_PGIGIM 987
-+#define MACH_TYPE_PTX9160P2 988
-+#define MACH_TYPE_DCORE1 989
-+#define MACH_TYPE_VICTORPXA 990
-+#define MACH_TYPE_MX2DTB 991
-+#define MACH_TYPE_PXA_IREX_ER0100 992
-+#define MACH_TYPE_OMAP_PALMZ71 993
-+#define MACH_TYPE_BARTEC_DEG 994
-+#define MACH_TYPE_HW50251 995
-+#define MACH_TYPE_IBOX 996
-+#define MACH_TYPE_ATLASLH7A404 997
-+#define MACH_TYPE_PT2026 998
-+#define MACH_TYPE_HTCALPINE 999
-+#define MACH_TYPE_BARTEC_VTU 1000
-+#define MACH_TYPE_VCOREII 1001
-+#define MACH_TYPE_PDNB3 1002
-+#define MACH_TYPE_HTCBEETLES 1003
-+#define MACH_TYPE_S3C6400 1004
-+#define MACH_TYPE_S3C2443 1005
-+#define MACH_TYPE_OMAP_LDK 1006
-+#define MACH_TYPE_SMDK2460 1007
-+#define MACH_TYPE_SMDK2440 1008
-+#define MACH_TYPE_SMDK2412 1009
-+#define MACH_TYPE_WEBBOX 1010
-+#define MACH_TYPE_CWWNDP 1011
-+#define MACH_TYPE_DRAGON 1012
-+#define MACH_TYPE_OPENDO_CPU_BOARD 1013
-+#define MACH_TYPE_CCM2200 1014
-+#define MACH_TYPE_ETWARM 1015
-+#define MACH_TYPE_M93030 1016
-+#define MACH_TYPE_CC7U 1017
-+#define MACH_TYPE_MTT_RANGER 1018
-+#define MACH_TYPE_NEXUS 1019
-+#define MACH_TYPE_DESMAN 1020
-+#define MACH_TYPE_BKDE303 1021
-+#define MACH_TYPE_SMDK2413 1022
-+#define MACH_TYPE_AML_M7200 1023
-+#define MACH_TYPE_AML_M5900 1024
-+#define MACH_TYPE_SG640 1025
-+#define MACH_TYPE_EDG79524 1026
-+#define MACH_TYPE_AI2410 1027
-+#define MACH_TYPE_IXP465 1028
-+#define MACH_TYPE_BALLOON3 1029
-+#define MACH_TYPE_QT2410 1108
-+#define MACH_TYPE_GTA01 1182
-
- #ifdef CONFIG_ARCH_EBSA110
- # ifdef machine_arch_type
-@@ -3541,9 +3843,9 @@
- # else
- # define machine_arch_type MACH_TYPE_RAMSES
- # endif
--# define machine_is_ramses() (machine_arch_type == MACH_TYPE_RAMSES)
-+# define machine_is_mnci() (machine_arch_type == MACH_TYPE_RAMSES)
- #else
--# define machine_is_ramses() (0)
-+# define machine_is_mnci() (0)
- #endif
-
- #ifdef CONFIG_ARCH_S28X
-@@ -4501,9 +4803,9 @@
- # else
- # define machine_arch_type MACH_TYPE_M825XX
- # endif
--# define machine_is_m825xx() (machine_arch_type == MACH_TYPE_M825XX)
-+# define machine_is_comcerto() (machine_arch_type == MACH_TYPE_M825XX)
- #else
--# define machine_is_m825xx() (0)
-+# define machine_is_comcerto() (0)
- #endif
-
- #ifdef CONFIG_SA1100_M7100
-@@ -5658,16 +5960,16 @@
- # define machine_is_xcep() (0)
- #endif
-
--#ifdef CONFIG_MACH_ARCOM_MERCURY
-+#ifdef CONFIG_MACH_ARCOM_VULCAN
- # ifdef machine_arch_type
- # undef machine_arch_type
- # define machine_arch_type __machine_arch_type
- # else
--# define machine_arch_type MACH_TYPE_ARCOM_MERCURY
-+# define machine_arch_type MACH_TYPE_ARCOM_VULCAN
- # endif
--# define machine_is_arcom_mercury() (machine_arch_type == MACH_TYPE_ARCOM_MERCURY)
-+# define machine_is_arcom_vulcan() (machine_arch_type == MACH_TYPE_ARCOM_VULCAN)
- #else
--# define machine_is_arcom_mercury() (0)
-+# define machine_is_arcom_vulcan() (0)
- #endif
-
- #ifdef CONFIG_MACH_STARGATE
-@@ -6054,16 +6356,16 @@
- # define machine_is_ess710() (0)
- #endif
-
--#ifdef CONFIG_MACH_MX3ADS
-+#ifdef CONFIG_MACH_MX31ADS
- # ifdef machine_arch_type
- # undef machine_arch_type
- # define machine_arch_type __machine_arch_type
- # else
--# define machine_arch_type MACH_TYPE_MX3ADS
-+# define machine_arch_type MACH_TYPE_MX31ADS
- # endif
--# define machine_is_mx3ads() (machine_arch_type == MACH_TYPE_MX3ADS)
-+# define machine_is_mx31ads() (machine_arch_type == MACH_TYPE_MX31ADS)
- #else
--# define machine_is_mx3ads() (0)
-+# define machine_is_mx31ads() (0)
- #endif
-
- #ifdef CONFIG_MACH_HIMALAYA
-@@ -7333,9 +7635,9 @@
- # else
- # define machine_arch_type MACH_TYPE_ARGONPLUSEVB
- # endif
--# define machine_is_argonplusevb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
-+# define machine_is_i30030evb() (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
- #else
--# define machine_is_argonplusevb() (0)
-+# define machine_is_i30030evb() (0)
- #endif
-
- #ifdef CONFIG_MACH_SCMA11EVB
-@@ -7345,9 +7647,9 @@
- # else
- # define machine_arch_type MACH_TYPE_SCMA11EVB
- # endif
--# define machine_is_scma11evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
-+# define machine_is_mxc27530evb() (machine_arch_type == MACH_TYPE_SCMA11EVB)
- #else
--# define machine_is_scma11evb() (0)
-+# define machine_is_mxc27530evb() (0)
- #endif
-
- #ifdef CONFIG_MACH_SMDK2800
-@@ -8305,9 +8607,9 @@
- # else
- # define machine_arch_type MACH_TYPE_SCMA11BB
- # endif
--# define machine_is_scma11bb() (machine_arch_type == MACH_TYPE_SCMA11BB)
-+# define machine_is_mxc27530ads() (machine_arch_type == MACH_TYPE_SCMA11BB)
- #else
--# define machine_is_scma11bb() (0)
-+# define machine_is_mxc27530ads() (0)
- #endif
-
- #ifdef CONFIG_MACH_TRIZEPS3
-@@ -9193,9 +9495,9 @@
- # else
- # define machine_arch_type MACH_TYPE_ZEUSEVB
- # endif
--# define machine_is_zeusevb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
-+# define machine_is_mxc91131evb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
- #else
--# define machine_is_zeusevb() (0)
-+# define machine_is_mxc91131evb() (0)
- #endif
-
- #ifdef CONFIG_MACH_P700
-@@ -9402,6 +9704,3643 @@
- # define machine_is_mp2usb() (0)
- #endif
-
-+#ifdef CONFIG_MACH_NTNP425C
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NTNP425C
-+# endif
-+# define machine_is_ntnp425c() (machine_arch_type == MACH_TYPE_NTNP425C)
-+#else
-+# define machine_is_ntnp425c() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_COLIBRI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_COLIBRI
-+# endif
-+# define machine_is_colibri() (machine_arch_type == MACH_TYPE_COLIBRI)
-+#else
-+# define machine_is_colibri() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PCM7220
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PCM7220
-+# endif
-+# define machine_is_pcm7220() (machine_arch_type == MACH_TYPE_PCM7220)
-+#else
-+# define machine_is_pcm7220() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GATEWAY7001
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GATEWAY7001
-+# endif
-+# define machine_is_gateway7001() (machine_arch_type == MACH_TYPE_GATEWAY7001)
-+#else
-+# define machine_is_gateway7001() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PCM027
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PCM027
-+# endif
-+# define machine_is_pcm027() (machine_arch_type == MACH_TYPE_PCM027)
-+#else
-+# define machine_is_pcm027() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CMPXA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CMPXA
-+# endif
-+# define machine_is_cmpxa() (machine_arch_type == MACH_TYPE_CMPXA)
-+#else
-+# define machine_is_cmpxa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ANUBIS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ANUBIS
-+# endif
-+# define machine_is_anubis() (machine_arch_type == MACH_TYPE_ANUBIS)
-+#else
-+# define machine_is_anubis() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ITE8152
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ITE8152
-+# endif
-+# define machine_is_ite8152() (machine_arch_type == MACH_TYPE_ITE8152)
-+#else
-+# define machine_is_ite8152() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LPC3XXX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LPC3XXX
-+# endif
-+# define machine_is_lpc3xxx() (machine_arch_type == MACH_TYPE_LPC3XXX)
-+#else
-+# define machine_is_lpc3xxx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PUPPETEER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PUPPETEER
-+# endif
-+# define machine_is_puppeteer() (machine_arch_type == MACH_TYPE_PUPPETEER)
-+#else
-+# define machine_is_puppeteer() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MACH_VADATECH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MACH_VADATECH
-+# endif
-+# define machine_is_vt001() (machine_arch_type == MACH_TYPE_MACH_VADATECH)
-+#else
-+# define machine_is_vt001() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_E570
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_E570
-+# endif
-+# define machine_is_e570() (machine_arch_type == MACH_TYPE_E570)
-+#else
-+# define machine_is_e570() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_X50
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_X50
-+# endif
-+# define machine_is_x50() (machine_arch_type == MACH_TYPE_X50)
-+#else
-+# define machine_is_x50() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RECON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RECON
-+# endif
-+# define machine_is_recon() (machine_arch_type == MACH_TYPE_RECON)
-+#else
-+# define machine_is_recon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XBOARDGP8
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XBOARDGP8
-+# endif
-+# define machine_is_xboardgp8() (machine_arch_type == MACH_TYPE_XBOARDGP8)
-+#else
-+# define machine_is_xboardgp8() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FPIC2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FPIC2
-+# endif
-+# define machine_is_fpic2() (machine_arch_type == MACH_TYPE_FPIC2)
-+#else
-+# define machine_is_fpic2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AKITA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AKITA
-+# endif
-+# define machine_is_akita() (machine_arch_type == MACH_TYPE_AKITA)
-+#else
-+# define machine_is_akita() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_A81
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_A81
-+# endif
-+# define machine_is_a81() (machine_arch_type == MACH_TYPE_A81)
-+#else
-+# define machine_is_a81() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SVM_SC25X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SVM_SC25X
-+# endif
-+# define machine_is_svm_sc25x() (machine_arch_type == MACH_TYPE_SVM_SC25X)
-+#else
-+# define machine_is_svm_sc25x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VADATECH020
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VADATECH020
-+# endif
-+# define machine_is_vt020() (machine_arch_type == MACH_TYPE_VADATECH020)
-+#else
-+# define machine_is_vt020() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TLI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TLI
-+# endif
-+# define machine_is_tli() (machine_arch_type == MACH_TYPE_TLI)
-+#else
-+# define machine_is_tli() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EDB9315LC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EDB9315LC
-+# endif
-+# define machine_is_edb9315lc() (machine_arch_type == MACH_TYPE_EDB9315LC)
-+#else
-+# define machine_is_edb9315lc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PASSEC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PASSEC
-+# endif
-+# define machine_is_passec() (machine_arch_type == MACH_TYPE_PASSEC)
-+#else
-+# define machine_is_passec() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DS_TIGER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DS_TIGER
-+# endif
-+# define machine_is_ds_tiger() (machine_arch_type == MACH_TYPE_DS_TIGER)
-+#else
-+# define machine_is_ds_tiger() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_E310
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_E310
-+# endif
-+# define machine_is_e310() (machine_arch_type == MACH_TYPE_E310)
-+#else
-+# define machine_is_e310() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_E330
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_E330
-+# endif
-+# define machine_is_e330() (machine_arch_type == MACH_TYPE_E330)
-+#else
-+# define machine_is_e330() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RT3000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RT3000
-+# endif
-+# define machine_is_rt3000() (machine_arch_type == MACH_TYPE_RT3000)
-+#else
-+# define machine_is_rt3000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NOKIA770
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NOKIA770
-+# endif
-+# define machine_is_nokia770() (machine_arch_type == MACH_TYPE_NOKIA770)
-+#else
-+# define machine_is_nokia770() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX0106
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX0106
-+# endif
-+# define machine_is_pnx0106() (machine_arch_type == MACH_TYPE_PNX0106)
-+#else
-+# define machine_is_pnx0106() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HX21XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HX21XX
-+# endif
-+# define machine_is_hx21xx() (machine_arch_type == MACH_TYPE_HX21XX)
-+#else
-+# define machine_is_hx21xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FARADAY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FARADAY
-+# endif
-+# define machine_is_faraday() (machine_arch_type == MACH_TYPE_FARADAY)
-+#else
-+# define machine_is_faraday() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SBC9312
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SBC9312
-+# endif
-+# define machine_is_sbc9312() (machine_arch_type == MACH_TYPE_SBC9312)
-+#else
-+# define machine_is_sbc9312() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BATMAN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BATMAN
-+# endif
-+# define machine_is_batman() (machine_arch_type == MACH_TYPE_BATMAN)
-+#else
-+# define machine_is_batman() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_JPD201
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_JPD201
-+# endif
-+# define machine_is_jpd201() (machine_arch_type == MACH_TYPE_JPD201)
-+#else
-+# define machine_is_jpd201() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MIPSA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MIPSA
-+# endif
-+# define machine_is_mipsa() (machine_arch_type == MACH_TYPE_MIPSA)
-+#else
-+# define machine_is_mipsa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_KACOM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_KACOM
-+# endif
-+# define machine_is_kacom() (machine_arch_type == MACH_TYPE_KACOM)
-+#else
-+# define machine_is_kacom() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SWARCOCPU
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SWARCOCPU
-+# endif
-+# define machine_is_swarcocpu() (machine_arch_type == MACH_TYPE_SWARCOCPU)
-+#else
-+# define machine_is_swarcocpu() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SWARCODSL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SWARCODSL
-+# endif
-+# define machine_is_swarcodsl() (machine_arch_type == MACH_TYPE_SWARCODSL)
-+#else
-+# define machine_is_swarcodsl() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BLUEANGEL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BLUEANGEL
-+# endif
-+# define machine_is_blueangel() (machine_arch_type == MACH_TYPE_BLUEANGEL)
-+#else
-+# define machine_is_blueangel() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HAIRYGRAMA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HAIRYGRAMA
-+# endif
-+# define machine_is_hairygrama() (machine_arch_type == MACH_TYPE_HAIRYGRAMA)
-+#else
-+# define machine_is_hairygrama() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BANFF
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BANFF
-+# endif
-+# define machine_is_banff() (machine_arch_type == MACH_TYPE_BANFF)
-+#else
-+# define machine_is_banff() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CARMEVA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CARMEVA
-+# endif
-+# define machine_is_carmeva() (machine_arch_type == MACH_TYPE_CARMEVA)
-+#else
-+# define machine_is_carmeva() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SAM255
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SAM255
-+# endif
-+# define machine_is_sam255() (machine_arch_type == MACH_TYPE_SAM255)
-+#else
-+# define machine_is_sam255() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PPM10
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PPM10
-+# endif
-+# define machine_is_ppm10() (machine_arch_type == MACH_TYPE_PPM10)
-+#else
-+# define machine_is_ppm10() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EDB9315A
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EDB9315A
-+# endif
-+# define machine_is_edb9315a() (machine_arch_type == MACH_TYPE_EDB9315A)
-+#else
-+# define machine_is_edb9315a() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SUNSET
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SUNSET
-+# endif
-+# define machine_is_sunset() (machine_arch_type == MACH_TYPE_SUNSET)
-+#else
-+# define machine_is_sunset() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_STARGATE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_STARGATE2
-+# endif
-+# define machine_is_stargate2() (machine_arch_type == MACH_TYPE_STARGATE2)
-+#else
-+# define machine_is_stargate2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_INTELMOTE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_INTELMOTE2
-+# endif
-+# define machine_is_intelmote2() (machine_arch_type == MACH_TYPE_INTELMOTE2)
-+#else
-+# define machine_is_intelmote2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TRIZEPS4
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TRIZEPS4
-+# endif
-+# define machine_is_trizeps4() (machine_arch_type == MACH_TYPE_TRIZEPS4)
-+#else
-+# define machine_is_trizeps4() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAINSTONE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAINSTONE2
-+# endif
-+# define machine_is_mainstone2() (machine_arch_type == MACH_TYPE_MAINSTONE2)
-+#else
-+# define machine_is_mainstone2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EZ_IXP42X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EZ_IXP42X
-+# endif
-+# define machine_is_ez_ixp42x() (machine_arch_type == MACH_TYPE_EZ_IXP42X)
-+#else
-+# define machine_is_ez_ixp42x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TAPWAVE_ZODIAC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TAPWAVE_ZODIAC
-+# endif
-+# define machine_is_tapwave_zodiac() (machine_arch_type == MACH_TYPE_TAPWAVE_ZODIAC)
-+#else
-+# define machine_is_tapwave_zodiac() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UNIVERSALMETER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UNIVERSALMETER
-+# endif
-+# define machine_is_universalmeter() (machine_arch_type == MACH_TYPE_UNIVERSALMETER)
-+#else
-+# define machine_is_universalmeter() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HICOARM9
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HICOARM9
-+# endif
-+# define machine_is_hicoarm9() (machine_arch_type == MACH_TYPE_HICOARM9)
-+#else
-+# define machine_is_hicoarm9() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX4008
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX4008
-+# endif
-+# define machine_is_pnx4008() (machine_arch_type == MACH_TYPE_PNX4008)
-+#else
-+# define machine_is_pnx4008() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_KWS6000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_KWS6000
-+# endif
-+# define machine_is_kws6000() (machine_arch_type == MACH_TYPE_KWS6000)
-+#else
-+# define machine_is_kws6000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PORTUX920T
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PORTUX920T
-+# endif
-+# define machine_is_portux920t() (machine_arch_type == MACH_TYPE_PORTUX920T)
-+#else
-+# define machine_is_portux920t() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EZ_X5
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EZ_X5
-+# endif
-+# define machine_is_ez_x5() (machine_arch_type == MACH_TYPE_EZ_X5)
-+#else
-+# define machine_is_ez_x5() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_RUDOLPH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_RUDOLPH
-+# endif
-+# define machine_is_omap_rudolph() (machine_arch_type == MACH_TYPE_OMAP_RUDOLPH)
-+#else
-+# define machine_is_omap_rudolph() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CPUAT91
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CPUAT91
-+# endif
-+# define machine_is_cpuat91() (machine_arch_type == MACH_TYPE_CPUAT91)
-+#else
-+# define machine_is_cpuat91() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REA9200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REA9200
-+# endif
-+# define machine_is_rea9200() (machine_arch_type == MACH_TYPE_REA9200)
-+#else
-+# define machine_is_rea9200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ACTS_PUNE_SA1110
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ACTS_PUNE_SA1110
-+# endif
-+# define machine_is_acts_pune_sa1110() (machine_arch_type == MACH_TYPE_ACTS_PUNE_SA1110)
-+#else
-+# define machine_is_acts_pune_sa1110() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXP425
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXP425
-+# endif
-+# define machine_is_ixp425() (machine_arch_type == MACH_TYPE_IXP425)
-+#else
-+# define machine_is_ixp425() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARGONPLUSODYSSEY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARGONPLUSODYSSEY
-+# endif
-+# define machine_is_i30030ads() (machine_arch_type == MACH_TYPE_ARGONPLUSODYSSEY)
-+#else
-+# define machine_is_i30030ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PERCH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PERCH
-+# endif
-+# define machine_is_perch() (machine_arch_type == MACH_TYPE_PERCH)
-+#else
-+# define machine_is_perch() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EIS05R1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EIS05R1
-+# endif
-+# define machine_is_eis05r1() (machine_arch_type == MACH_TYPE_EIS05R1)
-+#else
-+# define machine_is_eis05r1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PEPPERPAD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PEPPERPAD
-+# endif
-+# define machine_is_pepperpad() (machine_arch_type == MACH_TYPE_PEPPERPAD)
-+#else
-+# define machine_is_pepperpad() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SB3010
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SB3010
-+# endif
-+# define machine_is_sb3010() (machine_arch_type == MACH_TYPE_SB3010)
-+#else
-+# define machine_is_sb3010() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RM9200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RM9200
-+# endif
-+# define machine_is_rm9200() (machine_arch_type == MACH_TYPE_RM9200)
-+#else
-+# define machine_is_rm9200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DMA03
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DMA03
-+# endif
-+# define machine_is_dma03() (machine_arch_type == MACH_TYPE_DMA03)
-+#else
-+# define machine_is_dma03() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ROAD_S101
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ROAD_S101
-+# endif
-+# define machine_is_road_s101() (machine_arch_type == MACH_TYPE_ROAD_S101)
-+#else
-+# define machine_is_road_s101() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_A
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_A
-+# endif
-+# define machine_is_iq_nextgen_a() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_A)
-+#else
-+# define machine_is_iq_nextgen_a() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_B
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_B
-+# endif
-+# define machine_is_iq_nextgen_b() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_B)
-+#else
-+# define machine_is_iq_nextgen_b() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_C
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_C
-+# endif
-+# define machine_is_iq_nextgen_c() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_C)
-+#else
-+# define machine_is_iq_nextgen_c() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_D
-+# endif
-+# define machine_is_iq_nextgen_d() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_D)
-+#else
-+# define machine_is_iq_nextgen_d() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ_NEXTGEN_E
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ_NEXTGEN_E
-+# endif
-+# define machine_is_iq_nextgen_e() (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_E)
-+#else
-+# define machine_is_iq_nextgen_e() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MALLOW_AT91
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MALLOW_AT91
-+# endif
-+# define machine_is_mallow_at91() (machine_arch_type == MACH_TYPE_MALLOW_AT91)
-+#else
-+# define machine_is_mallow_at91() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CYBERTRACKER_I
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CYBERTRACKER_I
-+# endif
-+# define machine_is_cybertracker_i() (machine_arch_type == MACH_TYPE_CYBERTRACKER_I)
-+#else
-+# define machine_is_cybertracker_i() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GESBC931X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GESBC931X
-+# endif
-+# define machine_is_gesbc931x() (machine_arch_type == MACH_TYPE_GESBC931X)
-+#else
-+# define machine_is_gesbc931x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CENTIPAD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CENTIPAD
-+# endif
-+# define machine_is_centipad() (machine_arch_type == MACH_TYPE_CENTIPAD)
-+#else
-+# define machine_is_centipad() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARMSOC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARMSOC
-+# endif
-+# define machine_is_armsoc() (machine_arch_type == MACH_TYPE_ARMSOC)
-+#else
-+# define machine_is_armsoc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SE4200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SE4200
-+# endif
-+# define machine_is_se4200() (machine_arch_type == MACH_TYPE_SE4200)
-+#else
-+# define machine_is_se4200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EMS197A
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EMS197A
-+# endif
-+# define machine_is_ems197a() (machine_arch_type == MACH_TYPE_EMS197A)
-+#else
-+# define machine_is_ems197a() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MICRO9
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MICRO9
-+# endif
-+# define machine_is_micro9() (machine_arch_type == MACH_TYPE_MICRO9)
-+#else
-+# define machine_is_micro9() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MICRO9L
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MICRO9L
-+# endif
-+# define machine_is_micro9l() (machine_arch_type == MACH_TYPE_MICRO9L)
-+#else
-+# define machine_is_micro9l() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UC5471DSP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UC5471DSP
-+# endif
-+# define machine_is_uc5471dsp() (machine_arch_type == MACH_TYPE_UC5471DSP)
-+#else
-+# define machine_is_uc5471dsp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SJ5471ENG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SJ5471ENG
-+# endif
-+# define machine_is_sj5471eng() (machine_arch_type == MACH_TYPE_SJ5471ENG)
-+#else
-+# define machine_is_sj5471eng() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CMPXA26X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CMPXA26X
-+# endif
-+# define machine_is_none() (machine_arch_type == MACH_TYPE_CMPXA26X)
-+#else
-+# define machine_is_none() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NC
-+# endif
-+# define machine_is_nc1() (machine_arch_type == MACH_TYPE_NC)
-+#else
-+# define machine_is_nc1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTE
-+# endif
-+# define machine_is_omap_palmte() (machine_arch_type == MACH_TYPE_OMAP_PALMTE)
-+#else
-+# define machine_is_omap_palmte() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AJAX52X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AJAX52X
-+# endif
-+# define machine_is_ajax52x() (machine_arch_type == MACH_TYPE_AJAX52X)
-+#else
-+# define machine_is_ajax52x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SIRIUSTAR
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SIRIUSTAR
-+# endif
-+# define machine_is_siriustar() (machine_arch_type == MACH_TYPE_SIRIUSTAR)
-+#else
-+# define machine_is_siriustar() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IODATA_HDLG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IODATA_HDLG
-+# endif
-+# define machine_is_iodata_hdlg() (machine_arch_type == MACH_TYPE_IODATA_HDLG)
-+#else
-+# define machine_is_iodata_hdlg() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AT91RM9200UTL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AT91RM9200UTL
-+# endif
-+# define machine_is_at91rm9200utl() (machine_arch_type == MACH_TYPE_AT91RM9200UTL)
-+#else
-+# define machine_is_at91rm9200utl() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BIOSAFE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BIOSAFE
-+# endif
-+# define machine_is_biosafe() (machine_arch_type == MACH_TYPE_BIOSAFE)
-+#else
-+# define machine_is_biosafe() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MP1000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MP1000
-+# endif
-+# define machine_is_mp1000() (machine_arch_type == MACH_TYPE_MP1000)
-+#else
-+# define machine_is_mp1000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PARSY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PARSY
-+# endif
-+# define machine_is_parsy() (machine_arch_type == MACH_TYPE_PARSY)
-+#else
-+# define machine_is_parsy() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CCXP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CCXP
-+# endif
-+# define machine_is_ccxp270() (machine_arch_type == MACH_TYPE_CCXP)
-+#else
-+# define machine_is_ccxp270() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_GSAMPLE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_GSAMPLE
-+# endif
-+# define machine_is_omap_gsample() (machine_arch_type == MACH_TYPE_OMAP_GSAMPLE)
-+#else
-+# define machine_is_omap_gsample() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REALVIEW_EB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REALVIEW_EB
-+# endif
-+# define machine_is_realview_eb() (machine_arch_type == MACH_TYPE_REALVIEW_EB)
-+#else
-+# define machine_is_realview_eb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SAMOA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SAMOA
-+# endif
-+# define machine_is_samoa() (machine_arch_type == MACH_TYPE_SAMOA)
-+#else
-+# define machine_is_samoa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_T3XSCALE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_T3XSCALE
-+# endif
-+# define machine_is_t3xscale() (machine_arch_type == MACH_TYPE_T3XSCALE)
-+#else
-+# define machine_is_t3xscale() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_I878
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_I878
-+# endif
-+# define machine_is_i878() (machine_arch_type == MACH_TYPE_I878)
-+#else
-+# define machine_is_i878() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BORZOI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BORZOI
-+# endif
-+# define machine_is_borzoi() (machine_arch_type == MACH_TYPE_BORZOI)
-+#else
-+# define machine_is_borzoi() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GECKO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GECKO
-+# endif
-+# define machine_is_gecko() (machine_arch_type == MACH_TYPE_GECKO)
-+#else
-+# define machine_is_gecko() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DS101
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DS101
-+# endif
-+# define machine_is_ds101() (machine_arch_type == MACH_TYPE_DS101)
-+#else
-+# define machine_is_ds101() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTT2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTT2
-+# endif
-+# define machine_is_omap_palmtt2() (machine_arch_type == MACH_TYPE_OMAP_PALMTT2)
-+#else
-+# define machine_is_omap_palmtt2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMLD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMLD
-+# endif
-+# define machine_is_xscale_palmld() (machine_arch_type == MACH_TYPE_XSCALE_PALMLD)
-+#else
-+# define machine_is_xscale_palmld() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CC9C
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CC9C
-+# endif
-+# define machine_is_cc9c() (machine_arch_type == MACH_TYPE_CC9C)
-+#else
-+# define machine_is_cc9c() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SBC1670
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SBC1670
-+# endif
-+# define machine_is_sbc1670() (machine_arch_type == MACH_TYPE_SBC1670)
-+#else
-+# define machine_is_sbc1670() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXDP28X5
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXDP28X5
-+# endif
-+# define machine_is_ixdp28x5() (machine_arch_type == MACH_TYPE_IXDP28X5)
-+#else
-+# define machine_is_ixdp28x5() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTT
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTT
-+# endif
-+# define machine_is_omap_palmtt() (machine_arch_type == MACH_TYPE_OMAP_PALMTT)
-+#else
-+# define machine_is_omap_palmtt() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ML696K
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ML696K
-+# endif
-+# define machine_is_ml696k() (machine_arch_type == MACH_TYPE_ML696K)
-+#else
-+# define machine_is_ml696k() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARCOM_ZEUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARCOM_ZEUS
-+# endif
-+# define machine_is_arcom_zeus() (machine_arch_type == MACH_TYPE_ARCOM_ZEUS)
-+#else
-+# define machine_is_arcom_zeus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OSIRIS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OSIRIS
-+# endif
-+# define machine_is_osiris() (machine_arch_type == MACH_TYPE_OSIRIS)
-+#else
-+# define machine_is_osiris() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAESTRO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAESTRO
-+# endif
-+# define machine_is_maestro() (machine_arch_type == MACH_TYPE_MAESTRO)
-+#else
-+# define machine_is_maestro() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TUNGE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TUNGE2
-+# endif
-+# define machine_is_tunge2() (machine_arch_type == MACH_TYPE_TUNGE2)
-+#else
-+# define machine_is_tunge2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXBBM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXBBM
-+# endif
-+# define machine_is_ixbbm() (machine_arch_type == MACH_TYPE_IXBBM)
-+#else
-+# define machine_is_ixbbm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX27
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX27
-+# endif
-+# define machine_is_mx27ads() (machine_arch_type == MACH_TYPE_MX27)
-+#else
-+# define machine_is_mx27ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AX8004
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AX8004
-+# endif
-+# define machine_is_ax8004() (machine_arch_type == MACH_TYPE_AX8004)
-+#else
-+# define machine_is_ax8004() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AT91SAM9261EK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AT91SAM9261EK
-+# endif
-+# define machine_is_at91sam9261ek() (machine_arch_type == MACH_TYPE_AT91SAM9261EK)
-+#else
-+# define machine_is_at91sam9261ek() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LOFT
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LOFT
-+# endif
-+# define machine_is_loft() (machine_arch_type == MACH_TYPE_LOFT)
-+#else
-+# define machine_is_loft() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAGPIE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAGPIE
-+# endif
-+# define machine_is_magpie() (machine_arch_type == MACH_TYPE_MAGPIE)
-+#else
-+# define machine_is_magpie() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX21
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX21
-+# endif
-+# define machine_is_mx21ads() (machine_arch_type == MACH_TYPE_MX21)
-+#else
-+# define machine_is_mx21ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MB87M3400
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MB87M3400
-+# endif
-+# define machine_is_mb87m3400() (machine_arch_type == MACH_TYPE_MB87M3400)
-+#else
-+# define machine_is_mb87m3400() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MGUARD_DELTA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MGUARD_DELTA
-+# endif
-+# define machine_is_mguard_delta() (machine_arch_type == MACH_TYPE_MGUARD_DELTA)
-+#else
-+# define machine_is_mguard_delta() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DAVINCI_DVDP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DAVINCI_DVDP
-+# endif
-+# define machine_is_davinci_dvdp() (machine_arch_type == MACH_TYPE_DAVINCI_DVDP)
-+#else
-+# define machine_is_davinci_dvdp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCUNIVERSAL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCUNIVERSAL
-+# endif
-+# define machine_is_htcuniversal() (machine_arch_type == MACH_TYPE_HTCUNIVERSAL)
-+#else
-+# define machine_is_htcuniversal() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TPAD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TPAD
-+# endif
-+# define machine_is_tpad() (machine_arch_type == MACH_TYPE_TPAD)
-+#else
-+# define machine_is_tpad() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ROVERP3
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ROVERP3
-+# endif
-+# define machine_is_roverp3() (machine_arch_type == MACH_TYPE_ROVERP3)
-+#else
-+# define machine_is_roverp3() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_JORNADA928
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_JORNADA928
-+# endif
-+# define machine_is_jornada928() (machine_arch_type == MACH_TYPE_JORNADA928)
-+#else
-+# define machine_is_jornada928() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MV88FXX81
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MV88FXX81
-+# endif
-+# define machine_is_mv88fxx81() (machine_arch_type == MACH_TYPE_MV88FXX81)
-+#else
-+# define machine_is_mv88fxx81() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_STMP36XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_STMP36XX
-+# endif
-+# define machine_is_stmp36xx() (machine_arch_type == MACH_TYPE_STMP36XX)
-+#else
-+# define machine_is_stmp36xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SXNI79524
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SXNI79524
-+# endif
-+# define machine_is_sxni79524() (machine_arch_type == MACH_TYPE_SXNI79524)
-+#else
-+# define machine_is_sxni79524() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AMS_DELTA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AMS_DELTA
-+# endif
-+# define machine_is_ams_delta() (machine_arch_type == MACH_TYPE_AMS_DELTA)
-+#else
-+# define machine_is_ams_delta() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_URANIUM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_URANIUM
-+# endif
-+# define machine_is_uranium() (machine_arch_type == MACH_TYPE_URANIUM)
-+#else
-+# define machine_is_uranium() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UCON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UCON
-+# endif
-+# define machine_is_ucon() (machine_arch_type == MACH_TYPE_UCON)
-+#else
-+# define machine_is_ucon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NAS100D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NAS100D
-+# endif
-+# define machine_is_nas100d() (machine_arch_type == MACH_TYPE_NAS100D)
-+#else
-+# define machine_is_nas100d() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_L083_1000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_L083_1000
-+# endif
-+# define machine_is_l083() (machine_arch_type == MACH_TYPE_L083_1000)
-+#else
-+# define machine_is_l083() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EZX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EZX
-+# endif
-+# define machine_is_ezx() (machine_arch_type == MACH_TYPE_EZX)
-+#else
-+# define machine_is_ezx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX5220
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX5220
-+# endif
-+# define machine_is_pnx5220() (machine_arch_type == MACH_TYPE_PNX5220)
-+#else
-+# define machine_is_pnx5220() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BUTTE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BUTTE
-+# endif
-+# define machine_is_butte() (machine_arch_type == MACH_TYPE_BUTTE)
-+#else
-+# define machine_is_butte() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SRM2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SRM2
-+# endif
-+# define machine_is_srm2() (machine_arch_type == MACH_TYPE_SRM2)
-+#else
-+# define machine_is_srm2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DSBR
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DSBR
-+# endif
-+# define machine_is_dsbr() (machine_arch_type == MACH_TYPE_DSBR)
-+#else
-+# define machine_is_dsbr() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CRYSTALBALL
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CRYSTALBALL
-+# endif
-+# define machine_is_crystalball() (machine_arch_type == MACH_TYPE_CRYSTALBALL)
-+#else
-+# define machine_is_crystalball() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TINYPXA27X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TINYPXA27X
-+# endif
-+# define machine_is_tinypxa27x() (machine_arch_type == MACH_TYPE_TINYPXA27X)
-+#else
-+# define machine_is_tinypxa27x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HERBIE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HERBIE
-+# endif
-+# define machine_is_herbie() (machine_arch_type == MACH_TYPE_HERBIE)
-+#else
-+# define machine_is_herbie() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAGICIAN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAGICIAN
-+# endif
-+# define machine_is_magician() (machine_arch_type == MACH_TYPE_MAGICIAN)
-+#else
-+# define machine_is_magician() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CM4002
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CM4002
-+# endif
-+# define machine_is_cm4002() (machine_arch_type == MACH_TYPE_CM4002)
-+#else
-+# define machine_is_cm4002() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_B4
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_B4
-+# endif
-+# define machine_is_b4() (machine_arch_type == MACH_TYPE_B4)
-+#else
-+# define machine_is_b4() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAUI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAUI
-+# endif
-+# define machine_is_maui() (machine_arch_type == MACH_TYPE_MAUI)
-+#else
-+# define machine_is_maui() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CYBERTRACKER_G
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CYBERTRACKER_G
-+# endif
-+# define machine_is_cybertracker_g() (machine_arch_type == MACH_TYPE_CYBERTRACKER_G)
-+#else
-+# define machine_is_cybertracker_g() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NXDKN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NXDKN
-+# endif
-+# define machine_is_nxdkn() (machine_arch_type == MACH_TYPE_NXDKN)
-+#else
-+# define machine_is_nxdkn() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MIO8390
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MIO8390
-+# endif
-+# define machine_is_mio8390() (machine_arch_type == MACH_TYPE_MIO8390)
-+#else
-+# define machine_is_mio8390() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMI_BOARD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMI_BOARD
-+# endif
-+# define machine_is_omi_board() (machine_arch_type == MACH_TYPE_OMI_BOARD)
-+#else
-+# define machine_is_omi_board() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX21CIV
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX21CIV
-+# endif
-+# define machine_is_mx21civ() (machine_arch_type == MACH_TYPE_MX21CIV)
-+#else
-+# define machine_is_mx21civ() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MAHI_CDAC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MAHI_CDAC
-+# endif
-+# define machine_is_mahi_cdac() (machine_arch_type == MACH_TYPE_MAHI_CDAC)
-+#else
-+# define machine_is_mahi_cdac() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMTX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMTX
-+# endif
-+# define machine_is_xscale_palmtx() (machine_arch_type == MACH_TYPE_XSCALE_PALMTX)
-+#else
-+# define machine_is_xscale_palmtx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_S3C2413
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_S3C2413
-+# endif
-+# define machine_is_s3c2413() (machine_arch_type == MACH_TYPE_S3C2413)
-+#else
-+# define machine_is_s3c2413() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SAMSYS_EP0
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SAMSYS_EP0
-+# endif
-+# define machine_is_samsys_ep0() (machine_arch_type == MACH_TYPE_SAMSYS_EP0)
-+#else
-+# define machine_is_samsys_ep0() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_WG302V1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_WG302V1
-+# endif
-+# define machine_is_wg302v1() (machine_arch_type == MACH_TYPE_WG302V1)
-+#else
-+# define machine_is_wg302v1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_WG302V2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_WG302V2
-+# endif
-+# define machine_is_wg302v2() (machine_arch_type == MACH_TYPE_WG302V2)
-+#else
-+# define machine_is_wg302v2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EB42X
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EB42X
-+# endif
-+# define machine_is_eb42x() (machine_arch_type == MACH_TYPE_EB42X)
-+#else
-+# define machine_is_eb42x() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IQ331ES
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IQ331ES
-+# endif
-+# define machine_is_iq331es() (machine_arch_type == MACH_TYPE_IQ331ES)
-+#else
-+# define machine_is_iq331es() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_COSYDSP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_COSYDSP
-+# endif
-+# define machine_is_cosydsp() (machine_arch_type == MACH_TYPE_COSYDSP)
-+#else
-+# define machine_is_cosydsp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_UPLAT7D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_UPLAT7D
-+# endif
-+# define machine_is_uplat7d_proto() (machine_arch_type == MACH_TYPE_UPLAT7D)
-+#else
-+# define machine_is_uplat7d_proto() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PTDAVINCI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PTDAVINCI
-+# endif
-+# define machine_is_ptdavinci() (machine_arch_type == MACH_TYPE_PTDAVINCI)
-+#else
-+# define machine_is_ptdavinci() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MBUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MBUS
-+# endif
-+# define machine_is_mbus() (machine_arch_type == MACH_TYPE_MBUS)
-+#else
-+# define machine_is_mbus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NADIA2VB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NADIA2VB
-+# endif
-+# define machine_is_nadia2vb() (machine_arch_type == MACH_TYPE_NADIA2VB)
-+#else
-+# define machine_is_nadia2vb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_R1000
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_R1000
-+# endif
-+# define machine_is_r1000() (machine_arch_type == MACH_TYPE_R1000)
-+#else
-+# define machine_is_r1000() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HW90250
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HW90250
-+# endif
-+# define machine_is_hw90250() (machine_arch_type == MACH_TYPE_HW90250)
-+#else
-+# define machine_is_hw90250() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_2430SDP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_2430SDP
-+# endif
-+# define machine_is_omap_2430sdp() (machine_arch_type == MACH_TYPE_OMAP_2430SDP)
-+#else
-+# define machine_is_omap_2430sdp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DAVINCI_EVM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DAVINCI_EVM
-+# endif
-+# define machine_is_davinci_evm() (machine_arch_type == MACH_TYPE_DAVINCI_EVM)
-+#else
-+# define machine_is_davinci_evm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_TORNADO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_TORNADO
-+# endif
-+# define machine_is_omap_tornado() (machine_arch_type == MACH_TYPE_OMAP_TORNADO)
-+#else
-+# define machine_is_omap_tornado() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OLOCREEK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OLOCREEK
-+# endif
-+# define machine_is_olocreek() (machine_arch_type == MACH_TYPE_OLOCREEK)
-+#else
-+# define machine_is_olocreek() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PALMZ72
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PALMZ72
-+# endif
-+# define machine_is_palmz72() (machine_arch_type == MACH_TYPE_PALMZ72)
-+#else
-+# define machine_is_palmz72() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NXDB500
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NXDB500
-+# endif
-+# define machine_is_nxdb500() (machine_arch_type == MACH_TYPE_NXDB500)
-+#else
-+# define machine_is_nxdb500() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_APF9328
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_APF9328
-+# endif
-+# define machine_is_apf9328() (machine_arch_type == MACH_TYPE_APF9328)
-+#else
-+# define machine_is_apf9328() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_WIPOQ
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_WIPOQ
-+# endif
-+# define machine_is_omap_wipoq() (machine_arch_type == MACH_TYPE_OMAP_WIPOQ)
-+#else
-+# define machine_is_omap_wipoq() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_TWIP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_TWIP
-+# endif
-+# define machine_is_omap_twip() (machine_arch_type == MACH_TYPE_OMAP_TWIP)
-+#else
-+# define machine_is_omap_twip() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMTREO650
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMTREO650
-+# endif
-+# define machine_is_xscale_treo650() (machine_arch_type == MACH_TYPE_XSCALE_PALMTREO650)
-+#else
-+# define machine_is_xscale_treo650() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ACUMEN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ACUMEN
-+# endif
-+# define machine_is_acumen() (machine_arch_type == MACH_TYPE_ACUMEN)
-+#else
-+# define machine_is_acumen() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XP100
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XP100
-+# endif
-+# define machine_is_xp100() (machine_arch_type == MACH_TYPE_XP100)
-+#else
-+# define machine_is_xp100() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FS2410
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FS2410
-+# endif
-+# define machine_is_fs2410() (machine_arch_type == MACH_TYPE_FS2410)
-+#else
-+# define machine_is_fs2410() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PXA270_CERF
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PXA270_CERF
-+# endif
-+# define machine_is_pxa270_cerf() (machine_arch_type == MACH_TYPE_PXA270_CERF)
-+#else
-+# define machine_is_pxa270_cerf() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SQ2FTLPALM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SQ2FTLPALM
-+# endif
-+# define machine_is_sq2ftlpalm() (machine_arch_type == MACH_TYPE_SQ2FTLPALM)
-+#else
-+# define machine_is_sq2ftlpalm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BSEMSERVER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BSEMSERVER
-+# endif
-+# define machine_is_bsemserver() (machine_arch_type == MACH_TYPE_BSEMSERVER)
-+#else
-+# define machine_is_bsemserver() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NETCLIENT
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NETCLIENT
-+# endif
-+# define machine_is_netclient() (machine_arch_type == MACH_TYPE_NETCLIENT)
-+#else
-+# define machine_is_netclient() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSCALE_PALMTT5
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSCALE_PALMTT5
-+# endif
-+# define machine_is_xscale_palmtt5() (machine_arch_type == MACH_TYPE_XSCALE_PALMTT5)
-+#else
-+# define machine_is_xscale_palmtt5() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMTC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMTC
-+# endif
-+# define machine_is_xscale_palmtc() (machine_arch_type == MACH_TYPE_OMAP_PALMTC)
-+#else
-+# define machine_is_xscale_palmtc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_APOLLON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_APOLLON
-+# endif
-+# define machine_is_omap_apollon() (machine_arch_type == MACH_TYPE_OMAP_APOLLON)
-+#else
-+# define machine_is_omap_apollon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ARGONLVEVB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ARGONLVEVB
-+# endif
-+# define machine_is_mxc30030evb() (machine_arch_type == MACH_TYPE_ARGONLVEVB)
-+#else
-+# define machine_is_mxc30030evb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REA_2D
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REA_2D
-+# endif
-+# define machine_is_rea_2d() (machine_arch_type == MACH_TYPE_REA_2D)
-+#else
-+# define machine_is_rea_2d() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TI3E524
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TI3E524
-+# endif
-+# define machine_is_eti3e524() (machine_arch_type == MACH_TYPE_TI3E524)
-+#else
-+# define machine_is_eti3e524() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ATEB9200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ATEB9200
-+# endif
-+# define machine_is_ateb9200() (machine_arch_type == MACH_TYPE_ATEB9200)
-+#else
-+# define machine_is_ateb9200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AUCKLAND
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AUCKLAND
-+# endif
-+# define machine_is_auckland() (machine_arch_type == MACH_TYPE_AUCKLAND)
-+#else
-+# define machine_is_auckland() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AK3320M
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AK3320M
-+# endif
-+# define machine_is_ak3220m() (machine_arch_type == MACH_TYPE_AK3320M)
-+#else
-+# define machine_is_ak3220m() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DURAMAX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DURAMAX
-+# endif
-+# define machine_is_duramax() (machine_arch_type == MACH_TYPE_DURAMAX)
-+#else
-+# define machine_is_duramax() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_N35
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_N35
-+# endif
-+# define machine_is_n35() (machine_arch_type == MACH_TYPE_N35)
-+#else
-+# define machine_is_n35() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PRONGHORN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PRONGHORN
-+# endif
-+# define machine_is_pronghorn() (machine_arch_type == MACH_TYPE_PRONGHORN)
-+#else
-+# define machine_is_pronghorn() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FUNDY
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FUNDY
-+# endif
-+# define machine_is_fundy() (machine_arch_type == MACH_TYPE_FUNDY)
-+#else
-+# define machine_is_fundy() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LOGICPD_PXA270
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LOGICPD_PXA270
-+# endif
-+# define machine_is_logicpd_pxa270() (machine_arch_type == MACH_TYPE_LOGICPD_PXA270)
-+#else
-+# define machine_is_logicpd_pxa270() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CPU777
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CPU777
-+# endif
-+# define machine_is_cpu777() (machine_arch_type == MACH_TYPE_CPU777)
-+#else
-+# define machine_is_cpu777() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SIMICON9201
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SIMICON9201
-+# endif
-+# define machine_is_simicon9201() (machine_arch_type == MACH_TYPE_SIMICON9201)
-+#else
-+# define machine_is_simicon9201() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_LEAP2_HPM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_LEAP2_HPM
-+# endif
-+# define machine_is_leap2_hpm() (machine_arch_type == MACH_TYPE_LEAP2_HPM)
-+#else
-+# define machine_is_leap2_hpm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CM922TXA10
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CM922TXA10
-+# endif
-+# define machine_is_cm922txa10() (machine_arch_type == MACH_TYPE_CM922TXA10)
-+#else
-+# define machine_is_cm922txa10() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PXA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PXA
-+# endif
-+# define machine_is_sandgate() (machine_arch_type == MACH_TYPE_PXA)
-+#else
-+# define machine_is_sandgate() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SANDGATE2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SANDGATE2
-+# endif
-+# define machine_is_sandgate2() (machine_arch_type == MACH_TYPE_SANDGATE2)
-+#else
-+# define machine_is_sandgate2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SANDGATE2G
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SANDGATE2G
-+# endif
-+# define machine_is_sandgate2g() (machine_arch_type == MACH_TYPE_SANDGATE2G)
-+#else
-+# define machine_is_sandgate2g() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SANDGATE2P
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SANDGATE2P
-+# endif
-+# define machine_is_sandgate2p() (machine_arch_type == MACH_TYPE_SANDGATE2P)
-+#else
-+# define machine_is_sandgate2p() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FRED_JACK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FRED_JACK
-+# endif
-+# define machine_is_fred_jack() (machine_arch_type == MACH_TYPE_FRED_JACK)
-+#else
-+# define machine_is_fred_jack() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TTG_COLOR1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TTG_COLOR1
-+# endif
-+# define machine_is_ttg_color1() (machine_arch_type == MACH_TYPE_TTG_COLOR1)
-+#else
-+# define machine_is_ttg_color1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NXEB500HMI
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NXEB500HMI
-+# endif
-+# define machine_is_nxeb500hmi() (machine_arch_type == MACH_TYPE_NXEB500HMI)
-+#else
-+# define machine_is_nxeb500hmi() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NETDCU8
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NETDCU8
-+# endif
-+# define machine_is_netdcu8() (machine_arch_type == MACH_TYPE_NETDCU8)
-+#else
-+# define machine_is_netdcu8() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ML675050_CPU_BOA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ML675050_CPU_BOA
-+# endif
-+# define machine_is_ml675050_cpu_boa() (machine_arch_type == MACH_TYPE_ML675050_CPU_BOA)
-+#else
-+# define machine_is_ml675050_cpu_boa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NG_FVX538
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NG_FVX538
-+# endif
-+# define machine_is_ng_fvx538() (machine_arch_type == MACH_TYPE_NG_FVX538)
-+#else
-+# define machine_is_ng_fvx538() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NG_FVS338
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NG_FVS338
-+# endif
-+# define machine_is_ng_fvs338() (machine_arch_type == MACH_TYPE_NG_FVS338)
-+#else
-+# define machine_is_ng_fvs338() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PNX4103
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PNX4103
-+# endif
-+# define machine_is_pnx4103() (machine_arch_type == MACH_TYPE_PNX4103)
-+#else
-+# define machine_is_pnx4103() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HESDB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HESDB
-+# endif
-+# define machine_is_hesdb() (machine_arch_type == MACH_TYPE_HESDB)
-+#else
-+# define machine_is_hesdb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_XSILO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_XSILO
-+# endif
-+# define machine_is_xsilo() (machine_arch_type == MACH_TYPE_XSILO)
-+#else
-+# define machine_is_xsilo() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ESPRESSO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ESPRESSO
-+# endif
-+# define machine_is_espresso() (machine_arch_type == MACH_TYPE_ESPRESSO)
-+#else
-+# define machine_is_espresso() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EMLC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EMLC
-+# endif
-+# define machine_is_emlc() (machine_arch_type == MACH_TYPE_EMLC)
-+#else
-+# define machine_is_emlc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SISTERON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SISTERON
-+# endif
-+# define machine_is_sisteron() (machine_arch_type == MACH_TYPE_SISTERON)
-+#else
-+# define machine_is_sisteron() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_RX1950
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_RX1950
-+# endif
-+# define machine_is_rx1950() (machine_arch_type == MACH_TYPE_RX1950)
-+#else
-+# define machine_is_rx1950() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TSC_VENUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TSC_VENUS
-+# endif
-+# define machine_is_tsc_venus() (machine_arch_type == MACH_TYPE_TSC_VENUS)
-+#else
-+# define machine_is_tsc_venus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DS101J
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DS101J
-+# endif
-+# define machine_is_ds101j() (machine_arch_type == MACH_TYPE_DS101J)
-+#else
-+# define machine_is_ds101j() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MXC30030ADS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MXC30030ADS
-+# endif
-+# define machine_is_mxc30030ads() (machine_arch_type == MACH_TYPE_MXC30030ADS)
-+#else
-+# define machine_is_mxc30030ads() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_FUJITSU_WIMAXSOC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_FUJITSU_WIMAXSOC
-+# endif
-+# define machine_is_fujitsu_wimaxsoc() (machine_arch_type == MACH_TYPE_FUJITSU_WIMAXSOC)
-+#else
-+# define machine_is_fujitsu_wimaxsoc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DUALPCMODEM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DUALPCMODEM
-+# endif
-+# define machine_is_dualpcmodem() (machine_arch_type == MACH_TYPE_DUALPCMODEM)
-+#else
-+# define machine_is_dualpcmodem() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GESBC9312
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GESBC9312
-+# endif
-+# define machine_is_gesbc9312() (machine_arch_type == MACH_TYPE_GESBC9312)
-+#else
-+# define machine_is_gesbc9312() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCAPACHE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCAPACHE
-+# endif
-+# define machine_is_htcapache() (machine_arch_type == MACH_TYPE_HTCAPACHE)
-+#else
-+# define machine_is_htcapache() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXDP435
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXDP435
-+# endif
-+# define machine_is_ixdp435() (machine_arch_type == MACH_TYPE_IXDP435)
-+#else
-+# define machine_is_ixdp435() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CATPROVT100
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CATPROVT100
-+# endif
-+# define machine_is_catprovt100() (machine_arch_type == MACH_TYPE_CATPROVT100)
-+#else
-+# define machine_is_catprovt100() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PICOTUX1XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PICOTUX1XX
-+# endif
-+# define machine_is_picotux1xx() (machine_arch_type == MACH_TYPE_PICOTUX1XX)
-+#else
-+# define machine_is_picotux1xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PICOTUX2XX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PICOTUX2XX
-+# endif
-+# define machine_is_picotux2xx() (machine_arch_type == MACH_TYPE_PICOTUX2XX)
-+#else
-+# define machine_is_picotux2xx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DSMG600
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DSMG600
-+# endif
-+# define machine_is_dsmg600() (machine_arch_type == MACH_TYPE_DSMG600)
-+#else
-+# define machine_is_dsmg600() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EMPC2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EMPC2
-+# endif
-+# define machine_is_empc2() (machine_arch_type == MACH_TYPE_EMPC2)
-+#else
-+# define machine_is_empc2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VENTURA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VENTURA
-+# endif
-+# define machine_is_ventura() (machine_arch_type == MACH_TYPE_VENTURA)
-+#else
-+# define machine_is_ventura() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PHIDGET_SBC
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PHIDGET_SBC
-+# endif
-+# define machine_is_phidget_sbc() (machine_arch_type == MACH_TYPE_PHIDGET_SBC)
-+#else
-+# define machine_is_phidget_sbc() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IJ3K
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IJ3K
-+# endif
-+# define machine_is_ij3k() (machine_arch_type == MACH_TYPE_IJ3K)
-+#else
-+# define machine_is_ij3k() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PISGAH
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PISGAH
-+# endif
-+# define machine_is_pisgah() (machine_arch_type == MACH_TYPE_PISGAH)
-+#else
-+# define machine_is_pisgah() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_FSAMPLE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_FSAMPLE
-+# endif
-+# define machine_is_omap_fsample() (machine_arch_type == MACH_TYPE_OMAP_FSAMPLE)
-+#else
-+# define machine_is_omap_fsample() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SG720
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SG720
-+# endif
-+# define machine_is_sg720() (machine_arch_type == MACH_TYPE_SG720)
-+#else
-+# define machine_is_sg720() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_REDFOX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_REDFOX
-+# endif
-+# define machine_is_redfox() (machine_arch_type == MACH_TYPE_REDFOX)
-+#else
-+# define machine_is_redfox() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MYSH_EP9315_1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MYSH_EP9315_1
-+# endif
-+# define machine_is_mysh_ep9315_1() (machine_arch_type == MACH_TYPE_MYSH_EP9315_1)
-+#else
-+# define machine_is_mysh_ep9315_1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TPF106
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TPF106
-+# endif
-+# define machine_is_tpf106() (machine_arch_type == MACH_TYPE_TPF106)
-+#else
-+# define machine_is_tpf106() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AT91RM9200KG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AT91RM9200KG
-+# endif
-+# define machine_is_at91rm9200kg() (machine_arch_type == MACH_TYPE_AT91RM9200KG)
-+#else
-+# define machine_is_at91rm9200kg() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SLEDB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SLEDB
-+# endif
-+# define machine_is_racemt2() (machine_arch_type == MACH_TYPE_SLEDB)
-+#else
-+# define machine_is_racemt2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ONTRACK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ONTRACK
-+# endif
-+# define machine_is_ontrack() (machine_arch_type == MACH_TYPE_ONTRACK)
-+#else
-+# define machine_is_ontrack() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PM1200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PM1200
-+# endif
-+# define machine_is_pm1200() (machine_arch_type == MACH_TYPE_PM1200)
-+#else
-+# define machine_is_pm1200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ESS24XXX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ESS24XXX
-+# endif
-+# define machine_is_ess24562() (machine_arch_type == MACH_TYPE_ESS24XXX)
-+#else
-+# define machine_is_ess24562() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_COREMP7
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_COREMP7
-+# endif
-+# define machine_is_coremp7() (machine_arch_type == MACH_TYPE_COREMP7)
-+#else
-+# define machine_is_coremp7() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NEXCODER_6446
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NEXCODER_6446
-+# endif
-+# define machine_is_nexcoder_6446() (machine_arch_type == MACH_TYPE_NEXCODER_6446)
-+#else
-+# define machine_is_nexcoder_6446() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_STVC8380
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_STVC8380
-+# endif
-+# define machine_is_stvc8380() (machine_arch_type == MACH_TYPE_STVC8380)
-+#else
-+# define machine_is_stvc8380() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_TEKLYNX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_TEKLYNX
-+# endif
-+# define machine_is_teklynx() (machine_arch_type == MACH_TYPE_TEKLYNX)
-+#else
-+# define machine_is_teklynx() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CARBONADO
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CARBONADO
-+# endif
-+# define machine_is_carbonado() (machine_arch_type == MACH_TYPE_CARBONADO)
-+#else
-+# define machine_is_carbonado() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SYSMOS_MP730
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SYSMOS_MP730
-+# endif
-+# define machine_is_sysmos_mp730() (machine_arch_type == MACH_TYPE_SYSMOS_MP730)
-+#else
-+# define machine_is_sysmos_mp730() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SNAPPER_CL15
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SNAPPER_CL15
-+# endif
-+# define machine_is_snapper_cl15() (machine_arch_type == MACH_TYPE_SNAPPER_CL15)
-+#else
-+# define machine_is_snapper_cl15() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PGIGIM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PGIGIM
-+# endif
-+# define machine_is_pgigim() (machine_arch_type == MACH_TYPE_PGIGIM)
-+#else
-+# define machine_is_pgigim() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PTX9160P2
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PTX9160P2
-+# endif
-+# define machine_is_ptx9160p2() (machine_arch_type == MACH_TYPE_PTX9160P2)
-+#else
-+# define machine_is_ptx9160p2() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DCORE1
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DCORE1
-+# endif
-+# define machine_is_dcore1() (machine_arch_type == MACH_TYPE_DCORE1)
-+#else
-+# define machine_is_dcore1() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VICTORPXA
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VICTORPXA
-+# endif
-+# define machine_is_victorpxa() (machine_arch_type == MACH_TYPE_VICTORPXA)
-+#else
-+# define machine_is_victorpxa() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MX2DTB
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MX2DTB
-+# endif
-+# define machine_is_mx2dtb() (machine_arch_type == MACH_TYPE_MX2DTB)
-+#else
-+# define machine_is_mx2dtb() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PXA_IREX_ER0100
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PXA_IREX_ER0100
-+# endif
-+# define machine_is_pxa_irex_er0100() (machine_arch_type == MACH_TYPE_PXA_IREX_ER0100)
-+#else
-+# define machine_is_pxa_irex_er0100() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_PALMZ71
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_PALMZ71
-+# endif
-+# define machine_is_omap_palmz71() (machine_arch_type == MACH_TYPE_OMAP_PALMZ71)
-+#else
-+# define machine_is_omap_palmz71() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BARTEC_DEG
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BARTEC_DEG
-+# endif
-+# define machine_is_bartec_deg() (machine_arch_type == MACH_TYPE_BARTEC_DEG)
-+#else
-+# define machine_is_bartec_deg() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HW50251
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HW50251
-+# endif
-+# define machine_is_hw50251() (machine_arch_type == MACH_TYPE_HW50251)
-+#else
-+# define machine_is_hw50251() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IBOX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IBOX
-+# endif
-+# define machine_is_ibox() (machine_arch_type == MACH_TYPE_IBOX)
-+#else
-+# define machine_is_ibox() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ATLASLH7A404
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ATLASLH7A404
-+# endif
-+# define machine_is_atlaslh7a404() (machine_arch_type == MACH_TYPE_ATLASLH7A404)
-+#else
-+# define machine_is_atlaslh7a404() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PT2026
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PT2026
-+# endif
-+# define machine_is_pt2026() (machine_arch_type == MACH_TYPE_PT2026)
-+#else
-+# define machine_is_pt2026() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCALPINE
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCALPINE
-+# endif
-+# define machine_is_htcalpine() (machine_arch_type == MACH_TYPE_HTCALPINE)
-+#else
-+# define machine_is_htcalpine() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BARTEC_VTU
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BARTEC_VTU
-+# endif
-+# define machine_is_bartec_vtu() (machine_arch_type == MACH_TYPE_BARTEC_VTU)
-+#else
-+# define machine_is_bartec_vtu() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_VCOREII
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_VCOREII
-+# endif
-+# define machine_is_vcoreii() (machine_arch_type == MACH_TYPE_VCOREII)
-+#else
-+# define machine_is_vcoreii() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_PDNB3
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_PDNB3
-+# endif
-+# define machine_is_pdnb3() (machine_arch_type == MACH_TYPE_PDNB3)
-+#else
-+# define machine_is_pdnb3() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_HTCBEETLES
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_HTCBEETLES
-+# endif
-+# define machine_is_htcbeetles() (machine_arch_type == MACH_TYPE_HTCBEETLES)
-+#else
-+# define machine_is_htcbeetles() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_S3C6400
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_S3C6400
-+# endif
-+# define machine_is_s3c6400() (machine_arch_type == MACH_TYPE_S3C6400)
-+#else
-+# define machine_is_s3c6400() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_S3C2443
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_S3C2443
-+# endif
-+# define machine_is_s3c2443() (machine_arch_type == MACH_TYPE_S3C2443)
-+#else
-+# define machine_is_s3c2443() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OMAP_LDK
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OMAP_LDK
-+# endif
-+# define machine_is_omap_ldk() (machine_arch_type == MACH_TYPE_OMAP_LDK)
-+#else
-+# define machine_is_omap_ldk() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2460
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2460
-+# endif
-+# define machine_is_smdk2460() (machine_arch_type == MACH_TYPE_SMDK2460)
-+#else
-+# define machine_is_smdk2460() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2440
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2440
-+# endif
-+# define machine_is_smdk2440() (machine_arch_type == MACH_TYPE_SMDK2440)
-+#else
-+# define machine_is_smdk2440() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2412
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2412
-+# endif
-+# define machine_is_smdk2412() (machine_arch_type == MACH_TYPE_SMDK2412)
-+#else
-+# define machine_is_smdk2412() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_WEBBOX
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_WEBBOX
-+# endif
-+# define machine_is_webbox() (machine_arch_type == MACH_TYPE_WEBBOX)
-+#else
-+# define machine_is_webbox() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CWWNDP
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CWWNDP
-+# endif
-+# define machine_is_cwwndp() (machine_arch_type == MACH_TYPE_CWWNDP)
-+#else
-+# define machine_is_cwwndp() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DRAGON
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DRAGON
-+# endif
-+# define machine_is_dragon() (machine_arch_type == MACH_TYPE_DRAGON)
-+#else
-+# define machine_is_dragon() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_OPENDO_CPU_BOARD
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_OPENDO_CPU_BOARD
-+# endif
-+# define machine_is_opendo_cpu_board() (machine_arch_type == MACH_TYPE_OPENDO_CPU_BOARD)
-+#else
-+# define machine_is_opendo_cpu_board() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CCM2200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CCM2200
-+# endif
-+# define machine_is_ccm2200() (machine_arch_type == MACH_TYPE_CCM2200)
-+#else
-+# define machine_is_ccm2200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_ETWARM
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_ETWARM
-+# endif
-+# define machine_is_etwarm() (machine_arch_type == MACH_TYPE_ETWARM)
-+#else
-+# define machine_is_etwarm() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_M93030
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_M93030
-+# endif
-+# define machine_is_m93030() (machine_arch_type == MACH_TYPE_M93030)
-+#else
-+# define machine_is_m93030() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_CC7U
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_CC7U
-+# endif
-+# define machine_is_cc7u() (machine_arch_type == MACH_TYPE_CC7U)
-+#else
-+# define machine_is_cc7u() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_MTT_RANGER
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_MTT_RANGER
-+# endif
-+# define machine_is_mtt_ranger() (machine_arch_type == MACH_TYPE_MTT_RANGER)
-+#else
-+# define machine_is_mtt_ranger() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_NEXUS
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_NEXUS
-+# endif
-+# define machine_is_nexus() (machine_arch_type == MACH_TYPE_NEXUS)
-+#else
-+# define machine_is_nexus() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_DESMAN
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_DESMAN
-+# endif
-+# define machine_is_desman() (machine_arch_type == MACH_TYPE_DESMAN)
-+#else
-+# define machine_is_desman() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BKDE303
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BKDE303
-+# endif
-+# define machine_is_bkde303() (machine_arch_type == MACH_TYPE_BKDE303)
-+#else
-+# define machine_is_bkde303() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SMDK2413
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SMDK2413
-+# endif
-+# define machine_is_smdk2413() (machine_arch_type == MACH_TYPE_SMDK2413)
-+#else
-+# define machine_is_smdk2413() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AML_M7200
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AML_M7200
-+# endif
-+# define machine_is_aml_m7200() (machine_arch_type == MACH_TYPE_AML_M7200)
-+#else
-+# define machine_is_aml_m7200() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AML_M5900
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AML_M5900
-+# endif
-+# define machine_is_aml_m5900() (machine_arch_type == MACH_TYPE_AML_M5900)
-+#else
-+# define machine_is_aml_m5900() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_SG640
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_SG640
-+# endif
-+# define machine_is_sg640() (machine_arch_type == MACH_TYPE_SG640)
-+#else
-+# define machine_is_sg640() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_EDG79524
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_EDG79524
-+# endif
-+# define machine_is_edg79524() (machine_arch_type == MACH_TYPE_EDG79524)
-+#else
-+# define machine_is_edg79524() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_AI2410
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_AI2410
-+# endif
-+# define machine_is_ai2410() (machine_arch_type == MACH_TYPE_AI2410)
-+#else
-+# define machine_is_ai2410() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_IXP465
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_IXP465
-+# endif
-+# define machine_is_ixp465() (machine_arch_type == MACH_TYPE_IXP465)
-+#else
-+# define machine_is_ixp465() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_BALLOON3
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_BALLOON3
-+# endif
-+# define machine_is_balloon3() (machine_arch_type == MACH_TYPE_BALLOON3)
-+#else
-+# define machine_is_balloon3() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_QT2410
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_QT2410
-+# endif
-+# define machine_is_qt2410() (machine_arch_type == MACH_TYPE_QT2410)
-+#else
-+# define machine_is_qt2410() (0)
-+#endif
-+
-+#ifdef CONFIG_MACH_GTA01
-+# ifdef machine_arch_type
-+# undef machine_arch_type
-+# define machine_arch_type __machine_arch_type
-+# else
-+# define machine_arch_type MACH_TYPE_GTA01
-+# endif
-+# define machine_is_gta01() (machine_arch_type == MACH_TYPE_GTA01)
-+#else
-+# define machine_is_gta01() (0)
-+#endif
-+
-+
- /*
- * These have not yet been registered
- */
-Index: git/include/configs/gta01.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/configs/gta01.h 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,233 @@
-+/*
-+ * (C) Copyright 2006 Harald Welte <hwelte@hmw-consulting.de>
-+ *
-+ * Configuation settings for the FIC GTA01 Linux GSM phone
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#ifndef __CONFIG_H
-+#define __CONFIG_H
-+
-+/* we want to start u-boot directly from within NAND flash */
-+#define CONFIG_S3C2410_NAND_BOOT 1
-+
-+/*
-+ * High Level Configuration Options
-+ * (easy to change)
-+ */
-+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-+
-+/* input clock of PLL */
-+#define CONFIG_SYS_CLK_FREQ 12000000/* the GTA01 has 12MHz input clock */
-+
-+
-+#define USE_920T_MMU 1
-+#define CONFIG_USE_IRQ 1
-+
-+/*
-+ * Size of malloc() pool
-+ */
-+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-+
-+/*
-+ * Hardware drivers
-+ */
-+
-+/*
-+ * select serial console configuration
-+ */
-+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on GTA01 */
-+//#define CONFIG_HWFLOW 1
-+
-+/************************************************************
-+ * RTC
-+ ************************************************************/
-+#define CONFIG_RTC_S3C24X0 1
-+
-+/* allow to overwrite serial and ethaddr */
-+#define CONFIG_ENV_OVERWRITE
-+
-+#define CONFIG_BAUDRATE 115200
-+
-+/***********************************************************
-+ * Command definition
-+ ***********************************************************/
-+#define CONFIG_COMMANDS (\
-+ CFG_CMD_BDI | \
-+ CFG_CMD_LOADS | \
-+ CFG_CMD_LAODB | \
-+ CFG_CMD_IMI | \
-+ CFG_CMD_CACHE | \
-+ CFG_CMD_MEMORY | \
-+ CFG_CMD_ENV | \
-+ /* CFG_CMD_IRQ | */ \
-+ CFG_CMD_BOOTD | \
-+ CFG_CMD_CONSOLE | \
-+ CFG_CMD_ASKENV | \
-+ CFG_CMD_RUN | \
-+ CFG_CMD_ECHO | \
-+ CFG_CMD_I2C | \
-+ CFG_CMD_REGINFO | \
-+ CFG_CMD_IMMAP | \
-+ CFG_CMD_DATE | \
-+ CFG_CMD_AUTOSCRIPT | \
-+ CFG_CMD_BSP | \
-+ CFG_CMD_ELF | \
-+ CFG_CMD_MISC | \
-+ CFG_CMD_USB | \
-+ CFG_CMD_JFFS2 | \
-+ CFG_CMD_DIAG | \
-+ /* CFG_CMD_HWFLOW | */ \
-+ CFG_CMD_SAVES | \
-+ CFG_CMD_NAND | \
-+ CFG_CMD_PORTIO | \
-+ CFG_CMD_MMC | \
-+ CFG_CMD_FAT | \
-+ CFG_CMD_EXT2 | \
-+ 0)
-+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-+#include <cmd_confdefs.h>
-+
-+#define CONFIG_BOOTDELAY 3
-+#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
-+#define CONFIG_BOOTCOMMAND "nand read 0x32000000 0x34000 0x200000; bootm 0x32000000"
-+
-+#define CONFIG_DOS_PARTITION 1
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-+/* what's this ? it's not used anywhere */
-+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-+#endif
-+
-+/*
-+ * Miscellaneous configurable options
-+ */
-+#define CFG_LONGHELP /* undef to save memory */
-+#define CFG_PROMPT "GTA01 # " /* Monitor Command Prompt */
-+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-+#define CFG_MAXARGS 16 /* max number of command args */
-+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-+
-+#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-+
-+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-+
-+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-+
-+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-+/* it to wrap 100 times (total 1562500) to get 1 sec. */
-+#define CFG_HZ 1562500
-+
-+/* valid baudrates */
-+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-+
-+/*-----------------------------------------------------------------------
-+ * Stack sizes
-+ *
-+ * The stack sizes are set up in start.S using the settings below
-+ */
-+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-+#ifdef CONFIG_USE_IRQ
-+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-+#endif
-+
-+#define CONFIG_USB_OHCI 1
-+
-+/*-----------------------------------------------------------------------
-+ * Physical Memory Map
-+ */
-+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-+
-+/*-----------------------------------------------------------------------
-+ * FLASH and environment organization
-+ */
-+
-+/* No NOR flash in this device */
-+#define CFG_NO_FLASH 1
-+
-+#define CFG_ENV_IS_IN_NAND 1
-+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-+
-+#define NAND_MAX_CHIPS 1
-+#define CFG_NAND_BASE 0x4e000000
-+#define CFG_MAX_NAND_DEVICE 1
-+
-+#define CONFIG_MMC 1
-+#define CFG_MMC_BASE 0xff000000
-+
-+/* EXT2 driver */
-+#define CONFIG_EXT2 1
-+
-+#if 0
-+/* FAT driver in u-boot is broken currently */
-+#define CONFIG_FAT 1
-+#define CONFIG_SUPPORT_VFAT 1
-+#endif
-+
-+/* JFFS2 driver */
-+#define CONFIG_JFFS2_CMDLINE 1
-+#define CONFIG_JFFS2_NAND 1
-+#define CONFIG_JFFS2_NAND_DEV 0
-+#define CONFIG_JFFS2_NAND_OFF 0x634000
-+#define CONFIG_JFFS2_NAND_SIZE 0x39cc000
-+
-+/* ATAG configuration */
-+#define CONFIG_INITRD_TAG 1
-+#define CONFIG_SETUP_MEMORY_TAGS 1
-+#define CONFIG_CMDLINE_TAG 1
-+#define CONFIG_REVISION_TAG 1
-+#if 0
-+#define CONFIG_SERIAL_TAG 1
-+#endif
-+
-+#define CONFIG_DRIVER_S3C24X0_I2C 1
-+#define CONFIG_HARD_I2C 1
-+#define CFG_I2C_SPEED 400000 /* 400kHz according to PCF50606 data sheet */
-+#define CFG_I2C_SLAVE 0x7f
-+
-+/* we have a board_late_init() function */
-+#define BOARD_LATE_INIT 1
-+
-+#if 0
-+#define CONFIG_VIDEO
-+#define CONFIG_VIDEO_S3C2410
-+#define CONFIG_CFB_CONSOLE
-+#define CONFIG_VIDEO_LOGO
-+#define CONFIG_VGA_AS_SINGLE_DEVICE
-+
-+#define VIDEO_KBD_INIT_FCT 0
-+#define VIDEO_TSTC_FCT serial_tstc
-+#define VIDEO_GETC_FCT serial_getc
-+
-+#define LCD_VIDEO_ADDR 0x33d00000
-+#endif
-+
-+#endif /* __CONFIG_H */
-Index: git/include/configs/qt2410.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ git/include/configs/qt2410.h 2007-01-04 12:21:18.000000000 +0100
-@@ -0,0 +1,245 @@
-+/*
-+ * (C) Copyright 2002
-+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-+ * Marius Groeger <mgroeger@sysgo.de>
-+ * Gary Jennejohn <gj@denx.de>
-+ * David Mueller <d.mueller@elsoft.ch>
-+ *
-+ * Configuation settings for the SAMSUNG SMDK2410 board.
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#ifndef __CONFIG_H
-+#define __CONFIG_H
-+
-+#if 1
-+/* If we want to start u-boot from usb bootloader in NOR flash */
-+#define CONFIG_SKIP_RELOCATE_UBOOT 1
-+#define CONFIG_SKIP_LOWLEVEL_INIT 1
-+#else
-+/* If we want to start u-boot directly from within NAND flash */
-+#define CONFIG_S3C2410_NAND_BOOT 1
-+#endif
-+
-+/*
-+ * High Level Configuration Options
-+ * (easy to change)
-+ */
-+#define CONFIG_ARM920T 1 /* This is an ARM920T Core */
-+#define CONFIG_S3C2410 1 /* in a SAMSUNG S3C2410 SoC */
-+#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
-+
-+/* input clock of PLL */
-+#define CONFIG_SYS_CLK_FREQ 12000000/* the SMDK2410 has 12MHz input clock */
-+
-+
-+#define USE_920T_MMU 1
-+#define CONFIG_USE_IRQ 1
-+//#undef CONFIG_USE_IRQ /* we don't need IRQ/FIQ stuff */
-+
-+/*
-+ * Size of malloc() pool
-+ */
-+#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 128*1024)
-+#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
-+
-+/*
-+ * Hardware drivers
-+ */
-+#define CONFIG_DRIVER_CS8900 1 /* we have a CS8900 on-board */
-+#define CS8900_BASE 0x19000300
-+#define CS8900_BUS16 1 /* the Linux driver does accesses as shorts */
-+
-+/*
-+ * select serial console configuration
-+ */
-+#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */
-+#define CONFIG_HWFLOW 1
-+
-+/************************************************************
-+ * RTC
-+ ************************************************************/
-+#define CONFIG_RTC_S3C24X0 1
-+
-+/* allow to overwrite serial and ethaddr */
-+#define CONFIG_ENV_OVERWRITE
-+
-+#define CONFIG_BAUDRATE 115200
-+
-+/***********************************************************
-+ * Command definition
-+ ***********************************************************/
-+#define CONFIG_COMMANDS \
-+ (CONFIG_CMD_DFL | \
-+ CFG_CMD_BSP | \
-+ CFG_CMD_CACHE | \
-+ CFG_CMD_DATE | \
-+ CFG_CMD_DHCP | \
-+ CFG_CMD_DIAG | \
-+ CFG_CMD_ELF | \
-+ CFG_CMD_EXT2 | \
-+ CFG_CMD_FAT | \
-+ CFG_CMD_HWFLOW | \
-+ /* CFG_CMD_IDE | */ \
-+ /* CFG_CMD_IRQ | */ \
-+ CFG_CMD_JFFS2 | \
-+ CFG_CMD_MMC | \
-+ CFG_CMD_NAND | \
-+ CFG_CMD_PING | \
-+ CFG_CMD_PORTIO | \
-+ CFG_CMD_REGINFO | \
-+ CFG_CMD_SAVES | \
-+ CFG_CMD_USB)
-+
-+/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-+#include <cmd_confdefs.h>
-+
-+#define CONFIG_BOOTDELAY 3
-+#define CONFIG_BOOTARGS "rootfstype=jffs2 root=/dev/mtdblock4 console=ttySAC0,115200 console=tty0 loglevel=8"
-+#define CONFIG_ETHADDR 01:ab:cd:ef:fe:dc
-+#define CONFIG_NETMASK 255.255.255.0
-+#define CONFIG_IPADDR 10.0.0.110
-+#define CONFIG_SERVERIP 10.0.0.1
-+/*#define CONFIG_BOOTFILE "elinos-lart" */
-+#define CONFIG_BOOTCOMMAND "nand load 0x32000000 0x34000 0x200000; bootm 0x32000000"
-+
-+#define CONFIG_DOS_PARTITION 1
-+
-+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
-+#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
-+/* what's this ? it's not used anywhere */
-+#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
-+#endif
-+
-+/*
-+ * Miscellaneous configurable options
-+ */
-+#define CFG_LONGHELP /* undef to save memory */
-+#define CFG_PROMPT "QT2410 # " /* Monitor Command Prompt */
-+#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
-+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
-+#define CFG_MAXARGS 16 /* max number of command args */
-+#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
-+
-+#define CFG_MEMTEST_START 0x30000000 /* memtest works on */
-+#define CFG_MEMTEST_END 0x33F00000 /* 63 MB in DRAM */
-+
-+#undef CFG_CLKS_IN_HZ /* everything, incl board info, in Hz */
-+
-+#define CFG_LOAD_ADDR 0x33000000 /* default load address */
-+
-+/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-+/* it to wrap 100 times (total 1562500) to get 1 sec. */
-+#define CFG_HZ 1562500
-+
-+/* valid baudrates */
-+#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
-+
-+/*-----------------------------------------------------------------------
-+ * Stack sizes
-+ *
-+ * The stack sizes are set up in start.S using the settings below
-+ */
-+#define CONFIG_STACKSIZE (128*1024) /* regular stack */
-+#ifdef CONFIG_USE_IRQ
-+#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack */
-+#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack */
-+#endif
-+
-+/* IDE/ATA config */
-+
-+#if 0
-+#define CFG_IDE_MAXBUS 1
-+#define CFG_IDE_MAXDEVICE 2
-+#define CFG_IDE_PREINIT 0
-+
-+#define CFG_ATA_BASE_ADDR
-+#endif
-+
-+#define CONFIG_USB_OHCI 1
-+
-+/*-----------------------------------------------------------------------
-+ * Physical Memory Map
-+ */
-+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-+#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */
-+#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */
-+#define PHYS_SDRAM_RES_SIZE 0x00200000 /* 2 MB for frame buffer */
-+
-+#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
-+
-+#define CFG_FLASH_BASE PHYS_FLASH_1
-+
-+/*-----------------------------------------------------------------------
-+ * FLASH and environment organization
-+ */
-+
-+#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
-+
-+#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
-+#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */
-+#define CFG_MAX_FLASH_SECT (11) /* max number of sectors on one chip */
-+
-+/* timeout values are in ticks */
-+#define CFG_FLASH_ERASE_TOUT (5*CFG_HZ) /* Timeout for Flash Erase */
-+#define CFG_FLASH_WRITE_TOUT (5*CFG_HZ) /* Timeout for Flash Write */
-+
-+#define CFG_ENV_IS_IN_NAND 1
-+#define CFG_ENV_SIZE 0x4000 /* 16k Total Size of Environment Sector */
-+#define CFG_ENV_OFFSET 0x30000 /* environment after bootloader */
-+
-+#define NAND_MAX_CHIPS 1
-+#define CFG_NAND_BASE 0x4e000000
-+#define CFG_MAX_NAND_DEVICE 1
-+
-+#define CONFIG_MMC 1
-+#define CFG_MMC_BASE 0xff000000
-+
-+#define CONFIG_EXT2 1
-+
-+/* FAT driver in u-boot is broken currently */
-+#define CONFIG_FAT 1
-+#define CONFIG_SUPPORT_VFAT 1
-+
-+/* ATAG configuration */
-+#define CONFIG_INITRD_TAG 1
-+#define CONFIG_SETUP_MEMORY_TAGS 1
-+#define CONFIG_CMDLINE_TAG 1
-+#if 0
-+#define CONFIG_SERIAL_TAG 1
-+#define CONFIG_REVISION_TAG 1
-+#endif
-+
-+
-+#if 0
-+#define CONFIG_VIDEO
-+#define CONFIG_VIDEO_S3C2410
-+#define CONFIG_CFB_CONSOLE
-+#define CONFIG_VIDEO_LOGO
-+#define CONFIG_VGA_AS_SINGLE_DEVICE
-+
-+#define VIDEO_KBD_INIT_FCT 0
-+#define VIDEO_TSTC_FCT serial_tstc
-+#define VIDEO_GETC_FCT serial_getc
-+
-+#define LCD_VIDEO_ADDR 0x33d00000
-+#endif
-+
-+#endif /* __CONFIG_H */
-Index: git/include/s3c2410.h
-===================================================================
---- git.orig/include/s3c2410.h 2007-01-04 12:21:15.000000000 +0100
-+++ git/include/s3c2410.h 2007-01-04 12:21:18.000000000 +0100
-@@ -38,12 +38,6 @@
- #define S3C2410_ECCSIZE 512
- #define S3C2410_ECCBYTES 3
-
--typedef enum {
-- S3C24X0_UART0,
-- S3C24X0_UART1,
-- S3C24X0_UART2
--} S3C24X0_UARTS_NR;
--
- /* S3C2410 device base addresses */
- #define S3C24X0_MEMCTL_BASE 0x48000000
- #define S3C24X0_USB_HOST_BASE 0x49000000
-@@ -65,9 +59,23 @@
- #define S3C2410_SDI_BASE 0x5A000000
-
-
-+#define oNFCONF 0x00
-+#define oNFCMD 0x04
-+#define oNFADDR 0x08
-+#define oNFDATA 0x0C
-+#define oNFSTAT 0x10
-+#define oNFECC 0x14
-+
-+#ifndef __ASSEMBLER__
-+
- /* include common stuff */
- #include <s3c24x0.h>
-
-+typedef enum {
-+ S3C24X0_UART0,
-+ S3C24X0_UART1,
-+ S3C24X0_UART2
-+} S3C24X0_UARTS_NR;
-
- static inline S3C24X0_MEMCTL * const S3C24X0_GetBase_MEMCTL(void)
- {
-@@ -142,6 +150,7 @@
- return (S3C2410_SDI * const)S3C2410_SDI_BASE;
- }
-
-+#endif
-
- /* ISR */
- #define pISR_RESET (*(unsigned *)(_ISR_STARTADDRESS+0x0))
-Index: git/include/s3c24x0.h
-===================================================================
---- git.orig/include/s3c24x0.h 2007-01-04 12:21:15.000000000 +0100
-+++ git/include/s3c24x0.h 2007-01-04 12:21:18.000000000 +0100
-@@ -637,13 +637,7 @@
- S3C24X0_REG32 SDIDCNT;
- S3C24X0_REG32 SDIDSTA;
- S3C24X0_REG32 SDIFSTA;
--#ifdef __BIG_ENDIAN
-- S3C24X0_REG8 res[3];
-- S3C24X0_REG8 SDIDAT;
--#else
-- S3C24X0_REG8 SDIDAT;
-- S3C24X0_REG8 res[3];
--#endif
-+ S3C24X0_REG32 SDIDAT;
- S3C24X0_REG32 SDIIMSK;
- } /*__attribute__((__packed__))*/ S3C2410_SDI;
-
-@@ -1123,11 +1117,7 @@
- #define rSDIDatCnt (*(volatile unsigned *)0x5A000030)
- #define rSDIDatSta (*(volatile unsigned *)0x5A000034)
- #define rSDIFSTA (*(volatile unsigned *)0x5A000038)
--#ifdef __BIG_ENDIAN
--#define rSDIDAT (*(volatile unsigned char *)0x5A00003F)
--#else
--#define rSDIDAT (*(volatile unsigned char *)0x5A00003C)
--#endif
-+#define rSDIDAT (*(volatile unsigned *)0x5A00003C)
- #define rSDIIntMsk (*(volatile unsigned *)0x5A000040)
-
- #endif
diff --git a/packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch b/packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch
new file mode 100644
index 0000000000..e90cc0de71
--- /dev/null
+++ b/packages/uboot/files/uboot-20070311-tools_makefile_ln_sf.patch
@@ -0,0 +1,19 @@
+--- a/tools/Makefile 2007-03-11 00:55:44.000000000 +0000
++++ b/tools/Makefile 2007-03-11 00:55:52.000000000 +0000
+@@ -194,14 +194,14 @@
+
+ $(obj)environment.c:
+ @rm -f $(obj)environment.c
+- ln -s $(src)../common/environment.c $(obj)environment.c
++ ln -sf $(src)../common/environment.c $(obj)environment.c
+
+ $(obj)environment.o: $(obj)environment.c
+ $(CC) -g $(HOST_ENVIRO_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+ $(obj)crc32.c:
+ @rm -f $(obj)crc32.c
+- ln -s $(src)../lib_generic/crc32.c $(obj)crc32.c
++ ln -sf $(src)../lib_generic/crc32.c $(obj)crc32.c
+
+ $(LOGO_H): $(obj)bmp_logo $(LOGO_BMP)
+ $(obj)./bmp_logo $(LOGO_BMP) >$@
diff --git a/packages/uboot/files/uboot-eabi-fix-HACK.patch b/packages/uboot/files/uboot-eabi-fix-HACK.patch
new file mode 100644
index 0000000000..65b212917d
--- /dev/null
+++ b/packages/uboot/files/uboot-eabi-fix-HACK.patch
@@ -0,0 +1,197 @@
+Index: git/lib_arm/div0.c
+===================================================================
+--- git.orig/lib_arm/div0.c
++++ git/lib_arm/div0.c
+@@ -22,9 +22,3 @@
+ */
+
+ /* Replacement (=dummy) for GNU/Linux division-by zero handler */
+-void __div0 (void)
+-{
+- extern void hang (void);
+-
+- hang();
+-}
+Index: git/board/neo1973/common/bootmenu.c
+===================================================================
+--- git.orig/board/neo1973/common/bootmenu.c
++++ git/board/neo1973/common/bootmenu.c
+@@ -118,3 +118,14 @@ void neo1973_bootmenu(void)
+ bootmenu_add("Factory reset", factory_reset, NULL);
+ bootmenu();
+ }
++
++void raise()
++{
++ serial_printf( "*** something's wrong... please reset ***\n" );
++}
++
++void abort()
++{
++ serial_printf( "*** something's wrong... please reset ***\n" );
++}
++
+Index: git/board/neo1973/gta01/u-boot.lds
+===================================================================
+--- git.orig/board/neo1973/gta01/u-boot.lds
++++ git/board/neo1973/gta01/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/neo1973/gta02/u-boot.lds
+===================================================================
+--- git.orig/board/neo1973/gta02/u-boot.lds
++++ git/board/neo1973/gta02/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/neo1973/common/lowlevel_foo.lds
+===================================================================
+--- git.orig/board/neo1973/common/lowlevel_foo.lds
++++ git/board/neo1973/common/lowlevel_foo.lds
+@@ -37,6 +37,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/hxd8/hxd8.c
+===================================================================
+--- git.orig/board/hxd8/hxd8.c
++++ git/board/hxd8/hxd8.c
+@@ -187,3 +187,6 @@ unsigned int dynpart_size[] = {
+ char *dynpart_names[] = {
+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL };
+
++void raise() {}
++
++void abort() {}
+Index: git/board/hxd8/u-boot.lds
+===================================================================
+--- git.orig/board/hxd8/u-boot.lds
++++ git/board/hxd8/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/hxd8/lowlevel_foo.lds
+===================================================================
+--- git.orig/board/hxd8/lowlevel_foo.lds
++++ git/board/hxd8/lowlevel_foo.lds
+@@ -37,6 +37,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/qt2410/qt2410.c
+===================================================================
+--- git.orig/board/qt2410/qt2410.c
++++ git/board/qt2410/qt2410.c
+@@ -156,3 +156,7 @@ unsigned int dynpart_size[] = {
+ char *dynpart_names[] = {
+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL };
+
++void raise() {}
++
++void abort() {}
++
+Index: git/board/qt2410/u-boot.lds
+===================================================================
+--- git.orig/board/qt2410/u-boot.lds
++++ git/board/qt2410/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -225,7 +225,7 @@ LIBS := $(addprefix $(obj),$(LIBS))
+ .PHONY : $(LIBS)
+
+ # Add GCC lib
+-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
++PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc -lgcc_eh
+
+ # The "tools" are needed early, so put this first
+ # Don't include stuff already done in $(LIBS)
+Index: git/board/smdk2440/smdk2440.c
+===================================================================
+--- git.orig/board/smdk2440/smdk2440.c
++++ git/board/smdk2440/smdk2440.c
+@@ -150,3 +150,6 @@ char *dynpart_names[] = {
+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL };
+
+
++void raise() {}
++void abort() {}
++
+Index: git/board/smdk2440/u-boot.lds
+===================================================================
+--- git.orig/board/smdk2440/u-boot.lds
++++ git/board/smdk2440/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/neo1973/gta02/gta02.c
+===================================================================
+--- git.orig/board/neo1973/gta02/gta02.c
++++ git/board/neo1973/gta02/gta02.c
+@@ -321,3 +321,7 @@ int neo1973_set_charge_mode(enum neo1973
+ /* FIXME */
+ return 0;
+ }
++
++void raise() {}
++void abort() {}
++
diff --git a/packages/uboot/u-boot-mkimage-gta01-native_oe.bb b/packages/uboot/u-boot-mkimage-gta01-native_oe.bb
index 65c413c8d7..2eafac668f 100644
--- a/packages/uboot/u-boot-mkimage-gta01-native_oe.bb
+++ b/packages/uboot/u-boot-mkimage-gta01-native_oe.bb
@@ -74,6 +74,7 @@ do_compile () {
do_deploy () {
install -m 0755 tools/mkimage ${STAGING_BINDIR_NATIVE}/uboot-mkimage
+ ln -sf ${STAGING_BINDIR_NATIVE}/uboot-mkimage ${STAGING_BINDIR_NATIVE}/mkimage
}
do_deploy[dirs] = "${S}"
diff --git a/packages/uboot/u-boot-mkimage-gta01-native_svn.bb b/packages/uboot/u-boot-mkimage-gta01-native_svn.bb
deleted file mode 100644
index 90b3bbef5a..0000000000
--- a/packages/uboot/u-boot-mkimage-gta01-native_svn.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require uboot-gta01_svn.bb
-
-DEFAULT_PREFERENCE = "-1"
-
-PROVIDES = ""
-TARGET_LDFLAGS = ""
-
-do_compile () {
- chmod +x board/neo1973/gta01/split_by_variant.sh
- oe_runmake gta01bv3_config
- oe_runmake clean
- oe_runmake tools
-}
-
-do_deploy () {
- install -m 0755 tools/mkimage ${STAGING_BINDIR_NATIVE}/uboot-mkimage
-}
-
-do_deploy[dirs] = "${S}"
-addtask deploy before do_package after do_install
diff --git a/packages/uboot/u-boot_1.1.4.bb b/packages/uboot/u-boot_1.1.4.bb
index 5c158f2401..45d24df455 100644
--- a/packages/uboot/u-boot_1.1.4.bb
+++ b/packages/uboot/u-boot_1.1.4.bb
@@ -25,11 +25,15 @@ SRC_URI_append_amsdelta = "\
SRC_URI_append_dht-walnut= "\
file://u-boot-dht-walnut-df2.patch;patch=1"
+SRC_URI_append_avr32= "\
+ http://avr32linux.org/twiki/pub/Main/UbootPatches/u-boot-1.1.4-avr1.patch.bz2;patch=1"
+
EXTRA_OEMAKE_gumstix = "CROSS_COMPILE=${TARGET_PREFIX} GUMSTIX_400MHZ=${GUMSTIX_400MHZ}"
TARGET_LDFLAGS = ""
UBOOT_MACHINE_dht-walnut = "walnut_config"
+UBOOT_MACHINE_atngw100 = "atngw_config"
def gumstix_mhz(d):
import bb
diff --git a/packages/uboot/uboot-gta01_svn.bb b/packages/uboot/uboot-gta01_svn.bb
index d026efccc1..2cf50c78bd 100644
--- a/packages/uboot/uboot-gta01_svn.bb
+++ b/packages/uboot/uboot-gta01_svn.bb
@@ -4,55 +4,79 @@ LICENSE = "GPL"
SECTION = "bootloader"
PRIORITY = "optional"
PV = "1.2.0+svn${SRCDATE}"
-PR = "r3"
+PR = "r10"
PROVIDES = "virtual/bootloader"
S = "${WORKDIR}/git"
SRC_URI = "git://www.denx.de/git/u-boot.git/;protocol=git \
svn://svn.openmoko.org/trunk/src/target/u-boot;module=patches;proto=http \
- file://fix-arm920t-eabi.patch;patch=1"
+ file://uboot-eabi-fix-HACK.patch \
+ file://uboot-20070311-tools_makefile_ln_sf.patch;patch=1 \
+"
EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
TARGET_LDFLAGS = ""
-UBOOT_MACHINES = "gta01v3 gta01v4 gta01bv2 gta01bv3"
+UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 smdk2440 hxd8 qt2410 gta02v1"
do_quilt() {
- mv ${WORKDIR}/patches ${S}/patches
- cd ${S}
- quilt push -av
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
rm -Rf patches .pc
}
+do_svnrev() {
+ FILE=${S}/tools/setlocalversion
+ OLDFILE=$FILE.old
+ NEWFILE=$FILE.new
+ cp $FILE $OLDFILE
+ LINES=`cat $OLDFILE | wc -l`
+ LINES_WE_WANT=$(($LINES-1))
+ LASTLINE=`cat $OLDFILE | tail -n 1`
+ cat $OLDFILE | head -n $LINES_WE_WANT > $NEWFILE
+ echo ${LASTLINE}_${PR} >> $NEWFILE
+ rm $FILE && mv $NEWFILE $FILE
+}
+
+do_configure_prepend() {
+ find . -name "*.mk" -exec sed -i 's,-mabi=apcs-gnu,,' {} \;
+ find . -name "Makefile" -exec sed -i 's,-mabi=apcs-gnu,,' {} \;
+ cat ${WORKDIR}/uboot-eabi-fix-HACK.patch |patch -p1
+}
+
do_compile () {
- chmod +x board/neo1973/split_by_variant.sh
- for type in ram nand
+ chmod +x board/neo1973/gta*/split_by_variant.sh
+ for mach in ${UBOOT_MACHINES}
do
- for mach in ${UBOOT_MACHINES}
- do
- oe_runmake ${mach}_config
- oe_runmake clean
- if [ ${type} == "ram" ]; then
- echo 'PLATFORM_RELFLAGS += -DBUILD_FOR_RAM' >> board/neo1973/config.tmp
- fi
- oe_runmake all
- mv u-boot.bin u-boot_${mach}_${type}.bin
- done
+ oe_runmake ${mach}_config
+ oe_runmake clean
+ 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
+ fi
done
}
do_deploy () {
install -d ${DEPLOY_DIR_IMAGE}
- for type in nand ram
+ for mach in ${UBOOT_MACHINES}
do
- for mach in ${UBOOT_MACHINES}
- do
- install ${S}/u-boot_${mach}_${type}.bin ${DEPLOY_DIR_IMAGE}/u-boot_${type}-${mach}-${DATETIME}.bin
- done
+ install ${S}/u-boot_${mach}.bin \
+ ${DEPLOY_DIR_IMAGE}/u-boot-${mach}-${PR}.bin
+ if [ -f ${S}/lowlevel_foo_${mach}.bin ]; then
+ install ${S}/lowlevel_foo_${mach}.bin \
+ ${DEPLOY_DIR_IMAGE}/lowlevel_foo-${mach}-${PR}.bin
+ fi
done
install -m 0755 tools/mkimage ${STAGING_BINDIR_NATIVE}/uboot-mkimage
}
do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
+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/uboot-qt2410_0.0+cvs20061030.bb b/packages/uboot/uboot-qt2410_0.0+cvs20061030.bb
deleted file mode 100644
index 102030f147..0000000000
--- a/packages/uboot/uboot-qt2410_0.0+cvs20061030.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "U-boot bootloader w/ armzone qt2410 support"
-SECTION = "bootloader"
-PRIORITY = "optional"
-LICENSE = "GPL"
-SRCDATE := "${PV}"
-PR = "r0"
-
-PROVIDES = "virtual/bootloader"
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://www.denx.de/git/u-boot.git/;protocol=git \
- file://u-boot-20061030-qt2410-gta01.patch;patch=1 \
- file://qt2410_*.h"
-
-EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
-TARGET_LDFLAGS = ""
-UBOOT_MACHINE = "qt2410_config"
-
-inherit base
-
-do_compile () {
- for type in nand ram
- do
- install -m 0644 ${WORKDIR}/qt2410_${type}.h include/configs/qt2410.h
- oe_runmake ${UBOOT_MACHINE}
- oe_runmake all
- mv u-boot.bin u-boot_$type.bin
- done
-}
-
-do_deploy () {
- install -d ${DEPLOY_DIR_IMAGE}
- for type in nand ram
- do
- install ${S}/u-boot_$type.bin ${DEPLOY_DIR_IMAGE}/u-boot_$type-${MACHINE}-${DATETIME}.bin
- done
- install -m 0755 tools/mkimage ${STAGING_BINDIR}/uboot-mkimage
-}
-
-do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
diff --git a/packages/uclibc/uclibc-0.9.29/armeb/.mtn2git_empty b/packages/uclibc/uclibc-0.9.29/armeb/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/armeb/.mtn2git_empty
diff --git a/packages/uclibc/uclibc-0.9.29/armeb/uClibc.machine b/packages/uclibc/uclibc-0.9.29/armeb/uClibc.machine
new file mode 100644
index 0000000000..2d9f63e531
--- /dev/null
+++ b/packages/uclibc/uclibc-0.9.29/armeb/uClibc.machine
@@ -0,0 +1,70 @@
+#
+# Automatically generated make config: don't edit
+# Sat May 12 22:07:03 2007
+#
+# TARGET_alpha is not set
+TARGET_arm=y
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="arm"
+FORCE_OPTIONS_FOR_ARCH=y
+# CONFIG_ARM_OABI is not set
+CONFIG_ARM_EABI=y
+USE_BX=y
+# CONFIG_GENERIC_ARM is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM7TDMI is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM920T is not set
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM_SA110 is not set
+# CONFIG_ARM_SA1100 is not set
+CONFIG_ARM_XSCALE=y
+# CONFIG_ARM_IWMMXT is not set
+TARGET_SUBARCH=""
+
+#
+# Using ELF file format
+#
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_WANTS_BIG_ENDIAN=y
+# ARCH_WANTS_LITTLE_ENDIAN is not set
+ARCH_HAS_MMU=y
+ARCH_USE_MMU=y
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+KERNEL_HEADERS="/usr/include"
+HAVE_DOT_CONFIG=y
+
diff --git a/packages/uclibc/uclibc.inc b/packages/uclibc/uclibc.inc
index bae3f2d042..ca6613d315 100644
--- a/packages/uclibc/uclibc.inc
+++ b/packages/uclibc/uclibc.inc
@@ -128,7 +128,7 @@ do_configure() {
sed -i -e '/CONFIG_ARM_EABI/d' ${S}/.config
- if [ "${TARGET_OS}" == "linux-gnueabi" -o "${TARGET_OS}" == "linux-uclibcgnueabi" ]; then
+ if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
echo "CONFIG_ARM_EABI=y" >> ${S}/.config
else
echo "# CONFIG_ARM_EABI is not set" >> ${S}/.config
diff --git a/packages/util-linux/util-linux.inc b/packages/util-linux/util-linux.inc
index a5ff009669..2b527678c4 100644
--- a/packages/util-linux/util-linux.inc
+++ b/packages/util-linux/util-linux.inc
@@ -23,7 +23,7 @@ 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}"
+FILES_util-linux-mount = "/bin/mount.${PN} ${sysconfdir}/default/mountall"
FILES_util-linux-umount = "/bin/umount.${PN}"
FILES_util-linux-readprofile = "/usr/sbin/readprofile"
@@ -95,6 +95,8 @@ do_install () {
mv ${D}${base_bindir}/umount ${D}${base_bindir}/umount.${PN}
mv ${D}${base_bindir}/mount ${D}${base_bindir}/mount.${PN}
mv ${D}${base_sbindir}/fdisk ${D}${base_sbindir}/fdisk.${PN}
+ 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}"
diff --git a/packages/util-linux/util-linux_2.12r.bb b/packages/util-linux/util-linux_2.12r.bb
index 0409f61b74..9d4b59c855 100644
--- a/packages/util-linux/util-linux_2.12r.bb
+++ b/packages/util-linux/util-linux_2.12r.bb
@@ -4,4 +4,4 @@ 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 = "r11"
+PR = "r12"
diff --git a/packages/uucp/files/.mtn2git_empty b/packages/uucp/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uucp/files/.mtn2git_empty
diff --git a/packages/uucp/files/policy.patch b/packages/uucp/files/policy.patch
new file mode 100644
index 0000000000..26f1f172b8
--- /dev/null
+++ b/packages/uucp/files/policy.patch
@@ -0,0 +1,85 @@
+Index: uucp-1.07/policy.h
+===================================================================
+--- uucp-1.07.orig/policy.h 2003-05-29 06:08:45.000000000 +0000
++++ uucp-1.07/policy.h 2007-03-09 00:51:55.000000000 +0000
+@@ -240,7 +240,7 @@
+ the sendmail choice below. Otherwise, select one of the other
+ choices as appropriate. */
+ #if 1
+-#define MAIL_PROGRAM "/usr/lib/sendmail -t"
++#define MAIL_PROGRAM "/usr/sbin/sendmail -oi -t"
+ /* #define MAIL_PROGRAM "/usr/sbin/sendmail -t" */
+ #define MAIL_PROGRAM_TO_BODY 1
+ #define MAIL_PROGRAM_SUBJECT_BODY 1
+@@ -302,7 +302,7 @@
+ /* #define LOCKDIR "/usr/spool/locks" */
+ /* #define LOCKDIR "/usr/spool/uucp/LCK" */
+ /* #define LOCKDIR "/var/spool/lock" */
+-/* #define LOCKDIR "/var/lock" */
++#define LOCKDIR "/var/lock"
+
+ /* You must also specify the format of the lock files by setting
+ exactly one of the following macros to 1. Check an existing lock
+@@ -349,7 +349,7 @@
+ The format for QNX lock files was made up just for Taylor UUCP.
+ QNX doesn't come with a version of UUCP. */
+ #define HAVE_V2_LOCKFILES 0
+-#define HAVE_HDB_LOCKFILES 0
++#define HAVE_HDB_LOCKFILES 1
+ #define HAVE_SCO_LOCKFILES 0
+ #define HAVE_SVR4_LOCKFILES 0
+ #define HAVE_SEQUENT_LOCKFILES 0
+@@ -466,8 +466,8 @@
+ When looking something up (a system, a port, etc.) the new style
+ configuration files will be read first, followed by the V2
+ configuration files, followed by the HDB configuration files. */
+-#define HAVE_V2_CONFIG 0
+-#define HAVE_HDB_CONFIG 0
++#define HAVE_V2_CONFIG 1
++#define HAVE_HDB_CONFIG 1
+
+ /* Exactly one of the following macros must be set to 1. The exact
+ format of the spool directories is explained in unix/spool.c.
+@@ -572,7 +572,7 @@
+ /* The name of the default spool directory. If HAVE_TAYLOR_CONFIG is
+ set to 1, this may be overridden by the ``spool'' command in the
+ configuration file. */
+-#define SPOOLDIR "/usr/spool/uucp"
++#define SPOOLDIR "/var/spool/uucp"
+ /* #define SPOOLDIR "/var/spool/uucp" */
+
+ /* The name of the default public directory. If HAVE_TAYLOR_CONFIG is
+@@ -580,7 +580,7 @@
+ configuration file. Also, a particular system may be given a
+ specific public directory by using the ``pubdir'' command in the
+ system file. */
+-#define PUBDIR "/usr/spool/uucppublic"
++#define PUBDIR "/var/spool/uucppublic"
+ /* #define PUBDIR "/var/spool/uucppublic" */
+
+ /* The default command path. This is a space separated list of
+@@ -644,21 +644,21 @@
+ /* The default log file when using HAVE_TAYLOR_LOGGING. When using
+ HAVE_TAYLOR_CONFIG, this may be overridden by the ``logfile''
+ command in the configuration file. */
+-#define LOGFILE "/usr/spool/uucp/Log"
++#define LOGFILE "/var/spool/uucp/Log"
+ /* #define LOGFILE "/var/spool/uucp/Log" */
+ /* #define LOGFILE "/var/log/uucp/Log" */
+
+ /* The default statistics file when using HAVE_TAYLOR_LOGGING. When
+ using HAVE_TAYLOR_CONFIG, this may be overridden by the
+ ``statfile'' command in the configuration file. */
+-#define STATFILE "/usr/spool/uucp/Stats"
++#define STATFILE "/var/spool/uucp/Stats"
+ /* #define STATFILE "/var/spool/uucp/Stats" */
+ /* #define STATFILE "/var/log/uucp/Stats" */
+
+ /* The default debugging file when using HAVE_TAYLOR_LOGGING. When
+ using HAVE_TAYLOR_CONFIG, this may be overridden by the
+ ``debugfile'' command in the configuration file. */
+-#define DEBUGFILE "/usr/spool/uucp/Debug"
++#define DEBUGFILE "/var/spool/uucp/Debug"
+ /* #define DEBUGFILE "/var/spool/uucp/Debug" */
+ /* #define DEBUGFILE "/var/log/uucp/Debug" */
+
diff --git a/packages/uucp/uucp_1.07.bb b/packages/uucp/uucp_1.07.bb
index 7247ecbabe..ddc16d94f2 100644
--- a/packages/uucp/uucp_1.07.bb
+++ b/packages/uucp/uucp_1.07.bb
@@ -1,11 +1,13 @@
DESCRIPTION = "UUCP is used to transfer mail, news and random files between systems which are not connected by more modern networks. The communication can be made via modems, direct (hard-wired) serial connections or via an IP connection."
+HOMEPAGE = "http://www.airs.com/ian/uucp.html"
+SECTION = "console/utils"
LICENSE = "GPLv2"
-SECTION = "console"
-PR = "r1"
+PR = "r2"
inherit autotools
-SRC_URI = "http://ftp.debian.org/debian/pool/main/u/uucp/uucp_1.07.orig.tar.gz"
+SRC_URI = "ftp://ftp.gnu.org/pub/gnu/uucp/uucp-${PV}.tar.gz \
+ file://policy.patch;patch=1"
do_configure() {
libtoolize --force
@@ -13,8 +15,8 @@ do_configure() {
}
do_install_append() {
- fakeroot install -d -g uucp -o uucp ${D}/usr/spool/uucp
+ fakeroot install -d -g uucp -o uucp ${D}/var/spool/uucp
}
PACKAGES =+ "cu"
-FILES_cu = "${bindir}/cu /usr/spool"
+FILES_cu = "${bindir}/cu /var/spool"
diff --git a/packages/xfce/xfce4-panel.inc b/packages/xfce/xfce4-panel.inc
index e43807540e..dbd1baef60 100644
--- a/packages/xfce/xfce4-panel.inc
+++ b/packages/xfce/xfce4-panel.inc
@@ -22,3 +22,4 @@ do_install() {
PACKAGES += "${PN}-plugins ${PN}-mcs-plugins"
FILES_${PN}-plugins += "${libdir}/xfce4/panel-plugins/*.so*"
FILES_${PN}-mcs-plugins += "${libdir}/xfce4/mcs-plugins/"
+FILES_${PN}-dbg += "${libdir}/xfce4/mcs-plugins/.debug"
diff --git a/packages/xfce/xfce4-panel_4.4.1.bb b/packages/xfce/xfce4-panel_4.4.1.bb
index 18dce6fa3c..ae2abba28d 100644
--- a/packages/xfce/xfce4-panel_4.4.1.bb
+++ b/packages/xfce/xfce4-panel_4.4.1.bb
@@ -2,5 +2,5 @@
# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
# Released under the MIT license (see packages/COPYING)
-PR="r1"
+PR="r2"
require ${PN}.inc
diff --git a/packages/xfce/xfdesktop.inc b/packages/xfce/xfdesktop.inc
index e3e64ef355..50a4f488cc 100644
--- a/packages/xfce/xfdesktop.inc
+++ b/packages/xfce/xfdesktop.inc
@@ -12,3 +12,4 @@ PACKAGES += "xfdesktop-backdrops ${PN}-mcs-plugins"
FILES_xfdesktop-backdrops="${datadir}/xfce4/backdrops/*"
FILES_${PN}-mcs-plugins += "${libdir}/xfce4/mcs-plugins/*.so"
FILES_${PN} += "${libdir}/xfce4/panel-plugins/*.so"
+FILES_${PN}-dbg += "/usr/libexec/xfce4/panel-plugins/.debug"
diff --git a/packages/xfce/xfdesktop_4.4.1.bb b/packages/xfce/xfdesktop_4.4.1.bb
index d7af836791..9c84150180 100644
--- a/packages/xfce/xfdesktop_4.4.1.bb
+++ b/packages/xfce/xfdesktop_4.4.1.bb
@@ -2,5 +2,5 @@
# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
# Released under the MIT license (see packages/COPYING)
-PR = "r1"
+PR = "r2"
require ${PN}.inc
diff --git a/packages/xorg-lib/libx11/ruutf8.patch b/packages/xorg-lib/files/ruutf8.patch
index 0822b30cb8..0822b30cb8 100644
--- a/packages/xorg-lib/libx11/ruutf8.patch
+++ b/packages/xorg-lib/files/ruutf8.patch
diff --git a/packages/xserver-common/files/sl-cxx00-modmap.patch b/packages/xserver-common/files/sl-cxx00-modmap.patch
index 057f9880bf..18cc8e88c9 100644
--- a/packages/xserver-common/files/sl-cxx00-modmap.patch
+++ b/packages/xserver-common/files/sl-cxx00-modmap.patch
@@ -1,6 +1,8 @@
---- xserver-common-1.16/X11/slcXXXX.xmodmap.orig 2007-06-05 01:31:20.000000000 +0000
-+++ xserver-common-1.16/X11/slcXXXX.xmodmap 2007-06-05 01:31:29.000000000 +0000
-@@ -1,5 +1,106 @@
+Index: xserver-common-1.16/X11/slcXXXX.xmodmap
+===================================================================
+--- xserver-common-1.16.orig/X11/slcXXXX.xmodmap 2006-10-12 11:19:42.000000000 +0100
++++ xserver-common-1.16/X11/slcXXXX.xmodmap 2007-06-27 12:31:33.000000000 +0100
+@@ -1,5 +1,111 @@
-keycode 88 = XF86Calendar
-keycode 89 = telephone
-keycode 40 = XF86Start
@@ -35,7 +37,7 @@
+! These should be bound to Japanese keysims for use with Japanese
+! IME's at a later date.
+! =======================================================================
-
++
+! The Euro character is not printed as a label, but as
+! the 5 doesn't have a blue Fn label, this is a nice extra
+! as a normal European keyboard has it on the 5 as third level
@@ -111,3 +113,8 @@
+keycode 107 = F12 F18 F18
+! "Menu" label and icon:
+keycode 96 = F11 F12 F12
++
++! Shift the Mode_switch definition to a different mod so mozilla stuff works
++add mod5 = Mode_switch
++remove mod4 = Mode_switch
+
diff --git a/packages/xserver-common/xserver-common_1.16.bb b/packages/xserver-common/xserver-common_1.16.bb
index ca1c2f09cd..fcf1dcfd78 100644
--- a/packages/xserver-common/xserver-common_1.16.bb
+++ b/packages/xserver-common/xserver-common_1.16.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts and support files"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
-PR = "r6"
+PR = "r7"
PACKAGE_ARCH = "all"