summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/base.bbclass2
-rw-r--r--classes/e.bbclass40
-rw-r--r--classes/efl.bbclass40
-rw-r--r--classes/kernel.bbclass1
-rw-r--r--classes/qmake.bbclass2
-rw-r--r--classes/sanity.bbclass69
-rw-r--r--conf/bitbake.conf8
-rw-r--r--conf/distro/angstrom-2006.9.conf30
-rw-r--r--conf/distro/angstrom.conf10
-rw-r--r--conf/distro/debianslug.conf9
-rw-r--r--conf/distro/familiar-unstable.conf6
-rw-r--r--conf/distro/openslug.conf9
-rw-r--r--conf/distro/preferred-e-versions.inc42
-rw-r--r--conf/distro/slugos-packages.conf2
-rw-r--r--conf/distro/slugos.conf2
-rw-r--r--conf/distro/ucslugc.conf10
-rw-r--r--conf/distro/unslung.conf2
-rw-r--r--conf/documentation.conf1
-rw-r--r--conf/machine/borzoi.conf2
-rw-r--r--conf/machine/include/handheld-common.conf2
-rw-r--r--conf/machine/include/poodle-2.6.conf41
-rw-r--r--conf/machine/include/tosa-2.6.conf14
-rw-r--r--conf/machine/include/zaurus-clamshell-2.6.conf18
-rw-r--r--conf/machine/nokia770.conf6
-rw-r--r--conf/machine/spitz.conf2
-rw-r--r--conf/sanity.conf8
-rw-r--r--packages/altboot/altboot_0.0.0.bb73
-rw-r--r--packages/altboot/altboot_1.0.6-rc1.bb82
-rw-r--r--packages/altboot/files/akita/altboot-2.6.cfg1
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/40-bootNFS33
-rw-r--r--packages/altboot/files/altboot.func168
-rw-r--r--packages/altboot/files/collie/altboot-2.4.cfg4
-rw-r--r--packages/altboot/files/init.altboot27
-rw-r--r--packages/altboot/files/poodle/altboot-2.4.cfg2
-rw-r--r--packages/altboot/files/spitz/altboot-2.4.cfg36
-rw-r--r--packages/altboot/files/spitz/altboot-2.6.cfg (renamed from packages/altboot/files/borzoi/altboot-2.6.cfg)1
-rw-r--r--packages/altboot/files/spitz/altboot-menu/00-Default54
-rw-r--r--packages/altboot/files/spitz/altboot-menu/10-noGui47
-rw-r--r--packages/altboot/files/spitz/altboot-menu/15-bootSD64
-rw-r--r--packages/altboot/files/spitz/altboot-menu/20-bootCF49
-rw-r--r--packages/altboot/files/spitz/altboot-menu/25-bootHDD380
-rw-r--r--packages/altboot/files/spitz/altboot-menu/99-ownScripts-example81
-rw-r--r--packages/altboot/files/spitz/altboot-menu/Advanced/40-bootNFS97
-rw-r--r--packages/altboot/files/spitz/altboot-menu/Advanced/55-bin-sh23
-rw-r--r--packages/altboot/files/tosa/.mtn2git_empty (renamed from packages/altboot/files/borzoi/.mtn2git_empty)0
-rw-r--r--packages/altboot/files/tosa/altboot-2.4.cfg (renamed from packages/altboot/files/borzoi/altboot-2.4.cfg)5
-rw-r--r--packages/autoconf/autoconf-2.59/autoconf-x.patch36
-rw-r--r--packages/autoconf/autoconf_2.59.bb3
-rw-r--r--packages/base-files/base-files/borzoi/fstab2
-rw-r--r--packages/base-files/base-files/spitz/fstab2
-rw-r--r--packages/base-files/base-files_3.0.14.bb2
-rw-r--r--packages/bash/bash-3.0/bash-3.0-fixes.patch1604
-rw-r--r--packages/bash/bash_3.0.bb3
-rw-r--r--packages/binutils/binutils_2.16.91.0.6.bb5
-rw-r--r--packages/boost/boost_1.33.0.bb6
-rw-r--r--packages/cdparanoia/cdparanoia_9.8alpha.bb5
-rw-r--r--packages/cdparanoia/files/Makefile.patch19
-rw-r--r--packages/contacts/contacts_0.1.bb22
-rw-r--r--packages/contacts/contacts_svn.bb25
-rw-r--r--packages/cpusage/.mtn2git_empty (renamed from packages/altboot/files/spitz/altboot-menu/.mtn2git_empty)0
-rw-r--r--packages/cpusage/cpusage-0.1/.mtn2git_empty (renamed from packages/altboot/files/spitz/altboot-menu/Advanced/.mtn2git_empty)0
-rw-r--r--packages/cpusage/cpusage-0.1/cpusage.patch63
-rw-r--r--packages/cpusage/cpusage_0.1.bb24
-rw-r--r--packages/cpusage/cpusage_0.2.bb24
-rw-r--r--packages/dates/dates_svn.bb11
-rw-r--r--packages/display-brightness/display-brightness.sh9
-rw-r--r--packages/display-brightness/display-brightness_1.0.0.bb2
-rw-r--r--packages/dvbtools/dvbtraffic.bb2
-rw-r--r--packages/dvbtools/sctzap_cvs.bb2
-rw-r--r--packages/e17/e-iconbar_20060128.bb8
-rw-r--r--packages/e17/e-modules_20060128.bb6
-rw-r--r--packages/e17/e-utils_20060128.bb6
-rw-r--r--packages/e17/e-wm_0.16.999.025.bb (renamed from packages/e17/e-wm_0.16.999.023.bb)15
-rw-r--r--packages/e17/e-wm_20060128.bb8
-rw-r--r--packages/e17/e17genmenu_2.0.2.bb12
-rw-r--r--packages/e17/eclair_20060128.bb9
-rw-r--r--packages/e17/engage_20060128.bb13
-rw-r--r--packages/e17/entice_20060128.bb9
-rw-r--r--packages/e17/entrance_0.9.0.006.bb (renamed from packages/e17/entrance_0.9.0.005.bb)10
-rw-r--r--packages/e17/entrance_20060128.bb10
-rw-r--r--packages/e17/evidence_20060128.bb16
-rw-r--r--packages/e17/examine_20060128.bb13
-rw-r--r--packages/efl/e_0.16.999.025.bb (renamed from packages/efl/e_0.16.999.023.bb)2
-rw-r--r--packages/efl/e_20060128.bb2
-rw-r--r--packages/efl/ecore-fb_0.9.9.025.bb (renamed from packages/efl/ecore-fb_0.9.9.023.bb)1
-rw-r--r--packages/efl/ecore-fb_20060128.bb2
-rw-r--r--packages/efl/ecore-native_0.9.9.025.bb (renamed from packages/efl/ecore-native_0.9.9.023.bb)0
-rw-r--r--packages/efl/ecore-native_20060128.bb2
-rw-r--r--packages/efl/ecore-x11_0.9.9.025.bb (renamed from packages/efl/ecore-x11_0.9.9.023.bb)1
-rw-r--r--packages/efl/ecore-x11_20060128.bb2
-rw-r--r--packages/efl/edb-native_1.0.5.006.bb (renamed from packages/efl/edb-native_1.0.5.005.bb)0
-rw-r--r--packages/efl/edb-utils_1.0.5.006.bb (renamed from packages/efl/edb-utils_1.0.5.005.bb)2
-rw-r--r--packages/efl/edb_1.0.5.006.bb (renamed from packages/efl/edb_1.0.5.005.bb)0
-rw-r--r--packages/efl/edb_20060128.bb2
-rw-r--r--packages/efl/edje-native_0.5.0.025.bb (renamed from packages/efl/edje-native_0.5.0.023.bb)3
-rw-r--r--packages/efl/edje-utils_0.5.0.025.bb (renamed from packages/efl/edje-utils_0.5.0.023.bb)4
-rw-r--r--packages/efl/edje_0.5.0.025.bb (renamed from packages/efl/edje_0.5.0.023.bb)2
-rw-r--r--packages/efl/edje_20060128.bb2
-rw-r--r--packages/efl/eet-native_0.9.10.025.bb (renamed from packages/efl/eet-native_0.9.10.023.bb)0
-rw-r--r--packages/efl/eet_0.9.10.025.bb (renamed from packages/efl/eet_0.9.10.023.bb)0
-rw-r--r--packages/efl/eet_20060128.bb2
-rw-r--r--packages/efl/embryo-native_0.9.1.025.bb (renamed from packages/efl/embryo-native_0.9.1.023.bb)0
-rw-r--r--packages/efl/embryo-utils_0.9.1.025.bb (renamed from packages/efl/embryo-utils_0.9.1.023.bb)2
-rw-r--r--packages/efl/embryo_0.9.1.025.bb (renamed from packages/efl/embryo_0.9.1.023.bb)0
-rw-r--r--packages/efl/embryo_20060128.bb2
-rw-r--r--packages/efl/emotion_20060128.bb2
-rw-r--r--packages/efl/engrave_20060128.bb2
-rw-r--r--packages/efl/epeg_0.9.0.006.bb (renamed from packages/efl/epeg_0.9.0.005.bb)0
-rw-r--r--packages/efl/epeg_20060128.bb2
-rw-r--r--packages/efl/epsilon_0.3.0.006.bb (renamed from packages/efl/epsilon_0.3.0.005.bb)2
-rw-r--r--packages/efl/esmart-fb_0.9.0.006.bb (renamed from packages/efl/esmart-fb_0.9.0.005.bb)0
-rw-r--r--packages/efl/esmart-fb_20060128.bb2
-rw-r--r--packages/efl/esmart-x11_0.9.0.006.bb (renamed from packages/efl/esmart-x11_0.9.0.005.bb)0
-rw-r--r--packages/efl/esmart-x11_20060128.bb2
-rw-r--r--packages/efl/etox_20060128.bb2
-rw-r--r--packages/efl/evas-fb_0.9.9.023.bb48
-rw-r--r--packages/efl/evas-fb_0.9.9.025.bb48
-rw-r--r--packages/efl/evas-fb_20060113.bb2
-rw-r--r--packages/efl/evas-native_0.9.9.025.bb (renamed from packages/efl/evas-native_0.9.9.023.bb)5
-rw-r--r--packages/efl/evas-x11_0.9.9.025.bb (renamed from packages/efl/evas-x11_0.9.9.023.bb)8
-rw-r--r--packages/efl/evas-x11_20060113.bb2
-rw-r--r--packages/efl/evas.inc3
-rw-r--r--packages/efl/ewl_0.0.4.006.bb (renamed from packages/efl/ewl_0.0.4.005.bb)0
-rw-r--r--packages/efl/imlib2-fb_1.2.1.011.bb (renamed from packages/efl/imlib2-fb_1.2.1.010.bb)0
-rw-r--r--packages/efl/imlib2-fb_20060128.bb2
-rw-r--r--packages/efl/imlib2-native_1.2.1.011.bb (renamed from packages/efl/imlib2-native_1.2.1.010.bb)0
-rw-r--r--packages/efl/imlib2-native_20060128.bb2
-rw-r--r--packages/efl/imlib2-x11_1.2.1.011.bb (renamed from packages/efl/imlib2-x11_1.2.1.010.bb)0
-rw-r--r--packages/efl/imlib2-x11_20060128.bb2
-rw-r--r--packages/evince/evince_0.3.2.bb15
-rw-r--r--packages/evince/evince_0.5.1.bb14
-rw-r--r--packages/evince/evince_0.5.2.bb (renamed from packages/evince/evince_0.5.0.bb)0
-rw-r--r--packages/farsight/.mtn2git_empty (renamed from packages/gnumeric/gnumeric-1.3.1.cvs/.mtn2git_empty)0
-rw-r--r--packages/farsight/farsight_20060322.bb33
-rw-r--r--packages/farsight/gst-plugins-farsight_20060322.bb30
-rw-r--r--packages/galago/eds-feed/.mtn2git_empty (renamed from packages/gnumeric/gnumeric-1.3.1/.mtn2git_empty)0
-rw-r--r--packages/galago/eds-feed/disable-bonobo.patch62
-rw-r--r--packages/galago/eds-feed_0.3.2.bb14
-rw-r--r--packages/gammu/gammu_1.05.00.bb (renamed from packages/gammu/gammu_1.04.0.bb)4
-rw-r--r--packages/gcalctool/gcalctool/makefile-fix.diff18
-rw-r--r--packages/gcalctool/gcalctool_5.7.32.bb13
-rw-r--r--packages/gimp/gimp_2.2.10.bb (renamed from packages/gimp/gimp_2.2.7.bb)5
-rw-r--r--packages/gimp/gimp_2.3.3.bb19
-rw-r--r--packages/glib-2.0/glib-2.0_2.10.1.bb49
-rw-r--r--packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch329
-rw-r--r--packages/glibc/glibc_2.4.bb3
-rw-r--r--packages/gnome/goffice_0.0.1.bb21
-rw-r--r--packages/gnome/goffice_0.0.3.bb21
-rw-r--r--packages/gnome/goffice_0.0.4.bb21
-rw-r--r--packages/gnome/goffice_0.1.0.bb21
-rw-r--r--packages/gnome/goffice_0.1.2.bb21
-rw-r--r--packages/gnome/goffice_0.2.0.bb21
-rw-r--r--packages/gnome/goffice_0.2.1.bb (renamed from packages/gnome/goffice_0.0.2.bb)0
-rw-r--r--packages/gnome/libgnomecanvas_2.6.1.1.bb2
-rw-r--r--packages/gnome/libsoup_2.2.7.bb18
-rw-r--r--packages/gnome/orbit2-native_2.14.0.bb22
-rw-r--r--packages/gnome/orbit2/.mtn2git_empty (renamed from packages/gnumeric/gnumeric-1.5.3/.mtn2git_empty)0
-rw-r--r--packages/gnome/orbit2/configure-lossage.patch35
-rw-r--r--packages/gnome/orbit2_2.14.0.bb46
-rw-r--r--packages/gnumeric/gnumeric-1.3.1.cvs/Makefile.am.patch11
-rw-r--r--packages/gnumeric/gnumeric-1.3.1.cvs/gnumeric-doc.make.patch11
-rw-r--r--packages/gnumeric/gnumeric-1.3.1/workbook-control-gui-priv.h.patch11
-rw-r--r--packages/gnumeric/gnumeric-1.5.3/remove-docs.patch8
-rw-r--r--packages/gnumeric/gnumeric-1.5.5/remove-docs.patch8
-rw-r--r--packages/gnumeric/gnumeric_1.3.1.bb20
-rw-r--r--packages/gnumeric/gnumeric_1.3.1.cvs.bb30
-rw-r--r--packages/gnumeric/gnumeric_1.5.3.bb20
-rw-r--r--packages/gnumeric/gnumeric_1.5.5.bb20
-rw-r--r--packages/gnumeric/gnumeric_1.5.90.bb20
-rw-r--r--packages/gnumeric/gnumeric_1.6.1.bb20
-rw-r--r--packages/gnumeric/gnumeric_1.6.2.bb20
-rw-r--r--packages/gnumeric/gnumeric_1.6.3.bb (renamed from packages/gnumeric/gnumeric_1.6.0.bb)2
-rw-r--r--packages/gnupg/gnupg-1.4.2.2/.mtn2git_empty (renamed from packages/gnumeric/gnumeric-1.5.5/.mtn2git_empty)0
-rw-r--r--packages/gnupg/gnupg-1.4.2.2/15_free_caps.patch93
-rw-r--r--packages/gnupg/gnupg-1.4.2.2/16_min_privileges.patch68
-rw-r--r--packages/gnupg/gnupg-1.4.2.2/22_zero_length_mpi_fix.patch37
-rw-r--r--packages/gnupg/gnupg.inc1
-rw-r--r--packages/gnupg/gnupg2.inc1
-rw-r--r--packages/gnupg/gnupg2_1.9.15.bb2
-rw-r--r--packages/gnupg/gnupg_1.2.3.bb3
-rw-r--r--packages/gnupg/gnupg_1.2.4.bb3
-rw-r--r--packages/gnupg/gnupg_1.4.2.2.bb (renamed from packages/gnupg/gnupg_1.4.0.bb)6
-rw-r--r--packages/gomunicator/gomunicator_cvs.bb9
-rw-r--r--packages/gpdf/files/gpdf-2.10.0-gcc4-2.patch30
-rw-r--r--packages/gpdf/gpdf_2.10.0.bb2
-rw-r--r--packages/gpe-bootsplash/files/speed.patch2
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash-theme-e.bb15
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash-theme-opie.bb15
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash_1.15.bb2
-rw-r--r--packages/grub/grub_0.93.bb10
-rw-r--r--packages/gstreamer/gst-plugins-bad_0.10.1.bb1
-rw-r--r--packages/gstreamer/gst-plugins-good_0.10.2.bb1
-rw-r--r--packages/gstreamer/gst-plugins-ugly_0.10.2.bb1
-rw-r--r--packages/gstreamer/gst-plugins.inc2
-rw-r--r--packages/gthumb/.mtn2git_empty (renamed from packages/hostap/hostap-daemon-0.3.7/.mtn2git_empty)0
-rw-r--r--packages/gthumb/gthumb_2.6.9.bb13
-rw-r--r--packages/gtk+/gtk+-2.8.16/.mtn2git_empty (renamed from packages/hostap/hostap-daemon-0.3.7/mtx-1/.mtn2git_empty)0
-rw-r--r--packages/gtk+/gtk+-2.8.16/automake-lossage.patch24
-rw-r--r--packages/gtk+/gtk+-2.8.16/disable-tooltips.patch11
-rw-r--r--packages/gtk+/gtk+-2.8.16/gtk+-handhelds.patch264
-rw-r--r--packages/gtk+/gtk+-2.8.16/gtklabel-resize-patch10
-rw-r--r--packages/gtk+/gtk+-2.8.16/gtktreeview-316689.patch25
-rw-r--r--packages/gtk+/gtk+-2.8.16/hardcoded_libtool.patch29
-rw-r--r--packages/gtk+/gtk+-2.8.16/menu-deactivate.patch50
-rw-r--r--packages/gtk+/gtk+-2.8.16/no-demos.patch10
-rw-r--r--packages/gtk+/gtk+-2.8.16/no-xwc.patch179
-rw-r--r--packages/gtk+/gtk+-2.8.16/scroll-timings.patch15
-rw-r--r--packages/gtk+/gtk+-2.8.16/single-click.patch36
-rw-r--r--packages/gtk+/gtk+-2.8.16/small-gtkfilesel.patch267
-rw-r--r--packages/gtk+/gtk+-2.8.16/spinbutton.patch128
-rw-r--r--packages/gtk+/gtk+-2.8.16/xsettings.patch16
-rw-r--r--packages/gtk+/gtk+_2.8.16.bb88
-rw-r--r--packages/gtkhtml2/.mtn2git_empty (renamed from packages/hostap/hostap-daemon-0.4.4/.mtn2git_empty)0
-rw-r--r--packages/gtkhtml2/gtkhtml2_cvs.bb27
-rw-r--r--packages/hostap/hostap-daemon-0.4.4/defconfig66
-rw-r--r--packages/hostap/hostap-daemon-0.4.4/init39
-rw-r--r--packages/hostap/hostap-daemon-0.4.4/madwifi-bsd-fix.diff12
-rw-r--r--packages/hostap/hostap-daemon-0.4.4/makefile-cross.diff26
-rw-r--r--packages/hostap/hostap-daemon-0.4.4/mtx-1/defconfig66
-rw-r--r--packages/hostap/hostap-daemon.inc32
-rw-r--r--packages/hostap/hostap-daemon/.mtn2git_empty (renamed from packages/hostap/hostap-daemon-0.4.4/mtx-1/.mtn2git_empty)0
-rw-r--r--packages/hostap/hostap-daemon/defconfig (renamed from packages/hostap/hostap-daemon-0.3.7/defconfig)0
-rw-r--r--[-rwxr-xr-x]packages/hostap/hostap-daemon/init (renamed from packages/hostap/hostap-daemon-0.3.7/init)0
-rw-r--r--packages/hostap/hostap-daemon/madwifi-bsd-fix.diff (renamed from packages/hostap/hostap-daemon-0.3.7/madwifi-bsd-fix.diff)0
-rw-r--r--packages/hostap/hostap-daemon/makefile-cross.diff (renamed from packages/hostap/hostap-daemon-0.3.7/makefile-cross.diff)0
-rw-r--r--packages/hostap/hostap-daemon/mtx-1/.mtn2git_empty (renamed from packages/libetpan/libetpan-0.36/.mtn2git_empty)0
-rw-r--r--packages/hostap/hostap-daemon/mtx-1/defconfig (renamed from packages/hostap/hostap-daemon-0.3.7/mtx-1/defconfig)0
-rw-r--r--packages/hostap/hostap-daemon_0.3.7.bb33
-rw-r--r--packages/hostap/hostap-daemon_0.4.4.bb33
-rw-r--r--packages/hostap/hostap-daemon_0.4.8.bb3
-rw-r--r--packages/hostap/hostap-daemon_0.5.1.bb3
-rw-r--r--packages/hostap/hostap-modules.inc2
-rw-r--r--packages/hostap/hostap-modules_0.3.10.bb3
-rw-r--r--packages/hostap/hostap-modules_0.3.7.bb3
-rw-r--r--packages/hostap/hostap-modules_0.3.9.bb3
-rw-r--r--packages/hostap/hostap-modules_0.4.4.bb3
-rw-r--r--packages/hostap/hostap-modules_0.4.7.bb2
-rw-r--r--packages/hostap/hostap-utils.inc24
-rw-r--r--packages/hostap/hostap-utils_0.3.7.bb25
-rw-r--r--packages/hostap/hostap-utils_0.4.0.bb26
-rw-r--r--packages/hostap/hostap-utils_0.4.7.bb3
-rw-r--r--packages/initscripts/initscripts-1.0/tosa/keymap-2.4.map20
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/iperf/iperf_2.0.2.bb27
-rw-r--r--packages/ipkg-utils/ipkg-link/.mtn2git_empty (renamed from packages/libetpan/libetpan-0.38/.mtn2git_empty)0
-rw-r--r--packages/ipkg-utils/ipkg-link/link-vfat-libs.patch34
-rw-r--r--packages/ipkg-utils/ipkg-link_1.6+cvs20050404.bb5
-rw-r--r--packages/ipkg/ipkg-native_0.99.159.bb2
-rw-r--r--packages/iqnotes/iqnotes.inc31
-rw-r--r--packages/iqnotes/iqnotes_2.0.2.bb35
-rw-r--r--packages/iqnotes/iqnotes_2.0.99-2.1.0rc1.bb28
-rw-r--r--packages/js/.mtn2git_empty (renamed from packages/mozilla/firefox-1.0.6/.mtn2git_empty)0
-rw-r--r--packages/js/files/.mtn2git_empty (renamed from packages/mozilla/firefox-1.5/.mtn2git_empty)0
-rw-r--r--packages/js/files/host-cc.patch16
-rw-r--r--packages/js/files/jsautocfg.h (renamed from packages/mozilla/firefox-1.5/jsautocfg.h)20
-rw-r--r--packages/js/js_1.5.bb37
-rw-r--r--packages/keylaunch/files/akita/keylaunchrc14
-rw-r--r--packages/keylaunch/files/borzoi/keylaunchrc14
-rw-r--r--packages/keylaunch/files/spitz/keylaunchrc14
-rw-r--r--packages/keylaunch/keylaunch_2.0.10.bb5
-rw-r--r--packages/keymap-locales/files/akita/keymap-extension-2.6-fi.map7
-rw-r--r--packages/keymap-locales/files/borzoi/keymap-extension-2.6-fi.map7
-rw-r--r--packages/keymap-locales/files/c7x0/keymap-extension-2.6-fi.map7
-rw-r--r--packages/keymap-locales/files/collie/keymap-extension-2.4-fi.map7
-rw-r--r--packages/keymap-locales/files/spitz/keymap-extension-2.6-fi.map7
-rw-r--r--packages/keymap-locales/keymap-locales.bb11
-rw-r--r--packages/kf/.mtn2git_empty (renamed from packages/mozilla/thunderbird-0.7.3/.mtn2git_empty)0
-rw-r--r--packages/kf/files/.mtn2git_empty (renamed from packages/mozilla/thunderbird-1.0.6/.mtn2git_empty)0
-rw-r--r--packages/kf/files/fix-configure.patch25
-rw-r--r--packages/kf/files/fix-desktop-file.patch22
-rwxr-xr-xpackages/kf/kf_0.5.4.1.bb14
-rw-r--r--packages/konqueror/files/.mtn2git_empty (renamed from packages/obexftp/obexftp-0.10.3/.mtn2git_empty)0
-rw-r--r--packages/konqueror/files/inject-extraflags.patch16
-rw-r--r--packages/konqueror/konqueror-embedded-20030705/gcc4.patch15
-rw-r--r--packages/konqueror/konqueror-embedded-20030705/packing.patch14
-rw-r--r--packages/konqueror/konqueror-embedded_20030705.bb23
-rw-r--r--packages/konqueror/konqueror-embedded_20050322.bb5
-rw-r--r--packages/konqueror/konqueror-embedded_svn.bb79
-rw-r--r--packages/leafpad/.mtn2git_empty (renamed from packages/openobex-apps/.mtn2git_empty)0
-rw-r--r--packages/leafpad/files/.mtn2git_empty (renamed from packages/openobex-apps/openobex-apps-1.0.0/.mtn2git_empty)0
-rw-r--r--packages/leafpad/files/leafpad.desktop11
-rw-r--r--packages/leafpad/files/leafpad.pngbin0 -> 1950 bytes
-rw-r--r--packages/leafpad/leafpad_0.8.4.bb21
-rw-r--r--packages/libcap/.mtn2git_empty (renamed from packages/openobex/openobex-1.0.1/.mtn2git_empty)0
-rw-r--r--packages/libcap/libcap-1.10/.mtn2git_empty (renamed from packages/openssl/openssl-0.9.7b/.mtn2git_empty)0
-rw-r--r--packages/libcap/libcap-1.10/make.patch20
-rw-r--r--packages/libcap/libcap-1.10/makenames.patch13
-rw-r--r--packages/libcap/libcap_1.10.bb26
-rw-r--r--packages/libetpan/files/.mtn2git_empty (renamed from packages/openssl/openssl-0.9.7d/.mtn2git_empty)0
-rw-r--r--packages/libetpan/files/etpan_suffix.patch (renamed from packages/libetpan/libetpan-0.38/etpan_suffix.patch)0
-rw-r--r--packages/libetpan/libetpan-0.36/etpan_configure.patch55
-rw-r--r--packages/libetpan/libetpan-0.36/gnutls.patch214
-rw-r--r--packages/libetpan/libetpan-0.36/reentrant.patch63
-rw-r--r--packages/libetpan/libetpan_0.36.bb24
-rw-r--r--packages/libetpan/libetpan_0.43.bb21
-rw-r--r--packages/libmodplug/libmodplug_0.7.bb11
-rw-r--r--packages/libschedule/libschedule_0.13.bb25
-rw-r--r--packages/libschedule/libschedule_0.16.bb15
-rw-r--r--packages/libxine/files/libxine-gcc4.patch (renamed from packages/libxine/libxine-x11-1.0/libxine-gcc4.patch)0
-rw-r--r--packages/libxine/libxine-fb_1.0.bb7
-rw-r--r--packages/libxine/libxine-x11_1.0.bb2
-rw-r--r--packages/libxml/libxml2_2.6.10.bb2
-rw-r--r--packages/libxml/libxml2_2.6.22.bb3
-rw-r--r--packages/libxml/libxml2_2.6.7.bb2
-rw-r--r--packages/libxml/libxml2_2.6.9.bb2
-rw-r--r--packages/libxsettings-client/libxsettings-client_0.14.bb5
-rw-r--r--packages/libxsettings-client/libxsettings-client_0.16.bb4
-rw-r--r--packages/libxslt/libxslt_1.1.7.bb2
-rw-r--r--packages/libxslt/libxslt_1.1.8.bb2
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.15.99/.mtn2git_empty (renamed from packages/python/python-2.4.2/.mtn2git_empty)0
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.15.99/asm-arch-irqs.patch19
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-netfilter_ipv4.patch31
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-rtc.patch11
-rw-r--r--packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-videodev2.patch45
-rw-r--r--packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb7
-rw-r--r--packages/linux/ep93xx-kernel/defconfig110
-rw-r--r--packages/linux/ep93xx-kernel_2.6.16.bb (renamed from packages/linux/ep93xx-kernel_2.6.15+2.6.16-rc5.bb)13
-rw-r--r--packages/linux/handhelds-pxa-2.6_cvs.bb2
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/10-ixp4xx-fix-irq.patch25
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/15-jffs2-endian-config.patch1
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/83-nas100d-memory-fixup.patch66
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/84-nas100d-cmdline.patch31
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/92-nas100d-maclist.patch3
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/92-nslu2-maclist.patch31
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/951-ixp4xx-leds-cpu-activity.patch5
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101.patch457
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/copypage-xscale.patch21
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/defconfig84
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch891
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc6-ide118684
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.16.bb (renamed from packages/linux/ixp4xx-kernel_2.6.16-rc4-git9.bb)16
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/.mtn2git_empty (renamed from packages/qt/qt-x11-free-4.0.1/.mtn2git_empty)0
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/add-oz-release-string.patch24
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/connectplus-remove-ide-HACK.patch12
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-c7x01591
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-collie1008
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-cxx001557
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-ipaq-pxa2701018
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-poodle1559
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-qemuarm935
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/defconfig-tosa1590
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/pxa-serial-hack.patch73
-rw-r--r--packages/linux/linux-openzaurus-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch155
-rw-r--r--packages/linux/linux-openzaurus.inc6
-rw-r--r--packages/linux/linux-openzaurus_2.6.16.bb120
-rw-r--r--packages/lyx/lyx_1.4.0.bb (renamed from packages/lyx/lyx_1.3.6.bb)24
-rw-r--r--packages/lzma/lzma-native_4.17.bb4
-rw-r--r--packages/matchbox-applet-tasks/.mtn2git_empty (renamed from packages/uicmoc/uicmoc4-native-4.0.1/.mtn2git_empty)0
-rw-r--r--packages/matchbox-applet-tasks/mb-applet-tasks_1.0.0.bb32
-rw-r--r--packages/matchbox-panel/matchbox-panel-0.9.3/.mtn2git_empty (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/.mtn2git_empty)0
-rw-r--r--packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-battery-repaint-093.patch32
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.9.3.bb5
-rw-r--r--packages/matchbox-wm/matchbox-wm/akita/.mtn2git_empty (renamed from packages/zd1211/zd1211-20050822/.mtn2git_empty)0
-rw-r--r--packages/matchbox-wm/matchbox-wm/akita/kbdconfig51
-rw-r--r--packages/matchbox-wm/matchbox-wm/borzoi/.mtn2git_empty (renamed from packages/zd1211/zd1211-r52/.mtn2git_empty)0
-rw-r--r--packages/matchbox-wm/matchbox-wm/borzoi/kbdconfig51
-rw-r--r--packages/matchbox-wm/matchbox-wm/spitz/.mtn2git_empty0
-rw-r--r--packages/matchbox-wm/matchbox-wm/spitz/kbdconfig51
-rw-r--r--packages/matchbox-wm/matchbox-wm_svn.bb2
-rw-r--r--packages/meta/e-image-core.bb7
-rw-r--r--packages/meta/slugos-native.bb5
-rw-r--r--packages/meta/task-gpe.bb5
-rw-r--r--packages/meta/task-python-everything_1.0.0.bb3
-rw-r--r--packages/meta/task-python-sharprom_1.0.0.bb4
-rw-r--r--packages/mozilla/files/firefox-1.0-gcc4-compile.patch119
-rw-r--r--packages/mozilla/firefox-1.0.6/firefox-cc-fix.patch21
-rw-r--r--packages/mozilla/firefox-1.5.0.1/.mtn2git_empty0
-rw-r--r--packages/mozilla/firefox-1.5.0.1/jsautocfg.h (renamed from packages/mozilla/firefox-1.0.6/jsautocfg.h)0
-rw-r--r--packages/mozilla/firefox-1.5.0.1/mozconfig (renamed from packages/mozilla/firefox-1.0.6/mozconfig)0
-rw-r--r--packages/mozilla/firefox-1.5/mozconfig53
-rw-r--r--packages/mozilla/firefox_1.0.6.bb18
-rw-r--r--packages/mozilla/firefox_1.0.7.bb3
-rw-r--r--packages/mozilla/firefox_1.5.0.1.bb (renamed from packages/mozilla/firefox_1.5.bb)0
-rw-r--r--packages/mozilla/thunderbird-1.0.6/extensions-hack.patch10
-rw-r--r--packages/mozilla/thunderbird-1.0.6/mozconfig49
-rw-r--r--packages/mozilla/thunderbird-1.0.7/.mtn2git_empty0
-rw-r--r--packages/mozilla/thunderbird-1.0.7/extensions-hack.patch (renamed from packages/mozilla/thunderbird-0.7.3/extensions-hack.patch)0
-rw-r--r--packages/mozilla/thunderbird-1.0.7/mozconfig (renamed from packages/mozilla/thunderbird-0.7.3/mozconfig)0
-rw-r--r--packages/mozilla/thunderbird_0.7.3.bb63
-rw-r--r--packages/mozilla/thunderbird_1.0.6.bb63
-rw-r--r--packages/mozilla/thunderbird_1.0.7.bb1
-rw-r--r--packages/mplayer/files/.mtn2git_empty0
-rw-r--r--packages/mplayer/files/mplayer-1.0_pre7-gcc4.patch187
-rw-r--r--packages/mplayer/mplayer-atty_1.1.5.bb8
-rw-r--r--packages/mplayer/mplayer-common.bb31
-rw-r--r--packages/mplayer/mplayer-common/.mtn2git_empty0
-rw-r--r--packages/mplayer/mplayer-common/mplayer.conf15
-rw-r--r--packages/mplayer/mplayer_1.0pre7.bb9
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/NOTES53
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs/README96
-rw-r--r--packages/obexftp/files/.mtn2git_empty0
-rw-r--r--packages/obexftp/files/m4.patch (renamed from packages/obexftp/obexftp-0.10.3/m4.patch)0
-rw-r--r--packages/obexftp/obexftp_0.10.3.bb14
-rw-r--r--packages/obexftp/obexftp_0.19.bb18
-rw-r--r--packages/openobex-apps/openobex-apps-1.0.0/gcc34.patch260
-rw-r--r--packages/openobex-apps/openobex-apps-1.0.0/m4.patch64
-rw-r--r--packages/openobex-apps/openobex-apps_1.0.0.bb14
-rw-r--r--packages/openobex/files/.mtn2git_empty0
-rw-r--r--packages/openobex/files/disable-cable-test.patch16
-rw-r--r--packages/openobex/openobex-1.0.1/syms.patch44
-rw-r--r--packages/openobex/openobex_1.0.1.bb24
-rw-r--r--packages/openobex/openobex_1.2.bb31
-rw-r--r--packages/openssh/openssh_4.0p1.bb8
-rw-r--r--packages/openssl/openssl-0.9.7b/armeb.patch12
-rw-r--r--packages/openssl/openssl-0.9.7b/debian.patch682
-rw-r--r--packages/openssl/openssl-0.9.7d/debian.patch670
-rw-r--r--packages/openssl/openssl-0.9.7e/gnueabi-arm.patch15
-rw-r--r--packages/openssl/openssl-0.9.7g/.mtn2git_empty0
-rw-r--r--packages/openssl/openssl-0.9.7g/armeb.patch (renamed from packages/openssl/openssl-0.9.7d/armeb.patch)22
-rw-r--r--packages/openssl/openssl-0.9.7g/debian.patch2808
-rw-r--r--packages/openssl/openssl-0.9.7g/gnueabi-arm.patch15
-rw-r--r--packages/openssl/openssl_0.9.7b.bb6
-rw-r--r--packages/openssl/openssl_0.9.7d.bb6
-rw-r--r--packages/openssl/openssl_0.9.7e.bb5
-rw-r--r--packages/openssl/openssl_0.9.7g.bb9
-rw-r--r--packages/opensync/syncml-client_0.1.bb9
-rw-r--r--packages/opie-bluetoothmanager/opie-bluetoothmanager.inc3
-rw-r--r--packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb3
-rw-r--r--packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb2
-rw-r--r--packages/ortp/.mtn2git_empty0
-rw-r--r--packages/ortp/ortp_0.7.1.bb13
-rw-r--r--packages/otpkeygen/otpkeygen_1.3.0.bb2
-rw-r--r--packages/pango/pango_1.12.0.bb51
-rw-r--r--packages/pcmanfm/.mtn2git_empty0
-rw-r--r--packages/pcmanfm/files/.mtn2git_empty0
-rw-r--r--packages/pcmanfm/files/emblem-symbolic-link.pngbin0 -> 999 bytes
-rw-r--r--packages/pcmanfm/files/gnome-fs-directory.pngbin0 -> 2044 bytes
-rw-r--r--packages/pcmanfm/files/gnome-fs-regular.pngbin0 -> 3220 bytes
-rw-r--r--packages/pcmanfm/files/gnome-mime-text-plain.pngbin0 -> 2855 bytes
-rw-r--r--packages/pcmanfm/files/no-fam-gtk2.6.patch374
-rw-r--r--packages/pcmanfm/files/pcmanfm.desktop11
-rw-r--r--packages/pcmanfm/files/pcmanfm.pngbin0 -> 2281 bytes
-rw-r--r--packages/pcmanfm/pcmanfm_0.1.9.8.bb29
-rw-r--r--packages/poppler/poppler_0.3.0.bb11
-rw-r--r--packages/poppler/poppler_0.3.3.bb21
-rw-r--r--packages/poppler/poppler_0.4.2.bb21
-rw-r--r--packages/poppler/poppler_0.5.0.bb17
-rw-r--r--packages/poppler/poppler_0.5.1.bb (renamed from packages/poppler/poppler_0.4.3.bb)0
-rw-r--r--packages/pvrusb2-mci/pvrusb2-mci-20060326/.mtn2git_empty0
-rw-r--r--packages/pvrusb2-mci/pvrusb2-mci-20060326/Makefile.patch25
-rw-r--r--packages/pvrusb2-mci/pvrusb2-mci-20060329/.mtn2git_empty0
-rw-r--r--packages/pvrusb2-mci/pvrusb2-mci-20060329/Makefile.patch25
-rw-r--r--packages/pvrusb2-mci/pvrusb2-mci_20060326.bb31
-rw-r--r--packages/pvrusb2-mci/pvrusb2-mci_20060329.bb34
-rw-r--r--packages/python/python-2.4.3-manifest.inc (renamed from packages/python/python-2.4.2-manifest.inc)100
-rw-r--r--packages/python/python-2.4.3/.mtn2git_empty0
-rw-r--r--packages/python/python-2.4.3/autohell.patch (renamed from packages/python/python-2.4.2/autohell.patch)0
-rw-r--r--packages/python/python-2.4.3/bindir-libdir.patch (renamed from packages/python/python-2.4.2/bindir-libdir.patch)0
-rw-r--r--packages/python/python-2.4.3/crosscompile.patch (renamed from packages/python/python-2.4.2/crosscompile.patch)0
-rw-r--r--packages/python/python-2.4.3/fix-tkinter-detection.patch (renamed from packages/python/python-2.4.2/fix-tkinter-detection.patch)0
-rw-r--r--packages/python/python-egenix-mx-base_2.0.6.bb (renamed from packages/python/python-egenix-mx-base_2.0.5.bb)3
-rw-r--r--packages/python/python-itools_0.13.0.bb12
-rw-r--r--packages/python/python-psyco_1.5.bb15
-rw-r--r--packages/python/python_2.4.3.bb (renamed from packages/python/python_2.4.2.bb)2
-rw-r--r--packages/qemu/files/trunk_nodocs.patch40
-rw-r--r--packages/qemu/qemu-qop-nogfx-native_svn.bb18
-rw-r--r--packages/qmake/qmake-native_1.07a.bb21
-rw-r--r--packages/qmake/qmake-native_2.00a.bb20
-rw-r--r--packages/qpdf2/files/gcc4.patch31
-rw-r--r--packages/qpdf2/qpdf2_2.2.1.bb8
-rw-r--r--packages/qt/qt-x11-free-4.1.1/.mtn2git_empty0
-rw-r--r--packages/qt/qt-x11-free-4.1.1/cross-compile.patch (renamed from packages/qt/qt-x11-free-4.0.1/cross-compile.patch)0
-rw-r--r--packages/qt/qt-x11-free-4.1.1/fix-resinit-declaration.patch (renamed from packages/qt/qt-x11-free-4.0.1/fix-resinit-declaration.patch)0
-rw-r--r--packages/qt/qt-x11-free-4.1.1/no-tools.patch (renamed from packages/qt/qt-x11-free-4.0.1/no-tools.patch)0
-rw-r--r--packages/qt/qt-x11-free/gcc4_1-HACK.patch28
-rw-r--r--packages/qt/qt-x11-free_3.3.6.bb (renamed from packages/qt/qt-x11-free_3.3.5.bb)7
-rw-r--r--packages/qt/qt-x11-free_4.1.1.bb (renamed from packages/qt/qt-x11-free_4.0.1.bb)0
-rw-r--r--packages/qte/qte-2.3.10/fix-errno-exception-spec.patch16
-rw-r--r--packages/qte/qte-2.3.10/kernel-keymap.patch977
-rw-r--r--packages/qte/qte-common_2.3.10.inc168
-rw-r--r--packages/qte/qte-mt-static_2.3.10.bb23
-rw-r--r--packages/qte/qte-mt_2.3.10.bb11
-rw-r--r--packages/qte/qte_2.3.10.bb168
-rw-r--r--packages/qwt/qwt_4.2.0rc1.bb2
-rw-r--r--packages/rsync/rsync_2.6.6.bb11
-rw-r--r--packages/rsync/rsync_2.6.7.bb (renamed from packages/rsync/rsync_2.6.5.bb)2
-rw-r--r--packages/samba/samba_3.0.14a.bb2
-rw-r--r--packages/samba/samba_3.0.20.bb2
-rw-r--r--packages/scw/.mtn2git_empty0
-rw-r--r--packages/scw/scw_0.4.2.bb14
-rw-r--r--packages/slugos-init/files/turnup6
-rw-r--r--packages/slugos-init/slugos-init_0.10.bb2
-rw-r--r--packages/sofia-sip/.mtn2git_empty0
-rw-r--r--packages/sofia-sip/sofia-sip_1.11.7.bb14
-rw-r--r--packages/soundtracker/soundtracker-gtk2_0.6.7.bb5
-rw-r--r--packages/soundtracker/soundtracker_0.6.8.bb (renamed from packages/soundtracker/soundtracker_0.6.7.bb)8
-rw-r--r--packages/strace/strace-4.5.14/.mtn2git_empty0
-rw-r--r--packages/strace/strace-4.5.14/arm-eabi.patch65
-rw-r--r--packages/strace/strace_4.5.14.bb12
-rw-r--r--packages/sylpheed/sylpheed_0.9.99-gtk2-20041024.bb25
-rw-r--r--packages/sylpheed/sylpheed_1.0.0-gtk2-20041224.bb30
-rw-r--r--packages/sylpheed/sylpheed_1.9.12.bb31
-rw-r--r--packages/sylpheed/sylpheed_2.0.0beta6.bb32
-rw-r--r--packages/sylpheed/sylpheed_2.0.0rc.bb32
-rw-r--r--packages/sylpheed/sylpheed_2.2.2.bb32
-rw-r--r--packages/sylpheed/sylpheed_2.2.4.bb (renamed from packages/sylpheed/sylpheed_2.2.3.bb)2
-rw-r--r--packages/tapioca/.mtn2git_empty0
-rw-r--r--packages/tapioca/libjingle-tapioca_svn.bb18
-rw-r--r--packages/tapioca/tapioca-xmpp_0.3.0.bb14
-rw-r--r--packages/tapioca/tapioca_0.3.0.bb19
-rw-r--r--packages/tapioca/tapiocaui_0.3.0.bb12
-rw-r--r--packages/tslib/tslib/akita/tslib.sh2
-rw-r--r--packages/tslib/tslib/borzoi/tslib.sh2
-rw-r--r--packages/tslib/tslib/c7x0/tslib.sh2
-rw-r--r--packages/tslib/tslib/collie/tslib.sh16
-rw-r--r--packages/tslib/tslib/h1940/tslib.sh2
-rw-r--r--packages/tslib/tslib/h2200/tslib.sh2
-rw-r--r--packages/tslib/tslib/h3600/tslib.sh2
-rw-r--r--packages/tslib/tslib/h3900/tslib.sh2
-rw-r--r--packages/tslib/tslib/h6300/tslib.sh2
-rw-r--r--packages/tslib/tslib/ipaq-pxa270/tslib.sh2
-rw-r--r--packages/tslib/tslib/poodle/ts.conf5
-rw-r--r--packages/tslib/tslib/poodle/tslib.sh16
-rw-r--r--packages/tslib/tslib/simpad/tslib.sh2
-rw-r--r--packages/tslib/tslib/spitz/tslib.sh2
-rw-r--r--packages/tslib/tslib/tosa/ts.conf5
-rw-r--r--packages/tslib/tslib/tosa/tslib.sh2
-rw-r--r--packages/tslib/tslib/ts-2.6.conf (renamed from packages/tslib/tslib/ts.conf-corgi)0
-rw-r--r--packages/tslib/tslib/ts.conf-collie-2.4 (renamed from packages/tslib/tslib/collie/ts.conf)0
-rw-r--r--packages/tslib/tslib/ts.conf-h22005
-rw-r--r--packages/tslib/tslib/ts.conf-h36005
-rw-r--r--packages/tslib/tslib/ts.conf-h63005
-rw-r--r--packages/tslib/tslib/ts.conf-simpad5
-rw-r--r--packages/tslib/tslib_cvs.bb23
-rw-r--r--packages/ttf-fonts/ttf-dejavu_2.3.bb4
-rw-r--r--packages/ttf-fonts/ttf-gentium_1.02.bb2
-rw-r--r--packages/udev/files/local.rules17
-rw-r--r--packages/udev/files/udev.rules2
-rw-r--r--packages/udev/udev-084/local.rules28
-rw-r--r--packages/udev/udev-084/udev.rules2
-rw-r--r--packages/udev/udev_084.bb4
-rw-r--r--packages/uicmoc/uicmoc-native-2.3.10/64bit-cleanup.patch226
-rw-r--r--packages/uicmoc/uicmoc-native-2.3.10/gcc4_1.patch16
-rw-r--r--packages/uicmoc/uicmoc-native_2.3.10.bb7
-rw-r--r--packages/uicmoc/uicmoc3-native-3.3.5/64bit-cleanup.patch147
-rw-r--r--packages/uicmoc/uicmoc3-native_3.3.5.bb7
-rw-r--r--packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty0
-rw-r--r--packages/uicmoc/uicmoc4-native-4.1.1/fix-mkspecs.patch (renamed from packages/uicmoc/uicmoc4-native-4.0.1/fix-mkspecs.patch)0
-rw-r--r--packages/uicmoc/uicmoc4-native_4.1.1.bb (renamed from packages/uicmoc/uicmoc4-native_4.0.1.bb)6
-rw-r--r--packages/upnp/.mtn2git_empty0
-rw-r--r--packages/upnp/libupnp_1.3.1.bb16
-rw-r--r--packages/vnc/tightvnc/Makefile1
-rw-r--r--packages/web/.mtn2git_empty0
-rw-r--r--packages/web/web_svn.bb11
-rw-r--r--packages/wlan-ng/files/might-sleep.patch (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/might-sleep.patch)0
-rw-r--r--packages/wlan-ng/files/more-compat.patch (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/more-compat.patch)0
-rw-r--r--packages/wlan-ng/files/msleep-vs-mdelay.patch (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/msleep-vs-mdelay.patch)0
-rw-r--r--packages/wlan-ng/files/no-compat.patch (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/no-compat.patch)0
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.3/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.3/config.in (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/config.in)2
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.3/module_param_array.patch (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/module_param_array.patch)8
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.3/only-the-modules.patch (renamed from packages/wlan-ng/wlan-ng-modules-0.2.2/only-the-modules.patch)0
-rw-r--r--packages/wlan-ng/wlan-ng-modules-0.2.3/prism2sta_commsqual_defer.patch17
-rw-r--r--packages/wlan-ng/wlan-ng-modules.inc (renamed from packages/wlan-ng/wlan-ng-modules_0.2.2.bb)30
-rw-r--r--packages/wlan-ng/wlan-ng-modules/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-modules/config.in21
-rw-r--r--packages/wlan-ng/wlan-ng-modules/only-the-modules.patch31
-rw-r--r--packages/wlan-ng/wlan-ng-modules/pcmcia-driver.patch84
-rw-r--r--packages/wlan-ng/wlan-ng-modules/usb-owner.patch13
-rw-r--r--packages/wlan-ng/wlan-ng-modules_0.2.3.bb7
-rw-r--r--packages/wlan-ng/wlan-ng-modules_svn.bb7
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.3/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.3/config.in21
-rw-r--r--packages/wlan-ng/wlan-ng-utils-0.2.3/only-the-utils.patch30
-rw-r--r--packages/wlan-ng/wlan-ng-utils/.mtn2git_empty0
-rw-r--r--packages/wlan-ng/wlan-ng-utils/config.in21
-rw-r--r--packages/wlan-ng/wlan-ng-utils/only-the-utils.patch33
-rw-r--r--packages/wlan-ng/wlan-ng-utils/wlan.agent105
-rw-r--r--packages/wlan-ng/wlan-ng-utils_0.2.3.bb (renamed from packages/wlan-ng/wlan-ng-utils_0.2.2.bb)0
-rw-r--r--packages/wlan-ng/wlan-ng-utils_svn.bb69
-rw-r--r--packages/wxbase/.mtn2git_empty0
-rw-r--r--packages/wxbase/wxbase_2.6.2.bb54
-rw-r--r--packages/wxbase/wxbase_2.7+cvs.bb53
-rw-r--r--packages/xlibs/libx11-native_6.2.1.bb2
-rw-r--r--packages/xlibs/libx11-native_cvs.bb2
-rw-r--r--packages/xlibs/libxext-native_cvs.bb2
-rw-r--r--packages/zaurusd/files/.mtn2git_empty0
-rw-r--r--packages/zaurusd/files/mbinputmgr-honor-user-prefs.patch65
-rw-r--r--packages/zaurusd/zaurusd_svn.bb5
-rw-r--r--packages/zbedic/libbedic_0.9.6.bb4
-rw-r--r--packages/zbedic/zbedic_0.9.6.bb4
-rw-r--r--packages/zd1211/zd1211-20050822/access_ok.patch11
-rw-r--r--packages/zd1211/zd1211-20050822/iwconfig-rate.patch126
-rw-r--r--packages/zd1211/zd1211-20050822/makefile.patch11
-rw-r--r--packages/zd1211/zd1211-20050822/urb-async.patch82
-rw-r--r--packages/zd1211/zd1211-r52/firmware.patch327
-rw-r--r--packages/zd1211/zd1211-r52/makefile.patch57
-rw-r--r--packages/zd1211/zd1211-r52/transmitkey.index.fix.diff16
-rw-r--r--packages/zd1211/zd1211-r52/zd1205.c.diff10
-rw-r--r--packages/zd1211/zd1211-r52/zdhci.c.diff10
-rw-r--r--packages/zd1211/zd1211-r67/.mtn2git_empty0
-rw-r--r--packages/zd1211/zd1211-r67/makefile-unslung.patch48
-rw-r--r--packages/zd1211/zd1211-r67/makefile.patch47
-rw-r--r--packages/zd1211/zd1211_20050822.bb36
-rw-r--r--packages/zd1211/zd1211_r67.bb (renamed from packages/zd1211/zd1211_r52.bb)17
-rw-r--r--site/arm-linux4
596 files changed, 41802 insertions, 6610 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 21feaab6e6..340e5d91f8 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -196,7 +196,7 @@ oe_libinstall() {
# stop libtool using the final directory name for libraries
# in staging:
__runcmd rm -f $destpath/$libname.la
- __runcmd sed -e 's/^installed=yes$/installed=no/' $dotlai >$destpath/$libname.la
+ __runcmd sed -e 's/^installed=yes$/installed=no/' -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${STAGING_LIBDIR}/\1,' $dotlai >$destpath/$libname.la
else
__runcmd install -m 0644 $dotlai $destpath/$libname.la
fi
diff --git a/classes/e.bbclass b/classes/e.bbclass
new file mode 100644
index 0000000000..4485d1d847
--- /dev/null
+++ b/classes/e.bbclass
@@ -0,0 +1,40 @@
+MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
+HOMEPAGE = "http://www.enlightenment.org"
+SECTION = "e/apps"
+
+inherit autotools pkgconfig binconfig
+
+do_prepsources () {
+ make clean distclean || true
+}
+addtask prepsources after do_fetch before do_unpack
+
+def binconfig_suffix(d):
+ import bb
+ return ["","-native"][bb.data.inherits_class('native', d)]
+
+export CURL_CONFIG = "${STAGING_BINDIR}/curl-config${@binconfig_suffix(d)}"
+export EDB_CONFIG = "${STAGING_BINDIR}/edb-config${@binconfig_suffix(d)}"
+export EET_CONFIG = "${STAGING_BINDIR}/eet-config${@binconfig_suffix(d)}"
+export EVAS_CONFIG = "${STAGING_BINDIR}/evas-config${@binconfig_suffix(d)}"
+export ECORE_CONFIG = "${STAGING_BINDIR}/ecore-config${@binconfig_suffix(d)}"
+export EMBRYO_CONFIG = "${STAGING_BINDIR}/embryo-config${@binconfig_suffix(d)}"
+export ENGRAVE_CONFIG = "${STAGING_BINDIR}/engrave-config${@binconfig_suffix(d)}"
+export ENLIGHTENMENT_CONFIG = "${STAGING_BINDIR}/enlightenment-config${@binconfig_suffix(d)}"
+export EPSILON_CONFIG = "${STAGING_BINDIR}/epsilon-config${@binconfig_suffix(d)}"
+export EPEG_CONFIG = "${STAGING_BINDIR}/epeg-config${@binconfig_suffix(d)}"
+export ESMART_CONFIG = "${STAGING_BINDIR}/esmart-config${@binconfig_suffix(d)}"
+export FREETYPE_CONFIG = "${STAGING_BINDIR}/freetype-config${@binconfig_suffix(d)}"
+export IMLIB2_CONFIG = "${STAGING_BINDIR}/imlib2-config${@binconfig_suffix(d)}"
+
+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}:'
+}
+
+E_CVS = "cvs://anonymous@anoncvs.enlightenment.org:/var/cvs/e"
+E_URI = "http://enlightenment.freedesktop.org/files"
+
+PACKAGES = "${PN} ${PN}-themes"
+FILES_${PN} = "${libdir}/lib*.so*"
+FILES_${PN}-themes = "${datadir}/${PN}/themes ${datadir}/${PN}/data ${datadir}/${PN}/fonts ${datadir}/${PN}/pointers ${datadir}/${PN}/images ${datadir}/${PN}/users ${datadir}/${PN}/images ${datadir}/${PN}/styles"
diff --git a/classes/efl.bbclass b/classes/efl.bbclass
index e5968b9aec..9c490284c2 100644
--- a/classes/efl.bbclass
+++ b/classes/efl.bbclass
@@ -1,18 +1,11 @@
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
-HOMEPAGE = "http://www.enlightenment.org"
+inherit e
+
SECTION = "e/libs"
SRCNAME = "${@bb.data.getVar('PN', d, 1).replace('-native', '')}"
-SRC_URI = "http://enlightenment.freedesktop.org/files/${SRCNAME}-${PV}.tar.gz"
+SRC_URI = "${E_URI}/${SRCNAME}-${PV}.tar.gz"
S = "${WORKDIR}/${SRCNAME}-${PV}"
-inherit autotools pkgconfig binconfig
-
-do_prepsources () {
- make clean distclean || true
-}
-addtask prepsources after do_fetch before do_unpack
-
INHIBIT_AUTO_STAGE_INCLUDES = "1"
INHIBIT_NATIVE_STAGE_INSTALL = "1"
@@ -20,29 +13,6 @@ libdirectory = "src/lib"
libraries = "lib${SRCNAME}"
headers = "${@bb.data.getVar('SRCNAME',d,1).capitalize()}.h"
-def binconfig_suffix(d):
- import bb
- return ["","-native"][bb.data.inherits_class('native', d)]
-
-export CURL_CONFIG = "${STAGING_BINDIR}/curl-config${@binconfig_suffix(d)}"
-export EDB_CONFIG = "${STAGING_BINDIR}/edb-config${@binconfig_suffix(d)}"
-export EET_CONFIG = "${STAGING_BINDIR}/eet-config${@binconfig_suffix(d)}"
-export EVAS_CONFIG = "${STAGING_BINDIR}/evas-config${@binconfig_suffix(d)}"
-export ECORE_CONFIG = "${STAGING_BINDIR}/ecore-config${@binconfig_suffix(d)}"
-export EMBRYO_CONFIG = "${STAGING_BINDIR}/embryo-config${@binconfig_suffix(d)}"
-export ENGRAVE_CONFIG = "${STAGING_BINDIR}/engrave-config${@binconfig_suffix(d)}"
-export ENLIGHTENMENT_CONFIG = "${STAGING_BINDIR}/enlightenment-config${@binconfig_suffix(d)}"
-export EPSILON_CONFIG = "${STAGING_BINDIR}/epsilon-config${@binconfig_suffix(d)}"
-export EPEG_CONFIG = "${STAGING_BINDIR}/epeg-config${@binconfig_suffix(d)}"
-export ESMART_CONFIG = "${STAGING_BINDIR}/esmart-config${@binconfig_suffix(d)}"
-export FREETYPE_CONFIG = "${STAGING_BINDIR}/freetype-config${@binconfig_suffix(d)}"
-export IMLIB2_CONFIG = "${STAGING_BINDIR}/imlib2-config${@binconfig_suffix(d)}"
-
-do_compile_prepend() {
- find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
- find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
-}
-
do_stage_append () {
for i in ${libraries}
do
@@ -73,9 +43,7 @@ do_stage_append () {
fi
}
-PACKAGES = "${PN} ${PN}-themes ${PN}-dev ${PN}-examples "
-FILES_${PN} = "${libdir}/lib*.so*"
-FILES_${PN}-themes = "${datadir}/${PN}/themes ${datadir}/${PN}/data ${datadir}/${PN}/fonts ${datadir}/${PN}/pointers ${datadir}/${PN}/images ${datadir}/${PN}/users ${datadir}/${PN}/images ${datadir}/${PN}/styles"
+PACKAGES = "${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/classes/kernel.bbclass b/classes/kernel.bbclass
index 471acd4a61..c5f667747c 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -163,6 +163,7 @@ kernel_do_install() {
oe_runmake SUBDIRS="scripts/genksyms"
fi
+ install -d ${STAGING_KERNEL_DIR}
cp -fR scripts ${STAGING_KERNEL_DIR}/
}
diff --git a/classes/qmake.bbclass b/classes/qmake.bbclass
index 10aa8c9f7d..0d3f45c363 100644
--- a/classes/qmake.bbclass
+++ b/classes/qmake.bbclass
@@ -2,7 +2,7 @@ inherit qmake-base
qmake_do_configure() {
case ${QMAKESPEC} in
- *linux-oe-g++|*linux-uclibc-oe-g++)
+ *linux-oe-g++|*linux-uclibc-oe-g++|*linux-gnueabi-oe-g++)
;;
*-oe-g++)
die Unsupported target ${TARGET_OS} for oe-g++ qmake spec
diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass
new file mode 100644
index 0000000000..f82af18d74
--- /dev/null
+++ b/classes/sanity.bbclass
@@ -0,0 +1,69 @@
+#
+# Sanity check the users setup for common misconfigurations
+#
+
+BB_MIN_VERSION = "1.3.3"
+
+def raise_sanity_error(msg):
+ import bb
+ bb.fatal("Openembedded's config sanity checker detected a potential misconfiguration.\nEither fix cause of this error or at your own risk disable the checker (see sanity.conf).\n%s" % msg)
+
+def check_conf_exists(fn, data):
+ import bb, os
+
+ bbpath = []
+ fn = bb.data.expand(fn, data)
+ vbbpath = bb.data.getVar("BBPATH", data)
+ if vbbpath:
+ bbpath += vbbpath.split(":")
+ for p in bbpath:
+ currname = os.path.join(bb.data.expand(p, data), fn)
+ if os.access(currname, os.R_OK):
+ return True
+ return False
+
+addhandler check_sanity_eventhandler
+python check_sanity_eventhandler() {
+ from bb import note, error, data, __version__
+ from bb.event import Handled, NotHandled, getName
+ from distutils.version import LooseVersion
+ import os
+
+ sanity_checked = bb.data.getVar('SANITY_CHECKED', e.data)
+ if sanity_checked == "1":
+ return
+
+ # Check the bitbake version meets minimum requirements
+ minversion = bb.data.getVar('BB_MIN_VERSION', e.data , True)
+ if not minversion:
+ # Hack: BB_MIN_VERSION hasn't been parsed yet so return
+ # and wait for the next call
+ return
+
+ if (LooseVersion(bb.__version__) < LooseVersion(minversion)):
+ raise_sanity_error('Bitbake version %s is required and version %s was found' % (minversion, bb.__version__))
+
+ # Check TARGET_ARCH is set
+ if bb.data.getVar('TARGET_ARCH', e.data, True) == 'INVALID':
+ raise_sanity_error('Please set TARGET_ARCH directly, or choose a MACHINE or DISTRO that does so.')
+
+ # Check TARGET_OS is set
+ if bb.data.getVar('TARGET_OS', e.data, True) == 'INVALID':
+ raise_sanity_error('Please set TARGET_OS directly, or choose a MACHINE or DISTRO that does so.')
+
+ # Check user doesn't have ASSUME_PROVIDED = instead of += in local.conf
+ if "diffstat-native" not in bb.data.getVar('ASSUME_PROVIDED', e.data, True).split():
+ raise_sanity_error('Please use ASSUME_PROVIDED +=, not ASSUME_PROVIDED = in your local.conf')
+
+ # Check the MACHINE is valid
+ if not check_conf_exists("conf/machine/${MACHINE}.conf", e.data):
+ raise_sanity_error('Please set a valid MACHINE in your local.conf')
+
+ # Check the distro is valid
+ if not check_conf_exists("conf/distro/${DISTRO}.conf", e.data):
+ raise_sanity_error('Please set a valid DISTRO in your local.conf')
+
+ bb.data.setVar('SANITY_CHECKED', "1", e.data)
+ return
+}
+
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index a2ba5e6382..48a1daf64a 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -304,6 +304,7 @@ XORG_MIRROR = "http://xorg.freedesktop.org/releases"
GNOME_MIRROR = "http://ftp.gnome.org/pub/GNOME/sources"
FREEBSD_MIRROR = "ftp://ftp.freebsd.org/pub/FreeBSD/"
HANDHELDS_CVS = "cvs://anoncvs:anoncvs@anoncvs.handhelds.org/cvs"
+E_CVS = "cvs://anonymous@anoncvs.enlightenment.org:/var/cvs/e"
FREEDESKTOP_CVS = "cvs://anoncvs:anoncvs@anoncvs.freedesktop.org/cvs"
GENTOO_MIRROR = "http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles"
APACHE_MIRROR = "http://www.apache.org/dist"
@@ -394,3 +395,10 @@ include conf/target/${TARGET_SYS}.conf
include conf/machine/${MACHINE}.conf
include conf/distro/${DISTRO}.conf
include conf/documentation.conf
+require conf/sanity.conf
+
+##################################################################
+# Weak variables (usually to retain backwards compatibility)
+##################################################################
+
+PCMCIA_MANAGER ?= "pcmcia-cs"
diff --git a/conf/distro/angstrom-2006.9.conf b/conf/distro/angstrom-2006.9.conf
index 9c9f751bff..4159d99962 100644
--- a/conf/distro/angstrom-2006.9.conf
+++ b/conf/distro/angstrom-2006.9.conf
@@ -59,7 +59,37 @@ PREFERRED_VERSION_glibc ?= "2.4"
PREFERRED_VERSION_glibc-intermediate ?= "2.4"
+
+
PREFERRED_VERSION_orinoco-modules_h3600 = "0.13e"
PREFERRED_VERSION_orinoco-modules_h3900 = "0.13e"
PREFERRED_VERSION_dbus = "0.61"
+PREFERRED_VERSION_gstreamer = "0.10.4"
+PREFERRED_PROVIDER_hostap-conf = "hostap-conf"
+
+#Down here we put stuff we want to install into machines without polluting conf/machine/ with distro stuff
+
+#### Bootstrap options ####
+
+PCMCIA_MANAGER_c7x0 = "pcmciautils"
+PCMCIA_MANAGER_akita = "pcmciautils"
+PCMCIA_MANAGER_spitz = "pcmciautils"
+PCMCIA_MANAGER_borzoi = "pcmciautils"
+PCMCIA_MANAGER_nokia770 = "pcmciautils"
+PCMCIA_MANAGER_ipaq-pxa270 = "pcmciautils"
+
+#### GPE section ###
+
+#Install libgtkinput in devices without a keyboard
+GPE_EXTRA_INSTALL_append_ipaq-pxa270 = " libgtkinput"
+GPE_EXTRA_INSTALL_append_h2200 = " libgtkinput"
+GPE_EXTRA_INSTALL_append_simpad = " libgtkinput"
+GPE_EXTRA_INSTALL_append_nokia770 = " libgtkinput"
+#As soon as a kill switch is in place we can add it to devices with a keyboard
+#GPE_EXTRA_INSTALL_append_c7x0 = " libgtkinput"
+#GPE_EXTRA_INSTALL_append_tosa = " libgtkinput"
+#GPE_EXTRA_INSTALL_append_akita = " libgtkinput"
+#GPE_EXTRA_INSTALL_append_spitz = " libgtkinput"
+#GPE_EXTRA_INSTALL_append_borzoi = " libgtkinput"
+
diff --git a/conf/distro/angstrom.conf b/conf/distro/angstrom.conf
index c63a5c53b7..e9e05201e8 100644
--- a/conf/distro/angstrom.conf
+++ b/conf/distro/angstrom.conf
@@ -9,7 +9,7 @@ DISTRO_NAME = "Angstrom"
ANGSTROM_URI = "http://ewi546.ewi.utwente.nl/angstrom"
#Set the default maintainer to angstrom-dev
-MAINTAINER ?= "Angstrom Developers <angstrom-dev@handhelds.org>"
+MAINTAINER = "Angstrom Developers <angstrom-dev@handhelds.org>"
#use ipkg package format with debian style naming
INHERIT += "package_ipk debian"
@@ -21,10 +21,10 @@ include conf/distro/include/multimachine.conf
ENABLE_BINARY_LOCALE_GENERATION ?= ""
-#Use the ARM EABI when building for an ARM cpu.
-TARGET_VENDOR_arm = "-none"
-TARGET_OS_arm = "linux-gnueabi"
-TARGET_OS = "linux"
+#Use the ARM EABI when building for an ARM cpu. We can't use overrides
+#here because this breaks all places where ":=" is used.
+TARGET_VENDOR = "${@['','-none'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}"
+TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}"
#mess with compiler flags to use -Os instead of -O2
#Please see http://free-electrons.com/doc/embedded_linux_optimizations/img47.html for some more info
diff --git a/conf/distro/debianslug.conf b/conf/distro/debianslug.conf
index c5c9f6868c..1063356217 100644
--- a/conf/distro/debianslug.conf
+++ b/conf/distro/debianslug.conf
@@ -87,6 +87,15 @@ kernel-module-nls-cp437 \
kernel-module-nls-utf8 \
"
+DEBIANSLUG_STANDARD_RDEPENDS += "\
+kernel-module-ehci-hcd \
+kernel-module-ohci-hcd \
+kernel-module-uhci-hcd \
+kernel-module-sd-mod \
+kernel-module-usb-storage \
+kernel-module-scsi-mod \
+"
+
# This documents other file systems which are built but not installed
# by default in the flash image.
#
diff --git a/conf/distro/familiar-unstable.conf b/conf/distro/familiar-unstable.conf
index 734d33db3c..ab367378af 100644
--- a/conf/distro/familiar-unstable.conf
+++ b/conf/distro/familiar-unstable.conf
@@ -48,6 +48,12 @@ PREFERRED_VERSION_gcc-cross ?= "3.4.4"
PREFERRED_VERSION_gcc-cross-initial ?= "3.4.4"
#
+# PIN the familiar build to a version
+#
+PREFERRED_VERSION_binutils-cross ?= "2.15.94.0.1"
+PREFERRED_VERSION_binutils ?= "2.15.94.0.1"
+
+#
# Opie
#
diff --git a/conf/distro/openslug.conf b/conf/distro/openslug.conf
index 304cd6dcfa..09f3691b65 100644
--- a/conf/distro/openslug.conf
+++ b/conf/distro/openslug.conf
@@ -87,6 +87,15 @@ kernel-module-nls-cp437 \
kernel-module-nls-utf8 \
"
+OPENSLUG_STANDARD_RDEPENDS += "\
+kernel-module-ehci-hcd \
+kernel-module-ohci-hcd \
+kernel-module-uhci-hcd \
+kernel-module-sd-mod \
+kernel-module-usb-storage \
+kernel-module-scsi-mod \
+"
+
# This documents other file systems which are built but not installed
# by default in the flash image.
#
diff --git a/conf/distro/preferred-e-versions.inc b/conf/distro/preferred-e-versions.inc
index 53f363bf3d..c8f246ff69 100644
--- a/conf/distro/preferred-e-versions.inc
+++ b/conf/distro/preferred-e-versions.inc
@@ -2,29 +2,29 @@
# Specify which versions of E-related libraries and applications to build
#
-PREFERRED_VERSION_e = "0.16.999.023"
-PREFERRED_VERSION_ecore-x11 = "0.9.9.023"
-PREFERRED_VERSION_ecore-native = "0.9.9.023"
-PREFERRED_VERSION_edb = "1.0.5.005"
-PREFERRED_VERSION_edb-native = "1.0.5.005"
-PREFERRED_VERSION_edje = "0.5.0.023"
-PREFERRED_VERSION_edje-native = "0.5.0.023"
-PREFERRED_VERSION_eet = "0.9.10.023"
-PREFERRED_VERSION_eet-native = "0.9.10.023"
-PREFERRED_VERSION_embryo = "0.9.1.023"
-PREFERRED_VERSION_embryo-native = "0.9.1.023"
+PREFERRED_VERSION_e = "0.16.999.025"
+PREFERRED_VERSION_ecore-x11 = "0.9.9.025"
+PREFERRED_VERSION_ecore-native = "0.9.9.025"
+PREFERRED_VERSION_edb = "1.0.5.006"
+PREFERRED_VERSION_edb-native = "1.0.5.006"
+PREFERRED_VERSION_edje = "0.5.0.025"
+PREFERRED_VERSION_edje-native = "0.5.0.025"
+PREFERRED_VERSION_eet = "0.9.10.025"
+PREFERRED_VERSION_eet-native = "0.9.10.025"
+PREFERRED_VERSION_embryo = "0.9.1.025"
+PREFERRED_VERSION_embryo-native = "0.9.1.025"
PREFERRED_VERSION_emotion = "0.0.1.004"
PREFERRED_VERSION_emotion-native = "0.0.1.004"
-PREFERRED_VERSION_epeg = "0.9.0.005"
-PREFERRED_VERSION_epsilon = "0.3.0.005"
-PREFERRED_VERSION_esmart-x11 = "0.9.0.005"
-PREFERRED_VERSION_evas-x11 = "0.9.9.023"
-PREFERRED_VERSION_evas-native = "0.9.9.023"
-PREFERRED_VERSION_ewl = "0.0.4.005"
-PREFERRED_VERSION_imlib2-x11 = "1.2.1.010"
-PREFERRED_VERSION_imlib2-native = "1.2.1.010"
-PREFERRED_VERSION_e-wm = "0.16.999.023"
-PREFERRED_VERSION_entrance = "0.9.0.005"
+PREFERRED_VERSION_epeg = "0.9.0.006"
+PREFERRED_VERSION_epsilon = "0.3.0.006"
+PREFERRED_VERSION_esmart-x11 = "0.9.0.006"
+PREFERRED_VERSION_evas-x11 = "0.9.9.025"
+PREFERRED_VERSION_evas-native = "0.9.9.025"
+PREFERRED_VERSION_ewl = "0.0.4.006"
+PREFERRED_VERSION_imlib2-x11 = "1.2.1.011"
+PREFERRED_VERSION_imlib2-native = "1.2.1.011"
+PREFERRED_VERSION_e-wm = "0.16.999.025"
+PREFERRED_VERSION_entrance = "0.9.0.006"
PREFERRED_PROVIDER_virtual/evas = "evas-x11"
PREFERRED_PROVIDER_virtual/ecore = "ecore-x11"
diff --git a/conf/distro/slugos-packages.conf b/conf/distro/slugos-packages.conf
index 5d82b4f9f7..1e578c48ba 100644
--- a/conf/distro/slugos-packages.conf
+++ b/conf/distro/slugos-packages.conf
@@ -22,6 +22,7 @@ ${PKGDIR}/packages/busybox/*.bb \
${PKGDIR}/packages/bwmon/*.bb \
${PKGDIR}/packages/bzip2/*.bb \
${PKGDIR}/packages/ccxstream/*.bb \
+${PKGDIR}/packages/cdparanoia/*.bb \
${PKGDIR}/packages/cdstatus/*.bb \
${PKGDIR}/packages/cherokee/*.bb \
${PKGDIR}/packages/coreutils/*.bb \
@@ -167,7 +168,6 @@ ${PKGDIR}/packages/obexftp/*.bb \
${PKGDIR}/packages/openjade/*.bb \
${PKGDIR}/packages/openldap/*.bb \
${PKGDIR}/packages/openntpd/*.bb \
-${PKGDIR}/packages/openobex-apps/*.bb \
${PKGDIR}/packages/openobex/*.bb \
${PKGDIR}/packages/opensp/*.bb \
${PKGDIR}/packages/openssh/*.bb \
diff --git a/conf/distro/slugos.conf b/conf/distro/slugos.conf
index 929a93ad08..5a73aff7a2 100644
--- a/conf/distro/slugos.conf
+++ b/conf/distro/slugos.conf
@@ -170,7 +170,7 @@ PREFERRED_VERSION_glibc ?= "2.3.5+cvs20050627"
# Select the correct versions of the kernel and modules (these are the
# defaults, override in the conf/distro top-level distro file).
PREFERRED_PROVIDER_virtual/kernel ?= "ixp4xx-kernel"
-PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.16-rc4-git9"
+PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.16"
# Built-in ethernet modules
PREFERRED_PROVIDER_virtual/ixp-eth ?= "ixp400-eth"
diff --git a/conf/distro/ucslugc.conf b/conf/distro/ucslugc.conf
index 24ef6e6c33..bb6c6efa6a 100644
--- a/conf/distro/ucslugc.conf
+++ b/conf/distro/ucslugc.conf
@@ -19,6 +19,16 @@ UCSLUGC_EXTRA_BBFILES ?= ""
# prefix UCSLUGC_ are used here to default the values of the corresponding NSLU2_
# setting - either may be set in local.conf to override these values.
UCSLUGC_EXTRA_RDEPENDS ?= ""
+
+UCSLUGC_STANDARD_RDEPENDS += "\
+kernel-module-ehci-hcd \
+kernel-module-ohci-hcd \
+kernel-module-uhci-hcd \
+kernel-module-sd-mod \
+kernel-module-usb-storage \
+kernel-module-scsi-mod \
+"
+
#
SLUGOS_EXTRA_RDEPENDS ?= "${UCSLUGC_EXTRA_RDEPENDS}"
diff --git a/conf/distro/unslung.conf b/conf/distro/unslung.conf
index e961445209..1308340887 100644
--- a/conf/distro/unslung.conf
+++ b/conf/distro/unslung.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Unslung Linux Distribution for the NSLU2
DISTRO_NAME = "Unslung"
-DISTRO_VERSION = "6.7-beta"
+DISTRO_VERSION = "6.8-beta"
DISTRO_TYPE = "beta"
FEED_URIS = "cross##http://ipkg.nslu2-linux.org/feeds/optware/nslu2/cross/stable"
diff --git a/conf/documentation.conf b/conf/documentation.conf
index 320361398e..57ca4fe237 100644
--- a/conf/documentation.conf
+++ b/conf/documentation.conf
@@ -90,3 +90,4 @@ T[doc] = "Temporary directory within the WORKDIR."
GROUP_locale[doc] = "Locale generation of the GNU libc implementation"
ENABLE_BINARY_LOCALE_GENERATION[doc] = "Enable the use of qemu to generate locale information during build time on the host instead of runtime on the target. If you have trouble with qemu-native you should make this an empty var. @group locale"
+PCMCIA_MANAGER[doc] = "Specify which package(s) to install to handle PCMCIA slots (usually pcmcia-cs or pcmciautils)."
diff --git a/conf/machine/borzoi.conf b/conf/machine/borzoi.conf
index 185c9f02cb..10ffb80c32 100644
--- a/conf/machine/borzoi.conf
+++ b/conf/machine/borzoi.conf
@@ -7,7 +7,7 @@ KERNEL_VERSION ?= "2.6"
include conf/machine/include/zaurus-clamshell.conf
include conf/machine/include/zaurus-clamshell-${KERNEL_VERSION}.conf
-PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit pcmcia-cs"
+PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit ${PCMCIA_MANAGER}"
PIVOTBOOT_EXTRA_RRECOMMENDS += ""
# Useful things for the built-in Harddisk
diff --git a/conf/machine/include/handheld-common.conf b/conf/machine/include/handheld-common.conf
index fbecc6e25c..f8767d2ddf 100644
--- a/conf/machine/include/handheld-common.conf
+++ b/conf/machine/include/handheld-common.conf
@@ -16,8 +16,6 @@ irda irlan irnet irport irtty ircomm-tty \
input uinput \
"
-PCMCIA_MANAGER ?= "pcmcia-cs"
-
# Configuration bits for "generic handheld"
BOOTSTRAP_EXTRA_RDEPENDS += "${PCMCIA_MANAGER} apm apmd network-suspend-scripts"
BOOTSTRAP_EXTRA_RRECOMMENDS += "ppp wireless-tools irda-utils openswan wpa-supplicant-nossl lrzsz ppp-dialin ${@linux_module_packages('${HANDHELD_MODULES}', d)}"
diff --git a/conf/machine/include/poodle-2.6.conf b/conf/machine/include/poodle-2.6.conf
index 885bf40b4f..b1dcd7fe3b 100644
--- a/conf/machine/include/poodle-2.6.conf
+++ b/conf/machine/include/poodle-2.6.conf
@@ -1,4 +1,43 @@
PREFERRED_PROVIDER_virtual/kernel = "linux-openzaurus"
-BOOTSTRAP_EXTRA_RDEPENDS = "kernel udev sysfsutils hostap-modules-cs orinoco-modules-cs udev-utils"
+PCMCIA_MANAGER ?= "pcmciautils"
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel udev sysfsutils spectrum-fw \
+${PCMCIA_MANAGER} apm wireless-tools irda-utils udev-utils console-tools hostap-utils prism3-firmware prism3-support \
+ppp ppp-dialin alsa-utils-alsactl alsa-utils-alsamixer module-init-tools alsa-conf zaurusd"
+
+# Ethernet modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-pcnet-cs"
+# NFS Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-nfs kernel-module-lockd kernel-module-sunrpc"
+# Crypto Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-des kernel-module-md5"
+# SMB and CRAMFS
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-smbfs kernel-module-cramfs"
+# Serial Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-8250 kernel-module-serial-cs"
+# Bluetooth Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-bluetooth kernel-module-l2cap kernel-module-rfcomm kernel-module-hci-vhci \
+ kernel-module-bnep kernel-module-hidp kernel-module-hci-uart kernel-module-sco \
+ kernel-module-bt3c-cs kernel-module-bluecard-cs kernel-module-btuart-cs kernel-module-dtl1-cs"
+# Infrared Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-pxaficp-ir kernel-module-irda kernel-module-ircomm \
+ kernel-module-ircomm-tty kernel-module-irlan kernel-module-irnet kernel-module-ir-usb"
+
+# USB Gadget Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-gadgetfs kernel-module-g-file-storage \
+ kernel-module-g-serial kernel-module-g-ether"
+
+# Wireless Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-hostap kernel-module-hostap-cs \
+ kernel-module-hermes kernel-module-orinoco \
+ kernel-module-orinoco-cs kernel-module-spectrum-cs \
+ hostap-conf orinoco-conf"
+
+# Sound Modules
+###BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-snd-mixer-oss kernel-module-snd-pcm-oss"
+BOOTSTRAP_EXTRA_SOUND = "kernel-module-soundcore kernel-module-snd kernel-module-snd-page-alloc kernel-module-snd-timer \
+ kernel-module-snd-pcm \
+ kernel-module-snd-soc-core kernel-module-snd-soc-pxa2xx kernel-module-snd-soc-pxa2xx-i2s"
+
+###BOOTSTRAP_EXTRA_RDEPENDS_append_poodle += "${BOOTSTRAP_EXTRA_SOUND} kernel-module-snd-soc-poodle kernel-module-snd-soc-wm8731 "
diff --git a/conf/machine/include/tosa-2.6.conf b/conf/machine/include/tosa-2.6.conf
index fdd706d093..c7805c36fe 100644
--- a/conf/machine/include/tosa-2.6.conf
+++ b/conf/machine/include/tosa-2.6.conf
@@ -1,14 +1,6 @@
include conf/machine/include/zaurus-clamshell-2.6.conf
-# SOUND Modules
-BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-snd kernel-module-snd-ac97-bus kernel-module-snd-ac97-codec kernel-module-snd-mixer-oss kernel-module-snd-page-alloc kernel-module-snd-pcm kernel-module-snd-pcm-oss kernel-module-snd-pxa2xx-ac97 kernel-module-snd-pxa2xx-pcm kernel-module-snd-timer kernel-module-soundcore"
-
-module_autoload_snd-pxa2xx-ac97 = "snd-pxa2xx-ac97"
-module_autoload_snd-pcm-oss ="snd-pcm-oss"
+# wlan-ng Modules
+BOOTSTRAP_EXTRA_RDEPENDS += "wlan-ng-modules-usb"
# WM97xx Modules
-BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-wm97xx-core kernel-module-wm9705 kernel-module-pxa-wm97xx"
-module_autoload_wm9705 = "wm9705"
-#module_autoload_pxa-wm97xx = "pen_int=0"
-
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-wm97xx"
-#module_autoload_wm97xx = "wm97xx"
+#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-wm97xx-core kernel-module-wm9705 kernel-module-pxa-wm97xx"
diff --git a/conf/machine/include/zaurus-clamshell-2.6.conf b/conf/machine/include/zaurus-clamshell-2.6.conf
index 4a8e4bc79c..e73028d7ee 100644
--- a/conf/machine/include/zaurus-clamshell-2.6.conf
+++ b/conf/machine/include/zaurus-clamshell-2.6.conf
@@ -4,8 +4,10 @@
PREFERRED_PROVIDER_virtual/kernel = "linux-openzaurus"
PREFERRED_VERSION_wpa_supplicant = "0.4.7"
+PCMCIA_MANAGER ?= "pcmciautils"
+
BOOTSTRAP_EXTRA_RDEPENDS += "kernel udev sysfsutils spectrum-fw \
-pcmcia-cs apm wireless-tools irda-utils udev-utils console-tools hostap-utils prism3-firmware prism3-support \
+${PCMCIA_MANAGER} apm wireless-tools irda-utils udev-utils console-tools hostap-utils prism3-firmware prism3-support \
ppp ppp-dialin openswan wpa-supplicant-nossl alsa-utils-alsactl alsa-utils-alsamixer module-init-tools alsa-conf zaurusd"
# Ethernet modules
@@ -37,10 +39,12 @@ BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-hostap kernel-module-hostap-cs \
hostap-conf orinoco-conf"
# Sound Modules
-BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-soundcore kernel-module-snd kernel-module-snd-page-alloc kernel-module-snd-timer \
- kernel-module-snd-pcm kernel-module-snd-mixer-oss kernel-module-snd-pcm-oss \
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-snd-mixer-oss kernel-module-snd-pcm-oss"
+BOOTSTRAP_EXTRA_SOUND = "kernel-module-soundcore kernel-module-snd kernel-module-snd-page-alloc kernel-module-snd-timer \
+ kernel-module-snd-pcm \
kernel-module-snd-soc-core kernel-module-snd-soc-pxa2xx kernel-module-snd-soc-pxa2xx-i2s"
-BOOTSTRAP_EXTRA_RDEPENDS_append_c7x0 += " kernel-module-snd-soc-corgi kernel-module-snd-soc-wm8731 "
-BOOTSTRAP_EXTRA_RDEPENDS_append_akita += " kernel-module-snd-soc-spitz kernel-module-snd-soc-wm8750 "
-BOOTSTRAP_EXTRA_RDEPENDS_append_borzoi += " kernel-module-snd-soc-spitz kernel-module-snd-soc-wm8750 "
-BOOTSTRAP_EXTRA_RDEPENDS_append_spitz += " kernel-module-snd-soc-spitz kernel-module-snd-soc-wm8750 "
+
+BOOTSTRAP_EXTRA_RDEPENDS_append_c7x0 += "${BOOTSTRAP_EXTRA_SOUND} kernel-module-snd-soc-corgi kernel-module-snd-soc-wm8731 "
+BOOTSTRAP_EXTRA_RDEPENDS_append_akita += "${BOOTSTRAP_EXTRA_SOUND} kernel-module-snd-soc-spitz kernel-module-snd-soc-wm8750 "
+BOOTSTRAP_EXTRA_RDEPENDS_append_borzoi += "${BOOTSTRAP_EXTRA_SOUND} kernel-module-snd-soc-spitz kernel-module-snd-soc-wm8750 "
+BOOTSTRAP_EXTRA_RDEPENDS_append_spitz += "${BOOTSTRAP_EXTRA_SOUND} kernel-module-snd-soc-spitz kernel-module-snd-soc-wm8750 "
diff --git a/conf/machine/nokia770.conf b/conf/machine/nokia770.conf
index d022d8703a..bc15823f26 100644
--- a/conf/machine/nokia770.conf
+++ b/conf/machine/nokia770.conf
@@ -2,7 +2,7 @@
#@NAME: Nokia 770 internet tablet
#@DESCRIPTION: Machine configuration for the Nokia 770, an omap 1710 based tablet
TARGET_ARCH = "arm"
-IPKG_ARCHS = "all arm armv4 armv5te"
+IPKG_ARCHS = "all arm armv4 armv5te ${MACHINE}"
PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-omap"
PREFERRED_PROVIDER_virtual/bootloader = ""
@@ -11,7 +11,6 @@ XSERVER = "xserver-kdrive-omap"
# 800x480 is big enough for me
GUI_MACHINE_CLASS = "bigscreen"
-GPE_EXTRA_INSTALL += "gaim sylpheed gpe-mini-browser tscalib"
# Use tune-arm926 per default. Machine independent feeds should be built with tune-strongarm.
include conf/machine/include/tune-arm926ejs.conf
@@ -30,7 +29,7 @@ SERIAL_CONSOLE = "115200 ttyS0"
PREFERRED_PROVIDER_virtual/kernel = "linux-omap1"
BOOTSTRAP_EXTRA_RDEPENDS += "sysfsutils nokia770-init \
-pcmcia-cs apm ppp wireless-tools console-tools"
+ apm ppp wireless-tools console-tools"
# NFS Modules
#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-nfs kernel-module-lockd kernel-module-sunrpc"
@@ -52,5 +51,4 @@ pcmcia-cs apm ppp wireless-tools console-tools"
ROOTFS_POSTPROCESS_COMMAND += " remove_init_link; "
-include conf/machine/include/handheld-common.conf
diff --git a/conf/machine/spitz.conf b/conf/machine/spitz.conf
index e1cb468d8f..212da52587 100644
--- a/conf/machine/spitz.conf
+++ b/conf/machine/spitz.conf
@@ -7,7 +7,7 @@ KERNEL_VERSION ?= "2.6"
include conf/machine/include/zaurus-clamshell.conf
include conf/machine/include/zaurus-clamshell-${KERNEL_VERSION}.conf
-PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit pcmcia-cs"
+PIVOTBOOT_EXTRA_RDEPENDS += "pivotinit ${PCMCIA_MANAGER}"
PIVOTBOOT_EXTRA_RRECOMMENDS += ""
# Useful things for the built-in Harddisk
diff --git a/conf/sanity.conf b/conf/sanity.conf
new file mode 100644
index 0000000000..df2ec3e82a
--- /dev/null
+++ b/conf/sanity.conf
@@ -0,0 +1,8 @@
+# Sanity checks for common user misconfigurations
+#
+# See sanity.bbclass
+#
+# Expert users can confirm their sanity with "touch conf/sanity.conf"
+
+INHERIT += "sanity"
+
diff --git a/packages/altboot/altboot_0.0.0.bb b/packages/altboot/altboot_0.0.0.bb
index 7d56cbd3a6..2df0e16792 100644
--- a/packages/altboot/altboot_0.0.0.bb
+++ b/packages/altboot/altboot_0.0.0.bb
@@ -1,12 +1,12 @@
DESCRIPTION = "A text-based bootmanager allowing a Zaurus to boot from SD, CF, USB-Storage and NFS. \
-Tested machines: Collie, Poodle, Akita, Spitz"
+Tested machines: Collie, Poodle, Akita, Spitz, C7x0, Tosa, Borzoi"
SECTION = "base"
PRIORITY = "optional"
MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
LICENSE = "GPL"
IGNORE_STRIP_ERRORS = "1"
-PR = "r26"
+PR = "r34"
SRC_URI = "file://altboot-menu \
@@ -44,75 +44,6 @@ pkg_postinst() {
update-alternatives --install /sbin/init init /sbin/init.altboot 55
}
-pkg_postinst_spitz() {
- # Note: Spitz support is a royal pain in the ass.
- # Since Spitz pivot_roots by default, there is no real way
- # a user can install an altboot.ipk into the flash FS.
- # So we need to do that manually (*SIGH*)
-
- # the 2.6 kernel for spitz boots from HDD, no need to copy to flash
- if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
- # no need to copy to flash if we're installing to flash already
- elif mount | grep ' / ' | grep -q mtdblock; then
- update-alternatives --install /sbin/init init /sbin/init.altboot 55
- else
- # /l/m only exists on the HDD on spitz
- if test -d /lib/modules
- then
- if [ -e /media/realroot/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/realroot"
- elif [ -e /media/ROM/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/ROM"
- fi
- if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
- ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
- if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
- mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
- cp -R /etc/altboot* $ROOT_MOUNT_POINT/etc
- cp /sbin/init.altboot $ROOT_MOUNT_POINT/sbin
- if [ -f $ROOT_MOUNT_POINT/sbin/init ]; then
- mv $ROOT_MOUNT_POINT/sbin/init $ROOT_MOUNT_POINT/sbin/init.orig
- fi
- ln -s /sbin/init.altboot $ROOT_MOUNT_POINT/sbin/init
- fi
- fi
- fi
- fi
-}
-
pkg_postrm() {
update-alternatives --remove init /sbin/init.altboot
}
-
-pkg_postrm_spitz() {
- # the 2.6 kernel for spitz boots from HDD, no need to remove from flash
- if cat /proc/version | awk '{print $3}' | grep -q '^2.6'; then
- update-alternatives --remove init /sbin/init.altboot
- # no need to copy to flash if we're removing from flash already
- elif mount | grep ' / ' | grep -q mtdblock; then
- update-alternatives --remove init /sbin/init.altboot
- else
- if test -d /lib/modules
- then
- if [ -e /media/realroot/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/realroot"
- elif [ -e /media/ROM/sbin/init ]; then
- ROOT_MOUNT_POINT="/media/ROM"
- fi
- if [ ! "$ROOT_MOUNT_POINT" = "" ]; then
- ROOT_MOUNT_DEVICE=`cat /proc/mounts | grep $ROOT_MOUNT_POINT | grep jffs2 | cut -d " " -f 1`
- if [ ! "$ROOT_MOUNT_DEVICE" = "" ]; then
- mount -oremount,rw $ROOT_MOUNT_DEVICE $ROOT_MOUNT_POINT
- if [ -f $ROOT_MOUNT_POINT/sbin/init.orig ]; then
- rm $ROOT_MOUNT_POINT/sbin/init
- rm $ROOT_MOUNT_POINT/sbin/init.altboot
- mv $ROOT_MOUNT_POINT/sbin/init.orig $ROOT_MOUNT_POINT/sbin/init
- else
- echo "$ROOT_MOUNT_POINT/sbin/init.orig not found, not uninstalling altboot!"
- fi
- fi
- fi
- fi
- fi
-}
diff --git a/packages/altboot/altboot_1.0.6-rc1.bb b/packages/altboot/altboot_1.0.6-rc1.bb
new file mode 100644
index 0000000000..bb99fe31e5
--- /dev/null
+++ b/packages/altboot/altboot_1.0.6-rc1.bb
@@ -0,0 +1,82 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: altboot_1.0.5-rc2.bb
+# Date: 21-Feb-06
+
+DESCRIPTION = "The altboot bootmanager"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+
+######################################################################################
+
+PR = "r0"
+
+######################################################################################
+
+PACKAGE_ARCH = "${MACHINE}"
+
+TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '-')}"
+
+SRC_URI = "cvs://anonymous@hentges.net/hentgescvs;method=pserver;tag=${TAG};module=altboot"
+
+S = "${WORKDIR}/altboot/"
+
+######################################################################################
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+
+ if test -d ${WORKDIR}/altboot/${MACHINE}
+ then
+ install -m 0644 ${WORKDIR}/altboot/${MACHINE}/altboot*.cfg ${D}/etc
+ else
+ install -m 0644 ${WORKDIR}/altboot/altboot*.cfg ${D}/etc
+ fi
+
+ install -m 0644 ${WORKDIR}/altboot/altboot.func ${D}/etc
+ install -m 0755 ${WORKDIR}/altboot/init.altboot ${D}/sbin
+
+ if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/
+ then
+ install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/*-* ${D}/etc/altboot-menu
+ else
+ install -m 0755 ${WORKDIR}/altboot/altboot-menu/*-* ${D}/etc/altboot-menu
+ fi
+
+ if test -d ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/
+ then
+ install -m 0755 ${WORKDIR}/altboot/${MACHINE}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ else
+ install -m 0755 ${WORKDIR}/altboot/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ fi
+
+ install -m 0755 ${WORKDIR}/altboot/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${WORKDIR}/altboot/altboot.rc/*.txt ${D}/etc/altboot.rc
+}
+
+######################################################################################
+
+do_configure() {
+ cat ${WORKDIR}/altboot/init.altboot | sed "s/^VERSION=.*/VERSION=\"${PV}\"/" > ${WORKDIR}/altboot/init.altboot_
+ mv ${WORKDIR}/altboot/init.altboot_ ${WORKDIR}/altboot/init.altboot
+}
+
+######################################################################################
+
+pkg_postinst() {
+ update-alternatives --install /sbin/init init /sbin/init.altboot 55
+}
+
+######################################################################################
+
+pkg_postrm() {
+ update-alternatives --remove init /sbin/init.altboot
+}
+
diff --git a/packages/altboot/files/akita/altboot-2.6.cfg b/packages/altboot/files/akita/altboot-2.6.cfg
index 69f7c8351b..c9a030b348 100644
--- a/packages/altboot/files/akita/altboot-2.6.cfg
+++ b/packages/altboot/files/akita/altboot-2.6.cfg
@@ -9,6 +9,7 @@ SH_SHELL="/bin/sh"
IMAGE_PATH="boot-images"
IMAGE_TYPE="ext2"
FSCK_IMAGES="yes"
+ENABLE_IMAGECONF="yes"
SD_DEVICE="/dev/mmcblk0p1"
SD_KERNEL_MODULE=""
diff --git a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
index 3a41fccf79..e01af7faad 100644
--- a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
+++ b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
@@ -20,11 +20,11 @@ run_module() {
init_rootfs
# Needed for NFS
- /etc/init.d/portmap start >/dev/tty1 2>&1 || die "/etc/init.d/portmap start failed!"
+ /etc/init.d/portmap start >/dev/null 2>&1 || die "/etc/init.d/portmap start failed!"
# For some reason NFS mounts hang if /e/i/networking is not run.
# For the time beeing I'm too lazy to investigate ;)
- /etc/init.d/networking start || die "/etc/init.d/networking start failed!"
+ /etc/init.d/networking start >/dev/null 2>&1 || die "/etc/init.d/networking start failed!"
sleep 2
@@ -91,7 +91,20 @@ run_module() {
do
stty echo
echo -n "Boot NFS root: "
- read junk < /dev/tty1
+
+ if test "$AUTOBOOT" != "yes"
+ then
+ read junk < /dev/tty1
+ else
+ if test -e /etc/.altboot-bootNFS-source.last
+ then
+ junk="`cat /etc/.altboot-bootNFS-source.last`"
+ test -z "$junk" && read junk < /dev/tty1 || echo "$junk (autoboot)"
+ else
+ read junk < /dev/tty1
+ fi
+ fi
+
cnt=1
for nfs_mount in $nfs_mounts
@@ -99,6 +112,7 @@ run_module() {
if test "$junk" = "$cnt"
then
selection="$nfs_mount"
+ echo "$junk" > /etc/.altboot-bootNFS-source.last
fi
let cnt=$cnt+1
done
@@ -112,13 +126,22 @@ run_module() {
mkdir -p /media/nfsroot || die "mkdir -p /media/nfsroot failed!"
echo -n "Mounting NFS root..."
+
+ if ( mount | grep -q "/media/nfsroot" )
+ then
+ echo "/media/nfsroot already used, tying to umount..."
+ umount /media/image
+ losetup -d /dev/loop0
+ umount /media/nfsroot || die "umount failed!"
+ fi
+
mount -t nfs "$selection" /media/nfsroot && echo ok || die "mount -t nfs "$selection" /media/nfsroot failed!"
# Use configured resolv.conf in the pivoted rootfs
- echo -n "Copying resolv.conf..."
+ #echo -n "Copying resolv.conf..."
#cp /etc/resolv.conf /media/nfsroot/etc && echo ok || echo "FAILED"
- check_target "/media/nfsroot"
+ check_target "/media/nfsroot" bootNFS
}
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
index c6af50a008..0cc59116ce 100644
--- a/packages/altboot/files/altboot.func
+++ b/packages/altboot/files/altboot.func
@@ -1,6 +1,7 @@
#! /bin/sh
# This function checks for the presence of a real filesystem and loop-images on the target
# $1 = folder of rootfs, $2 = runlevel (defaults to 5)
+# $2 = name of calling module
check_target() {
# Check if there is a /sbin/init or /sbin/init.sysvinit on the card
if test -x $1/sbin/init -o -x $1/$REAL_INIT
@@ -31,11 +32,24 @@ check_target() {
while test -z "$ans"
do
echo -n "Your choice: "
- read junk < /dev/tty1
+
+ if test "$AUTOBOOT" != "yes"
+ then
+ read junk < /dev/tty1
+ else
+ if test -e /etc/.altboot-real-or-loop.last
+ then
+ junk="`cat /etc/.altboot-real-or-loop.last`"
+ test -z "$junk" && read junk < /dev/tty1 || echo "$junk (autoboot)"
+ else
+ read junk < /dev/tty1
+ fi
+ fi
if test "$junk" = 1 -o "$junk" = 2
then
ans="$junk"
+ echo "$junk" > /etc/.altboot-real-or-loop.last
fi
done
@@ -59,21 +73,35 @@ check_target() {
fi
}
+boot_new_rootfs_splash() {
+C_RED="\033[37;44m"
+C_RESET="\033[0m"
+
+ echo -e "${C_RED}+----------------------------------------------------------+${C_RESET}"
+ echo -e "${C_RED}| |${C_RESET}"
+ echo -e "${C_RED}| Booting the selected rootfs... |${C_RESET}"
+ echo -e "${C_RED}| |${C_RESET}"
+ echo -e "${C_RED}+----------------------------------------------------------+${C_RESET}"
+
+}
+
# This function pivot_root's into a real filesystem calling $newrootfs/sbin/init
# $1 = The new rootfs
pivot_realfs() {
- test -z "$2" && RL="5" || RL="$2"
+ #test -z "$2" && RL="5" || RL="$2"
mkdir -p $1/media/ROM || die "mkdir -p $1/media/ROM failed"
mount -o remount,ro / >/dev/null 2>&1
+ test "$ENABLE_IMAGECONF" = yes && image_conf $1
+
do_pivot "$1" "$RL"
}
# This function loop-mounts an image-file and pivot_root's into it
# $1: The new rootfs
pivot_image() {
- test -z "$2" && RL="5" || RL="$2"
+ #test -z "$2" && RL="5" || RL="$2"
cd $1/$IMAGE_PATH
# Check for rootfs images on the card
@@ -95,7 +123,18 @@ pivot_image() {
while test -z "$IMAGE_NAME"
do
echo -en "Please choose one of the above: "
- read junk < /dev/tty1
+ if test "$AUTOBOOT" != "yes"
+ then
+ read junk < /dev/tty1
+ else
+ if test -e /etc/.altboot-loopimage.last
+ then
+ junk="`cat /etc/.altboot-loopimage.last`"
+ test -z "$junk" && read junk < /dev/tty1 || echo "$junk (autoboot)"
+ else
+ read junk < /dev/tty1
+ fi
+ fi
x=0
for file in `ls *rootfs.bin`
@@ -103,7 +142,8 @@ pivot_image() {
let x=$x+1
if test "$x" = "$junk"
then
- IMAGE_NAME="$file"
+ IMAGE_NAME="$file"
+ echo "$junk" > /etc/.altboot-loopimage.last
fi
done
done
@@ -111,28 +151,31 @@ pivot_image() {
IMAGE_NAME="`ls *rootfs.bin`"
test -z "$IMAGE_NAME" && die "No rootfs found (*rootfs.bin) in $1/$IMAGE_PATH"
fi
-
- echo "Using [$IMAGE_NAME]"
+
+
+ echo ""
mkdir -p /media/image || die "mkdir -p /media/image failed"
- echo "Setting up loopback (/dev/loop0) for $IMAGE_NAME"
losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME || die "losetup /dev/loop0 $1/$IMAGE_PATH/$IMAGE_NAME failed!"
check_fs /dev/loop0 $IMAGE_TYPE
- echo -e "\n* * * Booting rootfs image * * *\n"
+ echo -e "\n* * * Mounting rootfs image * * *\n"
# Busybox's "mount" doesn't seem to like "-o loop" for some reason
# It works on collie and b0rks on poodle.
if [ "$IMAGE_TYPE" = "" ]; then
IMAGE_TYPE="auto"
fi
+
# If mount fails it has the tendency to spew out a _lot_ of error messages.
# We direct the output to /dev/null so the user can see which step actually failed.
mount /dev/loop0 -t $IMAGE_TYPE /media/image >/dev/null 2>&1 || die "mount -t $IMAGE_TYPE /dev/loop0 /media/image failed!"
mkdir -p /media/image/media/ROM || die "mkdir -p /media/image/media/ROM failed"
+ test "$ENABLE_IMAGECONF" = yes && image_conf /media/image
+
do_pivot /media/image "$RL"
}
@@ -161,11 +204,11 @@ do_pivot(){
! test -d "$new_mpt" && mkdir -p "$new_mpt"
/bin/busybox mount -o move "$mpt" "$new_mpt"
done
-
+
+ clear
+ boot_new_rootfs_splash
echo "Calling INIT"
-
- #read junk
-
+
exec /usr/sbin/chroot . /sbin/init $2 >/dev/tty0 2>&1
else
echo "FAILED"
@@ -174,6 +217,105 @@ do_pivot(){
}
+# $1: Path to mounted rootfs
+image_conf(){
+ ! test -d "$1" && die "image_conf: [$1] not found / no directory"
+
+ test -e "$1/etc/.image_conf.done" && return
+
+ echo -e "\n\n* * * rootfs configuration * * *\n"
+ echo -e "This setup lets you reconfigure your new rootfs."
+ echo "Most probably the rootfs is configured with"
+ echo "defaults based on a flash installation."
+ echo "If unsure, go with the defaults by pressing <ENTER>."
+ echo ""
+
+ if ( cat $1/etc/fstab | grep -v "^#" | grep -q "/home " )
+ then
+ while true
+ do
+ echo "Usually your /home directory is located on another flash partition."
+ echo -n "Do you want me to move /home inside the loop-image? [N|y] "
+ read junk
+
+ if test "$junk" = "y" -o "$junk" = "Y"
+ then
+ cat $1/etc/fstab | sed "/.*\/home.*/s/\/home/\/home.orig/" > $1/etc/fstab_
+ mv $1/etc/fstab_ $1/etc/fstab
+ break
+ fi
+
+ test "$junk" = "" -o "$junk" = n -o "$junk" = N && break
+ done
+
+ fi
+
+ echo ""
+
+# if ( cat $1/etc/fstab | grep -v "^#" | grep -q "/var" )
+# then
+# while true
+# do
+# echo "This is mainly for testing purposes."
+# echo -n "Do you want to configure /var as a normal non-tmpfs directory? [N|y] "
+# read junk
+#
+# if test "$junk" = "y" -o "$junk" = "Y"
+# then
+# cat $1/etc/fstab | sed "/.*\/var.*/s/\(.*\)/#\ \1/" > $1/etc/fstab_
+# mv $1/etc/fstab_ $1/etc/fstab
+# break
+# fi
+#
+# test "$junk" = "" -o "$junk" = n -o "$junk" = N && break
+# done
+# fi
+
+ echo ""
+
+ if ( cat $1/etc/ipkg.conf | grep -q ^lists_dir )
+ then
+ while true
+ do
+ echo -e "Wasting RAM is never a good idea.\nOnly say Y if your rootfs is very small in size"
+ echo -n "Do you want to store ipkg package data in RAM? [N|y] "
+ read junk
+
+ if test "$junk" = "" -o "$junk" = n -o "$junk" = N
+ then
+ cat $1/etc/ipkg.conf | sed "/^lists_dir.*/s/\(.*\)/#\ \1/"> $1/etc/ipkg.conf_
+ mv $1/etc/ipkg.conf_ $1/etc/ipkg.conf
+ break
+ fi
+
+ test "$junk" = "y" -o "$junk" = "Y" && break
+ done
+ fi
+
+ echo ""
+
+ if ( cat $1/etc/ipkg.conf | grep -q "^dest sd" )
+ then
+ while true
+ do
+ echo -n "Do you want to keep the SD, CF and /home ipkg install targets? [N|y] "
+ read junk
+
+ if test "$junk" = "" -o "$junk" = n -o "$junk" = N
+ then
+ cat $1/etc/ipkg.conf | sed "/^dest\ \(sd\|cf\|home\).*/s/\(.*\)/#\ \1/" > $1/etc/ipkg.conf_
+ mv $1/etc/ipkg.conf_ $1/etc/ipkg.conf
+ break
+ fi
+
+ test "$junk" = "y" -o "$junk" = "Y" && break
+ done
+ fi
+
+
+ touch "$1/etc/.image_conf.done"
+}
+
# This functions configures the master password for altboot if none is set
set_password() {
mount -o remount,rw /
diff --git a/packages/altboot/files/collie/altboot-2.4.cfg b/packages/altboot/files/collie/altboot-2.4.cfg
index 9d2560f76b..bc0f9ca054 100644
--- a/packages/altboot/files/collie/altboot-2.4.cfg
+++ b/packages/altboot/files/collie/altboot-2.4.cfg
@@ -8,7 +8,9 @@ REAL_INIT="/sbin/init.sysvinit"
SH_SHELL="/bin/sh"
IMAGE_PATH="boot-images"
IMAGE_TYPE="ext2"
-FSCK_IMAGES="no"
+FSCK_IMAGES="yes"
+ENABLE_IMAGECONF="yes"
+
SD_DEVICE="/dev/mmcda1"
SD_KERNEL_MODULE="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
INIT_RUNLEVEL="5"
diff --git a/packages/altboot/files/init.altboot b/packages/altboot/files/init.altboot
index 850912f20c..22f3e86e83 100644
--- a/packages/altboot/files/init.altboot
+++ b/packages/altboot/files/init.altboot
@@ -8,7 +8,7 @@
test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
CURRENT_ENV="`set`"
-VERSION="0.0.4"
+VERSION="DEVELOPER SNAPSHOT"
# Set some defaults in case altboot.cfg is missing
REAL_INIT="/sbin/init.sysvinit"
@@ -183,6 +183,13 @@ run_timer() {
echo -n "." >/dev/tty1
let cnt=$cnt+1
done
+
+ if test "$launch_altboot" != "yes"
+ then
+ AUTOBOOT=yes
+ else
+ rm -f /etc/.altboot*.last
+ fi
else
launch_altboot=yes
fi
@@ -236,9 +243,13 @@ wait_for_input() {
# above to launch the altboot menu.
- # This filters an "<ENTER>" from the user as "any key"
- ( while :; do read x< /dev/tty0 2>&1; done; ) > /dev/null 2>&1 &
- sleep 1; kill $!
+ # Bash throws an ugly error on kill
+ if ! (readlink /bin/sh | grep -q bash)
+ then
+ # This filters an "<ENTER>" from the user as "any key"
+ ( while :; do read x< /dev/tty0 2>&1; done; ) > /dev/null 2>&1 &
+ sleep 1; kill $! >/dev/null 2>&1
+ fi
@@ -272,10 +283,12 @@ wait_for_input() {
}
# * * * * * * This is the main function * * * * * *
-
-if test "`runlevel`" != "unknown" -a "$1" != "-force"
+# Note: this is positivly ugly. If someone knows a better way to detect wheter
+# we are already booted into a runlevel _without_ reading /var and / or using `runlevel`
+# PLEASE let me know.
+if test -f /proc/cmdline -a "`ps ax|wc -l|tr -d " "`" -gt 30 -a "$1" != "-force"
then
- echo "altboot: Using real init [$REAL_INIT] [$*] *" >/dev/tty1
+ echo "altboot: Using real init [$REAL_INIT] [$*] [`ps ax|wc -l|tr -d " "`] *" >/dev/tty1
exec $REAL_INIT $*
# exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
exit 0
diff --git a/packages/altboot/files/poodle/altboot-2.4.cfg b/packages/altboot/files/poodle/altboot-2.4.cfg
index 9d2560f76b..c5bd17050c 100644
--- a/packages/altboot/files/poodle/altboot-2.4.cfg
+++ b/packages/altboot/files/poodle/altboot-2.4.cfg
@@ -16,5 +16,7 @@ NO_GUI_RL="2"
MASTER_PASSWORD=""
ASK_PW_ON_BOOT="no"
+ENABLE_IMAGECONF="yes"
+
SD_MOUNTPOINT="/media/card"
CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/spitz/altboot-2.4.cfg b/packages/altboot/files/spitz/altboot-2.4.cfg
deleted file mode 100644
index 3c8abc9bae..0000000000
--- a/packages/altboot/files/spitz/altboot-2.4.cfg
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Handled by /sbin/init.altboot
-# Allow booting images from SD, CF or RAM instead of booting
-# the ROM. This is currently broken.
-ENABLE_ALTBOOT="yes"
-TIMEOUT="3"
-REAL_INIT="/sbin/init.sysvinit"
-SH_SHELL="/bin/sh"
-
-IMAGE_PATH="boot-images"
-IMAGE_TYPE="ext3"
-FSCK_IMAGES="yes"
-
-SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/media/hdd/lib/modules/2.4.20/kernel/drivers/block/sharp_mmcsd_m.o"
-
-USB_HOST_AVAILABLE="yes"
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
-USB_STORAGE_PARTITION="/dev/sda1"
-USB_STORAGE_WAIT="4"
-
-INIT_RUNLEVEL="5"
-NO_GUI_RL="2"
-MASTER_PASSWORD=""
-ASK_PW_ON_BOOT="no"
-
-SD_MOUNTPOINT="/media/card"
-CF_MOUNTPOINT="/media/cf"
-
-HDD3_DEVICE="/dev/hda3"
-HDD3_MOUNTPOINT="/media/hdd3"
-HDD3_TYPE="vfat"
-
-SPITZ_HDD_PART="/dev/hda1"
-SPITZ_HDD_TYPE="ext3"
-
diff --git a/packages/altboot/files/borzoi/altboot-2.6.cfg b/packages/altboot/files/spitz/altboot-2.6.cfg
index 69f7c8351b..c9a030b348 100644
--- a/packages/altboot/files/borzoi/altboot-2.6.cfg
+++ b/packages/altboot/files/spitz/altboot-2.6.cfg
@@ -9,6 +9,7 @@ SH_SHELL="/bin/sh"
IMAGE_PATH="boot-images"
IMAGE_TYPE="ext2"
FSCK_IMAGES="yes"
+ENABLE_IMAGECONF="yes"
SD_DEVICE="/dev/mmcblk0p1"
SD_KERNEL_MODULE=""
diff --git a/packages/altboot/files/spitz/altboot-menu/00-Default b/packages/altboot/files/spitz/altboot-menu/00-Default
deleted file mode 100644
index 01818262a3..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/00-Default
+++ /dev/null
@@ -1,54 +0,0 @@
-# !/bin/sh
-M_TITLE="Normal Boot"
-
-# Note for Spitz: The HDD has already been mounted in /media/hdd from
-# /etc/altboot.rc/00-Default.sh
-
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- test -z "$SPITZ_HDD_PART" && SPITZ_HDD_PART="/dev/hda1"
- echo "Spitz: Mounting [$SPITZ_HDD_PART] as /media/hdd"
- mount -t proc proc /proc || echo "Mounting /proc failed!"
-
- mount -o remount,rw /
-
- # Note: Redirecting STDIN & STDOUT is required, cardmg will die otherwise
- cardmgr -o < /dev/tty0 > /dev/tty0 2>&1 || echo "cardmgr -o failed!"
-
- check_fs $SPITZ_HDD_PART $SPITZ_HDD_TYPE
- if [ "$SPITZ_HDD_TYPE" = "" ]; then
- SPITZ_HDD_TYPE="auto"
- fi
-
- # I've seen busybox die a horrible death on "!"...
- if (mount -t $SPITZ_HDD_TYPE $SPITZ_HDD_PART /media/hdd)
- then
- a=a
- else
- echo "ERROR: mount -t ext3 $SPITZ_HDD_PART /media/hdd failed!"
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
- fi
-
- # There are no device files on Spitz yet, requires HDD (bad for testing
- # with CF)
- for n in 0 1 2 3 4 5
- do
- ! test -e /dev/loop$n && mknod /dev/loop$n b 7 $n
- done
-
- # Check for /sbin/init and / or loop-images
- check_target "/media/hdd" 5
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/spitz/altboot-menu/10-noGui b/packages/altboot/files/spitz/altboot-menu/10-noGui
deleted file mode 100644
index e4e8b0fe37..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/10-noGui
+++ /dev/null
@@ -1,47 +0,0 @@
-# !/bin/sh
-M_TITLE="Don't launch GUI"
-
-
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- test -z "$SPITZ_HDD_PART" && SPITZ_HDD_PART="/dev/hda1"
- echo "Spitz: Mounting [$SPITZ_HDD_PART] as /media/hdd"
- mount -t proc proc /proc || echo "Mounting /proc failed!"
-
- mount -o remount,rw /
-
- # Note: Redirecting STDIN & STDOUT is required, cardmg will die otherwise
- cardmgr -o < /dev/tty0 > /dev/tty0 2>&1 || echo "cardmgr -o failed!"
-
- # I've seen busybox die a horrible death on "!"...
- if (mount -t auto $SPITZ_HDD_PART /media/hdd)
- then
- a=a
- else
- echo "ERROR: mount -t ext3 $SPITZ_HDD_PART /media/hdd failed!"
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
- fi
-
- # There are no device files on Spitz yet, requires HDD (bad for testing
- # with CF)
- for n in 1 2 3 4 5
- do
- ! test -e /dev/loop$n && mknod /dev/loop$n b 7 $n
- done
-
- # Check for /sbin/init and / or loop-images
- check_target "/media/hdd" 2
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/spitz/altboot-menu/15-bootSD b/packages/altboot/files/spitz/altboot-menu/15-bootSD
deleted file mode 100644
index d22316033c..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/15-bootSD
+++ /dev/null
@@ -1,64 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-M_TITLE="Boot SD card"
-
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- echo -n "Mounting rootfs rw..." >/dev/tty0
- mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed"
-
- test -z "$SPITZ_HDD_PART" && SPITZ_HDD_PART="/dev/hda1"
- mount -t proc proc /proc || echo "Mounting /proc failed!"
-
- # Note: Redirecting STDIN & STDOUT is required, cardmg will die otherwise
- cardmgr -o < /dev/tty0 > /dev/tty0 2>&1 || echo "cardmgr -o failed!"
-
- # I've seen busybox die a horrible death on "!"...
- if (mount -t auto $SPITZ_HDD_PART /media/hdd)
- then
- a=a
- else
- echo "ERROR: mount -t auto $SPITZ_HDD_PART /media/hdd failed!"
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
- fi
-
-# echo -n "Generating device files..." >/dev/tty0
-# /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
-
-# FIXME: generate device-files
-
- echo -n "Loading SD kernel module..."
- /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"
-
- echo -n "Mounting $SD_MOUNTPOINT..." >/dev/tty0
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
-
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
-
- # Check for a real fs and loop-images.
- check_target "$SD_MOUNTPOINT" >/dev/tty0
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/spitz/altboot-menu/20-bootCF b/packages/altboot/files/spitz/altboot-menu/20-bootCF
deleted file mode 100644
index 3f19b4ee48..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/20-bootCF
+++ /dev/null
@@ -1,49 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-# FXIME: boot CF on spitz (hdb??)
-exit 0
-
-M_TITLE="Boot CF card"
-
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- echo -n "Mounting rootfs rw..." >/dev/tty0
- mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed"
-
- echo -n "Generating device files..." >/dev/tty0
- /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
-
-
- echo -n "Mounting /proc..." >/dev/tty0
- mount /proc >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount /proc failed!"
-
- /etc/init.d/pcmcia start || die "/etc/init.d/pcmcia/start failed!"
-
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
-
- # Check for a real fs and loop-images.
- check_target "$CF_MOUNTPOINT"
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/spitz/altboot-menu/25-bootHDD3 b/packages/altboot/files/spitz/altboot-menu/25-bootHDD3
deleted file mode 100644
index 4280cdd35c..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/25-bootHDD3
+++ /dev/null
@@ -1,80 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-# This file will teach you how to implement your own scripts while using existing altboot
-# code.
-
-# /sbin/init.altboot searches /etc/altboot-menu for scripts. It will only list scripts which
-# return a title when run with the "title" parameter.
-# Script which do not return a title will never be shown in the boot menu!
-#
-M_TITLE="Boot from images on HDD3"
-
-# The "title" parameter is implemented at the end of this script so it will never be reached
-# and the script will simply be ignored by altboot.
-
-
-# The die() function aborts the boot if something goes wrong and sets STDIN / STDERR / STDOUT
-# correctly.
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- # altboot.func contains re-useable code. If you intend to use check_target (see below)
- # you must keep this line. If not, delete it.
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
-
- # The only thing you'll have to do is get your medium mounted.
- # The following lines mount a SD card on 2.4-series kernels on a Zaurus
-
- ##########################################
-
-
- echo -n "Mounting rootfs rw..." >/dev/tty0
- mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed"
-
- #echo -n "Generating device files..." >/dev/tty0
- #/etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
-
- cardmgr -o < /dev/tty0 > /dev/tty0 2>&1 || echo "cardmgr -o failed!"
-
- check_fs $HDD3_DEVICE $HDD3_TYPE
-
- echo -n "Mounting $HDD3_MOUNTPOINT..." >/dev/tty0
- if [ "$HDD3_TYPE" = "" ]; then
- HDD3_TYPE="auto"
- fi
- /bin/mount -t $HDD3_TYPE -o defaults,noatime $HDD3_DEVICE $HDD3_MOUNTPOINT >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $HDD3_DEVICE $HDD3_MOUNTPOINT failed"
-
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
- ##########################################
-
- # Once the medium (be it a CF or SD card, or even a NFS drive) is mounted somewhere,
- # just call check_target with the mountpoint as parameter.
- # check_target searches the medium for a real filesystem and loop-images and
- # asks the user what to boot if there are several choices.
-
- # Check for a real fs and loop-images.
- check_target "$HDD3_MOUNTPOINT" >/dev/tty0
-
- # Done :)
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
diff --git a/packages/altboot/files/spitz/altboot-menu/99-ownScripts-example b/packages/altboot/files/spitz/altboot-menu/99-ownScripts-example
deleted file mode 100644
index 61c0645176..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/99-ownScripts-example
+++ /dev/null
@@ -1,81 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-
-# This file will teach you how to implement your own scripts while using existing altboot
-# code.
-
-# /sbin/init.altboot searches /etc/altboot-menu for scripts. It will only list scripts which
-# return a title when run with the "title" parameter.
-# Script which do not return a title will never be shown in the boot menu!
-#
-M_TITLE="altboot sample"
-
-# We can use that to deactivate certain scripts:
-exit 0
-
-# The "title" parameter is implemented at the end of this script so it will never be reached
-# and the script will simply be ignored by altboot.
-
-
-# The die() function aborts the boot if something goes wrong and sets STDIN / STDERR / STDOUT
-# correctly.
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- # altboot.func contains re-useable code. If you intend to use check_target (see below)
- # you must keep this line. If not, delete it.
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
-
- # The only thing you'll have to do is get your medium mounted.
- # The following lines mount a SD card on 2.4-series kernels on a Zaurus
-
- ##########################################
-
-
- echo -n "Mounting rootfs rw..." >/dev/tty0
- mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed"
-
- echo -n "Generating device files..." >/dev/tty0
- /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
-
-
- echo -n "Loading SD kernel module..."
- /sbin/insmod $SD_KERNEL_MODULE >/dev/null 2>&1 && echo ok || die "insmod failed"
-
- echo -n "Mounting $SD_MOUNTPOINT..." >/dev/tty0
- /bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT >/dev/null 2>&1 && echo ok >/dev/tty0|| die "/bin/mount -t auto -o defaults,noatime $SD_DEVICE $SD_MOUNTPOINT failed"
-
- echo ""
-
- # Give the SD and CF mounting some time. This is a must for SD
- sleep 2
- ##########################################
-
- # Once the medium (be it a CF or SD card, or even a NFS drive) is mounted somewhere,
- # just call check_target with the mountpoint as parameter.
- # check_target searches the medium for a real filesystem and loop-images and
- # asks the user what to boot if there are several choices.
-
- # Check for a real fs and loop-images.
- check_target "$SD_MOUNTPOINT" >/dev/tty0
-
- # Done :)
-
-}
-
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/spitz/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/spitz/altboot-menu/Advanced/40-bootNFS
deleted file mode 100644
index 6cac410019..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/Advanced/40-bootNFS
+++ /dev/null
@@ -1,97 +0,0 @@
-# !/bin/sh
-#
-# Copyright Matthias Hentges (c) 2005
-#
-# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the GPL)
-
-# FIXME: Make this work
-
-M_TITLE="Boot from NFS"
-
-die() {
- echo "ERROR: $1" >/dev/tty0
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
-}
-
-# This function is activated by init.altboot by calling this script with the "run" option
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- echo -n "Mounting rootfs rw..." >/dev/tty0
- mount -o remount,rw / >/dev/tty0 2>&1 && echo ok >/dev/tty0|| die "mount -o remount,rw / failed"
-
- echo -n "Generating device files..." >/dev/tty0
- /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
-
- echo -n "Mounting /proc..." >/dev/tty0
- mount /proc >/dev/tty0 2>&1 && echo ok >/dev/tty0 || echo failed
-
- # Needed for NFS
- /etc/init.d/portmap start >/dev/tty1 2>&1 || die "/etc/init.d/portmap start failed!"
-
- # For some reason NFS mounts hang if /e/i/networking is not run.
- # For the time beeing I'm to lazy to investigate ;)
- /etc/init.d/networking start || die "/etc/init.d/networking start failed!"
-
- sleep 2
-
- # After the PCMCIA service is started, an inserted WLAN card should automatically
- # activate itself.
- /etc/init.d/pcmcia start || die "/etc/init.d/pcmcia/start failed!"
-
- # Give WLAN time to login into the network
- echo "Waiting for WLAN..."
- sleep 8
-
- nfs_mounts="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $1}'`"
- nfs_mountpoints="`cat /etc/fstab | grep -v ^# | grep nfs | awk '{print $2}'`"
-
- if test "` echo "$nfs_mountpoints" |wc -l | tr -d " "`" -gt 1
- then
- echo -e "Please select your NFS root:\n"
-
- cnt=1
- for nfs_mount in $nfs_mountpoints
- do
- echo -e "\t[$cnt] $nfs_mount"
- let cnt=$cnt+1
- done
-
- echo ""
-
- while test -z "$selection"
- do
- echo -n "Boot NFS root: "
- read junk < /dev/tty1
-
- cnt=1
- for nfs_mount in $nfs_mounts
- do
- if test "$junk" = "$cnt"
- then
- selection="$nfs_mount"
- fi
- let cnt=$cnt+1
- done
-
- done
- else
- test -z "$nfs_mounts" && die "No NFS mounts configured in /etc/fstab!"
- selection="$nfs_mounts"
- fi
-
- mkdir -p /media/nfsroot || die "mkdir -p /media/nfsroot failed!"
-
- echo -n "Mounting NFS root..."
- mount -t nfs "$selection" /media/nfsroot && echo ok || die "mount -t nfs "$selection" /media/nfsroot failed!"
-
- check_target "/media/nfsroot"
-
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module "$2";;
-esac
-
diff --git a/packages/altboot/files/spitz/altboot-menu/Advanced/55-bin-sh b/packages/altboot/files/spitz/altboot-menu/Advanced/55-bin-sh
deleted file mode 100644
index 6db4adaf3a..0000000000
--- a/packages/altboot/files/spitz/altboot-menu/Advanced/55-bin-sh
+++ /dev/null
@@ -1,23 +0,0 @@
-# !/bin/sh
-M_TITLE="init=/bin/sh"
-
-
-run_module() {
-
- test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
-
- test "$ASK_PW_ON_BOOT" != "yes" && verify_master_pw >/dev/tty0
-
- echo -e "\nBoot system with 'exec /sbin/init 5'\n"
- while true
- do
- exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
- echo "WARNING: Shell was killed!"
- done
-}
-
-case "$1" in
-title) echo "$M_TITLE";;
-run) run_module;;
-esac
-
diff --git a/packages/altboot/files/borzoi/.mtn2git_empty b/packages/altboot/files/tosa/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/borzoi/.mtn2git_empty
+++ b/packages/altboot/files/tosa/.mtn2git_empty
diff --git a/packages/altboot/files/borzoi/altboot-2.4.cfg b/packages/altboot/files/tosa/altboot-2.4.cfg
index 8c404d4768..c463ca0a43 100644
--- a/packages/altboot/files/borzoi/altboot-2.4.cfg
+++ b/packages/altboot/files/tosa/altboot-2.4.cfg
@@ -9,12 +9,13 @@ SH_SHELL="/bin/sh"
IMAGE_PATH="boot-images"
IMAGE_TYPE="ext2"
FSCK_IMAGES="yes"
+ENABLE_IMAGECONF="yes"
SD_DEVICE="/dev/mmcda1"
-SD_KERNEL_MODULE="/lib/modules/2.4.20/kernel/drivers/block/sharp_mmcsd_m.o"
+SD_KERNEL_MODULE="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
USB_HOST_AVAILABLE="yes"
-USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
+USB_STORAGE_MODULES="usb_ohci_tc6393 usb-storage"
USB_STORAGE_PARTITION="/dev/sda1"
USB_STORAGE_WAIT="4"
diff --git a/packages/autoconf/autoconf-2.59/autoconf-x.patch b/packages/autoconf/autoconf-2.59/autoconf-x.patch
new file mode 100644
index 0000000000..596535b7d6
--- /dev/null
+++ b/packages/autoconf/autoconf-2.59/autoconf-x.patch
@@ -0,0 +1,36 @@
+Index: lib/autoconf/libs.m4
+===================================================================
+RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/libs.m4,v
+retrieving revision 1.13
+diff -p -u -r1.13 libs.m4
+--- autoconf-2.59/lib/autoconf/libs.m4 6 Sep 2005 15:34:06 -0000 1.13
++++ autoconf-2.59/lib/autoconf/libs.m4 18 Sep 2005 17:09:58 -0000
+@@ -265,13 +265,13 @@ ac_x_header_dirs='
+ /usr/openwin/share/include'
+
+ if test "$ac_x_includes" = no; then
+- # Guess where to find include files, by looking for Intrinsic.h.
++ # Guess where to find include files, by looking for Xlib.h.
+ # First, try using that file with no special directory specified.
+- AC_PREPROC_IFELSE([AC_LANG_SOURCE([@%:@include <X11/Intrinsic.h>])],
++ AC_PREPROC_IFELSE([AC_LANG_SOURCE([@%:@include <X11/Xlib.h>])],
+ [# We can compile using X headers with no special include directory.
+ ac_x_includes=],
+ [for ac_dir in $ac_x_header_dirs; do
+- if test -r "$ac_dir/X11/Intrinsic.h"; then
++ if test -r "$ac_dir/X11/Xlib.h"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+@@ -284,9 +284,9 @@ if test "$ac_x_libraries" = no; then
+ # Don't add to $LIBS permanently.
+ ac_save_LIBS=$LIBS
+- LIBS="-lXt $LIBS"
+- AC_LINK_IFELSE([AC_LANG_PROGRAM([@%:@include <X11/Intrinsic.h>],
+- [XtMalloc (0)])],
++ LIBS="-lX11 $LIBS"
++ AC_LINK_IFELSE([AC_LANG_PROGRAM([@%:@include <X11/Xlib.h>],
++ [XrmInitialize ()])],
+ [LIBS=$ac_save_LIBS
+ # We can link X programs with no special library path.
+ ac_x_libraries=],
diff --git a/packages/autoconf/autoconf_2.59.bb b/packages/autoconf/autoconf_2.59.bb
index 8636a77787..3cc962da01 100644
--- a/packages/autoconf/autoconf_2.59.bb
+++ b/packages/autoconf/autoconf_2.59.bb
@@ -6,7 +6,7 @@ SECTION = "devel"
DEPENDS += "m4-native"
RDEPENDS_${PN} = "m4 gnu-config"
RRECOMMENDS_${PN} = "automake"
-PR = "r3"
+PR = "r4"
SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.bz2 \
file://program_prefix.patch;patch=1 \
@@ -17,5 +17,6 @@ SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.bz2 \
file://autoconf259-update-configscripts.patch;patch=1 \
file://autoheader-nonfatal-warnings.patch;patch=1 \
file://sizeof_types.patch;patch=1 \
+ file://autoconf-x.patch;patch=1 \
${@['file://path_prog_fixes.patch;patch=1', ''][bb.data.inherits_class('native', d)]}"
inherit autotools
diff --git a/packages/base-files/base-files/borzoi/fstab b/packages/base-files/base-files/borzoi/fstab
index c693378d33..3d0e508dfd 100644
--- a/packages/base-files/base-files/borzoi/fstab
+++ b/packages/base-files/base-files/borzoi/fstab
@@ -19,7 +19,7 @@ tmpfs /media/ram tmpfs defaults 0 0
#
/dev/sda1 /media/usbhdd vfat noauto,umask=000,noatime,iocharset=utf8,codepage=932 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
-usbdevfs /proc/bus/usb usbdevfs noauto 0 0
+usbfs /proc/bus/usb usbfs noauto 0 0
#
# Harddisk
diff --git a/packages/base-files/base-files/spitz/fstab b/packages/base-files/base-files/spitz/fstab
index c693378d33..3d0e508dfd 100644
--- a/packages/base-files/base-files/spitz/fstab
+++ b/packages/base-files/base-files/spitz/fstab
@@ -19,7 +19,7 @@ tmpfs /media/ram tmpfs defaults 0 0
#
/dev/sda1 /media/usbhdd vfat noauto,umask=000,noatime,iocharset=utf8,codepage=932 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
-usbdevfs /proc/bus/usb usbdevfs noauto 0 0
+usbfs /proc/bus/usb usbfs noauto 0 0
#
# Harddisk
diff --git a/packages/base-files/base-files_3.0.14.bb b/packages/base-files/base-files_3.0.14.bb
index 0689cfa0f3..25cb1b1bbe 100644
--- a/packages/base-files/base-files_3.0.14.bb
+++ b/packages/base-files/base-files_3.0.14.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Miscellaneous files for the base system."
SECTION = "base"
PRIORITY = "required"
-PR = "r47"
+PR = "r48"
LICENSE = "GPL"
SRC_URI = " \
diff --git a/packages/bash/bash-3.0/bash-3.0-fixes.patch b/packages/bash/bash-3.0/bash-3.0-fixes.patch
new file mode 100644
index 0000000000..c2083b67a5
--- /dev/null
+++ b/packages/bash/bash-3.0/bash-3.0-fixes.patch
@@ -0,0 +1,1604 @@
+diff -urN orig-bash-3.0/bash30-001 bash-3.0/bash30-001
+--- orig-bash-3.0/bash30-001 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-001 2005-02-14 22:33:55.000000000 +0200
+@@ -0,0 +1,164 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-001
++
++Bug-Reported-by: Karlheinz Nolte <kn@k-nolte.de>
++Bug-Reference-ID: <20040801200058.GA3311@mars.home.k-nolte.de>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00009.html
++
++Bug-Description:
++
++ The following script triggers the segfault.
++ This was found by Costa Tsaousis the author of FireHOL.
++ He wrotes:
++
++ "I think I have found the bug. The script bellow crashes at the
++ third echo (UNSET). It seems to be a problem of the "unset" BASH
++ function when erasing arrays. It leaves something behind so that if
++ the array just unset is referenced, it produces a segmentation fault.
++ According to the documentation the first and the third expansions
++ should be exactly the same."
++
++Patch:
++
++*** ../bash-3.0/arrayfunc.c Fri Dec 19 00:03:09 2003
++--- arrayfunc.c Sun Aug 1 20:43:00 2004
++***************
++*** 612,616 ****
++
++ free (t);
++! return var;
++ }
++
++--- 612,616 ----
++
++ free (t);
++! return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var;
++ }
++
++
++*** ../bash-3.0/subst.c Sun Jul 4 13:56:13 2004
++--- subst.c Thu Aug 12 13:36:17 2004
++***************
++*** 4983,4987 ****
++ return -1;
++ }
++! else if ((v = find_variable (varname)) && array_p (v))
++ {
++ vtype = VT_ARRAYMEMBER;
++--- 5003,5007 ----
++ return -1;
++ }
++! else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v))
++ {
++ vtype = VT_ARRAYMEMBER;
++
++*** ../bash-3.0/variables.c Sun Jul 4 13:57:26 2004
++--- variables.c Wed Aug 4 15:28:04 2004
++***************
++*** 1420,1428 ****
++
++ # if defined (DEBUGGER)
++! v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, (att_invisible|att_noassign));
++! v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, (att_invisible|att_noassign));
++ # endif /* DEBUGGER */
++! v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, (att_invisible|att_noassign));
++! v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, (att_invisible|att_noassign));
++ #endif
++
++--- 1420,1428 ----
++
++ # if defined (DEBUGGER)
++! v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign);
++! v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign);
++ # endif /* DEBUGGER */
++! v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign);
++! v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign);
++ #endif
++
++***************
++*** 1600,1604 ****
++ old_var = find_variable (name);
++ if (old_var && local_p (old_var) && old_var->context == variable_context)
++! return (old_var);
++
++ was_tmpvar = old_var && tempvar_p (old_var);
++--- 1600,1607 ----
++ old_var = find_variable (name);
++ if (old_var && local_p (old_var) && old_var->context == variable_context)
++! {
++! VUNSETATTR (old_var, att_invisible);
++! return (old_var);
++! }
++
++ was_tmpvar = old_var && tempvar_p (old_var);
++*** ../bash-3.0/pcomplete.c Thu Jan 8 10:36:17 2004
++--- pcomplete.c Tue Aug 3 23:15:41 2004
++***************
++*** 864,867 ****
++--- 864,869 ----
++ v = convert_var_to_array (v);
++ v = assign_array_var_from_word_list (v, lwords);
+++
+++ VUNSETATTR (v, att_invisible);
++ return v;
++ }
++***************
++*** 1022,1025 ****
++--- 1024,1029 ----
++ if (array_p (v) == 0)
++ v = convert_var_to_array (v);
+++
+++ VUNSETATTR (v, att_invisible);
++
++ a = array_cell (v);
++*** ../bash-3.0/array.c Thu May 6 08:24:13 2004
++--- array.c Wed Aug 25 15:50:42 2004
++***************
++*** 452,456 ****
++ array_dispose_element(new);
++ free(element_value(ae));
++! ae->value = savestring(v);
++ return(0);
++ } else if (element_index(ae) > i) {
++--- 454,458 ----
++ array_dispose_element(new);
++ free(element_value(ae));
++! ae->value = v ? savestring(v) : (char *)NULL;
++ return(0);
++ } else if (element_index(ae) > i) {
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 0
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 1
++
++ #endif /* _PATCHLEVEL_H_ */
++*** ../bash-3.0/tests/dbg-support.tests Tue Mar 25 15:33:03 2003
++--- tests/dbg-support.tests Tue Aug 3 23:09:29 2004
++***************
++*** 63,68 ****
++ trap 'print_return_trap $LINENO' RETURN
++
++! # Funcname is now an array. Vanilla Bash 2.05 doesn't have FUNCNAME array.
++! echo "FUNCNAME" ${FUNCNAME[0]}
++
++ # We should trace into the below.
++--- 63,68 ----
++ trap 'print_return_trap $LINENO' RETURN
++
++! # Funcname is now an array, but you still can't see it outside a function
++! echo "FUNCNAME" ${FUNCNAME[0]:-main}
++
++ # We should trace into the below.
+diff -urN orig-bash-3.0/bash30-002 bash-3.0/bash30-002
+--- orig-bash-3.0/bash30-002 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-002 2005-02-14 22:33:55.000000000 +0200
+@@ -0,0 +1,66 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-002
++
++Bug-Reported-by: "Ralf S. Engelschall" <rse@engelschall.com>
++Bug-Reference-ID: <20040728082038.GA31398@engelschall.com>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00262.html
++
++Bug-Description:
++
++After upgrading the OpenPKG "bash" package to 3.0, we had to discover
++that the prompt handling on Bash 3.0 / Readline 5.0 is broken if a
++multiline prompt (a string containing newlines) is used. The effect is
++that on the first input line (where the last line of the prompt is the
++prefix) the input line is wrapped N characters before the last column
++where N seems to be exactly the length (including newlines) of the
++prompt ($PS1) minus the characters on the last line of the prompt.
++
++Patch:
++
++*** ../bash-3.0/lib/readline/display.c Thu May 27 22:57:51 2004
++--- lib/readline/display.c Wed Jul 28 13:48:04 2004
++***************
++*** 352,356 ****
++ &prompt_last_invisible,
++ (int *)NULL,
++! (int *)NULL);
++ c = *t; *t = '\0';
++ /* The portion of the prompt string up to and including the
++--- 352,356 ----
++ &prompt_last_invisible,
++ (int *)NULL,
++! &prompt_physical_chars);
++ c = *t; *t = '\0';
++ /* The portion of the prompt string up to and including the
++***************
++*** 359,363 ****
++ (int *)NULL,
++ &prompt_invis_chars_first_line,
++! &prompt_physical_chars);
++ *t = c;
++ return (prompt_prefix_length);
++--- 359,363 ----
++ (int *)NULL,
++ &prompt_invis_chars_first_line,
++! (int *)NULL);
++ *t = c;
++ return (prompt_prefix_length);
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 1
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 2
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-003 bash-3.0/bash30-003
+--- orig-bash-3.0/bash30-003 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-003 2005-02-14 22:33:56.000000000 +0200
+@@ -0,0 +1,124 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-003
++
++Bug-Reported-by: Egmont Koblinger <egmont@uhulinux.hu>
++Bug-Reference-ID: <Pine.LNX.4.58L0.0407290044500.12603@sziami.cs.bme.hu>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00279.html
++
++Bug-Description:
++
++Bash no longer accepts the `trap signum' syntax when in POSIX mode. This
++patch restores a measure of backwards compatibility.
++
++Patch:
++
++*** ../bash-3.0/builtins/trap.def Thu May 27 22:26:19 2004
++--- builtins/trap.def Thu Aug 5 08:55:43 2004
++***************
++*** 24,28 ****
++ $BUILTIN trap
++ $FUNCTION trap_builtin
++! $SHORT_DOC trap [-lp] [[arg] signal_spec ...]
++ The command ARG is to be read and executed when the shell receives
++ signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC
++--- 24,28 ----
++ $BUILTIN trap
++ $FUNCTION trap_builtin
++! $SHORT_DOC trap [-lp] [arg signal_spec ...]
++ The command ARG is to be read and executed when the shell receives
++ signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC
++***************
++*** 88,92 ****
++ WORD_LIST *list;
++ {
++! int list_signal_names, display, result, opt;
++
++ list_signal_names = display = 0;
++--- 88,92 ----
++ WORD_LIST *list;
++ {
++! int list_signal_names, display, result, opt, first_signal;
++
++ list_signal_names = display = 0;
++***************
++*** 119,130 ****
++ {
++ char *first_arg;
++! int operation, sig;
++
++ operation = SET;
++ first_arg = list->word->word;
++ /* When in posix mode, the historical behavior of looking for a
++ missing first argument is disabled. To revert to the original
++ signal handling disposition, use `-' as the first argument. */
++! if (posixly_correct == 0 && first_arg && *first_arg &&
++ (*first_arg != '-' || first_arg[1]) &&
++ signal_object_p (first_arg, opt) && list->next == 0)
++--- 119,135 ----
++ {
++ char *first_arg;
++! int operation, sig, first_signal;
++
++ operation = SET;
++ first_arg = list->word->word;
+++ first_signal = first_arg && *first_arg && all_digits (first_arg) && signal_object_p (first_arg, opt);
+++
+++ /* Backwards compatibility */
+++ if (first_signal)
+++ operation = REVERT;
++ /* When in posix mode, the historical behavior of looking for a
++ missing first argument is disabled. To revert to the original
++ signal handling disposition, use `-' as the first argument. */
++! else if (posixly_correct == 0 && first_arg && *first_arg &&
++ (*first_arg != '-' || first_arg[1]) &&
++ signal_object_p (first_arg, opt) && list->next == 0)
++*** ../bash-3.0/doc/bashref.texi Sat Jun 26 14:26:07 2004
++--- doc/bashref.texi Fri Aug 27 12:33:46 2004
++***************
++*** 5954,5958 ****
++ The @code{trap} builtin doesn't check the first argument for a possible
++ signal specification and revert the signal handling to the original
++! disposition if it is. If users want to reset the handler for a given
++ signal to the original disposition, they should use @samp{-} as the
++ first argument.
++--- 5967,5972 ----
++ The @code{trap} builtin doesn't check the first argument for a possible
++ signal specification and revert the signal handling to the original
++! disposition if it is, unless that argument consists solely of digits and
++! is a valid signal number. If users want to reset the handler for a given
++ signal to the original disposition, they should use @samp{-} as the
++ first argument.
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 2
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 3
++
++ #endif /* _PATCHLEVEL_H_ */
++*** ../bash-3.0/tests/errors.right Thu May 27 22:26:03 2004
++--- tests/errors.right Sat Aug 7 22:35:10 2004
++***************
++*** 86,90 ****
++ ./errors.tests: line 216: trap: NOSIG: invalid signal specification
++ ./errors.tests: line 219: trap: -s: invalid option
++! trap: usage: trap [-lp] [[arg] signal_spec ...]
++ ./errors.tests: line 225: return: can only `return' from a function or sourced script
++ ./errors.tests: line 229: break: 0: loop count out of range
++--- 86,90 ----
++ ./errors.tests: line 216: trap: NOSIG: invalid signal specification
++ ./errors.tests: line 219: trap: -s: invalid option
++! trap: usage: trap [-lp] [arg signal_spec ...]
++ ./errors.tests: line 225: return: can only `return' from a function or sourced script
++ ./errors.tests: line 229: break: 0: loop count out of range
+diff -urN orig-bash-3.0/bash30-004 bash-3.0/bash30-004
+--- orig-bash-3.0/bash30-004 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-004 2005-02-14 22:33:56.000000000 +0200
+@@ -0,0 +1,145 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-004
++
++Bug-Reported-by: Stephane Chazelas <stephane_chazelas@yahoo.fr>
++Bug-Reference-ID: <20040902131957.GC1860@frhdtmp102861.morse.corp.wan>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00291.html
++
++Bug-Description:
++
++Calculation of lengths and offsets for parameter string length and substring
++expansion does not correctly account for multibyte characters.
++
++Patch:
++
++ *** ../bash-3.0/subst.c Sun Jul 4 13:56:13 2004
++--- subst.c Thu Aug 12 13:36:17 2004
++***************
++*** 4692,4695 ****
++--- 4692,4715 ----
++ }
++
+++ #if defined (HANDLE_MULTIBYTE)
+++ size_t
+++ mbstrlen (s)
+++ const char *s;
+++ {
+++ size_t clen, nc;
+++ mbstate_t mbs;
+++
+++ nc = 0;
+++ memset (&mbs, 0, sizeof (mbs));
+++ while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0))
+++ {
+++ s += clen;
+++ nc++;
+++ }
+++ return nc;
+++ }
+++ #endif
+++
+++
++ /* Handle the parameter brace expansion that requires us to return the
++ length of a parameter. */
++***************
++*** 4747,4758 ****
++ {
++ t = get_dollar_var_value (arg_index);
++! number = STRLEN (t);
++ FREE (t);
++ }
++ #if defined (ARRAY_VARS)
++! else if ((var = find_variable (name + 1)) && array_p (var))
++ {
++ t = array_reference (array_cell (var), 0);
++! number = STRLEN (t);
++ }
++ #endif
++--- 4767,4778 ----
++ {
++ t = get_dollar_var_value (arg_index);
++! number = MB_STRLEN (t);
++ FREE (t);
++ }
++ #if defined (ARRAY_VARS)
++! else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var))
++ {
++ t = array_reference (array_cell (var), 0);
++! number = MB_STRLEN (t);
++ }
++ #endif
++***************
++*** 4767,4771 ****
++ dispose_words (list);
++
++! number = STRLEN (t);
++ FREE (t);
++ }
++--- 4787,4791 ----
++ dispose_words (list);
++
++! number = MB_STRLEN (t);
++ FREE (t);
++ }
++***************
++*** 4872,4876 ****
++ case VT_VARIABLE:
++ case VT_ARRAYMEMBER:
++! len = strlen (value);
++ break;
++ case VT_POSPARMS:
++--- 4892,4896 ----
++ case VT_VARIABLE:
++ case VT_ARRAYMEMBER:
++! len = MB_STRLEN (value);
++ break;
++ case VT_POSPARMS:
++*** ../bash-3.0/include/shmbutil.h Mon Apr 19 09:59:42 2004
++--- include/shmbutil.h Thu Sep 2 15:20:47 2004
++***************
++*** 32,35 ****
++--- 32,37 ----
++ extern size_t xdupmbstowcs __P((wchar_t **, char ***, const char *));
++
+++ extern size_t mbstrlen __P((const char *));
+++
++ extern char *xstrchr __P((const char *, int));
++
++***************
++*** 39,42 ****
++--- 41,47 ----
++ #endif
++
+++ #define MBSLEN(s) (((s) && (s)[0]) ? ((s)[1] ? mbstrlen (s) : 1) : 0)
+++ #define MB_STRLEN(s) ((MB_CUR_MAX > 1) ? MBSLEN (s) : STRLEN (s))
+++
++ #else /* !HANDLE_MULTIBYTE */
++
++***************
++*** 54,57 ****
++--- 59,64 ----
++ #define MB_NULLWCH(x) (0)
++ #endif
+++
+++ #define MB_STRLEN(s) (STRLEN(s))
++
++ #endif /* !HANDLE_MULTIBYTE */
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 3
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 4
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-005 bash-3.0/bash30-005
+--- orig-bash-3.0/bash30-005 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-005 2005-02-14 22:33:57.000000000 +0200
+@@ -0,0 +1,63 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-005
++
++Bug-Reported-by: schwab@suse.de
++Bug-Reference-ID: <20040801085535.E83D41DB3FFE9@sykes.suse.de>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00004.html
++
++Bug-Description:
++
++Moving upwards in the history (with previous-history) and back again
++clobbers the last history line.
++
++Patch:
++
++*** ../bash-3.0/lib/readline/misc.c Wed Jul 7 08:56:32 2004
++--- lib/readline/misc.c Sat Aug 7 22:38:53 2004
++***************
++*** 277,286 ****
++ _rl_saved_line_for_history->data = (char *)rl_undo_list;
++ }
++- else if (STREQ (rl_line_buffer, _rl_saved_line_for_history->line) == 0)
++- {
++- free (_rl_saved_line_for_history->line);
++- _rl_saved_line_for_history->line = savestring (rl_line_buffer);
++- _rl_saved_line_for_history->data = (char *)rl_undo_list; /* XXX possible memleak */
++- }
++
++ return 0;
++--- 277,280 ----
++*** ../bash-3.0/lib/readline/vi_mode.c Tue Jul 13 14:08:27 2004
++--- lib/readline/vi_mode.c Tue Aug 17 00:12:09 2004
++***************
++*** 273,280 ****
++--- 273,282 ----
++ {
++ case '?':
+++ _rl_free_saved_history_line ();
++ rl_noninc_forward_search (count, key);
++ break;
++
++ case '/':
+++ _rl_free_saved_history_line ();
++ rl_noninc_reverse_search (count, key);
++ break;
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 4
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 5
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-006 bash-3.0/bash30-006
+--- orig-bash-3.0/bash30-006 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-006 2005-02-14 22:33:57.000000000 +0200
+@@ -0,0 +1,165 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-006
++
++Bug-Reported-by: alexander@skwar.name
++ Tomohiro KUBOTA <debian@tmail.plala.or.jp>
++Bug-Reference-ID: <20040801124721.C69B8A2547A@server.bei.digitalprojects.com>
++ <16688.41450.433668.480445@gargle.gargle.HOWL>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00006.html
++ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=257540
++
++Bug-Description:
++
++Prompts with multibyte characters or invisible characters following a line
++wrap are displayed incorrectly.
++
++Patch:
++
++*** ../bash-3.0/lib/readline/display.c Thu May 27 22:57:51 2004
++--- lib/readline/display.c Mon Aug 30 11:55:02 2004
++***************
++*** 202,206 ****
++ {
++ char *r, *ret, *p;
++! int l, rl, last, ignoring, ninvis, invfl, ind, pind, physchars;
++
++ /* Short-circuit if we can. */
++--- 202,206 ----
++ {
++ char *r, *ret, *p;
++! int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
++
++ /* Short-circuit if we can. */
++***************
++*** 223,226 ****
++--- 223,227 ----
++
++ invfl = 0; /* invisible chars in first line of prompt */
+++ invflset = 0; /* we only want to set invfl once */
++
++ for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++)
++***************
++*** 250,254 ****
++ *r++ = *p++;
++ if (!ignoring)
++! rl += ind - pind;
++ else
++ ninvis += ind - pind;
++--- 251,258 ----
++ *r++ = *p++;
++ if (!ignoring)
++! {
++! rl += ind - pind;
++! physchars += _rl_col_width (pmt, pind, ind);
++! }
++ else
++ ninvis += ind - pind;
++***************
++*** 260,273 ****
++ *r++ = *p;
++ if (!ignoring)
++! rl++; /* visible length byte counter */
++ else
++ ninvis++; /* invisible chars byte counter */
++ }
++
++! if (rl >= _rl_screenwidth)
++! invfl = ninvis;
++!
++! if (ignoring == 0)
++! physchars++;
++ }
++ }
++--- 264,280 ----
++ *r++ = *p;
++ if (!ignoring)
++! {
++! rl++; /* visible length byte counter */
++! physchars++;
++! }
++ else
++ ninvis++; /* invisible chars byte counter */
++ }
++
++! if (invflset == 0 && rl >= _rl_screenwidth)
++! {
++! invfl = ninvis;
++! invflset = 1;
++! }
++ }
++ }
++***************
++*** 418,422 ****
++ register char *line;
++ int c_pos, inv_botlin, lb_botlin, lb_linenum;
++! int newlines, lpos, temp, modmark;
++ char *prompt_this_line;
++ #if defined (HANDLE_MULTIBYTE)
++--- 425,429 ----
++ register char *line;
++ int c_pos, inv_botlin, lb_botlin, lb_linenum;
++! int newlines, lpos, temp, modmark, n0, num;
++ char *prompt_this_line;
++ #if defined (HANDLE_MULTIBYTE)
++***************
++*** 574,577 ****
++--- 581,585 ----
++ #if defined (HANDLE_MULTIBYTE)
++ memset (_rl_wrapped_line, 0, vis_lbsize);
+++ num = 0;
++ #endif
++
++***************
++*** 592,596 ****
++--- 600,619 ----
++ prompts that exceed two physical lines?
++ Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
+++ #if defined (HANDLE_MULTIBYTE)
+++ n0 = num;
+++ temp = local_prompt ? strlen (local_prompt) : 0;
+++ while (num < temp)
+++ {
+++ if (_rl_col_width (local_prompt, n0, num) > _rl_screenwidth)
+++ {
+++ num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
+++ break;
+++ }
+++ num++;
+++ }
+++ temp = num +
+++ #else
++ temp = ((newlines + 1) * _rl_screenwidth) +
+++ #endif /* !HANDLE_MULTIBYTE */
++ ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line
++ : ((newlines == 1) ? wrap_offset : 0))
++***************
++*** 598,602 ****
++--- 621,629 ----
++
++ inv_lbreaks[++newlines] = temp;
+++ #if defined (HANDLE_MULTIBYTE)
+++ lpos -= _rl_col_width (local_prompt, n0, num);
+++ #else
++ lpos -= _rl_screenwidth;
+++ #endif
++ }
++
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 5
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 6
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-007 bash-3.0/bash30-007
+--- orig-bash-3.0/bash30-007 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-007 2005-02-14 22:33:58.000000000 +0200
+@@ -0,0 +1,78 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-007
++
++Bug-Reported-by: Oliver Kiddle <okiddle@yahoo.co.uk>
++ Tim Waugh <twaugh@redhat.com>
++Bug-Reference-ID: <10454.1091313247@athlon>
++ <20040804100140.GX8175@redhat.com>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00313.html
++ http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00056.html
++
++Bug-Description:
++
++Two bugs:
++
++How does it decide what characters are allowed. The following really
++looks like a bug to me:
++$ echo {<C4>..D}
++That's accepted and produces output that seems to wrap round to ^A and
++then goes up to D. Note that I'm using an ISO-8859-1 locale. If that
++works at all, it should surely descend.
++
++This short script:
++
++var=baz
++echo foo{bar,${var}.}
++echo foo{bar,${var}}
++
++gives the following output with bash-3.0:
++
++./test: line 2: foo${var.}: bad substitution
++foobar} foobaz
++
++Patch:
++
++*** ../bash-3.0/braces.c Thu Dec 4 11:09:52 2003
++--- braces.c Wed Aug 4 14:34:33 2004
++***************
++*** 341,346 ****
++ if (lhs_t == ST_CHAR)
++ {
++! lhs_v = lhs[0];
++! rhs_v = rhs[0];
++ }
++ else
++--- 341,346 ----
++ if (lhs_t == ST_CHAR)
++ {
++! lhs_v = (unsigned char)lhs[0];
++! rhs_v = (unsigned char)rhs[0];
++ }
++ else
++***************
++*** 403,406 ****
++--- 403,407 ----
++ pass_next = 1;
++ i++;
+++ level++;
++ continue;
++ }
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 6
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 7
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-008 bash-3.0/bash30-008
+--- orig-bash-3.0/bash30-008 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-008 2005-02-14 22:33:58.000000000 +0200
+@@ -0,0 +1,55 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-008
++
++Bug-Reported-by: uberlord@rsm.demon.co.uk
++Bug-Reference-ID: <1092327965.4233.1.camel@uberlaptop.ubernet>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00144.html
++
++Bug-Description:
++
++> Description:
++> Bash 3 breaks array expansion
++>
++> Repeat-By:
++> #!/bin/bash
++> x=(one two)
++> echo ${x[@]:1}
++> # prints nothing in bash 3
++> # prints two in bash 2
++
++Patch:
++
++*** ../bash-3.0/subst.c Sun Jul 4 13:56:13 2004
++--- subst.c Thu Aug 12 13:36:17 2004
++***************
++*** 4892,4896 ****
++ *e1p += len;
++
++! if (*e1p >= len || *e1p < 0)
++ return (-1);
++
++--- 4912,4916 ----
++ *e1p += len;
++
++! if (*e1p > len || *e1p < 0)
++ return (-1);
++
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 7
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 8
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-009 bash-3.0/bash30-009
+--- orig-bash-3.0/bash30-009 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-009 2005-02-14 22:33:58.000000000 +0200
+@@ -0,0 +1,111 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-009
++
++Bug-Reported-by: Tim Waugh <twaugh@redhat.com>
++Bug-Reference-ID: <20040810083805.GT2177@redhat.com>
++Bug-Reference-URL: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=129526b
++ http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00116.html
++
++Bug-Description:
++
++-->
++Steps to Reproduce:
++1. Launch a bash shell
++2. Set editing mode to 'vi' with 'set -o vi'
++3. Type any command, but don't hit return
++4. Enter vi-command mode by hitting the escape key
++5. Go to the end of line with the '$' command
++6. Type 'r' to change the last character
++7. Type any character (other than what the character already is)
++
++The last two characters are inexplicably swapped
++after the last character is changed.
++<--
++
++Patch:
++
++*** ../bash-3.0/lib/readline/vi_mode.c Tue Jul 13 14:08:27 2004
++--- lib/readline/vi_mode.c Tue Aug 17 00:12:09 2004
++***************
++*** 691,695 ****
++ wchar_t wc;
++ char mb[MB_LEN_MAX+1];
++! int mblen;
++ mbstate_t ps;
++
++--- 693,697 ----
++ wchar_t wc;
++ char mb[MB_LEN_MAX+1];
++! int mblen, p;
++ mbstate_t ps;
++
++***************
++*** 714,722 ****
++ if (wc)
++ {
++ mblen = wcrtomb (mb, wc, &ps);
++ if (mblen >= 0)
++ mb[mblen] = '\0';
++ rl_begin_undo_group ();
++! rl_delete (1, 0);
++ rl_insert_text (mb);
++ rl_end_undo_group ();
++--- 716,727 ----
++ if (wc)
++ {
+++ p = rl_point;
++ mblen = wcrtomb (mb, wc, &ps);
++ if (mblen >= 0)
++ mb[mblen] = '\0';
++ rl_begin_undo_group ();
++! rl_vi_delete (1, 0);
++! if (rl_point < p) /* Did we retreat at EOL? */
++! rl_point++; /* XXX - should we advance more than 1 for mbchar? */
++ rl_insert_text (mb);
++ rl_end_undo_group ();
++***************
++*** 1311,1320 ****
++ #if defined (HANDLE_MULTIBYTE)
++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
++! while (_rl_insert_char (1, c))
++! {
++! RL_SETSTATE (RL_STATE_MOREINPUT);
++! c = rl_read_key ();
++! RL_UNSETSTATE (RL_STATE_MOREINPUT);
++! }
++ else
++ #endif
++--- 1316,1329 ----
++ #if defined (HANDLE_MULTIBYTE)
++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
++! {
++! if (rl_point < p) /* Did we retreat at EOL? */
++! rl_point++;
++! while (_rl_insert_char (1, c))
++! {
++! RL_SETSTATE (RL_STATE_MOREINPUT);
++! c = rl_read_key ();
++! RL_UNSETSTATE (RL_STATE_MOREINPUT);
++! }
++! }
++ else
++ #endif
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 8
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 9
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-010 bash-3.0/bash30-010
+--- orig-bash-3.0/bash30-010 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-010 2005-02-14 22:33:59.000000000 +0200
+@@ -0,0 +1,116 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-010
++
++Bug-Reported-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
++Bug-Reference-ID: <E1Bo8Sq-0004u5-00@bouh>
++Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=261142
++
++Bug-Description:
++
++When trying to auto-complete ~/../``/, I just get:
++malloc: bashline.c:1340: assertion botched
++free: start and end chunk sizes differ
++last command: kill -9 %2
++Stopping myself...
++
++
++Patch:
++
++*** ../bash-3.0/bashline.c Mon Jul 5 23:22:12 2004
++--- bashline.c Thu Sep 2 16:00:12 2004
++***************
++*** 101,104 ****
++--- 101,105 ----
++
++ /* Helper functions for Readline. */
+++ static int bash_directory_expansion __P((char **));
++ static int bash_directory_completion_hook __P((char **));
++ static int filename_completion_ignore __P((char **));
++***************
++*** 293,297 ****
++ at = strchr (rl_completer_word_break_characters, '@');
++ if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
++! return;
++
++ /* We have something to do. Do it. */
++--- 294,298 ----
++ at = strchr (rl_completer_word_break_characters, '@');
++ if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0))
++! return old_value;
++
++ /* We have something to do. Do it. */
++***************
++*** 1407,1414 ****
++ if (*hint_text == '~')
++ {
++! int l, tl, vl;
++ vl = strlen (val);
++ tl = strlen (hint_text);
++ l = vl - hint_len; /* # of chars added */
++ temp = (char *)xmalloc (l + 2 + tl);
++ strcpy (temp, hint_text);
++--- 1408,1424 ----
++ if (*hint_text == '~')
++ {
++! int l, tl, vl, dl;
++! char *rd;
++ vl = strlen (val);
++ tl = strlen (hint_text);
+++ #if 0
++ l = vl - hint_len; /* # of chars added */
+++ #else
+++ rd = savestring (filename_hint);
+++ bash_directory_expansion (&rd);
+++ dl = strlen (rd);
+++ l = vl - dl; /* # of chars added */
+++ free (rd);
+++ #endif
++ temp = (char *)xmalloc (l + 2 + tl);
++ strcpy (temp, hint_text);
++***************
++*** 2188,2191 ****
++--- 2198,2222 ----
++ }
++
+++ /* Simulate the expansions that will be performed by
+++ rl_filename_completion_function. This must be called with the address of
+++ a pointer to malloc'd memory. */
+++ static int
+++ bash_directory_expansion (dirname)
+++ char **dirname;
+++ {
+++ char *d;
+++
+++ d = savestring (*dirname);
+++
+++ if (rl_directory_rewrite_hook)
+++ (*rl_directory_rewrite_hook) (&d);
+++
+++ if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d))
+++ {
+++ free (*dirname);
+++ *dirname = d;
+++ }
+++ }
+++
++ /* Handle symbolic link references and other directory name
++ expansions while hacking completion. */
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 9
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 10
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-011 bash-3.0/bash30-011
+--- orig-bash-3.0/bash30-011 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-011 2005-02-14 22:33:59.000000000 +0200
+@@ -0,0 +1,71 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-011
++
++Bug-Reported-by: Egmont Koblinger <egmont@uhulinux.hu>
++Bug-Reference-ID: <Pine.LNX.4.58L0.0407282151140.8088@sziami.cs.bme.hu>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00277.html
++
++Bug-Description:
++
++I've just upgraded to readline 5.0 and bash 3.0 and tried them with UTF-8
++encoding. I found line editing to be quite buggy:
++
++I type an accented letter, let's say <E1>. Then <E1> appears. I press the left
++arrow, the cursor goes back, it is now over <E1>. I press <E9>. Now <E9><E1> is
++visible, which is correct, but the cursor is past the two letters, though
++it should be over <E1>. Here only the first Left arrow takes affect, moves
++the cursor over <E1>, but the 2nd time I press Left, it just beeps, doesn't
++move to the first char (<E9>). Now a Right arrow doesn't move the cursor, but
++causes further Left and Right arrows to work as expected. To go on,
++similar bug occurs nearly every time that I insert an accented letter
++before or amongs other ones (but not at the end of the line). When the
++command line has about ten or twenty accented letters (and no or hardly
++any non-accented ones), line editing becomes a total chaos, where
++sometimes inserting another accented letter causes the cursor to jump many
++characters to the right, and pressing the Left arrow sometimes causes the
++cursor to jump back lots of characters at once.
++
++Patch:
++
++*** ../bash-3.0/lib/readline/mbutil.c Wed Jan 14 09:44:52 2004
++--- lib/readline/mbutil.c Wed Aug 18 22:25:57 2004
++***************
++*** 127,135 ****
++ {
++ tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
++! while (wcwidth (wc) == 0)
++ {
++ point += tmp;
++ tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
++! if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2))
++ break;
++ }
++--- 127,135 ----
++ {
++ tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
++! while (tmp > 0 && wcwidth (wc) == 0)
++ {
++ point += tmp;
++ tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
++! if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
++ break;
++ }
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 10
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 11
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-012 bash-3.0/bash30-012
+--- orig-bash-3.0/bash30-012 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-012 2005-02-14 22:34:00.000000000 +0200
+@@ -0,0 +1,56 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-012
++
++Bug-Reported-by: ben@ncipher.com
++Bug-Reference-ID: <E1BxQYe-0002p1-00@berdoo.ncipher.com>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00215.html
++
++Bug-Description:
++
++When using the pipefail option, the following command:
++ echo foo | false
++produces an exit status of 0, ignoring the exit status of false.
++
++Patch:
++
++*** ../bash-3.0/jobs.c Fri Apr 23 16:28:25 2004
++--- jobs.c Wed Aug 18 11:15:07 2004
++***************
++*** 1779,1784 ****
++ {
++ fail = 0;
++! for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next)
++! if (p->status != EXECUTION_SUCCESS) fail = p->status;
++ return fail;
++ }
++--- 1779,1789 ----
++ {
++ fail = 0;
++! p = jobs[job]->pipe;
++! do
++! {
++! if (p->status != EXECUTION_SUCCESS) fail = p->status;
++! p = p->next;
++! }
++! while (p != jobs[job]->pipe);
++ return fail;
++ }
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 11
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 12
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-013 bash-3.0/bash30-013
+--- orig-bash-3.0/bash30-013 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-013 2005-02-14 22:34:00.000000000 +0200
+@@ -0,0 +1,86 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-013
++
++Bug-Reported-by: Len Lattanzi <llattanzi@apple.com>
++Bug-Reference-ID: <556CE1CE-E1AC-11D8-A2D9-00039383EC60@apple.com>
++Bug-Reference-URL:
++
++Bug-Description:
++
++vi-mode filename completion/glob expansion should understand and perform
++tilde expansion.
++
++Patch:
++
++*** ../bash-3.0/bashline.c Mon Jul 5 23:22:12 2004
++--- bashline.c Thu Sep 2 16:00:12 2004
++***************
++*** 2514,2518 ****
++ static int ind;
++ int glen;
++! char *ret;
++
++ if (state == 0)
++--- 2545,2549 ----
++ static int ind;
++ int glen;
++! char *ret, *ttext;
++
++ if (state == 0)
++***************
++*** 2524,2538 ****
++ FREE (globtext);
++
++ if (rl_explicit_arg)
++ {
++! globorig = savestring (text);
++! glen = strlen (text);
++ globtext = (char *)xmalloc (glen + 2);
++! strcpy (globtext, text);
++ globtext[glen] = '*';
++ globtext[glen+1] = '\0';
++ }
++ else
++! globtext = globorig = savestring (text);
++
++ matches = shell_glob_filename (globtext);
++--- 2555,2574 ----
++ FREE (globtext);
++
+++ ttext = bash_tilde_expand (text, 0);
+++
++ if (rl_explicit_arg)
++ {
++! globorig = savestring (ttext);
++! glen = strlen (ttext);
++ globtext = (char *)xmalloc (glen + 2);
++! strcpy (globtext, ttext);
++ globtext[glen] = '*';
++ globtext[glen+1] = '\0';
++ }
++ else
++! globtext = globorig = savestring (ttext);
++!
++! if (ttext != text)
++! free (ttext);
++
++ matches = shell_glob_filename (globtext);
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 12
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 13
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-014 bash-3.0/bash30-014
+--- orig-bash-3.0/bash30-014 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-014 2005-02-14 22:34:01.000000000 +0200
+@@ -0,0 +1,52 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-014
++
++Bug-Reported-by: agriffis@gentoo.org
++Bug-Reference-ID: <20040929024759.A437FEB1E0@piment.flatmonk.org>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-09/msg00250.html
++
++Bug-Description:
++
++ #
++ # BROKEN case: variable with braces inside quotes
++ #
++
++ $ D=W
++ $ echo "${D}"{illy,onka} => W{illy,onka}
++
++Patch:
++
++*** ../bash-3.0-patched/braces.c Wed Sep 8 11:07:53 2004
++--- braces.c Fri Sep 17 18:42:36 2004
++***************
++*** 403,407 ****
++ pass_next = 1;
++ i++;
++! level++;
++ continue;
++ }
++--- 403,408 ----
++ pass_next = 1;
++ i++;
++! if (quoted == 0)
++! level++;
++ continue;
++ }
++*** ../bash-3.0-patched/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 13
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 14
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-015 bash-3.0/bash30-015
+--- orig-bash-3.0/bash30-015 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-015 2005-02-14 22:34:01.000000000 +0200
+@@ -0,0 +1,56 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-015
++
++Bug-Reported-by: opengeometry@yahoo.ca
++Bug-Reference-ID: <200410202012.i9KKCTEB001860@node1.opengeometry.net>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-10/msg00297.html
++
++Bug-Description:
++
++ Shell variable can start with number and can even be printed with
++ 'declare', as in
++ 1=aaa
++ 1a=bbb
++ declare -p 1 1a
++
++ But, they can't be removed, as in
++ unset 1 1a --> ...: not a valid identifier
++
++ Bash-2.05b correctly gives me error, however.
++
++Patch:
++
++*** ../bash-3.0-patched/general.c Wed Apr 14 23:20:13 2004
++--- general.c Wed Oct 20 16:59:59 2004
++***************
++*** 268,272 ****
++
++ #if defined (ARRAY_VARS)
++! if ((legal_variable_starter (c) == 0) && (flags && c != '[')) /* ] */
++ #else
++ if (legal_variable_starter (c) == 0)
++--- 268,272 ----
++
++ #if defined (ARRAY_VARS)
++! if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */
++ #else
++ if (legal_variable_starter (c) == 0)
++
++*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001
++--- patchlevel.h Thu Sep 2 15:04:32 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 14
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 15
++
++ #endif /* _PATCHLEVEL_H_ */
+diff -urN orig-bash-3.0/bash30-016 bash-3.0/bash30-016
+--- orig-bash-3.0/bash30-016 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-016 2005-02-14 22:34:02.000000000 +0200
+@@ -0,0 +1,84 @@
++ BASH PATCH REPORT
++ =================
++
++Bash-Release: 3.0
++Patch-ID: bash30-016
++
++Bug-Reported-by: William Park <opengeometry@yahoo.ca>
++Bug-Reference-ID: <200411012217.iA1MHxL7031818@node1.opengeometry.net>
++Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-11/msg00017.html
++
++Bug-Description:
++
++ Offset from the end of array in ${var: -n} is still off by 1. Eg.
++ x=( {0..9} )
++ echo ${x[*]: -1} --> 8 9
++
++Patch:
++
++*** ../bash-3.0-patched/subst.c Wed Sep 8 11:07:55 2004
++--- subst.c Tue Nov 9 16:26:59 2004
++***************
++*** 4900,4905 ****
++ case VT_ARRAYVAR:
++ a = (ARRAY *)value;
++! /* For arrays, the first value deals with array indices. */
++! len = array_max_index (a); /* arrays index from 0 to n - 1 */
++ break;
++ #endif
++--- 4900,4906 ----
++ case VT_ARRAYVAR:
++ a = (ARRAY *)value;
++! /* For arrays, the first value deals with array indices. Negative
++! offsets count from one past the array's maximum index. */
++! len = array_max_index (a) + (*e1p < 0); /* arrays index from 0 to n - 1 */
++ break;
++ #endif
++*** ../bash-3.0-patched/tests/array.tests Sat Oct 4 23:25:00 2003
++--- tests/array.tests Tue Nov 9 16:36:29 2004
++***************
++*** 323,327 ****
++ echo positive offset - expect five seven
++ echo ${av[@]:5:2}
++! echo negative offset - expect five seven
++ echo ${av[@]: -2:2}
++
++--- 323,327 ----
++ echo positive offset - expect five seven
++ echo ${av[@]:5:2}
++! echo negative offset to unset element - expect seven
++ echo ${av[@]: -2:2}
++
++*** ../bash-3.0-patched/tests/array.right Sat Oct 4 23:25:10 2003
++--- tests/array.right Tue Nov 9 16:37:25 2004
++***************
++*** 171,176 ****
++ positive offset - expect five seven
++ five seven
++! negative offset - expect five seven
++! five seven
++ positive offset 2 - expect seven
++ seven
++--- 171,176 ----
++ positive offset - expect five seven
++ five seven
++! negative offset to unset element - expect seven
++! seven
++ positive offset 2 - expect seven
++ seven
++*** ../bash-3.0-patched/patchlevel.h Tue Oct 26 17:13:29 2004
++--- patchlevel.h Tue Nov 9 16:31:24 2004
++***************
++*** 26,30 ****
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 15
++
++ #endif /* _PATCHLEVEL_H_ */
++--- 26,30 ----
++ looks for to find the patch level (for the sccs version string). */
++
++! #define PATCHLEVEL 16
++
++ #endif /* _PATCHLEVEL_H_ */
++
+diff -urN orig-bash-3.0/bash30-avoid_WCONTINUED bash-3.0/bash30-avoid_WCONTINUED
+--- orig-bash-3.0/bash30-avoid_WCONTINUED 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/bash30-avoid_WCONTINUED 2005-09-05 20:37:01.000000000 +0300
+@@ -0,0 +1,27 @@
++diff -Naur bash-3.0.orig/jobs.c bash-3.0/jobs.c
++--- bash-3.0.orig/jobs.c 2004-10-12 08:50:11.643481280 +0000
+++++ jobs.c 2004-10-12 08:51:35.110792320 +0000
++@@ -2476,6 +2476,7 @@
++ PROCESS *child;
++ pid_t pid;
++ int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
+++ static int wcontinued_not_supported = 0;
++
++ call_set_current = children_exited = 0;
++ last_stopped_job = NO_JOB;
++@@ -2489,7 +2490,15 @@
++ : 0;
++ if (sigchld || block == 0)
++ waitpid_flags |= WNOHANG;
+++ retry:
+++ if (wcontinued_not_supported)
+++ waitpid_flags &= ~WCONTINUED;
++ pid = WAITPID (-1, &status, waitpid_flags);
+++ if (pid == -1 && errno == EINVAL)
+++ {
+++ wcontinued_not_supported = 1;
+++ goto retry;
+++ }
++
++ /* The check for WNOHANG is to make sure we decrement sigchld only
++ if it was non-zero before we called waitpid. */
+diff -urN orig-bash-3.0/dcigettext.patch bash-3.0/dcigettext.patch
+--- orig-bash-3.0/dcigettext.patch 1970-01-01 02:00:00.000000000 +0200
++++ bash-3.0/dcigettext.patch 2006-02-07 11:29:06.000000000 +0200
+@@ -0,0 +1,13 @@
++--- /lib/intl/orig-dcigettext.c 2003-12-09 19:39:11.000000000 +0200
+++++ /lib/intl/dcigettext.c 2006-02-07 09:46:06.000000000 +0200
++@@ -134,6 +134,10 @@
++
++ /* @@ end of prolog @@ */
++
+++#if defined (GETCWD_BROKEN) && !defined (HAVE_GETCWD)
+++# define HAVE_GETCWD
+++#endif
+++
++ #ifdef _LIBC
++ /* Rename the non ANSI C functions. This is required by the standard
++ because some ANSI C functions will require linking with this object
diff --git a/packages/bash/bash_3.0.bb b/packages/bash/bash_3.0.bb
index 8511035695..75da58b00b 100644
--- a/packages/bash/bash_3.0.bb
+++ b/packages/bash/bash_3.0.bb
@@ -3,9 +3,10 @@ HOMEPAGE = "http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html"
DEPENDS = "ncurses"
SECTION = "base/shell"
LICENSE = "GPL"
-PR = "r6"
+PR = "r7"
SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz \
+ file://bash-3.0-fixes.patch;patch=1 \
file://signames-mipsel.diff;patch=1"
inherit autotools gettext
diff --git a/packages/binutils/binutils_2.16.91.0.6.bb b/packages/binutils/binutils_2.16.91.0.6.bb
index 185749bd3e..6e35d30686 100644
--- a/packages/binutils/binutils_2.16.91.0.6.bb
+++ b/packages/binutils/binutils_2.16.91.0.6.bb
@@ -4,6 +4,11 @@ SECTION = "devel"
LICENSE = "GPL"
MAINTAINER = "Gerald Britton <gbritton@doomcom.org>"
+# glibc 2.3 has issues with this version
+# of binutils.
+DEFAULT_PREFERENCE = "-1"
+
+
inherit autotools gettext
PACKAGES = "${PN} ${PN}-dev ${PN}-doc ${PN}-symlinks"
diff --git a/packages/boost/boost_1.33.0.bb b/packages/boost/boost_1.33.0.bb
index 2c81f37899..db30f95a69 100644
--- a/packages/boost/boost_1.33.0.bb
+++ b/packages/boost/boost_1.33.0.bb
@@ -10,7 +10,7 @@ SECTION = "libs"
DEPENDS = "boost-jam-native zlib"
PRIORITY = "optional"
LICENSE = "Boost Software License"
-PR = "r0"
+PR = "r1"
# need debian package naming for the libs
inherit debian
@@ -128,6 +128,10 @@ BJAM_OPTS = '${BJAM_TOOLS} \
${BJAM_EXTRA}'
+do_configure_prepend() {
+ cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp
+}
+
do_compile() {
set -ex
bjam ${BJAM_OPTS} --prefix=${prefix} \
diff --git a/packages/cdparanoia/cdparanoia_9.8alpha.bb b/packages/cdparanoia/cdparanoia_9.8alpha.bb
index 9160fdd577..4e9b00ee20 100644
--- a/packages/cdparanoia/cdparanoia_9.8alpha.bb
+++ b/packages/cdparanoia/cdparanoia_9.8alpha.bb
@@ -2,11 +2,12 @@
# Copyright (C) 2005, Advanced Micro Devices, Inc. All Rights Reserved
# Released under the MIT license (see packages/COPYING)
-PR="r1"
+PR="r2"
LICENSE="GPL"
SRC_URI="http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-alpha9.8.src.tgz \
- file://fixes.patch;patch=1"
+ file://fixes.patch;patch=1 \
+ file://Makefile.patch;patch=1"
S="${WORKDIR}/cdparanoia-III-alpha9.8"
diff --git a/packages/cdparanoia/files/Makefile.patch b/packages/cdparanoia/files/Makefile.patch
new file mode 100644
index 0000000000..798ccf9003
--- /dev/null
+++ b/packages/cdparanoia/files/Makefile.patch
@@ -0,0 +1,19 @@
+*** cdparanoia-III-alpha9.8/Makefile.in- Mon Mar 27 23:09:24 2006
+--- cdparanoia-III-alpha9.8/Makefile.in Mon Mar 27 23:09:56 2006
+***************
+*** 44,50 ****
+ cd interface && $(MAKE) all
+ cd paranoia && $(MAKE) all
+ $(MAKE) cdparanoia CFLAGS="$(OPT)"
+! strip cdparanoia
+
+ debug:
+ cd interface && $(MAKE) debug
+--- 44,50 ----
+ cd interface && $(MAKE) all
+ cd paranoia && $(MAKE) all
+ $(MAKE) cdparanoia CFLAGS="$(OPT)"
+! $(STRIP) cdparanoia
+
+ debug:
+ cd interface && $(MAKE) debug
diff --git a/packages/contacts/contacts_0.1.bb b/packages/contacts/contacts_0.1.bb
index aff86a1c65..cf025259f2 100644
--- a/packages/contacts/contacts_0.1.bb
+++ b/packages/contacts/contacts_0.1.bb
@@ -3,30 +3,22 @@ SECTION = "x11"
DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
MAINTAINER = "Chris Lord <chris@openedhand.com>"
DESCRIPTION = "Contacts is an address-book application."
+PR = "r1"
SRC_URI = "svn://svn.o-hand.com/repos/${PN}/tags;module=release-0.1;proto=http \
file://stock_contact.png \
- file://stock_person.png \
- file://index.theme"
+ file://stock_person.png"
inherit autotools pkgconfig
S = "${WORKDIR}/release-0.1"
do_install_append () {
- install -d ${D}/${datadir}/icons/hicolor/48x48/stock/net
- install -d ${D}/${datadir}/icons/hicolor/48x48/stock/generic
-
- install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/icons/hicolor/48x48/stock/net
- install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/icons/hicolor/48x48/stock/generic
- install -m 0644 ${WORKDIR}/index.theme ${D}/${datadir}/icons/hicolor
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
}
-FILES_${PN} += "${datadir}/icons/hicolor/48x48/apps/oh-contacts.png \
- ${datadir}/icons/hicolor/48x48/stock/*/*.png \
- ${datadir}/icons/hicolor/index.theme"
-
-pkg_postinst_${PN} () {
- gtk-update-icon-cache /usr/share/icons/hicolor
-}
+FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
+ ${datadir}/pixmaps/stock_person.png"
diff --git a/packages/contacts/contacts_svn.bb b/packages/contacts/contacts_svn.bb
index f73c52f857..cd4f6a7836 100644
--- a/packages/contacts/contacts_svn.bb
+++ b/packages/contacts/contacts_svn.bb
@@ -3,16 +3,15 @@ SECTION = "x11"
DEPENDS = "glib-2.0 gtk+ libglade eds-dbus gnome-vfs"
RDEPENDS = "gnome-vfs-plugin-file"
RRECOMMENDS = "gnome-vfs-plugin-http"
-MAINTAINER = "Richard Purdie <richard@openedhand.com>"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
DESCRIPTION = "Contacts is an address-book application."
-PR = "r3"
+PR = "r5"
PV = "0.1+svn${SRCDATE}"
SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
file://stock_contact.png \
- file://stock_person.png \
- file://index.theme"
+ file://stock_person.png"
inherit autotools pkgconfig
@@ -21,19 +20,11 @@ S = "${WORKDIR}/trunk"
EXTRA_OECONF = "--enable-gnome-vfs"
do_install_append () {
- install -d ${D}/${datadir}/icons/hicolor/48x48/stock/net
- install -d ${D}/${datadir}/icons/hicolor/48x48/stock/generic
-
- install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/icons/hicolor/48x48/stock/net
- install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/icons/hicolor/48x48/stock/generic
- install -m 0644 ${WORKDIR}/index.theme ${D}/${datadir}/icons/hicolor
+ install -d ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_contact.png ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/stock_person.png ${D}/${datadir}/pixmaps
}
-FILES_${PN} += "${datadir}/icons/hicolor/48x48/apps/oh-contacts.png \
- ${datadir}/icons/hicolor/48x48/stock/*/*.png \
- ${datadir}/icons/hicolor/index.theme"
-
-pkg_postinst_${PN} () {
- gtk-update-icon-cache /usr/share/icons/hicolor
-}
+FILES_${PN} += "${datadir}/pixmaps/stock_contact.png \
+ ${datadir}/pixmaps/stock_person.png"
diff --git a/packages/altboot/files/spitz/altboot-menu/.mtn2git_empty b/packages/cpusage/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/spitz/altboot-menu/.mtn2git_empty
+++ b/packages/cpusage/.mtn2git_empty
diff --git a/packages/altboot/files/spitz/altboot-menu/Advanced/.mtn2git_empty b/packages/cpusage/cpusage-0.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/altboot/files/spitz/altboot-menu/Advanced/.mtn2git_empty
+++ b/packages/cpusage/cpusage-0.1/.mtn2git_empty
diff --git a/packages/cpusage/cpusage-0.1/cpusage.patch b/packages/cpusage/cpusage-0.1/cpusage.patch
new file mode 100644
index 0000000000..091c7a9817
--- /dev/null
+++ b/packages/cpusage/cpusage-0.1/cpusage.patch
@@ -0,0 +1,63 @@
+--- /orig-cpusage.c 2005-08-16 15:37:25.000000000 +0300
++++ /cpusage.c 2006-03-17 22:27:09.000000000 +0200
+@@ -168,6 +168,7 @@
+ int main(int argc, char** argv) {
+
+ int i,c,limit;
++ int single; /* run just one's and exit */
+ int avg; /* is avg measurement allready running */
+ int avg_run; /* did we allready had an avg measurement */
+ static long cp_time1[CPUSTATES];
+@@ -184,15 +185,21 @@
+ long total;
+ limit = LIMIT;
+ output = 0; /* human readable */
++ single = 1; /*run continuesly */
+
+ /* reading commandline options */
+ while (1) {
+- c = getopt(argc, argv, "aohl:");
++ c = getopt(argc, argv, "saohl:");
+
+- if (c == -1)
++ if (c == -1){
+ break;
++ }
+
+ switch(c){
++ case 's':
++ /*run once and exit */
++ single = 0;
++ break;
+ /* use avg from begin to end -> same as "-l 100" */
+ case 'a':
+ limit = 100;
+@@ -278,6 +285,10 @@
+
+ print_perc(cpu_perc, "");
+
++ if (!single ) {
++ breakloop=1;
++ }
++
+ if (breakloop) {
+ if (avg) {
+ avg = 0;
+@@ -292,7 +303,8 @@
+ if (sigaction(SIGINT, &sigold, &signew) < 0 ){
+ fprintf(stderr, "Could not restore signal handler -> exiting");
+ }
+-
++
++ if (single != 0) {
+ printf("---Summary----\n");
+
+ print_perc(cpu_min, "Min");
+@@ -301,6 +313,7 @@
+
+ perc(CPUSTATES, cp_avg_start, cp_avg_stop, cp_diff);
+ print_perc(cpu_perc, "Avg");
++ }
+
+ return 0;
+ }
diff --git a/packages/cpusage/cpusage_0.1.bb b/packages/cpusage/cpusage_0.1.bb
new file mode 100644
index 0000000000..d90c630ceb
--- /dev/null
+++ b/packages/cpusage/cpusage_0.1.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "This tool read out the tics counter of the operating system and \
+calculates the Percentages spend in each CPU_STATE."
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "http://www8.in.tum.de/~schneifa/group/sources/cpusage-${PV}.tar.gz \
+ file://cpusage.patch;patch=1"
+
+S = "${WORKDIR}/cpusage-${PV}"
+
+FILES_${PN} = "/sbin/cpusage"
+
+CFLAGS_append =" -D_BSD_SOURCE=1"
+CFLAGS_append = '${@base_conditional("KERNEL_MAJOR_VERSION", "2.6", " -D__Linux26__ ", " -D__Linux24__ ",d)}'
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -o cpusage cpusage.c
+}
+
+do_install() {
+ install -d ${D}${base_sbindir}
+ install -m 0755 cpusage ${D}${base_sbindir}/cpusage
+}
diff --git a/packages/cpusage/cpusage_0.2.bb b/packages/cpusage/cpusage_0.2.bb
new file mode 100644
index 0000000000..7d4df4eccf
--- /dev/null
+++ b/packages/cpusage/cpusage_0.2.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "This tool read out the tics counter of the operating system and \
+calculates the Percentages spend in each CPU_STATE."
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "http://www8.in.tum.de/~schneifa/group/sources/cpusage-${PV}.tar.gz"
+
+S = "${WORKDIR}/cpusage-${PV}"
+
+FILES_${PN} = "/sbin/cpusage"
+
+CFLAGS_append =" -D_BSD_SOURCE=1"
+CFLAGS_append = '${@base_conditional("KERNEL_MAJOR_VERSION", "2.6", " -D__Linux26__ ", " -D__Linux24__ ",d)}'
+
+
+do_compile() {
+ ${CC} ${CFLAGS} ${LDFLAGS} -o cpusage cpusage.c
+}
+
+do_install() {
+ install -d ${D}${base_sbindir}
+ install -m 0755 cpusage ${D}${base_sbindir}/cpusage
+}
diff --git a/packages/dates/dates_svn.bb b/packages/dates/dates_svn.bb
index 1013b08f2c..22c821b98b 100644
--- a/packages/dates/dates_svn.bb
+++ b/packages/dates/dates_svn.bb
@@ -1,10 +1,10 @@
LICENSE = "LGPL"
SECTION = "x11"
DEPENDS = "glib-2.0 gtk+ libglade eds-dbus"
-MAINTAINER = "Richard Purdie <richard@openedhand.com>"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
DESCRIPTION = "Dates is a calendar application."
-PR = "r3"
+PR = "r4"
PV = "0.0+svn${SRCDATE}"
S = "${WORKDIR}/${PN}"
@@ -14,10 +14,3 @@ SRC_URI = "svn://svn.o-hand.com/repos/;module=${PN};proto=http"
inherit autotools pkgconfig
CFLAGS_prepend = " -DFRAMES=5 "
-FILES_${PN} += "${datadir}/icons/hicolor/48x48/apps/oh-dates.png"
-
-pkg_postinst_${PN} () {
- if [ "x$D" != "x" ]; then
- gtk-update-icon-cache /usr/share/icons/hicolor
- fi
-}
diff --git a/packages/display-brightness/display-brightness.sh b/packages/display-brightness/display-brightness.sh
index 8141866858..4e706e1e75 100644
--- a/packages/display-brightness/display-brightness.sh
+++ b/packages/display-brightness/display-brightness.sh
@@ -7,10 +7,13 @@
STEP=5
-MAX_BRIGHTNESS=`cat /sys/class/backlight/*/max_brightness`
-ACTUAL_BRIGHTNESS=`cat /sys/class/backlight/*/actual_brightness`
-BRIGHTNESS_FILE="/sys/class/backlight/*/brightness"
+DRIVER="`ls /sys/class/backlight/|head -1`"
+MAX_BRIGHTNESS=`cat /sys/class/backlight/$DRIVER/max_brightness`
+ACTUAL_BRIGHTNESS=`cat /sys/class/backlight/$DRIVER/actual_brightness`
+BRIGHTNESS_FILE="/sys/class/backlight/$DRIVER/brightness"
+echo "max / current"
+echo "$MAX_BRIGHTNESS / $ACTUAL_BRIGHTNESS"
if [ ! -n "$1" ]; then
exit 0
fi
diff --git a/packages/display-brightness/display-brightness_1.0.0.bb b/packages/display-brightness/display-brightness_1.0.0.bb
index e275b3f8bc..1919f98231 100644
--- a/packages/display-brightness/display-brightness_1.0.0.bb
+++ b/packages/display-brightness/display-brightness_1.0.0.bb
@@ -3,7 +3,7 @@ AUTHOR = "Patrick Steiner <patrick.steiner@a1.net>"
MAINTAINER = "Patrick Steiner <patrick.steiner@a1.net>"
DEPENDS = ""
PRIORITY = "optional"
-PR = "r0"
+PR = "r1"
LICENSE = "GPLv2"
SRC_URI = "file://display-brightness.sh"
diff --git a/packages/dvbtools/dvbtraffic.bb b/packages/dvbtools/dvbtraffic.bb
index 4558038e92..14dd0af97d 100644
--- a/packages/dvbtools/dvbtraffic.bb
+++ b/packages/dvbtools/dvbtraffic.bb
@@ -3,7 +3,7 @@ SECTION = "console/multimedia"
PRIORITY = "optional"
LICENSE = "GPLv2"
MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
-PV = "0.0cvs${CVSDATE}"
+PV = "0.0cvs${SRCDATE}"
SRC_URI = "cvs://anonymous@cvs.linuxtv.org/cvs/linuxtv;module=dvb-apps/util/dvbtraffic"
diff --git a/packages/dvbtools/sctzap_cvs.bb b/packages/dvbtools/sctzap_cvs.bb
index 4d33e89f0e..e2900e873d 100644
--- a/packages/dvbtools/sctzap_cvs.bb
+++ b/packages/dvbtools/sctzap_cvs.bb
@@ -3,7 +3,7 @@ SECTION = "console/multimedia"
PRIORITY = "optional"
LICENSE = "GPLv2"
MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
-PV = "0.0cvs${CVSDATE}"
+PV = "0.0cvs${SRCDATE}"
SRC_URI = "cvs://anonymous@cvs.linuxtv.org/cvs/linuxtv;module=dvb-apps/util/szap \
cvs://anonymous@cvs.linuxtv.org/cvs/linuxtv;module=dvb-apps/util/lib"
diff --git a/packages/e17/e-iconbar_20060128.bb b/packages/e17/e-iconbar_20060128.bb
index 7bfd2d0c7e..333f2406e1 100644
--- a/packages/e17/e-iconbar_20060128.bb
+++ b/packages/e17/e-iconbar_20060128.bb
@@ -1,14 +1,12 @@
DESCRIPTION = "An Iconbar for the Enlightenment Window Manager"
DEPENDS = "edb eet evas-x11 ecore-x11 edje esmart-x11 imlib2-x11"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r1"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/iconbar;date=${PV}"
-S = "${WORKDIR}/iconbar"
+inherit e
-inherit autotools
+SRC_URI = "${E_CVS};module=e17/apps/iconbar;date=${PV}"
+S = "${WORKDIR}/iconbar"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc"
diff --git a/packages/e17/e-modules_20060128.bb b/packages/e17/e-modules_20060128.bb
index 3a50083130..85929a6967 100644
--- a/packages/e17/e-modules_20060128.bb
+++ b/packages/e17/e-modules_20060128.bb
@@ -1,13 +1,11 @@
DESCRIPTION = "Enlightenment Window Manager Extra Modules"
DEPENDS = "ecore-x11 evas-x11 esmart-x11 edje eet e"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r1"
-inherit autotools
+inherit e
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/e_modules;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/apps/e_modules;date=${PV}"
S = "${WORKDIR}/e_modules"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc"
diff --git a/packages/e17/e-utils_20060128.bb b/packages/e17/e-utils_20060128.bb
index 18cd7a93cf..3f1af895ae 100644
--- a/packages/e17/e-utils_20060128.bb
+++ b/packages/e17/e-utils_20060128.bb
@@ -1,13 +1,11 @@
DESCRIPTION = "Enlightenment Window Manager Utilities"
DEPENDS = "virtual/ecore virtual/evas virtual/esmart edje eet ewl engrave virtual/imlib2 e epsilon"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r1"
-inherit autotools
+inherit e
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/e_utils;date=${PV}"
+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-wm_0.16.999.023.bb b/packages/e17/e-wm_0.16.999.025.bb
index f7f61ef747..ff7e322018 100644
--- a/packages/e17/e-wm_0.16.999.023.bb
+++ b/packages/e17/e-wm_0.16.999.025.bb
@@ -1,15 +1,15 @@
DESCRIPTION = "E17 - the Enlightenment Window Mananger"
DEPENDS = "evas-x11 ecore-x11 edje eet embryo e"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r3"
-SRC_URI = "http://enlightenment.freedesktop.org/files/enlightenment-${PV}.tar.gz \
+inherit e
+
+SRC_URI = "${E_URI}/enlightenment-${PV}.tar.gz \
file://fix-configure.patch;patch=1 \
file://remove-large-fonts.patch;patch=1 \
file://Xsession.d/98enlightenment"
-
+
# cvs://anonymous@thinktux.net/root;module=e17/apps/e/data/themes;date=20050926"
# file://disable-splash.patch;patch=1 \
# http://cvs.sourceforge.net/viewcvs.py/*checkout*/enlightenment/e17/apps/e/data/themes/default_entry.edc?rev=1.1 \
@@ -20,8 +20,6 @@ SRC_URI = "http://enlightenment.freedesktop.org/files/enlightenment-${PV}.tar.gz
S = "${WORKDIR}/enlightenment-${PV}"
-inherit autotools
-
PROFILE = "LORES_PDA"
PROFILE_c7x0 = "HIRES_PDA"
PROFILE_tosa = "HIRES_PDA"
@@ -48,3 +46,8 @@ do_install_append() {
install -d ${D}/${sysconfdir}/X11/Xsession.d
install -m 755 ${WORKDIR}/Xsession.d/98enlightenment ${D}/${sysconfdir}/X11/Xsession.d
}
+
+#pkg_postinst() {
+# enlightenment_remote -menu-autoscroll-margin-set 5
+# enlightenment_remote -menu-autoscroll-cursor-margin-set 5
+#} \ No newline at end of file
diff --git a/packages/e17/e-wm_20060128.bb b/packages/e17/e-wm_20060128.bb
index b97253514d..a836284b5f 100644
--- a/packages/e17/e-wm_20060128.bb
+++ b/packages/e17/e-wm_20060128.bb
@@ -1,19 +1,17 @@
DESCRIPTION = "E17 - the Enlightenment Window Mananger"
DEPENDS = "evas-x11 ecore-x11 edje eet embryo e"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r3"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/e;date=${PV} \
+inherit e
+
+SRC_URI = "${E_CVS};module=e17/apps/e;date=${PV} \
file://Xsession.d/98enlightenment \
file://fix-configure.patch;patch=1 \
file://remove-large-fonts.patch;patch=1"
S = "${WORKDIR}/e"
-inherit autotools
-
PROFILE = "LORES_PDA"
PROFILE_c7x0 = "HIRES_PDA"
PROFILE_tosa = "HIRES_PDA"
diff --git a/packages/e17/e17genmenu_2.0.2.bb b/packages/e17/e17genmenu_2.0.2.bb
index 8b43e5995a..49b139a213 100644
--- a/packages/e17/e17genmenu_2.0.2.bb
+++ b/packages/e17/e17genmenu_2.0.2.bb
@@ -1,16 +1,12 @@
DESCRIPTION = "Convert Gnome or KDE menus to e17 menus"
-SECTION = "e/utils"
DEPENDS = "e virtual/ecore virtual/evas eet engrave"
LICENSE = "GPL"
HOMEPAGE = "http://sourceforge.net/projects/e17genmenu"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r0"
-export EET_CONFIG = "${STAGING_BINDIR}/eet-config"
-export EVAS_CONFIG = "${STAGING_BINDIR}/evas-config"
-export ECORE_CONFIG = "${STAGING_BINDIR}/ecore-config"
-export ENGRAVE_CONFIG = "${STAGING_BINDIR}/engrave-config"
-export ENLIGHTENMENT_CONFIG = "${STAGING_BINDIR}/enlightenment-config"
+inherit e
+
+SECTION = "e/utils"
SRC_URI = "${SOURCEFORGE_MIRROR}/e17genmenu/e17genmenu-2.0.2.tar.gz"
@@ -19,5 +15,3 @@ do_configure_prepend() {
find -type f | xargs sed -i 's:share/icons/hicolor/48x48/apps:share/pixmaps:'
find -type f | xargs sed -i 's:%s/share/pixmaps", GNOME_PREFIX, theme:%s/share/pixmaps", GNOME_PREFIX:'
}
-
-inherit autotools
diff --git a/packages/e17/eclair_20060128.bb b/packages/e17/eclair_20060128.bb
index 7e1d1e5bda..36cf7c02ad 100644
--- a/packages/e17/eclair_20060128.bb
+++ b/packages/e17/eclair_20060128.bb
@@ -1,15 +1,12 @@
DESCRIPTION = "Eclair is the E17 multi media player"
-SECTION = "e/apps"
DEPENDS = "evas-x11 ecore-x11 embryo imlib2-x11 edje-native edje libxine-x11 emotion esmart-x11 libxml2 sqlite3 taglibc"
LICENSE = "MIT"
-HOMEPAGE = "http://www.enlightenment.org"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r1"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/eclair;date=${PV}"
-S = "${WORKDIR}/eclair"
+inherit e
-inherit autotools
+SRC_URI = "${E_CVS};module=e17/apps/eclair;date=${PV}"
+S = "${WORKDIR}/eclair"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc"
diff --git a/packages/e17/engage_20060128.bb b/packages/e17/engage_20060128.bb
index bd925a969c..0bf9f80895 100644
--- a/packages/e17/engage_20060128.bb
+++ b/packages/e17/engage_20060128.bb
@@ -1,22 +1,15 @@
DESCRIPTION = "Engage is the E17 icon dock"
DEPENDS = "evas-x11 ecore-x11 esmart-x11 imlib2-x11 edje ewl e"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r2"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=misc/engage;date=${PV} \
+inherit e
+
+SRC_URI = "${E_CVS};module=misc/engage;date=${PV} \
file://no-local-includes.patch;patch=1"
S = "${WORKDIR}/engage"
-inherit autotools pkgconfig binconfig
-
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc"
-do_prepsources () {
- make clean distclean || true
-}
-addtask prepsources after do_fetch before do_unpack
-
FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
diff --git a/packages/e17/entice_20060128.bb b/packages/e17/entice_20060128.bb
index 05023f7fa2..ffc07f7661 100644
--- a/packages/e17/entice_20060128.bb
+++ b/packages/e17/entice_20060128.bb
@@ -1,16 +1,13 @@
DESCRIPTION = "Entice is the E17 picture viewer"
-SECTION = "e/apps"
# can also depend on GIMP for editing
DEPENDS = "edb evas-x11 ecore-x11 edje epsilon esmart-x11"
LICENSE = "MIT"
-HOMEPAGE = "http://www.enlightenment.org"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r1"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/entice;date=${PV}"
-S = "${WORKDIR}/entice"
+inherit e
-inherit autotools
+SRC_URI = "${E_CVS};module=e17/apps/entice;date=${PV}"
+S = "${WORKDIR}/entice"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc"
diff --git a/packages/e17/entrance_0.9.0.005.bb b/packages/e17/entrance_0.9.0.006.bb
index c17d52c587..1b928b972c 100644
--- a/packages/e17/entrance_0.9.0.005.bb
+++ b/packages/e17/entrance_0.9.0.006.bb
@@ -1,26 +1,24 @@
DESCRIPTION = "Entrance is the Enlightenment login manager"
-SECTION = "e/apps"
LICENSE = "MIT"
# can also use pam and crypt
DEPENDS = "edb edb-native evas-x11 ecore-x11 edje esmart-x11 bash keylaunch detect-stylus xserver-common login-manager"
RDEPENDS += "bash keylaunch detect-stylus xserver-common glibc-gconv-iso8859-1 login-manager"
HOMEPAGE = "http://www.enlightenment.org"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r13"
-SRC_URI = "http://enlightenment.freedesktop.org/files/entrance-${PV}.tar.gz \
+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://set-display-env.patch;patch=1 \
file://fix-auth-mode.patch;patch=1 \
file://use-bash.patch;patch=1 \
- file://Sessions"
+ file://Sessions"
S = "${WORKDIR}/entrance-${PV}"
-inherit autotools
-
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc \
--with-xsession=/etc/X11/Xsession \
--with-auth-mode=0"
diff --git a/packages/e17/entrance_20060128.bb b/packages/e17/entrance_20060128.bb
index b234664fe6..825a81cdec 100644
--- a/packages/e17/entrance_20060128.bb
+++ b/packages/e17/entrance_20060128.bb
@@ -1,26 +1,24 @@
DESCRIPTION = "Entrance is the Enlightenment login manager"
-SECTION = "e/apps"
LICENSE = "MIT"
# can also use pam and crypt
DEPENDS = "edb edb-native evas-x11 ecore-x11 edje esmart-x11 bash keylaunch detect-stylus xserver-common"
RDEPENDS += "bash keylaunch detect-stylus xserver-common glibc-gconv-iso8859-1"
HOMEPAGE = "http://www.enlightenment.org"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r11"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/entrance;date=${PV} \
+inherit e update-rc.d
+
+SRC_URI = "${E_CVS};module=e17/apps/entrance;date=${PV} \
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://Sessions"
+ file://Sessions"
S = "${WORKDIR}/entrance"
-inherit autotools update-rc.d
-
INITSCRIPT_NAME = "entrance"
INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
diff --git a/packages/e17/evidence_20060128.bb b/packages/e17/evidence_20060128.bb
index 5c24152b17..683ac8e536 100644
--- a/packages/e17/evidence_20060128.bb
+++ b/packages/e17/evidence_20060128.bb
@@ -1,12 +1,12 @@
DESCRIPTION = "evidence, an enlightenemt file manager"
LICENSE = "GPL"
-SECTION = "e"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
# can support dbus, avifile, libmpeg3
DEPENDS = "pkgconfig gtk+ glib-2.0 ecore-x11 evas-x11 edb eet edje imlib2-x11 libpng epeg jpeg pcre curl taglib libvorbis libogg libxine-x11 emotion freetype"
RDEPENDS += "examine"
PR = "r0"
+inherit e
+
SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/evidence;module=evidence;date=${PV}"
S = "${WORKDIR}/evidence"
@@ -21,21 +21,9 @@ EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc \
--enable-browser-view \
--with-libxine=${STAGING_LIBDIR}"
-do_prepsources () {
- make clean distclean || true
-}
-addtask prepsources after do_fetch before do_unpack
-
do_compile_prepend() {
sed -i 's:LDFLAGS = :LDFLAGS = -L${STAGING_LIBDIR} :' ${S}/src/providers/vorbis/Makefile
}
-export EET_CONFIG = "${STAGING_BINDIR}/eet-config"
-export EVAS_CONFIG = "${STAGING_BINDIR}/evas-config"
-export ECORE_CONFIG = "${STAGING_BINDIR}/ecore-config"
-export EMBRYO_CONFIG = "${STAGING_BINDIR}/embryo-config"
-export EDJE_CONFIG = "${STAGING_BINDIR}/edje-config"
-
FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} /etc/* /usr/sbin/*"
-inherit autotools pkgconfig binconfig
diff --git a/packages/e17/examine_20060128.bb b/packages/e17/examine_20060128.bb
index 45ceb65458..e689eb1712 100644
--- a/packages/e17/examine_20060128.bb
+++ b/packages/e17/examine_20060128.bb
@@ -1,20 +1,13 @@
DESCRIPTION = "examine, the program configurator"
DEPENDS = "virtual/ecore ewl"
LICENSE = "MIT"
-SECTION = "e/apps"
-MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
PR = "r0"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/examine;date=${PV}"
+inherit e
+
+SRC_URI = "${E_CVS};module=e17/apps/examine;date=${PV}"
S = "${WORKDIR}/examine"
EXTRA_OECONF = "--with-edje-cc=${STAGING_BINDIR}/edje_cc"
-inherit autotools pkgconfig binconfig
-
-do_prepsources () {
- make clean distclean || true
-}
-addtask prepsources after do_fetch before do_unpack
-
FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
diff --git a/packages/efl/e_0.16.999.023.bb b/packages/efl/e_0.16.999.025.bb
index 0f400d51cc..bd40c68b0e 100644
--- a/packages/efl/e_0.16.999.023.bb
+++ b/packages/efl/e_0.16.999.025.bb
@@ -5,7 +5,7 @@ PR = "r2"
inherit efl
-SRC_URI = "http://enlightenment.freedesktop.org/files/enlightenment-${PV}.tar.gz"
+SRC_URI = "${E_URI}/enlightenment-${PV}.tar.gz"
S = "${WORKDIR}/enlightenment-${PV}"
PROFILE = "LORES_PDA"
diff --git a/packages/efl/e_20060128.bb b/packages/efl/e_20060128.bb
index 495b647101..132da0c23a 100644
--- a/packages/efl/e_20060128.bb
+++ b/packages/efl/e_20060128.bb
@@ -5,7 +5,7 @@ PR = "r1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/apps/e;date=${PV} \
+SRC_URI = "${E_CVS};module=e17/apps/e;date=${PV} \
file://fix-configure.patch;patch=1"
S = "${WORKDIR}/e"
diff --git a/packages/efl/ecore-fb_0.9.9.023.bb b/packages/efl/ecore-fb_0.9.9.025.bb
index a5a843aeb4..a957c5dd8c 100644
--- a/packages/efl/ecore-fb_0.9.9.023.bb
+++ b/packages/efl/ecore-fb_0.9.9.025.bb
@@ -7,6 +7,7 @@ EXTRA_OECONF = "--enable-ecore-fb \
--enable-poll \
--enable-ecore-dbus \
--enable-ecore-evas \
+ --enable-ecore-evas-buffer \
--enable-ecore-evas-fb \
--disable-ecore-evas-x \
--disable-ecore-evas-xrender \
diff --git a/packages/efl/ecore-fb_20060128.bb b/packages/efl/ecore-fb_20060128.bb
index 4badfa42ec..5bffca1295 100644
--- a/packages/efl/ecore-fb_20060128.bb
+++ b/packages/efl/ecore-fb_20060128.bb
@@ -1,7 +1,7 @@
include ecore.inc
PR = "r1"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/ecore;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/ecore;date=${PV}"
S = "${WORKDIR}/ecore"
### add tslib support
diff --git a/packages/efl/ecore-native_0.9.9.023.bb b/packages/efl/ecore-native_0.9.9.025.bb
index 299470841c..299470841c 100644
--- a/packages/efl/ecore-native_0.9.9.023.bb
+++ b/packages/efl/ecore-native_0.9.9.025.bb
diff --git a/packages/efl/ecore-native_20060128.bb b/packages/efl/ecore-native_20060128.bb
index 5eb8541fdc..a4d67bf056 100644
--- a/packages/efl/ecore-native_20060128.bb
+++ b/packages/efl/ecore-native_20060128.bb
@@ -1,7 +1,7 @@
include ecore.inc
PR = "r1"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/ecore;date=${PV} \
+SRC_URI = "${E_CVS};module=e17/libs/ecore;date=${PV} \
file://remove-tslib-configure.patch;patch=1"
S = "${WORKDIR}/ecore"
diff --git a/packages/efl/ecore-x11_0.9.9.023.bb b/packages/efl/ecore-x11_0.9.9.025.bb
index 40527561aa..3a88ad229b 100644
--- a/packages/efl/ecore-x11_0.9.9.023.bb
+++ b/packages/efl/ecore-x11_0.9.9.025.bb
@@ -10,6 +10,7 @@ EXTRA_OECONF = "--enable-ecore-fb \
--enable-ecore-dbus \
--enable-ecore-evas-fb \
--enable-ecore-evas-x \
+ --enable-ecore-evas-buffer \
--disable-ecore-evas-gl \
--enable-ecore-con \
--enable-ecore-ipc \
diff --git a/packages/efl/ecore-x11_20060128.bb b/packages/efl/ecore-x11_20060128.bb
index cc4fc76de7..7b9f3a6f76 100644
--- a/packages/efl/ecore-x11_20060128.bb
+++ b/packages/efl/ecore-x11_20060128.bb
@@ -2,7 +2,7 @@ include ecore.inc
DEPENDS += "evas-x11"
PR = "r2"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/ecore;date=${PV} \
+SRC_URI = "${E_CVS};module=e17/libs/ecore;date=${PV} \
file://evas-x11-include.patch;patch=1 \
file://remove-tslib-configure.patch;patch=1"
S = "${WORKDIR}/ecore"
diff --git a/packages/efl/edb-native_1.0.5.005.bb b/packages/efl/edb-native_1.0.5.006.bb
index d83a3b77c6..d83a3b77c6 100644
--- a/packages/efl/edb-native_1.0.5.005.bb
+++ b/packages/efl/edb-native_1.0.5.006.bb
diff --git a/packages/efl/edb-utils_1.0.5.005.bb b/packages/efl/edb-utils_1.0.5.006.bb
index 401d0e7e46..8d47e068a7 100644
--- a/packages/efl/edb-utils_1.0.5.005.bb
+++ b/packages/efl/edb-utils_1.0.5.006.bb
@@ -12,7 +12,7 @@ PACKAGES = "edb-utils"
FILES_${PN} = "${bindir}/edb_ed ${bindir}/edb_vt_ed ${bindir}/edb_gtk_ed"
RDEPENDS_${PN} += "ncurses"
-SRC_URI = "http://enlightenment.freedesktop.org/files/edb-${PV}.tar.gz"
+SRC_URI = "${E_URI}/edb-${PV}.tar.gz"
S = "${WORKDIR}/edb-${PV}"
libraries = ""
diff --git a/packages/efl/edb_1.0.5.005.bb b/packages/efl/edb_1.0.5.006.bb
index a152530b47..a152530b47 100644
--- a/packages/efl/edb_1.0.5.005.bb
+++ b/packages/efl/edb_1.0.5.006.bb
diff --git a/packages/efl/edb_20060128.bb b/packages/efl/edb_20060128.bb
index 0d0d899037..8b1f39ed88 100644
--- a/packages/efl/edb_20060128.bb
+++ b/packages/efl/edb_20060128.bb
@@ -6,7 +6,7 @@ PR = "r1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/edb;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/edb;date=${PV}"
S = "${WORKDIR}/edb"
EXTRA_OECONF += "--disable-gtk"
diff --git a/packages/efl/edje-native_0.5.0.023.bb b/packages/efl/edje-native_0.5.0.025.bb
index 44b4e80c20..5e7bed336d 100644
--- a/packages/efl/edje-native_0.5.0.023.bb
+++ b/packages/efl/edje-native_0.5.0.025.bb
@@ -7,8 +7,7 @@ inherit native
DEPENDS = "evas-native ecore-native eet-native embryo-native imlib2-native"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/edje"
-EXTRA_OECONF = "--with-fb-only \
- --with-evas-config=${STAGING_BINDIR}/evas-config-native \
+EXTRA_OECONF = "--with-evas-config=${STAGING_BINDIR}/evas-config-native \
--with-ecore-config=${STAGING_BINDIR}/ecore-config-native \
--with-eet-config=${STAGING_BINDIR}/eet-config-native \
--with-embryo-config=${STAGING_BINDIR}/embryo-config-native \
diff --git a/packages/efl/edje-utils_0.5.0.023.bb b/packages/efl/edje-utils_0.5.0.025.bb
index 837157ee3e..f8eb917e4d 100644
--- a/packages/efl/edje-utils_0.5.0.023.bb
+++ b/packages/efl/edje-utils_0.5.0.025.bb
@@ -9,8 +9,8 @@ PACKAGES = "edje-utils"
FILES_${PN} = "${bindir}/edje ${bindir}/edje_* ${datadir}/edje/data/template ${datadir}/edje/include"
RDEPENDS_${PN} += "embryo-utils cpp cpp-symlinks gcc gcc-symlinks"
-SRC_URI = "http://enlightenment.freedesktop.org/files/edje-${PV}.tar.gz \
- cvs://anonymous@thinktux.net/root;module=e17/libs/edje/m4;date=20060101"
+SRC_URI = "${E_URI}/edje-${PV}.tar.gz \
+ ${E_CVS};module=e17/libs/edje/m4;date=20060101"
S = "${WORKDIR}/edje-${PV}"
libraries = ""
diff --git a/packages/efl/edje_0.5.0.023.bb b/packages/efl/edje_0.5.0.025.bb
index 43e135ac5d..0d4acab003 100644
--- a/packages/efl/edje_0.5.0.023.bb
+++ b/packages/efl/edje_0.5.0.025.bb
@@ -18,7 +18,7 @@ FILES_${PN}-examples = "${datadir}/edje/data/images ${datadir}/edje/data/src ${d
FILES_${SRCNAME}-themes = ""
-SRC_URI += "cvs://anonymous@thinktux.net/root;module=e17/libs/edje/m4;date=20060101"
+SRC_URI += "${E_CVS};module=e17/libs/edje/m4;date=20060101"
LEAD_SONAME = "libedje.so"
diff --git a/packages/efl/edje_20060128.bb b/packages/efl/edje_20060128.bb
index 9a23201f80..e4c1d4f51b 100644
--- a/packages/efl/edje_20060128.bb
+++ b/packages/efl/edje_20060128.bb
@@ -6,7 +6,7 @@ PR = "r1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/edje;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/edje;date=${PV}"
S = "${WORKDIR}/edje"
LEAD_SONAME = "libedje.so"
diff --git a/packages/efl/eet-native_0.9.10.023.bb b/packages/efl/eet-native_0.9.10.025.bb
index fa20c9fb30..fa20c9fb30 100644
--- a/packages/efl/eet-native_0.9.10.023.bb
+++ b/packages/efl/eet-native_0.9.10.025.bb
diff --git a/packages/efl/eet_0.9.10.023.bb b/packages/efl/eet_0.9.10.025.bb
index 6e6032e098..6e6032e098 100644
--- a/packages/efl/eet_0.9.10.023.bb
+++ b/packages/efl/eet_0.9.10.025.bb
diff --git a/packages/efl/eet_20060128.bb b/packages/efl/eet_20060128.bb
index 70dde944fa..883c122a94 100644
--- a/packages/efl/eet_20060128.bb
+++ b/packages/efl/eet_20060128.bb
@@ -8,5 +8,5 @@ PR = "r1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/eet;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/eet;date=${PV}"
S = "${WORKDIR}/eet"
diff --git a/packages/efl/embryo-native_0.9.1.023.bb b/packages/efl/embryo-native_0.9.1.025.bb
index a33adb7bd2..a33adb7bd2 100644
--- a/packages/efl/embryo-native_0.9.1.023.bb
+++ b/packages/efl/embryo-native_0.9.1.025.bb
diff --git a/packages/efl/embryo-utils_0.9.1.023.bb b/packages/efl/embryo-utils_0.9.1.025.bb
index 7899e4aa2f..d507c53cce 100644
--- a/packages/efl/embryo-utils_0.9.1.023.bb
+++ b/packages/efl/embryo-utils_0.9.1.025.bb
@@ -8,7 +8,7 @@ PR = "r4"
inherit efl
-SRC_URI = "http://enlightenment.freedesktop.org/files/embryo-${PV}.tar.gz"
+SRC_URI = "${E_URI}/embryo-${PV}.tar.gz"
S = "${WORKDIR}/embryo-${PV}"
PACKAGES = "embryo-utils"
diff --git a/packages/efl/embryo_0.9.1.023.bb b/packages/efl/embryo_0.9.1.025.bb
index 0009c0a149..0009c0a149 100644
--- a/packages/efl/embryo_0.9.1.023.bb
+++ b/packages/efl/embryo_0.9.1.025.bb
diff --git a/packages/efl/embryo_20060128.bb b/packages/efl/embryo_20060128.bb
index 58ff67869b..bdf208aeda 100644
--- a/packages/efl/embryo_20060128.bb
+++ b/packages/efl/embryo_20060128.bb
@@ -8,5 +8,5 @@ PR = "r1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/embryo;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/embryo;date=${PV}"
S = "${WORKDIR}/embryo"
diff --git a/packages/efl/emotion_20060128.bb b/packages/efl/emotion_20060128.bb
index a567c030cc..90847f297a 100644
--- a/packages/efl/emotion_20060128.bb
+++ b/packages/efl/emotion_20060128.bb
@@ -9,7 +9,7 @@ DEFAULT_PREFERENCE = "-1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/emotion;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/emotion;date=${PV}"
S = "${WORKDIR}/emotion"
PACKAGES += "emotion-plugins"
diff --git a/packages/efl/engrave_20060128.bb b/packages/efl/engrave_20060128.bb
index e3b64a82d3..63eb24eb1f 100644
--- a/packages/efl/engrave_20060128.bb
+++ b/packages/efl/engrave_20060128.bb
@@ -5,7 +5,7 @@ DEPENDS = "virtual/evas virtual/ecore"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/engrave;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/engrave;date=${PV}"
S = "${WORKDIR}/engrave"
do_stage_append() {
diff --git a/packages/efl/epeg_0.9.0.005.bb b/packages/efl/epeg_0.9.0.006.bb
index c35ec63606..c35ec63606 100644
--- a/packages/efl/epeg_0.9.0.005.bb
+++ b/packages/efl/epeg_0.9.0.006.bb
diff --git a/packages/efl/epeg_20060128.bb b/packages/efl/epeg_20060128.bb
index 36ababb26f..df63c0f335 100644
--- a/packages/efl/epeg_20060128.bb
+++ b/packages/efl/epeg_20060128.bb
@@ -4,5 +4,5 @@ DEPENDS = "jpeg"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/epeg;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/epeg;date=${PV}"
S = "${WORKDIR}/epeg"
diff --git a/packages/efl/epsilon_0.3.0.005.bb b/packages/efl/epsilon_0.3.0.006.bb
index d454a538a6..58c0f02a45 100644
--- a/packages/efl/epsilon_0.3.0.005.bb
+++ b/packages/efl/epsilon_0.3.0.006.bb
@@ -6,7 +6,7 @@ DEPENDS = "virtual/imlib2 epeg libpng virtual/evas virtual/ecore perl-native edj
inherit efl
SRC_URI += "file://compile-fix.patch;patch=1 \
- cvs://anonymous@thinktux.net/root;module=e17/libs/epsilon/m4;date=20060101"
+ ${E_CVS};module=e17/libs/epsilon/m4;date=20060101"
do_configure_prepend() {
install -d "${S}/m4"
diff --git a/packages/efl/esmart-fb_0.9.0.005.bb b/packages/efl/esmart-fb_0.9.0.006.bb
index 35bef239ee..35bef239ee 100644
--- a/packages/efl/esmart-fb_0.9.0.005.bb
+++ b/packages/efl/esmart-fb_0.9.0.006.bb
diff --git a/packages/efl/esmart-fb_20060128.bb b/packages/efl/esmart-fb_20060128.bb
index 302fb95159..655a61d06f 100644
--- a/packages/efl/esmart-fb_20060128.bb
+++ b/packages/efl/esmart-fb_20060128.bb
@@ -1,7 +1,7 @@
include esmart.inc
PR = "r0"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/esmart;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/esmart;date=${PV}"
S = "${WORKDIR}/esmart"
SRC_URI += "file://disable-x-only-features.patch;patch=1 \
diff --git a/packages/efl/esmart-x11_0.9.0.005.bb b/packages/efl/esmart-x11_0.9.0.006.bb
index cb5cc1da91..cb5cc1da91 100644
--- a/packages/efl/esmart-x11_0.9.0.005.bb
+++ b/packages/efl/esmart-x11_0.9.0.006.bb
diff --git a/packages/efl/esmart-x11_20060128.bb b/packages/efl/esmart-x11_20060128.bb
index cccb7c36ff..076f4bf22f 100644
--- a/packages/efl/esmart-x11_20060128.bb
+++ b/packages/efl/esmart-x11_20060128.bb
@@ -1,7 +1,7 @@
include esmart.inc
PR = "r2"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/esmart;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/esmart;date=${PV}"
SRC_URI += "file://ecore-fix.patch;patch=1 \
file://include-stdio.patch;patch=1 \
file://compile-fix.patch;patch=1"
diff --git a/packages/efl/etox_20060128.bb b/packages/efl/etox_20060128.bb
index d460479c4f..fa51dba3c4 100644
--- a/packages/efl/etox_20060128.bb
+++ b/packages/efl/etox_20060128.bb
@@ -7,7 +7,7 @@ PR = "r1"
inherit efl
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/etox;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/etox;date=${PV}"
S = "${WORKDIR}/etox"
libdirectory = "src"
diff --git a/packages/efl/evas-fb_0.9.9.023.bb b/packages/efl/evas-fb_0.9.9.023.bb
deleted file mode 100644
index b0c9d5bdb6..0000000000
--- a/packages/efl/evas-fb_0.9.9.023.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-include evas.inc
-DEPENDS = "freetype libpng jpeg eet"
-PR = "r2"
-
-EXTRA_OECONF = "--enable-fb \
- --disable-directfb \
- --disable-buffer \
- --disable-software-qtopia \
- --disable-software-x11 \
- --disable-gl-x11 \
- --disable-xrender-x11 \
- --enable-image-loader-eet \
- --disable-image-loader-edb \
- --enable-image-loader-png \
- --enable-image-loader-jpeg \
- --enable-small-dither-mask \
- --enable-cpu-c \
- --enable-font-loader-eet \
- --enable-scale-sample \
- --enable-scale-smooth \
- --enable-convert-yuv \
- --disable-convert-8-rgb-332 \
- --disable-convert-8-rgb-666 \
- --disable-convert-8-rgb-232 \
- --disable-convert-8-rgb-222 \
- --disable-convert-8-rgb-221 \
- --disable-convert-8-rgb-121 \
- --disable-convert-8-rgb-111 \
- --enable-convert-16-rgb-565 \
- --disable-convert-16-rgb-555 \
- --disable-convert-16-rgb-444 \
- --disable-convert-16-rgb-ipq \
- --enable-convert-16-rgb-rot-0 \
- --disable-convert-16-rgb-rot-90 \
- --enable-convert-16-rgb-rot-270 \
- --disable-convert-24-rgb-888 \
- --disable-convert-24-bgr-888 \
- --disable-convert-32-rgb-8888 \
- --disable-convert-32-rgbx-8888 \
- --disable-convert-32-bgr-8888 \
- --disable-convert-32-bgrx-8888 \
- --disable-convert-32-rgb-rot-0 \
- --disable-convert-32-rgb-rot-90 \
- --disable-convert-32-rgb-rot-270"
-
-headers = "Evas_Engine_Buffer.h \
- Evas_Engine_FB.h \
- Evas.h"
diff --git a/packages/efl/evas-fb_0.9.9.025.bb b/packages/efl/evas-fb_0.9.9.025.bb
new file mode 100644
index 0000000000..a7b1bd4029
--- /dev/null
+++ b/packages/efl/evas-fb_0.9.9.025.bb
@@ -0,0 +1,48 @@
+include evas.inc
+DEPENDS = "freetype libpng jpeg eet"
+PR = "r2"
+
+EXTRA_OECONF = "--enable-fb \
+ --disable-directfb \
+ --enable-buffer \
+ --disable-software-qtopia \
+ --disable-software-x11 \
+ --disable-gl-x11 \
+ --disable-xrender-x11 \
+ --enable-image-loader-eet \
+ --disable-image-loader-edb \
+ --enable-image-loader-png \
+ --enable-image-loader-jpeg \
+ --enable-small-dither-mask \
+ --enable-cpu-c \
+ --enable-font-loader-eet \
+ --enable-scale-sample \
+ --enable-scale-smooth \
+ --enable-convert-yuv \
+ --enable-convert-8-rgb-332 \
+ --enable-convert-8-rgb-666 \
+ --enable-convert-8-rgb-232 \
+ --enable-convert-8-rgb-222 \
+ --enable-convert-8-rgb-221 \
+ --enable-convert-8-rgb-121 \
+ --enable-convert-8-rgb-111 \
+ --enable-convert-16-rgb-565 \
+ --enable-convert-16-rgb-555 \
+ --enable-convert-16-rgb-444 \
+ --enable-convert-16-rgb-ipq \
+ --enable-convert-16-rgb-rot-0 \
+ --enable-convert-16-rgb-rot-90 \
+ --enable-convert-16-rgb-rot-270 \
+ --enable-convert-24-rgb-888 \
+ --enable-convert-24-bgr-888 \
+ --enable-convert-32-rgb-8888 \
+ --enable-convert-32-rgbx-8888 \
+ --enable-convert-32-bgr-8888 \
+ --enable-convert-32-bgrx-8888 \
+ --enable-convert-32-rgb-rot-0 \
+ --enable-convert-32-rgb-rot-90 \
+ --enable-convert-32-rgb-rot-270"
+
+headers = "../modules/engines/buffer/Evas_Engine_Buffer.h \
+ ../modules/engines/fb/Evas_Engine_FB.h \
+ Evas.h"
diff --git a/packages/efl/evas-fb_20060113.bb b/packages/efl/evas-fb_20060113.bb
index e3bbccc383..3162ab147a 100644
--- a/packages/efl/evas-fb_20060113.bb
+++ b/packages/efl/evas-fb_20060113.bb
@@ -2,7 +2,7 @@ include evas.inc
DEPENDS = "freetype libpng jpeg eet"
PR = "r0"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/evas;date=${PV} \
+SRC_URI = "${E_CVS};module=e17/libs/evas;date=${PV} \
file://pkg.m4"
S = "${WORKDIR}/evas"
diff --git a/packages/efl/evas-native_0.9.9.023.bb b/packages/efl/evas-native_0.9.9.025.bb
index cb4336dfab..fafaaf2c62 100644
--- a/packages/efl/evas-native_0.9.9.023.bb
+++ b/packages/efl/evas-native_0.9.9.025.bb
@@ -2,4 +2,7 @@ include evas-fb_${PV}.bb
inherit native
DEPENDS = "freetype-native libpng-native jpeg-native eet-native"
PROVIDES = "evas-native"
-EXTRA_OECONF += "--enable-buffer"
+
+do_install() {
+ autotools_do_install
+} \ No newline at end of file
diff --git a/packages/efl/evas-x11_0.9.9.023.bb b/packages/efl/evas-x11_0.9.9.025.bb
index 4b833d8d9c..125dfb0c97 100644
--- a/packages/efl/evas-x11_0.9.9.023.bb
+++ b/packages/efl/evas-x11_0.9.9.025.bb
@@ -44,9 +44,9 @@ EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
--disable-convert-32-rgb-rot-90 \
--disable-convert-32-rgb-rot-270"
-headers = "Evas_Engine_Software_X11.h \
- Evas_Engine_XRender_X11.h \
- Evas_Engine_Buffer.h \
- Evas_Engine_FB.h \
+headers = "../modules/engines/software_x11/Evas_Engine_Software_X11.h \
+ ../modules/engines/xrender_x11/Evas_Engine_XRender_X11.h \
+ ../modules/engines/buffer/Evas_Engine_Buffer.h \
+ ../modules/engines/fb/Evas_Engine_FB.h \
Evas.h"
diff --git a/packages/efl/evas-x11_20060113.bb b/packages/efl/evas-x11_20060113.bb
index dab078a9bc..8925920fcf 100644
--- a/packages/efl/evas-x11_20060113.bb
+++ b/packages/efl/evas-x11_20060113.bb
@@ -2,7 +2,7 @@ include evas.inc
DEPENDS += "libx11 libxext freetype"
PR = "r4"
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/evas;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/evas;date=${PV}"
S = "${WORKDIR}/evas"
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
diff --git a/packages/efl/evas.inc b/packages/efl/evas.inc
index 33625e812d..3199453d31 100644
--- a/packages/efl/evas.inc
+++ b/packages/efl/evas.inc
@@ -30,4 +30,5 @@ do_configure_prepend() {
}
headers = "<override me>"
-libraries = "libevas" \ No newline at end of file
+libraries = "libevas"
+FILES_${PN} += "/usr/lib/evas/" \ No newline at end of file
diff --git a/packages/efl/ewl_0.0.4.005.bb b/packages/efl/ewl_0.0.4.006.bb
index 85b85e0c05..85b85e0c05 100644
--- a/packages/efl/ewl_0.0.4.005.bb
+++ b/packages/efl/ewl_0.0.4.006.bb
diff --git a/packages/efl/imlib2-fb_1.2.1.010.bb b/packages/efl/imlib2-fb_1.2.1.011.bb
index 09fecdaf8b..09fecdaf8b 100644
--- a/packages/efl/imlib2-fb_1.2.1.010.bb
+++ b/packages/efl/imlib2-fb_1.2.1.011.bb
diff --git a/packages/efl/imlib2-fb_20060128.bb b/packages/efl/imlib2-fb_20060128.bb
index 88f988e8a0..68357df7af 100644
--- a/packages/efl/imlib2-fb_20060128.bb
+++ b/packages/efl/imlib2-fb_20060128.bb
@@ -1,6 +1,6 @@
include imlib2.inc
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/imlib2;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/imlib2;date=${PV}"
S = "${WORKDIR}/imlib2"
EXTRA_OECONF = "--without-x \
diff --git a/packages/efl/imlib2-native_1.2.1.010.bb b/packages/efl/imlib2-native_1.2.1.011.bb
index 6f8ebe477a..6f8ebe477a 100644
--- a/packages/efl/imlib2-native_1.2.1.010.bb
+++ b/packages/efl/imlib2-native_1.2.1.011.bb
diff --git a/packages/efl/imlib2-native_20060128.bb b/packages/efl/imlib2-native_20060128.bb
index 11c2fa4b89..de546add72 100644
--- a/packages/efl/imlib2-native_20060128.bb
+++ b/packages/efl/imlib2-native_20060128.bb
@@ -1,6 +1,6 @@
include imlib2.inc
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/imlib2;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/imlib2;date=${PV}"
S = "${WORKDIR}/imlib2"
inherit native
diff --git a/packages/efl/imlib2-x11_1.2.1.010.bb b/packages/efl/imlib2-x11_1.2.1.011.bb
index fec8b32205..fec8b32205 100644
--- a/packages/efl/imlib2-x11_1.2.1.010.bb
+++ b/packages/efl/imlib2-x11_1.2.1.011.bb
diff --git a/packages/efl/imlib2-x11_20060128.bb b/packages/efl/imlib2-x11_20060128.bb
index f77fa6498c..3012466b3b 100644
--- a/packages/efl/imlib2-x11_20060128.bb
+++ b/packages/efl/imlib2-x11_20060128.bb
@@ -1,6 +1,6 @@
include imlib2.inc
-SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/imlib2;date=${PV}"
+SRC_URI = "${E_CVS};module=e17/libs/imlib2;date=${PV}"
S = "${WORKDIR}/imlib2"
DEPENDS += "libx11 libxext"
diff --git a/packages/evince/evince_0.3.2.bb b/packages/evince/evince_0.3.2.bb
deleted file mode 100644
index 18ad005092..0000000000
--- a/packages/evince/evince_0.3.2.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "Evince is simply a document viewer"
-LICENSE = "GPL"
-DEPENDS = "tiff espgs poppler gtk+ libgnomeui libgnomeprint libgnomeprintui"
-RDEPENDS = "espgs gconf"
-RRECOMMENDS = "gnome-vfs-plugin-file"
-PR = "r1"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/evince/0.3/${PN}-${PV}.tar.bz2 \
- file://no-doc.patch;patch=1"
-
-EXTRA_OECONF = "--disable-tiff"
-
-inherit gnome pkgconfig
-
-
diff --git a/packages/evince/evince_0.5.1.bb b/packages/evince/evince_0.5.1.bb
deleted file mode 100644
index a772bb2de5..0000000000
--- a/packages/evince/evince_0.5.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Evince is simply a document viewer"
-LICENSE = "GPL"
-DEPENDS = "tiff espgs poppler gtk+ libgnomeui libgnomeprint libgnomeprintui"
-RDEPENDS = "espgs gconf"
-RRECOMMENDS = "gnome-vfs-plugin-file"
-PR = "r0"
-
-inherit gnome pkgconfig
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/evince/0.5/${PN}-${PV}.tar.bz2 \
- file://more-no-doc.patch;patch=1"
-
-EXTRA_OECONF = "--disable-tiff"
-
diff --git a/packages/evince/evince_0.5.0.bb b/packages/evince/evince_0.5.2.bb
index a772bb2de5..a772bb2de5 100644
--- a/packages/evince/evince_0.5.0.bb
+++ b/packages/evince/evince_0.5.2.bb
diff --git a/packages/gnumeric/gnumeric-1.3.1.cvs/.mtn2git_empty b/packages/farsight/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnumeric/gnumeric-1.3.1.cvs/.mtn2git_empty
+++ b/packages/farsight/.mtn2git_empty
diff --git a/packages/farsight/farsight_20060322.bb b/packages/farsight/farsight_20060322.bb
new file mode 100644
index 0000000000..994569ac57
--- /dev/null
+++ b/packages/farsight/farsight_20060322.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "FarSight is an audio/video conferencing framework specifically designed for Instant Messengers."
+HOMEPAGE = "http://farsight.sf.net"
+SRC_URI = "http://ewi546.ewi.utwente.nl/OE/source/${PN}_${PV}.tar.bz2"
+PR="r1"
+
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+
+DEPENDS = "glib-2.0 libxml2 zlib dbus libjingle gstreamer gst-plugins-base"
+
+inherit autotools pkgconfig
+
+S= "${WORKDIR}/${PN}"
+EXTRA_OECONF = " \
+--disable-debug \
+ --disable-gtk-doc \
+ --disable-sequence-diagrams \
+ --disable-sofia-sip \
+ --enable-jingle-p2p \
+ --disable-gnet \
+ --disable-msnwebcam \
+ --disable-msnavconf \
+ --disable-yahoowebcam \
+ --enable-rtp"
+
+FILES_${PN} += "${libdir}/farsight-0.1/*so"
+FILES_${PN}-dev += "${libdir}/farsight-0.1/*.a ${libdir}/farsight-0.1/*.so.*"
+
+do_stage() {
+autotools_stage_all
+}
+
+
+
diff --git a/packages/farsight/gst-plugins-farsight_20060322.bb b/packages/farsight/gst-plugins-farsight_20060322.bb
new file mode 100644
index 0000000000..49f2d2a1f5
--- /dev/null
+++ b/packages/farsight/gst-plugins-farsight_20060322.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "FarSight is an audio/video conferencing framework specifically designed for Instant Messengers."
+HOMEPAGE = "http://farsight.sf.net"
+SRC_URI = "http://ewi546.ewi.utwente.nl/OE/source/${PN}_${PV}.tar.bz2"
+
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+
+DEPENDS = "glib-2.0 libxml2 zlib dbus libjingle gstreamer gst-plugins-base"
+
+inherit autotools pkgconfig
+
+S= "${WORKDIR}/${PN}"
+EXTRA_OECONF = " \
+--disable-debug \
+ --disable-jrtplib \
+ --disable-mimic \
+ --disable-gsm \
+ --disable-jasper \
+ --enable-jingle-p2p \
+ --with-plugins=rtpdemux,rtpjitterbuffer"
+
+
+FILES_${PN} += "${libdir}/gstreamer-0.10/*so"
+FILES_${PN}-dev += "${libdir}/gstreamer-0.10/*.a ${libdir}/gstreamer-0.10/*.so.*"
+
+do_stage() {
+autotools_stage_all
+}
+
+
+
diff --git a/packages/gnumeric/gnumeric-1.3.1/.mtn2git_empty b/packages/galago/eds-feed/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnumeric/gnumeric-1.3.1/.mtn2git_empty
+++ b/packages/galago/eds-feed/.mtn2git_empty
diff --git a/packages/galago/eds-feed/disable-bonobo.patch b/packages/galago/eds-feed/disable-bonobo.patch
new file mode 100644
index 0000000000..3a2097877a
--- /dev/null
+++ b/packages/galago/eds-feed/disable-bonobo.patch
@@ -0,0 +1,62 @@
+Index: eds-feed-0.3.2/configure.ac
+===================================================================
+--- eds-feed-0.3.2.orig/configure.ac 2005-08-28 19:11:39.000000000 +0000
++++ eds-feed-0.3.2/configure.ac 2005-12-16 09:22:10.000000000 +0000
+@@ -65,7 +65,7 @@
+ libxml-2.0)
+
+ # Check which version of eds we're using
+-PKG_CHECK_MODULES(EDS, libebook-1.2 >= 1.1.4 libedata-book-1.2 >= 1.1.4)
++PKG_CHECK_MODULES(EDS, libebook-1.2 >= 1.1.4)
+
+ PACKAGE_CFLAGS="$PACKAGE_CFLAGS $EDS_CFLAGS"
+ PACKAGE_LIBS="$PACKAGE_LIBS $EDS_LIBS"
+Index: eds-feed-0.3.2/src/main.c
+===================================================================
+--- eds-feed-0.3.2.orig/src/main.c 2005-08-21 07:26:02.000000000 +0000
++++ eds-feed-0.3.2/src/main.c 2005-12-16 09:24:38.000000000 +0000
+@@ -20,17 +20,11 @@
+ */
+ #include <glib.h>
+ #include <libgalago/galago.h>
+-#include <libedata-book/Evolution-DataServer-Addressbook.h>
+
+ #include <libebook/e-book.h>
+-#include <libedata-book/e-data-book-factory.h>
+-#include <bonobo/bonobo-main.h>
+
+ #include <string.h>
+
+-#define E_DATA_BOOK_FACTORY_OAF_ID \
+- "OAFIID:GNOME_Evolution_DataServer_BookFactory"
+-
+ static EBookView *book_view = NULL;
+ static EBook *book = NULL;
+ static gulong book_view_tag = 0;
+@@ -157,8 +151,8 @@
+ galago_person_set_photo(person, NULL);
+ else
+ {
+- galago_photo_new(person, (unsigned char *)ephoto->data,
+- ephoto->length);
++// galago_photo_new(person, (unsigned char *)ephoto->data,
++// ephoto->length);
+ }
+ }
+
+@@ -294,15 +288,6 @@
+
+ galago_core_set_exit_with_daemon(TRUE);
+
+- if (!bonobo_init_full(NULL, NULL, bonobo_activation_orb_get(),
+- CORBA_OBJECT_NIL, CORBA_OBJECT_NIL))
+- {
+- fprintf(stderr, "Unable to initialize bonobo.\n");
+- exit(1);
+- }
+-
+- bonobo_activate();
+-
+ setup_book_view();
+ setup_services();
+
diff --git a/packages/galago/eds-feed_0.3.2.bb b/packages/galago/eds-feed_0.3.2.bb
new file mode 100644
index 0000000000..5ad9a822a6
--- /dev/null
+++ b/packages/galago/eds-feed_0.3.2.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Galago linkage to the Evolution Data Server."
+HOMEPAGE = "http://www.galago-project.org/"
+LICENSE = "GPL"
+DEPENDS = "gettext libgalago dbus glib-2.0 eds-dbus"
+
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${P}.tar.gz \
+ file://disable-bonobo.patch;patch=1"
+# file://no-check.patch;patch=1"
+#EXTRA_OECONF = "--disable-binreloc"
+
+FILES_${PN} += "${libdir}/galago/eds-feed"
+
+inherit autotools pkgconfig
+
diff --git a/packages/gammu/gammu_1.04.0.bb b/packages/gammu/gammu_1.05.00.bb
index 0b18e2a0bd..514819935c 100644
--- a/packages/gammu/gammu_1.04.0.bb
+++ b/packages/gammu/gammu_1.05.00.bb
@@ -20,7 +20,7 @@ do_stage() {
install -d ${STAGING_INCDIR}/gammu/misc ${STAGING_INCDIR}/gammu/misc/coding \
${STAGING_INCDIR}/gammu/phone ${STAGING_INCDIR}/gammu/phone/at \
${STAGING_INCDIR}/gammu/phone/obex ${STAGING_INCDIR}/gammu/phone/nokia \
- ${STAGING_INCDIR}/gammu/phone/nokia/dct3 ${STAGING_INCDIR}/gammu/phone/nokia/dct4 \
+ ${STAGING_INCDIR}/gammu/phone/nokia/dct3 ${STAGING_INCDIR}/gammu/phone/nokia/dct4tiku \
${STAGING_INCDIR}/gammu/phone/symbian ${STAGING_INCDIR}/gammu/phone/alcatel \
${STAGING_INCDIR}/gammu/service ${STAGING_INCDIR}/gammu/service/sms \
${STAGING_INCDIR}/gammu/service/backup ${STAGING_INCDIR}/gammu/device \
@@ -40,7 +40,7 @@ do_stage() {
install -m 0644 common/phone/obex/*.h ${STAGING_INCDIR}/gammu/phone/obex
install -m 0644 common/phone/nokia/*.h ${STAGING_INCDIR}/gammu/phone/nokia
install -m 0644 common/phone/nokia/dct3/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct3
- install -m 0644 common/phone/nokia/dct4/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct4
+ install -m 0644 common/phone/nokia/dct4tiku/*.h ${STAGING_INCDIR}/gammu/phone/nokia/dct4tiku
install -m 0644 common/phone/symbian/*.h ${STAGING_INCDIR}/gammu/phone/symbian
install -m 0644 common/phone/alcatel/*.h ${STAGING_INCDIR}/gammu/phone/alcatel
install -m 0644 common/service/*.h ${STAGING_INCDIR}/gammu/service
diff --git a/packages/gcalctool/gcalctool/makefile-fix.diff b/packages/gcalctool/gcalctool/makefile-fix.diff
new file mode 100644
index 0000000000..48a546271f
--- /dev/null
+++ b/packages/gcalctool/gcalctool/makefile-fix.diff
@@ -0,0 +1,18 @@
+--- gcalctool/Makefile.am~ 2005-03-23 16:50:10.000000000 +0000
++++ gcalctool/Makefile.am 2006-03-20 13:59:17.000000000 +0000
+@@ -30,15 +30,8 @@
+
+ SCHEMAS_FILE = gcalctool.schemas
+
+-### Install the schemas file in /etc if GNOME support is not compiled in,
+-### and do not install the schemas at all
+-if DISABLE_GNOME
+-schemasdir = $(sysconfdir)/gcalctool
+-schemas_DATA = $(SCHEMAS_FILE)
+-else
+ schemadir = $(GCONF_SCHEMA_FILE_DIR)
+ schema_DATA = $(SCHEMAS_FILE)
+-endif
+
+ EXTRA_DIST = \
+ autogen.sh \
diff --git a/packages/gcalctool/gcalctool_5.7.32.bb b/packages/gcalctool/gcalctool_5.7.32.bb
new file mode 100644
index 0000000000..cb416235a3
--- /dev/null
+++ b/packages/gcalctool/gcalctool_5.7.32.bb
@@ -0,0 +1,13 @@
+LICENSE = "GPL"
+SECTION = "x11"
+DEPENDS = "gtk+"
+MAINTAINER = "Ross Burton <ross@openedhand.com>"
+DESCRIPTION = "gcalctool is a powerful calculator
+PR = "r1"
+
+SRC_URI = "http://download.gnome.org/sources/${PN}/5.7/${PN}-${PV}.tar.gz \
+ file://makefile-fix.diff;patch=1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gnome"
diff --git a/packages/gimp/gimp_2.2.7.bb b/packages/gimp/gimp_2.2.10.bb
index 5380106a64..59fb0a0467 100644
--- a/packages/gimp/gimp_2.2.7.bb
+++ b/packages/gimp/gimp_2.2.10.bb
@@ -13,3 +13,8 @@ EXTRA_OECONF = " --disable-gtktest \
--without-libtiff \
--disable-print \
--enable-mp"
+
+do_configure_append() {
+ find ${S} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
+}
+
diff --git a/packages/gimp/gimp_2.3.3.bb b/packages/gimp/gimp_2.3.3.bb
deleted file mode 100644
index 89d9be3e8d..0000000000
--- a/packages/gimp/gimp_2.3.3.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "The GIMP is the GNU Image Manipulation Program."
-HOMEPAGE = "http://www.gimp.org"
-LICENSE = "GPL"
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-
-SRC_URI = "ftp://ftp.gimp.org/pub/gimp/v2.3/gimp-${PV}.tar.bz2"
-
-DEPENDS = "sed-native libart-lgpl gtk+ jpeg libpng libexif tiff"
-
-inherit autotools pkgconfig
-#Don't laugh, this just builds a threaded gimp
-EXTRA_OECONF = " --disable-gtktest \
- --disable-print \
- --disable-python \
- --enable-mp"
-
-do_configure_append() {
- find ${S} -name Makefile | xargs sed -i s:'-I$(includedir)':'-I.':g
-}
diff --git a/packages/glib-2.0/glib-2.0_2.10.1.bb b/packages/glib-2.0/glib-2.0_2.10.1.bb
new file mode 100644
index 0000000000..fb47651f0c
--- /dev/null
+++ b/packages/glib-2.0/glib-2.0_2.10.1.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "GLib is a general-purpose utility library, \
+which provides many useful data types, macros, \
+type conversions, string utilities, file utilities, a main \
+loop abstraction, and so on. It works on many \
+UNIX-like platforms, Windows, OS/2 and BeOS."
+LICENSE = "LGPL"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS += "glib-2.0-native gtk-doc"
+DEPENDS += "virtual/libiconv virtual/libintl"
+PACKAGES =+ "glib-2.0-utils "
+PR = "r1"
+
+LEAD_SONAME = "libglib-2.0.*"
+FILES_glib-2.0-utils = "${bindir}/*"
+
+EXTRA_OECONF = "--disable-debug"
+
+DEFAULT_PREFERENCE="-1"
+
+SRC_URI = "http://download.gnome.org/sources/glib/2.10//glib-${PV}.tar.bz2 \
+ file://glibconfig-sysdefs.h"
+
+S = "${WORKDIR}/glib-${PV}"
+
+inherit autotools pkgconfig gettext
+
+python () {
+ if bb.data.getVar("USE_NLS", d, 1) == "no":
+ raise bb.parse.SkipPackage("${PN} requires native language support.")
+}
+
+acpaths = ""
+do_configure_prepend () {
+ install -m 0644 ${WORKDIR}/glibconfig-sysdefs.h .
+}
+
+do_stage () {
+ oe_libinstall -so -C glib libglib-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gmodule libgmodule-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gthread libgthread-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gobject libgobject-2.0 ${STAGING_LIBDIR}
+ autotools_stage_includes
+ install -d ${STAGING_INCDIR}/glib-2.0/glib
+ install -m 0755 ${S}/glibconfig.h ${STAGING_INCDIR}/glib-2.0/glibconfig.h
+ install -d ${STAGING_DATADIR}/aclocal
+ install -m 0644 ${S}/m4macros/glib-2.0.m4 ${STAGING_DATADIR}/aclocal/glib-2.0.m4
+ install -m 0644 ${S}/m4macros/glib-gettext.m4 ${STAGING_DATADIR}/aclocal/glib-gettext.m4
+}
diff --git a/packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch b/packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch
new file mode 100644
index 0000000000..fb733b9194
--- /dev/null
+++ b/packages/glibc/glibc-2.4/fixup-aeabi-syscalls.patch
@@ -0,0 +1,329 @@
+Fix up ARM EABI for removed syscalls
+http://sourceware.org/ml/libc-ports/2006-03/msg00029.html
+
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S
+===================================================================
+--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/socket.S 2006-03-21 15:58:10.000000000 -0500
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,131 +0,0 @@
+-/* Copyright (C) 1995, 1996, 1997, 1998, 2003, 2005
+- Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, write to the Free
+- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+- 02111-1307 USA. */
+-
+-#include <sysdep-cancel.h>
+-#include <socketcall.h>
+-
+-#define P(a, b) P2(a, b)
+-#define P2(a, b) a##b
+-
+- .text
+-/* The socket-oriented system calls are handled unusally in Linux.
+- They are all gated through the single `socketcall' system call number.
+- `socketcall' takes two arguments: the first is the subcode, specifying
+- which socket function is being called; and the second is a pointer to
+- the arguments to the specific function.
+-
+- The .S files for the other calls just #define socket and #include this. */
+-
+-#ifndef __socket
+-# ifndef NO_WEAK_ALIAS
+-# define __socket P(__,socket)
+-# else
+-# define __socket socket
+-# endif
+-#endif
+-
+-#define PUSHARGS_1 str a1, [sp, $-8]!; .pad #8
+-#define PUSHARGS_2 stmfd sp!, {a1, a2}; .pad #8
+-#define PUSHARGS_3 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* a4 pushed for padding */
+-#define PUSHARGS_4 stmfd sp!, {a1, a2, a3, a4}; .pad #16
+-#define PUSHARGS_5 stmfd sp!, {a1, a2, a3, a4}; .pad #16 /* Caller has already pushed arg 5 */
+-#define PUSHARGS_6 stmfd sp!, {a1, a2, a3, a4}; .pad #16
+-
+-#define POPARGS_1 add sp, sp, #8
+-#define POPARGS_2 add sp, sp, #8
+-#define POPARGS_3 add sp, sp, #16
+-#define POPARGS_4 add sp, sp, #16
+-#define POPARGS_5 add sp, sp, #16
+-#define POPARGS_6 add sp, sp, #16
+-
+-#ifndef NARGS
+-#define NARGS 3 /* If we were called with no wrapper, this is really socket() */
+-#endif
+-
+-#if defined NEED_CANCELLATION && defined CENABLE
+- PSEUDO_PROLOGUE
+-#endif
+-
+-.globl __socket
+-ENTRY (__socket)
+- .fnstart
+-
+- /* This code previously moved sp into ip and stored the args using
+- stmdb ip!, {a1-a4}. It did not modify sp, so the stack never had
+- to be restored after the syscall completed. It saved an
+- instruction and meant no stack cleanup work was required.
+-
+- This will not work in the case of a socket call being interrupted
+- by a signal. If the signal handler uses any stack the arguments
+- to socket will be trashed. The results of a restart of any
+- socket call are then unpredictable. */
+-
+- /* Push args onto the stack. */
+- P(PUSHARGS_,NARGS)
+-
+-#if defined NEED_CANCELLATION && defined CENABLE
+- SINGLE_THREAD_P
+- bne 1f
+-#endif
+-
+- /* Do the system call trap. */
+- mov a1, $P(SOCKOP_,socket)
+- mov a2, sp
+- DO_CALL (socketcall, 0)
+-
+- /* Pop args off the stack */
+- P(POPARGS_,NARGS)
+-
+- /* r0 is < 0 if there was an error. */
+- cmn r0, $124
+- RETINSTR(cc, r14)
+- b PLTJMP(SYSCALL_ERROR)
+-
+-#if defined NEED_CANCELLATION && defined CENABLE
+-1:
+- stmfd sp!, {r7, lr}
+- .save {r7, lr}
+- CENABLE
+- mov ip, r0
+-
+- mov r0, #P(SOCKOP_,socket)
+- add r1, sp, #8
+- mov r7, #SYS_ify(socketcall)
+- swi 0x0
+-
+- mov r7, r0
+- mov r0, ip
+- CDISABLE
+- mov r0, r7
+- ldmfd sp!, {r7, lr}
+-
+- P(POPARGS_,NARGS)
+-
+- /* r0 is < 0 if there was an error. */
+- cmn r0, $124
+- RETINSTR(cc, r14)
+- b PLTJMP(SYSCALL_ERROR)
+-#endif
+-
+- .fnend
+-PSEUDO_END (__socket)
+-
+-#ifndef NO_WEAK_ALIAS
+-weak_alias (__socket, socket)
+-#endif
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/syscalls.list 2006-03-21 15:58:46.000000000 -0500
+@@ -0,0 +1,34 @@
++# File name Caller Syscall name # args Strong name Weak names
++
++# semaphore and shm system calls
++msgctl - msgctl i:iip __msgctl msgctl
++msgget - msgget i:ii __msgget msgget
++msgrcv - msgrcv Ci:ibnii __msgrcv msgrcv
++msgsnd - msgsnd Ci:ibni __msgsnd msgsnd
++shmat - shmat i:ipi __shmat shmat
++shmctl - shmctl i:iip __shmctl shmctl
++shmdt - shmdt i:s __shmdt shmdt
++shmget - shmget i:iii __shmget shmget
++semop - semop i:ipi __semop semop
++semtimedop - semtimedop i:ipip semtimedop
++semget - semget i:iii __semget semget
++semctl - semctl i:iiii __semctl semctl
++
++# proper socket implementations:
++accept - accept Ci:iBN __libc_accept __accept accept
++bind - bind i:ipi __bind bind
++connect - connect Ci:ipi __libc_connect __connect_internal __connect connect
++getpeername - getpeername i:ipp __getpeername getpeername
++getsockname - getsockname i:ipp __getsockname getsockname
++getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
++listen - listen i:ii __listen listen
++recv - recv Ci:ibni __libc_recv __recv recv
++recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
++recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
++send - send Ci:ibni __libc_send __send send
++sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
++sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
++setsockopt - setsockopt i:iiibn __setsockopt setsockopt
++shutdown - shutdown i:ii __shutdown shutdown
++socket - socket i:iii __socket socket
++socketpair - socketpair i:iiif __socketpair socketpair
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h
+===================================================================
+--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500
++++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500
+@@ -53,9 +53,9 @@
+ UNDOARGS_##args; \
+ cmn r0, $4096;
+
+-/* DOARGS pushes four bytes on the stack for five arguments, and nothing
+- otherwise. In order to preserve doubleword alignment, sometimes we must
+- save an extra register. */
++/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for
++ six arguments, and nothing for fewer. In order to preserve doubleword
++ alignment, sometimes we must save an extra register. */
+
+ # define DOCARGS_0 stmfd sp!, {r7, lr}
+ # define UNDOCARGS_0
+@@ -81,6 +81,10 @@
+ # define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}
+ # define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr}
+
++# define DOCARGS_6 stmfd sp!, {r0, r1, r2, r3, r7, lr}
++# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}
++# define RESTORE_LR_6 RESTORE_LR_0
++
+ # ifdef IS_IN_libpthread
+ # define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
+ # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h
+===================================================================
+--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:10.000000000 -0500
++++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/nptl/sysdep-cancel.h 2006-03-21 15:58:46.000000000 -0500
+@@ -64,9 +64,9 @@
+ UNDOARGS_##args; \
+ cmn r0, $4096;
+
+-/* DOARGS pushes four bytes on the stack for five arguments, and nothing
+- otherwise. In order to preserve doubleword alignment, sometimes we must
+- save an extra register. */
++/* DOARGS pushes four bytes on the stack for five arguments, eight bytes for
++ six arguments, and nothing for fewer. In order to preserve doubleword
++ alignment, sometimes we must save an extra register. */
+
+ # define RESTART_UNWIND .fnend; .fnstart; .save {r7, lr}
+
+@@ -94,6 +94,10 @@
+ # define UNDOCARGS_5 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4}; .save {r7, lr}; .pad #4
+ # define RESTORE_LR_5 ldmfd sp!, {r4, r7, lr}
+
++# define DOCARGS_6 .save {r4, r5}; stmfd sp!, {r0, r1, r2, r3, r7, lr}; .save {r7, lr}; .pad #20
++# define UNDOCARGS_6 ldmfd sp!, {r0, r1, r2, r3}; .fnend; .fnstart; .save {r4, r5}; .save {r7, lr}
++# define RESTORE_LR_6 RESTORE_LR_0
++
+ # ifdef IS_IN_libpthread
+ # define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
+ # define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h
+===================================================================
+--- glibc.orig/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:10.000000000 -0500
++++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/sysdep.h 2006-03-21 15:58:46.000000000 -0500
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2005
++/* Copyright (C) 2005, 2006
+ Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+@@ -29,6 +29,12 @@
+ # error Kernel headers are too old
+ #endif
+
++/* Don't use stime, even if the kernel headers define it. We have
++ settimeofday, and some EABI kernels have removed stime. Similarly
++ use setitimer to implement alarm. */
++#undef __NR_stime
++#undef __NR_alarm
++
+ /* The ARM EABI user interface passes the syscall number in r7, instead
+ of in the swi. This is more efficient, because the kernel does not need
+ to fetch the swi from memory to find out the number; which can be painful
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ glibc/ports/sysdeps/unix/sysv/linux/arm/eabi/umount.c 2006-03-21 15:58:46.000000000 -0500
+@@ -0,0 +1,31 @@
++/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++ Contributed by David Huggins-Daines <dhd@debian.org>, 2000.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* Since we don't have an oldumount system call, do what the kernel
++ does down here. */
++
++extern long int __umount2 (const char *name, int flags);
++
++long int
++__umount (const char *name)
++{
++ return __umount2 (name, 0);
++}
++
++weak_alias (__umount, umount);
+Index: glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ glibc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h 2006-03-20 17:26:58.000000000 -0500
+@@ -0,0 +1,31 @@
++/* Set flags signalling availability of kernel features based on given
++ kernel version number.
++ Copyright (C) 2006 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++/* The utimes syscall was added before 2.6.1. */
++#if __LINUX_KERNEL_VERSION >= 132609
++# define __ASSUME_UTIMES 1
++#endif
++
++/* The new getrlimit syscall was added sometime before 2.4.6. */
++#if __LINUX_KERNEL_VERSION >= 132102
++#define __ASSUME_NEW_GETRLIMIT_SYSCALL 1
++#endif
++
++#include_next <kernel-features.h>
diff --git a/packages/glibc/glibc_2.4.bb b/packages/glibc/glibc_2.4.bb
index d20edf54fd..faaf27ced3 100644
--- a/packages/glibc/glibc_2.4.bb
+++ b/packages/glibc/glibc_2.4.bb
@@ -4,7 +4,7 @@ LICENSE = "LGPL"
SECTION = "libs"
PRIORITY = "required"
DEFAULT_PREFERENCE = "-1"
-PR = "r3"
+PR = "r4"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/glibc-2.4"
@@ -52,6 +52,7 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/glibc/glibc-2.4.tar.bz2 \
file://ldsocache-varrun.patch;patch=1 \
file://nptl-crosscompile.patch;patch=1 \
file://glibc-2.4-compile.patch;patch=1 \
+ file://fixup-aeabi-syscalls.patch;patch=1 \
file://generic-bits_select.h \
file://generic-bits_types.h \
file://generic-bits_typesizes.h \
diff --git a/packages/gnome/goffice_0.0.1.bb b/packages/gnome/goffice_0.0.1.bb
deleted file mode 100644
index eabe184e36..0000000000
--- a/packages/gnome/goffice_0.0.1.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION="Gnome Office Library"
-LICENSE="GPLv2"
-PR="r1"
-
-DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
-
-inherit gnome pkgconfig
-
-do_stage() {
- gnome_stage_includes
-}
-
-PACKAGES_DYNAMIC = "goffice-plugin-*"
-
-python populate_packages_prepend () {
- goffice_libdir = bb.data.expand('${libdir}/goffice/${PV}/plugins', d)
-
- do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
-}
-
-
diff --git a/packages/gnome/goffice_0.0.3.bb b/packages/gnome/goffice_0.0.3.bb
deleted file mode 100644
index 59372fa5ec..0000000000
--- a/packages/gnome/goffice_0.0.3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION="Gnome Office Library"
-LICENSE="GPLv2"
-PR="r0"
-
-DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
-
-inherit gnome pkgconfig
-
-do_stage() {
- gnome_stage_includes
- oe_libinstall -so -C goffice libgoffice-1 ${STAGING_LIBDIR}
-}
-
-PACKAGES_DYNAMIC = "goffice-plugin-*"
-
-python populate_packages_prepend () {
- goffice_libdir = bb.data.expand('${libdir}/goffice/${PV}/plugins', d)
-
- do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
-}
-
diff --git a/packages/gnome/goffice_0.0.4.bb b/packages/gnome/goffice_0.0.4.bb
deleted file mode 100644
index 59372fa5ec..0000000000
--- a/packages/gnome/goffice_0.0.4.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION="Gnome Office Library"
-LICENSE="GPLv2"
-PR="r0"
-
-DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
-
-inherit gnome pkgconfig
-
-do_stage() {
- gnome_stage_includes
- oe_libinstall -so -C goffice libgoffice-1 ${STAGING_LIBDIR}
-}
-
-PACKAGES_DYNAMIC = "goffice-plugin-*"
-
-python populate_packages_prepend () {
- goffice_libdir = bb.data.expand('${libdir}/goffice/${PV}/plugins', d)
-
- do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
-}
-
diff --git a/packages/gnome/goffice_0.1.0.bb b/packages/gnome/goffice_0.1.0.bb
deleted file mode 100644
index 59372fa5ec..0000000000
--- a/packages/gnome/goffice_0.1.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION="Gnome Office Library"
-LICENSE="GPLv2"
-PR="r0"
-
-DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
-
-inherit gnome pkgconfig
-
-do_stage() {
- gnome_stage_includes
- oe_libinstall -so -C goffice libgoffice-1 ${STAGING_LIBDIR}
-}
-
-PACKAGES_DYNAMIC = "goffice-plugin-*"
-
-python populate_packages_prepend () {
- goffice_libdir = bb.data.expand('${libdir}/goffice/${PV}/plugins', d)
-
- do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
-}
-
diff --git a/packages/gnome/goffice_0.1.2.bb b/packages/gnome/goffice_0.1.2.bb
deleted file mode 100644
index 59372fa5ec..0000000000
--- a/packages/gnome/goffice_0.1.2.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION="Gnome Office Library"
-LICENSE="GPLv2"
-PR="r0"
-
-DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
-
-inherit gnome pkgconfig
-
-do_stage() {
- gnome_stage_includes
- oe_libinstall -so -C goffice libgoffice-1 ${STAGING_LIBDIR}
-}
-
-PACKAGES_DYNAMIC = "goffice-plugin-*"
-
-python populate_packages_prepend () {
- goffice_libdir = bb.data.expand('${libdir}/goffice/${PV}/plugins', d)
-
- do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
-}
-
diff --git a/packages/gnome/goffice_0.2.0.bb b/packages/gnome/goffice_0.2.0.bb
deleted file mode 100644
index 59372fa5ec..0000000000
--- a/packages/gnome/goffice_0.2.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION="Gnome Office Library"
-LICENSE="GPLv2"
-PR="r0"
-
-DEPENDS="glib-2.0 gtk+ pango libgnomeprint libgsf libglade libxml2 libart-lgpl"
-
-inherit gnome pkgconfig
-
-do_stage() {
- gnome_stage_includes
- oe_libinstall -so -C goffice libgoffice-1 ${STAGING_LIBDIR}
-}
-
-PACKAGES_DYNAMIC = "goffice-plugin-*"
-
-python populate_packages_prepend () {
- goffice_libdir = bb.data.expand('${libdir}/goffice/${PV}/plugins', d)
-
- do_split_packages(d, goffice_libdir, '(.*)', 'goffice-plugin-%s', 'Goffice plugin for %s', allow_dirs=True)
-}
-
diff --git a/packages/gnome/goffice_0.0.2.bb b/packages/gnome/goffice_0.2.1.bb
index 59372fa5ec..59372fa5ec 100644
--- a/packages/gnome/goffice_0.0.2.bb
+++ b/packages/gnome/goffice_0.2.1.bb
diff --git a/packages/gnome/libgnomecanvas_2.6.1.1.bb b/packages/gnome/libgnomecanvas_2.6.1.1.bb
index 36ee1aa67f..5c716855e7 100644
--- a/packages/gnome/libgnomecanvas_2.6.1.1.bb
+++ b/packages/gnome/libgnomecanvas_2.6.1.1.bb
@@ -4,7 +4,7 @@ PR = "r1"
DESCRIPTION = "A powerful object-oriented display"
inherit gnome
-DEPENDS = "gnome-vfs libbonobo libglade libart-lgpl"
+DEPENDS = "libglade libart-lgpl"
EXTRA_OECONF = "--disable-gtk-doc"
diff --git a/packages/gnome/libsoup_2.2.7.bb b/packages/gnome/libsoup_2.2.7.bb
new file mode 100644
index 0000000000..e97a11cc96
--- /dev/null
+++ b/packages/gnome/libsoup_2.2.7.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL"
+DESCRIPTION = "An HTTP library implementation in C"
+SECTION = "x11/gnome/libs"
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${PN}/2.2/${PN}-${PV}.tar.bz2"
+DEPENDS = "glib-2.0 gnutls libxml2"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
+
+inherit autotools pkgconfig
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev = "${includedir} ${libdir}"
+FILES_${PN}-doc = "${datadir}"
+
+do_stage() {
+ autotools_stage_all
+ install -d ${STAGING_DATADIR}/pkgconfig
+ install -m 0644 ${D}${libdir}/pkgconfig/* ${STAGING_DATADIR}/pkgconfig/
+}
diff --git a/packages/gnome/orbit2-native_2.14.0.bb b/packages/gnome/orbit2-native_2.14.0.bb
new file mode 100644
index 0000000000..c10afb58db
--- /dev/null
+++ b/packages/gnome/orbit2-native_2.14.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "CORBA ORB"
+LICENSE = "LGPL GPL"
+SECTION = "x11/gnome/libs"
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.13/ORBit2-${PV}.tar.bz2 \
+ file://configure-lossage.patch;patch=1;pnum=1 \
+ file://gtk-doc.m4 \
+ file://gtk-doc.make"
+DEPENDS = "libidl-native popt-native gtk-doc"
+
+S = "${WORKDIR}/ORBit2-${PV}"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/orbit2"
+
+PARALLEL_MAKE = ""
+inherit autotools native pkgconfig
+
+EXTRA_OECONF = "--disable-gtk-doc"
+
+do_configure_prepend() {
+ mkdir -p m4
+ install ${WORKDIR}/gtk-doc.m4 ./m4/
+ install ${WORKDIR}/gtk-doc.make ./
+}
diff --git a/packages/gnumeric/gnumeric-1.5.3/.mtn2git_empty b/packages/gnome/orbit2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnumeric/gnumeric-1.5.3/.mtn2git_empty
+++ b/packages/gnome/orbit2/.mtn2git_empty
diff --git a/packages/gnome/orbit2/configure-lossage.patch b/packages/gnome/orbit2/configure-lossage.patch
new file mode 100644
index 0000000000..7485a0ce0c
--- /dev/null
+++ b/packages/gnome/orbit2/configure-lossage.patch
@@ -0,0 +1,35 @@
+--- orbit/configure.in~ 2004-05-07 09:31:32.000000000 +0100
++++ orbit/configure.in 2004-05-08 19:27:35.000000000 +0100
+@@ -193,19 +193,19 @@
+ dnl So many people with broken linking setups asked about this
+ dnl it turned out to be necessary to check for this.
+ dnl
+-dofus_save_libs="$LIBS"
+-LIBS="$ORBIT_LIBS $LIBS"
+-AC_TRY_RUN([ #include <stdio.h>
+- main ()
+- {
+- return 0;
+- } ],,
+- AC_MSG_ERROR([
+-Linking is badly borked on your system. Please ensure your library path is correct
+-Check config.log for details - check near the end of the log above 'failed program was'
+-Alternatively ensure that your /etc/ld.so.conf (and/or LD_LIBRARY_PATH) includes the
+-prefix you're compiling on: '${prefix}' ]))
+-LIBS="$dofus_save_libs"
++dnl dofus_save_libs="$LIBS"
++dnl LIBS="$ORBIT_LIBS $LIBS"
++dnl AC_TRY_RUN([ #include <stdio.h>
++dnl main ()
++dnl {
++dnl return 0;
++dnl } ],,
++dnl AC_MSG_ERROR([
++dnl Linking is badly borked on your system. Please ensure your library path is correct
++dnl Check config.log for details - check near the end of the log above 'failed program was'
++dnl Alternatively ensure that your /etc/ld.so.conf (and/or LD_LIBRARY_PATH) includes the
++dnl prefix you're compiling on: '${prefix}' ]))
++dnl LIBS="$dofus_save_libs"
+
+ orig_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $ORBIT_CFLAGS"
diff --git a/packages/gnome/orbit2_2.14.0.bb b/packages/gnome/orbit2_2.14.0.bb
new file mode 100644
index 0000000000..008ec2c7b3
--- /dev/null
+++ b/packages/gnome/orbit2_2.14.0.bb
@@ -0,0 +1,46 @@
+LICENSE = "GPL"
+PR = "r2"
+DESCRIPTION = "CORBA ORB"
+SECTION = "x11/gnome/libs"
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/ORBit2/2.14/ORBit2-${PV}.tar.bz2 \
+ file://configure-lossage.patch;patch=1;pnum=1 \
+ file://gtk-doc.m4 \
+ file://gtk-doc.make"
+DEPENDS = "libidl popt orbit2-native gtk-doc"
+
+FILES_${PN} += "${libdir}/orbit-2.0/*.so"
+
+S = "${WORKDIR}/ORBit2-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gtk-doc"
+EXTRA_OEMAKE = "IDL_COMPILER='${STAGING_BINDIR}/orbit-idl-2'"
+
+do_configure_prepend() {
+ mkdir -p m4
+ install ${WORKDIR}/gtk-doc.m4 ./m4/
+ install ${WORKDIR}/gtk-doc.make ./
+}
+
+do_compile_append () {
+ sed 's:^orbit_idl=.*/:orbit_idl=${STAGING_BINDIR}/:' < ORBit-2.0.pc > ORBit-2.0.pc.new
+ mv ORBit-2.0.pc.new ORBit-2.0.pc
+}
+
+do_stage() {
+ oe_libinstall -so -C src/orb libORBit-2 ${STAGING_LIBDIR}
+ oe_libinstall -so -C src/services/name libORBitCosNaming-2 ${STAGING_LIBDIR}
+ oe_libinstall -so -C src/services/imodule libORBit-imodule-2 ${STAGING_LIBDIR}
+ install -m 0644 src/services/name/libname-server-2.a ${STAGING_LIBDIR}/
+
+ for dir in orbit orbit/poa orbit/orb-core orbit/util orbit/dynamic; do
+ install -d ${STAGING_INCDIR}/orbit-2.0/$dir
+ ( cd include/$dir; for i in *.h; do install -m 0644 $i ${STAGING_INCDIR}/orbit-2.0/$dir/$i; done )
+ done
+
+ install -d ${STAGING_INCDIR}/orbit-2.0/ORBitservices
+ install -m 0644 src/services/name/CosNaming.h ${STAGING_INCDIR}/orbit-2.0/ORBitservices/
+ install -m 0644 src/services/name/CosNaming_impl.h ${STAGING_INCDIR}/orbit-2.0/ORBitservices/
+ install -m 0644 src/services/imodule/orbit-imodule.h ${STAGING_INCDIR}/orbit-2.0/ORBitservices/
+}
diff --git a/packages/gnumeric/gnumeric-1.3.1.cvs/Makefile.am.patch b/packages/gnumeric/gnumeric-1.3.1.cvs/Makefile.am.patch
deleted file mode 100644
index fe06e2bae3..0000000000
--- a/packages/gnumeric/gnumeric-1.3.1.cvs/Makefile.am.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-+++ Makefile.am 2004-04-07 15:47:04.000000000 +0100
---- Makefile.am.orig 2004-07-23 18:03:34.000000000 +0100
-@@ -44,7 +44,7 @@
- intltool-extract.in \
- intltool-merge.in \
- intltool-update.in \
-+# xmldocs.make \
-- xmldocs.make \
- omf.make \
- $(server_in_files) $(server_DATA)
-
diff --git a/packages/gnumeric/gnumeric-1.3.1.cvs/gnumeric-doc.make.patch b/packages/gnumeric/gnumeric-1.3.1.cvs/gnumeric-doc.make.patch
deleted file mode 100644
index 08ce8e1ee2..0000000000
--- a/packages/gnumeric/gnumeric-1.3.1.cvs/gnumeric-doc.make.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-+++ gnumeric-doc.make 2004-03-31 02:32:25.000000000 +0100
---- gnumeric-doc.make.orig 2004-07-26 15:51:43.000000000 +0100
-@@ -24,7 +24,7 @@
- include $(top_srcdir)/xmldocs.make
-
- # include generated files to simplify installation
--EXTRA_DIST += \
-+EXTRA_DIST = \
- func.defs \
- functions.xml \
- func-header.xml func-footer.xml
diff --git a/packages/gnumeric/gnumeric-1.3.1/workbook-control-gui-priv.h.patch b/packages/gnumeric/gnumeric-1.3.1/workbook-control-gui-priv.h.patch
deleted file mode 100644
index 2fbd71ceaf..0000000000
--- a/packages/gnumeric/gnumeric-1.3.1/workbook-control-gui-priv.h.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnumeric/src/workbook-control-gui-priv.h.orig 2004-07-19 07:06:18.000000000 +0100
-+++ gnumeric/src/workbook-control-gui-priv.h 2004-07-28 00:15:46.000000000 +0100
-@@ -111,7 +111,7 @@
- void wbcg_insert_sheet (GtkWidget *ignored, WorkbookControlGUI *wbcg);
- void wbcg_append_sheet (GtkWidget *ignored, WorkbookControlGUI *wbcg);
- void wbcg_set_selection_halign (WorkbookControlGUI *wbcg, StyleHAlignFlags halign);
--void wbcg_set_selection_valign (WorkbookControlGUI *wbcg, StyleHAlignFlags halign);
-+void wbcg_set_selection_valign (WorkbookControlGUI *wbcg, StyleVAlignFlags halign);
-
- enum {
- WBCG_MARKUP_CHANGED,
diff --git a/packages/gnumeric/gnumeric-1.5.3/remove-docs.patch b/packages/gnumeric/gnumeric-1.5.3/remove-docs.patch
deleted file mode 100644
index 4a9108bd4e..0000000000
--- a/packages/gnumeric/gnumeric-1.5.3/remove-docs.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- gnumeric-1.5.2/Makefile.am.orig 2005-08-01 11:32:36.119921544 +0000
-+++ gnumeric-1.5.2/Makefile.am 2005-08-01 11:32:44.689618752 +0000
-@@ -1,4 +1,4 @@
--SUBDIRS = . po po-functions src plugins icons templates doc schemas
-+SUBDIRS = . po po-functions src plugins icons templates schemas
- if WITH_WIN32
- SUBDIRS += tools
- endif
diff --git a/packages/gnumeric/gnumeric-1.5.5/remove-docs.patch b/packages/gnumeric/gnumeric-1.5.5/remove-docs.patch
deleted file mode 100644
index 4a9108bd4e..0000000000
--- a/packages/gnumeric/gnumeric-1.5.5/remove-docs.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- gnumeric-1.5.2/Makefile.am.orig 2005-08-01 11:32:36.119921544 +0000
-+++ gnumeric-1.5.2/Makefile.am 2005-08-01 11:32:44.689618752 +0000
-@@ -1,4 +1,4 @@
--SUBDIRS = . po po-functions src plugins icons templates doc schemas
-+SUBDIRS = . po po-functions src plugins icons templates schemas
- if WITH_WIN32
- SUBDIRS += tools
- endif
diff --git a/packages/gnumeric/gnumeric_1.3.1.bb b/packages/gnumeric/gnumeric_1.3.1.bb
deleted file mode 100644
index 299c36cbb2..0000000000
--- a/packages/gnumeric/gnumeric_1.3.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-PR = "r3"
-S = "${WORKDIR}/gnumeric-${PV}"
-DEPENDS = "libgsf gtk+ libxml2 libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui"
-DESCRIPTION = "Gnumeric spreadsheet for GNOME"
-
-inherit gnome flow-lossage
-
-SRC_URI += 'file://workbook-control-gui-priv.h.patch;patch=1'
-
-EXTRA_OEMAKE_prepend = ' ORBIT_IDL=`which orbit-idl-2` '
-
-PACKAGES_DYNAMIC = "gnumeric-plugin-*"
-
-python populate_packages_prepend () {
- gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
-
- do_split_packages(d, gnumeric_libdir, '(.*)', 'gnumeric-plugin-%s', 'Gnumeric plugin for %s', allow_dirs=True)
-}
diff --git a/packages/gnumeric/gnumeric_1.3.1.cvs.bb b/packages/gnumeric/gnumeric_1.3.1.cvs.bb
deleted file mode 100644
index 6bbbf645c4..0000000000
--- a/packages/gnumeric/gnumeric_1.3.1.cvs.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-#SRCDATE="20040719"
-CVSTAG="GNUMERIC_1_3_1"
-
-DEFAULT_PREFERENCE = "-1"
-
-S = "${WORKDIR}/gnumeric"
-
-
-PR = "r1"
-SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=gnumeric;tag=${CVSTAG} \
- file://gnumeric-doc.make.patch;patch=1 \
- file://Makefile.am.patch;patch=1"
-
-DEPENDS = "libgsf1 gtk+ libxml2 libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui"
-
-
-EXTRA_OECONF = "--without-gnome"
-
-do_configure_prepend() {
- touch xmldocs.make
- intltoolize --automake --debug
-# # aclocal seems to insist on looking in here. Make sure it exists.
-# mkdir -p ${S}/m4
-# # work around automake lossage with AC_CONFIG_AUX_DIR
-# ( cd libmutt; libtoolize --force ; cp ../ltmain.sh . )
-}
-
-inherit autotools
diff --git a/packages/gnumeric/gnumeric_1.5.3.bb b/packages/gnumeric/gnumeric_1.5.3.bb
deleted file mode 100644
index c3a594a391..0000000000
--- a/packages/gnumeric/gnumeric_1.5.3.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-PR = "r0"
-S = "${WORKDIR}/gnumeric-${PV}"
-DEPENDS = "libgsf gtk+ libxml2 goffice libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui libbonoboui"
-DESCRIPTION = "Gnumeric spreadsheet for GNOME"
-
-inherit gnome flow-lossage
-
-SRC_URI += "file://remove-docs.patch;patch=1"
-
-EXTRA_OECONF=" --without-perl "
-
-PACKAGES_DYNAMIC = "gnumeric-plugin-*"
-
-python populate_packages_prepend () {
- gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
-
- do_split_packages(d, gnumeric_libdir, '(.*)', 'gnumeric-plugin-%s', 'Gnumeric plugin for %s', allow_dirs=True)
-}
diff --git a/packages/gnumeric/gnumeric_1.5.5.bb b/packages/gnumeric/gnumeric_1.5.5.bb
deleted file mode 100644
index c3a594a391..0000000000
--- a/packages/gnumeric/gnumeric_1.5.5.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-PR = "r0"
-S = "${WORKDIR}/gnumeric-${PV}"
-DEPENDS = "libgsf gtk+ libxml2 goffice libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui libbonoboui"
-DESCRIPTION = "Gnumeric spreadsheet for GNOME"
-
-inherit gnome flow-lossage
-
-SRC_URI += "file://remove-docs.patch;patch=1"
-
-EXTRA_OECONF=" --without-perl "
-
-PACKAGES_DYNAMIC = "gnumeric-plugin-*"
-
-python populate_packages_prepend () {
- gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
-
- do_split_packages(d, gnumeric_libdir, '(.*)', 'gnumeric-plugin-%s', 'Gnumeric plugin for %s', allow_dirs=True)
-}
diff --git a/packages/gnumeric/gnumeric_1.5.90.bb b/packages/gnumeric/gnumeric_1.5.90.bb
deleted file mode 100644
index 18ab5472a4..0000000000
--- a/packages/gnumeric/gnumeric_1.5.90.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-S = "${WORKDIR}/gnumeric-${PV}"
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "libgsf gtk+ libxml2 goffice libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui libbonoboui"
-DESCRIPTION = "Gnumeric spreadsheet for GNOME"
-
-inherit gnome flow-lossage
-
-SRC_URI += "file://remove-docs.patch;patch=1"
-
-EXTRA_OECONF=" --without-perl "
-
-PACKAGES_DYNAMIC = "gnumeric-plugin-*"
-
-python populate_packages_prepend () {
- gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
-
- do_split_packages(d, gnumeric_libdir, '(.*)', 'gnumeric-plugin-%s', 'Gnumeric plugin for %s', allow_dirs=True)
-}
diff --git a/packages/gnumeric/gnumeric_1.6.1.bb b/packages/gnumeric/gnumeric_1.6.1.bb
deleted file mode 100644
index 18ab5472a4..0000000000
--- a/packages/gnumeric/gnumeric_1.6.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-S = "${WORKDIR}/gnumeric-${PV}"
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "libgsf gtk+ libxml2 goffice libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui libbonoboui"
-DESCRIPTION = "Gnumeric spreadsheet for GNOME"
-
-inherit gnome flow-lossage
-
-SRC_URI += "file://remove-docs.patch;patch=1"
-
-EXTRA_OECONF=" --without-perl "
-
-PACKAGES_DYNAMIC = "gnumeric-plugin-*"
-
-python populate_packages_prepend () {
- gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
-
- do_split_packages(d, gnumeric_libdir, '(.*)', 'gnumeric-plugin-%s', 'Gnumeric plugin for %s', allow_dirs=True)
-}
diff --git a/packages/gnumeric/gnumeric_1.6.2.bb b/packages/gnumeric/gnumeric_1.6.2.bb
deleted file mode 100644
index 18ab5472a4..0000000000
--- a/packages/gnumeric/gnumeric_1.6.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPL"
-SECTION = "x11/utils"
-S = "${WORKDIR}/gnumeric-${PV}"
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "libgsf gtk+ libxml2 goffice libglade libart-lgpl intltool-native libgnomecanvas libgnomeprint libgnomeprintui libbonoboui"
-DESCRIPTION = "Gnumeric spreadsheet for GNOME"
-
-inherit gnome flow-lossage
-
-SRC_URI += "file://remove-docs.patch;patch=1"
-
-EXTRA_OECONF=" --without-perl "
-
-PACKAGES_DYNAMIC = "gnumeric-plugin-*"
-
-python populate_packages_prepend () {
- gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
-
- do_split_packages(d, gnumeric_libdir, '(.*)', 'gnumeric-plugin-%s', 'Gnumeric plugin for %s', allow_dirs=True)
-}
diff --git a/packages/gnumeric/gnumeric_1.6.0.bb b/packages/gnumeric/gnumeric_1.6.3.bb
index 18ab5472a4..0fc45bbd63 100644
--- a/packages/gnumeric/gnumeric_1.6.0.bb
+++ b/packages/gnumeric/gnumeric_1.6.3.bb
@@ -13,6 +13,8 @@ EXTRA_OECONF=" --without-perl "
PACKAGES_DYNAMIC = "gnumeric-plugin-*"
+FILES_gnumeric_append = " /usr/lib/libspreadsheet-${PV}.so "
+
python populate_packages_prepend () {
gnumeric_libdir = bb.data.expand('${libdir}/gnumeric/${PV}/plugins', d)
diff --git a/packages/gnumeric/gnumeric-1.5.5/.mtn2git_empty b/packages/gnupg/gnupg-1.4.2.2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnumeric/gnumeric-1.5.5/.mtn2git_empty
+++ b/packages/gnupg/gnupg-1.4.2.2/.mtn2git_empty
diff --git a/packages/gnupg/gnupg-1.4.2.2/15_free_caps.patch b/packages/gnupg/gnupg-1.4.2.2/15_free_caps.patch
new file mode 100644
index 0000000000..20949a7d49
--- /dev/null
+++ b/packages/gnupg/gnupg-1.4.2.2/15_free_caps.patch
@@ -0,0 +1,93 @@
+--- /home/weasel/tmp/debian-gpg/gnupg-1.2.5/g10/status.c 2004-07-21 09:59:45.000000000 +0200
++++ gnupg-1.2.5/g10/status.c 2004-08-01 20:07:42.071690680 +0200
+@@ -346,6 +346,9 @@
+ {
+ char buf[100];
+ struct shmid_ds shmds;
++#ifdef USE_CAPABILITIES
++ cap_t caps;
++#endif
+
+ #ifndef IPC_RMID_DEFERRED_RELEASE
+ atexit( remove_shmid );
+@@ -371,7 +374,9 @@
+ (unsigned)shm_size/1024, shm_area, shm_id );
+ if( lock_mem ) {
+ #ifdef USE_CAPABILITIES
+- cap_set_proc( cap_from_text("cap_ipc_lock+ep") );
++ caps = cap_from_text("cap_ipc_lock=ep");
++ cap_set_proc( caps );
++ cap_free( caps );
+ #endif
+ /* (need the cast for Solaris with Sun's workshop compilers) */
+ if ( mlock ( (char*)shm_area, shm_size) )
+@@ -380,7 +385,9 @@
+ else
+ shm_is_locked = 1;
+ #ifdef USE_CAPABILITIES
+- cap_set_proc( cap_from_text("cap_ipc_lock+p") );
++ caps = cap_from_text("cap_ipc_lock=p");
++ cap_set_proc( caps );
++ cap_free( caps );
+ #endif
+ }
+
+@@ -407,7 +414,9 @@
+
+ if( lock_mem ) {
+ #ifdef USE_CAPABILITIES
+- cap_set_proc( cap_from_text("cap_ipc_lock+ep") );
++ caps = cap_from_text("cap_ipc_lock=ep");
++ cap_set_proc( caps );
++ cap_free( caps );
+ #endif
+ #ifdef IPC_HAVE_SHM_LOCK
+ if ( shmctl (shm_id, SHM_LOCK, 0) )
+@@ -419,7 +428,9 @@
+ log_info("Locking shared memory %d failed: No way to do it\n", shm_id );
+ #endif
+ #ifdef USE_CAPABILITIES
+- cap_set_proc( cap_from_text("cap_ipc_lock+p") );
++ caps = cap_from_text("cap_ipc_lock=p");
++ cap_set_proc( caps );
++ cap_free( caps );
+ #endif
+ }
+
+--- /home/weasel/tmp/debian-gpg/gnupg-1.2.5/util/secmem.c 2004-02-24 17:06:58.000000000 +0100
++++ gnupg-1.2.5/util/secmem.c 2004-08-01 20:08:10.873412378 +0200
+@@ -97,12 +97,18 @@
+ {
+ #if defined(USE_CAPABILITIES) && defined(HAVE_MLOCK)
+ int err;
++ cap_t caps;
++
++ caps = cap_from_text("cap_ipc_lock=ep");
++ cap_set_proc( caps );
++ cap_free( caps );
+
+- cap_set_proc( cap_from_text("cap_ipc_lock+ep") );
+ err = mlock( p, n );
+ if( err && errno )
+ err = errno;
+- cap_set_proc( cap_from_text("cap_ipc_lock+p") );
++ caps = cap_from_text("cap_ipc_lock=p");
++ cap_set_proc( caps );
++ cap_free( caps );
+
+ if( err ) {
+ if( errno != EPERM
+@@ -301,8 +307,12 @@
+ if( !n ) {
+ #ifndef __riscos__
+ #ifdef USE_CAPABILITIES
++ cap_t caps;
++
+ /* drop all capabilities */
+- cap_set_proc( cap_from_text("all-eip") );
++ caps = cap_from_text("all-eip");
++ cap_set_proc( caps );
++ cap_free( caps );
+
+ #elif !defined(HAVE_DOSISH_SYSTEM)
+ uid_t uid;
diff --git a/packages/gnupg/gnupg-1.4.2.2/16_min_privileges.patch b/packages/gnupg/gnupg-1.4.2.2/16_min_privileges.patch
new file mode 100644
index 0000000000..b29233b33b
--- /dev/null
+++ b/packages/gnupg/gnupg-1.4.2.2/16_min_privileges.patch
@@ -0,0 +1,68 @@
+--- gnupg-1.4.0/g10/g10.c 2004-12-16 09:47:36.000000000 +0000
++++ /tmp/dpep.O5S02c/gnupg-1.4.0/g10/g10.c 2005-02-03 23:31:40.645873299 +0000
+@@ -69,6 +69,11 @@
+ #endif
+
+
++#ifdef USE_CAPABILITIES
++#include <sys/capability.h>
++#include <sys/prctl.h>
++#endif
++
+ enum cmd_and_opt_values
+ {
+ aNull = 0,
+@@ -1618,6 +1623,10 @@
+ #ifdef USE_SHM_COPROCESSING
+ ulong requested_shm_size=0;
+ #endif
++#ifdef USE_CAPABILITIES
++ uid_t curr_uid;
++ cap_t caps;
++#endif
+
+ #ifdef __riscos__
+ opt.lock_once = 1;
+@@ -1629,6 +1638,33 @@
+ * when adding any stuff between here and the call to
+ * secmem_init() somewhere after the option parsing
+ */
++
++ /* if we use capabilities and run as root, we can immediately setuid back
++ * to the normal user and only keep CAP_IPC_LOCK until the shared memory is
++ * set up.
++ */
++#ifdef USE_CAPABILITIES
++ curr_uid = getuid();
++ if( curr_uid && !geteuid() ) { /* we are setuid root */
++ if( prctl( PR_SET_KEEPCAPS, 1, 0, 0, 0 ) ) {
++ perror( "main(): could not keep capabilities" );
++ return -100;
++ }
++
++ if( setuid( curr_uid ) ) {
++ perror( "main(): could not set user id" );
++ return -100;
++ }
++
++ caps = cap_from_text( "cap_ipc_lock=p" );
++ if( cap_set_proc( caps ) ) {
++ perror( "main(): could not install capabilities" );
++ return -100;
++ }
++ cap_free( caps );
++ }
++#endif
++
+ log_set_name("gpg");
+ secure_random_alloc(); /* put random number into secure memory */
+ may_coredump = disable_core_dumps();
+@@ -1747,7 +1783,7 @@
+ }
+ #endif
+ /* initialize the secure memory. */
+- got_secmem=secmem_init( 32768 );
++ got_secmem=secmem_init( 32768 ); /* this will drop all remaining privileges */
+ maybe_setuid = 0;
+ /* Okay, we are now working under our real uid */
+
diff --git a/packages/gnupg/gnupg-1.4.2.2/22_zero_length_mpi_fix.patch b/packages/gnupg/gnupg-1.4.2.2/22_zero_length_mpi_fix.patch
new file mode 100644
index 0000000000..8f13db4d23
--- /dev/null
+++ b/packages/gnupg/gnupg-1.4.2.2/22_zero_length_mpi_fix.patch
@@ -0,0 +1,37 @@
+diff -urNad gnupg-1.4.2~/mpi/mpicoder.c gnupg-1.4.2/mpi/mpicoder.c
+--- gnupg-1.4.2~/mpi/mpicoder.c 2005-05-31 06:30:05.000000000 +0000
++++ gnupg-1.4.2/mpi/mpicoder.c 2005-09-29 00:52:19.000000000 +0000
+@@ -80,16 +80,20 @@
+ mpi_limb_t a;
+ MPI val = MPI_NULL;
+
++ if (nread == nmax)
++ goto overflow;
+ if( (c = iobuf_get(inp)) == -1 )
+ goto leave;
+- if (++nread >= nmax)
+- goto overflow;
++ nread++;
+ nbits = c << 8;
++
++ if (nread == nmax)
++ goto overflow;
+ if( (c = iobuf_get(inp)) == -1 )
+ goto leave;
+- if (++nread >= nmax)
+- goto overflow;
++ nread++;
+ nbits |= c;
++
+ if( nbits > MAX_EXTERN_MPI_BITS ) {
+ log_error("mpi too large for this implementation (%u bits)\n", nbits);
+ goto leave;
+@@ -112,7 +116,7 @@
+ for( ; j > 0; j-- ) {
+ a = 0;
+ for(; i < BYTES_PER_MPI_LIMB; i++ ) {
+- if (nread >= nmax) {
++ if (nread == nmax) {
+ #ifdef M_DEBUG
+ mpi_debug_free (val);
+ #else
diff --git a/packages/gnupg/gnupg.inc b/packages/gnupg/gnupg.inc
index 717d76fdaa..b4eb9bba65 100644
--- a/packages/gnupg/gnupg.inc
+++ b/packages/gnupg/gnupg.inc
@@ -2,7 +2,6 @@ SECTION = "console/utils"
DESCRIPTION = "gnupg - GNU privacy guard"
HOMEPAGE = "http://www.gnupg.org/"
LICENSE = "GPLv2"
-MAINTAINER = "Pawel Osiczko <p.osiczko@tetrapyloctomy.org>"
DEPENDS = "zlib bzip2"
inherit autotools gettext
diff --git a/packages/gnupg/gnupg2.inc b/packages/gnupg/gnupg2.inc
index 4013581aea..c4aadb55eb 100644
--- a/packages/gnupg/gnupg2.inc
+++ b/packages/gnupg/gnupg2.inc
@@ -2,7 +2,6 @@ SECTION = "console/utils"
DESCRIPTION = "gnupg - GNU privacy guard - development version"
HOMEPAGE = "http://www.gnupg.org/"
LICENSE = "GPLv2"
-MAINTAINER = "Pawel Osiczko <p.osiczko@tetrapyloctomy.org>"
# DEPENDS = "zlib libgpg-error libgcrypt libassuan ksba opensc"
DEPENDS = "zlib libgpg-error libgcrypt libassuan"
diff --git a/packages/gnupg/gnupg2_1.9.15.bb b/packages/gnupg/gnupg2_1.9.15.bb
index fc24adde31..05505c3c77 100644
--- a/packages/gnupg/gnupg2_1.9.15.bb
+++ b/packages/gnupg/gnupg2_1.9.15.bb
@@ -1,3 +1,3 @@
include gnupg2.inc
-PR = "r2"
+PR = "r3"
diff --git a/packages/gnupg/gnupg_1.2.3.bb b/packages/gnupg/gnupg_1.2.3.bb
deleted file mode 100644
index 462bb2b89c..0000000000
--- a/packages/gnupg/gnupg_1.2.3.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-include gnupg.inc
-
-PR = "r1"
diff --git a/packages/gnupg/gnupg_1.2.4.bb b/packages/gnupg/gnupg_1.2.4.bb
deleted file mode 100644
index 462bb2b89c..0000000000
--- a/packages/gnupg/gnupg_1.2.4.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-include gnupg.inc
-
-PR = "r1"
diff --git a/packages/gnupg/gnupg_1.4.0.bb b/packages/gnupg/gnupg_1.4.2.2.bb
index 75228162c5..e14f39f22f 100644
--- a/packages/gnupg/gnupg_1.4.0.bb
+++ b/packages/gnupg/gnupg_1.4.2.2.bb
@@ -6,6 +6,8 @@ EXTRA_OECONF += "--with-readline=${STAGING_LIBDIR}/.."
SRC_URI += "file://15_free_caps.patch;patch=1 \
file://16_min_privileges.patch;patch=1 \
- file://18_ca_po_update.patch;patch=1 \
- file://21_strgutil_update.patch;patch=1"
+ file://22_zero_length_mpi_fix.patch;patch=1 "
+
S = "${WORKDIR}/gnupg-${PV}"
+
+PR = "r1"
diff --git a/packages/gomunicator/gomunicator_cvs.bb b/packages/gomunicator/gomunicator_cvs.bb
index d45d467d45..a567d16009 100644
--- a/packages/gomunicator/gomunicator_cvs.bb
+++ b/packages/gomunicator/gomunicator_cvs.bb
@@ -3,12 +3,17 @@ HOMEPAGE = "http://www.linuxdevelopment.org/projects.html"
LICENSE = "GPLv2"
AUTHOR = "Robert Woerle"
MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "libgpewidget gtk+ glib-2.0"
+DEPENDS = "libgpewidget gtk+ glib-2.0 alsa-lib"
+RDEPENDS = "alsa-lib"
#Remove the dash below when 0.1.3 changes in PV
PV = "0.1.3+cvs-${SRCDATE}"
-
inherit autotools pkgconfig
SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/xanadux;module=gomunicator"
S = "${WORKDIR}/${PN}"
+
+do_install_append() {
+ install -d ${D}${datadir}/applications
+ install -m 0644 gomunicator.desktop ${D}${datadir}/applications/
+}
diff --git a/packages/gpdf/files/gpdf-2.10.0-gcc4-2.patch b/packages/gpdf/files/gpdf-2.10.0-gcc4-2.patch
new file mode 100644
index 0000000000..d45becb346
--- /dev/null
+++ b/packages/gpdf/files/gpdf-2.10.0-gcc4-2.patch
@@ -0,0 +1,30 @@
+diff -Naur gpdf-2.10.0.orig/xpdf/TextOutputDev.h gpdf-2.10.0/xpdf/TextOutputDev.h
+--- gpdf-2.10.0.orig/xpdf/TextOutputDev.h 2005-08-23 21:59:57.000000000 +0000
++++ gpdf-2.10.0/xpdf/TextOutputDev.h 2005-08-23 22:00:10.000000000 +0000
+@@ -166,6 +166,8 @@
+ // TextLine
+ //------------------------------------------------------------------------
+
++class TextBlock;
++
+ class TextLine {
+ public:
+
+@@ -223,6 +225,8 @@
+ // TextBlock
+ //------------------------------------------------------------------------
+
++class TextPage;
++
+ class TextBlock {
+ public:
+
+@@ -342,6 +346,8 @@
+ // TextPage
+ //------------------------------------------------------------------------
+
++class TextLineFrag;
++
+ class TextPage {
+ public:
+
diff --git a/packages/gpdf/gpdf_2.10.0.bb b/packages/gpdf/gpdf_2.10.0.bb
index cbb7681a5b..ee7d27080a 100644
--- a/packages/gpdf/gpdf_2.10.0.bb
+++ b/packages/gpdf/gpdf_2.10.0.bb
@@ -4,6 +4,8 @@ PR = "r0"
inherit gnome
+SRC_URI_append = " file://gpdf-2.10.0-gcc4-2.patch;patch=1"
+
DEPENDS = "gtk+ libgnomeui libbonoboui gnome-vfs gconf gettext libglade \
libgnomeprint libgnomeprintui gnome-common"
diff --git a/packages/gpe-bootsplash/files/speed.patch b/packages/gpe-bootsplash/files/speed.patch
index 32d0432a87..cc670d00e4 100644
--- a/packages/gpe-bootsplash/files/speed.patch
+++ b/packages/gpe-bootsplash/files/speed.patch
@@ -38,7 +38,7 @@
+ then
+ readlink /usr/share/gpe/$source_link > /etc/bootsplash.name
+
-+ cat /dev/fb0 > /etc/bootsplash.raw ; gzip /etc/bootsplash.raw
++ cat /dev/fb0 | gzip >/etc/bootsplash.raw.gz
+ else
+ echo -e "\nNOTE: gpe-bootsplash failed to start" >/dev/tty2
+ sleep 3
diff --git a/packages/gpe-bootsplash/gpe-bootsplash-theme-e.bb b/packages/gpe-bootsplash/gpe-bootsplash-theme-e.bb
index e95c09b3e8..5eeee0fffa 100644
--- a/packages/gpe-bootsplash/gpe-bootsplash-theme-e.bb
+++ b/packages/gpe-bootsplash/gpe-bootsplash-theme-e.bb
@@ -3,20 +3,19 @@ SECTION = "base"
PRIORITY = "optional"
MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
LICENSE = "GPL"
-
DEPENDS = "gpe-bootsplash"
RDEPENDS = "gpe-bootsplash"
-
-PR = "r0"
+PR = "r1"
export THEME = "e"
-SRC_URI = "file://*.svg"
-
-FILES_${PN} = "/usr/share/gpe/splash-${THEME}-*"
+SRC_URI = "file://splash-e-portrait.svg \
+ file://splash-e-landscape.svg"
+#FIXME: Please use $datadir instead of /usr/share
+#FIXME: please use an gpe-bootsplash-theme.inc to reduce duplication
-do_install(){
+do_install() {
install -d "${D}/usr/share/gpe"
install -m 0644 ${WORKDIR}/splash-${THEME}* ${D}/usr/share/gpe
}
@@ -30,3 +29,5 @@ pkg_postrm() {
update-alternatives --remove bootsplash-l /usr/share/gpe/splash-${THEME}-landscape.svg
update-alternatives --remove bootsplash-p /usr/share/gpe/splash-${THEME}-portrait.svg
}
+
+FILES_${PN} = "/usr/share/gpe/splash-${THEME}-*"
diff --git a/packages/gpe-bootsplash/gpe-bootsplash-theme-opie.bb b/packages/gpe-bootsplash/gpe-bootsplash-theme-opie.bb
index dff92e75c3..9aa2e9bc00 100644
--- a/packages/gpe-bootsplash/gpe-bootsplash-theme-opie.bb
+++ b/packages/gpe-bootsplash/gpe-bootsplash-theme-opie.bb
@@ -3,20 +3,17 @@ SECTION = "base"
PRIORITY = "optional"
MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
LICENSE = "GPL"
-
DEPENDS = "gpe-bootsplash"
RDEPENDS = "gpe-bootsplash"
-
-PR = "r0"
+PR = "r1"
export THEME = "opie"
SRC_URI = "file://*.svg \
- file://*${THEME}*logo*"
-
-FILES_${PN} = "/usr/share/gpe/splash-${THEME}-*\
- /usr/share/gpe/${THEME}-logo.png"
+ file://*${THEME}*logo*"
+#FIXME: please use $datadir instead of /usr/share
+#FIXME: please use an gpe-bootsplash-theme.inc to reduce duplication
do_install(){
install -d "${D}/usr/share/gpe"
@@ -33,3 +30,7 @@ pkg_postrm() {
update-alternatives --remove bootsplash-l /usr/share/gpe/splash-${THEME}-landscape.svg
update-alternatives --remove bootsplash-p /usr/share/gpe/splash-${THEME}-portrait.svg
}
+
+FILES_${PN} = "/usr/share/gpe/splash-${THEME}-* \
+ /usr/share/gpe/${THEME}-logo.png"
+
diff --git a/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb b/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
index ca48c6086b..761a0500c7 100644
--- a/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
+++ b/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
@@ -5,7 +5,7 @@ MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "gpe"
PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r3"
+PR = "r4"
SRC_URI += "file://splash-p.svg \
file://splash-l.svg \
diff --git a/packages/grub/grub_0.93.bb b/packages/grub/grub_0.93.bb
index d67247ccff..8341184476 100644
--- a/packages/grub/grub_0.93.bb
+++ b/packages/grub/grub_0.93.bb
@@ -1,5 +1,6 @@
+DESCRIPTION = "GRUB is the GRand Unified Bootloader"
SECTION = "base"
-DESCRIPTION = "grand unified bootloader"
+HOMEPAGE = "http://www.gnu.org/software/grub"
SRC_URI = "ftp://alpha.gnu.org/gnu/grub/grub-${PV}.tar.gz; \
file://autohell.patch;patch=1 \
@@ -10,9 +11,4 @@ S = "${WORKDIR}/grub-${PV}"
inherit autotools
-python __anonymous () {
- import re
- host = bb.data.getVar('HOST_SYS', d, 1)
- if not re.match('i.86.*-linux', host):
- raise bb.parse.SkipPackage("incompatible with host %s" % host)
-}
+COMPATIBLE_HOST = 'i.86.*-linux'
diff --git a/packages/gstreamer/gst-plugins-bad_0.10.1.bb b/packages/gstreamer/gst-plugins-bad_0.10.1.bb
index 655f2c1d66..182ed9349f 100644
--- a/packages/gstreamer/gst-plugins-bad_0.10.1.bb
+++ b/packages/gstreamer/gst-plugins-bad_0.10.1.bb
@@ -1 +1,2 @@
include gst-plugins.inc
+DEPENDS += "gst-plugins-base"
diff --git a/packages/gstreamer/gst-plugins-good_0.10.2.bb b/packages/gstreamer/gst-plugins-good_0.10.2.bb
index 655f2c1d66..182ed9349f 100644
--- a/packages/gstreamer/gst-plugins-good_0.10.2.bb
+++ b/packages/gstreamer/gst-plugins-good_0.10.2.bb
@@ -1 +1,2 @@
include gst-plugins.inc
+DEPENDS += "gst-plugins-base"
diff --git a/packages/gstreamer/gst-plugins-ugly_0.10.2.bb b/packages/gstreamer/gst-plugins-ugly_0.10.2.bb
index 655f2c1d66..182ed9349f 100644
--- a/packages/gstreamer/gst-plugins-ugly_0.10.2.bb
+++ b/packages/gstreamer/gst-plugins-ugly_0.10.2.bb
@@ -1 +1,2 @@
include gst-plugins.inc
+DEPENDS += "gst-plugins-base"
diff --git a/packages/gstreamer/gst-plugins.inc b/packages/gstreamer/gst-plugins.inc
index b689ebd6d9..ef8a67fa38 100644
--- a/packages/gstreamer/gst-plugins.inc
+++ b/packages/gstreamer/gst-plugins.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "Plugins for GStreamer"
SECTION = "multimedia"
PRIORITY = "optional"
MAINTAINER = "Felix Domke <tmbinc@openembedded.org>"
-DEPENDS = "gstreamer libmikmod libmad libogg tremor libvorbis libid3tag"
+DEPENDS = "gstreamer libmikmod libmad liboil libogg tremor libvorbis libid3tag"
PR = "r0"
inherit autotools pkgconfig gconf
diff --git a/packages/hostap/hostap-daemon-0.3.7/.mtn2git_empty b/packages/gthumb/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/hostap/hostap-daemon-0.3.7/.mtn2git_empty
+++ b/packages/gthumb/.mtn2git_empty
diff --git a/packages/gthumb/gthumb_2.6.9.bb b/packages/gthumb/gthumb_2.6.9.bb
new file mode 100644
index 0000000000..7de4f34bb0
--- /dev/null
+++ b/packages/gthumb/gthumb_2.6.9.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "gThumb is an image viewer and browser for the GNOME Desktop."
+LICENSE = "GPL"
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+
+DEPENDS = "gtk+ libexif libgnome libgnomeui libgnomeprintui"
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += "${datadir}/gnome* ${datadir}/application-registry/*"
+
+
+
diff --git a/packages/hostap/hostap-daemon-0.3.7/mtx-1/.mtn2git_empty b/packages/gtk+/gtk+-2.8.16/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/hostap/hostap-daemon-0.3.7/mtx-1/.mtn2git_empty
+++ b/packages/gtk+/gtk+-2.8.16/.mtn2git_empty
diff --git a/packages/gtk+/gtk+-2.8.16/automake-lossage.patch b/packages/gtk+/gtk+-2.8.16/automake-lossage.patch
new file mode 100644
index 0000000000..0d423ddbb9
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/automake-lossage.patch
@@ -0,0 +1,24 @@
+--- gtk+-2.4.1/docs/tutorial/Makefile.am~ 2003-05-06 22:54:20.000000000 +0100
++++ gtk+-2.4.1/docs/tutorial/Makefile.am 2004-05-08 12:31:41.000000000 +0100
+@@ -52,21 +52,5 @@
+
+ dist-hook: html
+ cp -Rp $(srcdir)/html $(distdir)
+-else
+-html:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-pdf:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "***"
+-
+-dist-hook:
+- echo "***"
+- echo "*** Warning: Tutorial not built"
+- echo "*** DISTRIBUTION IS INCOMPLETE"
+- echo "***"
+ endif
+
diff --git a/packages/gtk+/gtk+-2.8.16/disable-tooltips.patch b/packages/gtk+/gtk+-2.8.16/disable-tooltips.patch
new file mode 100644
index 0000000000..d71d839c3c
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/disable-tooltips.patch
@@ -0,0 +1,11 @@
+--- gtk+-2.4.3/gtk/gtktooltips.c.old 2004-07-04 18:52:04.000000000 +0100
++++ gtk+-2.4.3/gtk/gtktooltips.c 2004-07-04 18:52:08.000000000 +0100
+@@ -118,7 +118,7 @@
+ tooltips->tips_data_list = NULL;
+
+ tooltips->delay = DEFAULT_DELAY;
+- tooltips->enabled = TRUE;
++ tooltips->enabled = FALSE;
+ tooltips->timer_tag = 0;
+ tooltips->use_sticky_delay = FALSE;
+ tooltips->last_popdown.tv_sec = -1;
diff --git a/packages/gtk+/gtk+-2.8.16/gtk+-handhelds.patch b/packages/gtk+/gtk+-2.8.16/gtk+-handhelds.patch
new file mode 100644
index 0000000000..4b97373f32
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/gtk+-handhelds.patch
@@ -0,0 +1,264 @@
+--- gtk+-2.8.6/gtk/gtkrange.c.orig 2005-12-07 21:13:33 +0100
++++ gtk+-2.8.6/gtk/gtkrange.c 2005-12-07 21:21:12 +0100
+@@ -186,6 +186,7 @@
+ static GtkWidgetClass *parent_class = NULL;
+ static guint signals[LAST_SIGNAL];
+
++static GdkAtom recognize_protocols_atom, atom_atom;
+
+ GType
+ gtk_range_get_type (void)
+@@ -226,6 +227,9 @@
+ object_class = (GtkObjectClass*) class;
+ widget_class = (GtkWidgetClass*) class;
+
++ recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
++ atom_atom = gdk_atom_intern ("ATOM", FALSE);
++
+ parent_class = g_type_class_peek_parent (class);
+
+ gobject_class->set_property = gtk_range_set_property;
+@@ -860,6 +864,12 @@
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (range->event_window, range);
+
++ gdk_property_change (range->event_window,
++ recognize_protocols_atom,
++ atom_atom,
++ 32, GDK_PROP_MODE_REPLACE,
++ NULL, 0);
++
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ }
+
+@@ -1229,7 +1239,7 @@
+
+ /* ignore presses when we're already doing something else. */
+ if (range->layout->grab_location != MOUSE_OUTSIDE)
+- return FALSE;
++ return TRUE;
+
+ range->layout->mouse_x = event->x;
+ range->layout->mouse_y = event->y;
+@@ -1429,7 +1439,7 @@
+ return TRUE;
+ }
+
+- return FALSE;
++ return TRUE;
+ }
+
+ /**
+--- gtk+-2.8.6/gtk/gtkentry.c.orig 2005-09-02 21:51:06 +0200
++++ gtk+-2.8.6/gtk/gtkentry.c 2005-12-07 21:21:12 +0100
+@@ -597,6 +597,15 @@
+ 0.0,
+ GTK_PARAM_READWRITE));
+
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("min_width",
++ _("Minimum width"),
++ _("Minimum width of the entry field"),
++ 0,
++ G_MAXINT,
++ MIN_ENTRY_WIDTH,
++ G_PARAM_READABLE));
++
+ signals[POPULATE_POPUP] =
+ g_signal_new ("populate_popup",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+@@ -1227,7 +1236,7 @@
+ {
+ GtkEntry *entry = GTK_ENTRY (widget);
+ PangoFontMetrics *metrics;
+- gint xborder, yborder;
++ gint xborder, yborder, min_width;
+ PangoContext *context;
+
+ gtk_widget_ensure_style (widget);
+@@ -1243,9 +1252,11 @@
+
+ xborder += INNER_BORDER;
+ yborder += INNER_BORDER;
+-
++
++ gtk_widget_style_get (widget, "min_width", &min_width, NULL);
++
+ if (entry->width_chars < 0)
+- requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
++ requisition->width = min_width + xborder * 2;
+ else
+ {
+ gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
+--- gtk+-2.8.6/gtk/gtkarrow.c.orig 2005-06-21 17:38:39 +0200
++++ gtk+-2.8.6/gtk/gtkarrow.c 2005-12-07 21:21:12 +0100
+@@ -31,7 +31,7 @@
+ #include "gtkintl.h"
+ #include "gtkalias.h"
+
+-#define MIN_ARROW_SIZE 15
++#define MIN_ARROW_SIZE 7
+
+ enum {
+ PROP_0,
+@@ -55,6 +55,8 @@
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
++static void gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition);
+
+ GType
+ gtk_arrow_get_type (void)
+@@ -113,6 +115,7 @@
+ GTK_PARAM_READWRITE));
+
+ widget_class->expose_event = gtk_arrow_expose;
++ widget_class->size_request = gtk_arrow_size_request;
+ }
+
+ static void
+@@ -168,13 +171,18 @@
+ }
+
+ static void
++gtk_arrow_size_request (GtkWidget *arrow,
++ GtkRequisition *requisition)
++{
++ requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
++ requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
++}
++
++static void
+ gtk_arrow_init (GtkArrow *arrow)
+ {
+ GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
+
+- GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+- GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+-
+ arrow->arrow_type = GTK_ARROW_RIGHT;
+ arrow->shadow_type = GTK_SHADOW_OUT;
+ }
+--- gtk+-2.8.6/gtk/gtkcalendar.c.orig 2005-12-07 21:36:14 +0100
++++ gtk+-2.8.6/gtk/gtkcalendar.c 2005-12-07 21:49:21 +0100
+@@ -692,6 +692,35 @@
+ ****************************************/
+
+ static void
++calendar_select_day (GtkCalendar *calendar, guint day)
++{
++ g_return_if_fail (GTK_IS_CALENDAR (calendar));
++ g_return_if_fail (day <= 31);
++
++ /* Deselect the old day */
++ if (calendar->selected_day > 0)
++ {
++ gint selected_day;
++
++ selected_day = calendar->selected_day;
++ calendar->selected_day = 0;
++ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
++ calendar_invalidate_day_num (calendar, selected_day);
++ }
++
++ calendar->selected_day = day;
++
++ /* Select the new day */
++ if (day != 0)
++ {
++ if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
++ calendar_invalidate_day_num (calendar, day);
++ }
++
++ g_object_notify (G_OBJECT (calendar), "day");
++}
++
++static void
+ calendar_set_month_next (GtkCalendar *calendar)
+ {
+ gint month_len;
+@@ -723,10 +752,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ calendar_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ calendar_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ }
+@@ -752,10 +781,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ calendar_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ calendar_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ }
+@@ -784,10 +813,10 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ calendar_select_day (calendar, month_len);
+ }
+ else
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ calendar_select_day (calendar, calendar->selected_day);
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+ }
+@@ -1088,13 +1117,13 @@
+ if (month_len < calendar->selected_day)
+ {
+ calendar->selected_day = 0;
+- gtk_calendar_select_day (calendar, month_len);
++ calendar_select_day (calendar, month_len);
+ }
+ else
+ {
+ if (calendar->selected_day < 0)
+ calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
+- gtk_calendar_select_day (calendar, calendar->selected_day);
++ calendar_select_day (calendar, calendar->selected_day);
+ }
+
+ gtk_widget_queue_draw (GTK_WIDGET (calendar));
+@@ -3285,27 +3314,7 @@
+ g_return_if_fail (GTK_IS_CALENDAR (calendar));
+ g_return_if_fail (day <= 31);
+
+- /* Deselect the old day */
+- if (calendar->selected_day > 0)
+- {
+- gint selected_day;
+-
+- selected_day = calendar->selected_day;
+- calendar->selected_day = 0;
+- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+- calendar_invalidate_day_num (calendar, selected_day);
+- }
+-
+- calendar->selected_day = day;
+-
+- /* Select the new day */
+- if (day != 0)
+- {
+- if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
+- calendar_invalidate_day_num (calendar, day);
+- }
+-
+- g_object_notify (G_OBJECT (calendar), "day");
++ calendar_select_day (calendar, day);
+
+ g_signal_emit (calendar,
+ gtk_calendar_signals[DAY_SELECTED_SIGNAL],
diff --git a/packages/gtk+/gtk+-2.8.16/gtklabel-resize-patch b/packages/gtk+/gtk+-2.8.16/gtklabel-resize-patch
new file mode 100644
index 0000000000..df29656343
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/gtklabel-resize-patch
@@ -0,0 +1,10 @@
+--- gtk+-2.4.3/gtk/gtklabel.c~ 2004-06-11 13:50:34.000000000 +0100
++++ gtk+-2.4.3/gtk/gtklabel.c 2004-07-05 13:33:57.000000000 +0100
+@@ -1623,6 +1623,7 @@
+
+ /* We have to clear the layout, fonts etc. may have changed */
+ gtk_label_clear_layout (label);
++ gtk_widget_queue_resize (GTK_WIDGET (label));
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+-2.8.16/gtktreeview-316689.patch b/packages/gtk+/gtk+-2.8.16/gtktreeview-316689.patch
new file mode 100644
index 0000000000..4e77ddf9f9
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/gtktreeview-316689.patch
@@ -0,0 +1,25 @@
+diff -u -p -r1.498 gtktreeview.c
+--- gtk+-2.8.9/gtk/gtktreeview.c 22 Oct 2005 21:08:23 -0000 1.498
++++ gtk+-2.8.9/gtk/gtktreeview.c 24 Oct 2005 22:30:27 -0000
+@@ -2098,6 +2098,9 @@ gtk_tree_view_size_allocate (GtkWidget
+ /* now the adjustments and window sizes are in sync, we can sync toprow/dy again */
+ if (tree_view->priv->height <= tree_view->priv->vadjustment->page_size)
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0);
++ else if (tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size > tree_view->priv->height)
++ gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment),
++ tree_view->priv->height - tree_view->priv->vadjustment->page_size);
+ else if (gtk_tree_row_reference_valid (tree_view->priv->top_row))
+ gtk_tree_view_top_row_to_dy (tree_view);
+ else
+@ -5031,6 +5034,11 @@ validate_visible_area (GtkTreeView *tree
+ * else than zero. we update top_row to be in sync with dy = 0.
+ */
+ gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), 0);
++ gtk_tree_view_dy_to_top_row (tree_view);
++ }
++ else if (tree_view->priv->vadjustment->value + tree_view->priv->vadjustment->page_size > tree_view->priv->height)
++ {
++ gtk_adjustment_set_value (GTK_ADJUSTMENT (tree_view->priv->vadjustment), tree_view->priv->height - tree_view->priv->vadjustment->page_size);
+ gtk_tree_view_dy_to_top_row (tree_view);
+ }
+ else
diff --git a/packages/gtk+/gtk+-2.8.16/hardcoded_libtool.patch b/packages/gtk+/gtk+-2.8.16/hardcoded_libtool.patch
new file mode 100644
index 0000000000..b2afddcc61
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/hardcoded_libtool.patch
@@ -0,0 +1,29 @@
+--- gtk+-2.6.0/configure.in.old 2005-01-01 16:23:45.000000000 +0000
++++ gtk+-2.6.0/configure.in 2005-01-01 16:24:03.000000000 +0000
+@@ -360,7 +360,7 @@
+ AC_MSG_CHECKING([Whether to write dependencies into .pc files])
+ case $enable_explicit_deps in
+ auto)
+- deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
++ deplib_check_method=`($host_alias-libtool --config; echo eval echo \\$deplib_check_method) | sh`
+ if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
+ enable_explicit_deps=yes
+ else
+@@ -688,7 +688,7 @@
+ dnl Now we check to see if our libtool supports shared lib deps
+ dnl (in a rather ugly way even)
+ if $dynworks; then
+- pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
++ pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} $host_alias-libtool --config"
+ pixbuf_deplibs_check=`$pixbuf_libtool_config | \
+ grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+ sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+@@ -1512,7 +1512,7 @@
+ #
+ # We are using gmodule-no-export now, but I'm leaving the stripping
+ # code in place for now, since pango and atk still require gmodule.
+-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
++export_dynamic=`($host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+ if test -n "$export_dynamic"; then
+ GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
+ GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
diff --git a/packages/gtk+/gtk+-2.8.16/menu-deactivate.patch b/packages/gtk+/gtk+-2.8.16/menu-deactivate.patch
new file mode 100644
index 0000000000..29e665fbf3
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/menu-deactivate.patch
@@ -0,0 +1,50 @@
+--- gtk+-2.4.4/gtk/gtkmenushell.c.old Thu Aug 26 23:45:28 2004
++++ gtk+-2.4.4/gtk/gtkmenushell.c Fri Aug 27 00:13:33 2004
+@@ -37,7 +37,7 @@
+ #include "gtktearoffmenuitem.h"
+ #include "gtkwindow.h"
+
+-#define MENU_SHELL_TIMEOUT 500
++#define MENU_SHELL_TIMEOUT 2000
+
+ enum {
+ DEACTIVATE,
+@@ -156,6 +156,7 @@
+ static GtkContainerClass *parent_class = NULL;
+ static guint menu_shell_signals[LAST_SIGNAL] = { 0 };
+
++static int last_crossing_time;
+
+ GType
+ gtk_menu_shell_get_type (void)
+@@ -418,6 +419,7 @@
+ gtk_grab_add (GTK_WIDGET (menu_shell));
+ menu_shell->have_grab = TRUE;
+ menu_shell->active = TRUE;
++ last_crossing_time = 0;
+ }
+ }
+
+@@ -545,6 +547,13 @@
+ menu_shell->activate_time = 0;
+ deactivate = FALSE;
+ }
++
++ if (last_crossing_time != 0
++ && ((event->time - last_crossing_time) < 500))
++ {
++ last_crossing_time = 0;
++ deactivate = FALSE;
++ }
+
+ if (deactivate)
+ {
+@@ -597,6 +606,8 @@
+ if (menu_shell->active)
+ {
+ menu_item = gtk_get_event_widget ((GdkEvent*) event);
++
++ last_crossing_time = event->time;
+
+ if (!menu_item ||
+ (GTK_IS_MENU_ITEM (menu_item) &&
diff --git a/packages/gtk+/gtk+-2.8.16/no-demos.patch b/packages/gtk+/gtk+-2.8.16/no-demos.patch
new file mode 100644
index 0000000000..0145067ad5
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/no-demos.patch
@@ -0,0 +1,10 @@
+--- gtk+-2.8.6/Makefile.am.orig 2005-12-07 21:30:56 +0100
++++ gtk+-2.8.6/Makefile.am 2005-12-07 21:31:10 +0100
+@@ -1,6 +1,6 @@
+ ## Makefile.am for GTK+
+
+-SRC_SUBDIRS = gdk-pixbuf gdk gtk modules demos tests perf contrib
++SRC_SUBDIRS = gdk-pixbuf gdk gtk modules tests perf contrib
+ SUBDIRS = po po-properties $(SRC_SUBDIRS) docs m4macros
+
+ # require automake 1.4
diff --git a/packages/gtk+/gtk+-2.8.16/no-xwc.patch b/packages/gtk+/gtk+-2.8.16/no-xwc.patch
new file mode 100644
index 0000000000..318b150359
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/no-xwc.patch
@@ -0,0 +1,179 @@
+Index: configure.in
+===================================================================
+RCS file: /cvs/gnome/gtk+/configure.in,v
+retrieving revision 1.469.2.22
+diff -u -r1.469.2.22 configure.in
+--- gtk/configure.in 16 Mar 2006 16:39:45 -0000 1.469.2.22
++++ gtk/configure.in 20 Mar 2006 12:07:11 -0000
+@@ -1115,6 +1115,8 @@
+
+ AC_CHECK_FUNCS(XConvertCase XInternAtoms)
+
++ AC_CHECK_FUNCS(XmbDrawString)
++
+ # Generic X11R6 check needed for XIM support; we could
+ # probably use this to replace the above, but we'll
+ # leave the separate checks for XConvertCase and XInternAtoms
+Index: gdk/x11/gdkdrawable-x11.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gdk/x11/gdkdrawable-x11.c,v
+retrieving revision 1.58
+diff -u -r1.58 gdkdrawable-x11.c
+--- gtk/gdk/x11/gdkdrawable-x11.c 15 Aug 2005 19:04:54 -0000 1.58
++++ gtk/gdk/x11/gdkdrawable-x11.c 20 Mar 2006 12:07:12 -0000
+@@ -579,12 +579,14 @@
+ GDK_GC_GET_XGC (gc), x, y, (XChar2b *) text, text_length / 2);
+ }
+ }
++#ifdef HAVE_XMBDRAWSTRING
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ XFontSet fontset = (XFontSet) GDK_FONT_XFONT (font);
+ XmbDrawString (xdisplay, impl->xid,
+ fontset, GDK_GC_GET_XGC (gc), x, y, text, text_length);
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+@@ -616,6 +618,7 @@
+ GDK_GC_GET_XGC (gc), x, y, text_8bit, text_length);
+ g_free (text_8bit);
+ }
++#ifdef HAVE_XMBDRAWSTRING
+ else if (font->type == GDK_FONT_FONTSET)
+ {
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+@@ -636,6 +639,7 @@
+ g_free (text_wchar);
+ }
+ }
++#endif
+ else
+ g_error("undefined font type\n");
+ }
+Index: gdk/x11/gdkfont-x11.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gdk/x11/gdkfont-x11.c,v
+retrieving revision 1.48.2.1
+diff -u -r1.48.2.1 gdkfont-x11.c
+--- gtk/gdk/x11/gdkfont-x11.c 20 Jan 2006 04:39:43 -0000 1.48.2.1
++++ gtk/gdk/x11/gdkfont-x11.c 20 Mar 2006 12:07:12 -0000
+@@ -527,10 +527,12 @@
+ width = XTextWidth16 (xfont, (XChar2b *) text, text_length / 2);
+ }
+ break;
++#ifdef HAVE_XMBDRAWSTRING
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ width = XmbTextEscapement (fontset, text, text_length);
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -580,6 +582,7 @@
+ width = 0;
+ }
+ break;
++#ifdef HAVE_XMBDRAWSTRING
+ case GDK_FONT_FONTSET:
+ if (sizeof(GdkWChar) == sizeof(wchar_t))
+ {
+@@ -597,6 +600,7 @@
+ g_free (text_wchar);
+ }
+ break;
++#endif
+ default:
+ width = 0;
+ }
+@@ -669,6 +673,7 @@
+ if (descent)
+ *descent = overall.descent;
+ break;
++#ifdef HAVE_XMBDRAWSTRING
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+ XmbTextExtents (fontset, text, text_length, &ink, &logical);
+@@ -683,6 +688,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+@@ -755,6 +761,7 @@
+ *descent = overall.descent;
+ break;
+ }
++#ifdef HAVE_XMBDRAWSTRING
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
+
+@@ -782,6 +789,7 @@
+ if (descent)
+ *descent = ink.y + ink.height;
+ break;
++#endif
+ }
+
+ }
+Index: gdk/x11/gdkim-x11.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gdk/x11/gdkim-x11.c,v
+retrieving revision 1.38
+diff -u -r1.38 gdkim-x11.c
+--- gtk/gdk/x11/gdkim-x11.c 16 Mar 2005 03:17:27 -0000 1.38
++++ gtk/gdk/x11/gdkim-x11.c 20 Mar 2006 12:07:12 -0000
+@@ -48,6 +48,7 @@
+ void
+ _gdk_x11_initialize_locale (void)
+ {
++#ifdef HAVE_XMBDRAWSTRING
+ wchar_t result;
+ gchar *current_locale;
+ static char *last_locale = NULL;
+@@ -93,7 +94,8 @@
+ GDK_NOTE (XIM,
+ g_message ("%s multi-byte string functions.",
+ gdk_use_mb ? "Using" : "Not using"));
+-
++#endif
++
+ return;
+ }
+
+@@ -136,6 +138,7 @@
+ {
+ gchar *mbstr;
+
++#ifdef HAVE_XMBDRAWSTRING
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -178,6 +181,7 @@
+ XFree (tpr.value);
+ }
+ else
++#endif
+ {
+ gint length = 0;
+ gint i;
+@@ -210,6 +214,7 @@
+ gint
+ gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
+ {
++#ifdef HAVE_XMBDRAWSTRING
+ if (gdk_use_mb)
+ {
+ GdkDisplay *display = find_a_display ();
+@@ -242,6 +247,7 @@
+ return len_cpy;
+ }
+ else
++#endif
+ {
+ gint i;
+
diff --git a/packages/gtk+/gtk+-2.8.16/scroll-timings.patch b/packages/gtk+/gtk+-2.8.16/scroll-timings.patch
new file mode 100644
index 0000000000..a38b21dcc2
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/scroll-timings.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.4.4/gtk/gtkrange.c~ 2004-08-23 01:50:22.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkrange.c 2004-08-27 15:48:49.000000000 +0100
+@@ -35,9 +35,9 @@
+ #include "gtkintl.h"
+ #include "gtkscrollbar.h"
+
+-#define SCROLL_INITIAL_DELAY 250 /* must hold button this long before ... */
+-#define SCROLL_LATER_DELAY 100 /* ... it starts repeating at this rate */
+-#define UPDATE_DELAY 300 /* Delay for queued update */
++#define SCROLL_INITIAL_DELAY 500 /* must hold button this long before ... */
++#define SCROLL_LATER_DELAY 200 /* ... it starts repeating at this rate */
++#define UPDATE_DELAY 1000 /* Delay for queued update */
+
+ enum {
+ PROP_0,
diff --git a/packages/gtk+/gtk+-2.8.16/single-click.patch b/packages/gtk+/gtk+-2.8.16/single-click.patch
new file mode 100644
index 0000000000..1bf0db12a8
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/single-click.patch
@@ -0,0 +1,36 @@
+--- gtk+-2.8.6/gtk/gtkfilesel.c.orig 2005-12-07 21:13:33 +0100
++++ gtk+-2.8.6/gtk/gtkfilesel.c 2005-12-07 21:14:56 +0100
+@@ -2461,6 +2461,33 @@
+ if (fs->last_selected != NULL)
+ g_free (fs->last_selected);
+
++ // Single-click directory entry
++ if (new_names->len == 1)
++ {
++ GtkTreeView *tree_view;
++ GtkTreeModel *model;
++ GtkTreePath *path;
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ tree_view = gtk_tree_selection_get_tree_view (selection);
++
++ if (gtk_tree_selection_get_selected (selection, &model, &iter))
++ {
++ path = gtk_tree_model_get_path (model, &iter);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (!is_file)
++ {
++ gtk_file_selection_dir_activate (tree_view, path,
++ gtk_tree_view_get_column (tree_view, DIR_COLUMN),
++ user_data);
++ }
++
++ gtk_tree_path_free (path);
++ }
++ }
++
+ fs->last_selected = g_strdup (g_ptr_array_index (new_names, index));
+ filename = get_real_filename (fs->last_selected, FALSE);
+
diff --git a/packages/gtk+/gtk+-2.8.16/small-gtkfilesel.patch b/packages/gtk+/gtk+-2.8.16/small-gtkfilesel.patch
new file mode 100644
index 0000000000..20bf4cf366
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/small-gtkfilesel.patch
@@ -0,0 +1,267 @@
+diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
+--- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
++++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
+@@ -68,6 +68,7 @@
+ #include "gtkprivate.h"
+ #include "gtkscrolledwindow.h"
+ #include "gtkstock.h"
++#include "gtksignal.h"
+ #include "gtktreeselection.h"
+ #include "gtktreeview.h"
+ #include "gtkvbox.h"
+@@ -77,6 +78,7 @@
+ #include "gtkmessagedialog.h"
+ #include "gtkdnd.h"
+ #include "gtkeventbox.h"
++#include "gtkimage.h"
+
+ #undef GTK_DISABLE_DEPRECATED
+ #include "gtkoptionmenu.h"
+@@ -245,7 +247,8 @@
+ };
+
+ enum {
+- DIR_COLUMN
++ DIR_COLUMN,
++ ISFILE_COLUMN
+ };
+
+ enum {
+@@ -400,6 +403,12 @@
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+ gpointer user_data);
++
++static void gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data);
++
+ static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
+ gpointer user_data);
+ static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
+@@ -419,6 +428,7 @@
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
+
+ static void free_selected_names (GPtrArray *names);
+
+@@ -578,6 +588,23 @@
+ G_PARAM_WRITABLE));
+ object_class->destroy = gtk_file_selection_destroy;
+ widget_class->map = gtk_file_selection_map;
++ widget_class->style_set = gtk_file_selection_style_set;
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_boolean ("show_fileops_default",
++ _("Show fileop buttons by default"),
++ _("Whether file operation buttons are shown by default"),
++ TRUE,
++ G_PARAM_READABLE));
++
++ gtk_widget_class_install_style_property (widget_class,
++ g_param_spec_int ("border_width",
++ _("Border width"),
++ _("Width of border around the main dialog area"),
++ 0,
++ G_MAXINT,
++ 10,
++ G_PARAM_READABLE));
+ }
+
+ static void gtk_file_selection_set_property (GObject *object,
+@@ -649,7 +676,29 @@
+ gtk_widget_grab_default (widget);
+ return FALSE;
+ }
+-
++
++static void
++gtk_file_selection_style_set (GtkWidget *filesel,
++ GtkStyle *prev_style)
++{
++ gboolean show_fileops;
++ gint border_width;
++
++ gtk_widget_style_get (filesel,
++ "show_fileops_default",
++ &show_fileops,
++ "border_width",
++ &border_width,
++ NULL);
++
++ gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
++
++ if (show_fileops)
++ gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
++ else
++ gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
++}
++
+ static void
+ gtk_file_selection_init (GtkFileSelection *filesel)
+ {
+@@ -674,17 +723,15 @@
+
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = dialog->vbox;
+- gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+
+ /* The horizontal box containing create, rename etc. buttons */
+ filesel->button_area = gtk_hbutton_box_new ();
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
+- gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
+ FALSE, FALSE, 0);
+ gtk_widget_show (filesel->button_area);
+
+- gtk_file_selection_show_fileop_buttons (filesel);
++ gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
+
+ /* hbox for pulldown menu */
+ pulldown_hbox = gtk_hbox_new (TRUE, 5);
+@@ -723,25 +770,32 @@
+
+ /* The directories list */
+
+- model = gtk_list_store_new (1, G_TYPE_STRING);
++ model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
+ filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+- column = gtk_tree_view_column_new_with_attributes (_("Folders"),
++ column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
+ gtk_cell_renderer_text_new (),
+ "text", DIR_COLUMN,
+ NULL);
+ label = gtk_label_new_with_mnemonic (_("Fol_ders"));
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
+ gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
++
++ /* gtk_tree_view_column_set_widget (column, label); */
++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
++
+ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
+
+ gtk_widget_set_size_request (filesel->dir_list,
+ DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ g_signal_connect (filesel->dir_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_dir_activate), filesel);
++ G_CALLBACK (gtk_file_selection_activate), filesel);
++
++ g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
++ G_CALLBACK (gtk_file_selection_file_changed), filesel);
++
+
+ /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
+
+@@ -758,41 +812,6 @@
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+- /* The files list */
+- model = gtk_list_store_new (1, G_TYPE_STRING);
+- filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
+- g_object_unref (model);
+-
+- column = gtk_tree_view_column_new_with_attributes (_("Files"),
+- gtk_cell_renderer_text_new (),
+- "text", FILE_COLUMN,
+- NULL);
+- label = gtk_label_new_with_mnemonic (_("_Files"));
+- gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
+- gtk_widget_show (label);
+- gtk_tree_view_column_set_widget (column, label);
+- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
+- gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
+-
+- gtk_widget_set_size_request (filesel->file_list,
+- FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+- g_signal_connect (filesel->file_list, "row_activated",
+- G_CALLBACK (gtk_file_selection_file_activate), filesel);
+- g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
+- G_CALLBACK (gtk_file_selection_file_changed), filesel);
+-
+- /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
+-
+- scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
+- gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+- gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
+- gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
+- gtk_widget_show (filesel->file_list);
+- gtk_widget_show (scrolled_win);
+-
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
+@@ -2008,6 +2027,23 @@
+ }
+
+ static void
++gtk_file_selection_activate (GtkTreeView *tree_view,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
++{
++ GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
++ GtkTreeIter iter;
++ gboolean is_file;
++
++ gtk_tree_model_get_iter (model, &iter, path);
++ gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
++
++ if (! is_file)
++ gtk_file_selection_dir_activate (tree_view, path, column, user_data);
++}
++
++static void
+ gtk_file_selection_file_activate (GtkTreeView *tree_view,
+ GtkTreePath *path,
+ GtkTreeViewColumn *column,
+@@ -2103,7 +2139,6 @@
+ PossibleCompletion* poss;
+ GtkTreeIter iter;
+ GtkListStore *dir_model;
+- GtkListStore *file_model;
+ gchar* filename;
+ gchar* rem_path = rel_path;
+ gchar* sel_text;
+@@ -2125,10 +2160,8 @@
+ g_assert (cmpl_state->reference_dir);
+
+ dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
+- file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
+
+ gtk_list_store_clear (dir_model);
+- gtk_list_store_clear (file_model);
+
+ /* Set the dir list to include ./ and ../ */
+ gtk_list_store_append (dir_model, &iter);
+@@ -2150,13 +2183,17 @@
+ strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
+ {
+ gtk_list_store_append (dir_model, &iter);
+- gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, FALSE, -1);
+ }
+ }
+ else
+ {
+- gtk_list_store_append (file_model, &iter);
+- gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
++ gtk_list_store_append (dir_model, &iter);
++ gtk_list_store_set (dir_model, &iter,
++ DIR_COLUMN, filename,
++ ISFILE_COLUMN, TRUE, -1);
+ }
+ }
+
diff --git a/packages/gtk+/gtk+-2.8.16/spinbutton.patch b/packages/gtk+/gtk+-2.8.16/spinbutton.patch
new file mode 100644
index 0000000000..8ad7507af0
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/spinbutton.patch
@@ -0,0 +1,128 @@
+--- gtk+-2.4.3/gtk/gtkspinbutton.c.old 2004-04-22 14:49:27.000000000 +0100
++++ gtk+-2.4.3/gtk/gtkspinbutton.c 2004-06-30 21:48:18.000000000 +0100
+@@ -733,7 +733,7 @@
+
+ spin = GTK_SPIN_BUTTON (widget);
+ arrow_size = spin_button_get_arrow_size (spin);
+- panel_width = arrow_size + 2 * widget->style->xthickness;
++ panel_width = (2 * arrow_size) + 4 * widget->style->xthickness;
+
+ widget->allocation = *allocation;
+
+@@ -866,19 +866,16 @@
+ {
+ width = spin_button_get_arrow_size (spin_button) + 2 * widget->style->xthickness;
+
++ y = widget->style->ythickness;
++ height = widget->requisition.height - (2 * y);
++
+ if (arrow_type == GTK_ARROW_UP)
+ {
+ x = 0;
+- y = 0;
+-
+- height = widget->requisition.height / 2;
+ }
+ else
+ {
+- x = 0;
+- y = widget->requisition.height / 2;
+-
+- height = (widget->requisition.height + 1) / 2;
++ x = width;
+ }
+
+ if (spin_button_at_limit (spin_button, arrow_type))
+@@ -908,32 +905,17 @@
+ shadow_type = GTK_SHADOW_OUT;
+ }
+ }
+-
++
+ gtk_paint_box (widget->style, spin_button->panel,
+ state_type, shadow_type,
+ NULL, widget,
+- (arrow_type == GTK_ARROW_UP)? "spinbutton_up" : "spinbutton_down",
++ NULL,
+ x, y, width, height);
+
+ height = widget->requisition.height;
+
+- if (arrow_type == GTK_ARROW_DOWN)
+- {
+- y = height / 2;
+- height = height - y - 2;
+- }
+- else
+- {
+- y = 2;
+- height = height / 2 - 2;
+- }
+-
+ width -= 3;
+-
+- if (widget && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+- x = 2;
+- else
+- x = 1;
++ height -= 3;
+
+ w = width / 2;
+ w -= w % 2 - 1; /* force odd */
+@@ -1108,7 +1090,7 @@
+ if (GTK_ENTRY (widget)->editable)
+ gtk_spin_button_update (spin);
+
+- if (event->y <= widget->requisition.height / 2)
++ if (event->x <= (spin_button_get_arrow_size (spin) + widget->style->xthickness))
+ {
+ if (event->button == 1)
+ start_spinning (spin, GTK_ARROW_UP, spin->adjustment->step_increment);
+@@ -1143,44 +1125,11 @@
+
+ arrow_size = spin_button_get_arrow_size (spin);
+
+- if (event->button == spin->button)
+- {
+- int click_child = spin->click_child;
++ gtk_spin_button_stop_spinning (spin);
+
+- gtk_spin_button_stop_spinning (spin);
+-
+- if (event->button == 3)
+- {
+- if (event->y >= 0 && event->x >= 0 &&
+- event->y <= widget->requisition.height &&
+- event->x <= arrow_size + 2 * widget->style->xthickness)
+- {
+- if (click_child == GTK_ARROW_UP &&
+- event->y <= widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->upper - spin->adjustment->value;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, diff);
+- }
+- else if (click_child == GTK_ARROW_DOWN &&
+- event->y > widget->requisition.height / 2)
+- {
+- gdouble diff;
+-
+- diff = spin->adjustment->value - spin->adjustment->lower;
+- if (diff > EPSILON)
+- gtk_spin_button_real_spin (spin, -diff);
+- }
+- }
+- }
+- spin_button_redraw (spin);
++ spin_button_redraw (spin);
+
+- return TRUE;
+- }
+- else
+- return GTK_WIDGET_CLASS (parent_class)->button_release_event (widget, event);
++ return TRUE;
+ }
+
+ static gint
diff --git a/packages/gtk+/gtk+-2.8.16/xsettings.patch b/packages/gtk+/gtk+-2.8.16/xsettings.patch
new file mode 100644
index 0000000000..b63e262d34
--- /dev/null
+++ b/packages/gtk+/gtk+-2.8.16/xsettings.patch
@@ -0,0 +1,16 @@
+--- gtk+-2.4.4/gdk/x11/gdkevents-x11.c.old Sun Aug 22 17:14:00 2004
++++ gtk+-2.4.4/gdk/x11/gdkevents-x11.c Sun Aug 22 17:14:00 2004
+@@ -2827,10 +2827,9 @@
+ {
+ GdkScreenX11 *screen = data;
+
+- if (xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent))
+- return GDK_FILTER_REMOVE;
+- else
+- return GDK_FILTER_CONTINUE;
++ xsettings_client_process_event (screen->xsettings_client, (XEvent *)xevent);
++
++ return GDK_FILTER_CONTINUE;
+ }
+
+ static void
diff --git a/packages/gtk+/gtk+_2.8.16.bb b/packages/gtk+/gtk+_2.8.16.bb
new file mode 100644
index 0000000000..474858856c
--- /dev/null
+++ b/packages/gtk+/gtk+_2.8.16.bb
@@ -0,0 +1,88 @@
+LICENSE = "LGPL"
+DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
+set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites."
+HOMEPAGE = "http://www.gtk.org"
+SECTION = "libs"
+PRIORITY = "optional"
+MAINTAINER = "Philip Blundell <pb@handhelds.org>"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt cairo"
+PR = "r2"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.8/gtk+-${PV}.tar.bz2 \
+ file://no-xwc.patch;patch=1 \
+ file://automake-lossage.patch;patch=1 \
+ file://spinbutton.patch;patch=1 \
+ file://hardcoded_libtool.patch;patch=1 \
+ file://disable-tooltips.patch;patch=1 \
+ file://gtklabel-resize-patch;patch=1 \
+ file://gtktreeview-316689.patch;patch=1"
+# file://menu-deactivate.patch;patch=1 \
+# file://xsettings.patch;patch=1 \
+# file://scroll-timings.patch;patch=1 \
+# file://small-gtkfilesel.patch;patch=1 \
+# file://migration.patch;patch=1;pnum=0 \
+# file://no-demos.patch;patch=1 \
+# file://gtk+-handhelds.patch;patch=1 \
+# file://single-click.patch;patch=1"
+
+inherit autotools pkgconfig
+
+FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
+ ${bindir}/gtk-query-immodules-2.0 \
+ ${bindir}/gtk-update-icon-cache \
+ ${libdir}/lib*.so.* \
+ ${datadir}/themes ${sysconfdir} \
+ ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
+FILES_${PN}-dev += "${datadir}/gtk-2.0/include ${libdir}/gtk-2.0/include ${bindir}/gdk-pixbuf-csource"
+
+RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1"
+
+EXTRA_OECONF = "--without-libtiff --disable-xkb --disable-glibtest --enable-display-migration"
+# --disable-cruft
+
+LIBV = "2.4.0"
+
+do_stage () {
+ oe_libinstall -so -C gtk libgtk-x11-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gdk libgdk-x11-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C contrib/gdk-pixbuf-xlib libgdk_pixbuf_xlib-2.0 ${STAGING_LIBDIR}
+ oe_libinstall -so -C gdk-pixbuf libgdk_pixbuf-2.0 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/gtk-2.0/include
+ install -m 0644 gdk/gdkconfig.h ${STAGING_LIBDIR}/gtk-2.0/include/gdkconfig.h
+
+ install -m 0644 m4macros/gtk-2.0.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/gtk-2.0
+}
+
+postinst_prologue() {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+}
+
+PACKAGES_DYNAMIC = "gdk-pixbuf-loader-* gtk-immodule-*"
+
+python populate_packages_prepend () {
+ import os.path
+
+ prologue = bb.data.getVar("postinst_prologue", d, 1)
+
+ gtk_libdir = bb.data.expand('${libdir}/gtk-2.0/${LIBV}', d)
+ loaders_root = os.path.join(gtk_libdir, 'loaders')
+ immodules_root = os.path.join(gtk_libdir, 'immodules')
+
+ do_split_packages(d, loaders_root, '^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s', prologue + 'gdk-pixbuf-query-loaders > /etc/gtk-2.0/gdk-pixbuf.loaders')
+ do_split_packages(d, immodules_root, '^im-(.*)\.so$', 'gtk-immodule-%s', 'GTK input module for %s', prologue + 'gtk-query-immodules > /etc/gtk-2.0/gtk.immodules')
+
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_${PN}', 'libgtk-2.0', d)
+}
diff --git a/packages/hostap/hostap-daemon-0.4.4/.mtn2git_empty b/packages/gtkhtml2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/hostap/hostap-daemon-0.4.4/.mtn2git_empty
+++ b/packages/gtkhtml2/.mtn2git_empty
diff --git a/packages/gtkhtml2/gtkhtml2_cvs.bb b/packages/gtkhtml2/gtkhtml2_cvs.bb
new file mode 100644
index 0000000000..1223254e91
--- /dev/null
+++ b/packages/gtkhtml2/gtkhtml2_cvs.bb
@@ -0,0 +1,27 @@
+SECTION = "libs"
+DEPENDS = "gtk+ glib-2.0 libxml2"
+DESCRIPTION = "A GTK+ HTML rendering library."
+LICENSE = "GPL"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
+PV = "2.11.0+cvs${SRCDATE}"
+PR = "r2"
+
+SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=gtkhtml2 \
+ http://svn.o-hand.com/repos/web/trunk/patches/at-import_box-pos.patch;patch=1;pnum=0 \
+ http://svn.o-hand.com/repos/web/trunk/patches/css-stylesheet-user.patch;patch=1;pnum=0 \
+ http://svn.o-hand.com/repos/web/trunk/patches/css-media.patch;patch=1;pnum=0 \
+ http://svn.o-hand.com/repos/web/trunk/patches/fix-margin-inherit.patch;patch=1;pnum=0 \
+ http://svn.o-hand.com/repos/web/trunk/patches/add-end-element-signal.patch;patch=1;pnum=0"
+
+S = "${WORKDIR}/${PN}"
+
+inherit pkgconfig autotools
+
+EXTRA_OECONF = " --disable-accessibility"
+
+do_stage() {
+ oe_libinstall -so -C libgtkhtml libgtkhtml-2 ${STAGING_LIBDIR}
+ install -d ${STAGING_INCDIR}/gtkhtml-2.0/libgtkhtml
+ ( for i in css document dom dom/core dom/events dom/html dom/traversal dom/views graphics layout layout/html util view; do install -d ${STAGING_INCDIR}/gtkhtml-2.0/libgtkhtml/$i; install -m 0644 ${S}/libgtkhtml/$i/*.h ${STAGING_INCDIR}/gtkhtml-2.0/libgtkhtml/$i; done )
+ install -m 0644 ${S}/libgtkhtml/*.h ${STAGING_INCDIR}/gtkhtml-2.0/libgtkhtml
+}
diff --git a/packages/hostap/hostap-daemon-0.4.4/defconfig b/packages/hostap/hostap-daemon-0.4.4/defconfig
deleted file mode 100644
index d0e22f2586..0000000000
--- a/packages/hostap/hostap-daemon-0.4.4/defconfig
+++ /dev/null
@@ -1,66 +0,0 @@
-# Example hostapd build time configuration
-#
-# This file lists the configuration options that are used when building the
-# hostapd binary. All lines starting with # are ignored. Configuration option
-# lines must be commented out complete, if they are not to be included, i.e.,
-# just setting VARIABLE=n is not disabling that variable.
-#
-# This file is included in Makefile, so variables like CFLAGS and LIBS can also
-# be modified from here. In most cass, these lines should use += in order not
-# to override previous values of the variables.
-
-# Driver interface for Host AP driver
-CONFIG_DRIVER_HOSTAP=y
-
-# Driver interface for wired authenticator
-CONFIG_DRIVER_WIRED=y
-
-# Driver interface for madwifi driver
-#CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../head # change to reflect local setup; directory for madwifi src
-
-# Driver interface for Prism54 driver
-CONFIG_DRIVER_PRISM54=y
-
-# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
-#CONFIG_DRIVER_BSD=y
-#CFLAGS += -I/usr/local/include
-#LIBS += -L/usr/local/lib
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# Integrated EAP authenticator
-CONFIG_EAP=y
-
-# EAP-MD5 for the integrated EAP authenticator
-CONFIG_EAP_MD5=y
-
-# EAP-TLS for the integrated EAP authenticator
-CONFIG_EAP_TLS=y
-
-# EAP-MSCHAPv2 for the integrated EAP authenticator
-CONFIG_EAP_MSCHAPV2=y
-
-# EAP-PEAP for the integrated EAP authenticator
-CONFIG_EAP_PEAP=y
-
-# EAP-GTC for the integrated EAP authenticator
-CONFIG_EAP_GTC=y
-
-# EAP-TTLS for the integrated EAP authenticator
-CONFIG_EAP_TTLS=y
-
-# EAP-SIM for the integrated EAP authenticator
-#CONFIG_EAP_SIM=y
-
-# PKCS#12 (PFX) support (used to read private key and certificate file from
-# a file that usually has extension .p12 or .pfx)
-CONFIG_PKCS12=y
-
-# RADIUS authentication server. This provides access to the integrated EAP
-# authenticator from external hosts using RADIUS.
-CONFIG_RADIUS_SERVER=y
diff --git a/packages/hostap/hostap-daemon-0.4.4/init b/packages/hostap/hostap-daemon-0.4.4/init
deleted file mode 100644
index b0736c0baa..0000000000
--- a/packages/hostap/hostap-daemon-0.4.4/init
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-DAEMON=/usr/sbin/hostapd
-NAME=httpd
-DESC="HOSTAP Daemon"
-ARGS="/etc/hostapd.conf"
-
-test -f $DAEMON || exit 0
-
-set -e
-
-case "$1" in
- start)
- echo -n "starting $DESC: $NAME... "
- start-stop-daemon -S -b -n $NAME -a $DAEMON -- $ARGS
- echo "done."
- ;;
- stop)
- echo -n "stopping $DESC: $NAME... "
- start-stop-daemon -K -n $NAME
- echo "done."
- ;;
- restart)
- echo "restarting $DESC: $NAME... "
- $0 stop
- $0 start
- echo "done."
- ;;
- reload)
- echo -n "reloading $DESC: $NAME... "
- killall -HUP $(basename ${DAEMON})
- echo "done."
- ;;
- *)
- echo "Usage: $0 {start|stop|restart|reload}"
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/packages/hostap/hostap-daemon-0.4.4/madwifi-bsd-fix.diff b/packages/hostap/hostap-daemon-0.4.4/madwifi-bsd-fix.diff
deleted file mode 100644
index d9dab26a15..0000000000
--- a/packages/hostap/hostap-daemon-0.4.4/madwifi-bsd-fix.diff
+++ /dev/null
@@ -1,12 +0,0 @@
---- driver_madwifi.c.orig 2005-03-18 15:12:53.392793216 +0100
-+++ driver_madwifi.c 2005-03-18 15:13:09.246383104 +0100
-@@ -21,7 +21,8 @@
- #include <sys/types.h>
- #include <sys/socket.h>
-
--#include <include/compat.h>
-+#include <net80211/compat.h>
-+#include <net80211/_ieee80211.h>
- #include <net80211/ieee80211.h>
- #include <net80211/ieee80211_crypto.h>
- #include <net80211/ieee80211_ioctl.h>
diff --git a/packages/hostap/hostap-daemon-0.4.4/makefile-cross.diff b/packages/hostap/hostap-daemon-0.4.4/makefile-cross.diff
deleted file mode 100644
index 25d2ca34bb..0000000000
--- a/packages/hostap/hostap-daemon-0.4.4/makefile-cross.diff
+++ /dev/null
@@ -1,26 +0,0 @@
---- Makefile.orig 2005-03-18 14:34:27.274376504 +0100
-+++ Makefile 2005-03-18 14:35:56.609795456 +0100
-@@ -1,7 +1,9 @@
--CC=gcc
-+CC?=gcc
- DIR_WPA_SUPPLICANT=.
- DIR_HOSTAP=.
-
-+TARGET_PREFIX ?= /usr/local/bin/
-+
- ifndef CFLAGS
- CFLAGS = -MMD -O2 -Wall -g
- endif
-@@ -170,10 +172,10 @@
- fi
-
- install: all
-- for i in $(ALL); do cp $$i /usr/local/bin/$$i; done
-+ for i in $(ALL); do cp $$i $(TARGET_PREFIX)/$$i; done
-
- hostapd: $(OBJS)
-- $(CC) -o hostapd $(OBJS) $(LIBS)
-+ $(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
-
- driver_conf.c: Makefile .config
- rm -f driver_conf.c
diff --git a/packages/hostap/hostap-daemon-0.4.4/mtx-1/defconfig b/packages/hostap/hostap-daemon-0.4.4/mtx-1/defconfig
deleted file mode 100644
index 8c3065c3b9..0000000000
--- a/packages/hostap/hostap-daemon-0.4.4/mtx-1/defconfig
+++ /dev/null
@@ -1,66 +0,0 @@
-# Example hostapd build time configuration
-#
-# This file lists the configuration options that are used when building the
-# hostapd binary. All lines starting with # are ignored. Configuration option
-# lines must be commented out complete, if they are not to be included, i.e.,
-# just setting VARIABLE=n is not disabling that variable.
-#
-# This file is included in Makefile, so variables like CFLAGS and LIBS can also
-# be modified from here. In most cass, these lines should use += in order not
-# to override previous values of the variables.
-
-# Driver interface for Host AP driver
-CONFIG_DRIVER_HOSTAP=y
-
-# Driver interface for wired authenticator
-CONFIG_DRIVER_WIRED=y
-
-# Driver interface for madwifi driver
-CONFIG_DRIVER_MADWIFI=y
-#CFLAGS += -I../head # change to reflect local setup; directory for madwifi src
-
-# Driver interface for Prism54 driver
-CONFIG_DRIVER_PRISM54=y
-
-# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
-#CONFIG_DRIVER_BSD=y
-#CFLAGS += -I/usr/local/include
-#LIBS += -L/usr/local/lib
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# Integrated EAP authenticator
-CONFIG_EAP=y
-
-# EAP-MD5 for the integrated EAP authenticator
-CONFIG_EAP_MD5=y
-
-# EAP-TLS for the integrated EAP authenticator
-CONFIG_EAP_TLS=y
-
-# EAP-MSCHAPv2 for the integrated EAP authenticator
-CONFIG_EAP_MSCHAPV2=y
-
-# EAP-PEAP for the integrated EAP authenticator
-CONFIG_EAP_PEAP=y
-
-# EAP-GTC for the integrated EAP authenticator
-CONFIG_EAP_GTC=y
-
-# EAP-TTLS for the integrated EAP authenticator
-CONFIG_EAP_TTLS=y
-
-# EAP-SIM for the integrated EAP authenticator
-#CONFIG_EAP_SIM=y
-
-# PKCS#12 (PFX) support (used to read private key and certificate file from
-# a file that usually has extension .p12 or .pfx)
-CONFIG_PKCS12=y
-
-# RADIUS authentication server. This provides access to the integrated EAP
-# authenticator from external hosts using RADIUS.
-CONFIG_RADIUS_SERVER=y
diff --git a/packages/hostap/hostap-daemon.inc b/packages/hostap/hostap-daemon.inc
new file mode 100644
index 0000000000..231978df83
--- /dev/null
+++ b/packages/hostap/hostap-daemon.inc
@@ -0,0 +1,32 @@
+DESCRIPTION = "User space daemon for extended IEEE 802.11 management"
+HOMEPAGE = "http://hostap.epitest.fi"
+SECTION = "kernel/userland"
+PRIORITY = "optional"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+LICENSE = "GPL"
+RDEPENDS = "virtual/kernel-hostap hostap-utils (${PV})"
+DEPENDS_mtx-1_append = "madwifi-modules"
+
+SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \
+ file://makefile-cross.diff;patch=1;pnum=0 \
+ file://madwifi-bsd-fix.diff;patch=1;pnum=0 \
+ file://defconfig \
+ file://init"
+
+S = "${WORKDIR}/hostapd-${PV}"
+
+do_configure() {
+ install -m 0644 ${WORKDIR}/defconfig ${S}/.config
+}
+
+do_compile() {
+ CFLAGS='${CFLAGS}' CC='${CC}' make
+}
+
+do_install() {
+ install -d ${D}${sbindir} ${D}${sysconfdir}/init.d
+ make TARGET_PREFIX=${D}${sbindir} install
+ install -m 0644 hostapd.conf ${D}${sysconfdir}
+ install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
+}
+
diff --git a/packages/hostap/hostap-daemon-0.4.4/mtx-1/.mtn2git_empty b/packages/hostap/hostap-daemon/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/hostap/hostap-daemon-0.4.4/mtx-1/.mtn2git_empty
+++ b/packages/hostap/hostap-daemon/.mtn2git_empty
diff --git a/packages/hostap/hostap-daemon-0.3.7/defconfig b/packages/hostap/hostap-daemon/defconfig
index d0e22f2586..d0e22f2586 100644
--- a/packages/hostap/hostap-daemon-0.3.7/defconfig
+++ b/packages/hostap/hostap-daemon/defconfig
diff --git a/packages/hostap/hostap-daemon-0.3.7/init b/packages/hostap/hostap-daemon/init
index b0736c0baa..b0736c0baa 100755..100644
--- a/packages/hostap/hostap-daemon-0.3.7/init
+++ b/packages/hostap/hostap-daemon/init
diff --git a/packages/hostap/hostap-daemon-0.3.7/madwifi-bsd-fix.diff b/packages/hostap/hostap-daemon/madwifi-bsd-fix.diff
index d9dab26a15..d9dab26a15 100644
--- a/packages/hostap/hostap-daemon-0.3.7/madwifi-bsd-fix.diff
+++ b/packages/hostap/hostap-daemon/madwifi-bsd-fix.diff
diff --git a/packages/hostap/hostap-daemon-0.3.7/makefile-cross.diff b/packages/hostap/hostap-daemon/makefile-cross.diff
index 25d2ca34bb..25d2ca34bb 100644
--- a/packages/hostap/hostap-daemon-0.3.7/makefile-cross.diff
+++ b/packages/hostap/hostap-daemon/makefile-cross.diff
diff --git a/packages/libetpan/libetpan-0.36/.mtn2git_empty b/packages/hostap/hostap-daemon/mtx-1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libetpan/libetpan-0.36/.mtn2git_empty
+++ b/packages/hostap/hostap-daemon/mtx-1/.mtn2git_empty
diff --git a/packages/hostap/hostap-daemon-0.3.7/mtx-1/defconfig b/packages/hostap/hostap-daemon/mtx-1/defconfig
index 8c3065c3b9..8c3065c3b9 100644
--- a/packages/hostap/hostap-daemon-0.3.7/mtx-1/defconfig
+++ b/packages/hostap/hostap-daemon/mtx-1/defconfig
diff --git a/packages/hostap/hostap-daemon_0.3.7.bb b/packages/hostap/hostap-daemon_0.3.7.bb
index 78fef559ed..7eb822c0d4 100644
--- a/packages/hostap/hostap-daemon_0.3.7.bb
+++ b/packages/hostap/hostap-daemon_0.3.7.bb
@@ -1,32 +1,3 @@
-DESCRIPTION = "User space daemon for extended IEEE 802.11 management"
-HOMEPAGE = "http://hostap.epitest.fi"
-SECTION = "kernel/userland"
-PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-LICENSE = "GPL"
-RDEPENDS = "virtual/kernel-hostap hostap-utils (${PV})"
-DEPENDS_mtx-1_append = "madwifi-modules"
-PR = "r1"
-
-SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \
- file://makefile-cross.diff;patch=1;pnum=0 \
- file://madwifi-bsd-fix.diff;patch=1;pnum=0 \
- file://defconfig \
- file://init"
-
-S = "${WORKDIR}/hostapd-${PV}"
+include hostap-daemon.inc
-do_configure() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
-}
-
-do_compile() {
- CFLAGS='${CFLAGS}' CC='${CC}' make
-}
-
-do_install() {
- install -d ${D}${sbindir} ${D}${sysconfdir}/init.d
- make TARGET_PREFIX=${D}${sbindir} install
- install -m 0644 hostapd.conf ${D}${sysconfdir}
- install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
-}
+PR = "r1"
diff --git a/packages/hostap/hostap-daemon_0.4.4.bb b/packages/hostap/hostap-daemon_0.4.4.bb
index 78fef559ed..7eb822c0d4 100644
--- a/packages/hostap/hostap-daemon_0.4.4.bb
+++ b/packages/hostap/hostap-daemon_0.4.4.bb
@@ -1,32 +1,3 @@
-DESCRIPTION = "User space daemon for extended IEEE 802.11 management"
-HOMEPAGE = "http://hostap.epitest.fi"
-SECTION = "kernel/userland"
-PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-LICENSE = "GPL"
-RDEPENDS = "virtual/kernel-hostap hostap-utils (${PV})"
-DEPENDS_mtx-1_append = "madwifi-modules"
-PR = "r1"
-
-SRC_URI = "http://hostap.epitest.fi/releases/hostapd-${PV}.tar.gz \
- file://makefile-cross.diff;patch=1;pnum=0 \
- file://madwifi-bsd-fix.diff;patch=1;pnum=0 \
- file://defconfig \
- file://init"
-
-S = "${WORKDIR}/hostapd-${PV}"
+include hostap-daemon.inc
-do_configure() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config
-}
-
-do_compile() {
- CFLAGS='${CFLAGS}' CC='${CC}' make
-}
-
-do_install() {
- install -d ${D}${sbindir} ${D}${sysconfdir}/init.d
- make TARGET_PREFIX=${D}${sbindir} install
- install -m 0644 hostapd.conf ${D}${sysconfdir}
- install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/hostapd
-}
+PR = "r1"
diff --git a/packages/hostap/hostap-daemon_0.4.8.bb b/packages/hostap/hostap-daemon_0.4.8.bb
new file mode 100644
index 0000000000..29cf1e8f21
--- /dev/null
+++ b/packages/hostap/hostap-daemon_0.4.8.bb
@@ -0,0 +1,3 @@
+include hostap-daemon.inc
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/hostap/hostap-daemon_0.5.1.bb b/packages/hostap/hostap-daemon_0.5.1.bb
new file mode 100644
index 0000000000..29cf1e8f21
--- /dev/null
+++ b/packages/hostap/hostap-daemon_0.5.1.bb
@@ -0,0 +1,3 @@
+include hostap-daemon.inc
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/hostap/hostap-modules.inc b/packages/hostap/hostap-modules.inc
index 838924a75b..72f2dc2da3 100644
--- a/packages/hostap/hostap-modules.inc
+++ b/packages/hostap/hostap-modules.inc
@@ -3,6 +3,8 @@ SECTION = "kernel/modules"
PRIORITY = "optional"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
LICENSE = "GPL"
+PROVIDES = "hostap-conf"
+RPROVIDES = "virtual/kernel-hostap"
SRC_URI = "http://hostap.epitest.fi/releases/hostap-driver-${PV}.tar.gz \
file://hostap_cs.conf"
diff --git a/packages/hostap/hostap-modules_0.3.10.bb b/packages/hostap/hostap-modules_0.3.10.bb
index 7f2cc5628a..2a09550772 100644
--- a/packages/hostap/hostap-modules_0.3.10.bb
+++ b/packages/hostap/hostap-modules_0.3.10.bb
@@ -1,6 +1,5 @@
include hostap-modules.inc
-LICENSE = "GPL"
-PR = "r6"
+PR = "r7"
SRC_URI += "file://Makefile.patch;patch=1 \
file://add_event.patch;patch=1 \
diff --git a/packages/hostap/hostap-modules_0.3.7.bb b/packages/hostap/hostap-modules_0.3.7.bb
index aead35d25b..5980783840 100644
--- a/packages/hostap/hostap-modules_0.3.7.bb
+++ b/packages/hostap/hostap-modules_0.3.7.bb
@@ -1,6 +1,5 @@
include hostap-modules.inc
-PROVIDES = "virtual/kernel-hostap hostap-conf"
-PR = "r6"
+PR = "r7"
SRC_URI += "file://Makefile.patch;patch=1 \
file://add_event.patch;patch=1 \
diff --git a/packages/hostap/hostap-modules_0.3.9.bb b/packages/hostap/hostap-modules_0.3.9.bb
index 95bcbff5a6..508c653230 100644
--- a/packages/hostap/hostap-modules_0.3.9.bb
+++ b/packages/hostap/hostap-modules_0.3.9.bb
@@ -1,6 +1,5 @@
include hostap-modules.inc
-PROVIDES = "virtual/kernel-hostap hostap-conf"
-PR = "r8"
+PR = "r9"
SRC_URI += "file://Makefile.patch;patch=1 \
file://add_event.patch;patch=1 \
diff --git a/packages/hostap/hostap-modules_0.4.4.bb b/packages/hostap/hostap-modules_0.4.4.bb
index 278b2ed0bc..b3d0a8e949 100644
--- a/packages/hostap/hostap-modules_0.4.4.bb
+++ b/packages/hostap/hostap-modules_0.4.4.bb
@@ -1,5 +1,4 @@
include hostap-modules.inc
-PROVIDES = "virtual/kernel-hostap hostap-conf"
-PR = "r4"
+PR = "r5"
SRC_URI += "file://kernel_updates.patch;patch=1"
diff --git a/packages/hostap/hostap-modules_0.4.7.bb b/packages/hostap/hostap-modules_0.4.7.bb
index 57905fffed..e9efcb5617 100644
--- a/packages/hostap/hostap-modules_0.4.7.bb
+++ b/packages/hostap/hostap-modules_0.4.7.bb
@@ -1,4 +1,4 @@
include hostap-modules.inc
-PR = "r2"
+PR = "r3"
SRC_URI += "file://kernel_updates.patch;patch=1"
diff --git a/packages/hostap/hostap-utils.inc b/packages/hostap/hostap-utils.inc
new file mode 100644
index 0000000000..c5c5d5b3f9
--- /dev/null
+++ b/packages/hostap/hostap-utils.inc
@@ -0,0 +1,24 @@
+DESCRIPTION = "User mode helpers for the hostap driver"
+HOMEPAGE = "http://hostap.epitest.fi"
+SECTION = "kernel/userland"
+PRIORITY = "optional"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+LICENSE = "GPL"
+RRECOMMENDS = "virtual/kernel-hostap"
+PR = "r3"
+
+SRC_URI = "http://hostap.epitest.fi/releases/hostap-utils-${PV}.tar.gz \
+ file://hostap-fw-load.patch;patch=1"
+S = "${WORKDIR}/hostap-utils-${PV}"
+
+BINARIES = "hostap_crypt_conf hostap_diag hostap_fw_load hostap_io_debug \
+ hostap_rid prism2_param prism2_srec split_combined_hex"
+
+do_install() {
+ install -d ${D}${sbindir}/
+ for f in ${BINARIES}
+ do
+ install -m 0755 $f ${D}${sbindir}/
+ done
+}
+
diff --git a/packages/hostap/hostap-utils_0.3.7.bb b/packages/hostap/hostap-utils_0.3.7.bb
index cdfb0c1e3e..ad06cd3d6d 100644
--- a/packages/hostap/hostap-utils_0.3.7.bb
+++ b/packages/hostap/hostap-utils_0.3.7.bb
@@ -1,24 +1,3 @@
-DESCRIPTION = "User mode helpers for the hostap driver"
-HOMEPAGE = "http://hostap.epitest.fi"
-SECTION = "kernel/userland"
-PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-LICENSE = "GPL"
-RDEPENDS = "virtual/kernel-hostap"
-PR = "r2"
-
-SRC_URI = "http://hostap.epitest.fi/releases/hostap-utils-${PV}.tar.gz \
- file://hostap-fw-load.patch;patch=1"
-S = "${WORKDIR}/hostap-utils-${PV}"
-
-BINARIES = "hostap_crypt_conf hostap_diag hostap_fw_load hostap_io_debug \
- hostap_rid prism2_param prism2_srec split_combined_hex"
-
-do_install() {
- install -d ${D}${sbindir}/
- for f in ${BINARIES}
- do
- install -m 0755 $f ${D}${sbindir}/
- done
-}
+include hostap-utils.inc
+PR = "r3"
diff --git a/packages/hostap/hostap-utils_0.4.0.bb b/packages/hostap/hostap-utils_0.4.0.bb
index 98254602aa..ad06cd3d6d 100644
--- a/packages/hostap/hostap-utils_0.4.0.bb
+++ b/packages/hostap/hostap-utils_0.4.0.bb
@@ -1,25 +1,3 @@
-DESCRIPTION = "User mode helpers for the hostap driver"
-HOMEPAGE = "http://hostap.epitest.fi"
-SECTION = "kernel/userland"
-PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-LICENSE = "GPL"
-DEPENDS = "virtual/kernel-hostap"
-RRECOMMENDS = "virtual/kernel-hostap"
-PR = "r3"
-
-SRC_URI = "http://hostap.epitest.fi/releases/hostap-utils-${PV}.tar.gz \
- file://hostap-fw-load.patch;patch=1"
-S = "${WORKDIR}/hostap-utils-${PV}"
-
-BINARIES = "hostap_crypt_conf hostap_diag hostap_fw_load hostap_io_debug \
- hostap_rid prism2_param prism2_srec split_combined_hex"
-
-do_install() {
- install -d ${D}${sbindir}/
- for f in ${BINARIES}
- do
- install -m 0755 $f ${D}${sbindir}/
- done
-}
+include hostap-utils.inc
+PR = "r3"
diff --git a/packages/hostap/hostap-utils_0.4.7.bb b/packages/hostap/hostap-utils_0.4.7.bb
new file mode 100644
index 0000000000..5b2db13498
--- /dev/null
+++ b/packages/hostap/hostap-utils_0.4.7.bb
@@ -0,0 +1,3 @@
+include hostap-utils.inc
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/initscripts/initscripts-1.0/tosa/keymap-2.4.map b/packages/initscripts/initscripts-1.0/tosa/keymap-2.4.map
index b27f21e320..31ca75b660 100644
--- a/packages/initscripts/initscripts-1.0/tosa/keymap-2.4.map
+++ b/packages/initscripts/initscripts-1.0/tosa/keymap-2.4.map
@@ -42,16 +42,16 @@ keycode 38 = Right
altgr keycode 38 = Incr_Console
keycode 39 = Return
keycode 40 = F12
-keycode 41 = one exclam
-keycode 42 = two quotedbl
-keycode 43 = three numbersign
-keycode 44 = four dollar
-keycode 45 = five percent
-keycode 46 = six ampersand
-keycode 47 = seven apostrophe
-keycode 48 = eight parenleft
-keycode 49 = nine parenright
-keycode 50 = zero asciitilde
+keycode 41 = one exclam one
+keycode 42 = two quotedbl two
+keycode 43 = three numbersign three
+keycode 44 = four dollar four
+keycode 45 = five percent five
+keycode 46 = six ampersand six
+keycode 47 = seven apostrophe seven
+keycode 48 = eight parenleft eight
+keycode 49 = nine parenright nine
+keycode 50 = zero asciitilde zero
keycode 51 = minus equal
keycode 52 = asciicircum asciitilde
keycode 53 = backslash bar
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 5ea7cfe95e..d9b93005f5 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -6,7 +6,7 @@ DEPENDS = "makedevs"
DEPENDS_openzaurus = "makedevs virtual/kernel"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r68"
+PR = "r69"
SRC_URI = "file://halt \
file://ramdisk \
diff --git a/packages/iperf/iperf_2.0.2.bb b/packages/iperf/iperf_2.0.2.bb
new file mode 100644
index 0000000000..357ac19dd0
--- /dev/null
+++ b/packages/iperf/iperf_2.0.2.bb
@@ -0,0 +1,27 @@
+SECTION = "console/network"
+DESCRIPTION = "Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics"
+HOMEPAGE = "http://dast.nlanr.net/Projects/Iperf/"
+LICENSE = "BSD"
+PR = "r0"
+
+SRC_URI = "http://dast.nlanr.net/Projects/Iperf2.0/iperf-${PV}.tar.gz"
+# file://socketaddr-h-errno.diff;patch=1"
+
+inherit autotools
+
+S="${WORKDIR}/iperf-${PV}"
+
+# --disable-threads is needed on epia/x86 with uclibc
+do_configure() {
+ oe_runconf --exec-prefix=${STAGING_DIR} --disable-threads
+}
+
+do_compile() {
+ cd ${WORKDIR}/iperf-${PV}
+ oe_runmake
+}
+
+do_install() {
+ cd ${WORKDIR}/iperf-${PV}/src
+ oe_runmake DESTDIR=${D} install
+}
diff --git a/packages/libetpan/libetpan-0.38/.mtn2git_empty b/packages/ipkg-utils/ipkg-link/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libetpan/libetpan-0.38/.mtn2git_empty
+++ b/packages/ipkg-utils/ipkg-link/.mtn2git_empty
diff --git a/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch b/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch
new file mode 100644
index 0000000000..7f495f9f4c
--- /dev/null
+++ b/packages/ipkg-utils/ipkg-link/link-vfat-libs.patch
@@ -0,0 +1,34 @@
+--- ipkg-utils/ipkg-link.orig 2006-04-05 00:08:28.518992136 +0200
++++ ipkg-utils/ipkg-link 2006-04-05 00:08:40.399186072 +0200
+@@ -58,6 +58,31 @@
+ `ln -s "$PREFIX$line" "$line"`
+ fi
+ fi
++
++ # The next function checks whether the _source_ file (ie: /media/card/something)
++ # does actually exist. If it doesn't, it could by a library symlink (ie: libsomething.0.1 -> libsomething.0)
++ # Since VFAT & friends do not support symlinks, these library links would not exist after installation
++ # and trying to symlink them into the rootfs with ipkg-link results in unconnected symlinks in the rootfs.
++ # So we use the real lib file in /media/card/whatever and create all needed symlinks in the rootfs
++ # using the real file as source.
++
++ if [ ! -e "$PREFIX$line" ]; then
++ if ( echo "$line" | grep -q "lib" ) ; then
++ libsearchfile=$(echo $line | sed -e "s#[a-z0-9/.]*/##g")
++ libfoundfiles=$(find $PREFIX -name "$libsearchfile*")
++
++ for liblinkfile in $libfoundfiles; do
++ echo "Linking $line to $liblinkfile"
++ # link will be pointing to nowhere
++ if test -L $line; then
++ rm -f $line
++ fi
++ ln -s $liblinkfile $line
++ done
++ else
++ echo "WARNING: Source file [$PREFIX$line] is missing!"
++ fi
++ fi
+ done
+ }
+
diff --git a/packages/ipkg-utils/ipkg-link_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-link_1.6+cvs20050404.bb
index 826a9fbdb6..35e5ba1086 100644
--- a/packages/ipkg-utils/ipkg-link_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-link_1.6+cvs20050404.bb
@@ -3,9 +3,10 @@ DESCRIPTION = "Itsy Package Manager utilities link script"
LICENSE = "GPL"
CONFLICTS = "ipkg-utils"
SRCDATE = "20050404"
-PR = "r3"
+PR = "r4"
-SRC_URI = "${HANDHELDS_CVS};module=ipkg-utils"
+SRC_URI = "${HANDHELDS_CVS};module=ipkg-utils \
+ file://link-vfat-libs.patch;patch=1"
S = "${WORKDIR}/ipkg-utils"
diff --git a/packages/ipkg/ipkg-native_0.99.159.bb b/packages/ipkg/ipkg-native_0.99.159.bb
new file mode 100644
index 0000000000..d59eab3a61
--- /dev/null
+++ b/packages/ipkg/ipkg-native_0.99.159.bb
@@ -0,0 +1,2 @@
+include ipkg_${PV}.bb
+include ipkg-native.inc
diff --git a/packages/iqnotes/iqnotes.inc b/packages/iqnotes/iqnotes.inc
new file mode 100644
index 0000000000..ec49ee2d54
--- /dev/null
+++ b/packages/iqnotes/iqnotes.inc
@@ -0,0 +1,31 @@
+DESCRIPTION = "IQNotes is notes kept in a hierarchical(tree like) manner. \
+It handles todo, events, sketching. It can acts as a contact, password, \
+credit card manager and even more, because is highly configurable. \
+Data can be crypted by strong AES algorithm."
+SECTION = "opie/applications"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "virtual/libqpe"
+MAINTAINER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
+HOMEPAGE = "http://iqnotes.berlios.de"
+AUTHOR = "Peter Vrabel <kybu@kybu.org>"
+
+S = "${WORKDIR}/iqnotes/iqnotes"
+
+inherit palmtop
+
+QMAKE_PROFILES = "iqnotes.pro"
+export OE_QMAKE_LINK="${CXX}"
+
+do_install() {
+ install -d ${D}${palmtopdir}/help/html \
+ ${D}${palmtopdir}/bin \
+ ${D}${palmtopdir}/apps/Applications \
+ ${D}${palmtopdir}/pics/iqnotes/items \
+ ${D}${palmtopdir}/iqnotes/icons
+ install -m 0755 ${S}/../bin/iqnotes ${D}${palmtopdir}/bin/
+ install -m 0644 ${S}/../apps/Applications/*.desktop ${D}${palmtopdir}/apps/Applications/
+ install -m 0644 ${S}/../pics/iqnotes/*.png ${D}${palmtopdir}/pics/iqnotes/
+ install -m 0644 ${S}/../help/html/iqnotes.html ${D}${palmtopdir}/help/html/
+ install -m 0644 ${S}/../pics/*.xpm ${D}${palmtopdir}/pics/
+}
diff --git a/packages/iqnotes/iqnotes_2.0.2.bb b/packages/iqnotes/iqnotes_2.0.2.bb
index a1c77896c4..fd42188079 100644
--- a/packages/iqnotes/iqnotes_2.0.2.bb
+++ b/packages/iqnotes/iqnotes_2.0.2.bb
@@ -1,36 +1,7 @@
-DESCRIPTION = "IQNotes is notes kept in a hierarchical(tree like) manner. \
-It handles todo, events, sketching. It can acts as a contact, password, \
-credit card manager and even more, because is highly configurable. \
-Data can be crypted by strong AES algorithm."
-SECTION = "opie/applications"
-PRIORITY = "optional"
-LICENSE = "GPL"
-DEPENDS = "virtual/libqpe"
-HOMEPAGE = "http://iqnotes.kybu.org"
-AUTHOR = "Peter Vrabel <kybu@kybu.org>"
-PR = "r3"
+include iqnotes.inc
+
+PR = "r4"
SRC_URI = "http://www.vanille.de/mirror/iqnotes-2.0.2-src.tar.bz2 \
file://md5.diff;patch=1 \
file://qt2310-fontbug.patch;patch=1"
-
-S = "${WORKDIR}/iqnotes/iqnotes"
-
-inherit palmtop
-
-QMAKE_PROFILES = "iqnotes.pro"
-export OE_QMAKE_LINK="${CXX}"
-
-
-do_install() {
- install -d ${D}${palmtopdir}/help/html \
- ${D}${palmtopdir}/bin \
- ${D}${palmtopdir}/apps/Applications \
- ${D}${palmtopdir}/pics/iqnotes/items \
- ${D}${palmtopdir}/iqnotes/icons
- install -m 0755 ${S}/../bin/iqnotes ${D}${palmtopdir}/bin/
- install -m 0644 ${S}/../apps/Applications/*.desktop ${D}${palmtopdir}/apps/Applications/
- install -m 0644 ${S}/../pics/iqnotes/*.png ${D}${palmtopdir}/pics/iqnotes/
- install -m 0644 ${S}/../help/html/iqnotes.html ${D}${palmtopdir}/help/html/
- install -m 0644 ${S}/../pics/*.xpm ${D}${palmtopdir}/pics/
-}
diff --git a/packages/iqnotes/iqnotes_2.0.99-2.1.0rc1.bb b/packages/iqnotes/iqnotes_2.0.99-2.1.0rc1.bb
index b205c33ceb..6309d8ba1a 100644
--- a/packages/iqnotes/iqnotes_2.0.99-2.1.0rc1.bb
+++ b/packages/iqnotes/iqnotes_2.0.99-2.1.0rc1.bb
@@ -1,16 +1,8 @@
-DESCRIPTION = "IQNotes is notes kept in a hierarchical(tree like) manner. \
-It handles todo, events, sketching. It can acts as a contact, password, \
-credit card manager and even more, because is highly configurable. \
-Data can be crypted by strong AES algorithm."
-SECTION = "opie/applications"
-PRIORITY = "optional"
-LICENSE = "GPL"
-DEPENDS = "virtual/libqpe"
-HOMEPAGE = "http://iqnotes.berlios.de"
-AUTHOR = "Peter Vrabel <kybu@users.berlios.de>"
+include iqnotes.inc
#upstream version
UPV = "2.1.0rc1"
+PR = "r1"
SRC_URI = "http://download.berlios.de/iqnotes/iqnotes-${UPV}.tar.bz2 \
file://pro.patch;patch=1"
@@ -18,19 +10,3 @@ SRC_URI = "http://download.berlios.de/iqnotes/iqnotes-${UPV}.tar.bz2 \
S = "${WORKDIR}/iqnotes-${UPV}/iqnotes/"
EXTRA_QMAKEVARS_POST += "CONFIG-=desktop CONFIG-=debug CONFIG+=pda LIBS-=-lqtopia"
-inherit palmtop
-
-export OE_QMAKE_LINK="${CXX}"
-
-do_install() {
- install -d ${D}${palmtopdir}/help/html \
- ${D}${palmtopdir}/bin \
- ${D}${palmtopdir}/apps/Applications \
- ${D}${palmtopdir}/pics/iqnotes/items \
- ${D}${palmtopdir}/iqnotes/icons
- install -m 0755 ${S}/../bin/iqnotes ${D}${palmtopdir}/bin/
- install -m 0644 ${S}/../apps/Applications/*.desktop ${D}${palmtopdir}/apps/Applications/
- install -m 0644 ${S}/../pics/iqnotes/*.png ${D}${palmtopdir}/pics/iqnotes/
- install -m 0644 ${S}/../help/html/iqnotes.html ${D}${palmtopdir}/help/html/
- install -m 0644 ${S}/../pics/*.xpm ${D}${palmtopdir}/pics/
-}
diff --git a/packages/mozilla/firefox-1.0.6/.mtn2git_empty b/packages/js/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/firefox-1.0.6/.mtn2git_empty
+++ b/packages/js/.mtn2git_empty
diff --git a/packages/mozilla/firefox-1.5/.mtn2git_empty b/packages/js/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/firefox-1.5/.mtn2git_empty
+++ b/packages/js/files/.mtn2git_empty
diff --git a/packages/js/files/host-cc.patch b/packages/js/files/host-cc.patch
new file mode 100644
index 0000000000..78a1e1b5a0
--- /dev/null
+++ b/packages/js/files/host-cc.patch
@@ -0,0 +1,16 @@
+diff -urNd smjs-1.5-r0/js/src/Makefile.ref smjs-1.5-r0.new/js/src/Makefile.ref
+--- smjs-1.5-r0/js/src/Makefile.ref 2003-11-15 00:10:55.000000000 +0000
++++ smjs-1.5-r0.new/js/src/Makefile.ref 2006-01-31 23:43:16.000000000 +0000
+@@ -317,8 +317,11 @@
+ rm -f $@
+ $(OBJDIR)/jscpucfg > $@
+
++$(OBJDIR)/jscpucfg.o: jscpucfg.c jscpucfg.h
++ $(HOST_CC) -o $@ $(CFLAGS) $(LDFLAGS) jscpucfg.c
++
+ $(OBJDIR)/jscpucfg: $(OBJDIR)/jscpucfg.o
+- $(CC) -o $@ $(OBJDIR)/jscpucfg.o
++ $(HOST_CC) -o $@ $(OBJDIR)/jscpucfg.o
+
+ # Look in OBJDIR to find jsautocfg.h
+ INCLUDES += -I$(OBJDIR)
diff --git a/packages/mozilla/firefox-1.5/jsautocfg.h b/packages/js/files/jsautocfg.h
index 05f3dad50a..ac786dcdad 100644
--- a/packages/mozilla/firefox-1.5/jsautocfg.h
+++ b/packages/js/files/jsautocfg.h
@@ -1,7 +1,7 @@
#ifndef js_cpucfg___
#define js_cpucfg___
-/* Lovingly crafted by hand avoiding Mozilla stupidity */
+/* AUTOMATICALLY GENERATED - DO NOT EDIT */
#define IS_LITTLE_ENDIAN 1
#undef IS_BIG_ENDIAN
@@ -10,7 +10,7 @@
#define JS_BYTES_PER_SHORT 2L
#define JS_BYTES_PER_INT 4L
#define JS_BYTES_PER_INT64 8L
-#define JS_BYTES_PER_LONG 4L
+#define JS_BYTES_PER_LONG 8L
#define JS_BYTES_PER_FLOAT 4L
#define JS_BYTES_PER_DOUBLE 8L
#define JS_BYTES_PER_WORD 4L
@@ -20,7 +20,7 @@
#define JS_BITS_PER_SHORT 16L
#define JS_BITS_PER_INT 32L
#define JS_BITS_PER_INT64 64L
-#define JS_BITS_PER_LONG 32L
+#define JS_BITS_PER_LONG 64L
#define JS_BITS_PER_FLOAT 32L
#define JS_BITS_PER_DOUBLE 64L
#define JS_BITS_PER_WORD 32L
@@ -29,23 +29,23 @@
#define JS_BITS_PER_SHORT_LOG2 4L
#define JS_BITS_PER_INT_LOG2 5L
#define JS_BITS_PER_INT64_LOG2 6L
-#define JS_BITS_PER_LONG_LOG2 5L
+#define JS_BITS_PER_LONG_LOG2 6L
#define JS_BITS_PER_FLOAT_LOG2 5L
#define JS_BITS_PER_DOUBLE_LOG2 6L
-#define JS_BITS_PER_WORD_LOG2 5L
+#define JS_BITS_PER_WORD_LOG2 3L
#define JS_ALIGN_OF_SHORT 2L
#define JS_ALIGN_OF_INT 4L
-#define JS_ALIGN_OF_LONG 4L
-#define JS_ALIGN_OF_INT64 4L
+#define JS_ALIGN_OF_LONG 8L
+#define JS_ALIGN_OF_INT64 8L
#define JS_ALIGN_OF_FLOAT 4L
-#define JS_ALIGN_OF_DOUBLE 4L
-#define JS_ALIGN_OF_POINTER 4L
+#define JS_ALIGN_OF_DOUBLE 8L
+#define JS_ALIGN_OF_POINTER 8L
#define JS_ALIGN_OF_WORD 4L
#define JS_BYTES_PER_WORD_LOG2 2L
#define JS_BYTES_PER_DWORD_LOG2 3L
-#define JS_WORDS_PER_DWORD_LOG2 2L
+#define JS_WORDS_PER_DWORD_LOG2 0L
#define JS_STACK_GROWTH_DIRECTION (-1)
diff --git a/packages/js/js_1.5.bb b/packages/js/js_1.5.bb
new file mode 100644
index 0000000000..5af1441e36
--- /dev/null
+++ b/packages/js/js_1.5.bb
@@ -0,0 +1,37 @@
+LICENSE = "GPL"
+DESCRIPTION = "A JavaScript engine"
+SECTION = "libs"
+DEPENDS = "readline"
+SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/js/js-1.5.tar.gz \
+ file://jsautocfg.h"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
+
+S = "${WORKDIR}/js/src"
+
+FILES_${PN} = "${libdir}/lib*.so"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*.a"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'LD=${LD}' 'XCFLAGS=${CFLAGS}' 'XLDFLAGS=-L${STAGING_LIBDIR}'"
+
+do_compile_prepend() {
+ cp ${WORKDIR}/jsautocfg.h ${S}/
+}
+
+do_compile() {
+ oe_runmake -f Makefile.ref JS_READLINE=1 JS_EDITLINE=1 PREBUILT_CPUCFG=1
+}
+
+do_install() {
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ install -d ${D}${includedir}/js
+ install -m 0644 ${S}/Linux_All_DBG.OBJ/lib*.so ${D}${libdir}
+ install -m 0644 ${S}/Linux_All_DBG.OBJ/lib*.a ${D}${libdir}
+ install -m 0644 ${S}/*.h ${D}${includedir}/js
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/js
+ install -m 0644 ${S}/*.h ${STAGING_INCDIR}/js/
+ oe_libinstall -so -C Linux_All_DBG.OBJ libjs ${STAGING_LIBDIR}
+}
diff --git a/packages/keylaunch/files/akita/keylaunchrc b/packages/keylaunch/files/akita/keylaunchrc
index e0b729a508..a0ffca6320 100644
--- a/packages/keylaunch/files/akita/keylaunchrc
+++ b/packages/keylaunch/files/akita/keylaunchrc
@@ -1,6 +1,10 @@
-key=....F9:-:gpe-calendar
-key=....F10:-:gpe-contacts
+key=....F9:-:gpe-contacts
+key=....F10:-:gpe-calendar
key=....F13:-:sylpheed
-key=....F12:-:gpe-mini-browser
-key=...*F18:-:display-brightness.sh down
-key=...*F19:-:display-brightness.sh up
+key=....F12:-:~matchbox-remote -next
+key=...*F12:-:~matchbox-remote -desktop
+key=....F11:-:~matchbox-remote -menu
+#key=...*1:-:~zoom out
+#key=...*2:-:~zoom in
+key=...*3:-:~display-brightness.sh down
+key=...*4:-:~display-brightness.sh up
diff --git a/packages/keylaunch/files/borzoi/keylaunchrc b/packages/keylaunch/files/borzoi/keylaunchrc
index e0b729a508..a0ffca6320 100644
--- a/packages/keylaunch/files/borzoi/keylaunchrc
+++ b/packages/keylaunch/files/borzoi/keylaunchrc
@@ -1,6 +1,10 @@
-key=....F9:-:gpe-calendar
-key=....F10:-:gpe-contacts
+key=....F9:-:gpe-contacts
+key=....F10:-:gpe-calendar
key=....F13:-:sylpheed
-key=....F12:-:gpe-mini-browser
-key=...*F18:-:display-brightness.sh down
-key=...*F19:-:display-brightness.sh up
+key=....F12:-:~matchbox-remote -next
+key=...*F12:-:~matchbox-remote -desktop
+key=....F11:-:~matchbox-remote -menu
+#key=...*1:-:~zoom out
+#key=...*2:-:~zoom in
+key=...*3:-:~display-brightness.sh down
+key=...*4:-:~display-brightness.sh up
diff --git a/packages/keylaunch/files/spitz/keylaunchrc b/packages/keylaunch/files/spitz/keylaunchrc
index e0b729a508..a0ffca6320 100644
--- a/packages/keylaunch/files/spitz/keylaunchrc
+++ b/packages/keylaunch/files/spitz/keylaunchrc
@@ -1,6 +1,10 @@
-key=....F9:-:gpe-calendar
-key=....F10:-:gpe-contacts
+key=....F9:-:gpe-contacts
+key=....F10:-:gpe-calendar
key=....F13:-:sylpheed
-key=....F12:-:gpe-mini-browser
-key=...*F18:-:display-brightness.sh down
-key=...*F19:-:display-brightness.sh up
+key=....F12:-:~matchbox-remote -next
+key=...*F12:-:~matchbox-remote -desktop
+key=....F11:-:~matchbox-remote -menu
+#key=...*1:-:~zoom out
+#key=...*2:-:~zoom in
+key=...*3:-:~display-brightness.sh down
+key=...*4:-:~display-brightness.sh up
diff --git a/packages/keylaunch/keylaunch_2.0.10.bb b/packages/keylaunch/keylaunch_2.0.10.bb
index f84cd35b33..a1c13188ca 100644
--- a/packages/keylaunch/keylaunch_2.0.10.bb
+++ b/packages/keylaunch/keylaunch_2.0.10.bb
@@ -1,6 +1,9 @@
inherit gpe
DEPENDS = "virtual/xserver libxtst libxau libxpm libgpelaunch"
+DEPENDS_append_openzaurus = " display-brightness"
+RDEPENDS_append_openzaurus = " display-brightness"
+
SECTION = "gpe"
LICENSE = "GPL"
DESCRIPTION = "A small utility for binding commands to a hot key.\
@@ -10,7 +13,7 @@ DESCRIPTION = "A small utility for binding commands to a hot key.\
program is already running, keylaunch can bring its window to the front\
rather than just running another copy."
PACKAGE_ARCH = "${MACHINE_ARCH}"
-PR = "r0"
+PR = "r2"
SRC_URI += " file://keylaunchrc"
diff --git a/packages/keymap-locales/files/akita/keymap-extension-2.6-fi.map b/packages/keymap-locales/files/akita/keymap-extension-2.6-fi.map
new file mode 100644
index 0000000000..4640bd56d4
--- /dev/null
+++ b/packages/keymap-locales/files/akita/keymap-extension-2.6-fi.map
@@ -0,0 +1,7 @@
+# Finnish keymapping
+charset "iso-8859-1"
+altgr keycode 24 = +odiaeresis
+altgr keycode 30 = +adiaeresis
+shift altgr keycode 24 = +Odiaeresis
+shift altgr keycode 30 = +Adiaeresis
+
diff --git a/packages/keymap-locales/files/borzoi/keymap-extension-2.6-fi.map b/packages/keymap-locales/files/borzoi/keymap-extension-2.6-fi.map
new file mode 100644
index 0000000000..4640bd56d4
--- /dev/null
+++ b/packages/keymap-locales/files/borzoi/keymap-extension-2.6-fi.map
@@ -0,0 +1,7 @@
+# Finnish keymapping
+charset "iso-8859-1"
+altgr keycode 24 = +odiaeresis
+altgr keycode 30 = +adiaeresis
+shift altgr keycode 24 = +Odiaeresis
+shift altgr keycode 30 = +Adiaeresis
+
diff --git a/packages/keymap-locales/files/c7x0/keymap-extension-2.6-fi.map b/packages/keymap-locales/files/c7x0/keymap-extension-2.6-fi.map
new file mode 100644
index 0000000000..4640bd56d4
--- /dev/null
+++ b/packages/keymap-locales/files/c7x0/keymap-extension-2.6-fi.map
@@ -0,0 +1,7 @@
+# Finnish keymapping
+charset "iso-8859-1"
+altgr keycode 24 = +odiaeresis
+altgr keycode 30 = +adiaeresis
+shift altgr keycode 24 = +Odiaeresis
+shift altgr keycode 30 = +Adiaeresis
+
diff --git a/packages/keymap-locales/files/collie/keymap-extension-2.4-fi.map b/packages/keymap-locales/files/collie/keymap-extension-2.4-fi.map
new file mode 100644
index 0000000000..314db5843a
--- /dev/null
+++ b/packages/keymap-locales/files/collie/keymap-extension-2.4-fi.map
@@ -0,0 +1,7 @@
+# Finnish keymappings
+shift altgr keycode 63 = +Adiaeresis
+shift altgr keycode 13 = +Odiaeresis
+altgr keycode 63 = +adiaeresis
+altgr keycode 13 = +odiaeresis
+
+keycode 103 = AltGr \ No newline at end of file
diff --git a/packages/keymap-locales/files/spitz/keymap-extension-2.6-fi.map b/packages/keymap-locales/files/spitz/keymap-extension-2.6-fi.map
new file mode 100644
index 0000000000..4640bd56d4
--- /dev/null
+++ b/packages/keymap-locales/files/spitz/keymap-extension-2.6-fi.map
@@ -0,0 +1,7 @@
+# Finnish keymapping
+charset "iso-8859-1"
+altgr keycode 24 = +odiaeresis
+altgr keycode 30 = +adiaeresis
+shift altgr keycode 24 = +Odiaeresis
+shift altgr keycode 30 = +Adiaeresis
+
diff --git a/packages/keymap-locales/keymap-locales.bb b/packages/keymap-locales/keymap-locales.bb
index 5ba84e69ca..e54fea1d2d 100644
--- a/packages/keymap-locales/keymap-locales.bb
+++ b/packages/keymap-locales/keymap-locales.bb
@@ -4,16 +4,21 @@ PRIORITY = "optional"
MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
LICENSE = "GPL"
-PR = "r4"
+PR = "r6"
SRC_URI = "file://*.map"
# If any python guru wants to setup PACKAGES_$machine with some code instead,
-# be my guet =)
-PACKAGES_akita = "keymap-extension-de"
+# be my guest =)
+PACKAGES_akita = "keymap-extension-de keymap-extension-fi"
+PACKAGES_spitz = "keymap-extension-de keymap-extension-fi"
+PACKAGES_borzoi = "keymap-extension-de keymap-extension-fi"
+PACKAGES_c7x0 = "keymap-extension-de keymap-extension-fi"
+PACKAGES_collie = "keymap-extension-de keymap-extension-fi"
FILES_keymap-extension-de = "/etc/*-de.map"
FILES_keymap-extension-fr = "/etc/*-fr.map"
+FILES_keymap-extension-fi = "/etc/*-fi.map"
do_install() {
install -d ${D}/${sysconfdir}
diff --git a/packages/mozilla/thunderbird-0.7.3/.mtn2git_empty b/packages/kf/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/thunderbird-0.7.3/.mtn2git_empty
+++ b/packages/kf/.mtn2git_empty
diff --git a/packages/mozilla/thunderbird-1.0.6/.mtn2git_empty b/packages/kf/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/mozilla/thunderbird-1.0.6/.mtn2git_empty
+++ b/packages/kf/files/.mtn2git_empty
diff --git a/packages/kf/files/fix-configure.patch b/packages/kf/files/fix-configure.patch
new file mode 100644
index 0000000000..fc1ad9a418
--- /dev/null
+++ b/packages/kf/files/fix-configure.patch
@@ -0,0 +1,25 @@
+diff -urNd ../kf-0.5.4.1-r0/kf-0.5.4.1/configure.in kf-0.5.4.1/configure.in
+--- ../kf-0.5.4.1-r0/kf-0.5.4.1/configure.in 2005-04-27 19:42:49.000000000 +0100
++++ kf-0.5.4.1/configure.in 2005-09-29 14:12:32.000000000 +0100
+@@ -27,7 +27,7 @@
+ dnl AC_ARG_ENABLE(debug,)
+
+ dnl modules needed for package
+-MODULES="gtk+-2.0 >= 2.0.0 libglade-2.0 >= 1.110.0 loudmouth-1.0 >= 0.16"
++MODULES="gtk+-2.0 >= 2.0.0 libglade-2.0 >= 1.110.0 loudmouth-1.0 >= 0.16 libxml-2.0"
+ dnl MODULES="gtk+-2.0 >= 2.0.0 libglade-2.0 >= 1.110.0 loudmouth-1.0 >= 0.15.1"
+
+ dnl GtkSpell
+@@ -60,9 +60,9 @@
+ AC_DEFINE([HAVE_LM_CONNECTION_SET_JID],1,[We have lm_connection_set_jid])
+ fi
+
+-dnl XScreenSaver stuff...
+-AC_DEFINE([HAVE_XSCREENSAVER], [1], [Whether to support XScreenSaver extension])
+-PACKAGE_LIBS="$PACKAGE_LIBS -lXss -L/usr/X11R6/lib"
++#dnl XScreenSaver stuff...
++#AC_DEFINE([HAVE_XSCREENSAVER], [1], [Whether to support XScreenSaver extension])
++#PACKAGE_LIBS="$PACKAGE_LIBS -lXss -L/usr/X11R6/lib"
+
+ AC_SUBST(PACKAGE_CFLAGS)
+ AC_SUBST(PACKAGE_LIBS)
diff --git a/packages/kf/files/fix-desktop-file.patch b/packages/kf/files/fix-desktop-file.patch
new file mode 100644
index 0000000000..f22cfe8294
--- /dev/null
+++ b/packages/kf/files/fix-desktop-file.patch
@@ -0,0 +1,22 @@
+Common subdirectories: kf-0.5.4.1.orig/data and kf-0.5.4.1/data
+diff -u kf-0.5.4.1.orig/kf.desktop kf-0.5.4.1/kf.desktop
+--- kf-0.5.4.1.orig/kf.desktop 2005-04-19 22:08:44.000000000 +0100
++++ kf-0.5.4.1/kf.desktop 2005-10-03 14:36:47.000000000 +0100
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-Name=kf jabber client
++Name=Instant Messenger
+ Name[pl]=kf klient sieci jabber
+ Name[lt]=Pokalbių programa kf
+ GenericName=Instant Messenger
+@@ -11,5 +11,6 @@
+ Icon=kf.png
+ Terminal=false
+ Type=Application
+-Categories=GTK;Application;Network;
++Categories=GTK;PIM;Application;Network;
+ StartupNotify=true
++SingleInstance=true
+Common subdirectories: kf-0.5.4.1.orig/po and kf-0.5.4.1/po
+Common subdirectories: kf-0.5.4.1.orig/src and kf-0.5.4.1/src
diff --git a/packages/kf/kf_0.5.4.1.bb b/packages/kf/kf_0.5.4.1.bb
new file mode 100755
index 0000000000..9fe0bcb29d
--- /dev/null
+++ b/packages/kf/kf_0.5.4.1.bb
@@ -0,0 +1,14 @@
+LICENSE = "GPL"
+DEPENDS = "libxml2 glib-2.0 gtk+ loudmouth"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
+DESCRIPTION = "Kf is a GTK+ instant messaging client."
+PR = "r2"
+
+SRC_URI = "http://jabberstudio.2nw.net/${PN}/${PN}-${PV}.tar.gz \
+ file://fix-configure.patch;patch=1 \
+ file://fix-desktop-file.patch;patch=0"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-binreloc"
+
diff --git a/packages/obexftp/obexftp-0.10.3/.mtn2git_empty b/packages/konqueror/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/obexftp/obexftp-0.10.3/.mtn2git_empty
+++ b/packages/konqueror/files/.mtn2git_empty
diff --git a/packages/konqueror/files/inject-extraflags.patch b/packages/konqueror/files/inject-extraflags.patch
new file mode 100644
index 0000000000..1b8b02d175
--- /dev/null
+++ b/packages/konqueror/files/inject-extraflags.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- kdenox/konq-embed/src/Makefile.am~fixit
++++ kdenox/konq-embed/src/Makefile.am
+@@ -49,7 +49,7 @@
+ $(top_builddir)/konq-embed/kdesrc/kssl/libkssl.la
+
+
+-konqueror_LDFLAGS = $(KONQ_SSL_LDFLAGS) $(all_libraries) -export-dynamic
++konqueror_LDFLAGS = $(KONQ_SSL_LDFLAGS) $(all_libraries) -export-dynamic $(EXTRA_LDFLAGS)
+ konqueror_METASOURCES = AUTO
+ konqueror_DEPENDENCIES = $(LIB_KJSHTML) $(LIB_KHTML) $(LIB_ADDONS)
+ BUILT_SOURCES = init.inc
diff --git a/packages/konqueror/konqueror-embedded-20030705/gcc4.patch b/packages/konqueror/konqueror-embedded-20030705/gcc4.patch
new file mode 100644
index 0000000000..54e3fe6cc3
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded-20030705/gcc4.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- konqueror-embedded-snapshot-20030705/konq-embed/src/bookmarks.h~gcc4 2002-12-05 16:39:43.000000000 +0100
++++ konqueror-embedded-snapshot-20030705/konq-embed/src/bookmarks.h 2006-03-20 18:58:49.000000000 +0100
+@@ -16,6 +16,7 @@
+ class XMLElement;
+ class ActionMenu;
+ class KAction;
++class BookmarkFolder;
+
+ class BookmarkAction: public QAction
+ {
diff --git a/packages/konqueror/konqueror-embedded-20030705/packing.patch b/packages/konqueror/konqueror-embedded-20030705/packing.patch
index 37a3754854..be3f362c03 100644
--- a/packages/konqueror/konqueror-embedded-20030705/packing.patch
+++ b/packages/konqueror/konqueror-embedded-20030705/packing.patch
@@ -1,17 +1,21 @@
-diff -ur konqe.old/konq-embed/kdesrc/kjs/ustring.h konqueror-embedded-snapshot-20030705/konq-embed/kdesrc/kjs/ustring.h
---- konqe.old/konq-embed/kdesrc/kjs/ustring.h 2001-07-28 17:32:15.000000000 +0200
-+++ konqueror-embedded-snapshot-20030705/konq-embed/kdesrc/kjs/ustring.h 2004-08-22 21:30:04.000000000 +0200
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- konqueror-embedded-snapshot-20030705/konq-embed/kdesrc/kjs/ustring.h~packing.patch
++++ konqueror-embedded-snapshot-20030705/konq-embed/kdesrc/kjs/ustring.h
@@ -154,11 +154,11 @@
/**
* @return Lower byte.
*/
- unsigned char& low() const { return ref().lo; }
-+ unsigned char& low() const { return *(&ref().lo); }
++ unsigned char& low() const { return *((unsigned char*)&ref().lo); }
/**
* @return Higher byte.
*/
- unsigned char& high() const { return ref().hi; }
-+ unsigned char& high() const { return *(&ref().hi); }
++ unsigned char& high() const { return *((unsigned char*)&ref().hi); }
/**
* @return Character converted to lower case.
*/
diff --git a/packages/konqueror/konqueror-embedded_20030705.bb b/packages/konqueror/konqueror-embedded_20030705.bb
index e3fc55a88f..5bdc4ed765 100644
--- a/packages/konqueror/konqueror-embedded_20030705.bb
+++ b/packages/konqueror/konqueror-embedded_20030705.bb
@@ -1,20 +1,27 @@
DESCRIPTION = "KDE Web Browser Konqueror, QtE based Palmtop Environments Edition"
+HOMEPAGE = "http://www.konqueror.org/embedded"
SECTION = "opie/applications"
PRIORITY = "optional"
DEPENDS = "libqpe-opie openssl pcre"
LICENSE = "LGPL/GPL"
-PR = "r3"
+PR = "r5"
+
+# Note if this .bb files fails with the error:
+# "No rule to make target `-lpcre', needed by `konqueror'. Stop."
+# a workaround is to install the libpcre3-dev package onto your build
+# machine (Ubuntu/Debain) or your distro's equivalent (FC = pcre-devel).
SRC_URI = "http://devel-home.kde.org/~hausmann/snapshots/Attic/konqueror-embedded-snapshot-${PV}.tar.gz \
file://opie1.patch;patch=1 \
file://packing.patch;patch=1 \
- file://include_qconfig.patch;patch=1 \
- file://useragent.patch;patch=1 \
- file://kcookiejar-merge.patch;patch=1 \
- file://malformed.patch;patch=1 \
- file://cachepath.patch;patch=1 \
- file://konq-embedrc \
- file://vit.patch;patch=1"
+ file://include_qconfig.patch;patch=1 \
+ file://useragent.patch;patch=1 \
+ file://kcookiejar-merge.patch;patch=1 \
+ file://malformed.patch;patch=1 \
+ file://cachepath.patch;patch=1 \
+ file://vit.patch;patch=1 \
+ file://gcc4.patch;patch=1 \
+ file://konq-embedrc"
S = "${WORKDIR}/konqueror-embedded-snapshot-${PV}"
inherit autotools
diff --git a/packages/konqueror/konqueror-embedded_20050322.bb b/packages/konqueror/konqueror-embedded_20050322.bb
index 36a59b0834..1fec1375c5 100644
--- a/packages/konqueror/konqueror-embedded_20050322.bb
+++ b/packages/konqueror/konqueror-embedded_20050322.bb
@@ -7,6 +7,11 @@ DEPENDS = "openssl pcre"
LICENSE = "LGPL/GPL"
PR = "r3"
+# Note if this .bb files fails with the error:
+# "No rule to make target `-lpcre', needed by `konqueror'. Stop."
+# a workaround is to install the libpcre3-dev package onto your build
+# machine (Ubuntu/Debain) or your distro's equivalent (FC = pcre-devel).
+
SRC_URI = "http://www.cirulla.net/kdenox-snapshots/snapshots/konqueror3-embedded-0.2-${PV}.tar.bz2 \
file://qt-embedded.patch;patch=1"
S = "${WORKDIR}/konqueror3-embedded-0.2-${PV}"
diff --git a/packages/konqueror/konqueror-embedded_svn.bb b/packages/konqueror/konqueror-embedded_svn.bb
new file mode 100644
index 0000000000..f032b9b587
--- /dev/null
+++ b/packages/konqueror/konqueror-embedded_svn.bb
@@ -0,0 +1,79 @@
+DESCRIPTION = "KDE Web Browser Konqueror, QtE based Palmtop Environments Edition"
+SECTION = "opie/applications"
+PRIORITY = "optional"
+HOMEPAGE = "http://www.konqueror.org/"
+DEPENDS = "openssl pcre libqte-mt-static dcopidl-native"
+LICENSE = "LGPL/GPL"
+DEFAULT_PREFERENCE = "-1"
+FILES_${PN} = "${palmtopdir} /usr/share"
+PR = "r1"
+PV = "3.5.1+svn${SRCDATE}"
+
+# this Konqueror needs the KDEDIR set and the font helvetica installed on the target
+
+inherit autotools
+
+SRC_URI = "svn://anonsvn.kde.org/home/kde/tags/KDE/3.5.1;module=kdelibs \
+ svn://anonsvn.kde.org/home/kde/trunk;module=kdenox \
+ file://inject-extraflags.patch;patch=1"
+
+S = "${WORKDIR}/kdenox"
+
+export QMAKE = "${STAGING_BINDIR}/qmake"
+export MOC = "${STAGING_BINDIR}/moc"
+export UIC = "${STAGING_BINDIR}/uic"
+export exec_prefix = "${palmtopdir}"
+export CXXFLAGS = "-fexceptions -frtti -DKJS_VERBOSE=1 -DQT_THREAD_SUPPORT -DQ_OS_UNIX -DQT_NO_DOM -DENABLE_BOOKMARKS"
+export PCRE_CONFIG = "invalid"
+EXTRAFLAGS = "-lts"
+EXTRAFLAGS_c7x0 = "-lts -laticore"
+export EXTRA_OEMAKE = "EXTRA_LDFLAGS='${EXTRAFLAGS}'"
+
+EXTRA_OECONF = '--prefix=${palmtopdir} \
+ --exec-prefix=${palmtopdir} \
+ --includedir=${STAGING_INCDIR} \
+ --with-extra-includes=${STAGING_INCDIR} \
+ --with-extra-libs=${STAGING_LIBDIR} \
+ --with-ssl-version=0.9.7e \
+ --with-ssl-dir=${STAGING_LIBDIR}/.. \
+ --with-qt-includes=${STAGING_DIR}/${HOST_SYS}/qt2/include \
+ --with-qt-libraries=${STAGING_DIR}/${HOST_SYS}/qt2/lib \
+ --enable-fontsubs \
+ --with-konq-tmp-prefix=/tmp/kde-cache \
+ --enable-static \
+# --disable-static \
+# --enable-shared \
+ --disable-debug \
+ --with-gui=road \
+ --with-ipv6-lookup=no \
+ --without-xinerama \
+ --disable-scrollbars \
+ --disable-selection \
+ --disable-bookmarks \
+ --with-javascript=static \
+ --enable-debug=yes \
+ --disable-printing \
+ --enable-pcre \
+ --without-arts \
+ --enable-jshostext \
+ --disable-selection \
+ --enable-final \
+ --enable-qt-embedded \
+ --enable-rtti-embedded \
+ --enable-mt \
+ --enable-qt-mt\
+ --enable-fwnewepg=yes \
+ --enable-embedded '
+
+do_configure_prepend() {
+ cd ${S}
+ if ! test -L admin
+ then
+ ln -s ../kdelibs/admin admin
+ fi
+ make -f Makefile.cvs
+}
+
+do_compile_prepend() {
+ perl admin/am_edit
+}
diff --git a/packages/openobex-apps/.mtn2git_empty b/packages/leafpad/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openobex-apps/.mtn2git_empty
+++ b/packages/leafpad/.mtn2git_empty
diff --git a/packages/openobex-apps/openobex-apps-1.0.0/.mtn2git_empty b/packages/leafpad/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openobex-apps/openobex-apps-1.0.0/.mtn2git_empty
+++ b/packages/leafpad/files/.mtn2git_empty
diff --git a/packages/leafpad/files/leafpad.desktop b/packages/leafpad/files/leafpad.desktop
new file mode 100644
index 0000000000..0e582794ea
--- /dev/null
+++ b/packages/leafpad/files/leafpad.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Notes
+Exec=/usr/bin/leafpad
+Icon=leafpad.png
+Terminal=false
+Type=Application
+Categories=Utility;PIM;
+SingleInstance=true
+StartupNotify=true
+
diff --git a/packages/leafpad/files/leafpad.png b/packages/leafpad/files/leafpad.png
new file mode 100644
index 0000000000..c5ee0cff85
--- /dev/null
+++ b/packages/leafpad/files/leafpad.png
Binary files differ
diff --git a/packages/leafpad/leafpad_0.8.4.bb b/packages/leafpad/leafpad_0.8.4.bb
new file mode 100644
index 0000000000..c26f149777
--- /dev/null
+++ b/packages/leafpad/leafpad_0.8.4.bb
@@ -0,0 +1,21 @@
+LICENSE = "GPLv2"
+DEPENDS = "gtk+"
+SRC_URI = "http://savannah.nongnu.org/download/${PN}/${PN}-${PV}.tar.gz \
+ file://leafpad.desktop \
+ file://leafpad.png"
+PR = "r1"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --enable-chooser --disable-gtktest --disable-print"
+
+do_install_append () {
+ install -d ${D}/${datadir}
+ install -d ${D}/${datadir}/applications
+ install -d ${D}/${datadir}/pixmaps/
+
+ install -m 0644 ${WORKDIR}/leafpad.png ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/leafpad.desktop ${D}/${datadir}/applications
+}
+
+FILES_${PN} += "${datadir}/applications/leafpad.desktop ${datadir}/pixmaps/leafpad.png"
diff --git a/packages/openobex/openobex-1.0.1/.mtn2git_empty b/packages/libcap/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openobex/openobex-1.0.1/.mtn2git_empty
+++ b/packages/libcap/.mtn2git_empty
diff --git a/packages/openssl/openssl-0.9.7b/.mtn2git_empty b/packages/libcap/libcap-1.10/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openssl/openssl-0.9.7b/.mtn2git_empty
+++ b/packages/libcap/libcap-1.10/.mtn2git_empty
diff --git a/packages/libcap/libcap-1.10/make.patch b/packages/libcap/libcap-1.10/make.patch
new file mode 100644
index 0000000000..5788099f08
--- /dev/null
+++ b/packages/libcap/libcap-1.10/make.patch
@@ -0,0 +1,20 @@
+Index: libcap-1.10.orig/Make.Rules
+===================================================================
+--- libcap-1.10.orig.orig/Make.Rules 1999-11-18 07:06:02.000000000 +0100
++++ libcap-1.10.orig/Make.Rules 2006-03-20 23:05:56.083854920 +0100
+@@ -41,15 +41,11 @@
+
+ # Compilation specifics
+
+-CC=gcc
+-COPTFLAGS=-O2
+ DEBUG=-g #-DDEBUG
+ WARNINGS=-ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
+ -Wpointer-arith -Wcast-qual -Wcast-align \
+ -Wtraditional -Wstrict-prototypes -Wmissing-prototypes \
+ -Wnested-externs -Winline -Wshadow -pedantic
+-LD=ld
+-LDFLAGS=-s #-g
+
+ IPATH=-I$(topdir)/libcap/include
+ INCS=$(topdir)/libcap/include/sys/capability.h
diff --git a/packages/libcap/libcap-1.10/makenames.patch b/packages/libcap/libcap-1.10/makenames.patch
new file mode 100644
index 0000000000..445f2116ec
--- /dev/null
+++ b/packages/libcap/libcap-1.10/makenames.patch
@@ -0,0 +1,13 @@
+Index: libcap-1.10.orig/libcap/Makefile
+===================================================================
+--- libcap-1.10.orig.orig/libcap/Makefile 2006-03-20 23:11:05.696786600 +0100
++++ libcap-1.10.orig/libcap/Makefile 2006-03-20 23:14:29.527799576 +0100
+@@ -45,7 +45,7 @@
+ all: $(MINLIBNAME)
+
+ _makenames: _makenames.c cap_names.sed
+- $(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
++ $(BUILD_CC) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $< -o $@
+
+ cap_names.h: _makenames
+ ./_makenames > cap_names.h
diff --git a/packages/libcap/libcap_1.10.bb b/packages/libcap/libcap_1.10.bb
new file mode 100644
index 0000000000..886248c5ad
--- /dev/null
+++ b/packages/libcap/libcap_1.10.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Libcap is a library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilities."
+PRIORITY = "optional"
+SECTION = "libs"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.4/libcap-${PV}.tar.bz2 \
+ file://makenames.patch;patch=1 \
+ file://make.patch;patch=1 "
+
+S = "${WORKDIR}/libcap-${PV}"
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/sys
+ install -m 0644 libcap/include/sys/capability.h ${STAGING_INCDIR}/sys/
+ oe_libinstall -s -C libcap libcap ${STAGING_LIBDIR}
+}
+
+do_install() {
+ install -d ${D}${includedir}/sys
+ install -m 0644 libcap/include/sys/capability.h ${D}${includedir}/sys/
+ install -d ${D}${libdir}
+ oe_libinstall -s -C libcap libcap ${D}${libdir}
+}
+
+FILES_${PN} = "${libdir}"
+FILES_${PN}-dev = "${includedir}" \ No newline at end of file
diff --git a/packages/openssl/openssl-0.9.7d/.mtn2git_empty b/packages/libetpan/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/openssl/openssl-0.9.7d/.mtn2git_empty
+++ b/packages/libetpan/files/.mtn2git_empty
diff --git a/packages/libetpan/libetpan-0.38/etpan_suffix.patch b/packages/libetpan/files/etpan_suffix.patch
index 901615c416..901615c416 100644
--- a/packages/libetpan/libetpan-0.38/etpan_suffix.patch
+++ b/packages/libetpan/files/etpan_suffix.patch
diff --git a/packages/libetpan/libetpan-0.36/etpan_configure.patch b/packages/libetpan/libetpan-0.36/etpan_configure.patch
deleted file mode 100644
index 3572339010..0000000000
--- a/packages/libetpan/libetpan-0.36/etpan_configure.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libetpan/configure.in~etpan_configure 2005-03-10 10:11:29.000000000 +0100
-+++ libetpan/configure.in 2005-03-11 13:57:00.232491234 +0100
-@@ -76,6 +76,38 @@
- esac
- fi
-
-+dnl GNUTLS
-+AC_ARG_WITH(gnutls, [ --with-gnutls[=DIR] include GnuTLS support (default=no)],
-+ [], [with_gnutls=no])
-+if test "x$with_gnutls" != "xno"; then
-+ OCPPFLAGS="$CPPFLAGS"
-+ OLDFLAGS="$LDFLAGS"
-+ if test "x$with_gnutls" != "xyes" ; then
-+ CPPFLAGS="CRPPFLAGS -I$with_gnutls/include"
-+ LDFLAGS="$LDFLAGS -L$with_gnutls/lib"
-+ fi
-+ GNUTLSLIBS=""
-+ AC_CHECK_HEADER(gnutls/gnutls.h, [
-+ AC_CHECK_LIB(gnutls, gnutls_global_deinit, with_gnutls=yes,[GNUTLSLIBS="-lgnutls -lgnutls-openssl"])
-+ ])
-+ if test "x$with_gnutls" != "xyes"; then
-+ CPPFLAGS="$OCPPFLAGS"
-+ LDFLAGS="$OLDFLAGS"
-+ else
-+ with_openssl="no"
-+ fi
-+fi
-+
-+if test "x$with_gnutls" = "xyes"; then
-+ AC_DEFINE([USE_GNUTLS],1, [Define to use GnuTLS])
-+ AC_DEFINE([USE_SSL], 1, [Define to use OpenSSL])
-+ GNUTLSLIBS="-lgnutls -lgnutls-openssl"
-+else
-+ AC_MSG_WARN([GnuTLS support disabled.])
-+ GNUTLSLIBS=""
-+fi
-+AC_SUBST(GNUTLSLIBS)
-+
- dnl OpenSSL -- very primitive right now
- AC_ARG_WITH(openssl, [ --with-openssl[=DIR] include OpenSSL support (default=auto)],
- [], [with_openssl=yes])
-@@ -336,7 +368,7 @@
- REENTRANT=1
- else
- REENTRANT=0
-- LIBSUFFIX=-no-mt
-+ LIBSUFFIX=
- fi
- AC_SUBST(LIBSUFFIX)
- AC_SUBST(REENTRANT)
diff --git a/packages/libetpan/libetpan-0.36/gnutls.patch b/packages/libetpan/libetpan-0.36/gnutls.patch
deleted file mode 100644
index d2ccdcf9d0..0000000000
--- a/packages/libetpan/libetpan-0.36/gnutls.patch
+++ /dev/null
@@ -1,214 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libetpan/src/Makefile.in~gnutls 2005-03-10 10:11:30.000000000 +0100
-+++ libetpan/src/Makefile.in 2005-03-11 21:43:10.975597607 +0100
-@@ -15,7 +15,7 @@
-
- VERSINFO = @API_VERSION@
- CC = @CC@
--LDFLAGS = @LIBS@ @SSLLIBS@ @LDFLAGS@ @DBLIB@
-+LDFLAGS = @LIBS@ @SSLLIBS@ @LDFLAGS@ @DBLIB@ @GNUTLSLIBS@
-
- SUBLIBS = data-types/libdata-types.la \
- low-level/liblow-level.la \
---- libetpan/src/data-types/mailstream_ssl.c~gnutls 2005-03-10 10:11:30.000000000 +0100
-+++ libetpan/src/data-types/mailstream_ssl.c 2005-03-11 21:44:56.373673788 +0100
-@@ -61,7 +61,12 @@
- /* mailstream_low, ssl */
-
- #ifdef USE_SSL
-+#ifndef USE_GNUTLS
- #include <openssl/ssl.h>
-+#else
-+#include <errno.h>
-+#include <gnutls/openssl.h>
-+#endif
- #ifdef LIBETPAN_REENTRANT
- #include <pthread.h>
- #endif
-@@ -85,9 +90,9 @@
- #ifdef USE_SSL
- static int mailstream_low_ssl_close(mailstream_low * s);
- static ssize_t mailstream_low_ssl_read(mailstream_low * s,
-- void * buf, size_t count);
-+ void * buf, size_t count);
- static ssize_t mailstream_low_ssl_write(mailstream_low * s,
-- const void * buf, size_t count);
-+ const void * buf, size_t count);
- static void mailstream_low_ssl_free(mailstream_low * s);
- static int mailstream_low_ssl_get_fd(mailstream_low * s);
-
-@@ -113,10 +118,10 @@
- SSL_CTX * tmp_ctx;
- int fd_flags;
- int old_fd_flags;
--
-+
- #ifdef LIBETPAN_REENTRANT
- pthread_mutex_lock(&ssl_lock);
--#endif
-+#endif
- if (!ssl_init_done) {
- SSL_library_init();
- ssl_init_done = 1;
-@@ -124,35 +129,37 @@
- #ifdef LIBETPAN_REENTRANT
- pthread_mutex_unlock(&ssl_lock);
- #endif
--
-+
- tmp_ctx = SSL_CTX_new(TLSv1_client_method());
- if (tmp_ctx == NULL)
- goto err;
--
-+
- ssl_conn = (SSL *) SSL_new(tmp_ctx);
- if (ssl_conn == NULL)
- goto free_ctx;
--
-+
- if (SSL_set_fd(ssl_conn, fd) == 0)
- goto free_ssl_conn;
--
-+
-+#ifndef USE_GNUTLS
- SSL_set_read_ahead(ssl_conn, 1);
--
-+#endif
-+
- r = SSL_connect(ssl_conn);
- if (r <= 0)
- goto free_ssl_conn;
--
-+
- fd_flags = fcntl(fd, F_GETFL, 0);
- old_fd_flags = fd_flags;
- fd_flags |= O_NDELAY;
- r = fcntl(fd, F_SETFL, fd_flags);
- if (r < 0)
- goto free_ssl_conn;
--
-+
- ssl_data = malloc(sizeof(* ssl_data));
- if (ssl_data == NULL)
- goto reset_fd_flags;
--
-+
- ssl_data->fd = fd;
- ssl_data->ssl_conn = ssl_conn;
- ssl_data->ssl_ctx = tmp_ctx;
-@@ -241,52 +248,101 @@
- }
-
- static ssize_t mailstream_low_ssl_read(mailstream_low * s,
-- void * buf, size_t count)
-+ void * buf, size_t count)
- {
- struct mailstream_ssl_data * ssl_data;
- int r;
-
- ssl_data = (struct mailstream_ssl_data *) s->data;
--
-+
- while (1) {
- int ssl_r;
- fd_set fds_read;
-+#ifndef USE_GNUTLS
- struct timeval timeout;
--
-+#else
-+ fd_set fds_excp;
-+
-+ {
-+ struct timeval timeout2;
-+ timeout2 = mailstream_network_delay;
-+
-+ FD_ZERO(&fds_read);
-+ FD_SET(ssl_data->fd, &fds_read);
-+ FD_ZERO(&fds_excp);
-+ FD_SET(ssl_data->fd, &fds_excp);
-+ r = select(ssl_data->fd + 1, &fds_read, NULL, &fds_excp, &timeout2);
-+ if (r==0) {
-+ return -1;
-+ }
-+ if (FD_ISSET(ssl_data->fd, &fds_excp))
-+ return -1;
-+ if (!FD_ISSET(ssl_data->fd, &fds_read))
-+ return 0;
-+ }
-+#endif
- r = SSL_read(ssl_data->ssl_conn, buf, count);
-- if (r > 0)
-+ if (r > 0) {
- return r;
--
-+ }
-+#ifdef USE_GNUTLS
-+ if (errno!=EAGAIN&&errno!=EWOULDBLOCK) {
-+ return r;
-+ }
-+#else
- ssl_r = SSL_get_error(ssl_data->ssl_conn, r);
- switch (ssl_r) {
- case SSL_ERROR_NONE:
- return r;
--
-+
- case SSL_ERROR_ZERO_RETURN:
- return r;
--
-+
- case SSL_ERROR_WANT_READ:
- timeout = mailstream_network_delay;
--
-+
- FD_ZERO(&fds_read);
- FD_SET(ssl_data->fd, &fds_read);
- r = select(ssl_data->fd + 1, &fds_read, NULL, NULL, &timeout);
- if (r == 0)
- return -1;
- break;
--
-+
- default:
- return r;
- }
-+#endif
- }
- }
-
- static ssize_t mailstream_low_ssl_write(mailstream_low * s,
-- const void * buf, size_t count)
-+ const void * buf, size_t count)
- {
- struct mailstream_ssl_data * ssl_data;
-
- ssl_data = (struct mailstream_ssl_data *) s->data;
-+#ifdef USE_GNUTLS
-+ {
-+ fd_set fds_write;
-+ fd_set fds_excp;
-+ struct timeval timeout;
-+ int r;
-+
-+ timeout = mailstream_network_delay;
-+
-+ FD_ZERO(&fds_write);
-+ FD_SET(ssl_data->fd, &fds_write);
-+ FD_ZERO(&fds_excp);
-+ FD_SET(ssl_data->fd, &fds_excp);
-+ r = select(ssl_data->fd + 1, NULL, &fds_write, &fds_excp, &timeout);
-+ if (r == 0)
-+ return -1;
-+ if (FD_ISSET(ssl_data->fd, &fds_excp))
-+ return -1;
-+ if (!FD_ISSET(ssl_data->fd, &fds_write))
-+ return 0;
-+ }
-+#endif
- return SSL_write(ssl_data->ssl_conn, buf, count);
- }
- #endif
diff --git a/packages/libetpan/libetpan-0.36/reentrant.patch b/packages/libetpan/libetpan-0.36/reentrant.patch
deleted file mode 100644
index eaf1edfe22..0000000000
--- a/packages/libetpan/libetpan-0.36/reentrant.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- libetpan/src/data-types/mailsem.c~reentrant 2005-01-28 02:43:11.000000000 +0100
-+++ libetpan/src/data-types/mailsem.c 2005-03-10 14:32:31.717000768 +0100
-@@ -34,7 +34,9 @@
- */
-
- #include "mailsem.h"
-+#ifdef LIBETPAN_REENTRANT
- #include <semaphore.h>
-+#endif
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/stat.h>
-@@ -50,6 +52,7 @@
-
- struct mailsem * mailsem_new(void)
- {
-+#ifdef LIBETPAN_REENTRANT
- struct mailsem * sem;
- int r;
-
-@@ -82,11 +85,13 @@
- return sem;
-
- err:
-+#endif
- return NULL;
- }
-
- void mailsem_free(struct mailsem * sem)
- {
-+#ifdef LIBETPAN_REENTRANT
- if (sem->sem_kind == SEMKIND_SEMOPEN) {
- char name[SEMNAME_LEN];
-
-@@ -101,14 +106,23 @@
- free(sem->sem_sem);
- }
- free(sem);
-+#endif
- }
-
- int mailsem_up(struct mailsem * sem)
- {
-+#ifdef LIBETPAN_REENTRANT
- return sem_wait((sem_t *) sem->sem_sem);
-+#else
-+ return 0;
-+#endif
- }
-
- int mailsem_down(struct mailsem * sem)
- {
-+#ifdef LIBETPAN_REENTRANT
- return sem_post((sem_t *) sem->sem_sem);
-+#else
-+ return 0;
-+#endif
- }
diff --git a/packages/libetpan/libetpan_0.36.bb b/packages/libetpan/libetpan_0.36.bb
deleted file mode 100644
index 1a6c989d5a..0000000000
--- a/packages/libetpan/libetpan_0.36.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "libetpan is a library for communicating with mail and news servers using \
-SMTP, POP, IMAP and NNTP"
-SECTION = "libs"
-DEPENDS = "openssl"
-PV = "0.36"
-PR = "r3"
-S = "${WORKDIR}/libetpan"
-TAG="rel-0-36"
-LICENSE = "BSD"
-SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/libetpan;tag=${TAG};module=libetpan \
- file://etpan_configure.patch;patch=1 \
- file://reentrant.patch;patch=1 \
- file://gnutls.patch;patch=1 "
-
-inherit autotools pkgconfig gettext
-
-EXTRA_OECONF = "--with-openssl=${STAGING_LIBDIR}/.. --disable-db --disable-threads"
-
-do_stage () {
- oe_runmake install includedir=${STAGING_INCDIR} libdir=${STAGING_LIBDIR} bindir=${STAGING_BINDIR}
-}
-
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev = "${bindir} ${includedir} ${libdir}/lib*.so ${libdir}/*.la ${libdir}/*.a ${libdir}/pkgconfig"
diff --git a/packages/libetpan/libetpan_0.43.bb b/packages/libetpan/libetpan_0.43.bb
new file mode 100644
index 0000000000..51757a7265
--- /dev/null
+++ b/packages/libetpan/libetpan_0.43.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "libetpan is a library for communicating with mail and news servers. \
+It supports the protocols SMTP, POP3, IMAP and NNTP."
+HOMEPAGE = "http://www.etpan.org"
+SECTION = "libs"
+DEPENDS = "gnutls"
+LICENSE = "BSD"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libetpan/libetpan-${PV}.tar.gz \
+ file://etpan_suffix.patch;patch=1 "
+
+inherit autotools pkgconfig gettext
+
+EXTRA_OECONF = "--without-openssl --with-gnutls --disable-db --disable-threads"
+
+do_stage() {
+ oe_runmake install includedir=${STAGING_INCDIR} libdir=${STAGING_LIBDIR} bindir=${STAGING_BINDIR}
+}
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev = "${bindir} ${includedir} ${libdir}/lib*.so ${libdir}/*.la ${libdir}/*.a ${libdir}/pkgconfig"
diff --git a/packages/libmodplug/libmodplug_0.7.bb b/packages/libmodplug/libmodplug_0.7.bb
index 72bd6adfbd..369120e685 100644
--- a/packages/libmodplug/libmodplug_0.7.bb
+++ b/packages/libmodplug/libmodplug_0.7.bb
@@ -1,12 +1,13 @@
-SECTION = "libs"
DESCRIPTION = "Library for reading mod-like audio files."
+HOMEPAGE = "http://modplug-xmms.sf.net"
+SECTION = "libs"
+LICENSE = "GPL"
SRC_URI = "${SOURCEFORGE_MIRROR}/modplug-xmms/libmodplug-${PV}.tar.gz"
-LICENSE = "GPL"
-inherit autotools pkgconfig
+
+inherit autotools pkgconfig
do_stage() {
install -m 0644 ${S}/src/modplug.h ${STAGING_INCDIR}
-#FIXME!
- cp -pPR src/.libs/libmodplug.so* ${STAGING_LIBDIR}
+ oe_libinstall -C src -so libmodplug ${STAGING_LIBDIR}
}
diff --git a/packages/libschedule/libschedule_0.13.bb b/packages/libschedule/libschedule_0.13.bb
deleted file mode 100644
index feba11c9df..0000000000
--- a/packages/libschedule/libschedule_0.13.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-LICENSE = "LGPL"
-PR = "r1"
-DESCRIPTION = "RTC alarm handling library for GPE"
-SECTION = "gpe/libs"
-PRIORITY = "optional"
-MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "glib-2.0"
-
-inherit pkgconfig gpe
-
-headers = "schedule.h"
-
-do_stage () {
- oe_libinstall -so libschedule ${STAGING_LIBDIR}
-
- mkdir -p ${STAGING_INCDIR}/gpe
- for h in ${headers}; do
- install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/$h
- done
-}
-
-do_install () {
- gpe_do_install
- oe_runmake PREFIX=${prefix} DESTDIR=${D} install-devel
-}
diff --git a/packages/libschedule/libschedule_0.16.bb b/packages/libschedule/libschedule_0.16.bb
new file mode 100644
index 0000000000..ab71dd4521
--- /dev/null
+++ b/packages/libschedule/libschedule_0.16.bb
@@ -0,0 +1,15 @@
+LICENSE = "LGPL"
+PR = "r0"
+DESCRIPTION = "RTC alarm handling library for GPE"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 sqlite"
+GPE_TARBALL_SUFFIX = "bz2"
+
+inherit autotools pkgconfig gpe
+
+
+do_stage () {
+autotools_stage_all
+}
+
diff --git a/packages/libxine/libxine-x11-1.0/libxine-gcc4.patch b/packages/libxine/files/libxine-gcc4.patch
index 0a370b9579..0a370b9579 100644
--- a/packages/libxine/libxine-x11-1.0/libxine-gcc4.patch
+++ b/packages/libxine/files/libxine-gcc4.patch
diff --git a/packages/libxine/libxine-fb_1.0.bb b/packages/libxine/libxine-fb_1.0.bb
index 668a2176fb..62f1ac393e 100644
--- a/packages/libxine/libxine-fb_1.0.bb
+++ b/packages/libxine/libxine-fb_1.0.bb
@@ -5,11 +5,11 @@ PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "zlib libogg tremor libmad libmodplug"
PROVIDES = "virtual/libxine"
-PR = "r0"
+PR = "r1"
inherit autotools pkgconfig gettext
-SRC_URI = "http://heanet.dl.sourceforge.net/sourceforge/xine/xine-lib-${PV}.tar.gz \
+SRC_URI = "${SOURCEFORGE_MIRROR}/xine/xine-lib-${PV}.tar.gz \
file://cpu-${PV}.patch;patch=1 \
file://configure-${PV}.patch;patch=1 \
file://demuxogg.patch;patch=1 \
@@ -20,7 +20,8 @@ SRC_URI = "http://heanet.dl.sourceforge.net/sourceforge/xine/xine-lib-${PV}.tar.
file://libxine-tremor-autoconf.patch;patch=1 \
file://mpegvideo-static-inlinine.patch;patch=1 \
file://libxine-arm-configure.patch;patch=1 \
- file://no-caca.patch;patch=1 "
+ file://no-caca.patch;patch=1 \
+ file://libxine-gcc4.patch;patch=1"
S = "${WORKDIR}/xine-lib-${PV}"
SOV = "1.0.7"
diff --git a/packages/libxine/libxine-x11_1.0.bb b/packages/libxine/libxine-x11_1.0.bb
index ea70778517..03a47474b0 100644
--- a/packages/libxine/libxine-x11_1.0.bb
+++ b/packages/libxine/libxine-x11_1.0.bb
@@ -22,7 +22,7 @@ SRC_URI = "http://heanet.dl.sourceforge.net/sourceforge/xine/xine-lib-${PV}.tar.
file://libxine-cut-memusage.patch;patch=1 \
file://mpegvideo-static-inlinine.patch;patch=1 \
file://libxine-libavcodec.patch;patch=1 \
- file://libxine-gcc4.patch;patch=1"
+ file://libxine-gcc4.patch;patch=1"
S = "${WORKDIR}/xine-lib-${PV}"
SOV = "1.0.7"
diff --git a/packages/libxml/libxml2_2.6.10.bb b/packages/libxml/libxml2_2.6.10.bb
index 745ddacd18..9f789a499e 100644
--- a/packages/libxml/libxml2_2.6.10.bb
+++ b/packages/libxml/libxml2_2.6.10.bb
@@ -9,7 +9,7 @@ PACKAGES = "${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dev += "${bindir}/xml-config"
FILES_${PN}-utils += "${bindir}"
-SRC_URI = "http://xmlsoft.org/sources/old/libxml2-${PV}.tar.gz"
+SRC_URI = "http://xmlsoft.org/sources/libxml2/old/libxml2-${PV}.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/libxml/libxml2_2.6.22.bb b/packages/libxml/libxml2_2.6.22.bb
index eb5f087df7..fae00a6063 100644
--- a/packages/libxml/libxml2_2.6.22.bb
+++ b/packages/libxml/libxml2_2.6.22.bb
@@ -8,9 +8,8 @@ PACKAGES = "${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dev += "${bindir}/xml-config"
FILES_${PN}-utils += "${bindir}"
-SRC_URI = "http://xmlsoft.org/sources/libxml2-${PV}.tar.gz \
+SRC_URI = "http://xmlsoft.org/sources/libxml2/libxml2-${PV}.tar.gz \
file://no-testapi.patch;patch=1"
-
inherit autotools pkgconfig
EXTRA_OECONF = "--without-python --without-debug --without-legacy --without-catalog --without-docbook --without-c14n"
diff --git a/packages/libxml/libxml2_2.6.7.bb b/packages/libxml/libxml2_2.6.7.bb
index fc04b5e9d3..b204351b7b 100644
--- a/packages/libxml/libxml2_2.6.7.bb
+++ b/packages/libxml/libxml2_2.6.7.bb
@@ -9,7 +9,7 @@ PACKAGES = "${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dev += "${bindir}/xml-config"
FILES_${PN}-utils += "${bindir}"
-SRC_URI = "http://xmlsoft.org/sources/old/libxml2-${PV}.tar.gz"
+SRC_URI = "http://xmlsoft.org/sources/libxml2/old/libxml2-${PV}.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/libxml/libxml2_2.6.9.bb b/packages/libxml/libxml2_2.6.9.bb
index 745ddacd18..9f789a499e 100644
--- a/packages/libxml/libxml2_2.6.9.bb
+++ b/packages/libxml/libxml2_2.6.9.bb
@@ -9,7 +9,7 @@ PACKAGES = "${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dev += "${bindir}/xml-config"
FILES_${PN}-utils += "${bindir}"
-SRC_URI = "http://xmlsoft.org/sources/old/libxml2-${PV}.tar.gz"
+SRC_URI = "http://xmlsoft.org/sources/libxml2/old/libxml2-${PV}.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/libxsettings-client/libxsettings-client_0.14.bb b/packages/libxsettings-client/libxsettings-client_0.14.bb
index 0e8ff6d1cb..f2e77735f9 100644
--- a/packages/libxsettings-client/libxsettings-client_0.14.bb
+++ b/packages/libxsettings-client/libxsettings-client_0.14.bb
@@ -1,7 +1,9 @@
SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
-DEPENDS = "libxsettings libx11"
+DEPENDS = "libxsettings libx11 libxt"
+# libxt is required to stop configure breaking builds by
+# including system paths to find it if it isn't present.
inherit autotools pkgconfig gpe
@@ -17,4 +19,3 @@ do_stage () {
install -m 0644 ${S}/$h ${STAGING_INCDIR}/$h
done
}
-
diff --git a/packages/libxsettings-client/libxsettings-client_0.16.bb b/packages/libxsettings-client/libxsettings-client_0.16.bb
index c668971de8..45d9b1c307 100644
--- a/packages/libxsettings-client/libxsettings-client_0.16.bb
+++ b/packages/libxsettings-client/libxsettings-client_0.16.bb
@@ -1,7 +1,9 @@
SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
-DEPENDS = "libxsettings libx11"
+DEPENDS = "libxsettings libx11 libxt"
+# libxt is required to stop configure breaking builds by
+# including system paths to find it if it isn't present.
MAINTAINER = "Florian Boor <florian@kernelconcepts.de>"
PR="r1"
diff --git a/packages/libxslt/libxslt_1.1.7.bb b/packages/libxslt/libxslt_1.1.7.bb
index 81d4fddead..fd81cba5d2 100644
--- a/packages/libxslt/libxslt_1.1.7.bb
+++ b/packages/libxslt/libxslt_1.1.7.bb
@@ -10,7 +10,7 @@ PACKAGES = "${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dev += "${bindir}/xslt-config"
FILES_${PN}-utils += "${bindir}"
-SRC_URI = "http://xmlsoft.org/sources/old/libxslt-${PV}.tar.gz"
+SRC_URI = "ftp://xmlsoft.org/libxml2/old/libxslt-${PV}.tar.gz"
S = "${WORKDIR}/libxslt-${PV}"
inherit autotools pkgconfig
diff --git a/packages/libxslt/libxslt_1.1.8.bb b/packages/libxslt/libxslt_1.1.8.bb
index 81d4fddead..fd81cba5d2 100644
--- a/packages/libxslt/libxslt_1.1.8.bb
+++ b/packages/libxslt/libxslt_1.1.8.bb
@@ -10,7 +10,7 @@ PACKAGES = "${PN}-dev ${PN}-utils ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dev += "${bindir}/xslt-config"
FILES_${PN}-utils += "${bindir}"
-SRC_URI = "http://xmlsoft.org/sources/old/libxslt-${PV}.tar.gz"
+SRC_URI = "ftp://xmlsoft.org/libxml2/old/libxslt-${PV}.tar.gz"
S = "${WORKDIR}/libxslt-${PV}"
inherit autotools pkgconfig
diff --git a/packages/python/python-2.4.2/.mtn2git_empty b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/python/python-2.4.2/.mtn2git_empty
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/.mtn2git_empty
diff --git a/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/asm-arch-irqs.patch b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/asm-arch-irqs.patch
new file mode 100644
index 0000000000..4785275db4
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/asm-arch-irqs.patch
@@ -0,0 +1,19 @@
+--- linux-libc-headers-2.6.15.99/include/asm-arm/arch-ebsa285/irqs.h.orig 2006-03-19 17:01:59.000000000 +0100
++++ linux-libc-headers-2.6.15.99/include/asm-arm/arch-ebsa285/irqs.h 2006-03-19 17:02:50.000000000 +0100
+@@ -8,7 +8,6 @@
+ * 20-Jan-1998 RMK Started merge of EBSA286, CATS and NetWinder
+ * 01-Feb-1999 PJB ISA IRQs start at 0 not 16
+ */
+-#include <asm/mach-types.h>
+
+ #define NR_IRQS 36
+ #define NR_DC21285_IRQS 16
+@@ -92,7 +91,7 @@
+ #undef RTC_IRQ
+ #define RTC_IRQ IRQ_ISA_RTC_ALARM
+ #define I8042_KBD_IRQ IRQ_ISA_KEYBOARD
+-#define I8042_AUX_IRQ (machine_is_netwinder() ? IRQ_NETWINDER_PS2MOUSE : IRQ_ISA_PS2MOUSE)
++#define I8042_AUX_IRQ IRQ_ISA_PS2MOUSE
+ #define IRQ_FLOPPYDISK IRQ_ISA_FLOPPY
+
+ #define irq_canonicalize(_i) (((_i) == IRQ_ISA_CASCADE) ? IRQ_ISA_2 : _i)
diff --git a/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-netfilter_ipv4.patch b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-netfilter_ipv4.patch
new file mode 100644
index 0000000000..f7f77af0de
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-netfilter_ipv4.patch
@@ -0,0 +1,31 @@
+iptables 1.3.3 assumes that ipt_scpt.h defines ELEMCOUNT, but ipt_scpt.h
+moved to ARRAY_SIZE (which would be defined in linux/kernel.h).
+The ip_conntrack_dir definition now resides in linux/netfilter/ip_conntrack_common.h
+
+--- linux-libc-headers-2.6.15.99/include/linux/netfilter_ipv4/ipt_sctp.h.orig 2006-03-20 22:03:04.000000000 +0100
++++ linux-libc-headers-2.6.15.99/include/linux/netfilter_ipv4/ipt_sctp.h 2006-03-20 22:07:09.000000000 +0100
+@@ -7,6 +7,8 @@
+
+ #define IPT_SCTP_VALID_FLAGS 0x07
+
++#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
++#define ELEMCOUNT(x) (sizeof(x) / sizeof((x)[0]))
+
+ struct ipt_sctp_flag_info {
+ u_int8_t chunktype;
+--- linux-libc-headers-2.6.15.99/include/linux/netfilter_ipv4/ip_conntrack_tuple.h.orig 2006-03-20 21:51:10.000000000 +0100
++++ linux-libc-headers-2.6.15.99/include/linux/netfilter_ipv4/ip_conntrack_tuple.h 2006-03-20 21:51:12.000000000 +0100
+@@ -89,13 +89,6 @@
+ (tuple)->dst.u.all = 0; \
+ } while (0)
+
+-enum ip_conntrack_dir
+-{
+- IP_CT_DIR_ORIGINAL,
+- IP_CT_DIR_REPLY,
+- IP_CT_DIR_MAX
+-};
+-
+ static inline int ip_ct_tuple_src_equal(const struct ip_conntrack_tuple *t1,
+ const struct ip_conntrack_tuple *t2)
+ {
diff --git a/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-rtc.patch b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-rtc.patch
new file mode 100644
index 0000000000..36b80fb9d2
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-rtc.patch
@@ -0,0 +1,11 @@
+--- linux-libc-headers-2.6.15.99/include/linux/rtc.h.orig 2006-03-19 12:31:07.000000000 +0100
++++ linux-libc-headers-2.6.15.99/include/linux/rtc.h 2006-03-19 12:31:14.000000000 +0100
+@@ -11,8 +11,6 @@
+ #ifndef _LINUX_RTC_H_
+ #define _LINUX_RTC_H_
+
+-#include <linux/interrupt.h>
+-
+ /*
+ * The struct used to pass data via the following ioctl. Similar to the
+ * struct tm in <time.h>, but it needs to be here so that the kernel
diff --git a/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-videodev2.patch b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-videodev2.patch
new file mode 100644
index 0000000000..95335c99b6
--- /dev/null
+++ b/packages/linux-libc-headers/linux-libc-headers-2.6.15.99/linux-videodev2.patch
@@ -0,0 +1,45 @@
+--- linux-libc-headers-2.6.15.99/include/linux/videodev2.h.orig 2006-03-20 11:14:35.000000000 +0100
++++ linux-libc-headers-2.6.15.99/include/linux/videodev2.h 2006-03-20 11:14:37.000000000 +0100
+@@ -15,7 +15,32 @@
+ */
+ #include <sys/time.h> /* need struct timeval */
+ #include <asm/types.h> /* needed __u64 */
+-
++
++#define OBSOLETE_OWNER 1 /* It will be removed for 2.6.15 */
++#define HAVE_V4L2 1
++
++/*
++ * Common stuff for both V4L1 and V4L2
++ * Moved from videodev.h
++ */
++
++#define VIDEO_MAX_FRAME 32
++
++#define VID_TYPE_CAPTURE 1 /* Can capture */
++#define VID_TYPE_TUNER 2 /* Can tune */
++#define VID_TYPE_TELETEXT 4 /* Does teletext */
++#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */
++#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */
++#define VID_TYPE_CLIPPING 32 /* Can clip */
++#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */
++#define VID_TYPE_SCALES 128 /* Scalable */
++#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
++#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
++#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */
++#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */
++#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */
++#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */
++
+ /*
+ * M I S C E L L A N E O U S
+ */
+@@ -464,7 +489,7 @@
+ struct v4l2_clip
+ {
+ struct v4l2_rect c;
+- struct v4l2_clip __user *next;
++ struct v4l2_clip *next;
+ };
+
+ struct v4l2_window
diff --git a/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb b/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb
index 1dbd2ad3e4..9012e0f454 100644
--- a/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb
+++ b/packages/linux-libc-headers/linux-libc-headers_2.6.15.99.bb
@@ -14,9 +14,14 @@ DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
LICENSE = "GPL"
DEFAULT_PREFERENCE = "-1"
INHIBIT_DEFAULT_DEPS = "1"
+PR = "r3"
SRC_URI = "http://ewi546.ewi.utwente.nl/OE/eabi/linux-libc-headers-${PV}.tar.bz2 \
- file://keyboard.patch;patch=1"
+ file://keyboard.patch;patch=1 \
+ file://asm-arch-irqs.patch;patch=1 \
+ file://linux-netfilter_ipv4.patch;patch=1 \
+ file://linux-rtc.patch;patch=1 \
+ file://linux-videodev2.patch;patch=1"
S = "${WORKDIR}/linux-libc-headers-${PV}"
diff --git a/packages/linux/ep93xx-kernel/defconfig b/packages/linux/ep93xx-kernel/defconfig
index e946973747..b4b1569ca5 100644
--- a/packages/linux/ep93xx-kernel/defconfig
+++ b/packages/linux/ep93xx-kernel/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5
-# Sun Mar 12 14:25:46 2006
+# Linux kernel version: 2.6.16
+# Fri Mar 24 12:21:40 2006
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -119,6 +119,7 @@ CONFIG_CRUNCH=y
# EP93xx Platforms
#
CONFIG_MACH_GESBC9312=y
+CONFIG_MACH_MICRO9=y
CONFIG_MACH_TS72XX=y
#
@@ -157,7 +158,8 @@ CONFIG_ARM_AMBA=y
#
CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
-# CONFIG_AEABI is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -194,7 +196,6 @@ CONFIG_FPE_NWFPE_XP=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
@@ -538,12 +539,45 @@ CONFIG_EP93XX_ETHERNET=y
#
# Input device support
#
-# CONFIG_INPUT is not set
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
-# CONFIG_SERIO is not set
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_AMBAKMI is not set
+CONFIG_SERIO_LIBPS2=m
+# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set
#
@@ -635,6 +669,11 @@ CONFIG_I2C_DEBUG_CHIP=y
# CONFIG_SPI_MASTER is not set
#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
# Hardware Monitoring support
#
CONFIG_HWMON=y
@@ -695,7 +734,39 @@ CONFIG_HWMON=y
#
# Graphics support
#
-# CONFIG_FB is not set
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_ARMCLCD is not set
+# CONFIG_FB_EP93XX is not set
+# CONFIG_FB_CRT_EP93XX is not set
+# CONFIG_FB_LCD_EP93XX is not set
+# CONFIG_FB_LCD_EP93XX_SHARP is not set
+# CONFIG_FB_LCD_EP93XX_SHARP_LQ64D343 is not set
+# CONFIG_FB_LCD_TX09D50VM1CCA is not set
+# CONFIG_FB_EP93XX_8BPP is not set
+# CONFIG_FB_EP93XX_16BPP_565 is not set
+# CONFIG_FB_EP93XX_24BPP is not set
+# CONFIG_FB_EP93XX_32BPP is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_LCD_DEVICE=y
#
# Sound
@@ -731,7 +802,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_PRINTER=m
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -750,17 +821,31 @@ CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
CONFIG_USB_LIBUSUAL=y
#
# USB Input Devices
#
CONFIG_USB_HID=y
-
-#
-# Input core support is needed for USB HID input layer or HIDBP support
-#
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
CONFIG_USB_HIDDEV=y
+# 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
@@ -893,6 +978,7 @@ CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
CONFIG_RTC_DRV_EP93XX=y
# CONFIG_RTC_DRV_TEST is not set
diff --git a/packages/linux/ep93xx-kernel_2.6.15+2.6.16-rc5.bb b/packages/linux/ep93xx-kernel_2.6.16.bb
index 6515a3a2de..1806290a67 100644
--- a/packages/linux/ep93xx-kernel_2.6.15+2.6.16-rc5.bb
+++ b/packages/linux/ep93xx-kernel_2.6.16.bb
@@ -1,15 +1,18 @@
DESCRIPTION = "Linux Kernel for Cirrus Logic ep39xx compatible machines"
SECTION = "kernel"
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
LICENSE = "GPL"
-PR = "r13"
+PR = "r0"
-SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.bz2 \
- http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.16-rc5.bz2;patch=1 \
- http://www.wantstofly.org/~buytenh/ep93xx/derevo16.diff;patch=1 \
+SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
+ http://www.wantstofly.org/~buytenh/ep93xx/derevo17.diff;patch=1 \
+ http://cowebs.contec.at/ep93xx/EP93XX_Framebuffer1.patch;patch=1 \
+ http://cowebs.contec.at/ep93xx/EP93XX_Framebuffer1_registers.patch;patch=1 \
+ http://cowebs.contec.at/ep93xx/EP93XX_Framebuffer1_registers_raster.patch;patch=1 \
file://defconfig \
"
-S = "${WORKDIR}/linux-2.6.15"
+S = "${WORKDIR}/linux-2.6.16"
inherit kernel
diff --git a/packages/linux/handhelds-pxa-2.6_cvs.bb b/packages/linux/handhelds-pxa-2.6_cvs.bb
index 122bb33efc..915efa2439 100644
--- a/packages/linux/handhelds-pxa-2.6_cvs.bb
+++ b/packages/linux/handhelds-pxa-2.6_cvs.bb
@@ -10,8 +10,6 @@ COMPATIBLE_HOST = "arm.*-linux"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/handhelds-pxa-${PV}"
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26 \
- file://ide_not_removable-r0.patch;patch=1 \
- file://block-pio.patch;patch=1 \
file://defconfig"
S = "${WORKDIR}/kernel26"
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/10-ixp4xx-fix-irq.patch b/packages/linux/ixp4xx-kernel/2.6.16/10-ixp4xx-fix-irq.patch
new file mode 100644
index 0000000000..4326df2add
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/10-ixp4xx-fix-irq.patch
@@ -0,0 +1,25 @@
+---
+ arch/arm/mach-ixp4xx/common.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/common.c 2006-03-18 18:10:56.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/common.c 2006-03-18 18:48:46.000000000 +0100
+@@ -91,7 +91,7 @@ static void ixp4xx_config_irq(unsigned i
+ /*
+ * IRQ -> GPIO mapping table
+ */
+-static int irq2gpio[32] = {
++static char irq2gpio[32] = {
+ -1, -1, -1, -1, -1, -1, 0, 1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 2, 3, 4, 5, 6,
+@@ -153,6 +153,9 @@ static int ixp4xx_set_irq_type(unsigned
+ /* Set the new style */
+ *int_reg |= (int_style << (line * IXP4XX_GPIO_STYLE_SIZE));
+
++ /* Configure the line as an input */
++ gpio_line_config(line, IXP4XX_GPIO_IN);
++
+ return 0;
+ }
+
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/15-jffs2-endian-config.patch b/packages/linux/ixp4xx-kernel/2.6.16/15-jffs2-endian-config.patch
index 0dcbdaeadd..893353ef4f 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/15-jffs2-endian-config.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/15-jffs2-endian-config.patch
@@ -9,6 +9,7 @@ executables) independent of the endianness of the processor (ARM
processors can be switched to either endianness at run-time).
Signed-off-by: Rod Whitby <rod@whitby.id.au>
+Signed-off-by: Alessandro Zummo <a.zummo@towertech.it>
fs/Kconfig | 25 +++++++++++++++++++++++++
fs/jffs2/nodelist.h | 8 +++-----
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/83-nas100d-memory-fixup.patch b/packages/linux/ixp4xx-kernel/2.6.16/83-nas100d-memory-fixup.patch
new file mode 100644
index 0000000000..3d5e20c6cf
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/83-nas100d-memory-fixup.patch
@@ -0,0 +1,66 @@
+Include a fixup machine start function in nas100d-setup.c to handle
+the command line and memory setup parameters which are not specifiable
+in the boot loader.
+
+TODO: We must check what is actually passed by the stock
+RedBoot on the nas100d.
+
+Signed-off-by: John Bowler <jbowler@acm.org>
+
+ arch/arm/mach-ixp4xx/nas100d-setup.c | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-03-09 02:13:15.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-03-09 02:13:54.000000000 +0100
+@@ -19,6 +19,7 @@
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+ #include <asm/mach/flash.h>
++#include <asm/setup.h>
+
+ static struct flash_platform_data nas100d_flash_data = {
+ .map_name = "cfi_probe",
+@@ -125,11 +126,43 @@ static void __init nas100d_init(void)
+ platform_add_devices(nas100d_devices, ARRAY_SIZE(nas100d_devices));
+ }
+
++/*
++ * NAS100D bootstrap may pass in parameters, but we zap the mem
++ * settings to be safe (the box always has 64MByte at 0). The
++ * passed in command line can override this default, we prepend
++ * to the config'ed default.
++ *
++ * NOTE: the startup sequence is:
++ * 1) Call the machine fixup
++ * 2) Parse the ATAG list, the ATAG_CMDLINE is copied in
++ * to default_command_line which is the value of *from
++ * 3) Parse the command line in *from (*not*
++ * default_command_line unless they are the same!)
++ *
++ * Setting mi->nr_banks causes (2) to 'squash' (set to ATAG_NONE)
++ * any ATAG_MEM tags, but mem= command line options cause nr_banks
++ * to be reset to 0 (on the first mem=)
++ */
++
++static void __init nas100d_fixup(struct machine_desc *desc,
++ struct tag *tags, char **cmdline, struct meminfo *mi)
++{
++ /* The NAS100D has one bank of 64MByte memory.
++ * NOTE: setting nr_banks != 0 causes kernel/setup.c to remove
++ * the mem tags from the tag list. We need do nothing here!
++ */
++ mi->nr_banks = 1;
++ mi->bank[0].start = 0;
++ mi->bank[0].size = (64*1024*1024);
++ mi->bank[0].node = PHYS_TO_NID(0);
++}
++
+ MACHINE_START(NAS100D, "Iomega NAS 100d")
+ /* Maintainer: www.nslu2-linux.org */
+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC,
+ .boot_params = 0x00000100,
++ .fixup = nas100d_fixup,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/84-nas100d-cmdline.patch b/packages/linux/ixp4xx-kernel/2.6.16/84-nas100d-cmdline.patch
new file mode 100644
index 0000000000..2f02f5622d
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/84-nas100d-cmdline.patch
@@ -0,0 +1,31 @@
+---
+ arch/arm/mach-ixp4xx/nas100d-setup.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-03-09 02:14:52.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-03-09 02:16:43.000000000 +0100
+@@ -144,6 +144,12 @@ static void __init nas100d_init(void)
+ * to be reset to 0 (on the first mem=)
+ */
+
++static char nas100d_command_line[] __initdata =
++ "root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc "
++ "rtc-pcf8563.probe=0,0x51 "
++ CONFIG_CMDLINE;
++
++
+ static void __init nas100d_fixup(struct machine_desc *desc,
+ struct tag *tags, char **cmdline, struct meminfo *mi)
+ {
+@@ -155,6 +161,11 @@ static void __init nas100d_fixup(struct
+ mi->bank[0].start = 0;
+ mi->bank[0].size = (64*1024*1024);
+ mi->bank[0].node = PHYS_TO_NID(0);
++
++ /* A command line in the ATAG list will override this one,
++ * as is intended.
++ */
++ strlcpy(*cmdline, nas100d_command_line, COMMAND_LINE_SIZE);
+ }
+
+ MACHINE_START(NAS100D, "Iomega NAS 100d")
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/92-nas100d-maclist.patch b/packages/linux/ixp4xx-kernel/2.6.16/92-nas100d-maclist.patch
index 4c89a4bcce..c10a77354b 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/92-nas100d-maclist.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/92-nas100d-maclist.patch
@@ -14,7 +14,7 @@
NAS 100d device. For more information on this platform,
--- linux-nslu2.orig/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-02-06 20:37:01.000000000 +0100
+++ linux-nslu2/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-02-06 22:35:26.000000000 +0100
-@@ -15,11 +15,14 @@
+@@ -15,12 +15,15 @@
#include <linux/kernel.h>
#include <linux/serial.h>
#include <linux/serial_8250.h>
@@ -23,6 +23,7 @@
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
+ #include <asm/setup.h>
+#include <net/maclist.h>
+
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/92-nslu2-maclist.patch b/packages/linux/ixp4xx-kernel/2.6.16/92-nslu2-maclist.patch
index 298a3d92bb..a280a49e6f 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/92-nslu2-maclist.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/92-nslu2-maclist.patch
@@ -1,22 +1,9 @@
- arch/arm/mach-ixp4xx/Kconfig | 4 +--
+ arch/arm/mach-ixp4xx/Kconfig | 1
arch/arm/mach-ixp4xx/nslu2-setup.c | 39 +++++++++++++++++++++++++++++++++++++
- 2 files changed, 41 insertions(+), 2 deletions(-)
+ 2 files changed, 40 insertions(+)
---- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/Kconfig 2006-02-23 18:30:58.000000000 +0100
-+++ linux-ixp4xx/arch/arm/mach-ixp4xx/Kconfig 2006-02-23 18:31:00.000000000 +0100
-@@ -11,8 +11,8 @@ comment "IXP4xx Platforms"
- # This entry is placed on top because otherwise it would have
- # been shown as a submenu.
- config MACH_NSLU2
-- bool
-- prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715)
-+ bool "NSLU2"
-+ select MACLIST
- help
- Say 'Y' here if you want your kernel to support Linksys's
- NSLU2 NAS device. For more information on this platform,
---- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-23 18:30:49.000000000 +0100
-+++ linux-ixp4xx/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-23 18:31:00.000000000 +0100
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-03-08 10:33:10.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-03-08 10:33:14.000000000 +0100
@@ -16,11 +16,14 @@
#include <linux/kernel.h>
#include <linux/serial.h>
@@ -82,3 +69,13 @@
ixp4xx_sys_init();
nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/Kconfig 2006-03-08 10:33:12.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/Kconfig 2006-03-08 10:33:22.000000000 +0100
+@@ -11,6 +11,7 @@ comment "IXP4xx Platforms"
+ config MACH_NSLU2
+ bool
+ prompt "Linksys NSLU2"
++ select MACLIST
+ help
+ Say 'Y' here if you want your kernel to support Linksys's
+ NSLU2 NAS device. For more information on this platform,
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/951-ixp4xx-leds-cpu-activity.patch b/packages/linux/ixp4xx-kernel/2.6.16/951-ixp4xx-leds-cpu-activity.patch
index 92b03836d4..6d4c53026c 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/951-ixp4xx-leds-cpu-activity.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/951-ixp4xx-leds-cpu-activity.patch
@@ -21,9 +21,9 @@ Signed-off-by: John Bowler <jbowler@acm.org>
#include <linux/init.h>
#include <linux/cpu.h>
+#include <linux/leds.h>
+ #include <linux/elfcore.h>
#include <asm/leds.h>
- #include <asm/processor.h>
@@ -80,6 +81,12 @@ void (*pm_power_off)(void);
EXPORT_SYMBOL(pm_power_off);
@@ -580,7 +580,7 @@ Signed-off-by: John Bowler <jbowler@acm.org>
+MODULE_LICENSE("MIT");
--- linux-ixp4xx.orig/include/linux/leds.h 2006-02-21 00:54:33.000000000 +0100
+++ linux-ixp4xx/include/linux/leds.h 2006-02-21 01:03:33.000000000 +0100
-@@ -95,3 +95,12 @@ void led_trigger_event(struct led_trigge
+@@ -102,4 +102,13 @@ void led_trigger_event(struct led_trigge
#define led_trigger_event(x, y) do {} while(0)
#endif
@@ -593,3 +593,4 @@ Signed-off-by: John Bowler <jbowler@acm.org>
+ * the arch core to be able to use LEDS_TRIGGER_CPU_ACTIVITY
+ */
+extern void (*leds_idle)(int is_idle);
+ #endif /* __LINUX_LEDS_H_INCLUDED */
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101.patch
new file mode 100644
index 0000000000..77df5ace86
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101.patch
@@ -0,0 +1,457 @@
+ arch/arm/mach-ixp4xx/Kconfig | 8 +
+ arch/arm/mach-ixp4xx/Makefile | 2
+ arch/arm/mach-ixp4xx/ds101-pci.c | 66 +++++++++
+ arch/arm/mach-ixp4xx/ds101-setup.c | 234 +++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-ixp4xx/ds101.h | 88 ++++++++++++
+ include/asm-arm/arch-ixp4xx/hardware.h | 1
+ include/asm-arm/arch-ixp4xx/irqs.h | 8 +
+ 7 files changed, 406 insertions(+), 1 deletion(-)
+
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/ds101.h 2006-03-08 08:41:31.000000000 +0100
+@@ -0,0 +1,88 @@
++/*
++ * DS101 platform specific definitions
++ *
++ * Author: Øyvind Repvik <nail@nslu2-linux.org>
++ *
++ * based on ixdp425.h:
++ * Copyright 2004 (c) MontaVista, Software, Inc.
++ *
++ * This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without any
++ * warranty of any kind, whether express or implied.
++ */
++
++#ifndef __ASM_ARCH_HARDWARE_H__
++#error "Do not include this directly, instead #include <asm/hardware.h>"
++#endif
++
++#define DS101_SCL_PIN DS101_GPIO0
++#define DS101_SDA_PIN DS101_GPIO1
++#define DS101_GPIO_BUZZ DS101_GPIO2
++#define DS101_POWER_LED DS101_GPIO3
++#define DS101_USBCOPYB_GPIO DS101_GPIO4 /* shared */
++#define DS101_USBCOPY_SOLID_LED DS101_GPIO4 /* shared */
++#define DS101_USBCOPY_BLINK_LED DS101_GPIO5
++/* GPIO6 is unknown */
++#define DS101_POWEROFF_GPIO DS101_GPIO7
++#define DS101_POWERB_GPIO DS101_GPIO8
++/*#define DS101_PCI_INTC_PIN DS101_GPIO9
++#define DS101_PCI_INTB_PIN DS101_GPIO10
++#define DS101_PCI_INTA_PIN DS101_GPIO11
++*/
++#define DS101_RESETB_GPIO DS101_GPIO12
++#define DS101_STATUSOK_LED DS101_GPIO14
++#define DS101_STATUSBAD_LED DS101_GPIO15
++
++#define DS101_PCI_MAX_DEV 2
++#define DS101_PCI_IRQ_LINES 3
++
++#define DS101_POWERB_IRQ IRQ_IXP4XX_GPIO8
++#define DS101_RESETB_IRQ IRQ_IXP4XX_GPIO12
++#define DS101_USBCOPYB_IRQ IRQ_IXP4XX_GPIO4
++
++/* XXX use IXP4XX_GPIO_XX directly */
++#define DS101_GPIO_IN IXP4XX_GPIO_IN
++#define DS101_GPIO_OUT IXP4XX_GPIO_OUT
++#define DS101_GPIO_HIGH 1
++#define DS101_GPIO_LOW 0
++
++/* GPIO */
++
++#define DS101_GPIO0 0
++#define DS101_GPIO1 1
++#define DS101_GPIO2 2
++#define DS101_GPIO3 3
++#define DS101_GPIO4 4
++#define DS101_GPIO5 5
++#define DS101_GPIO6 6
++#define DS101_GPIO7 7
++#define DS101_GPIO8 8
++#define DS101_GPIO9 9
++#define DS101_GPIO10 10
++#define DS101_GPIO11 11
++#define DS101_GPIO12 12
++#define DS101_GPIO13 13
++#define DS101_GPIO14 14
++#define DS101_GPIO15 15
++
++/* Stuff needed to setup the IXP expansion
++ * bus on the DS101
++ */
++
++#define DS101_EXP_RECOVERY_T(x) (((x) & 15) << 16)
++#define DS101_EXP_HOLD_T(x) (((x) & 3) << 20)
++#define DS101_EXP_STROBE_T(x) (((x) & 15) << 22)
++#define DS101_EXP_SETUP_T(x) (((x) & 3) << 26)
++#define DS101_EXP_ADDR_T(x) (((x) & 3) << 28)
++
++#define DS101_EXP_SZ_16M (15 << 10)
++#define DS101_EXP_WR_EN (1 << 1)
++#define DS101_EXP_BYTE_RD16 (1 << 6)
++#define DS101_EXP_CS_EN (1 << 31)
++
++/* XXX nope. use the _EXP_ macros in the -setup.c */
++#define DS101_EXP_CS0_INIT (DS101_EXP_ADDR_T(1) | \
++ DS101_EXP_SETUP_T(1) | DS101_EXP_STROBE_T(1) | \
++ DS101_EXP_HOLD_T(1) | DS101_EXP_RECOVERY_T(1)| \
++ DS101_EXP_SZ_16M | DS101_EXP_WR_EN | \
++ DS101_EXP_BYTE_RD16 | DS101_EXP_CS_EN)
+--- linux-ixp4xx.orig/include/asm-arm/arch-ixp4xx/hardware.h 2006-03-08 08:41:02.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/hardware.h 2006-03-08 08:41:31.000000000 +0100
+@@ -47,5 +47,6 @@ extern unsigned int processor_id;
+ #include "nslu2.h"
+ #include "nas100d.h"
+ #include "dsmg600.h"
++#include "ds101.h"
+
+ #endif /* _ASM_ARCH_HARDWARE_H */
+--- linux-ixp4xx.orig/include/asm-arm/arch-ixp4xx/irqs.h 2006-03-08 08:41:02.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/irqs.h 2006-03-08 08:41:31.000000000 +0100
+@@ -110,6 +110,14 @@
+ #define IRQ_NAS100D_PCI_INTE IRQ_IXP4XX_GPIO7
+
+ /*
++ * Synology DS101 board IRQs
++ */
++
++#define IRQ_DS101_PCI_INTA IRQ_IXP4XX_GPIO11
++#define IRQ_DS101_PCI_INTB IRQ_IXP4XX_GPIO10
++#define IRQ_DS101_PCI_INTC IRQ_IXP4XX_GPIO9
++
++/*
+ * D-Link DSM-G600 board IRQs
+ */
+ #define IRQ_DSMG600_PCI_INTA IRQ_IXP4XX_GPIO11
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/ds101-pci.c 2006-03-08 08:41:31.000000000 +0100
+@@ -0,0 +1,66 @@
++/*
++ * DS101 board-level PCI initialization
++ *
++ * based on ixdp425-pci.c:
++ * Copyright (C) 2002 Intel Corporation.
++ * Copyright (C) 2003-2004 MontaVista Software, Inc.
++ *
++ * Maintainer: http://www.nslu2-linux.org/
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++
++#include <asm/mach/pci.h>
++#include <asm/mach-types.h>
++
++void __init ds101_pci_preinit(void)
++{
++ set_irq_type(IRQ_DS101_PCI_INTA, IRQT_LOW);
++ set_irq_type(IRQ_DS101_PCI_INTB, IRQT_LOW);
++ set_irq_type(IRQ_DS101_PCI_INTC, IRQT_LOW);
++
++ ixp4xx_pci_preinit();
++}
++
++static int __init ds101_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
++{
++ static int pci_irq_table[DS101_PCI_MAX_DEV][DS101_PCI_IRQ_LINES] =
++ {
++ { IRQ_DS101_PCI_INTA, -1, -1 },
++ { IRQ_DS101_PCI_INTB, IRQ_DS101_PCI_INTB, IRQ_DS101_PCI_INTC },
++ };
++
++ int irq = -1;
++
++ if (slot >= 1 && slot <= DS101_PCI_MAX_DEV &&
++ pin >= 1 && pin <= DS101_PCI_IRQ_LINES)
++ irq = pci_irq_table[slot-1][pin-1];
++
++ return irq;
++}
++
++struct hw_pci __initdata ds101_pci = {
++ .nr_controllers = 1,
++ .preinit = ds101_pci_preinit,
++ .swizzle = pci_std_swizzle,
++ .setup = ixp4xx_setup,
++ .scan = ixp4xx_scan_bus,
++ .map_irq = ds101_map_irq,
++};
++
++int __init ds101_pci_init(void)
++{
++ if (machine_is_ds101())
++ pci_common_init(&ds101_pci);
++
++ return 0;
++}
++
++subsys_initcall(ds101_pci_init);
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/ds101-setup.c 2006-03-08 08:41:31.000000000 +0100
+@@ -0,0 +1,234 @@
++/*
++ * Synology DS101 board setup
++ *
++ * based ixdp425-setup.c:
++ * Copyright (C) 2003-2004 MontaVista Software, Inc.
++ *
++ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ * Author: Rod Whitby <rod@whitby.id.au>
++ * Author: OEyvind Repvik <oyvind@repvik.org>
++ * Maintainers: http://www.nslu2-linux.org/
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/serial.h>
++#include <linux/serial_8250.h>
++#include <linux/leds.h>
++#include <linux/pci.h>
++
++#include <asm/setup.h>
++#include <asm/memory.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/flash.h>
++
++#ifdef CONFIG_LEDS_CLASS
++static struct resource ds101_led_resources[] = {
++ {
++ .name = "power",
++ .start = DS101_POWER_LED,
++ .end = DS101_POWER_LED,
++ .flags = IXP4XX_GPIO_LOW,
++ },
++ {
++ .name = "usbcopy-solid",
++ .start = DS101_USBCOPY_SOLID_LED,
++ .end = DS101_USBCOPY_SOLID_LED,
++ .flags = IXP4XX_GPIO_LOW,
++ },
++ {
++ .name = "usbcopy-blink",
++ .start = DS101_USBCOPY_BLINK_LED,
++ .end = DS101_USBCOPY_BLINK_LED,
++ .flags = IXP4XX_GPIO_LOW,
++ },
++ {
++ .name = "status-ready",
++ .start = DS101_STATUSOK_LED,
++ .end = DS101_STATUSOK_LED,
++ .flags = IXP4XX_GPIO_LOW,
++ },
++ {
++ .name = "status-error",
++ .start = DS101_STATUSBAD_LED,
++ .start = DS101_STATUSBAD_LED,
++ .flags = IXP4XX_GPIO_LOW,
++ }
++};
++
++
++static struct platform_device ds101_leds = {
++ .name = "IXP4XX-GPIO-LED",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(ds101_led_resources),
++ .resource = ds101_led_resources,
++};
++#endif
++
++static struct ixp4xx_i2c_pins ds101_i2c_gpio_pins = {
++ .sda_pin = DS101_SDA_PIN,
++ .scl_pin = DS101_SCL_PIN,
++};
++
++static struct platform_device ds101_i2c_controller = {
++ .name = "IXP4XX-I2C",
++ .id = 0,
++ .dev.platform_data = &ds101_i2c_gpio_pins,
++ .num_resources = 0,
++};
++
++static struct platform_device ds101_beeper = {
++ .name = "ixp4xx-beeper",
++ .id = DS101_GPIO_BUZZ,
++ .num_resources = 0,
++};
++
++static struct resource ds101_uart_resources[] = {
++ {
++ .start = IXP4XX_UART1_BASE_PHYS,
++ .end = IXP4XX_UART1_BASE_PHYS + 0x0fff,
++ .flags = IORESOURCE_MEM,
++ },
++ {
++ .start = IXP4XX_UART2_BASE_PHYS,
++ .end = IXP4XX_UART2_BASE_PHYS + 0x0fff,
++ .flags = IORESOURCE_MEM,
++ }
++};
++
++static struct plat_serial8250_port ds101_uart_data[] = {
++ {
++ .mapbase = IXP4XX_UART1_BASE_PHYS,
++ .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,
++ .irq = IRQ_IXP4XX_UART1,
++ .flags = UPF_BOOT_AUTOCONF,
++ .iotype = UPIO_MEM,
++ .regshift = 2,
++ .uartclk = IXP4XX_UART_XTAL,
++ },
++ {
++ .mapbase = IXP4XX_UART2_BASE_PHYS,
++ .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
++ .irq = IRQ_IXP4XX_UART2,
++ .flags = UPF_BOOT_AUTOCONF,
++ .iotype = UPIO_MEM,
++ .regshift = 2,
++ .uartclk = IXP4XX_UART_XTAL,
++ },
++ { }
++};
++
++static struct platform_device ds101_uart = {
++ .name = "serial8250",
++ .id = PLAT8250_DEV_PLATFORM,
++ .dev.platform_data = ds101_uart_data,
++ .num_resources = 2,
++ .resource = ds101_uart_resources,
++};
++
++static struct platform_device *ds101_devices[] __initdata = {
++ &ds101_i2c_controller,
++ &ds101_beeper,
++};
++
++static void ds101_power_off(void)
++{
++ /* Simple, but effective */
++ gpio_line_set(DS101_POWEROFF_GPIO, IXP4XX_GPIO_LOW);
++}
++
++static void ds101_gpio_setup(void)
++{
++ /* Set up buzzer */
++ gpio_line_config(DS101_GPIO_BUZZ, DS101_GPIO_OUT);
++ gpio_line_set(DS101_GPIO_BUZZ, DS101_GPIO_LOW);
++
++ /* Set up power led */
++ gpio_line_config(DS101_POWER_LED, DS101_GPIO_OUT);
++ gpio_line_set(DS101_POWER_LED, DS101_GPIO_LOW);
++
++ /* Poweroff */
++ gpio_line_config(DS101_POWEROFF_GPIO, DS101_GPIO_OUT);
++ gpio_line_set(DS101_POWEROFF_GPIO, DS101_GPIO_HIGH);
++
++ /* Status leds */
++ *IXP4XX_GPIO_GPCLKR = 0;
++
++ /* XXX can't the leds subsystem take care of those? */
++ gpio_line_config(DS101_STATUSOK_LED, DS101_GPIO_OUT);
++ gpio_line_config(DS101_STATUSBAD_LED, DS101_GPIO_OUT);
++ gpio_line_set(DS101_STATUSOK_LED, DS101_GPIO_HIGH);
++ gpio_line_set(DS101_STATUSBAD_LED, DS101_GPIO_LOW);
++};
++
++static void ds101_cs0_setup(void)
++{
++ /* XXX don't use macro */
++ *IXP4XX_EXP_CS0 = DS101_EXP_CS0_INIT;
++};
++
++static void __init ds101_init(void)
++{
++ ixp4xx_sys_init();
++
++ ds101_cs0_setup(); /* Needed for DoC support */
++ ds101_gpio_setup();
++ pm_power_off = ds101_power_off;
++
++ platform_add_devices(ds101_devices, ARRAY_SIZE(ds101_devices));
++
++ /* This is only useful on a modified machine, but it is valuable
++ * to have it first in order to see debug messages, and so that
++ * it does *not* get removed if platform_add_devices fails!
++ */
++ (void)platform_device_register(&ds101_uart);
++
++#ifdef CONFIG_LEDS_CLASS
++ /* We don't care whether or not this works. */
++ (void)platform_device_register(&ds101_leds);
++#endif
++}
++
++/*
++ * DS101 bootstrap may pass in parameters, but we zap the mem
++ * settings to be safe (DS101 always has 64MByte at 0, DS101J has
++ * 32MB). The passed in command line can override this default, we
++ * prepend to the config'ed default.
++ *
++ * NOTE: the startup sequence is:
++ * 1) Call the machine fixup
++ * 2) Parse the ATAG list, the ATAG_CMDLINE is copied in
++ * to default_command_line which is the value of *from
++ * 3) Parse the command line in *from (*not*
++ * default_command_line unless they are the same!)
++ *
++ * Setting mi->nr_banks causes (2) to 'squash' (set to ATAG_NONE)
++ * any ATAG_MEM tags, but mem= command line options cause nr_banks
++ * to be reset to 0 (on the first mem=)
++ */
++
++static void __init ds101_fixup(struct machine_desc *desc,
++ struct tag *tags, char **cmdline, struct meminfo *mi)
++{
++ /* The DS101 has one bank of 64MByte memory.
++ * NOTE: setting nr_banks != 0 causes kernel/setup.c to remove
++ * the mem tags from the tag list. We need do nothing here!
++ */
++ mi->nr_banks = 1;
++ mi->bank[0].start = 0;
++ mi->bank[0].size = (64*1024*1024);
++ mi->bank[0].node = PHYS_TO_NID(0);
++}
++
++MACHINE_START(DS101, "Synology DiskStation DS101")
++ /* Maintainer: www.nslu2-linux.org */
++ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
++ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC,
++ .boot_params = 0x00000100,
++ .fixup = ds101_fixup,
++ .map_io = ixp4xx_map_io,
++ .init_irq = ixp4xx_init_irq,
++ .timer = &ixp4xx_timer,
++ .init_machine = ds101_init,
++MACHINE_END
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/Kconfig 2006-03-08 08:41:02.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/Kconfig 2006-03-08 08:41:31.000000000 +0100
+@@ -93,6 +93,14 @@ config MACH_DSMG600
+ DSM-G600 device. For more information on this platform,
+ see http://www.nslu2-linux.org/
+
++config MACH_DS101
++ bool
++ prompt "Synology DS101"
++ help
++ Say 'Y' here if you want your kernel to support Synology's
++ DiskStation DS101(j) device. For more information on this
++ platform see http://www.nslu2-linux.org/wiki/DS101/HomePage
++
+ #
+ # Avila and IXDP share the same source for now. Will change in future
+ #
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/Makefile 2006-03-08 08:41:02.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/Makefile 2006-03-08 08:41:31.000000000 +0100
+@@ -11,4 +11,4 @@ obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-
+ obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
+ obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o
+ obj-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o dsmg600-setup.o
+-
++obj-$(CONFIG_MACH_DS101) += ds101-pci.o ds101-setup.o
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/copypage-xscale.patch b/packages/linux/ixp4xx-kernel/2.6.16/copypage-xscale.patch
new file mode 100644
index 0000000000..b73d219708
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/copypage-xscale.patch
@@ -0,0 +1,21 @@
+*** linux-2.6.16/arch/arm/mm/copypage-xscale.c- Mon Mar 27 19:10:25 2006
+--- linux-2.6.16/arch/arm/mm/copypage-xscale.c Sun Mar 26 19:32:53 2006
+***************
+*** 15,20 ****
+--- 15,21 ----
+ */
+ #include <linux/init.h>
+ #include <linux/mm.h>
++ #include <linux/module.h>
+
+ #include <asm/page.h>
+ #include <asm/pgtable.h>
+***************
+*** 129,131 ****
+--- 130,135 ----
+ .cpu_clear_user_page = xscale_mc_clear_user_page,
+ .cpu_copy_user_page = xscale_mc_copy_user_page,
+ };
++
++ EXPORT_SYMBOL(xscale_mc_clear_user_page);
++ EXPORT_SYMBOL(xscale_mc_copy_user_page);
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/defconfig b/packages/linux/ixp4xx-kernel/2.6.16/defconfig
index 3213ff8c1c..8548ed54b0 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/defconfig
+++ b/packages/linux/ixp4xx-kernel/2.6.16/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc4-git7
-# Fri Feb 24 22:40:39 2006
+# Linux kernel version: 2.6.16
+# Tue Mar 21 13:57:18 2006
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -13,6 +13,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
#
@@ -57,7 +58,7 @@ CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
@@ -131,7 +132,7 @@ CONFIG_ARCH_IXDP4XX=y
#
# IXP4xx Options
#
-CONFIG_IXP4XX_INDIRECT_PCI=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
#
# Processor Type
@@ -165,7 +166,7 @@ CONFIG_PCI=y
#
# Kernel Features
#
-# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@@ -577,11 +578,11 @@ CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=4
CONFIG_BLK_DEV_RAM_SIZE=10240
-CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
-# CONFIG_ATA_OVER_ETH is not set
+CONFIG_ATA_OVER_ETH=m
#
# ATA/ATAPI/MFM/RLL support
@@ -592,14 +593,14 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
# 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_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SR_VENDOR is not set
@@ -618,13 +619,13 @@ CONFIG_SCSI_MULTI_LUN=y
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
-# CONFIG_SCSI_ISCSI_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
# CONFIG_SCSI_SAS_ATTRS is not set
#
# SCSI low-level drivers
#
-# CONFIG_ISCSI_TCP is not set
+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
@@ -636,7 +637,7 @@ CONFIG_SCSI_MULTI_LUN=y
# 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=m
# CONFIG_SCSI_SATA_AHCI is not set
# CONFIG_SCSI_SATA_SVW is not set
# CONFIG_SCSI_ATA_PIIX is not set
@@ -654,7 +655,7 @@ CONFIG_SCSI_SATA=y
# CONFIG_SCSI_SATA_VITESSE is not set
# CONFIG_SCSI_PATA_ALI is not set
# CONFIG_SCSI_PATA_AMD is not set
-CONFIG_SCSI_PATA_ARTOP=y
+CONFIG_SCSI_PATA_ARTOP=m
# CONFIG_SCSI_PATA_ATIIXP is not set
# CONFIG_SCSI_PATA_CMD64X is not set
# CONFIG_SCSI_PATA_CS5520 is not set
@@ -685,7 +686,7 @@ CONFIG_SCSI_PATA_ARTOP=y
# CONFIG_SCSI_PATA_TRIFLEX is not set
# CONFIG_SCSI_PATA_VIA is not set
# CONFIG_SCSI_PATA_WINBOND is not set
-CONFIG_SCSI_PATA_IXP4XX=y
+CONFIG_SCSI_PATA_IXP4XX=m
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
@@ -860,11 +861,11 @@ CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
-# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
@@ -890,7 +891,7 @@ CONFIG_INPUT=y
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
-CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set
#
@@ -915,7 +916,21 @@ CONFIG_INPUT_IXP4XX_BEEPER=y
#
# CONFIG_VT is not set
CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
#
# Serial drivers
@@ -933,8 +948,7 @@ CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=16
+# CONFIG_LEGACY_PTYS is not set
#
# IPMI
@@ -951,7 +965,7 @@ CONFIG_WATCHDOG=y
# Watchdog Device Drivers
#
# CONFIG_SOFT_WATCHDOG is not set
-CONFIG_IXP4XX_WATCHDOG=y
+CONFIG_IXP4XX_WATCHDOG=m
#
# PCI-based Watchdog Cards
@@ -1042,6 +1056,18 @@ CONFIG_SENSORS_EEPROM=y
# CONFIG_SPI_MASTER is not set
#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=m
+# CONFIG_W1_MATROX is not set
+CONFIG_W1_DS9490=m
+CONFIG_W1_DS9490_BRIDGE=m
+CONFIG_W1_THERM=m
+CONFIG_W1_SMEM=m
+CONFIG_W1_DS2433=m
+CONFIG_W1_DS2433_CRC=y
+
+#
# Hardware Monitoring support
#
CONFIG_HWMON=m
@@ -1276,14 +1302,14 @@ CONFIG_USB_DEVICEFS=y
#
# USB Host Controller Drivers
#
-CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y
-# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_UHCI_HCD=y
+CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set
#
@@ -1300,7 +1326,7 @@ 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 is not set
# CONFIG_USB_STORAGE_FREECOM is not set
@@ -1311,7 +1337,7 @@ CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
-CONFIG_USB_LIBUSUAL=y
+# CONFIG_USB_LIBUSUAL is not set
#
# USB Input Devices
@@ -1731,7 +1757,7 @@ CONFIG_CRYPTO_TEST=m
# Library routines
#
CONFIG_CRC_CCITT=m
-# CONFIG_CRC16 is not set
+CONFIG_CRC16=m
CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch b/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch
index 4eaab3070e..c0146b6fe4 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch
@@ -1,35 +1,63 @@
-Add the foundations of a new LEDs subsystem. This patch adds a class
-which presents LED devices within sysfs and allows their brightness to
-be controlled.
-Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+From: Richard Purdie <rpurdie@rpsys.net>
+
+Add the foundations of a new LEDs subsystem. This patch adds a class which
+presents LED devices within sysfs and allows their brightness to be
+controlled.
+Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+Cc: Russell King <rmk@arm.linux.org.uk>
+Cc: Greg KH <greg@kroah.com>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
---
+
arch/arm/Kconfig | 2
- arch/arm/mach-pxa/corgi.c | 10 +
- arch/arm/mach-pxa/spitz.c | 10 +
+ arch/arm/mach-pxa/corgi.c | 9 +
+ arch/arm/mach-pxa/spitz.c | 9 +
arch/arm/mach-pxa/tosa.c | 9 +
drivers/Kconfig | 2
drivers/Makefile | 1
- drivers/ide/ide-disk.c | 17 ++
+ drivers/ide/ide-disk.c | 22 +++
drivers/leds/Kconfig | 70 +++++++++++
drivers/leds/Makefile | 15 ++
- drivers/leds/led-class.c | 164 +++++++++++++++++++++++++++
- drivers/leds/led-core.c | 24 ++++
- drivers/leds/led-triggers.c | 236 ++++++++++++++++++++++++++++++++++++++++
+ drivers/leds/led-class.c | 174 +++++++++++++++++++++++++++++
+ drivers/leds/led-core.c | 25 ++++
+ drivers/leds/led-triggers.c | 239 ++++++++++++++++++++++++++++++++++++++++
drivers/leds/leds-corgi.c | 121 ++++++++++++++++++++
- drivers/leds/leds-ixp4xx-gpio.c | 209 +++++++++++++++++++++++++++++++++++
- drivers/leds/leds-locomo.c | 91 +++++++++++++++
- drivers/leds/leds-spitz.c | 125 +++++++++++++++++++++
- drivers/leds/leds-tosa.c | 123 ++++++++++++++++++++
- drivers/leds/leds.h | 36 ++++++
- drivers/leds/ledtrig-timer.c | 205 ++++++++++++++++++++++++++++++++++
+ drivers/leds/leds-ixp4xx-gpio.c | 215 +++++++++++++++++++++++++++++++++++
+ drivers/leds/leds-locomo.c | 95 +++++++++++++++
+ drivers/leds/leds-spitz.c | 125 ++++++++++++++++++++
+ drivers/leds/leds-tosa.c | 131 +++++++++++++++++++++
+ drivers/leds/leds.h | 45 +++++++
+ drivers/leds/ledtrig-timer.c | 174 +++++++++++++++++++++++++++++
drivers/mtd/nand/nand_base.c | 26 ++++
- include/linux/leds.h | 97 ++++++++++++++++
- 21 files changed, 1590 insertions(+), 3 deletions(-)
+ include/linux/leds.h | 105 +++++++++++++++++
+ 21 files changed, 1610 insertions(+), 4 deletions(-)
+--- linux-ixp4xx.orig/arch/arm/Kconfig 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/arch/arm/Kconfig 2006-03-07 22:59:04.000000000 +0100
+@@ -807,6 +807,8 @@ source "drivers/misc/Kconfig"
+
+ source "drivers/mfd/Kconfig"
+
++source "drivers/leds/Kconfig"
++
+ source "drivers/media/Kconfig"
+
+ source "drivers/video/Kconfig"
+--- linux-ixp4xx.orig/drivers/Kconfig 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/drivers/Kconfig 2006-03-07 22:59:04.000000000 +0100
+@@ -64,6 +64,8 @@ source "drivers/usb/Kconfig"
+
+ source "drivers/mmc/Kconfig"
+
++source "drivers/leds/Kconfig"
++
+ source "drivers/infiniband/Kconfig"
+
+ source "drivers/sn/Kconfig"
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/Kconfig 2006-02-23 18:17:40.000000000 +0100
++++ linux-ixp4xx/drivers/leds/Kconfig 2006-03-07 22:59:04.000000000 +0100
@@ -0,0 +1,70 @@
+
+menu "LED devices"
@@ -102,197 +130,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+endmenu
+
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/Makefile 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,15 @@
-+
-+# LED Core
-+obj-$(CONFIG_NEW_LEDS) += led-core.o
-+obj-$(CONFIG_LEDS_CLASS) += led-class.o
-+obj-$(CONFIG_LEDS_TRIGGERS) += led-triggers.o
-+
-+# LED Platform Drivers
-+obj-$(CONFIG_LEDS_CORGI) += leds-corgi.o
-+obj-$(CONFIG_LEDS_LOCOMO) += leds-locomo.o
-+obj-$(CONFIG_LEDS_SPITZ) += leds-spitz.o
-+obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o
-+obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o
-+
-+# LED Triggers
-+obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/include/linux/leds.h 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,97 @@
-+/*
-+ * Driver model for leds and led triggers
-+ *
-+ * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu>
-+ * Copyright (C) 2005 Richard Purdie <rpurdie@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+struct device;
-+struct class_device;
-+/*
-+ * LED Core
-+ */
-+
-+enum led_brightness {
-+ LED_OFF = 0,
-+ LED_HALF = 127,
-+ LED_FULL = 255,
-+};
-+
-+struct led_classdev {
-+ const char *name;
-+ int brightness;
-+ int flags;
-+#define LED_SUSPENDED (1 << 0)
-+
-+ /* A function to set the brightness of the led */
-+ void (*brightness_set)(struct led_classdev *led_cdev, enum led_brightness brightness);
-+
-+ struct class_device *class_dev;
-+ /* LED Device linked list */
-+ struct list_head node;
-+
-+ /* Trigger data */
-+ char *default_trigger;
-+#ifdef CONFIG_LEDS_TRIGGERS
-+ struct led_trigger *trigger;
-+ struct list_head trig_list;
-+ void *trigger_data;
-+#endif
-+
-+ /* This protects the data in this structure */
-+ rwlock_t lock;
-+};
-+
-+extern int led_classdev_register(struct device *parent, struct led_classdev *led_cdev);
-+extern void led_classdev_unregister(struct led_classdev *led_cdev);
-+extern void led_classdev_suspend(struct led_classdev *led_cdev);
-+extern void led_classdev_resume(struct led_classdev *led_cdev);
-+
-+
-+/*
-+ * LED Triggers
-+ */
-+#ifdef CONFIG_LEDS_TRIGGERS
-+
-+#define TRIG_NAME_MAX 50
-+
-+struct led_trigger {
-+ /* Trigger Properties */
-+ const char *name;
-+ void (*activate)(struct led_classdev *led_cdev);
-+ void (*deactivate)(struct led_classdev *led_cdev);
-+
-+ /* LEDs under control by this trigger (for simple triggers) */
-+ rwlock_t leddev_list_lock;
-+ struct list_head led_cdevs;
-+
-+ /* Link to next registered trigger */
-+ struct list_head next_trig;
-+};
-+
-+/* Registration functions for complex triggers */
-+int led_trigger_register(struct led_trigger *trigger);
-+void led_trigger_unregister(struct led_trigger *trigger);
-+
-+/* Registration functions for simple triggers */
-+#define INIT_LED_TRIGGER(x) static struct led_trigger *x;
-+#define INIT_LED_TRIGGER_GLOBAL(x) struct led_trigger *x;
-+void led_trigger_register_simple(const char *name, struct led_trigger **trigger);
-+void led_trigger_unregister_simple(struct led_trigger *trigger);
-+void led_trigger_event(struct led_trigger *trigger, enum led_brightness event);
-+
-+#else
-+
-+/* Triggers aren't active - null macros */
-+#define INIT_LED_TRIGGER(x)
-+#define INIT_LED_TRIGGER_GLOBAL(x)
-+#define led_trigger_register_simple(x, y) do {} while(0)
-+#define led_trigger_unregister_simple(x) do {} while(0)
-+#define led_trigger_event(x, y) do {} while(0)
-+
-+#endif
---- linux-ixp4xx.orig/arch/arm/Kconfig 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/arch/arm/Kconfig 2006-02-23 18:17:40.000000000 +0100
-@@ -807,6 +807,8 @@ source "drivers/misc/Kconfig"
-
- source "drivers/mfd/Kconfig"
-
-+source "drivers/leds/Kconfig"
-+
- source "drivers/media/Kconfig"
-
- source "drivers/video/Kconfig"
---- linux-ixp4xx.orig/drivers/Makefile 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/drivers/Makefile 2006-02-23 18:17:40.000000000 +0100
-@@ -68,6 +68,7 @@ obj-$(CONFIG_MCA) += mca/
- obj-$(CONFIG_EISA) += eisa/
- obj-$(CONFIG_CPU_FREQ) += cpufreq/
- obj-$(CONFIG_MMC) += mmc/
-+obj-$(CONFIG_NEW_LEDS) += leds/
- obj-$(CONFIG_INFINIBAND) += infiniband/
- obj-$(CONFIG_SGI_SN) += sn/
- obj-y += firmware/
---- linux-ixp4xx.orig/drivers/Kconfig 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/drivers/Kconfig 2006-02-23 18:17:40.000000000 +0100
-@@ -64,6 +64,8 @@ source "drivers/usb/Kconfig"
-
- source "drivers/mmc/Kconfig"
-
-+source "drivers/leds/Kconfig"
-+
- source "drivers/infiniband/Kconfig"
-
- source "drivers/sn/Kconfig"
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/leds.h 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,36 @@
-+/*
-+ * LED Core
-+ *
-+ * Copyright 2005 Openedhand Ltd.
-+ *
-+ * Author: Richard Purdie <rpurdie@openedhand.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+/* led_cdev->lock must be held as write */
-+static inline void led_set_brightness(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ if (value > LED_FULL)
-+ value = LED_FULL;
-+ led_cdev->brightness = value;
-+ if (!(led_cdev->flags & LED_SUSPENDED))
-+ led_cdev->brightness_set(led_cdev, value);
-+}
-+
-+extern rwlock_t leds_list_lock;
-+extern struct list_head leds_list;
-+
-+#ifdef CONFIG_LEDS_TRIGGERS
-+void led_trigger_set_default(struct led_classdev *led_cdev);
-+void led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trigger);
-+#else
-+#define led_trigger_set_default(x) do {} while(0)
-+#define led_trigger_set(x, y) do {} while(0)
-+#endif
-+
-+ssize_t led_trigger_store(struct class_device *dev, const char *buf, size_t count);
-+ssize_t led_trigger_show(struct class_device *dev, char *buf);
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/led-class.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,164 @@
++++ linux-ixp4xx/drivers/leds/led-class.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,174 @@
+/*
+ * LED Class Core
+ *
@@ -321,7 +160,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+
+static ssize_t led_brightness_show(struct class_device *dev, char *buf)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
+ ssize_t ret = 0;
+
+ /* no lock needed for this */
@@ -331,13 +170,14 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ return ret;
+}
+
-+static ssize_t led_brightness_store(struct class_device *dev, const char *buf, size_t size)
++static ssize_t led_brightness_store(struct class_device *dev,
++ const char *buf, size_t size)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
+ ssize_t ret = -EINVAL;
+ char *after;
-+
+ unsigned long state = simple_strtoul(buf, &after, 10);
++
+ if (after - buf > 0) {
+ ret = after - buf;
+ write_lock(&led_cdev->lock);
@@ -348,8 +188,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ return ret;
+}
+
-+static CLASS_DEVICE_ATTR(brightness, 0644, led_brightness_show, led_brightness_store);
-+
++static CLASS_DEVICE_ATTR(brightness, 0644, led_brightness_show,
++ led_brightness_store);
+#ifdef CONFIG_LEDS_TRIGGERS
+static CLASS_DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store);
+#endif
@@ -365,6 +205,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ led_cdev->brightness_set(led_cdev, 0);
+ write_unlock(&led_cdev->lock);
+}
++EXPORT_SYMBOL_GPL(led_classdev_suspend);
+
+/**
+ * led_classdev_resume - resume an led_classdev.
@@ -377,6 +218,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ led_cdev->brightness_set(led_cdev, led_cdev->brightness);
+ write_unlock(&led_cdev->lock);
+}
++EXPORT_SYMBOL_GPL(led_classdev_resume);
+
+/**
+ * led_classdev_register - register a new object of led_classdev class.
@@ -385,30 +227,38 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ */
+int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)
+{
-+ led_cdev->class_dev = class_device_create(leds_class, NULL, 0, parent, "%s", led_cdev->name);
++ led_cdev->class_dev = class_device_create(leds_class, NULL, 0,
++ parent, "%s", led_cdev->name);
+ if (unlikely(IS_ERR(led_cdev->class_dev)))
+ return PTR_ERR(led_cdev->class_dev);
+
+ rwlock_init(&led_cdev->lock);
-+ led_cdev->class_dev->class_data = led_cdev;
++ class_set_devdata(led_cdev->class_dev, led_cdev);
+
+ /* register the attributes */
-+ class_device_create_file(led_cdev->class_dev, &class_device_attr_brightness);
-+#ifdef CONFIG_LEDS_TRIGGERS
-+ class_device_create_file(led_cdev->class_dev, &class_device_attr_trigger);
-+#endif
++ class_device_create_file(led_cdev->class_dev,
++ &class_device_attr_brightness);
+
+ /* add to the list of leds */
+ write_lock(&leds_list_lock);
+ list_add_tail(&led_cdev->node, &leds_list);
+ write_unlock(&leds_list_lock);
+
++#ifdef CONFIG_LEDS_TRIGGERS
++ rwlock_init(&led_cdev->trigger_lock);
++
+ led_trigger_set_default(led_cdev);
+
-+ printk(KERN_INFO "Registered led device: %s\n", led_cdev->class_dev->class_id);
++ class_device_create_file(led_cdev->class_dev,
++ &class_device_attr_trigger);
++#endif
++
++ printk(KERN_INFO "Registered led device: %s\n",
++ led_cdev->class_dev->class_id);
+
+ return 0;
+}
++EXPORT_SYMBOL_GPL(led_classdev_register);
+
+/**
+ * led_classdev_unregister - unregisters a object of led_properties class.
@@ -418,13 +268,16 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ */
+void led_classdev_unregister(struct led_classdev *led_cdev)
+{
-+ class_device_remove_file(led_cdev->class_dev, &class_device_attr_brightness);
++ class_device_remove_file(led_cdev->class_dev,
++ &class_device_attr_brightness);
+#ifdef CONFIG_LEDS_TRIGGERS
-+ class_device_remove_file(led_cdev->class_dev, &class_device_attr_trigger);
-+#endif
-+
++ class_device_remove_file(led_cdev->class_dev,
++ &class_device_attr_trigger);
++ write_lock(&led_cdev->trigger_lock);
+ if (led_cdev->trigger)
+ led_trigger_set(led_cdev, NULL);
++ write_unlock(&led_cdev->trigger_lock);
++#endif
+
+ class_device_unregister(led_cdev->class_dev);
+
@@ -432,10 +285,6 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ list_del(&led_cdev->node);
+ write_unlock(&leds_list_lock);
+}
-+
-+EXPORT_SYMBOL_GPL(led_classdev_suspend);
-+EXPORT_SYMBOL_GPL(led_classdev_resume);
-+EXPORT_SYMBOL_GPL(led_classdev_register);
+EXPORT_SYMBOL_GPL(led_classdev_unregister);
+
+static int __init leds_init(void)
@@ -458,8 +307,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("LED Class Interface");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/led-core.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,24 @@
++++ linux-ixp4xx/drivers/leds/led-core.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,25 @@
+/*
+ * LED Class Core
+ *
@@ -484,9 +333,194 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+LIST_HEAD(leds_list);
+
+EXPORT_SYMBOL_GPL(leds_list);
++EXPORT_SYMBOL_GPL(leds_list_lock);
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/leds/leds.h 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,45 @@
++/*
++ * LED Core
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <rpurdie@openedhand.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++#ifndef __LEDS_H_INCLUDED
++#define __LEDS_H_INCLUDED
++
++#include <linux/leds.h>
++
++/* led_cdev->lock must be held as write */
++static inline void led_set_brightness(struct led_classdev *led_cdev,
++ enum led_brightness value)
++{
++ if (value > LED_FULL)
++ value = LED_FULL;
++ led_cdev->brightness = value;
++ if (!(led_cdev->flags & LED_SUSPENDED))
++ led_cdev->brightness_set(led_cdev, value);
++}
++
++extern rwlock_t leds_list_lock;
++extern struct list_head leds_list;
++
++#ifdef CONFIG_LEDS_TRIGGERS
++void led_trigger_set_default(struct led_classdev *led_cdev);
++void led_trigger_set(struct led_classdev *led_cdev,
++ struct led_trigger *trigger);
++#else
++#define led_trigger_set_default(x) do {} while(0)
++#define led_trigger_set(x, y) do {} while(0)
++#endif
++
++ssize_t led_trigger_store(struct class_device *dev, const char *buf,
++ size_t count);
++ssize_t led_trigger_show(struct class_device *dev, char *buf);
++
++#endif /* __LEDS_H_INCLUDED */
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/leds/Makefile 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,15 @@
++
++# LED Core
++obj-$(CONFIG_NEW_LEDS) += led-core.o
++obj-$(CONFIG_LEDS_CLASS) += led-class.o
++obj-$(CONFIG_LEDS_TRIGGERS) += led-triggers.o
++
++# LED Platform Drivers
++obj-$(CONFIG_LEDS_CORGI) += leds-corgi.o
++obj-$(CONFIG_LEDS_LOCOMO) += leds-locomo.o
++obj-$(CONFIG_LEDS_SPITZ) += leds-spitz.o
++obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o
++obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o
++
++# LED Triggers
++obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+--- linux-ixp4xx.orig/drivers/Makefile 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/drivers/Makefile 2006-03-07 22:59:04.000000000 +0100
+@@ -68,6 +68,7 @@ obj-$(CONFIG_MCA) += mca/
+ obj-$(CONFIG_EISA) += eisa/
+ obj-$(CONFIG_CPU_FREQ) += cpufreq/
+ obj-$(CONFIG_MMC) += mmc/
++obj-$(CONFIG_NEW_LEDS) += leds/
+ obj-$(CONFIG_INFINIBAND) += infiniband/
+ obj-$(CONFIG_SGI_SN) += sn/
+ obj-y += firmware/
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/led-triggers.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,236 @@
++++ linux-ixp4xx/include/linux/leds.h 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,105 @@
++/*
++ * Driver model for leds and led triggers
++ *
++ * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu>
++ * Copyright (C) 2005 Richard Purdie <rpurdie@openedhand.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++#ifndef __LINUX_LEDS_H_INCLUDED
++#define __LINUX_LEDS_H_INCLUDED
++
++struct device;
++struct class_device;
++/*
++ * LED Core
++ */
++
++enum led_brightness {
++ LED_OFF = 0,
++ LED_HALF = 127,
++ LED_FULL = 255,
++};
++
++struct led_classdev {
++ const char *name;
++ int brightness;
++ int flags;
++#define LED_SUSPENDED (1 << 0)
++
++ /* A function to set the brightness of the led */
++ void (*brightness_set)(struct led_classdev *led_cdev,
++ enum led_brightness brightness);
++
++ struct class_device *class_dev;
++ /* LED Device linked list */
++ struct list_head node;
++
++ /* Protects the LED properties data above */
++ rwlock_t lock;
++
++ /* Trigger data */
++ char *default_trigger;
++#ifdef CONFIG_LEDS_TRIGGERS
++ rwlock_t trigger_lock;
++ /* Protects the trigger data below */
++
++ struct led_trigger *trigger;
++ struct list_head trig_list;
++ void *trigger_data;
++#endif
++};
++
++extern int led_classdev_register(struct device *parent,
++ struct led_classdev *led_cdev);
++extern void led_classdev_unregister(struct led_classdev *led_cdev);
++extern void led_classdev_suspend(struct led_classdev *led_cdev);
++extern void led_classdev_resume(struct led_classdev *led_cdev);
++
++/*
++ * LED Triggers
++ */
++#ifdef CONFIG_LEDS_TRIGGERS
++
++#define TRIG_NAME_MAX 50
++
++struct led_trigger {
++ /* Trigger Properties */
++ const char *name;
++ void (*activate)(struct led_classdev *led_cdev);
++ void (*deactivate)(struct led_classdev *led_cdev);
++
++ /* LEDs under control by this trigger (for simple triggers) */
++ rwlock_t leddev_list_lock;
++ struct list_head led_cdevs;
++
++ /* Link to next registered trigger */
++ struct list_head next_trig;
++};
++
++/* Registration functions for complex triggers */
++int led_trigger_register(struct led_trigger *trigger);
++void led_trigger_unregister(struct led_trigger *trigger);
++
++/* Registration functions for simple triggers */
++#define DEFINE_LED_TRIGGER(x) static struct led_trigger *x;
++#define DEFINE_LED_TRIGGER_GLOBAL(x) struct led_trigger *x;
++void led_trigger_register_simple(const char *name,
++ struct led_trigger **trigger);
++void led_trigger_unregister_simple(struct led_trigger *trigger);
++void led_trigger_event(struct led_trigger *trigger, enum led_brightness event);
++
++#else
++
++/* Triggers aren't active - null macros */
++#define DEFINE_LED_TRIGGER(x)
++#define DEFINE_LED_TRIGGER_GLOBAL(x)
++#define led_trigger_register_simple(x, y) do {} while(0)
++#define led_trigger_unregister_simple(x) do {} while(0)
++#define led_trigger_event(x, y) do {} while(0)
++
++#endif
++#endif /* __LINUX_LEDS_H_INCLUDED */
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/leds/led-triggers.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,239 @@
+/*
+ * LED Triggers Core
+ *
@@ -512,12 +546,16 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+#include <linux/leds.h>
+#include "leds.h"
+
++/*
++ * Nests outside led_cdev->lock and led_cdev->trigger_lock
++ */
+static rwlock_t triggers_list_lock = RW_LOCK_UNLOCKED;
+static LIST_HEAD(trigger_list);
+
-+ssize_t led_trigger_store(struct class_device *dev, const char *buf, size_t count)
++ssize_t led_trigger_store(struct class_device *dev, const char *buf,
++ size_t count)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
+ char trigger_name[TRIG_NAME_MAX];
+ struct led_trigger *trig;
+ size_t len;
@@ -530,18 +568,18 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ trigger_name[len - 1] = '\0';
+
+ if (!strcmp(trigger_name, "none")) {
-+ write_lock(&led_cdev->lock);
++ write_lock(&led_cdev->trigger_lock);
+ led_trigger_set(led_cdev, NULL);
-+ write_unlock(&led_cdev->lock);
++ write_unlock(&led_cdev->trigger_lock);
+ return count;
+ }
+
+ read_lock(&triggers_list_lock);
+ list_for_each_entry(trig, &trigger_list, next_trig) {
+ if (!strcmp(trigger_name, trig->name)) {
-+ write_lock(&led_cdev->lock);
++ write_lock(&led_cdev->trigger_lock);
+ led_trigger_set(led_cdev, trig);
-+ write_unlock(&led_cdev->lock);
++ write_unlock(&led_cdev->trigger_lock);
+
+ read_unlock(&triggers_list_lock);
+ return count;
@@ -555,32 +593,34 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+
+ssize_t led_trigger_show(struct class_device *dev, char *buf)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
+ struct led_trigger *trig;
+ int len = 0;
+
-+ read_lock(&led_cdev->lock);
++ read_lock(&triggers_list_lock);
++ read_lock(&led_cdev->trigger_lock);
+
+ if (!led_cdev->trigger)
+ len += sprintf(buf+len, "[none] ");
+ else
+ len += sprintf(buf+len, "none ");
+
-+ read_lock(&triggers_list_lock);
+ list_for_each_entry(trig, &trigger_list, next_trig) {
-+ if (led_cdev->trigger && !strcmp(led_cdev->trigger->name, trig->name))
++ if (led_cdev->trigger && !strcmp(led_cdev->trigger->name,
++ trig->name))
+ len += sprintf(buf+len, "[%s] ", trig->name);
+ else
+ len += sprintf(buf+len, "%s ", trig->name);
+ }
++ read_unlock(&led_cdev->trigger_lock);
+ read_unlock(&triggers_list_lock);
-+ read_unlock(&led_cdev->lock);
+
+ len += sprintf(len+buf, "\n");
+ return len;
+}
+
-+void led_trigger_event(struct led_trigger *trigger, enum led_brightness brightness)
++void led_trigger_event(struct led_trigger *trigger,
++ enum led_brightness brightness)
+{
+ struct list_head *entry;
+
@@ -599,7 +639,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ read_unlock(&trigger->leddev_list_lock);
+}
+
-+/* Caller must ensure led_cdev->lock held for write */
++/* Caller must ensure led_cdev->trigger_lock held */
+void led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trigger)
+{
+ /* Remove any existing trigger */
@@ -609,7 +649,6 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ write_unlock(&led_cdev->trigger->leddev_list_lock);
+ if (led_cdev->trigger->deactivate)
+ led_cdev->trigger->deactivate(led_cdev);
-+
+ }
+ if (trigger) {
+ write_lock(&trigger->leddev_list_lock);
@@ -628,14 +667,14 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ if (!led_cdev->default_trigger)
+ return;
+
-+ write_lock(&led_cdev->lock);
+ read_lock(&triggers_list_lock);
++ write_lock(&led_cdev->trigger_lock);
+ list_for_each_entry(trig, &trigger_list, next_trig) {
+ if (!strcmp(led_cdev->default_trigger, trig->name))
+ led_trigger_set(led_cdev, trig);
+ }
++ write_unlock(&led_cdev->trigger_lock);
+ read_unlock(&triggers_list_lock);
-+ write_unlock(&led_cdev->lock);
+}
+
+int led_trigger_register(struct led_trigger *trigger)
@@ -647,26 +686,26 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+
+ /* Add to the list of led triggers */
+ write_lock(&triggers_list_lock);
-+ list_add_tail(&trigger->next_trig, &trigger_list);
++ list_add_tail(&trigger->next_trig, &trigger_list);
+ write_unlock(&triggers_list_lock);
+
+ /* Register with any LEDs that have this as a default trigger */
-+ read_lock(&leds_list);
++ read_lock(&leds_list_lock);
+ list_for_each_entry(led_cdev, &leds_list, node) {
-+ write_lock(&led_cdev->lock);
++ write_lock(&led_cdev->trigger_lock);
+ if (!led_cdev->trigger && led_cdev->default_trigger &&
-+ !strcmp(led_cdev->default_trigger, trigger->name))
++ !strcmp(led_cdev->default_trigger, trigger->name))
+ led_trigger_set(led_cdev, trigger);
-+ write_unlock(&led_cdev->lock);
++ write_unlock(&led_cdev->trigger_lock);
+ }
-+ read_unlock(&leds_list);
++ read_unlock(&leds_list_lock);
+
+ return 0;
+}
+
+void led_trigger_register_simple(const char *name, struct led_trigger **tp)
+{
-+ struct led_trigger *trigger;
++ struct led_trigger *trigger;
+
+ trigger = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
+
@@ -677,25 +716,24 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ *tp = trigger;
+}
+
-+
+void led_trigger_unregister(struct led_trigger *trigger)
+{
+ struct led_classdev *led_cdev;
+
+ /* Remove from the list of led triggers */
+ write_lock(&triggers_list_lock);
-+ list_del(&trigger->next_trig);
++ list_del(&trigger->next_trig);
+ write_unlock(&triggers_list_lock);
+
+ /* Remove anyone actively using this trigger */
-+ read_lock(&leds_list);
++ read_lock(&leds_list_lock);
+ list_for_each_entry(led_cdev, &leds_list, node) {
-+ write_lock(&led_cdev->lock);
++ write_lock(&led_cdev->trigger_lock);
+ if (led_cdev->trigger == trigger)
+ led_trigger_set(led_cdev, NULL);
-+ write_unlock(&led_cdev->lock);
++ write_unlock(&led_cdev->trigger_lock);
+ }
-+ read_unlock(&leds_list);
++ read_unlock(&leds_list_lock);
+}
+
+void led_trigger_unregister_simple(struct led_trigger *trigger)
@@ -722,10 +760,9 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_AUTHOR("Richard Purdie");
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("LED Triggers Core");
-+
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/ledtrig-timer.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,205 @@
++++ linux-ixp4xx/drivers/leds/ledtrig-timer.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,174 @@
+/*
+ * LED Kernel Timer Trigger
+ *
@@ -752,10 +789,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+#include "leds.h"
+
+struct timer_trig_data {
-+ unsigned long duty; /* duty cycle, as a percentage */
-+ unsigned long frequency; /* frequency of blinking, in Hz */
-+ unsigned long delay_on; /* milliseconds on */
-+ unsigned long delay_off; /* milliseconds off */
++ unsigned long delay_on; /* milliseconds on */
++ unsigned long delay_off; /* milliseconds off */
+ struct timer_list timer;
+};
+
@@ -766,9 +801,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ unsigned long brightness = LED_OFF;
+ unsigned long delay = timer_data->delay_off;
+
-+ write_lock(&led_cdev->lock);
-+
-+ if (!timer_data->frequency) {
++ if (!timer_data->delay_on || !timer_data->delay_off) {
++ write_lock(&led_cdev->lock);
+ led_set_brightness(led_cdev, LED_OFF);
+ write_unlock(&led_cdev->lock);
+ return;
@@ -779,104 +813,73 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ delay = timer_data->delay_on;
+ }
+
++ write_lock(&led_cdev->lock);
+ led_set_brightness(led_cdev, brightness);
++ write_unlock(&led_cdev->lock);
+
+ mod_timer(&timer_data->timer, jiffies + msecs_to_jiffies(delay));
-+ write_unlock(&led_cdev->lock);
+}
+
-+/* led_cdev write lock needs to be held */
-+static int led_timer_setdata(struct led_classdev *led_cdev, unsigned long duty, unsigned long frequency)
++static ssize_t led_delay_on_show(struct class_device *dev, char *buf)
+{
++ struct led_classdev *led_cdev = class_get_devdata(dev);
+ struct timer_trig_data *timer_data = led_cdev->trigger_data;
+
-+ if (frequency > 500)
-+ return -EINVAL;
-+
-+ if (duty > 100)
-+ return -EINVAL;
-+
-+ timer_data->duty = duty;
-+ timer_data->frequency = frequency;
-+ if (frequency != 0) {
-+ timer_data->delay_on = duty * 1000 / 50 / frequency / 2;
-+ timer_data->delay_off = (100 - duty) * 1000 / 50 / frequency / 2;
-+ }
-+
-+ mod_timer(&timer_data->timer, jiffies + 1);
-+
-+ return 0;
-+}
-+
-+static ssize_t led_duty_show(struct class_device *dev, char *buf)
-+{
-+ struct led_classdev *led_cdev = dev->class_data;
-+ struct timer_trig_data *timer_data;
-+
-+ read_lock(&led_cdev->lock);
-+ timer_data = led_cdev->trigger_data;
-+ sprintf(buf, "%lu\n", timer_data->duty);
-+ read_unlock(&led_cdev->lock);
++ sprintf(buf, "%lu\n", timer_data->delay_on);
+
+ return strlen(buf) + 1;
+}
+
-+static ssize_t led_duty_store(struct class_device *dev, const char *buf, size_t size)
++static ssize_t led_delay_on_store(struct class_device *dev, const char *buf,
++ size_t size)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
-+ struct timer_trig_data *timer_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
++ struct timer_trig_data *timer_data = led_cdev->trigger_data;
+ int ret = -EINVAL;
+ char *after;
-+
+ unsigned long state = simple_strtoul(buf, &after, 10);
++
+ if (after - buf > 0) {
-+ write_lock(&led_cdev->lock);
-+ timer_data = led_cdev->trigger_data;
-+ ret = led_timer_setdata(led_cdev, state, timer_data->frequency);
-+ if (!ret)
-+ ret = after - buf;
-+ write_unlock(&led_cdev->lock);
++ timer_data->delay_on = state;
++ mod_timer(&timer_data->timer, jiffies + 1);
++ ret = after - buf;
+ }
+
+ return ret;
+}
+
-+
-+static ssize_t led_frequency_show(struct class_device *dev, char *buf)
++static ssize_t led_delay_off_show(struct class_device *dev, char *buf)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
-+ struct timer_trig_data *timer_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
++ struct timer_trig_data *timer_data = led_cdev->trigger_data;
+
-+ read_lock(&led_cdev->lock);
-+ timer_data = led_cdev->trigger_data;
-+ sprintf(buf, "%lu\n", timer_data->frequency);
-+ read_unlock(&led_cdev->lock);
++ sprintf(buf, "%lu\n", timer_data->delay_off);
+
+ return strlen(buf) + 1;
+}
+
-+static ssize_t led_frequency_store(struct class_device *dev, const char *buf, size_t size)
++static ssize_t led_delay_off_store(struct class_device *dev, const char *buf,
++ size_t size)
+{
-+ struct led_classdev *led_cdev = dev->class_data;
-+ struct timer_trig_data *timer_data;
++ struct led_classdev *led_cdev = class_get_devdata(dev);
++ struct timer_trig_data *timer_data = led_cdev->trigger_data;
+ int ret = -EINVAL;
+ char *after;
-+
+ unsigned long state = simple_strtoul(buf, &after, 10);
++
+ if (after - buf > 0) {
-+ write_lock(&led_cdev->lock);
-+ timer_data = led_cdev->trigger_data;
-+ ret = led_timer_setdata(led_cdev, timer_data->duty, state);
-+ if (!ret)
-+ ret = after - buf;
-+ write_unlock(&led_cdev->lock);
++ timer_data->delay_off = state;
++ mod_timer(&timer_data->timer, jiffies + 1);
++ ret = after - buf;
+ }
+
+ return ret;
+}
+
-+static CLASS_DEVICE_ATTR(duty, 0644, led_duty_show, led_duty_store);
-+static CLASS_DEVICE_ATTR(frequency, 0644, led_frequency_show, led_frequency_store);
++static CLASS_DEVICE_ATTR(delay_on, 0644, led_delay_on_show,
++ led_delay_on_store);
++static CLASS_DEVICE_ATTR(delay_off, 0644, led_delay_off_show,
++ led_delay_off_store);
+
+static void timer_trig_activate(struct led_classdev *led_cdev)
+{
@@ -892,18 +895,21 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ timer_data->timer.function = led_timer_function;
+ timer_data->timer.data = (unsigned long) led_cdev;
+
-+ timer_data->duty = 50;
-+
-+ class_device_create_file(led_cdev->class_dev, &class_device_attr_duty);
-+ class_device_create_file(led_cdev->class_dev, &class_device_attr_frequency);
++ class_device_create_file(led_cdev->class_dev,
++ &class_device_attr_delay_on);
++ class_device_create_file(led_cdev->class_dev,
++ &class_device_attr_delay_off);
+}
+
+static void timer_trig_deactivate(struct led_classdev *led_cdev)
+{
+ struct timer_trig_data *timer_data = led_cdev->trigger_data;
++
+ if (timer_data) {
-+ class_device_remove_file(led_cdev->class_dev, &class_device_attr_duty);
-+ class_device_remove_file(led_cdev->class_dev, &class_device_attr_frequency);
++ class_device_remove_file(led_cdev->class_dev,
++ &class_device_attr_delay_on);
++ class_device_remove_file(led_cdev->class_dev,
++ &class_device_attr_delay_off);
+ del_timer_sync(&timer_data->timer);
+ kfree(timer_data);
+ }
@@ -920,7 +926,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ return led_trigger_register(&timer_led_trigger);
+}
+
-+static void __exit timer_trig_exit (void)
++static void __exit timer_trig_exit(void)
+{
+ led_trigger_unregister(&timer_led_trigger);
+}
@@ -931,9 +937,9 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
+MODULE_DESCRIPTION("Timer LED trigger");
+MODULE_LICENSE("GPL");
---- linux-ixp4xx.orig/arch/arm/mach-pxa/corgi.c 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/arch/arm/mach-pxa/corgi.c 2006-02-23 18:17:40.000000000 +0100
-@@ -165,6 +165,15 @@ static struct platform_device corgikbd_d
+--- linux-ixp4xx.orig/arch/arm/mach-pxa/corgi.c 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-pxa/corgi.c 2006-03-07 22:59:04.000000000 +0100
+@@ -165,6 +165,14 @@ static struct platform_device corgikbd_d
/*
@@ -944,12 +950,11 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ .id = -1,
+};
+
-+
+/*
* Corgi Touch Screen Device
*/
static struct resource corgits_resources[] = {
-@@ -298,6 +307,7 @@ static struct platform_device *devices[]
+@@ -298,6 +306,7 @@ static struct platform_device *devices[]
&corgikbd_device,
&corgibl_device,
&corgits_device,
@@ -957,9 +962,9 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
};
static void __init corgi_init(void)
---- linux-ixp4xx.orig/arch/arm/mach-pxa/spitz.c 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/arch/arm/mach-pxa/spitz.c 2006-02-23 18:17:40.000000000 +0100
-@@ -243,6 +243,15 @@ static struct platform_device spitzkbd_d
+--- linux-ixp4xx.orig/arch/arm/mach-pxa/spitz.c 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-pxa/spitz.c 2006-03-07 22:59:04.000000000 +0100
+@@ -243,6 +243,14 @@ static struct platform_device spitzkbd_d
/*
@@ -970,12 +975,11 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ .id = -1,
+};
+
-+
+/*
* Spitz Touch Screen Device
*/
static struct resource spitzts_resources[] = {
-@@ -419,6 +428,7 @@ static struct platform_device *devices[]
+@@ -419,6 +427,7 @@ static struct platform_device *devices[]
&spitzkbd_device,
&spitzts_device,
&spitzbl_device,
@@ -984,7 +988,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
static void __init common_init(void)
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/leds-corgi.c 2006-02-23 18:17:40.000000000 +0100
++++ linux-ixp4xx/drivers/leds/leds-corgi.c 2006-03-07 22:59:04.000000000 +0100
@@ -0,0 +1,121 @@
+/*
+ * LED Triggers Core
@@ -1091,12 +1095,12 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ },
+};
+
-+static int __devinit corgiled_init(void)
++static int __init corgiled_init(void)
+{
+ return platform_driver_register(&corgiled_driver);
+}
+
-+static void corgiled_exit(void)
++static void __exit corgiled_exit(void)
+{
+ platform_driver_unregister(&corgiled_driver);
+}
@@ -1108,7 +1112,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_DESCRIPTION("Corgi LED driver");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/leds-spitz.c 2006-02-23 18:17:40.000000000 +0100
++++ linux-ixp4xx/drivers/leds/leds-spitz.c 2006-03-07 22:59:04.000000000 +0100
@@ -0,0 +1,125 @@
+/*
+ * LED Triggers Core
@@ -1219,12 +1223,12 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ },
+};
+
-+static int __devinit spitzled_init(void)
++static int __init spitzled_init(void)
+{
+ return platform_driver_register(&spitzled_driver);
+}
+
-+static void spitzled_exit(void)
++static void __exit spitzled_exit(void)
+{
+ platform_driver_unregister(&spitzled_driver);
+}
@@ -1236,8 +1240,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_DESCRIPTION("Spitz LED driver");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/leds-locomo.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,91 @@
++++ linux-ixp4xx/drivers/leds/leds-locomo.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,95 @@
+/*
+ * linux/drivers/leds/locomo.c
+ *
@@ -1257,7 +1261,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+#include <asm/hardware.h>
+#include <asm/hardware/locomo.h>
+
-+static void locomoled_brightness_set(struct led_classdev *led_cdev, enum led_brightness value, int offset)
++static void locomoled_brightness_set(struct led_classdev *led_cdev,
++ enum led_brightness value, int offset)
+{
+ struct locomo_dev *locomo_dev = LOCOMO_DEV(led_cdev->class_dev->dev);
+ unsigned long flags;
@@ -1270,12 +1275,14 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ local_irq_restore(flags);
+}
+
-+static void locomoled_brightness_set0(struct led_classdev *led_cdev, enum led_brightness value)
++static void locomoled_brightness_set0(struct led_classdev *led_cdev,
++ enum led_brightness value)
+{
+ locomoled_brightness_set(led_cdev, value, LOCOMO_LPT0);
+}
+
-+static void locomoled_brightness_set1(struct led_classdev *led_cdev, enum led_brightness value)
++static void locomoled_brightness_set1(struct led_classdev *led_cdev,
++ enum led_brightness value)
+{
+ locomoled_brightness_set(led_cdev, value, LOCOMO_LPT1);
+}
@@ -1321,7 +1328,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ .remove = locomoled_remove,
+};
+
-+static int __init locomoled_init(void) {
++static int __init locomoled_init(void)
++{
+ return locomo_driver_register(&locomoled_driver);
+}
+module_init(locomoled_init);
@@ -1330,8 +1338,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_DESCRIPTION("Locomo LED driver");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/leds-ixp4xx-gpio.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,209 @@
++++ linux-ixp4xx/drivers/leds/leds-ixp4xx-gpio.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,215 @@
+/*
+ * IXP4XX GPIO driver LED driver
+ *
@@ -1382,7 +1390,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ int flags;
+} ixp4xxgpioled_devices[GPIO_MAX];
+
-+void ixp4xxgpioled_brightness_set(struct led_classdev *pled, enum led_brightness value)
++void ixp4xxgpioled_brightness_set(struct led_classdev *pled,
++ enum led_brightness value)
+{
+ const struct ixp4xxgpioled_device *const ixp4xx_dev =
+ container_of(pled, struct ixp4xxgpioled_device, ancestor);
@@ -1417,15 +1426,18 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ * the function always returns 0 to allow tail call elimination.
+ */
+static int apply_to_all_leds(struct platform_device *pdev,
-+ void (*operation)(struct led_classdev *pled)) {
++ void (*operation)(struct led_classdev *pled))
++{
+ int i;
++
+ for_all_leds(i, pdev)
+ operation(&ixp4xxgpioled_devices[pdev->resource[i].start].ancestor);
+ return 0;
+}
+
+#ifdef CONFIG_PM
-+static int ixp4xxgpioled_suspend(struct platform_device *pdev, pm_message_t state)
++static int ixp4xxgpioled_suspend(struct platform_device *pdev,
++ pm_message_t state)
+{
+ return apply_to_all_leds(pdev, led_classdev_suspend);
+}
@@ -1436,7 +1448,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+}
+#endif
+
-+static void ixp4xxgpioled_remove_one_led(struct led_classdev *pled) {
++static void ixp4xxgpioled_remove_one_led(struct led_classdev *pled)
++{
+ led_classdev_unregister(pled);
+ pled->name = 0;
+}
@@ -1459,6 +1472,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ * isn't copied.
+ */
+ int i;
++
+ for_all_leds(i, pdev) {
+ const u8 gpio_pin = pdev->resource[i].start;
+ int rc;
@@ -1525,12 +1539,12 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ },
+};
+
-+static int __devinit ixp4xxgpioled_init(void)
++static int __init ixp4xxgpioled_init(void)
+{
+ return platform_driver_register(&ixp4xxgpioled_driver);
+}
+
-+static void ixp4xxgpioled_exit(void)
++static void __exit ixp4xxgpioled_exit(void)
+{
+ platform_driver_unregister(&ixp4xxgpioled_driver);
+}
@@ -1540,10 +1554,32 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+
+MODULE_AUTHOR("John Bowler <jbowler@acm.org>");
+MODULE_DESCRIPTION("IXP4XX GPIO LED driver");
-+MODULE_LICENSE("MIT");
++MODULE_LICENSE("Dual MIT/GPL");
+--- linux-ixp4xx.orig/arch/arm/mach-pxa/tosa.c 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-pxa/tosa.c 2006-03-07 22:59:04.000000000 +0100
+@@ -252,10 +252,19 @@ static struct platform_device tosakbd_de
+ .id = -1,
+ };
+
++/*
++ * Tosa LEDs
++ */
++static struct platform_device tosaled_device = {
++ .name = "tosa-led",
++ .id = -1,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &tosascoop_device,
+ &tosascoop_jc_device,
+ &tosakbd_device,
++ &tosaled_device,
+ };
+
+ static void __init tosa_init(void)
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-ixp4xx/drivers/leds/leds-tosa.c 2006-02-23 18:17:40.000000000 +0100
-@@ -0,0 +1,123 @@
++++ linux-ixp4xx/drivers/leds/leds-tosa.c 2006-03-07 22:59:04.000000000 +0100
+@@ -0,0 +1,131 @@
+/*
+ * LED Triggers Core
+ *
@@ -1569,20 +1605,26 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/tosa.h>
+
-+static void tosaled_amber_set(struct led_classdev *led_cdev, enum led_brightness value)
++static void tosaled_amber_set(struct led_classdev *led_cdev,
++ enum led_brightness value)
+{
+ if (value)
-+ set_scoop_gpio(&tosascoop_jc_device.dev, TOSA_SCOOP_JC_CHRG_ERR_LED);
++ set_scoop_gpio(&tosascoop_jc_device.dev,
++ TOSA_SCOOP_JC_CHRG_ERR_LED);
+ else
-+ reset_scoop_gpio(&tosascoop_jc_device.dev, TOSA_SCOOP_JC_CHRG_ERR_LED);
++ reset_scoop_gpio(&tosascoop_jc_device.dev,
++ TOSA_SCOOP_JC_CHRG_ERR_LED);
+}
+
-+static void tosaled_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++static void tosaled_green_set(struct led_classdev *led_cdev,
++ enum led_brightness value)
+{
+ if (value)
-+ set_scoop_gpio(&tosascoop_jc_device.dev, TOSA_SCOOP_JC_NOTE_LED);
++ set_scoop_gpio(&tosascoop_jc_device.dev,
++ TOSA_SCOOP_JC_NOTE_LED);
+ else
-+ reset_scoop_gpio(&tosascoop_jc_device.dev, TOSA_SCOOP_JC_NOTE_LED);
++ reset_scoop_gpio(&tosascoop_jc_device.dev,
++ TOSA_SCOOP_JC_NOTE_LED);
+}
+
+static struct led_classdev tosa_amber_led = {
@@ -1601,7 +1643,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+static int tosaled_suspend(struct platform_device *dev, pm_message_t state)
+{
+#ifdef CONFIG_LEDS_TRIGGERS
-+ if (tosa_amber_led.trigger && strcmp(tosa_amber_led.trigger->name, "sharpsl-charge"))
++ if (tosa_amber_led.trigger && strcmp(tosa_amber_led.trigger->name,
++ "sharpsl-charge"))
+#endif
+ led_classdev_suspend(&tosa_amber_led);
+ led_classdev_suspend(&tosa_green_led);
@@ -1614,6 +1657,9 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ led_classdev_resume(&tosa_green_led);
+ return 0;
+}
++#else
++#define tosaled_suspend NULL
++#define tosaled_resume NULL
+#endif
+
+static int tosaled_probe(struct platform_device *pdev)
@@ -1642,21 +1688,19 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+static struct platform_driver tosaled_driver = {
+ .probe = tosaled_probe,
+ .remove = tosaled_remove,
-+#ifdef CONFIG_PM
+ .suspend = tosaled_suspend,
+ .resume = tosaled_resume,
-+#endif
+ .driver = {
+ .name = "tosa-led",
+ },
+};
+
-+static int __devinit tosaled_init(void)
++static int __init tosaled_init(void)
+{
+ return platform_driver_register(&tosaled_driver);
+}
+
-+static void tosaled_exit(void)
++static void __exit tosaled_exit(void)
+{
+ platform_driver_unregister(&tosaled_driver);
+}
@@ -1667,30 +1711,8 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>");
+MODULE_DESCRIPTION("Tosa LED driver");
+MODULE_LICENSE("GPL");
---- linux-ixp4xx.orig/arch/arm/mach-pxa/tosa.c 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/arch/arm/mach-pxa/tosa.c 2006-02-23 18:17:40.000000000 +0100
-@@ -252,10 +252,19 @@ static struct platform_device tosakbd_de
- .id = -1,
- };
-
-+/*
-+ * Tosa LEDs
-+ */
-+static struct platform_device tosaled_device = {
-+ .name = "tosa-led",
-+ .id = -1,
-+};
-+
- static struct platform_device *devices[] __initdata = {
- &tosascoop_device,
- &tosascoop_jc_device,
- &tosakbd_device,
-+ &tosaled_device,
- };
-
- static void __init tosa_init(void)
---- linux-ixp4xx.orig/drivers/ide/ide-disk.c 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/drivers/ide/ide-disk.c 2006-02-23 18:17:40.000000000 +0100
+--- linux-ixp4xx.orig/drivers/ide/ide-disk.c 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/drivers/ide/ide-disk.c 2006-03-07 22:59:04.000000000 +0100
@@ -60,6 +60,7 @@
#include <linux/genhd.h>
#include <linux/slab.h>
@@ -1703,12 +1725,26 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
static DECLARE_MUTEX(idedisk_ref_sem);
-+INIT_LED_TRIGGER(ide_led_trigger);
++DEFINE_LED_TRIGGER(ide_led_trigger);
+
#define to_ide_disk(obj) container_of(obj, struct ide_disk_obj, kref)
#define ide_disk_g(disk) \
-@@ -312,10 +315,12 @@ static ide_startstop_t ide_do_rw_disk (i
+@@ -298,6 +301,13 @@ static ide_startstop_t __ide_do_rw_disk(
+ }
+ }
+
++static int ide_end_rw_disk(ide_drive_t *drive, int uptodate, int nr_sectors)
++{
++ if (blk_fs_request(HWGROUP(drive)->rq))
++ led_trigger_event(ide_led_trigger, LED_OFF);
++ return ide_end_request(drive, uptodate, nr_sectors);
++}
++
+ /*
+ * 268435455 == 137439 MB or 28bit limit
+ * 320173056 == 163929 MB or 48bit addressing
+@@ -312,10 +322,12 @@ static ide_startstop_t ide_do_rw_disk (i
if (!blk_fs_request(rq)) {
blk_dump_rq_flags(rq, "ide_do_rw_disk - bad command");
@@ -1722,20 +1758,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
pr_debug("%s: %sing: block=%llu, sectors=%lu, buffer=0x%08lx\n",
drive->name, rq_data_dir(rq) == READ ? "read" : "writ",
(unsigned long long)block, rq->nr_sectors,
-@@ -327,6 +332,12 @@ static ide_startstop_t ide_do_rw_disk (i
- return __ide_do_rw_disk(drive, rq, block);
- }
-
-+static int ide_end_rw_disk(ide_drive_t *drive, int uptodate, int nr_sectors)
-+{
-+ led_trigger_event(ide_led_trigger, LED_OFF);
-+ ide_end_request(drive, uptodate, nr_sectors);
-+}
-+
- /*
- * Queries for true maximum capacity of the drive.
- * Returns maximum LBA address (> 0) of the drive, 0 if failed.
-@@ -1063,7 +1074,7 @@ static ide_driver_t idedisk_driver = {
+@@ -1063,7 +1075,7 @@ static ide_driver_t idedisk_driver = {
.media = ide_disk,
.supports_dsc_overlap = 0,
.do_request = ide_do_rw_disk,
@@ -1744,7 +1767,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
.error = __ide_error,
.abort = __ide_abort,
.proc = idedisk_proc,
-@@ -1236,11 +1247,13 @@ failed:
+@@ -1236,12 +1248,16 @@ failed:
static void __exit idedisk_exit (void)
{
@@ -1754,12 +1777,16 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
static int __init idedisk_init(void)
{
-+ led_trigger_register_simple("ide-disk", &ide_led_trigger);
- return driver_register(&idedisk_driver.gen_driver);
+- return driver_register(&idedisk_driver.gen_driver);
++ int ret = driver_register(&idedisk_driver.gen_driver);
++ if (ret >= 0)
++ led_trigger_register_simple("ide-disk", &ide_led_trigger);
++ return ret;
}
---- linux-ixp4xx.orig/drivers/mtd/nand/nand_base.c 2006-02-23 18:13:35.000000000 +0100
-+++ linux-ixp4xx/drivers/mtd/nand/nand_base.c 2006-02-23 18:17:40.000000000 +0100
+ MODULE_ALIAS("ide:*m-disk*");
+--- linux-ixp4xx.orig/drivers/mtd/nand/nand_base.c 2006-03-07 22:57:47.000000000 +0100
++++ linux-ixp4xx/drivers/mtd/nand/nand_base.c 2006-03-07 22:59:04.000000000 +0100
@@ -80,6 +80,7 @@
#include <linux/mtd/compatmac.h>
#include <linux/interrupt.h>
@@ -1772,7 +1799,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
return nand_isbad_bbt (mtd, ofs, allowbbt);
}
-+INIT_LED_TRIGGER(nand_led_trigger);
++DEFINE_LED_TRIGGER(nand_led_trigger);
+
/*
* Wait for the ready pin, after a command
@@ -1822,7 +1849,7 @@ Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
+ return 0;
+}
+
-+static void nand_base_exit(void)
++static void __exit nand_base_exit(void)
+{
+ led_trigger_unregister_simple(nand_led_trigger);
+}
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc6-ide1 b/packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc6-ide1
new file mode 100644
index 0000000000..f35facae1b
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc6-ide1
@@ -0,0 +1,18684 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/arch/i386/pci/fixup.c linux-2.6.16-rc6/arch/i386/pci/fixup.c
+--- linux.vanilla-2.6.16-rc6/arch/i386/pci/fixup.c 2006-03-13 14:00:11.000000000 +0000
++++ linux-2.6.16-rc6/arch/i386/pci/fixup.c 2006-02-01 14:49:17.000000000 +0000
+@@ -74,52 +74,6 @@
+ }
+ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, pci_fixup_ncr53c810);
+
+-static void __devinit pci_fixup_ide_bases(struct pci_dev *d)
+-{
+- int i;
+-
+- /*
+- * PCI IDE controllers use non-standard I/O port decoding, respect it.
+- */
+- if ((d->class >> 8) != PCI_CLASS_STORAGE_IDE)
+- return;
+- DBG("PCI: IDE base address fixup for %s\n", pci_name(d));
+- for(i=0; i<4; i++) {
+- struct resource *r = &d->resource[i];
+- if ((r->start & ~0x80) == 0x374) {
+- r->start |= 2;
+- r->end = r->start;
+- }
+- }
+-}
+-DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases);
+-
+-static void __devinit pci_fixup_ide_trash(struct pci_dev *d)
+-{
+- int i;
+-
+- /*
+- * Runs the fixup only for the first IDE controller
+- * (Shai Fultheim - shai@ftcon.com)
+- */
+- static int called = 0;
+- if (called)
+- return;
+- called = 1;
+-
+- /*
+- * There exist PCI IDE controllers which have utter garbage
+- * in first four base registers. Ignore that.
+- */
+- DBG("PCI: IDE base address trash cleared for %s\n", pci_name(d));
+- for(i=0; i<4; i++)
+- d->resource[i].start = d->resource[i].end = d->resource[i].flags = 0;
+-}
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5513, pci_fixup_ide_trash);
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_10, pci_fixup_ide_trash);
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_11, pci_fixup_ide_trash);
+-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_9, pci_fixup_ide_trash);
+-
+ static void __devinit pci_fixup_latency(struct pci_dev *d)
+ {
+ /*
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/cdrom/cdrom.c linux-2.6.16-rc6/drivers/cdrom/cdrom.c
+--- linux.vanilla-2.6.16-rc6/drivers/cdrom/cdrom.c 2006-03-13 14:00:12.000000000 +0000
++++ linux-2.6.16-rc6/drivers/cdrom/cdrom.c 2006-01-17 16:34:19.000000000 +0000
+@@ -1131,7 +1131,8 @@
+ This ensures that the drive gets unlocked after a mount fails. This
+ is a goto to avoid bloating the driver with redundant code. */
+ clean_up_and_return:
+- cdinfo(CD_OPEN, "open failed.\n");
++ /* Don't log this, its a perfectly normal user occurence */
++ /* cdinfo(CD_WARNING, "open failed.\n"); */
+ if (CDROM_CAN(CDC_LOCK) && cdi->options & CDO_LOCK) {
+ cdo->lock_door(cdi, 0);
+ cdinfo(CD_OPEN, "door unlocked.\n");
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/pci/probe.c linux-2.6.16-rc6/drivers/pci/probe.c
+--- linux.vanilla-2.6.16-rc6/drivers/pci/probe.c 2006-03-13 14:00:13.000000000 +0000
++++ linux-2.6.16-rc6/drivers/pci/probe.c 2006-02-01 15:56:28.000000000 +0000
+@@ -627,6 +627,7 @@
+ static int pci_setup_device(struct pci_dev * dev)
+ {
+ u32 class;
++ u16 cmd;
+
+ sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
+ dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));
+@@ -654,6 +655,31 @@
+ pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
+ pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
+ pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
++
++ /*
++ * Do the ugly legacy mode stuff here rather than broken chip
++ * quirk code. Legacy mode ATA controllers have fixed
++ * addresses. These are not always echoed in BAR0-3, and
++ * BAR0-3 in a few cases contain junk!
++ */
++ if (class == PCI_CLASS_STORAGE_IDE) {
++ u8 progif;
++ pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
++ if ((progif & 5) != 5) {
++ dev->resource[0].start = 0x1F0;
++ dev->resource[0].end = 0x1F7;
++ dev->resource[0].flags = IORESOURCE_IO;
++ dev->resource[1].start = 0x3F6;
++ dev->resource[1].end = 0x3F6;
++ dev->resource[1].flags = IORESOURCE_IO;
++ dev->resource[2].start = 0x170;
++ dev->resource[2].end = 0x177;
++ dev->resource[2].flags = IORESOURCE_IO;
++ dev->resource[3].start = 0x376;
++ dev->resource[3].end = 0x376;
++ dev->resource[3].flags = IORESOURCE_IO;
++ }
++ }
+ break;
+
+ case PCI_HEADER_TYPE_BRIDGE: /* bridge header */
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/ata_generic.c linux-2.6.16-rc6/drivers/scsi/ata_generic.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/ata_generic.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/ata_generic.c 2006-02-16 15:35:41.000000000 +0000
+@@ -0,0 +1,241 @@
++/*
++ * ata_generic.c - Generic PATA/SATA controller driver.
++ * Copyright 2005 Red Hat Inc <alan@redhat.com>, all rights reserved.
++ *
++ * Elements from ide/pci/generic.c
++ * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org>
++ * Portions (C) Copyright 2002 Red Hat Inc <alan@redhat.com>
++ *
++ * May be copied or modified under the terms of the GNU General Public License
++ *
++ * Driver for PCI IDE interfaces implementing the standard bus mastering
++ * interface functionality. This assumes the BIOS did the drive set up and
++ * tuning for us. By default we do not grab all IDE class devices as they
++ * may have other drivers or need fixups to avoid problems. Instead we keep
++ * a default list of stuff without documentation/driver that appears to
++ * work.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include "scsi.h"
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "generic"
++#define DRV_VERSION "0.1"
++
++/*
++ * A generic parallel ATA driver using libata
++ */
++
++static void genpata_phy_reset(struct ata_port *ap)
++{
++ /* We know the BIOS already did the mode work. Don't tempt any
++ one else to "fix" things */
++ ap->cbl = ATA_CBL_PATA80;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * genpata_set_mode - mode setting
++ * @ap: interface to set up
++ *
++ * Use a non standard set_mode function. We don't want to be tuned.
++ * The BIOS configured everything. Our job is not to fiddle. We
++ * read the dma enabled bits from the PCI configuration of the device
++ * and respect them.
++ */
++
++static void genpata_set_mode(struct ata_port *ap)
++{
++ int dma_enabled;
++ int i;
++
++ /* Bits 5 and 6 indicate if DMA is active on master/slave */
++ dma_enabled = inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *dev = &ap->device[i];
++ if (ata_dev_present(dev)) {
++ /* We don't really care */
++ dev->pio_mode = XFER_PIO_0;
++ dev->dma_mode = XFER_MW_DMA_0;
++ /* We do need the right mode information for DMA or PIO
++ and this comes from the current configuration flags */
++ /* FIXME: at some point in the future this should become
++ a library helper which reads the disk modes from the
++ disk as well */
++ if (dma_enabled & (1 << (5 + i))) {
++ dev->xfer_mode = XFER_MW_DMA_0;
++ dev->xfer_shift = ATA_SHIFT_MWDMA;
++ dev->flags &= ~ATA_DFLAG_PIO;
++ } else {
++ dev->xfer_mode = XFER_PIO_0;
++ dev->xfer_shift = ATA_SHIFT_PIO;
++ dev->flags |= ATA_DFLAG_PIO;
++ }
++ }
++ }
++}
++
++static struct scsi_host_template genpata_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations genpata_port_ops = {
++ .set_mode = genpata_set_mode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = genpata_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .data_xfer = ata_pio_data_xfer,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int ide_generic_all; /* Set to claim all devices */
++
++static int __init ide_generic_all_on(char *unused)
++{
++ ide_generic_all = 1;
++ printk(KERN_INFO "ATA generic will claim all unknown PCI IDE class storage controllers.\n");
++ return 1;
++}
++
++__setup("all-generic-ide", ide_generic_all_on);
++
++/**
++ * pata_generic_init - attach generic IDE
++ * @dev: PCI device found
++ * @id: match entry
++ *
++ * Called each time a matching IDE interface is found. We check if the
++ * interface is one we wish to claim and if so we perform any chip
++ * specific hacks then let the ATA layer do the heavy lifting.
++ */
++
++static int pata_generic_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ u16 command;
++ static struct ata_port_info info = {
++ .sht = &genpata_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_IRQ_MASK,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &genpata_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ /* Don't use the generic entry unless instructed to do so */
++ if (id->driver_data == 1 && ide_generic_all == 0)
++ return -ENODEV;
++
++ /* Devices that need care */
++ if (dev->vendor == PCI_VENDOR_ID_UMC &&
++ dev->device == PCI_DEVICE_ID_UMC_UM8886A &&
++ (!(PCI_FUNC(dev->devfn) & 1)))
++ return -ENODEV;
++
++ if (dev->vendor == PCI_VENDOR_ID_OPTI &&
++ dev->device == PCI_DEVICE_ID_OPTI_82C558 &&
++ (!(PCI_FUNC(dev->devfn) & 1)))
++ return -ENODEV;
++
++ /* Don't re-enable devices in generic mode or we will break some
++ motherboards with disabled and unused IDE controllers */
++ pci_read_config_word(dev, PCI_COMMAND, &command);
++ if (!(command & PCI_COMMAND_IO))
++ return -ENODEV;
++
++ if (dev->vendor == PCI_VENDOR_ID_AL)
++ ata_pci_clear_simplex(dev);
++
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id pata_generic[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_SAMURAI_IDE), },
++ { PCI_DEVICE(PCI_VENDOR_ID_HOLTEK, PCI_DEVICE_ID_HOLTEK_6565), },
++ { PCI_DEVICE(PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8673F), },
++ { PCI_DEVICE(PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8886A), },
++ { PCI_DEVICE(PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8886BF), },
++ { PCI_DEVICE(PCI_VENDOR_ID_HINT, PCI_DEVICE_ID_HINT_VXPROII_IDE), },
++ { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C561), },
++ { PCI_DEVICE(PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C558), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2), },
++ /* Must come last. If you add entries adjust this table appropriately */
++ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 1},
++ { 0, },
++};
++
++static struct pci_driver pata_generic_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = pata_generic,
++ .probe = pata_generic_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init pata_generic_init(void)
++{
++ return pci_module_init(&pata_generic_pci_driver);
++}
++
++
++static void __exit pata_generic_exit(void)
++{
++ pci_unregister_driver(&pata_generic_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for generic ATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, pata_generic);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(pata_generic_init);
++module_exit(pata_generic_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/ata_piix.c linux-2.6.16-rc6/drivers/scsi/ata_piix.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/ata_piix.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/ata_piix.c 2006-02-20 20:06:17.000000000 +0000
+@@ -91,9 +91,10 @@
+ #include <linux/device.h>
+ #include <scsi/scsi_host.h>
+ #include <linux/libata.h>
++#include <linux/ata.h>
+
+ #define DRV_NAME "ata_piix"
+-#define DRV_VERSION "1.05"
++#define DRV_VERSION "1.05-ac7"
+
+ enum {
+ PIIX_IOCFG = 0x54, /* IDE I/O configuration register */
+@@ -122,6 +123,17 @@
+ piix4_pata = 2,
+ ich6_sata = 3,
+ ich6_sata_ahci = 4,
++ ich0_pata = 5,
++ ich2_pata = 6,
++ ich3_pata = 7,
++ ich4_pata = 8,
++ cich_pata = 9,
++ piix3_pata = 10,
++ esb_pata = 11,
++ ich_pata = 12,
++ ich6_pata = 13,
++ ich7_pata = 14,
++ esb2_pata = 15,
+
+ PIIX_AHCI_DEVICE = 6,
+ };
+@@ -130,20 +142,69 @@
+ const struct pci_device_id *ent);
+
+ static void piix_pata_phy_reset(struct ata_port *ap);
++static void ich_pata_phy_reset(struct ata_port *ap);
+ static void piix_sata_phy_reset(struct ata_port *ap);
+ static void piix_set_piomode (struct ata_port *ap, struct ata_device *adev);
+ static void piix_set_dmamode (struct ata_port *ap, struct ata_device *adev);
++static void ich_set_dmamode (struct ata_port *ap, struct ata_device *adev);
+
+ static unsigned int in_module_init = 1;
+
+ static const struct pci_device_id piix_pci_tbl[] = {
+ #ifdef ATA_ENABLE_PATA
++#if 0
++ /* Neptune and earlier are simple PIO */
++ /* 430HX and friends. MWDMA */
++ { 0x8086, 0x122e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix3_pata },
++ { 0x8086, 0x1230, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix3_pata },
++ /* Intel PIIX3 */
++ { 0x8086, 0x7010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix3_pata },
++#endif
++ /* Intel PIIX4 for the 430TX/440BX/MX chipset: UDMA 33 */
++ /* Also PIIX4E (fn3 rev 2) and PIIX4M (fn3 rev 3) */
+ { 0x8086, 0x7111, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix4_pata },
+ { 0x8086, 0x24db, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich5_pata },
+ { 0x8086, 0x25a2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich5_pata },
++ /* Intel PIIX4 */
++ { 0x8086, 0x7199, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix4_pata },
++ /* Intel PIIX4 */
++ { 0x8086, 0x7601, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix4_pata },
++ /* Intel PIIX */
++ { 0x8086, 0x84CA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, piix4_pata },
++ /* Intel ICH (i810, i815, i840) UDMA 66*/
++ { 0x8086, 0x2411, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata },
++ /* Intel ICH0 : UDMA 33*/
++ { 0x8086, 0x2421, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich0_pata },
++ /* Intel ICH2M */
++ { 0x8086, 0x244A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich2_pata },
++ /* Intel ICH2 (i810E2, i845, 850, 860) UDMA 100 */
++ { 0x8086, 0x244B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich2_pata },
++ /* Intel ICH3M */
++ { 0x8086, 0x248A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich3_pata },
++ /* Intel ICH3 (E7500/1) UDMA 100 */
++ { 0x8086, 0x248B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich3_pata },
++#if 0
++ { 0x8086, 0x24C1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, dunno_pata },
++#endif
++ /* Intel ICH4 (i845GV, i845E, i852, i855) UDMA 100 */
++ { 0x8086, 0x24CA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich4_pata },
++ { 0x8086, 0x24CB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich4_pata },
++ /* Intel ICH5 */
++ { 0x8086, 0x24DB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich5_pata },
++ /* C-ICH (i810E2) */
++ { 0x8086, 0x245B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, cich_pata },
++ /* ESB (855GME/875P + 6300ESB) UDMA 100 */
++ { 0x8086, 0x25A2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, esb_pata },
++ /* ICH6 (and 6) (i915) UDMA 100 */
++ { 0x8086, 0x266F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich6_pata },
++ /* ICH7/7-R (i945, i975) UDMA 100*/
++ { 0x8086, 0x27DF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich7_pata },
++ { 0x8086, 0x269E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, esb2_pata },
+ #endif
+-
+- /* NOTE: The following PCI ids must be kept in sync with the
++ /*
++ * SATA ports
++ *
++ * NOTE: The following PCI ids must be kept in sync with the
+ * list in drivers/pci/quirks.c.
+ */
+
+@@ -213,6 +274,40 @@
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static const struct ata_port_operations ich_pata_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = piix_set_piomode,
++ .set_dmamode = ich_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = ich_pata_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++
++ .data_xfer = ata_pio_data_xfer,
+
+ .eng_timeout = ata_eng_timeout,
+
+@@ -242,6 +337,8 @@
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
+
++ .data_xfer = ata_pio_data_xfer,
++
+ .eng_timeout = ata_eng_timeout,
+
+ .irq_handler = ata_interrupt,
+@@ -253,47 +350,39 @@
+ };
+
+ static struct ata_port_info piix_port_info[] = {
+- /* ich5_pata */
++ /* ich5_pata: 0*/
+ {
+ .sht = &piix_sht,
+ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST |
+ PIIX_FLAG_CHECKINTR,
+ .pio_mask = 0x1f, /* pio0-4 */
+-#if 0
+ .mwdma_mask = 0x06, /* mwdma1-2 */
+-#else
+- .mwdma_mask = 0x00, /* mwdma broken */
+-#endif
+- .udma_mask = 0x3f, /* udma0-5 */
+- .port_ops = &piix_pata_ops,
++ .udma_mask = ATA_UDMA6,
++ .port_ops = &ich_pata_ops,
+ },
+
+- /* ich5_sata */
++ /* ich5_sata: 1 */
+ {
+ .sht = &piix_sht,
+ .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST |
+ PIIX_FLAG_COMBINED | PIIX_FLAG_CHECKINTR,
+ .pio_mask = 0x1f, /* pio0-4 */
+ .mwdma_mask = 0x07, /* mwdma0-2 */
+- .udma_mask = 0x7f, /* udma0-6 */
++ .udma_mask = ATA_UDMA6,
+ .port_ops = &piix_sata_ops,
+ },
+
+- /* piix4_pata */
++ /* piix4_pata: 2 */
+ {
+ .sht = &piix_sht,
+ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
+ .pio_mask = 0x1f, /* pio0-4 */
+-#if 0
+ .mwdma_mask = 0x06, /* mwdma1-2 */
+-#else
+- .mwdma_mask = 0x00, /* mwdma broken */
+-#endif
+ .udma_mask = ATA_UDMA_MASK_40C,
+ .port_ops = &piix_pata_ops,
+ },
+
+- /* ich6_sata */
++ /* ich6_sata: 3 */
+ {
+ .sht = &piix_sht,
+ .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST |
+@@ -301,11 +390,11 @@
+ ATA_FLAG_SLAVE_POSS,
+ .pio_mask = 0x1f, /* pio0-4 */
+ .mwdma_mask = 0x07, /* mwdma0-2 */
+- .udma_mask = 0x7f, /* udma0-6 */
++ .udma_mask = ATA_UDMA6,
+ .port_ops = &piix_sata_ops,
+ },
+
+- /* ich6_sata_ahci */
++ /* ich6_sata_ahci: 4 */
+ {
+ .sht = &piix_sht,
+ .host_flags = ATA_FLAG_SATA | ATA_FLAG_SRST |
+@@ -313,9 +402,119 @@
+ ATA_FLAG_SLAVE_POSS | PIIX_FLAG_AHCI,
+ .pio_mask = 0x1f, /* pio0-4 */
+ .mwdma_mask = 0x07, /* mwdma0-2 */
+- .udma_mask = 0x7f, /* udma0-6 */
++ .udma_mask = ATA_UDMA6,
+ .port_ops = &piix_sata_ops,
+ },
++
++ /* ich0_pata: 5 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* MWDMA0 is broken on chip */
++ .udma_mask = ATA_UDMA4,
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* ich2_pata: 6 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* MWDMA0 is broken on chip */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* ich3_pata: 7 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* MWDMA0 is broken on chip */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* ich4_pata: 8 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* cich_pata: 9 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* piix3_pata: 10 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma1-2 */
++ .udma_mask = ATA_UDMA_MASK_40C,
++ .port_ops = &piix_pata_ops,
++ },
++
++ /* esb_pata: 11 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &piix_pata_ops,
++ },
++
++ /* ich_pata: 12 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA4, /* UDMA66 */
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* ich6_pata: 13 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA6, /* UDMA133 */
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* ich7_pata: 14 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA6,
++ .port_ops = &ich_pata_ops,
++ },
++
++ /* esb2_pata: 15 */
++ {
++ .sht = &piix_sht,
++ .host_flags = ATA_FLAG_SRST | ATA_FLAG_SLAVE_POSS,
++ .pio_mask = 0x1f, /* pio 0-4 */
++ .mwdma_mask = 0x06, /* Check: maybe 0x07 */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &ich_pata_ops,
++ },
+ };
+
+ static struct pci_bits piix_enable_bits[] = {
+@@ -339,7 +538,7 @@
+ * LOCKING:
+ * None (inherited from caller).
+ */
+-static void piix_pata_cbl_detect(struct ata_port *ap)
++static void ich_pata_cbl_detect(struct ata_port *ap)
+ {
+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
+ u8 tmp, mask;
+@@ -366,8 +565,9 @@
+ * piix_pata_phy_reset - Probe specified port on PATA host controller
+ * @ap: Port to probe
+ *
+- * Probe PATA phy.
+- *
++ * Probe PATA phy. Unlike the ICH we have no IOCFG register and
++ * don't do UDMA66+ anyway.
++
+ * LOCKING:
+ * None (inherited from caller).
+ */
+@@ -381,11 +581,34 @@
+ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
+ return;
+ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
+
+- piix_pata_cbl_detect(ap);
+
+- ata_port_probe(ap);
++/**
++ * ich_pata_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * Probe PATA phy.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void ich_pata_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
+
++ if (!pci_test_config_bits(pdev, &piix_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++
++ ich_pata_cbl_detect(ap);
++ ata_port_probe(ap);
+ ata_bus_reset(ap);
+ }
+
+@@ -481,6 +704,13 @@
+ unsigned int slave_port = 0x44;
+ u16 master_data;
+ u8 slave_data;
++ u8 udma_enable;
++ int control = 0;
++
++ /*
++ * See Intel Document 298600-004 for the timing programing rules
++ * for ICH controllers.
++ */
+
+ static const /* ISP RTC */
+ u8 timings[][2] = { { 0, 0 },
+@@ -489,20 +719,30 @@
+ { 2, 1 },
+ { 2, 3 }, };
+
++ if (pio > 2)
++ control |= 1; /* TIME1 enable */
++ if (ata_pio_need_iordy(adev))
++ control |= 2; /* IE enable */
++
++ /* Intel specifies that the PPE functionality is for disk only */
++ if (adev->class == ATA_DEV_ATA)
++ control |= 4; /* PPE enable */
++
+ pci_read_config_word(dev, master_port, &master_data);
+ if (is_slave) {
++ /* Enable SITRE (seperate slave timing register) */
+ master_data |= 0x4000;
+- /* enable PPE, IE and TIME */
+- master_data |= 0x0070;
++ /* enable PPE1, IE1 and TIME1 as needed */
++ master_data |= (control << 4);
+ pci_read_config_byte(dev, slave_port, &slave_data);
+ slave_data &= (ap->hard_port_no ? 0x0f : 0xf0);
+- slave_data |=
+- (timings[pio][0] << 2) |
+- (timings[pio][1] << (ap->hard_port_no ? 4 : 0));
++ /* Load the timing nibble for this slave */
++ slave_data |= ((timings[pio][0] << 2) | timings[pio][1]) << (ap->hard_port_no ? 4 : 0);
+ } else {
++ /* Master keeps the bits in a different format */
+ master_data &= 0xccf8;
+- /* enable PPE, IE and TIME */
+- master_data |= 0x0007;
++ /* Enable PPE, IE and TIME as appropriate */
++ master_data |= control;
+ master_data |=
+ (timings[pio][0] << 12) |
+ (timings[pio][1] << 8);
+@@ -510,84 +750,165 @@
+ pci_write_config_word(dev, master_port, master_data);
+ if (is_slave)
+ pci_write_config_byte(dev, slave_port, slave_data);
++
++ /* Ensure the UDMA bit is off - it will be turned back on if
++ UDMA is selected */
++
++ if (ap->udma_mask) {
++ pci_read_config_byte(dev, 0x48, &udma_enable);
++ udma_enable &= ~(1 << (2 * ap->hard_port_no + adev->devno));
++ pci_write_config_byte(dev, 0x48, udma_enable);
++ }
+ }
+
+ /**
+- * piix_set_dmamode - Initialize host controller PATA PIO timings
++ * do_piix_set_dmamode - Initialize host controller PATA PIO timings
+ * @ap: Port whose timings we are configuring
+- * @adev: um
+- * @udma: udma mode, 0 - 6
++ * @adev: device to configure
++ * @isich: True if the device is an ICH and has IOCFG registers
+ *
+- * Set UDMA mode for device, in host controller PCI config space.
++ * Set MW/UDMA mode for device, in host controller PCI config space.
++ * Note: We know the caller has already set the PIO mode. In doing
++ * so it has correctly set PPE, SITRE, IORDY and TIME1. We rely on that.
+ *
+ * LOCKING:
+ * None (inherited from caller).
+ */
+
+-static void piix_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++static void do_pata_set_dmamode (struct ata_port *ap, struct ata_device *adev, int isich)
+ {
+- unsigned int udma = adev->dma_mode; /* FIXME: MWDMA too */
+ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
+- u8 maslave = ap->hard_port_no ? 0x42 : 0x40;
+- u8 speed = udma;
+- unsigned int drive_dn = (ap->hard_port_no ? 2 : 0) + adev->devno;
+- int a_speed = 3 << (drive_dn * 4);
+- int u_flag = 1 << drive_dn;
+- int v_flag = 0x01 << drive_dn;
+- int w_flag = 0x10 << drive_dn;
+- int u_speed = 0;
+- int sitre;
+- u16 reg4042, reg4a;
+- u8 reg48, reg54, reg55;
+-
+- pci_read_config_word(dev, maslave, &reg4042);
+- DPRINTK("reg4042 = 0x%04x\n", reg4042);
+- sitre = (reg4042 & 0x4000) ? 1 : 0;
+- pci_read_config_byte(dev, 0x48, &reg48);
+- pci_read_config_word(dev, 0x4a, &reg4a);
+- pci_read_config_byte(dev, 0x54, &reg54);
+- pci_read_config_byte(dev, 0x55, &reg55);
+-
+- switch(speed) {
+- case XFER_UDMA_4:
+- case XFER_UDMA_2: u_speed = 2 << (drive_dn * 4); break;
+- case XFER_UDMA_6:
+- case XFER_UDMA_5:
+- case XFER_UDMA_3:
+- case XFER_UDMA_1: u_speed = 1 << (drive_dn * 4); break;
+- case XFER_UDMA_0: u_speed = 0 << (drive_dn * 4); break;
+- case XFER_MW_DMA_2:
+- case XFER_MW_DMA_1: break;
+- default:
+- BUG();
+- return;
+- }
++ u8 master_port = ap->hard_port_no ? 0x42 : 0x40;
++ u16 master_data;
++ u8 speed = adev->dma_mode;
++ int devid = adev->devno + 2 * ap->hard_port_no;
++ u8 udma_enable;
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 0 },
++ { 2, 1 },
++ { 2, 3 }, };
+
++ pci_read_config_word(dev, master_port, &master_data);
++ pci_read_config_byte(dev, 0x48, &udma_enable);
++
+ if (speed >= XFER_UDMA_0) {
+- if (!(reg48 & u_flag))
+- pci_write_config_byte(dev, 0x48, reg48 | u_flag);
+- if (speed == XFER_UDMA_5) {
+- pci_write_config_byte(dev, 0x55, (u8) reg55|w_flag);
+- } else {
+- pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
++ unsigned int udma = adev->dma_mode - XFER_UDMA_0;
++ u16 udma_timing;
++ u16 ideconf;
++ int u_clock, u_speed;
++
++ /*
++ * UDMA is handled by a combination of clock switching and
++ * selection of dividers
++ *
++ * Handy rule: Odd modes are UDMATIMx 01, even are 02
++ * except UDMA0 which is 00
++ */
++ u_speed = min(2 - (udma & 1), udma);
++ if (udma == 5)
++ u_clock = 0x1000; /* 100Mhz */
++ else if (udma > 2)
++ u_clock = 1; /* 66Mhz */
++ else
++ u_clock = 0; /* 33Mhz */
++
++ udma_enable |= (1 << devid);
++
++ /* Load the CT/RP selection */
++ pci_read_config_word(dev, 0x4A, &udma_timing);
++ udma_timing &= ~(3 << (4 * devid));
++ udma_timing |= u_speed << (4 * devid);
++ pci_write_config_word(dev, 0x4A, udma_timing);
++
++ if (isich) {
++ /* Select a 33/66/100Mhz clock */
++ pci_read_config_word(dev, 0x54, &ideconf);
++ ideconf &= ~(0x1001 << devid);
++ ideconf |= u_clock << devid;
++ /* For ICH or later we should set bit 10 for better
++ performance (WR_PingPong_En) */
++ pci_write_config_word(dev, 0x54, ideconf);
+ }
+- if ((reg4a & a_speed) != u_speed)
+- pci_write_config_word(dev, 0x4a, (reg4a & ~a_speed) | u_speed);
+- if (speed > XFER_UDMA_2) {
+- if (!(reg54 & v_flag))
+- pci_write_config_byte(dev, 0x54, reg54 | v_flag);
+- } else
+- pci_write_config_byte(dev, 0x54, reg54 & ~v_flag);
+ } else {
+- if (reg48 & u_flag)
+- pci_write_config_byte(dev, 0x48, reg48 & ~u_flag);
+- if (reg4a & a_speed)
+- pci_write_config_word(dev, 0x4a, reg4a & ~a_speed);
+- if (reg54 & v_flag)
+- pci_write_config_byte(dev, 0x54, reg54 & ~v_flag);
+- if (reg55 & w_flag)
+- pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
++ /*
++ * MWDMA is driven by the PIO timings. We must also enable
++ * IORDY unconditionally along with TIME1. PPE has already
++ * been set when the PIO timing was set.
++ */
++ unsigned int mwdma = adev->dma_mode - XFER_MW_DMA_0;
++ unsigned int control;
++ u8 slave_data;
++ const unsigned int needed_pio[3] = {
++ XFER_PIO_0, XFER_PIO_3, XFER_PIO_4
++ };
++ int pio = needed_pio[mwdma] - XFER_PIO_0;
++
++ control = 3; /* IORDY|TIME1 */
++
++ /* If the drive MWDMA is faster than it can do PIO then
++ we must force PIO into PIO0 */
++
++ if (adev->pio_mode < needed_pio[mwdma])
++ /* Enable DMA timing only */
++ control |= 8; /* PIO cycles in PIO0 */
++
++ if (adev->devno) { /* Slave */
++ master_data &= 0xFF4F; /* Mask out IORDY|TIME1|DMAONLY */
++ master_data |= control << 4;
++ pci_read_config_byte(dev, 0x44, &slave_data);
++ slave_data &= (0x0F + 0xE1 * ap->hard_port_no);
++ /* Load the matching timing */
++ slave_data |= ((timings[pio][0] << 2) | timings[pio][1]) << (ap->hard_port_no ? 4 : 0);
++ pci_write_config_byte(dev, 0x44, slave_data);
++ } else { /* Master */
++ master_data &= 0xCCF4; /* Mask out IORDY|TIME1|DMAONLY
++ and master timing bits */
++ master_data |= control;
++ master_data |=
++ (timings[pio][0] << 12) |
++ (timings[pio][1] << 8);
++ }
++ udma_enable &= ~(1 << devid);
++ pci_write_config_word(dev, master_port, master_data);
+ }
++ /* Don't scribble on 0x48 if the controller does not support UDMA */
++ if (ap->udma_mask)
++ pci_write_config_byte(dev, 0x48, udma_enable);
++}
++
++/**
++ * piix_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: um
++ *
++ * Set MW/UDMA mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void piix_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ do_pata_set_dmamode(ap, adev, 0);
++}
++
++/**
++ * ich_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: um
++ *
++ * Set MW/UDMA mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void ich_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ do_pata_set_dmamode(ap, adev, 1);
+ }
+
+ #define AHCI_PCI_BAR 5
+@@ -646,15 +967,15 @@
+ pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
+ pci_read_config_word(pdev, 0x41, &cfg);
+ /* Only on the original revision: IDE DMA can hang */
+- if(rev == 0x00)
++ if (rev == 0x00)
+ no_piix_dma = 1;
+ /* On all revisions below 5 PXB bus lock must be disabled for IDE */
+- else if(cfg & (1<<14) && rev < 5)
++ else if (cfg & (1<<14) && rev < 5)
+ no_piix_dma = 2;
+ }
+- if(no_piix_dma)
++ if (no_piix_dma)
+ dev_printk(KERN_WARNING, &ata_dev->dev, "450NX errata present, disabling IDE DMA.\n");
+- if(no_piix_dma == 2)
++ if (no_piix_dma == 2)
+ dev_printk(KERN_WARNING, &ata_dev->dev, "A BIOS update may resolve this.\n");
+ return no_piix_dma;
+ }
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/Kconfig linux-2.6.16-rc6/drivers/scsi/Kconfig
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/Kconfig 2006-03-13 14:00:13.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/Kconfig 2006-02-20 17:27:24.000000000 +0000
+@@ -599,6 +599,316 @@
+ depends on IDE=y && !BLK_DEV_IDE_SATA && (SCSI_SATA_AHCI || SCSI_ATA_PIIX)
+ default y
+
++config SCSI_PATA_ALI
++ tristate "ALi PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the ALi ATA interfaces
++ found on the many ALi chipsets.
++
++ If unsure, say N.
++
++config SCSI_PATA_AMD
++ tristate "AMD/NVidia PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the AMD and NVidia PATA
++ interfaces found on the chipsets for Athlon/Athlon64.
++
++ If unsure, say N.
++
++config SCSI_PATA_ARTOP
++ tristate "ARTOP 6210/6260 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for ARTOP PATA controllers.
++
++ If unsure, say N.
++
++config SCSI_PATA_ATIIXP
++ tristate "ATI PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the ATI ATA interfaces
++ found on the many ATI chipsets.
++
++ If unsure, say N.
++
++config SCSI_PATA_CMD64X
++ tristate "CMD64x PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the CMD64x series chips
++ except for the CMD640.
++
++ If unsure, say N.
++
++config SCSI_PATA_CS5520
++ tristate "CS5510/5520 PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the Cyrix 5510/5520
++ companion chip used with the MediaGX/Geode processor family.
++
++ If unsure, say N.
++
++config SCSI_PATA_CS5530
++ tristate "CS5530 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the Cyrix/NatSemi/AMD CS5530
++ companion chip used with the MediaGX/Geode processor family.
++
++ If unsure, say N.
++
++config SCSI_PATA_CS5535
++ tristate "CS5535 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && X86 && !X86_64 && EXPERIMENTAL
++ help
++ This option enables support for the NatSemi/AMD CS5535
++ companion chip used with the Geode processor family.
++
++ If unsure, say N.
++
++config SCSI_PATA_CYPRESS
++ tristate "Cypress CY82C693 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the Cypress/Contaq CY82C693
++ chipset found in some Alpha systems
++
++ If unsure, say N.
++
++config SCSI_PATA_EFAR
++ tristate "EFAR SLC90E66 support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the EFAR SLC90E66
++ IDE controller found on some older machines.
++
++ If unsure, say N.
++
++config SCSI_ATA_GENERIC
++ tristate "Generic PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for generic BIOS configured
++ PATA controllers via the new ATA layer
++
++ If unsure, say N.
++
++config SCSI_PATA_HPT37X
++ tristate "HPT 370/370A/371/372/374/302 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the majority of the later HPT
++ PATA controllers via the new ATA layer.
++
++ If unsure, say N.
++
++config SCSI_PATA_HPT3X2N
++ tristate "HPT 372N/302N PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the N variant HPT PATA
++ controllers via the new ATA layer
++
++ If unsure, say N.
++
++config SCSI_PATA_HPT3X3
++ tristate "HPT 343/363 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the HPT 343/363
++ PATA controllers via the new ATA layer
++
++ If unsure, say N.
++
++config SCSI_PATA_ISAPNP
++ tristate "ISA Plug and Play PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && EXPERIMENTAL
++ help
++ This option enables support for ISA plug & play ATA
++ controllers such as those found on old soundcards.
++
++ If unsure, say N.
++
++config SCSI_PATA_IT8172
++ tristate "IT8172 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the ITE 8172 PATA controller
++ via the new ATA layer.
++
++ If unsure, say N.
++
++config SCSI_PATA_IT821X
++ tristate "IT821x PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the ITE 8211 and 8212
++ PATA controllers via the new ATA layer, including RAID
++ mode.
++
++ If unsure, say N.
++
++config SCSI_PATA_LEGACY
++ tristate "Legacy ISA PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for ISA bus legacy PATA
++ interfaces on ide2-5 and allows them to be accessed via
++ the new ATA layer.
++
++ If unsure, say N.
++
++config SCSI_PATA_MPIIX
++ tristate "Intel PATA MPIIX support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for MPIIX PATA support.
++
++ If unsure, say N.
++
++config SCSI_PATA_NETCELL
++ tristate "NETCELL Revolution RAID support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the Netcell Revolution RAID
++ PATA controller.
++
++ If unsure, say N.
++
++config SCSI_PATA_NS87410
++ tristate "Nat Semi NS87410 PATA support (Experimental)"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the National Semiconductor
++ NS87410 PCI-IDE controller.
++
++ If unsure, say N.
++
++config SCSI_PATA_OLDPIIX
++ tristate "Intel PATA old PIIX support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for early PIIX PATA interfaces.
++
++ If unsure, say N.
++
++config SCSI_PATA_OPTI
++ tristate "OPTI621/6215 PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables full PIO support for the early Opti ATA
++ controllers found on some old motherboards.
++
++ If unsure, say N.
++
++config SCSI_PATA_PCMCIA
++ tristate "PCMCIA PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCMCIA
++ help
++ This option enables support for PCMCIA ATA interfaces, including
++ compact flash card adapters via the new ATA layer.
++
++ If unsure, say N.
++
++config SCSI_PATA_PDC_OLD
++ tristate "Older Promise PATA controller support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the Promise 20246, 20262, 20263,
++ 20265 and 20267 adapters.
++
++ If unsure, say N.
++
++config SCSI_PATA_QDI
++ tristate "QDI VLB PATA support"
++ depends on SCSI_SATA
++ help
++ Support for QDI 6500 and 6580 PATA controllers on VESA local bus.
++
++config SCSI_PATA_RADISYS
++ tristate "RADISYS 82600 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the RADISYS 82600
++ PATA controllers via the new ATA layer
++
++ If unsure, say N.
++
++config SCSI_PATA_RZ1000
++ tristate "PC Tech RZ1000 PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables basic support for the PC Tech RZ1000/1
++ PATA controllers via the new ATA layer
++
++ If unsure, say N.
++
++config SCSI_PATA_SC1200
++ tristate "SC1200 PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the NatSemi/AMD SC1200 SoC
++ companion chip used with the Geode processor family.
++
++ If unsure, say N.
++
++config SCSI_PATA_SERVERWORKS
++ tristate "SERVERWORKS OSB4/CSB5/CSB6 PATA support (Experimental)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for the Serverworks OSB4/CSB5 and
++ CSB6 IDE controllers, via the new ATA layer.
++
++ If unsure, say N.
++
++config SCSI_PATA_SIL680
++ tristate "CMD / Silicon Image 680 PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for CMD / Silicon Image 680 PATA.
++
++ If unsure, say N.
++
++config SCSI_PATA_SIS
++ tristate "SiS PATA support (Experimental)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ This option enables support for SiS PATA controllers
++
++ If unsure, say N.
++
++config SCSI_PATA_TRIFLEX
++ tristate "Compaq Triflex PATA support (Raving Lunatic)"
++ depends on SCSI_SATA && PCI && EXPERIMENTAL
++ help
++ Enable support for the Compaq 'Triflex' IDE controller as found
++ on many Compaq Pentium-Pro systems, via the new ATA layer.
++
++ If unsure, say N.
++
++config SCSI_PATA_VIA
++ tristate "VIA PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for the VIA PATA interfaces
++ found on the many VIA chipsets.
++
++ If unsure, say N.
++
++config SCSI_PATA_WINBOND
++ tristate "Winbond SL82C105 PATA support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for SL82C105 PATA devices found in the
++ Netwinder and some other systems
++
++ If unsure, say N.
++
++
+ config SCSI_BUSLOGIC
+ tristate "BusLogic SCSI support"
+ depends on (PCI || ISA || MCA) && SCSI && ISA_DMA_API
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/libata-core.c linux-2.6.16-rc6/drivers/scsi/libata-core.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/libata-core.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/libata-core.c 2006-03-13 14:30:45.838552760 +0000
+@@ -68,9 +68,10 @@
+ static void ata_dev_init_params(struct ata_port *ap, struct ata_device *dev);
+ static void ata_set_mode(struct ata_port *ap);
+ static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev);
+-static unsigned int ata_get_mode_mask(const struct ata_port *ap, int shift);
++static unsigned int ata_get_mode_mask(const struct ata_port *ap, struct ata_device *adev, int shift);
+ static int fgb(u32 bitmap);
+ static int ata_choose_xfer_mode(const struct ata_port *ap,
++ struct ata_device *adev,
+ u8 *xfer_mode_out,
+ unsigned int *xfer_shift_out);
+ static void __ata_qc_complete(struct ata_queued_cmd *qc);
+@@ -78,7 +79,7 @@
+ static unsigned int ata_unique_id = 1;
+ static struct workqueue_struct *ata_wq;
+
+-int atapi_enabled = 0;
++int atapi_enabled = 1;
+ module_param(atapi_enabled, int, 0444);
+ MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)");
+
+@@ -1209,6 +1210,48 @@
+ return 0;
+ }
+
++static void ata_dev_check_hpa(struct ata_port *ap, struct ata_device *dev)
++{
++ struct ata_taskfile tf;
++ unsigned long long true_size;
++ unsigned int err_mask;
++
++ if (!ata_id_has_hpa(dev->id) || !ata_id_hpa_enabled(dev->id))
++ return;
++
++ /* Issue a query for HPA */
++ ata_dev_select(ap, dev->devno, 1, 1);
++ ata_tf_init(ap, &tf, dev->devno);
++
++ if (dev->flags & ATA_DFLAG_LBA48) {
++ tf.command = ATA_CMD_READ_NATIVE_MAX_EXT;
++ tf.device |= 0x40;
++ err_mask = ata_exec_internal(ap, dev, &tf, DMA_NONE, NULL, 0);
++ if (err_mask)
++ return;
++ /* Ok HPA is live */
++ true_size = (tf.hob_lbah << 16) | (tf.hob_lbam << 8) | (tf.hob_lbal);
++ true_size <<= 24;
++ true_size |= (tf.lbah << 16) | (tf.lbam << 8) | tf.lbal;
++ } else {
++ tf.command = ATA_CMD_READ_NATIVE_MAX;
++ tf.device |= 0x40;
++ err_mask = ata_exec_internal(ap, dev, &tf, DMA_NONE, NULL, 0);
++ if (err_mask)
++ return;
++ /* Ok HPA is live */
++ true_size = ((tf.device & 0x0F) << 24) |
++ (tf.lbah << 16) |
++ (tf.lbam << 8) |
++ tf.lbal;
++ }
++ dev->flags |= ATA_DFLAG_HPA;
++ /* Should save the HPA value and expose it for dmraid then
++ remove the clipping */
++ printk(KERN_INFO "HPA present: true size %lld sectors.\n",
++ true_size + 1);
++}
++
+ /**
+ * ata_dev_identify - obtain IDENTIFY x DEVICE page
+ * @ap: port on which device we wish to probe resides
+@@ -1332,7 +1375,7 @@
+
+ /* ATA-specific feature tests */
+ if (dev->class == ATA_DEV_ATA) {
+- if (!ata_id_is_ata(dev->id)) /* sanity check */
++ if (!ata_id_is_ata(dev->id) && !ata_id_is_cfa(dev->id)) /* sanity check */
+ goto err_out_nosup;
+
+ /* get major version */
+@@ -1404,6 +1447,13 @@
+ }
+
+ ap->host->max_cmd_len = 16;
++
++ /*
++ * See if we have the HPA misfeature on the drive
++ */
++#if 0 /* TESTING */
++ ata_dev_check_hpa(ap, dev);
++#endif
+ }
+
+ /* ATAPI-specific feature tests */
+@@ -1489,10 +1539,24 @@
+ ap->ops->phy_reset(ap);
+ if (ap->flags & ATA_FLAG_PORT_DISABLED)
+ goto err_out;
++
++ /* The reset means we are in PIO 0, but the controller may not
++ yet be correctly set up and may have old BIOS settings, or just
++ no settings at all. Set all the devices to PIO 0 */
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++)
++ ap->device[i].pio_mode = XFER_PIO_0;
+
+ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *adev = & ap->device[i];
++
++ /* Set up the controller on this port for PIO 0. We must not
++ send the drive speed setting commands at this point */
++ if (ap->ops->set_piomode)
++ ap->ops->set_piomode(ap, adev);
++
+ ata_dev_identify(ap, i);
+- if (ata_dev_present(&ap->device[i])) {
++ if (ata_dev_present(adev)) {
+ found = 1;
+ ata_dev_config(ap,i);
+ }
+@@ -1501,7 +1565,11 @@
+ if ((!found) || (ap->flags & ATA_FLAG_PORT_DISABLED))
+ goto err_out_disable;
+
+- ata_set_mode(ap);
++ if(ap->ops->set_mode)
++ ap->ops->set_mode(ap);
++ else
++ ata_set_mode(ap);
++
+ if (ap->flags & ATA_FLAG_PORT_DISABLED)
+ goto err_out_disable;
+
+@@ -1616,6 +1684,23 @@
+ }
+
+ /**
++ * ata_dev_pair - return other device on cable
++ * @ap: port
++ * @adev: device
++ *
++ * Obtain the other device on the same cable, or if none is
++ * present NULL is returned
++ */
++
++struct ata_device *ata_dev_pair(struct ata_port *ap, struct ata_device *adev)
++{
++ struct ata_device *pair = &ap->device[1 - adev->devno];
++ if (!ata_dev_present(pair))
++ return NULL;
++ return pair;
++}
++
++/**
+ * ata_port_disable - Disable port.
+ * @ap: Port to be disabled.
+ *
+@@ -1828,16 +1913,19 @@
+ ap->id, dev->devno, xfer_mode_str[idx]);
+ }
+
+-static int ata_host_set_pio(struct ata_port *ap)
++static int ata_host_set_pio(struct ata_port *ap, struct ata_device *adev)
+ {
+ unsigned int mask;
+- int x, i;
++ int x;
+ u8 base, xfer_mode;
+
+- mask = ata_get_mode_mask(ap, ATA_SHIFT_PIO);
++ if (!ata_dev_present(adev))
++ return 0;
++
++ mask = ata_get_mode_mask(ap, adev, ATA_SHIFT_PIO);
+ x = fgb(mask);
+ if (x < 0) {
+- printk(KERN_WARNING "ata%u: no PIO support\n", ap->id);
++ printk(KERN_WARNING "ata%u: no PIO support for device %d.\n", ap->id, adev->devno);
+ return -1;
+ }
+
+@@ -1847,34 +1935,24 @@
+ DPRINTK("base 0x%x xfer_mode 0x%x mask 0x%x x %d\n",
+ (int)base, (int)xfer_mode, mask, x);
+
+- for (i = 0; i < ATA_MAX_DEVICES; i++) {
+- struct ata_device *dev = &ap->device[i];
+- if (ata_dev_present(dev)) {
+- dev->pio_mode = xfer_mode;
+- dev->xfer_mode = xfer_mode;
+- dev->xfer_shift = ATA_SHIFT_PIO;
+- if (ap->ops->set_piomode)
+- ap->ops->set_piomode(ap, dev);
+- }
+- }
++ adev->pio_mode = xfer_mode;
++ adev->xfer_mode = xfer_mode;
++ adev->xfer_shift = ATA_SHIFT_PIO;
++ if (ap->ops->set_piomode)
++ ap->ops->set_piomode(ap, adev);
+
+ return 0;
+ }
+
+-static void ata_host_set_dma(struct ata_port *ap, u8 xfer_mode,
+- unsigned int xfer_shift)
++static void ata_host_set_dma(struct ata_port *ap, struct ata_device *adev,
++ u8 xfer_mode, unsigned int xfer_shift)
+ {
+- int i;
+-
+- for (i = 0; i < ATA_MAX_DEVICES; i++) {
+- struct ata_device *dev = &ap->device[i];
+- if (ata_dev_present(dev)) {
+- dev->dma_mode = xfer_mode;
+- dev->xfer_mode = xfer_mode;
+- dev->xfer_shift = xfer_shift;
+- if (ap->ops->set_dmamode)
+- ap->ops->set_dmamode(ap, dev);
+- }
++ if (ata_dev_present(adev)) {
++ adev->dma_mode = xfer_mode;
++ adev->xfer_mode = xfer_mode;
++ adev->xfer_shift = xfer_shift;
++ if (ap->ops->set_dmamode)
++ ap->ops->set_dmamode(ap, adev);
+ }
+ }
+
+@@ -1890,32 +1968,64 @@
+ */
+ static void ata_set_mode(struct ata_port *ap)
+ {
+- unsigned int xfer_shift;
+- u8 xfer_mode;
++ unsigned int xfer_shift[ATA_MAX_DEVICES];
++ u8 xfer_mode[ATA_MAX_DEVICES];
+ int rc;
++ int i;
++ int used_dma = 0; /* Track if DMA was used for this setup */
+
+- /* step 1: always set host PIO timings */
+- rc = ata_host_set_pio(ap);
+- if (rc)
+- goto err_out;
++ /* We need to set timings individually for each device */
+
+- /* step 2: choose the best data xfer mode */
+- xfer_mode = xfer_shift = 0;
+- rc = ata_choose_xfer_mode(ap, &xfer_mode, &xfer_shift);
+- if (rc)
+- goto err_out;
++ /* Compute the timings first so that when we ask the device to do
++ speed configuration it can see all the intended device state in
++ full */
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *adev = &ap->device[i];
++ /* Choose the best data xfer mode */
++ xfer_mode[i] = xfer_shift[i] = 0;
++ rc = ata_choose_xfer_mode(ap, adev, &xfer_mode[i], &xfer_shift[i]);
++ if (rc)
++ goto err_out;
+
+- /* step 3: if that xfer mode isn't PIO, set host DMA timings */
+- if (xfer_shift != ATA_SHIFT_PIO)
+- ata_host_set_dma(ap, xfer_mode, xfer_shift);
+-
+- /* step 4: update devices' xfer mode */
+- ata_dev_set_mode(ap, &ap->device[0]);
+- ata_dev_set_mode(ap, &ap->device[1]);
++ }
++
++ /* Now set the mode tables we have computed */
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *adev = &ap->device[i];
++ /* step 1: always set host PIO timings */
++ rc = ata_host_set_pio(ap, adev);
++ if (rc)
++ goto err_out;
++
++ /* step 2: if that xfer mode isn't PIO, set host DMA timings */
++ if (xfer_shift[i] != ATA_SHIFT_PIO) {
++ ata_host_set_dma(ap, adev, xfer_mode[i], xfer_shift[i]);
++ used_dma = 1;
++ }
++
++ /* In some cases the DMA mode will cause the driver to
++ update the pio mode to match chip limits. */
++
++ /* step 3: update devices' xfer mode */
++ ata_dev_set_mode(ap, adev);
++ }
+
+ if (ap->flags & ATA_FLAG_PORT_DISABLED)
+ return;
+
++ /*
++ * Record simplex status. If we selected DMA then the other
++ * host channels are not permitted to do so.
++ */
++
++ if (used_dma && (ap->host_set->host_set_flags & ATA_HOST_SIMPLEX))
++ ap->host_set->simplex_claimed = 1;
++
++ /*
++ * Chip specific finalisation
++ */
++
+ if (ap->ops->post_set_mode)
+ ap->ops->post_set_mode(ap);
+
+@@ -2054,6 +2164,12 @@
+ * crazy ATAPI devices...
+ */
+ msleep(150);
++ /* Before we perform post reset processing we want to see if
++ the bus shows 0xFF because the odd clown forgets the D7 pulldown
++ resistor */
++
++ if (ata_check_status(ap) == 0xFF)
++ return 1; /* Positive is failure for some reason */
+
+ return ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
+ }
+@@ -2087,9 +2203,17 @@
+ * status is checked. Because waiting for "a while" before
+ * checking status is fine, post SRST, we perform this magic
+ * delay here as well.
++ *
++ * Old drivers/ide uses the 2mS rule and then waits for ready
+ */
+ msleep(150);
+-
++
++ /* Before we perform post reset processing we want to see if
++ the bus shows 0xFF because the odd clown forgets the D7 pulldown
++ resistor */
++
++ if (ata_check_status(ap) == 0xFF)
++ return 1; /* Positive is failure for some reason */
+ ata_bus_post_reset(ap, devmask);
+
+ return 0;
+@@ -2204,132 +2328,126 @@
+ }
+
+ static const char * const ata_dma_blacklist [] = {
+- "WDC AC11000H",
+- "WDC AC22100H",
+- "WDC AC32500H",
+- "WDC AC33100H",
+- "WDC AC31600H",
+- "WDC AC32100H",
+- "WDC AC23200L",
+- "Compaq CRD-8241B",
+- "CRD-8400B",
+- "CRD-8480B",
+- "CRD-8482B",
+- "CRD-84",
+- "SanDisk SDP3B",
+- "SanDisk SDP3B-64",
+- "SANYO CD-ROM CRD",
+- "HITACHI CDR-8",
+- "HITACHI CDR-8335",
+- "HITACHI CDR-8435",
+- "Toshiba CD-ROM XM-6202B",
+- "TOSHIBA CD-ROM XM-1702BC",
+- "CD-532E-A",
+- "E-IDE CD-ROM CR-840",
+- "CD-ROM Drive/F5A",
+- "WPI CDD-820",
+- "SAMSUNG CD-ROM SC-148C",
+- "SAMSUNG CD-ROM SC",
+- "SanDisk SDP3B-64",
+- "ATAPI CD-ROM DRIVE 40X MAXIMUM",
+- "_NEC DV5800A",
++ "WDC AC11000H", NULL,
++ "WDC AC22100H", NULL,
++ "WDC AC32500H", NULL,
++ "WDC AC33100H", NULL,
++ "WDC AC31600H", NULL,
++ "WDC AC32100H", "24.09P07",
++ "WDC AC23200L", "21.10N21",
++ "Compaq CRD-8241B", NULL,
++ "CRD-8400B", NULL,
++ "CRD-8480B", NULL,
++ "CRD-8482B", NULL,
++ "CRD-84", NULL,
++ "SanDisk SDP3B", NULL,
++ "SanDisk SDP3B-64", NULL,
++ "SANYO CD-ROM CRD", NULL,
++ "HITACHI CDR-8", NULL,
++ "HITACHI CDR-8335", NULL,
++ "HITACHI CDR-8435", NULL,
++ "Toshiba CD-ROM XM-6202B", NULL,
++ "TOSHIBA CD-ROM XM-1702BC", NULL,
++ "CD-532E-A", NULL,
++ "E-IDE CD-ROM CR-840", NULL,
++ "CD-ROM Drive/F5A", NULL,
++ "WPI CDD-820", NULL,
++ "SAMSUNG CD-ROM SC-148C", NULL,
++ "SAMSUNG CD-ROM SC", NULL,
++ "SanDisk SDP3B-64", NULL,
++ "ATAPI CD-ROM DRIVE 40X MAXIMUM",NULL,
++ "_NEC DV5800A", NULL,
++ "SAMSUNG CD-ROM SN-124", "N001"
+ };
+
+-static int ata_dma_blacklisted(const struct ata_device *dev)
++static int ata_strim(char *s, size_t len)
+ {
+- unsigned char model_num[40];
+- char *s;
+- unsigned int len;
+- int i;
+-
+- ata_dev_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
+- sizeof(model_num));
+- s = &model_num[0];
+- len = strnlen(s, sizeof(model_num));
++ len = strnlen(s, len);
+
+ /* ATAPI specifies that empty space is blank-filled; remove blanks */
+ while ((len > 0) && (s[len - 1] == ' ')) {
+ len--;
+ s[len] = 0;
+ }
++ return len;
++}
+
+- for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i++)
+- if (!strncmp(ata_dma_blacklist[i], s, len))
+- return 1;
++static int ata_dma_blacklisted(const struct ata_device *dev)
++{
++ unsigned char model_num[40];
++ unsigned char model_rev[16];
++ unsigned int nlen, rlen;
++ int i;
+
++ ata_dev_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
++ sizeof(model_num));
++ ata_dev_id_string(dev->id, model_rev, ATA_ID_FW_REV_OFS,
++ sizeof(model_rev));
++ nlen = ata_strim(model_num, sizeof(model_num));
++ rlen = ata_strim(model_rev, sizeof(model_rev));
++
++ for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i += 2) {
++ if (!strncmp(ata_dma_blacklist[i], model_num, nlen)) {
++ if (ata_dma_blacklist[i+1] == NULL)
++ return 1;
++ if (!strncmp(ata_dma_blacklist[i], model_rev, rlen))
++ return 1;
++ }
++ }
+ return 0;
+ }
+
+-static unsigned int ata_get_mode_mask(const struct ata_port *ap, int shift)
++static unsigned int ata_get_mode_mask(const struct ata_port *ap, struct ata_device *adev, int shift)
+ {
+- const struct ata_device *master, *slave;
+ unsigned int mask;
++ struct ata_host_set *hs = ap->host_set;
++
++ if (!ata_dev_present(adev))
++ return 0xFF; /* Drive isn't limiting anything */
++
++ if (shift == ATA_SHIFT_PIO) {
++ u16 tmp_mode = ata_pio_modes(adev);
++ mask = ap->pio_mask;
++ mask &= tmp_mode;
++ }
+
+- master = &ap->device[0];
+- slave = &ap->device[1];
++ /*
++ * Enforce simplex rules if host is simplex
++ */
+
+- assert (ata_dev_present(master) || ata_dev_present(slave));
++ if (hs->host_set_flags & ATA_HOST_SIMPLEX) {
++ if (hs->simplex_claimed) {
++ if (shift != ATA_SHIFT_PIO)
++ return 0;
++ }
++ }
+
+ if (shift == ATA_SHIFT_UDMA) {
+ mask = ap->udma_mask;
+- if (ata_dev_present(master)) {
+- mask &= (master->id[ATA_ID_UDMA_MODES] & 0xff);
+- if (ata_dma_blacklisted(master)) {
+- mask = 0;
+- ata_pr_blacklisted(ap, master);
+- }
+- }
+- if (ata_dev_present(slave)) {
+- mask &= (slave->id[ATA_ID_UDMA_MODES] & 0xff);
+- if (ata_dma_blacklisted(slave)) {
+- mask = 0;
+- ata_pr_blacklisted(ap, slave);
+- }
++ mask &= (adev->id[ATA_ID_UDMA_MODES] & 0xff);
++ if (ata_dma_blacklisted(adev)) {
++ mask = 0;
++ ata_pr_blacklisted(ap, adev);
+ }
++ /* 40 pin cable enforcement */
++ if (ap->cbl == ATA_CBL_PATA40)
++ mask &= ATA_UDMA_MASK_40C;
+ }
+ else if (shift == ATA_SHIFT_MWDMA) {
+ mask = ap->mwdma_mask;
+- if (ata_dev_present(master)) {
+- mask &= (master->id[ATA_ID_MWDMA_MODES] & 0x07);
+- if (ata_dma_blacklisted(master)) {
+- mask = 0;
+- ata_pr_blacklisted(ap, master);
+- }
+- }
+- if (ata_dev_present(slave)) {
+- mask &= (slave->id[ATA_ID_MWDMA_MODES] & 0x07);
+- if (ata_dma_blacklisted(slave)) {
+- mask = 0;
+- ata_pr_blacklisted(ap, slave);
+- }
+- }
+- }
+- else if (shift == ATA_SHIFT_PIO) {
+- mask = ap->pio_mask;
+- if (ata_dev_present(master)) {
+- /* spec doesn't return explicit support for
+- * PIO0-2, so we fake it
+- */
+- u16 tmp_mode = master->id[ATA_ID_PIO_MODES] & 0x03;
+- tmp_mode <<= 3;
+- tmp_mode |= 0x7;
+- mask &= tmp_mode;
+- }
+- if (ata_dev_present(slave)) {
+- /* spec doesn't return explicit support for
+- * PIO0-2, so we fake it
+- */
+- u16 tmp_mode = slave->id[ATA_ID_PIO_MODES] & 0x03;
+- tmp_mode <<= 3;
+- tmp_mode |= 0x7;
+- mask &= tmp_mode;
++ mask &= (adev->id[ATA_ID_MWDMA_MODES] & 0x07);
++ if (ata_dma_blacklisted(adev)) {
++ mask = 0;
++ ata_pr_blacklisted(ap, adev);
+ }
+- }
+- else {
+- mask = 0xffffffff; /* shut up compiler warning */
+- BUG();
+- }
+-
++ } else if (shift != ATA_SHIFT_PIO)
++ panic("gmm:bad shift"); /* BUG confuses the compiler */
++ /*
++ * Allow the controller to see the proposed mode and
++ * device data to do any custom filtering rules.
++ */
++ if(ap->ops->mode_filter)
++ mask = ap->ops->mode_filter(ap, adev, mask, shift);
+ return mask;
+ }
+
+@@ -2349,6 +2467,7 @@
+ /**
+ * ata_choose_xfer_mode - attempt to find best transfer mode
+ * @ap: Port for which an xfer mode will be selected
++ * @adev: ATA device for which xfer mode is being selected
+ * @xfer_mode_out: (output) SET FEATURES - XFER MODE code
+ * @xfer_shift_out: (output) bit shift that selects this mode
+ *
+@@ -2363,6 +2482,7 @@
+ */
+
+ static int ata_choose_xfer_mode(const struct ata_port *ap,
++ struct ata_device *adev,
+ u8 *xfer_mode_out,
+ unsigned int *xfer_shift_out)
+ {
+@@ -2371,7 +2491,7 @@
+
+ for (i = 0; i < ARRAY_SIZE(xfer_mode_classes); i++) {
+ shift = xfer_mode_classes[i].shift;
+- mask = ata_get_mode_mask(ap, shift);
++ mask = ata_get_mode_mask(ap, adev, shift);
+
+ x = fgb(mask);
+ if (x >= 0) {
+@@ -3007,6 +3127,7 @@
+ /**
+ * ata_mmio_data_xfer - Transfer data by MMIO
+ * @ap: port to read/write
++ * @adev: device to target
+ * @buf: data buffer
+ * @buflen: buffer length
+ * @write_data: read/write
+@@ -3017,8 +3138,8 @@
+ * Inherited from caller.
+ */
+
+-static void ata_mmio_data_xfer(struct ata_port *ap, unsigned char *buf,
+- unsigned int buflen, int write_data)
++void ata_mmio_data_xfer(struct ata_port *ap, struct ata_device *adev,
++ unsigned char *buf, unsigned int buflen, int write_data)
+ {
+ unsigned int i;
+ unsigned int words = buflen >> 1;
+@@ -3052,6 +3173,7 @@
+ /**
+ * ata_pio_data_xfer - Transfer data by PIO
+ * @ap: port to read/write
++ * @adev: device to target
+ * @buf: data buffer
+ * @buflen: buffer length
+ * @write_data: read/write
+@@ -3062,11 +3184,11 @@
+ * Inherited from caller.
+ */
+
+-static void ata_pio_data_xfer(struct ata_port *ap, unsigned char *buf,
+- unsigned int buflen, int write_data)
++void ata_pio_data_xfer(struct ata_port *ap, struct ata_device *adev,
++ unsigned char *buf, unsigned int buflen, int write_data)
+ {
+ unsigned int words = buflen >> 1;
+-
++
+ /* Transfer multiple of 2 bytes */
+ if (write_data)
+ outsw(ap->ioaddr.data_addr, buf, words);
+@@ -3089,36 +3211,55 @@
+ }
+
+ /**
+- * ata_data_xfer - Transfer data from/to the data register.
++ * ata_pio_data_xfer_noirq - Transfer data from/to the data register.
+ * @ap: port to read/write
++ * @adev: device to target
+ * @buf: data buffer
+ * @buflen: buffer length
+ * @do_write: read/write
+ *
+- * Transfer data from/to the device data register.
++ * Transfer data from/to the device data register. This variant
++ * ensures local IRQs do not interrupt the data stream and this
++ * is needed for some controllers.
+ *
+ * LOCKING:
+ * Inherited from caller.
+ */
+
+-static void ata_data_xfer(struct ata_port *ap, unsigned char *buf,
+- unsigned int buflen, int do_write)
++void ata_pio_data_xfer_noirq(struct ata_port *ap, struct ata_device *adev,
++ unsigned char *buf, unsigned int buflen, int do_write)
+ {
+ /* Make the crap hardware pay the costs not the good stuff */
+- if (unlikely(ap->flags & ATA_FLAG_IRQ_MASK)) {
+- unsigned long flags;
+- local_irq_save(flags);
+- if (ap->flags & ATA_FLAG_MMIO)
+- ata_mmio_data_xfer(ap, buf, buflen, do_write);
+- else
+- ata_pio_data_xfer(ap, buf, buflen, do_write);
+- local_irq_restore(flags);
+- } else {
+- if (ap->flags & ATA_FLAG_MMIO)
+- ata_mmio_data_xfer(ap, buf, buflen, do_write);
+- else
+- ata_pio_data_xfer(ap, buf, buflen, do_write);
+- }
++ unsigned long flags;
++ local_irq_save(flags);
++ ata_pio_data_xfer(ap, adev, buf, buflen, do_write);
++ local_irq_restore(flags);
++}
++
++/**
++ * ata_mmio_data_xfer_noirq - Transfer data from/to the data register.
++ * @ap: address to read/write
++ * @adev: device to target
++ * @buf: data buffer
++ * @buflen: buffer length
++ * @do_write: read/write
++ *
++ * Transfer data from/to the device data register. This variant
++ * ensures local IRQs do not interrupt the data stream and this
++ * is needed for some controllers.
++ *
++ * LOCKING:
++ * Inherited from caller.
++ */
++
++void ata_mmio_data_xfer_noirq(struct ata_port *ap, struct ata_device *adev,
++ unsigned char *buf, unsigned int buflen, int do_write)
++{
++ /* Make the crap hardware pay the costs not the good stuff */
++ unsigned long flags;
++ local_irq_save(flags);
++ ata_mmio_data_xfer(ap, adev, buf, buflen, do_write);
++ local_irq_restore(flags);
+ }
+
+ /**
+@@ -3164,7 +3305,7 @@
+
+ /* do the actual data transfer */
+ do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
+- ata_data_xfer(ap, buf, ATA_SECT_SIZE, do_write);
++ ap->ops->data_xfer(ap, qc->dev, buf, ATA_SECT_SIZE, do_write);
+
+ kunmap(page);
+ }
+@@ -3211,7 +3352,7 @@
+ ap->id, bytes);
+
+ for (i = 0; i < words; i++)
+- ata_data_xfer(ap, (unsigned char*)pad_buf, 2, do_write);
++ ap->ops->data_xfer(ap, qc->dev, (unsigned char*)pad_buf, 2, do_write);
+
+ ap->hsm_task_state = HSM_ST_LAST;
+ return;
+@@ -3246,7 +3387,7 @@
+ DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
+
+ /* do the actual data transfer */
+- ata_data_xfer(ap, buf, count, do_write);
++ ap->ops->data_xfer(ap, qc->dev, buf, count, do_write);
+
+ kunmap(page);
+
+@@ -3955,14 +4096,15 @@
+
+ void ata_bmdma_irq_clear(struct ata_port *ap)
+ {
+- if (ap->flags & ATA_FLAG_MMIO) {
+- void __iomem *mmio = ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS;
+- writeb(readb(mmio), mmio);
+- } else {
+- unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS;
+- outb(inb(addr), addr);
+- }
+-
++ if (ap->ioaddr.bmdma_addr) {
++ if (ap->flags & ATA_FLAG_MMIO) {
++ void __iomem *mmio = ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS;
++ writeb(readb(mmio), mmio);
++ } else {
++ unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS;
++ outb(inb(addr), addr);
++ }
++ }
+ }
+
+
+@@ -4093,9 +4235,9 @@
+
+ #ifdef ATA_IRQ_TRAP
+ if ((ap->stats.idle_irq % 1000) == 0) {
+- handled = 1;
+ ata_irq_ack(ap, 0); /* debug trap */
+ printk(KERN_WARNING "ata%d: irq trap\n", ap->id);
++ return 1;
+ }
+ #endif
+ return 0; /* irq not handled */
+@@ -4201,12 +4343,12 @@
+ */
+ spin_lock_irqsave(&ap->host_set->lock, flags);
+ ap->flags &= ~ATA_FLAG_NOINTR;
+- ata_data_xfer(ap, qc->cdb, ap->cdb_len, 1);
++ ap->ops->data_xfer(ap, qc->dev, qc->cdb, ap->cdb_len, 1);
+ if (qc->tf.protocol == ATA_PROT_ATAPI_DMA)
+ ap->ops->bmdma_start(qc); /* initiate bmdma */
+ spin_unlock_irqrestore(&ap->host_set->lock, flags);
+ } else {
+- ata_data_xfer(ap, qc->cdb, ap->cdb_len, 1);
++ ap->ops->data_xfer(ap, qc->dev, qc->cdb, ap->cdb_len, 1);
+
+ /* PIO commands are handled by polling */
+ ap->hsm_task_state = HSM_ST;
+@@ -4512,7 +4654,7 @@
+ * Number of ports registered. Zero on error (no ports registered).
+ */
+
+-int ata_device_add(const struct ata_probe_ent *ent)
++int ata_device_add(struct ata_probe_ent *ent)
+ {
+ unsigned int count = 0, i;
+ struct device *dev = ent->dev;
+@@ -4532,6 +4674,9 @@
+ host_set->mmio_base = ent->mmio_base;
+ host_set->private_data = ent->private_data;
+ host_set->ops = ent->port_ops;
++ host_set->host_set_flags = ent->host_set_flags;
++
++ ent->host_set = host_set;
+
+ /* register each port bound to this device */
+ for (i = 0; i < ent->n_ports; i++) {
+@@ -4543,6 +4688,14 @@
+ goto err_out;
+
+ host_set->ports[i] = ap;
++
++ /* Tidy up if we have no bus master base
++ Not sure this is the right spot to do it */
++ if (ap->ioaddr.bmdma_addr == 0) {
++ ap->udma_mask = 0;
++ ap->mwdma_mask = 0;
++ }
++
+ xfer_mode_mask =(ap->udma_mask << ATA_SHIFT_UDMA) |
+ (ap->mwdma_mask << ATA_SHIFT_MWDMA) |
+ (ap->pio_mask << ATA_SHIFT_PIO);
+@@ -4559,6 +4712,7 @@
+ ent->irq);
+
+ ata_chk_status(ap);
++ /* This last call probably should be conditional on bmdma */
+ host_set->ops->irq_clear(ap);
+ count++;
+ }
+@@ -4612,7 +4766,8 @@
+ ata_scsi_scan_host(ap);
+ }
+
+- dev_set_drvdata(dev, host_set);
++ if(dev)
++ dev_set_drvdata(dev, host_set);
+
+ VPRINTK("EXIT, returning %u\n", ent->n_ports);
+ return ent->n_ports; /* success */
+@@ -4786,6 +4941,7 @@
+ {
+ struct ata_probe_ent *probe_ent =
+ ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[0]);
++ unsigned long bmdma;
+ int p = 0;
+
+ if (!probe_ent)
+@@ -4800,7 +4956,13 @@
+ probe_ent->port[p].altstatus_addr =
+ probe_ent->port[p].ctl_addr =
+ pci_resource_start(pdev, 1) | ATA_PCI_CTL_OFS;
+- probe_ent->port[p].bmdma_addr = pci_resource_start(pdev, 4);
++ bmdma = pci_resource_start(pdev, 4);
++
++ if (bmdma) {
++ if (inb(bmdma + 2) & 0x80)
++ probe_ent->host_set_flags |= ATA_HOST_SIMPLEX;
++ probe_ent->port[p].bmdma_addr = bmdma;
++ }
+ ata_std_ports(&probe_ent->port[p]);
+ p++;
+ }
+@@ -4810,7 +4972,14 @@
+ probe_ent->port[p].altstatus_addr =
+ probe_ent->port[p].ctl_addr =
+ pci_resource_start(pdev, 3) | ATA_PCI_CTL_OFS;
+- probe_ent->port[p].bmdma_addr = pci_resource_start(pdev, 4) + 8;
++ bmdma = pci_resource_start(pdev, 4);
++
++ if (bmdma) {
++ bmdma += 8;
++ if(inb(bmdma + 2) & 0x80)
++ probe_ent->host_set_flags |= ATA_HOST_SIMPLEX;
++ probe_ent->port[p].bmdma_addr = bmdma;
++ }
+ ata_std_ports(&probe_ent->port[p]);
+ p++;
+ }
+@@ -4822,6 +4991,7 @@
+ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev, struct ata_port_info *port, int port_num)
+ {
+ struct ata_probe_ent *probe_ent;
++ unsigned long bmdma;
+
+ probe_ent = ata_probe_ent_alloc(pci_dev_to_dev(pdev), port);
+ if (!probe_ent)
+@@ -4847,7 +5017,13 @@
+ probe_ent->port[0].ctl_addr = 0x376;
+ break;
+ }
+- probe_ent->port[0].bmdma_addr = pci_resource_start(pdev, 4) + 8 * port_num;
++ bmdma = pci_resource_start(pdev, 4);
++ if(bmdma != 0) {
++ bmdma += 8 * port_num;
++ probe_ent->port[0].bmdma_addr = bmdma;
++ if (inb(bmdma + 2) & 0x80)
++ probe_ent->host_set_flags |= ATA_HOST_SIMPLEX;
++ }
+ ata_std_ports(&probe_ent->port[0]);
+ return probe_ent;
+ }
+@@ -5088,6 +5264,33 @@
+ pci_set_master(pdev);
+ return 0;
+ }
++
++/**
++ * ata_pci_clear_simplex - attempt to kick device out of simplex
++ * @pdev: PCI device
++ *
++ * Some PCI ATA devices report simplex mode but in fact can be told to
++ * enter non simplex mode. This implements the neccessary logic to
++ * perform the task on such devices. Calling it on other devices will
++ * have -undefined- behaviour.
++ */
++
++int ata_pci_clear_simplex(struct pci_dev *pdev)
++{
++ unsigned long bmdma = pci_resource_start(pdev, 4);
++ u8 simplex;
++
++ if (bmdma == 0)
++ return -ENOENT;
++
++ simplex = inb(bmdma + 0x02);
++ outb(simplex & 0x60, bmdma + 0x02);
++ simplex = inb(bmdma + 0x02);
++ if (simplex & 0x80)
++ return -EOPNOTSUPP;
++ return 0;
++}
++
+ #endif /* CONFIG_PCI */
+
+
+@@ -5165,6 +5368,10 @@
+ EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
+ EXPORT_SYMBOL_GPL(ata_bmdma_status);
+ EXPORT_SYMBOL_GPL(ata_bmdma_stop);
++EXPORT_SYMBOL_GPL(ata_mmio_data_xfer);
++EXPORT_SYMBOL_GPL(ata_pio_data_xfer);
++EXPORT_SYMBOL_GPL(ata_mmio_data_xfer_noirq);
++EXPORT_SYMBOL_GPL(ata_pio_data_xfer_noirq);
+ EXPORT_SYMBOL_GPL(ata_port_probe);
+ EXPORT_SYMBOL_GPL(sata_phy_reset);
+ EXPORT_SYMBOL_GPL(__sata_phy_reset);
+@@ -5182,6 +5389,7 @@
+ EXPORT_SYMBOL_GPL(ata_dev_config);
+ EXPORT_SYMBOL_GPL(ata_scsi_simulate);
+
++EXPORT_SYMBOL_GPL(ata_dev_pair);
+ EXPORT_SYMBOL_GPL(ata_pio_need_iordy);
+ EXPORT_SYMBOL_GPL(ata_timing_compute);
+ EXPORT_SYMBOL_GPL(ata_timing_merge);
+@@ -5194,6 +5402,8 @@
+ EXPORT_SYMBOL_GPL(ata_pci_remove_one);
+ EXPORT_SYMBOL_GPL(ata_pci_device_suspend);
+ EXPORT_SYMBOL_GPL(ata_pci_device_resume);
++EXPORT_SYMBOL_GPL(ata_pci_clear_simplex);
++
+ #endif /* CONFIG_PCI */
+
+ EXPORT_SYMBOL_GPL(ata_device_suspend);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/libata-scsi.c linux-2.6.16-rc6/drivers/scsi/libata-scsi.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/libata-scsi.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/libata-scsi.c 2006-03-13 14:03:15.000000000 +0000
+@@ -511,13 +511,11 @@
+ printk(KERN_WARNING "ata%u: no sense translation for status: 0x%02x\n",
+ id, drv_stat);
+
+- /* For our last chance pick, use medium read error because
+- * it's much more common than an ATA drive telling you a write
+- * has failed.
+- */
+- *sk = MEDIUM_ERROR;
+- *asc = 0x11; /* "unrecovered read error" */
+- *ascq = 0x04; /* "auto-reallocation failed" */
++ /* We need a sensible error return here, which is tricky, and one
++ that won't cause people to do things like return a disk wrongly */
++ *sk = ABORTED_COMMAND;
++ *asc = 0x00;
++ *ascq = 0x00;
+
+ translate_done:
+ printk(KERN_ERR "ata%u: translated ATA stat/err 0x%02x/%02x to "
+@@ -1144,14 +1142,20 @@
+ if ((block >> 48) || (n_block > 65536))
+ goto out_of_range;
+
+- /* use LBA48 */
+- tf->flags |= ATA_TFLAG_LBA48;
+-
+- tf->hob_nsect = (n_block >> 8) & 0xff;
+-
+- tf->hob_lbah = (block >> 40) & 0xff;
+- tf->hob_lbam = (block >> 32) & 0xff;
+- tf->hob_lbal = (block >> 24) & 0xff;
++ /* The request -may- be too large for LBA28. */
++ if ((block >> 28) || (n_block > 256)) {
++ /* use LBA48 */
++ tf->flags |= ATA_TFLAG_LBA48;
++
++ tf->hob_nsect = (n_block >> 8) & 0xff;
++
++ tf->hob_lbah = (block >> 40) & 0xff;
++ tf->hob_lbam = (block >> 32) & 0xff;
++ tf->hob_lbal = (block >> 24) & 0xff;
++ } else {
++ /* Issue LBA28 whenever we can as it is faster for PATA */
++ tf->device |= (block >> 24) & 0xf;
++ }
+ } else {
+ /* use LBA28 */
+
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/Makefile linux-2.6.16-rc6/drivers/scsi/Makefile
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/Makefile 2006-03-13 14:00:13.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/Makefile 2006-02-17 18:20:44.000000000 +0000
+@@ -139,6 +139,42 @@
+ obj-$(CONFIG_SCSI_SATA_MV) += libata.o sata_mv.o
+ obj-$(CONFIG_SCSI_PDC_ADMA) += libata.o pdc_adma.o
+
++obj-$(CONFIG_SCSI_PATA_ALI) += libata.o pata_ali.o
++obj-$(CONFIG_SCSI_PATA_AMD) += libata.o pata_amd.o
++obj-$(CONFIG_SCSI_PATA_ARTOP) += libata.o pata_artop.o
++obj-$(CONFIG_SCSI_PATA_ATIIXP) += libata.o pata_atiixp.o
++obj-$(CONFIG_SCSI_PATA_CMD64X) += libata.o pata_cmd64x.o
++obj-$(CONFIG_SCSI_PATA_CS5520) += libata.o pata_cs5520.o
++obj-$(CONFIG_SCSI_PATA_CS5530) += libata.o pata_cs5530.o
++obj-$(CONFIG_SCSI_PATA_CS5535) += libata.o pata_cs5535.o
++obj-$(CONFIG_SCSI_PATA_CYPRESS) += libata.o pata_cypress.o
++obj-$(CONFIG_SCSI_PATA_EFAR) += libata.o pata_efar.o
++obj-$(CONFIG_SCSI_PATA_ISAPNP) += libata.o pata_isapnp.o
++obj-$(CONFIG_SCSI_PATA_HPT37X) += libata.o pata_hpt37x.o
++obj-$(CONFIG_SCSI_PATA_HPT3X2N) += libata.o pata_hpt3x2n.o
++obj-$(CONFIG_SCSI_PATA_HPT3X3) += libata.o pata_hpt34x.o
++obj-$(CONFIG_SCSI_PATA_IT8172) += libata.o pata_it8172.o
++obj-$(CONFIG_SCSI_PATA_IT821X) += libata.o pata_it821x.o
++obj-$(CONFIG_SCSI_PATA_MPIIX) += libata.o pata_mpiix.o
++obj-$(CONFIG_SCSI_PATA_NETCELL) += libata.o pata_netcell.o
++obj-$(CONFIG_SCSI_PATA_NS87410) += libata.o pata_ns87410.o
++obj-$(CONFIG_SCSI_PATA_OLDPIIX) += libata.o pata_oldpiix.o
++obj-$(CONFIG_SCSI_PATA_OPTI) += libata.o pata_opti.o
++obj-$(CONFIG_SCSI_PATA_PCMCIA) += libata.o pata_pcmcia.o
++obj-$(CONFIG_SCSI_PATA_PDC_OLD) += libata.o pata_pdc202xx_old.o
++obj-$(CONFIG_SCSI_PATA_QDI) += libata.o pata_qdi.o
++obj-$(CONFIG_SCSI_PATA_RADISYS) += libata.o pata_radisys.o
++obj-$(CONFIG_SCSI_PATA_RZ1000) += libata.o pata_rz1000.o
++obj-$(CONFIG_SCSI_PATA_SERVERWORKS) += libata.o pata_serverworks.o
++obj-$(CONFIG_SCSI_PATA_SC1200) += libata.o pata_sc1200.o
++obj-$(CONFIG_SCSI_PATA_SIL680) += libata.o pata_sil680.o
++obj-$(CONFIG_SCSI_PATA_SIS) += libata.o pata_sis.o
++obj-$(CONFIG_SCSI_PATA_TRIFLEX) += libata.o pata_triflex.o
++obj-$(CONFIG_SCSI_PATA_VIA) += libata.o pata_via.o
++obj-$(CONFIG_SCSI_PATA_WINBOND) += libata.o pata_sl82c105.o
++obj-$(CONFIG_SCSI_ATA_GENERIC) += libata.o ata_generic.o
++obj-$(CONFIG_SCSI_PATA_LEGACY) += libata.o pata_legacy.o
++
+ obj-$(CONFIG_ARM) += arm/
+
+ obj-$(CONFIG_CHR_DEV_ST) += st.o
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_ali.c linux-2.6.16-rc6/drivers/scsi/pata_ali.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_ali.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_ali.c 2006-02-27 16:59:35.000000000 +0000
+@@ -0,0 +1,624 @@
++/*
++ * ata-ali.c - ALI 15x3 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based in part upon
++ * linux/drivers/ide/pci/alim15x3.c Version 0.17 2003/01/02
++ *
++ * Copyright (C) 1998-2000 Michel Aubry, Maintainer
++ * Copyright (C) 1998-2000 Andrzej Krzysztofowicz, Maintainer
++ * Copyright (C) 1999-2000 CJ, cjtsai@ali.com.tw, Maintainer
++ *
++ * Copyright (C) 1998-2000 Andre Hedrick (andre@linux-ide.org)
++ * May be copied or modified under the terms of the GNU General Public License
++ * Copyright (C) 2002 Alan Cox <alan@redhat.com>
++ * ALi (now ULi M5228) support by Clear Zhang <Clear.Zhang@ali.com.tw>
++ *
++ * Documentation
++ * Chipset documentation available under NDA only
++ *
++ * TODO/CHECK
++ * Cannot have ATAPI on both master & slave for rev < c2 (???) but
++ * otherwise should do atapi DMA.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "ali"
++#define DRV_VERSION "0.3"
++
++/**
++ * ali_c2_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection for C2 and later revisions
++ */
++
++static int ali_c2_cable_detect(struct ata_port *ap) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 ata66;
++
++ /* Certain laptops use short but suitable cables and don't
++ implement the detect logic */
++
++ /* Fujitsu P2000 */
++ if (pdev->subsystem_vendor == 0x10CF && pdev->subsystem_device == 0x10AF)
++ return ATA_CBL_PATA80;
++
++ /* Host view cable detect 0x4A bit 0 primary bit 1 secondary
++ Bit set for 40 pin */
++ pci_read_config_byte(pdev, 0x4A, &ata66);
++ if (ata66 & (1 << ap->hard_port_no))
++ return ATA_CBL_PATA40;
++ else
++ return ATA_CBL_PATA80;
++}
++
++/**
++ * ali_early_phy_reset - reset for eary chip
++ * @ap: ATA port
++ *
++ * Handle the reset callback for the later chips with cable detect
++ */
++
++static void ali_c2_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ali_c2_cable_detect(ap);
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * ali_early_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection for older chipsets. This turns out to be
++ * rather easy to implement
++ */
++
++static int ali_early_cable_detect(struct ata_port *ap) {
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * ali_early_phy_reset - reset for eary chip
++ * @ap: ATA port
++ *
++ * Handle the reset callback for the early (pre cable detect) chips.
++ */
++
++static void ali_early_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ali_early_cable_detect(ap);
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * ali_20_filter - filter for earlier ALI DMA
++ * @ap: ALi ATA port
++ * @adev: attached device
++ *
++ * Ensure that we do not do DMA on CD devices. We may be able to
++ * fix that later on. Also ensure we do not do UDMA on WDC drives
++ */
++
++static unsigned int ali_20_filter(const struct ata_port *ap, struct ata_device *adev, unsigned int mask, int shift)
++{
++ char model_num[40];
++ /* No DMA on CD for now */
++ if (adev->class != ATA_DEV_ATA && shift != ATA_SHIFT_PIO)
++ return 0;
++
++ if (shift != ATA_SHIFT_UDMA)
++ return mask;
++
++ ata_dev_id_string(adev->id, model_num, ATA_ID_PROD_OFS, sizeof(model_num));
++ if (strstr(model_num, "WDC"))
++ return 0;
++ return mask;
++}
++
++/**
++ * ali_fifo_control - FIFO manager
++ * @ap: ALi channel to control
++ * @adev: device for FIFO control
++ * @on: 0 for off 1 for on
++ *
++ * Enable or disable the FIFO on a given device. Because of the way the
++ * ALi FIFO works it provides a boost on ATA disk but can be confused by
++ * ATAPI and we must therefore manage it.
++ */
++
++static void ali_fifo_control(struct ata_port *ap, struct ata_device *adev, int on)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int pio_fifo = 0x54 + ap->hard_port_no;
++ u8 fifo;
++ int shift = 4 * adev->devno;
++
++ /* Bits 3:2 (7:6 for slave) control the PIO. 00 is off 01
++ is on. The FIFO must not be used for ATAPI. We preserve
++ BIOS set thresholds */
++ pci_read_config_byte(pdev, pio_fifo, &fifo);
++ fifo &= ~(0x0C << shift);
++ if (on)
++ fifo |= (on << shift);
++ pci_write_config_byte(pdev, pio_fifo, fifo);
++}
++
++/**
++ * ali_program_modes - load mode registers
++ * @ap: ALi channel to load
++ * @adev: Device the timing is for
++ * @cmd: Command timing
++ * @data: Data timing
++ * @udma: UDMA timing or zero for off
++ *
++ * Loads the timing registers for cmd/data and disable UDMA if
++ * udma is zero. If udma is set then load and enable the UDMA
++ * timing but do not touch the command/data timing.
++ */
++
++static void ali_program_modes(struct ata_port *ap, struct ata_device *adev, struct ata_timing *t, u8 ultra)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int cas = 0x58 + 4 * ap->hard_port_no; /* Command timing */
++ int cbt = 0x59 + 4 * ap->hard_port_no; /* Command timing */
++ int drwt = 0x5A + 4 * ap->hard_port_no + adev->devno; /* R/W timing */
++ int udmat = 0x56 + ap->hard_port_no; /* UDMA timing */
++ int shift = 4 * adev->devno;
++ u8 udma;
++
++ if (t != NULL) {
++ t->setup = FIT(t->setup, 1, 8) & 7;
++ t->act8b = FIT(t->act8b, 1, 8) & 7;
++ t->rec8b = FIT(t->rec8b, 1, 16) & 15;
++ t->active = FIT(t->active, 1, 8) & 7;
++ t->recover = FIT(t->recover, 1, 16) & 15;
++
++ pci_write_config_byte(pdev, cas, t->setup);
++ pci_write_config_byte(pdev, cbt, (t->act8b << 4) | t->rec8b);
++ pci_write_config_byte(pdev, drwt, (t->active << 4) | t->recover);
++ }
++
++ /* Set up the UDMA enable */
++ pci_read_config_byte(pdev, udmat, &udma);
++ udma &= ~(0x0F << shift);
++ udma |= ultra << shift;
++ pci_write_config_byte(pdev, udmat, udma);
++}
++
++/**
++ * ali_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the ALi registers for PIO mode. FIXME: add timings for
++ * PIO5.
++ */
++
++static void ali_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++ struct ata_timing t;
++ unsigned long T = 1000000000 / 33333; /* PCI clock based */
++
++ ata_timing_compute(adev, adev->pio_mode, &t, T, 1);
++ if (pair) {
++ struct ata_timing p;
++ ata_timing_compute(pair, pair->pio_mode, &p, T, 1);
++ ata_timing_merge(&p, &t, &t, ATA_TIMING_SETUP|ATA_TIMING_8BIT);
++ if (pair->dma_mode) {
++ ata_timing_compute(pair, pair->dma_mode, &p, T, 1);
++ ata_timing_merge(&p, &t, &t, ATA_TIMING_SETUP|ATA_TIMING_8BIT);
++ }
++ }
++
++ /* PIO FIFO is only permitted on ATA disk */
++ if (adev->class != ATA_DEV_ATA)
++ ali_fifo_control(ap, adev, 0);
++ ali_program_modes(ap, adev, &t, 0);
++ if (adev->class == ATA_DEV_ATA)
++ ali_fifo_control(ap, adev, 0x04);
++
++}
++
++/**
++ * ali_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * FIXME: MWDMA timings
++ */
++
++static void ali_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u8 udma_timing[7] = { 0xC, 0xB, 0xA, 0x9, 0x8, 0xF, 0xD };
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++ struct ata_timing t;
++ unsigned long T = 1000000000 / 33333; /* PCI clock based */
++
++
++ if (adev->class == ATA_DEV_ATA)
++ ali_fifo_control(ap, adev, 0x08);
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ ali_program_modes(ap, adev, NULL, udma_timing[adev->dma_mode - XFER_UDMA_0]);
++ } else {
++ ata_timing_compute(adev, adev->dma_mode, &t, T, 1);
++ if (pair) {
++ struct ata_timing p;
++ ata_timing_compute(pair, pair->pio_mode, &p, T, 1);
++ ata_timing_merge(&p, &t, &t, ATA_TIMING_SETUP|ATA_TIMING_8BIT);
++ if (pair->dma_mode) {
++ ata_timing_compute(pair, pair->dma_mode, &p, T, 1);
++ ata_timing_merge(&p, &t, &t, ATA_TIMING_SETUP|ATA_TIMING_8BIT);
++ }
++ }
++ ali_program_modes(ap, adev, &t, 0);
++ }
++}
++
++/**
++ * ali_lock_sectors - Keep older devices to 255 sector mode
++ * @ap: ATA port
++ * @adev: Device
++ *
++ * Called during the bus probe for each device that is found. We use
++ * this call to lock the sector count of the device to 255 or less on
++ * older ALi controllers. If we didn't do this then large I/O's would
++ * require LBA48 commands which the older ALi requires are issued by
++ * slower PIO methods
++ */
++
++static void ali_lock_sectors(struct ata_port *ap, struct ata_device *adev)
++{
++ if(ap->host->max_sectors > 255) {
++ ap->host->max_sectors = 255;
++ ap->host->hostt->max_sectors = 255;
++ }
++ adev->flags |= ATA_DFLAG_LOCK_SECTORS;
++}
++
++static struct scsi_host_template ali_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ /* Keep LBA28 counts so large I/O's don't turn LBA48 and PIO
++ with older controllers. Not locked so will grow on C5 or later */
++ .max_sectors = 255,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++/*
++ * Port operations for PIO only ALi
++ */
++
++static struct ata_port_operations ali_early_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = ali_set_piomode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = ali_early_phy_reset,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Port operations for DMA capable ALi without cable
++ * detect
++ */
++static struct ata_port_operations ali_20_port_ops = {
++ .port_disable = ata_port_disable,
++
++ .set_piomode = ali_set_piomode,
++ .set_dmamode = ali_set_dmamode,
++ .mode_filter = ali_20_filter,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++ .dev_config = ali_lock_sectors,
++
++ .phy_reset = ali_early_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Port operations for DMA capable ALi with cable detect
++ */
++static struct ata_port_operations ali_c2_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = ali_set_piomode,
++ .set_dmamode = ali_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++ .dev_config = ali_lock_sectors,
++
++ .phy_reset = ali_c2_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Port operations for DMA capable ALi with cable detect and LBA48
++ */
++static struct ata_port_operations ali_c5_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = ali_set_piomode,
++ .set_dmamode = ali_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = ali_c2_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * ali_init_one - discovery callback
++ * @pdev: PCI device ID
++ * @id: PCI table info
++ *
++ * An ALi IDE interface has been discovered. Figure out what revision
++ * and perform configuration work before handing it to the ATA layer
++ */
++
++static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info_early = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .port_ops = &ali_early_port_ops
++ };
++ /* Revision 0x20 added DMA */
++ static struct ata_port_info info_20 = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_PIO_LBA48,
++ .pio_mask = 0x1f,
++ /*.mwdma_mask = 0x07,*/
++ .port_ops = &ali_20_port_ops
++ };
++ /* Revision 0x20 with support logic added UDMA */
++ static struct ata_port_info info_20_udma = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_PIO_LBA48,
++ .pio_mask = 0x1f,
++ /*.mwdma_mask = 0x07, */
++ .udma_mask = 0x07, /* UDMA33 */
++ .port_ops = &ali_20_port_ops
++ };
++ /* Revision 0xC2 adds UDMA66 */
++ static struct ata_port_info info_c2 = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_PIO_LBA48,
++ .pio_mask = 0x1f,
++ /*.mwdma_mask = 0x07, */
++ .udma_mask = 0x1f,
++ .port_ops = &ali_c2_port_ops
++ };
++ /* Revision 0xC3 is UDMA100 */
++ static struct ata_port_info info_c3 = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_PIO_LBA48,
++ .pio_mask = 0x1f,
++ /* .mwdma_mask = 0x07, */
++ .udma_mask = 0x3f,
++ .port_ops = &ali_c2_port_ops
++ };
++ /* Revision 0xC4 is UDMA133 */
++ static struct ata_port_info info_c4 = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_PIO_LBA48,
++ .pio_mask = 0x1f,
++ /* .mwdma_mask = 0x07, */
++ .udma_mask = 0x7f,
++ .port_ops = &ali_c2_port_ops
++ };
++ /* Revision 0xC5 is UDMA133 with LBA48 DMA */
++ static struct ata_port_info info_c5 = {
++ .sht = &ali_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ /* .mwdma_mask = 0x07, */
++ .udma_mask = 0x7f,
++ .port_ops = &ali_c5_port_ops
++ };
++
++ static struct ata_port_info *port_info[2];
++ u8 rev, tmp;
++ struct pci_dev *north, *isa_bridge;
++
++ pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
++
++ /*
++ * The chipset revision selects the driver operations and
++ * mode data.
++ */
++
++ if (rev < 0x20) {
++ port_info[0] = port_info[1] = &info_early;
++ } else if (rev < 0xC2) {
++ /* 1543-E/F, 1543C-C, 1543C-D, 1543C-E */
++ pci_read_config_byte(pdev, 0x4B, &tmp);
++ /* Clear CD-ROM DMA write bit */
++ tmp &= 0x7F;
++ pci_write_config_byte(pdev, 0x4B, tmp);
++ port_info[0] = port_info[1] = &info_20;
++ } else if (rev == 0xC2) {
++ port_info[0] = port_info[1] = &info_c2;
++ } else if (rev == 0xC3) {
++ port_info[0] = port_info[1] = &info_c3;
++ } else if (rev == 0xC4) {
++ port_info[0] = port_info[1] = &info_c4;
++ } else
++ port_info[0] = port_info[1] = &info_c5;
++
++ if (rev >= 0xC2) {
++ /* Enable cable detection logic */
++ pci_read_config_byte(pdev, 0x4B, &tmp);
++ pci_write_config_byte(pdev, 0x4B, tmp | 0x08);
++ }
++
++ north = pci_get_slot(pdev->bus, PCI_DEVFN(0,0));
++ isa_bridge = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
++
++ if (north && north->vendor == PCI_VENDOR_ID_AL) {
++ /* Configure the ALi bridge logic. For non ALi rely on BIOS.
++ Set the south bridge enable bit */
++ pci_read_config_byte(isa_bridge, 0x79, &tmp);
++ if (rev == 0xC2)
++ pci_write_config_byte(isa_bridge, 0x79, tmp | 0x04);
++ else if (rev > 0xC2)
++ pci_write_config_byte(isa_bridge, 0x79, tmp | 0x02);
++ }
++
++ if (rev >= 0x20) {
++ if (rev < 0xC2) {
++ /* Are we paired with a UDMA capable chip */
++ pci_read_config_byte(isa_bridge, 0x5E, &tmp);
++ if ((tmp & 0x1E) == 0x12)
++ port_info[0] = port_info[1] = &info_20_udma;
++ }
++ /*
++ * CD_ROM DMA on (0x53 bit 0). Enable this even if we want
++ * to use PIO. 0x53 bit 1 (rev 20 only) - enable FIFO control
++ * via 0x54/55.
++ */
++ pci_read_config_byte(pdev, 0x53, &tmp);
++ if (rev == 0x20)
++ tmp &= ~0x02;
++ tmp |= 0x01; /* CD_ROM enable for DMA */
++ pci_write_config_byte(pdev, 0x53, tmp);
++ }
++
++ pci_dev_put(isa_bridge);
++ pci_dev_put(north);
++
++ ata_pci_clear_simplex(pdev);
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static struct pci_device_id ali[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5228), },
++ { PCI_DEVICE(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5229), },
++ { 0, },
++};
++
++static struct pci_driver ali_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = ali,
++ .probe = ali_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init ali_init(void)
++{
++ return pci_register_driver(&ali_pci_driver);
++}
++
++
++static void __exit ali_exit(void)
++{
++ pci_unregister_driver(&ali_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for ALi PATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, ali);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(ali_init);
++module_exit(ali_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_amd.c linux-2.6.16-rc6/drivers/scsi/pata_amd.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_amd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_amd.c 2006-02-16 15:37:39.000000000 +0000
+@@ -0,0 +1,650 @@
++/*
++ * pata_amd.c - AMD PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based on pata-sil680. Errata information is taken from data sheets
++ * and the amd74xx.c driver by Vojtech Pavlik. Nvidia SATA devices are
++ * claimed by sata-nv.c.
++ *
++ * TODO:
++ * Nvidia support here or seperated ?
++ * Debug cable detect
++ * Variable system clock when/if it makes sense
++ * Power management on ports
++ *
++ *
++ * Documentation publically available.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_amd"
++#define DRV_VERSION "0.1.3"
++
++/**
++ * timing_setup - shared timing computation and load
++ * @ap: ATA port being set up
++ * @adev: drive being configured
++ * @offset: port offset
++ * @speed: target speed
++ * @clock: clock multiplier (number of times 33MHz for this part)
++ *
++ * Perform the actual timing set up for Nvidia or AMD PATA devices.
++ * The actual devices vary so they all call into this helper function
++ * providing the clock multipler and offset (because AMD and Nvidia put
++ * the ports at different locations).
++ */
++
++static void timing_setup(struct ata_port *ap, struct ata_device *adev, int offset, int speed, int clock)
++{
++ static const unsigned char amd_cyc2udma[] = {
++ 6, 6, 5, 4, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 7
++ };
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct ata_device *peer = ata_dev_pair(ap, adev);
++ int dn = ap->hard_port_no * 2 + adev->devno;
++ struct ata_timing at, apeer;
++ int T, UT;
++ const int amd_clock = 33333; /* KHz. */
++ u8 t;
++
++ T = 1000000000 / amd_clock;
++ UT = T / min_t(int, max_t(int, clock, 1), 2);
++
++ if (ata_timing_compute(adev, speed, &at, T, UT) < 0) {
++ dev_printk(KERN_ERR, &pdev->dev, "unknown mode %d.\n", speed);
++ return;
++ }
++
++ if (peer) {
++ /* This may be over conservative */
++ if (peer->dma_mode) {
++ ata_timing_compute(peer, peer->dma_mode, &apeer, T, UT);
++ ata_timing_merge(&apeer, &at, &at, ATA_TIMING_8BIT);
++ }
++ ata_timing_compute(peer, peer->pio_mode, &apeer, T, UT);
++ ata_timing_merge(&apeer, &at, &at, ATA_TIMING_8BIT);
++ }
++
++ if (speed == XFER_UDMA_5 && amd_clock <= 33333) at.udma = 1;
++ if (speed == XFER_UDMA_6 && amd_clock <= 33333) at.udma = 15;
++
++ /*
++ * Now do the setup work
++ */
++
++ /* Configure the address set up timing */
++ pci_read_config_byte(pdev, offset + 0x0C, &t);
++ t = (t & ~(3 << ((3 - dn) << 1))) | ((FIT(at.setup, 1, 4) - 1) << ((3 - dn) << 1));
++ pci_write_config_byte(pdev, offset + 0x0C , t);
++
++ /* Configure the 8bit I/O timing */
++ pci_write_config_byte(pdev, offset + 0x0E + (1 - (dn >> 1)),
++ ((FIT(at.act8b, 1, 16) - 1) << 4) | (FIT(at.rec8b, 1, 16) - 1));
++
++ /* Drive timing */
++ pci_write_config_byte(pdev, offset + 0x08 + (3 - dn),
++ ((FIT(at.active, 1, 16) - 1) << 4) | (FIT(at.recover, 1, 16) - 1));
++
++ switch (clock) {
++ case 1:
++ t = at.udma ? (0xc0 | (FIT(at.udma, 2, 5) - 2)) : 0x03;
++ break;
++
++ case 2:
++ t = at.udma ? (0xc0 | amd_cyc2udma[FIT(at.udma, 2, 10)]) : 0x03;
++ break;
++
++ case 3:
++ t = at.udma ? (0xc0 | amd_cyc2udma[FIT(at.udma, 1, 10)]) : 0x03;
++ break;
++
++ case 4:
++ t = at.udma ? (0xc0 | amd_cyc2udma[FIT(at.udma, 1, 15)]) : 0x03;
++ break;
++
++ default:
++ return;
++ }
++
++ /* UDMA timing */
++ pci_write_config_byte(pdev, offset + 0x10 + (3 - dn), t);
++}
++
++/**
++ * amd_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection. The BIOS stores this in PCI config
++ * space for us.
++ */
++
++static int amd_cable_detect(struct ata_port *ap) {
++ static u32 bitmask[2] = {0x00030000, 0x00C00000};
++ u32 ata66;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_dword(pdev, 0x42, &ata66);
++ if (ata66 & bitmask[ap->hard_port_no])
++ return ATA_CBL_PATA80;
++ else
++ return ATA_CBL_PATA40;
++
++}
++
++static void amd_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits amd_enable_bits[] = {
++ { 0x40, 1, 0x02, 0x02 },
++ { 0x40, 1, 0x01, 0x01 }
++ };
++
++ if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = amd_cable_detect(ap);
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * amd33_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the AMD registers for PIO mode.
++ */
++
++static void amd33_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->pio_mode, 1);
++}
++
++static void amd66_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->pio_mode, 2);
++}
++
++static void amd100_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->pio_mode, 3);
++}
++
++static void amd133_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->pio_mode, 4);
++}
++
++/**
++ * amd33_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the MWDMA/UDMA modes for the AMD and Nvidia
++ * chipset.
++ */
++
++static void amd33_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->dma_mode, 1);
++}
++
++static void amd66_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->dma_mode, 2);
++}
++
++static void amd100_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->dma_mode, 3);
++}
++
++static void amd133_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x40, adev->dma_mode, 4);
++}
++
++
++/**
++ * nv_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection. The BIOS stores this in PCI config
++ * space for us.
++ */
++
++static int nv_cable_detect(struct ata_port *ap) {
++ static u32 bitmask[2] = {0x00030000, 0x00C00000};
++ u32 ata66;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_dword(pdev, 0x52, &ata66);
++ if (ata66 & bitmask[ap->hard_port_no])
++ return ATA_CBL_PATA80;
++ else
++ return ATA_CBL_PATA40;
++
++}
++
++static void nv_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = nv_cable_detect(ap);
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * nv100_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the AMD registers for PIO mode.
++ */
++
++static void nv100_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x50, adev->pio_mode, 3);
++}
++
++static void nv133_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x50, adev->pio_mode, 4);
++}
++
++/**
++ * nv100_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the MWDMA/UDMA modes for the AMD and Nvidia
++ * chipset.
++ */
++
++static void nv100_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x50, adev->dma_mode, 3);
++}
++
++static void nv133_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ timing_setup(ap, adev, 0x50, adev->dma_mode, 4);
++}
++
++static struct scsi_host_template amd_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations amd33_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = amd33_set_piomode,
++ .set_dmamode = amd33_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = amd_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations amd66_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = amd66_set_piomode,
++ .set_dmamode = amd66_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = amd_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations amd100_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = amd100_set_piomode,
++ .set_dmamode = amd100_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = amd_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations amd133_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = amd133_set_piomode,
++ .set_dmamode = amd133_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = amd_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations nv100_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = nv100_set_piomode,
++ .set_dmamode = nv100_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = nv_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations nv133_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = nv133_set_piomode,
++ .set_dmamode = nv133_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = nv_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int amd_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info[10] = {
++ { /* 0: AMD 7401 */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07, /* No SWDMA */
++ .udma_mask = 0x07, /* UDMA 33 */
++ .port_ops = &amd33_port_ops
++ },
++ { /* 1: Early AMD7409 - no swdma */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x1f, /* UDMA 66 */
++ .port_ops = &amd66_port_ops
++ },
++ { /* 2: AMD 7409, no swdma errata */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x1f, /* UDMA 66 */
++ .port_ops = &amd66_port_ops
++ },
++ { /* 3: AMD 7411 */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f, /* UDMA 100 */
++ .port_ops = &amd100_port_ops
++ },
++ { /* 4: AMD 7441 */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f, /* UDMA 100 */
++ .port_ops = &amd100_port_ops
++ },
++ { /* 5: AMD 8111*/
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f, /* UDMA 133, no swdma */
++ .port_ops = &amd133_port_ops
++ },
++ { /* 6: AMD 8111 UDMA 100 (Serenade) */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f, /* UDMA 100, no swdma */
++ .port_ops = &amd133_port_ops
++ },
++ { /* 7: Nvidia Nforce */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f, /* UDMA 100 */
++ .port_ops = &nv100_port_ops
++ },
++ { /* 8: Nvidia Nforce2 and later */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f, /* UDMA 133, no swdma */
++ .port_ops = &nv133_port_ops
++ },
++ { /* 9: AMD CS5536 (Geode companion) */
++ .sht = &amd_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f, /* UDMA 100 */
++ .port_ops = &amd100_port_ops
++ }
++ };
++ static struct ata_port_info *port_info[2];
++ static int printed_version;
++ int type = id->driver_data;
++ u8 rev;
++ u8 fifo;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
++
++ pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
++ pci_read_config_byte(pdev, 0x41, &fifo);
++
++ /* Check for AMD7409 without swdma errata and if found adjust type */
++ if (type == 1 && rev > 0x7)
++ type = 2;
++
++ /* Check for AMD7411 */
++ if (type == 3)
++ /* FIFO is broken */
++ pci_write_config_byte(pdev, 0x41, fifo & 0x0F);
++ else
++ pci_write_config_byte(pdev, 0x41, fifo | 0xF0);
++
++ /* Serenade ? */
++ if (type == 5 && pdev->subsystem_vendor == PCI_VENDOR_ID_AMD &&
++ pdev->subsystem_device == PCI_DEVICE_ID_AMD_SERENADE)
++ type = 6; /* UDMA 100 only */
++
++ if (type < 3)
++ ata_pci_clear_simplex(pdev);
++
++ /* And fire it up */
++
++ port_info[0] = port_info[1] = &info[type];
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id amd[] = {
++ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_COBRA_7401, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7409, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 },
++ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7411, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3 },
++ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_OPUS_7441, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 },
++ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 5 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 7 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 },
++ { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 9 },
++ { 0, },
++};
++
++static struct pci_driver amd_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = amd,
++ .probe = amd_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init amd_init(void)
++{
++ return pci_register_driver(&amd_pci_driver);
++}
++
++static void __exit amd_exit(void)
++{
++ pci_unregister_driver(&amd_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for AMD PATA IDE");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, amd);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(amd_init);
++module_exit(amd_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_artop.c linux-2.6.16-rc6/drivers/scsi/pata_artop.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_artop.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_artop.c 2006-02-26 12:49:34.000000000 +0000
+@@ -0,0 +1,506 @@
++/*
++ * pata_artop.c - ARTOP ATA controller driver
++ *
++ * (C) 2006 Red Hat <alan@redhat.com>
++ *
++ * Based in part on drivers/ide/pci/aec62xx.c
++ * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org>
++ * 865/865R fixes for Macintosh card version from a patch to the old
++ * driver by Thibaut VARENE <varenet@parisc-linux.org>
++ * When setting the PCI latency we must set 0x80 or higher for burst
++ * performance Alessandro Zummo <alessandro.zummo@towertech.it>
++ *
++ * TODO
++ * 850 serialization once the core supports it
++ * Investigate no_dsc on 850R
++ * Clock detect
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/ata.h>
++
++#define DRV_NAME "pata_artop"
++#define DRV_VERSION "0.2.1"
++
++/*
++ * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we
++ * get PCI bus speed functionality we leave this as 0. Its a variable
++ * for when we get the functionality and also for folks wanting to
++ * test stuff.
++ */
++
++static int clock = 0;
++
++/**
++ * artop6210_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6210_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ const struct pci_bits artop_enable_bits[] = {
++ { 0x4AU, 1U, 0x02UL, 0x02UL }, /* port 0 */
++ { 0x4AU, 1U, 0x04UL, 0x04UL }, /* port 1 */
++ };
++
++ if (!pci_test_config_bits(pdev, &artop_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * artop6260_cable_detect - check for 40/80 pin
++ * @ap: Port
++ *
++ * The ARTOP hardware reports the cable detect bits in register 0x49.
++ * Nothing complicated needed here.
++ */
++
++static int artop6260_cable_detect(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 tmp;
++
++ pci_read_config_byte(pdev, 0x49, &tmp);
++ if (tmp & (1 >> ap->hard_port_no))
++ return ATA_CBL_PATA40;
++ return ATA_CBL_PATA80;
++}
++
++/**
++ * artop6260_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6260_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ const struct pci_bits artop_enable_bits[] = {
++ { 0x4AU, 1U, 0x02UL, 0x02UL }, /* port 0 */
++ { 0x4AU, 1U, 0x04UL, 0x04UL }, /* port 1 */
++ };
++
++ /* Odd numbered device ids are the units with enable bits (the -R cards) */
++ if (pdev->device % 1 && !pci_test_config_bits(pdev, &artop_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = artop6260_cable_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * artop6210_load_piomode - Load a set of PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device
++ * @pio: PIO mode
++ *
++ * Set PIO mode for device, in host controller PCI config space. This
++ * is used both to set PIO timings in PIO mode and also to set the
++ * matching PIO clocking for UDMA, as well as the MWDMA timings.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6210_load_piomode(struct ata_port *ap, struct ata_device *adev, unsigned int pio)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = adev->devno + 2 * ap->hard_port_no;
++ const u16 timing[2][5] = {
++ { 0x0000, 0x000A, 0x0008, 0x0303, 0x0301 },
++ { 0x0700, 0x070A, 0x0708, 0x0403, 0x0401 }
++
++ };
++ /* Load the PIO timing active/recovery bits */
++ pci_write_config_word(pdev, 0x40 + 2 * dn, timing[clock][pio]);
++}
++
++/**
++ * artop6210_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring
++ *
++ * Set PIO mode for device, in host controller PCI config space. For
++ * ARTOP we must also clear the UDMA bits if we are not doing UDMA. In
++ * the event UDMA is used the later call to set_dmamode will set the
++ * bits as required.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6210_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = adev->devno + 2 * ap->hard_port_no;
++ u8 ultra;
++
++ artop6210_load_piomode(ap, adev, adev->pio_mode - XFER_PIO_0);
++
++ /* Clear the UDMA mode bits (set_dmamode will redo this if needed) */
++ pci_read_config_byte(pdev, 0x54, &ultra);
++ ultra &= ~(3 << (2 * dn));
++ pci_write_config_byte(pdev, 0x54, ultra);
++}
++
++/**
++ * artop6260_load_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring
++ * @pio: PIO mode
++ *
++ * Set PIO mode for device, in host controller PCI config space. The
++ * ARTOP6260 and relatives store the timing data differently.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6260_load_piomode (struct ata_port *ap, struct ata_device *adev, unsigned int pio)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = adev->devno + 2 * ap->hard_port_no;
++ const u8 timing[2][5] = {
++ { 0x00, 0x0A, 0x08, 0x33, 0x31 },
++ { 0x70, 0x7A, 0x78, 0x43, 0x41 }
++
++ };
++ /* Load the PIO timing active/recovery bits */
++ pci_write_config_byte(pdev, 0x40 + dn, timing[clock][pio]);
++}
++
++/**
++ * artop6260_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring
++ *
++ * Set PIO mode for device, in host controller PCI config space. For
++ * ARTOP we must also clear the UDMA bits if we are not doing UDMA. In
++ * the event UDMA is used the later call to set_dmamode will set the
++ * bits as required.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6260_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 ultra;
++
++ artop6260_load_piomode(ap, adev, adev->pio_mode - XFER_PIO_0);
++
++ /* Clear the UDMA mode bits (set_dmamode will redo this if needed) */
++ pci_read_config_byte(pdev, 0x44 + ap->hard_port_no, &ultra);
++ ultra &= ~(7 << (4 * adev->devno)); /* One nibble per drive */
++ pci_write_config_byte(pdev, 0x44 + ap->hard_port_no, ultra);
++}
++
++/**
++ * artop6210_set_dmamode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: um
++ *
++ * Set DMA mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6210_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int pio;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = adev->devno + 2 * ap->hard_port_no;
++ u8 ultra;
++
++ if (adev->dma_mode == XFER_MW_DMA_0)
++ pio = 1;
++ else
++ pio = 4;
++
++ /* Load the PIO timing active/recovery bits */
++ artop6210_load_piomode(ap, adev, pio);
++
++ pci_read_config_byte(pdev, 0x54, &ultra);
++ ultra &= ~(3 << (2 * dn));
++
++ /* Add ultra DMA bits if in UDMA mode */
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ u8 mode = (adev->dma_mode - XFER_UDMA_0) + 1 - clock;
++ if (mode == 0)
++ mode = 1;
++ ultra |= (mode << (2 * dn));
++ }
++ pci_write_config_byte(pdev, 0x54, ultra);
++}
++
++/**
++ * artop6260_set_dmamode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring
++ *
++ * Set DMA mode for device, in host controller PCI config space. The
++ * ARTOP6260 and relatives store the timing data differently.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void artop6260_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int pio = adev->pio_mode - XFER_PIO_0;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 ultra;
++
++ if (adev->dma_mode == XFER_MW_DMA_0)
++ pio = 1;
++ else
++ pio = 4;
++
++ /* Load the PIO timing active/recovery bits */
++ artop6260_load_piomode(ap, adev, pio);
++
++ /* Add ultra DMA bits if in UDMA mode */
++ pci_read_config_byte(pdev, 0x44 + ap->hard_port_no, &ultra);
++ ultra &= ~(7 << (4 * adev->devno)); /* One nibble per drive */
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ u8 mode = adev->dma_mode - XFER_UDMA_0 + 1 - clock;
++ if (mode == 0)
++ mode = 1;
++ ultra |= (mode << (4 * adev->devno));
++ }
++ pci_write_config_byte(pdev, 0x44 + ap->hard_port_no, ultra);
++}
++
++static struct scsi_host_template artop_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static const struct ata_port_operations artop6210_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = artop6210_set_piomode,
++ .set_dmamode = artop6210_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = artop6210_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static const struct ata_port_operations artop6260_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = artop6260_set_piomode,
++ .set_dmamode = artop6260_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = artop6260_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++
++/**
++ * artop_init_one - Register ARTOP ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in artop_pci_tbl matching with @pdev
++ *
++ * Called from kernel PCI layer.
++ *
++ * LOCKING:
++ * Inherited from PCI layer (may sleep).
++ *
++ * RETURNS:
++ * Zero on success, or -ERRNO value.
++ */
++
++static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ static int printed_version;
++ static struct ata_port_info info_6210 = {
++ .sht = &artop_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma0-2 */
++ .udma_mask = ATA_UDMA2,
++ .port_ops = &artop6210_ops,
++ };
++ static struct ata_port_info info_626x = {
++ .sht = &artop_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma0-2 */
++ .udma_mask = ATA_UDMA4,
++ .port_ops = &artop6260_ops,
++ };
++ static struct ata_port_info info_626x_fast = {
++ .sht = &artop_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma0-2 */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &artop6260_ops,
++ };
++ struct ata_port_info *port_info[2];
++ struct ata_port_info *info;
++ int ports = 2;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev,
++ "version " DRV_VERSION "\n");
++
++ if (id->driver_data == 0) { /* 6210 variant */
++ info = &info_6210;
++ /* BIOS may have left us in UDMA, clear it before libata probe */
++ pci_write_config_byte(pdev, 0x54, 0);
++ /* For the moment (also lacks dsc) */
++ printk(KERN_WARNING "ARTOP 6210 requires serialize functionality not yet supported by libata.\n");
++ printk(KERN_WARNING "Secondary ATA ports will not be activated.\n");
++ ports = 1;
++ }
++ else if (id->driver_data == 1) /* 6260 */
++ info = &info_626x;
++ else if (id->driver_data == 2) { /* 6260 or 6260 + fast */
++ unsigned long io = pci_resource_start(pdev, 4);
++ u8 reg;
++
++ info = &info_626x;
++ if (inb(io) & 0x10)
++ info = &info_626x_fast;
++ /* Mac systems come up with some registers not set as we
++ will need them */
++
++ /* Clear reset & test bits */
++ pci_read_config_byte(pdev, 0x49, &reg);
++ pci_write_config_byte(pdev, 0x49, reg & ~ 0x30);
++
++ /* PCI latency must be > 0x80 for burst mode, tweak it
++ * if required.
++ */
++ pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &reg);
++ if (reg <= 0x80)
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x90);
++
++ /* Enable IRQ output and burst mode */
++ pci_read_config_byte(pdev, 0x4a, &reg);
++ pci_write_config_byte(pdev, 0x4a, (reg & ~0x01) | 0x80);
++
++ }
++ port_info[0] = port_info[1] = info;
++ return ata_pci_init_one(pdev, port_info, ports);
++}
++
++static const struct pci_device_id artop_pci_tbl[] = {
++ { 0x1191, 0x0005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { 0x1191, 0x0006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
++ { 0x1191, 0x0007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
++ { 0x1191, 0x0008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { 0x1191, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { } /* terminate list */
++};
++
++static struct pci_driver artop_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = artop_pci_tbl,
++ .probe = artop_init_one,
++ .remove = ata_pci_remove_one,
++};
++
++static int __init artop_init(void)
++{
++ return pci_register_driver(&artop_pci_driver);
++}
++
++static void __exit artop_exit(void)
++{
++ pci_unregister_driver(&artop_pci_driver);
++}
++
++
++module_init(artop_init);
++module_exit(artop_exit);
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("SCSI low-level driver for ARTOP PATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, artop_pci_tbl);
++MODULE_VERSION(DRV_VERSION);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_atiixp.c linux-2.6.16-rc6/drivers/scsi/pata_atiixp.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_atiixp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_atiixp.c 2006-02-07 13:42:02.000000000 +0000
+@@ -0,0 +1,299 @@
++/*
++ * pata_atiixp.c - ATI PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based on
++ *
++ * linux/drivers/ide/pci/atiixp.c Version 0.01-bart2 Feb. 26, 2004
++ *
++ * Copyright (C) 2003 ATI Inc. <hyu@ati.com>
++ * Copyright (C) 2004 Bartlomiej Zolnierkiewicz
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_atiixp"
++#define DRV_VERSION "0.1.1"
++
++enum {
++ ATIIXP_IDE_PIO_TIMING = 0x40,
++ ATIIXP_IDE_MWDMA_TIMING = 0x44,
++ ATIIXP_IDE_PIO_CONTROL = 0x48,
++ ATIIXP_IDE_PIO_MODE = 0x4a,
++ ATIIXP_IDE_UDMA_CONTROL = 0x54,
++ ATIIXP_IDE_UDMA_MODE = 0x56
++};
++
++static void atiixp_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits atiixp_enable_bits[] = {
++ { 0x48, 1, 0x01, 0x00 },
++ { 0x48, 1, 0x08, 0x00 }
++ };
++
++ if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA80;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * atiixp_set_pio_timing - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called by both the pio and dma setup functions to set the controller
++ * timings for PIO transfers. We must load both the mode number and
++ * timing values into the controller.
++ */
++
++static void atiixp_set_pio_timing(struct ata_port *ap, struct ata_device *adev, int pio)
++{
++ static u8 pio_timings[5] = { 0x5D, 0x47, 0x34, 0x22, 0x20 };
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = 2 * ap->hard_port_no + adev->devno;
++
++ /* Check this is correct - the order is odd in both drivers */
++ int timing_shift = (16 * ap->hard_port_no) + 8 * (adev->devno ^ 1);
++ u16 pio_mode_data, pio_timing_data;
++
++ pci_read_config_word(pdev, ATIIXP_IDE_PIO_MODE, &pio_mode_data);
++ pio_mode_data &= ~(0x7 << (4 * dn));
++ pio_mode_data |= pio << (4 * dn);
++ pci_write_config_word(pdev, ATIIXP_IDE_PIO_MODE, pio_mode_data);
++
++ pci_read_config_word(pdev, ATIIXP_IDE_PIO_TIMING, &pio_timing_data);
++ pio_mode_data &= ~(0xFF << timing_shift);
++ pio_mode_data |= (pio_timings[pio] << timing_shift);
++ pci_write_config_word(pdev, ATIIXP_IDE_PIO_TIMING, pio_timing_data);
++}
++
++/**
++ * atiixp_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup. We use a shared helper for this
++ * as the DMA setup must also adjust the PIO timing information.
++ */
++
++static void atiixp_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ atiixp_set_pio_timing(ap, adev, adev->pio_mode - XFER_PIO_0);
++}
++
++/**
++ * atiixp_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the DMA mode setup. We use timing tables for most
++ * modes but must tune an appropriate PIO mode to match.
++ */
++
++static void atiixp_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u8 mwdma_timings[5] = { 0x77, 0x21, 0x20 };
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dma = adev->dma_mode;
++ int dn = 2 * ap->hard_port_no + adev->devno;
++ int wanted_pio;
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ u16 udma_mode_data;
++
++ dma -= XFER_UDMA_0;
++
++ pci_read_config_word(pdev, ATIIXP_IDE_UDMA_MODE, &udma_mode_data);
++ udma_mode_data &= ~(0x7 << (4 * dn));
++ udma_mode_data |= dma << (4 * dn);
++ pci_write_config_word(pdev, ATIIXP_IDE_UDMA_MODE, udma_mode_data);
++ } else {
++ u16 mwdma_timing_data;
++ /* Check this is correct - the order is odd in both drivers */
++ int timing_shift = (16 * ap->hard_port_no) + 8 * (adev->devno ^ 1);
++
++ dma -= XFER_MW_DMA_0;
++
++ pci_read_config_word(pdev, ATIIXP_IDE_MWDMA_TIMING, &mwdma_timing_data);
++ mwdma_timing_data &= ~(0xFF << timing_shift);
++ mwdma_timing_data |= (mwdma_timings[dma] << timing_shift);
++ pci_write_config_word(pdev, ATIIXP_IDE_MWDMA_TIMING, mwdma_timing_data);
++ }
++ /*
++ * We must now look at the PIO mode situation. We may need to
++ * adjust the PIO mode to keep the timings acceptable
++ */
++ if (adev->dma_mode >= XFER_MW_DMA_2)
++ wanted_pio = 4;
++ else if (adev->dma_mode == XFER_MW_DMA_1)
++ wanted_pio = 3;
++ else if (adev->dma_mode == XFER_MW_DMA_0)
++ wanted_pio = 0;
++ else BUG();
++
++ if (adev->pio_mode != wanted_pio)
++ atiixp_set_pio_timing(ap, adev, wanted_pio);
++}
++
++/**
++ * atiixp_bmdma_start - DMA start callback
++ * @qc: Command in progress
++ *
++ * When DMA begins we need to ensure that the UDMA control
++ * register for the channel is correctly set.
++ */
++
++static void atiixp_bmdma_start(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = (2 * ap->hard_port_no) + adev->devno;
++ u16 tmp16;
++
++ pci_read_config_word(pdev, ATIIXP_IDE_UDMA_CONTROL, &tmp16);
++ if (adev->dma_mode >= XFER_UDMA_0)
++ tmp16 |= (1 << dn);
++ else
++ tmp16 &= ~(1 << dn);
++ pci_write_config_word(pdev, ATIIXP_IDE_UDMA_CONTROL, tmp16);
++ ata_bmdma_start(qc);
++}
++
++/**
++ * atiixp_dma_stop - DMA stop callback
++ * @qc: Command in progress
++ *
++ * DMA has completed. Clear the UDMA flag as the next operations will
++ * be PIO ones not UDMA data transfer.
++ */
++
++static void atiixp_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = (2 * ap->hard_port_no) + qc->dev->devno;
++ u16 tmp16;
++
++ pci_read_config_word(pdev, ATIIXP_IDE_UDMA_CONTROL, &tmp16);
++ tmp16 &= ~(1 << dn);
++ pci_write_config_word(pdev, ATIIXP_IDE_UDMA_CONTROL, tmp16);
++ ata_bmdma_stop(qc);
++}
++
++static struct scsi_host_template atiixp_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations atiixp_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = atiixp_set_piomode,
++ .set_dmamode = atiixp_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = atiixp_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = atiixp_bmdma_start,
++ .bmdma_stop = atiixp_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &atiixp_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x06, /* No MWDMA0 support */
++ .udma_mask = 0x3F,
++ .port_ops = &atiixp_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id atiixp[] = {
++ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP200_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { 0, },
++};
++
++static struct pci_driver atiixp_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = atiixp,
++ .probe = atiixp_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init atiixp_init(void)
++{
++ return pci_register_driver(&atiixp_pci_driver);
++}
++
++
++static void __exit atiixp_exit(void)
++{
++ pci_unregister_driver(&atiixp_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for ATI IXP200/300/400");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, atiixp);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(atiixp_init);
++module_exit(atiixp_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cmd64x.c linux-2.6.16-rc6/drivers/scsi/pata_cmd64x.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cmd64x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_cmd64x.c 2006-02-16 15:34:39.000000000 +0000
+@@ -0,0 +1,486 @@
++/*
++ * pata_cmd64x.c - ATI PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based upon
++ * linux/drivers/ide/pci/cmd64x.c Version 1.30 Sept 10, 2002
++ *
++ * cmd64x.c: Enable interrupts at initialization time on Ultra/PCI machines.
++ * Note, this driver is not used at all on other systems because
++ * there the "BIOS" has done all of the following already.
++ * Due to massive hardware bugs, UltraDMA is only supported
++ * on the 646U2 and not on the 646U.
++ *
++ * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be)
++ * Copyright (C) 1998 David S. Miller (davem@redhat.com)
++ *
++ * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org>
++ *
++ * TODO
++ * Testing work
++ * Non x86 needs PIO 0 loading before we commence ident
++ * - but this belongs in libata-core
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_cmd64x"
++#define DRV_VERSION "0.1.1"
++
++/*
++ * CMD64x specific registers definition.
++ */
++
++enum {
++ CFR = 0x50,
++ CFR_INTR_CH0 = 0x02,
++ CNTRL = 0x51,
++ CNTRL_DIS_RA0 = 0x40,
++ CNTRL_DIS_RA1 = 0x80,
++ CNTRL_ENA_2ND = 0x08,
++ CMDTIM = 0x52,
++ ARTTIM0 = 0x53,
++ DRWTIM0 = 0x54,
++ ARTTIM1 = 0x55,
++ DRWTIM1 = 0x56,
++ ARTTIM23 = 0x57,
++ ARTTIM23_DIS_RA2 = 0x04,
++ ARTTIM23_DIS_RA3 = 0x08,
++ ARTTIM23_INTR_CH1 = 0x10,
++ ARTTIM2 = 0x57,
++ ARTTIM3 = 0x57,
++ DRWTIM23 = 0x58,
++ DRWTIM2 = 0x58,
++ BRST = 0x59,
++ DRWTIM3 = 0x5b,
++ BMIDECR0 = 0x70,
++ MRDMODE = 0x71,
++ MRDMODE_INTR_CH0 = 0x04,
++ MRDMODE_INTR_CH1 = 0x08,
++ MRDMODE_BLK_CH0 = 0x10,
++ MRDMODE_BLK_CH1 = 0x20,
++ BMIDESR0 = 0x72,
++ UDIDETCR0 = 0x73,
++ DTPR0 = 0x74,
++ BMIDECR1 = 0x78,
++ BMIDECSR = 0x79,
++ BMIDESR1 = 0x7A,
++ UDIDETCR1 = 0x7B,
++ DTPR1 = 0x7C
++};
++
++/* Phee Phy Pho Phum */
++
++static void cmd64x_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++static void cmd648_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 r;
++
++ /* Check cable detect bits */
++ pci_read_config_byte(pdev, BMIDECSR, &r);
++ if (r & (1 << ap->hard_port_no))
++ ap->cbl = ATA_CBL_PATA80;
++ else
++ ap->cbl = ATA_CBL_PATA40;
++
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * cmd64x_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup.
++ */
++
++static void cmd64x_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct ata_timing t;
++ const unsigned long T = 1000000 / 33;
++ const u8 setup_data[] = { 0x40, 0x40, 0x40, 0x80, 0x00 };
++
++ u8 reg;
++
++ /* Port layout is not logical so use a table */
++ const u8 arttim_port[2][2] = {
++ { ARTTIM0, ARTTIM1 },
++ { ARTTIM23, ARTTIM23 }
++ };
++ const u8 drwtim_port[2][2] = {
++ { DRWTIM0, DRWTIM1 },
++ { DRWTIM2, DRWTIM3 }
++ };
++
++ int arttim = arttim_port[ap->hard_port_no][adev->devno];
++ int drwtim = drwtim_port[ap->hard_port_no][adev->devno];
++
++
++ if (ata_timing_compute(adev, adev->pio_mode, &t, T, 0) < 0) {
++ printk(KERN_ERR DRV_NAME ": mome computation failed.\n");
++ return;
++ }
++ if (ap->hard_port_no) {
++ /* Slave has shared address setup */
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++
++ if (pair) {
++ struct ata_timing tp;
++ ata_timing_compute(pair, pair->pio_mode, &tp, T, 0);
++ ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP);
++ }
++ }
++
++ printk(KERN_DEBUG DRV_NAME ": active %d recovery %d setup %d.\n",
++ t.active, t.recover, t.setup);
++ if (t.recover > 16) {
++ t.active += t.recover - 16;
++ t.recover = 16;
++ }
++ if (t.active > 16)
++ t.active = 16;
++
++ /* Now convert the clocks into values we can actually stuff into
++ the chip */
++
++ if (t.recover > 1)
++ t.recover--;
++ else
++ t.recover = 15;
++
++ if (t.setup > 4)
++ t.setup = 0xC0;
++ else
++ t.setup = setup_data[t.setup];
++
++ t.active &= 0x0F; /* 0 = 16 */
++
++ /* Load setup timing */
++ pci_read_config_byte(pdev, arttim, &reg);
++ reg &= 0x3F;
++ reg |= t.setup;
++ pci_write_config_byte(pdev, arttim, reg);
++
++ /* Load active/recovery */
++ pci_write_config_byte(pdev, drwtim, (t.active << 4) | t.recover);
++}
++
++/**
++ * cmd64x_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the DMA mode setup.
++ */
++
++static void cmd64x_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 regU, regD;
++
++ int pciU = UDIDETCR0 + 8 * ap->hard_port_no;
++ int pciD = BMIDESR0 + 8 * ap->hard_port_no;
++ int shift = 2 * adev->devno;
++ const u8 udma_data[] = { 0x31, 0x21, 0x11, 0x25, 0x15, 0x05 };
++ const u8 mwdma_data[] = { 0x30, 0x20, 0x10 };
++
++ pci_read_config_byte(pdev, pciD, &regD);
++ pci_read_config_byte(pdev, pciU, &regU);
++
++ regD &= ~(0x20 << shift);
++ regU &= ~(0x35 << shift);
++
++ if (adev->dma_mode >= XFER_UDMA_0)
++ regU |= udma_data[adev->dma_mode - XFER_UDMA_0] << shift;
++ else
++ regD |= mwdma_data[adev->dma_mode - XFER_MW_DMA_0] << shift;
++
++ regD |= 0x20 << adev->devno;
++
++ pci_write_config_byte(pdev, pciU, regU);
++ pci_write_config_byte(pdev, pciD, regD);
++}
++
++/**
++ * cmd648_dma_stop - DMA stop callback
++ * @qc: Command in progress
++ *
++ * DMA has completed.
++ */
++
++static void cmd648_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 dma_intr;
++ int dma_reg = ap->hard_port_no ? ARTTIM23_INTR_CH1 : CFR_INTR_CH0;
++ int dma_mask = ap->hard_port_no ? ARTTIM2 : CFR;
++
++ ata_bmdma_stop(qc);
++
++ pci_read_config_byte(pdev, dma_reg, &dma_intr);
++ pci_write_config_byte(pdev, dma_reg, dma_intr | dma_mask);
++}
++
++/**
++ * cmd646r1_dma_stop - DMA stop callback
++ * @qc: Command in progress
++ *
++ * Stub for now while investigating the r1 quirk in the old driver.
++ */
++
++static void cmd646r1_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ ata_bmdma_stop(qc);
++}
++
++static struct scsi_host_template cmd64x_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations cmd64x_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cmd64x_set_piomode,
++ .set_dmamode = cmd64x_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = cmd64x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations cmd646r1_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cmd64x_set_piomode,
++ .set_dmamode = cmd64x_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = cmd64x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = cmd646r1_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations cmd648_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cmd64x_set_piomode,
++ .set_dmamode = cmd64x_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = cmd648_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = cmd648_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ u32 class_rev;
++
++ static struct ata_port_info cmd_info[6] = {
++ { /* CMD 643 - no UDMA */
++ .sht = &cmd64x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &cmd64x_port_ops
++ },
++ { /* CMD 646 with broken UDMA */
++ .sht = &cmd64x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &cmd64x_port_ops
++ },
++ { /* CMD 646 with working UDMA */
++ .sht = &cmd64x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA1,
++ .port_ops = &cmd64x_port_ops
++ },
++ { /* CMD 646 rev 1 */
++ .sht = &cmd64x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &cmd646r1_port_ops
++ },
++ { /* CMD 648 */
++ .sht = &cmd64x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA2,
++ .port_ops = &cmd648_port_ops
++ },
++ { /* CMD 649 */
++ .sht = &cmd64x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA3,
++ .port_ops = &cmd648_port_ops
++ }
++ };
++ static struct ata_port_info *port_info[2], *info;
++ u8 mrdmode;
++
++ info = &cmd_info[id->driver_data];
++
++ pci_read_config_dword(pdev, PCI_CLASS_REVISION, &class_rev);
++ class_rev &= 0xFF;
++
++ if (id->driver_data == 0) /* 643 */
++ ata_pci_clear_simplex(pdev);
++
++ if (pdev->device == PCI_DEVICE_ID_CMD_646) {
++ /* Does UDMA work ? */
++ if (class_rev > 4)
++ info = &cmd_info[2];
++ /* Early rev with other problems ? */
++ else if (class_rev == 1)
++ info = &cmd_info[3];
++ }
++
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 64);
++ pci_read_config_byte(pdev, MRDMODE, &mrdmode);
++ mrdmode &= ~ 0x30; /* IRQ set up */
++ mrdmode |= 0x02; /* Memory read line enable */
++ pci_write_config_byte(pdev, MRDMODE, mrdmode);
++
++ /* Force PIO 0 here.. */
++
++ /* PPC specific fixup copied from old driver */
++#ifdef CONFIG_PPC
++ pci_write_config_byte(pdev, UDIDETCR0, 0xF0);
++#endif
++
++ port_info[0] = port_info[1] = info;
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static struct pci_device_id cmd64x[] = {
++ { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_CMD_643, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_CMD_646, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
++ { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_CMD_648, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4},
++ { PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_CMD_649, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 5},
++ { 0, },
++};
++
++static struct pci_driver cmd64x_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = cmd64x,
++ .probe = cmd64x_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init cmd64x_init(void)
++{
++ return pci_register_driver(&cmd64x_pci_driver);
++}
++
++
++static void __exit cmd64x_exit(void)
++{
++ pci_unregister_driver(&cmd64x_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for CMD64x series PATA controllers");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, cmd64x);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(cmd64x_init);
++module_exit(cmd64x_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cs5520.c linux-2.6.16-rc6/drivers/scsi/pata_cs5520.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cs5520.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_cs5520.c 2006-03-10 17:05:31.000000000 +0000
+@@ -0,0 +1,322 @@
++/*
++ * IDE tuning and bus mastering support for the CS5510/CS5520
++ * chipsets
++ *
++ * The CS5510/CS5520 are slightly unusual devices. Unlike the
++ * typical IDE controllers they do bus mastering with the drive in
++ * PIO mode and smarter silicon.
++ *
++ * The practical upshot of this is that we must always tune the
++ * drive for the right PIO mode. We must also ignore all the blacklists
++ * and the drive bus mastering DMA information. Also to confuse matters
++ * further we can do DMA on PIO only drives.
++ *
++ * DMA on the 5510 also requires we disable_hlt() during DMA on early
++ * revisions.
++ *
++ * *** This driver is strictly experimental ***
++ *
++ * (c) Copyright Red Hat Inc 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, or (at your option) any
++ * later version.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * Documentation:
++ * Not publically available.
++ */
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "cs5520"
++#define DRV_VERSION "0.4.1"
++
++struct pio_clocks
++{
++ int address;
++ int assert;
++ int recovery;
++};
++
++static struct pio_clocks cs5520_pio_clocks[]={
++ {3, 6, 11},
++ {2, 5, 6},
++ {1, 4, 3},
++ {1, 3, 2},
++ {1, 2, 1}
++};
++
++/**
++ * cs5520_set_timings - program PIO timings
++ * @ap: ATA port
++ * @adev: ATA device
++ *
++ * Program the PIO mode timings for the controller according to the pio
++ * clocking table.
++ */
++
++static void cs5520_set_timings(struct ata_port *ap, struct ata_device *adev, int pio)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int slave = adev->devno;
++
++ pio -= XFER_PIO_0;
++
++ /* Channel command timing */
++ pci_write_config_byte(pdev, 0x62 + ap->hard_port_no,
++ (cs5520_pio_clocks[pio].recovery << 4) |
++ (cs5520_pio_clocks[pio].assert));
++ /* FIXME: should these use address ? */
++ /* Read command timing */
++ pci_write_config_byte(pdev, 0x64 + 4*ap->hard_port_no + slave,
++ (cs5520_pio_clocks[pio].recovery << 4) |
++ (cs5520_pio_clocks[pio].assert));
++ /* Write command timing */
++ pci_write_config_byte(pdev, 0x66 + 4*ap->hard_port_no + slave,
++ (cs5520_pio_clocks[pio].recovery << 4) |
++ (cs5520_pio_clocks[pio].assert));
++}
++
++/**
++ * cs5520_enable_dma - turn on DMA bits
++ *
++ * Turn on the DMA bits for this disk. Needed because the BIOS probably
++ * has not done the work for us. Belongs in the core SATA code.
++ */
++
++static int cs5520_enable_dma(struct ata_port *ap, struct ata_device *adev)
++{
++ /* Set the DMA enable/disable flag */
++ u8 reg = inb(ap->ioaddr.bmdma_addr + 0x02);
++ reg |= 1<<(adev->devno + 5);
++ outb(reg, ap->ioaddr.bmdma_addr + 0x02);
++}
++
++/**
++ * cs5520_set_dmamode - program DMA timings
++ * @ap: ATA port
++ * @adev: ATA device
++ *
++ * Program the DMA mode timings for the controller according to the pio
++ * clocking table. Note that this device sets the DMA timings to PIO
++ * mode values. This may seem bizarre but the 5520 architecture talks
++ * PIO mode to the disk and DMA mode to the controller so the underlying
++ * transfers are PIO timed.
++ */
++
++static void cs5520_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static const int dma_xlate[3] = { XFER_PIO_0, XFER_PIO_3, XFER_PIO_4 };
++ cs5520_set_timings(ap, adev, dma_xlate[adev->dma_mode]);
++ cs5520_enable_dma(ap, adev);
++}
++
++/**
++ * cs5520_set_piomode - program PIO timings
++ * @ap: ATA port
++ * @adev: ATA device
++ *
++ * Program the PIO mode timings for the controller according to the pio
++ * clocking table. We know pio_mode will equal dma_mode because of the
++ * CS5520 architecture. At least once we turned DMA on and wrote a
++ * mode setter.
++ */
++
++static void cs5520_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ cs5520_set_timings(ap, adev, adev->pio_mode);
++}
++
++static struct scsi_host_template cs5520_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations cs5520_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cs5520_set_piomode,
++ .set_dmamode = cs5520_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ u8 pcicfg;
++ static struct ata_probe_ent probe[2];
++ int ports = 0;
++
++ pci_read_config_byte(dev, 0x60, &pcicfg);
++
++ /* Check if the ATA ports are enabled */
++ if ((pcicfg & 3) == 0)
++ return -ENODEV;
++
++ if ((pcicfg & 0x40) == 0) {
++ printk(KERN_WARNING DRV_NAME ": DMA mode disabled. Enabling.\n");
++ pci_write_config_byte(dev, 0x60, pcicfg | 0x40);
++ }
++
++ /* Perform set up for DMA */
++ if (pci_enable_device_bars(dev, 1<<2)) {
++ printk(KERN_ERR DRV_NAME ": unable to configure BAR2.\n");
++ return -ENODEV;
++ }
++ pci_set_master(dev);
++ if (pci_set_dma_mask(dev, DMA_32BIT_MASK)) {
++ printk(KERN_ERR DRV_NAME ": unable to configure DMA mask.\n");
++ return -ENODEV;
++ }
++ if (pci_set_consistent_dma_mask(dev, DMA_32BIT_MASK)) {
++ printk(KERN_ERR DRV_NAME ": unable to configure consistent DMA mask.\n");
++ return -ENODEV;
++ }
++
++ /* We have to do our own plumbing as the PCI setup for this
++ chipset is non-standard so we can't punt to the libata code */
++
++ INIT_LIST_HEAD(&probe[0].node);
++ probe[0].dev = pci_dev_to_dev(dev);
++ probe[0].port_ops = &cs5520_port_ops;
++ probe[0].sht = &cs5520_sht;
++ probe[0].pio_mask = 0x1F;
++ probe[0].mwdma_mask = id->driver_data;
++ probe[0].irq = 14;
++ probe[0].irq_flags = SA_SHIRQ;
++ probe[0].host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST;
++ probe[0].legacy_mode = 1;
++ probe[0].n_ports = 1;
++ probe[0].port[0].cmd_addr = 0x1F0;
++ probe[0].port[0].ctl_addr = 0x3F6;
++ probe[0].port[0].altstatus_addr = 0x3F6;
++ probe[0].port[0].bmdma_addr = pci_resource_start(dev, 2);
++
++ /* The secondary lurks at different addresses but is otherwise
++ the same beastie */
++
++ probe[1] = probe[0];
++ INIT_LIST_HEAD(&probe[1].node);
++ probe[1].irq = 15;
++ probe[1].hard_port_no = 1;
++ probe[1].port[0].cmd_addr = 0x170;
++ probe[1].port[0].ctl_addr = 0x376;
++ probe[1].port[0].altstatus_addr = 0x376;
++ probe[1].port[0].bmdma_addr = pci_resource_start(dev, 2) + 8;
++
++ /* Let libata fill in the port details */
++ ata_std_ports(&probe[0].port[0]);
++ ata_std_ports(&probe[1].port[0]);
++
++ /* Now add the ports that are active */
++ if (pcicfg & 1)
++ ports += ata_device_add(&probe[0]);
++ if (pcicfg & 2)
++ ports += ata_device_add(&probe[1]);
++ if (ports)
++ return 0;
++ return -ENODEV;
++}
++
++/**
++ * cs5520_remove_one - device unload
++ * @pdev: PCI device being removed
++ *
++ * Handle an unplug/unload event for a PCI device. Unload the
++ * PCI driver but do not use the default handler as we manage
++ * resources ourself and *MUST NOT* disable the device as it has
++ * other functions.
++ */
++
++static void __devexit cs5520_remove_one(struct pci_dev *pdev)
++{
++ struct device *dev = pci_dev_to_dev(pdev);
++ struct ata_host_set *host_set = dev_get_drvdata(dev);
++
++ ata_host_set_remove(host_set);
++ dev_set_drvdata(dev, NULL);
++}
++
++/* For now keep DMA off. We can set it for all but A rev CS5510 once the
++ core ATA code can handle it */
++
++static struct pci_device_id pata_cs5520[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5510), },
++ { PCI_DEVICE(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5520), },
++ { 0, },
++};
++
++static struct pci_driver cs5520_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = pata_cs5520,
++ .probe = cs5520_init_one,
++ .remove = cs5520_remove_one
++};
++
++
++static int __init cs5520_init(void)
++{
++ return pci_register_driver(&cs5520_pci_driver);
++}
++
++static void __exit cs5520_exit(void)
++{
++ pci_unregister_driver(&cs5520_pci_driver);
++}
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Cyrix CS5510/5520");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, pata_cs5520);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(cs5520_init);
++module_exit(cs5520_exit);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cs5530.c linux-2.6.16-rc6/drivers/scsi/pata_cs5530.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cs5530.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_cs5530.c 2006-03-10 17:05:20.000000000 +0000
+@@ -0,0 +1,371 @@
++/*
++ * pata-cs5530.c - CS5530 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based upon cs5530.c by Mark Lord.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Loosely based on the piix & svwks drivers.
++ *
++ * Documentation:
++ * Available from AMD web site.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/dmi.h>
++
++#define DRV_NAME "cs5530"
++#define DRV_VERSION "0.4.1"
++
++/**
++ * cs5530_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Set our PIO requirements. This is fairly simple on the CS5530
++ * chips.
++ */
++
++static void cs5530_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ static unsigned int cs5530_pio_timings[2][5] = {
++ {0x00009172, 0x00012171, 0x00020080, 0x00032010, 0x00040010},
++ {0xd1329172, 0x71212171, 0x30200080, 0x20102010, 0x00100010}
++ };
++ unsigned long base = ( ap->ioaddr.bmdma_addr & ~0x0F) + 0x20 + 0x10 * ap->hard_port_no;
++ u32 tuning;
++ int format;
++
++ /* Find out which table to use */
++ tuning = inl(base + 0x04);
++ format = (tuning & 0x80000000UL) ? 1 : 0;
++
++ /* Now load the right timing register */
++ if (adev->devno)
++ base += 0x08;
++
++ outl(cs5530_pio_timings[format][adev->pio_mode - XFER_PIO_0], base);
++}
++
++/**
++ * cs5530_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * We cannot mix MWDMA and UDMA without reloading timings each switch
++ * master to slave. We track the last DMA setup in order to minimise
++ * reloads.
++ */
++
++static void cs5530_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned long base = ( ap->ioaddr.bmdma_addr & ~0x0F) + 0x20 + 0x10 * ap->hard_port_no;
++ u32 tuning, timing = 0;
++ u8 reg;
++
++ /* Find out which table to use */
++ tuning = inl(base + 0x04);
++
++ switch(adev->dma_mode) {
++ case XFER_UDMA_0:
++ timing = 0x00921250;break;
++ case XFER_UDMA_1:
++ timing = 0x00911140;break;
++ case XFER_UDMA_2:
++ timing = 0x00911030;break;
++ case XFER_MW_DMA_0:
++ timing = 0x00077771;break;
++ case XFER_MW_DMA_1:
++ timing = 0x00012121;break;
++ case XFER_MW_DMA_2:
++ timing = 0x00002020;break;
++ default:
++ BUG();
++ }
++ /* Merge in the PIO format bit */
++ timing |= (tuning & 0x80000000UL);
++ if (adev->devno == 0) /* Master */
++ outl(timing, base + 0x04);
++ else {
++ if (timing & 0x00100000)
++ tuning |= 0x00100000; /* UDMA for both */
++ else
++ tuning &= ~0x00100000; /* MWDMA for both */
++ outl(tuning, base + 0x04);
++ outl(timing, base + 0x0C);
++ }
++
++ /* Set the DMA capable bit in the BMDMA area */
++ reg = inb(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
++ reg |= (1 << (5 + adev->devno));
++ outb(reg, ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
++
++ /* Remember the last DMA setup we did */
++
++ ap->private_data = adev;
++}
++
++/**
++ * cs5530_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings if
++ * neccessary. Specifically we have a problem that there is only
++ * one MWDMA/UDMA bit.
++ */
++
++static int cs5530_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ struct ata_device *prev = ap->private_data;
++
++ /* See if the DMA settings could be wrong */
++ if (adev->dma_mode != 0 && adev != prev && prev != NULL) {
++ /* Maybe, but do the channels match MWDMA/UDMA ? */
++ if ((adev->dma_mode >= XFER_UDMA_0 && prev->dma_mode < XFER_UDMA_0) ||
++ (adev->dma_mode < XFER_UDMA_0 && prev->dma_mode >= XFER_UDMA_0))
++ /* Switch the mode bits */
++ cs5530_set_dmamode(ap, adev);
++ }
++
++ return ata_qc_issue_prot(qc);
++}
++
++static struct scsi_host_template cs5530_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations cs5530_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cs5530_set_piomode,
++ .set_dmamode = cs5530_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = cs5530_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct dmi_system_id __initdata palmax_dmi_table[] = {
++ {
++ .ident = "Palmax PD1100",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "Cyrix"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "Caddis"),
++ },
++ },
++ { }
++};
++
++static int cs5530_is_palmax(void)
++{
++ if (dmi_check_system(palmax_dmi_table)) {
++ printk(KERN_INFO "Palmax PD1100: Disabling DMA on docking port.\n");
++ return 1;
++ }
++ return 0;
++}
++
++/**
++ * cs5530_init_one - Initialise a CS5530
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Install a driver for the newly found CS5530 companion chip. Most of
++ * this is just housekeeping. We have to set the chip up correctly and
++ * turn off various bits of emulation magic.
++ */
++
++static int cs5530_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ int compiler_warning_pointless_fix;
++ struct pci_dev *master_0 = NULL, *cs5530_0 = NULL;
++ static struct ata_port_info info = {
++ .sht = &cs5530_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x07,
++ .port_ops = &cs5530_port_ops
++ };
++ /* The docking connector doesn't do UDMA, and it seems not MWDMA */
++ static struct ata_port_info info_palmax_secondary = {
++ .sht = &cs5530_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .port_ops = &cs5530_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ dev = NULL;
++ while ((dev = pci_get_device(PCI_VENDOR_ID_CYRIX, PCI_ANY_ID, dev)) != NULL) {
++ switch (dev->device) {
++ case PCI_DEVICE_ID_CYRIX_PCI_MASTER:
++ master_0 = pci_dev_get(dev);
++ break;
++ case PCI_DEVICE_ID_CYRIX_5530_LEGACY:
++ cs5530_0 = pci_dev_get(dev);
++ break;
++ }
++ }
++ if (!master_0) {
++ printk(KERN_ERR DRV_NAME ": unable to locate PCI MASTER function\n");
++ goto fail_put;
++ }
++ if (!cs5530_0) {
++ printk(KERN_ERR DRV_NAME ": unable to locate CS5530 LEGACY function\n");
++ goto fail_put;
++ }
++
++ pci_set_master(cs5530_0);
++ compiler_warning_pointless_fix = pci_set_mwi(cs5530_0);
++
++ /*
++ * Set PCI CacheLineSize to 16-bytes:
++ * --> Write 0x04 into 8-bit PCI CACHELINESIZE reg of function 0 of the cs5530
++ *
++ * Note: This value is constant because the 5530 is only a Geode companion
++ */
++
++ pci_write_config_byte(cs5530_0, PCI_CACHE_LINE_SIZE, 0x04);
++
++ /*
++ * Disable trapping of UDMA register accesses (Win98 hack):
++ * --> Write 0x5006 into 16-bit reg at offset 0xd0 of function 0 of the cs5530
++ */
++
++ pci_write_config_word(cs5530_0, 0xd0, 0x5006);
++
++ /*
++ * Bit-1 at 0x40 enables MemoryWriteAndInvalidate on internal X-bus:
++ * The other settings are what is necessary to get the register
++ * into a sane state for IDE DMA operation.
++ */
++
++ pci_write_config_byte(master_0, 0x40, 0x1e);
++
++ /*
++ * Set max PCI burst size (16-bytes seems to work best):
++ * 16bytes: set bit-1 at 0x41 (reg value of 0x16)
++ * all others: clear bit-1 at 0x41, and do:
++ * 128bytes: OR 0x00 at 0x41
++ * 256bytes: OR 0x04 at 0x41
++ * 512bytes: OR 0x08 at 0x41
++ * 1024bytes: OR 0x0c at 0x41
++ */
++
++ pci_write_config_byte(master_0, 0x41, 0x14);
++
++ /*
++ * These settings are necessary to get the chip
++ * into a sane state for IDE DMA operation.
++ */
++
++ pci_write_config_byte(master_0, 0x42, 0x00);
++ pci_write_config_byte(master_0, 0x43, 0xc1);
++
++ pci_dev_put(master_0);
++ pci_dev_put(cs5530_0);
++
++ if (cs5530_is_palmax())
++ port_info[1] = &info_palmax_secondary;
++
++ /* Now kick off ATA set up */
++ return ata_pci_init_one(dev, port_info, 2);
++
++fail_put:
++ if (master_0)
++ pci_dev_put(master_0);
++ if (cs5530_0)
++ pci_dev_put(cs5530_0);
++ return -ENODEV;
++}
++
++static struct pci_device_id cs5530[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_IDE), },
++ { 0, },
++};
++
++static struct pci_driver cs5530_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = cs5530,
++ .probe = cs5530_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init cs5530_init(void)
++{
++ return pci_register_driver(&cs5530_pci_driver);
++}
++
++
++static void __exit cs5530_exit(void)
++{
++ pci_unregister_driver(&cs5530_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the Cyrix/NS/AMD 5530");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, cs5530);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(cs5530_init);
++module_exit(cs5530_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cs5535.c linux-2.6.16-rc6/drivers/scsi/pata_cs5535.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cs5535.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_cs5535.c 2006-03-10 17:05:14.000000000 +0000
+@@ -0,0 +1,286 @@
++/*
++ * pata-cs5535.c - CS5535 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based upon cs5535.c from AMD <Jens.Altmann@amd.com> as cleaned up and
++ * made readable and Linux style by Wolfgang Zuleger <wolfgang.zuleger@gmx.de
++ * and Alexander Kiausch <alex.kiausch@t-online.de>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Loosely based on the piix & svwks drivers.
++ *
++ * Documentation:
++ * Available from AMD web site.
++ * TODO
++ * Review errata to see if serializing is neccessary
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <asm/msr.h>
++
++#define DRV_NAME "cs5535"
++#define DRV_VERSION "0.2.2"
++
++/*
++ * The Geode (Aka Athlon GX now) uses an internal MSR based
++ * bus system for control. Demented but there you go.
++ */
++
++#define MSR_ATAC_BASE 0x51300000
++#define ATAC_GLD_MSR_CAP (MSR_ATAC_BASE+0)
++#define ATAC_GLD_MSR_CONFIG (MSR_ATAC_BASE+0x01)
++#define ATAC_GLD_MSR_SMI (MSR_ATAC_BASE+0x02)
++#define ATAC_GLD_MSR_ERROR (MSR_ATAC_BASE+0x03)
++#define ATAC_GLD_MSR_PM (MSR_ATAC_BASE+0x04)
++#define ATAC_GLD_MSR_DIAG (MSR_ATAC_BASE+0x05)
++#define ATAC_IO_BAR (MSR_ATAC_BASE+0x08)
++#define ATAC_RESET (MSR_ATAC_BASE+0x10)
++#define ATAC_CH0D0_PIO (MSR_ATAC_BASE+0x20)
++#define ATAC_CH0D0_DMA (MSR_ATAC_BASE+0x21)
++#define ATAC_CH0D1_PIO (MSR_ATAC_BASE+0x22)
++#define ATAC_CH0D1_DMA (MSR_ATAC_BASE+0x23)
++#define ATAC_PCI_ABRTERR (MSR_ATAC_BASE+0x24)
++
++#define ATAC_BM0_CMD_PRIM 0x00
++#define ATAC_BM0_STS_PRIM 0x02
++#define ATAC_BM0_PRD 0x04
++
++#define CS5535_CABLE_DETECT 0x48
++
++#define CS5535_BAD_PIO(timings) ( (timings&~0x80000000UL)==0x00009172 )
++
++/**
++ * cs5535_cable_detect - detect cable type
++ * @ap: Port to detect on
++ *
++ * Perform cable detection for ATA66 capable cable. Return a libata
++ * cable type.
++ */
++
++static int cs5535_cable_detect(struct ata_port *ap)
++{
++ u8 cable;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_byte(pdev, CS5535_CABLE_DETECT, &cable);
++ if (cable & 1)
++ return ATA_CBL_PATA80;
++ else
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * cs5535_phy_reset - reset/probe
++ * @ap: Port to reset
++ *
++ * Reset and configure a port
++ */
++
++static void cs5535_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = cs5535_cable_detect(ap);
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * cs5535_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Set our PIO requirements. The CS5535 is pretty clean about all this
++ */
++
++static void cs5535_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u16 pio_timings[5] = {
++ 0xF7F4, 0x53F3, 0x13F1, 0x5131, 0x1131
++ };
++ static u16 pio_cmd_timings[5] = {
++ 0xF7F4, 0x53F3, 0x13F1, 0x5131, 0x1131
++ };
++ u32 reg, dummy;
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++
++ int mode = adev->pio_mode - XFER_PIO_0;
++ int cmdmode = mode;
++
++ /* Command timing has to be for the lowest of the pair of devices */
++ if (pair) {
++ int pairmode = pair->pio_mode - XFER_PIO_0;
++ cmdmode = min(mode, pairmode);
++ /* Write the other drive timing register if it changed */
++ if (cmdmode < pairmode)
++ wrmsr(ATAC_CH0D0_PIO + 2 * pair->devno,
++ pio_cmd_timings[cmdmode] << 16 | pio_timings[pairmode], 0);
++ }
++ /* Write the drive timing register */
++ wrmsr(ATAC_CH0D0_PIO + 2 * adev->devno,
++ pio_cmd_timings[cmdmode] << 16 | pio_timings[mode], 0);
++
++ /* Set the PIO "format 1" bit in the DMA timing register */
++ rdmsr(ATAC_CH0D0_DMA + 2 * adev->devno, reg, dummy);
++ wrmsr(ATAC_CH0D0_DMA + 2 * adev->devno, reg | 0x80000000UL, 0);
++}
++
++/**
++ * cs5535_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ */
++
++static void cs5535_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u32 udma_timings[5] = { 0x7F7436A1, 0x7F733481, 0x7F723261, 0x7F713161, 0x7F703061 };
++ static u32 mwdma_timings[3] = { 0x7F0FFFF3, 0x7F035352, 0x7F024241 };
++ u32 reg, dummy;
++ int mode = adev->dma_mode;
++
++ rdmsr(ATAC_CH0D0_DMA + 2 * adev->devno, reg, dummy);
++ reg &= 0x80000000UL;
++ if (mode >= XFER_UDMA_0)
++ reg |= udma_timings[mode - XFER_UDMA_0];
++ else
++ reg |= mwdma_timings[mode - XFER_MW_DMA_0];
++ wrmsr(ATAC_CH0D0_DMA + 2 * adev->devno, reg, 0);
++}
++
++static struct scsi_host_template cs5535_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations cs5535_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cs5535_set_piomode,
++ .set_dmamode = cs5535_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = cs5535_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * cs5535_init_one - Initialise a CS5530
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Install a driver for the newly found CS5530 companion chip. Most of
++ * this is just housekeeping. We have to set the chip up correctly and
++ * turn off various bits of emulation magic.
++ */
++
++static int cs5535_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &cs5535_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x1f,
++ .port_ops = &cs5535_port_ops
++ };
++ struct ata_port_info *ports[1] = { &info };
++
++ u32 timings, dummy;
++
++ /* Check the BIOS set the initial timing clock. If not set the
++ timings for PIO0 */
++ rdmsr(ATAC_CH0D0_PIO, timings, dummy);
++ if (CS5535_BAD_PIO(timings))
++ wrmsr(ATAC_CH0D0_PIO, 0xF7F4F7F4UL, 0);
++ rdmsr(ATAC_CH0D1_PIO, timings, dummy);
++ if (CS5535_BAD_PIO(timings))
++ wrmsr(ATAC_CH0D1_PIO, 0xF7F4F7F4UL, 0);
++ return ata_pci_init_one(dev, ports, 1);
++}
++
++static struct pci_device_id cs5535[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_NS, 0x002D), },
++ { 0, },
++};
++
++static struct pci_driver cs5535_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = cs5535,
++ .probe = cs5535_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init cs5535_init(void)
++{
++ return pci_register_driver(&cs5535_pci_driver);
++}
++
++
++static void __exit cs5535_exit(void)
++{
++ pci_unregister_driver(&cs5535_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox, Jens Altmann, Wolfgan Zuleger, Alexander Kiausch");
++MODULE_DESCRIPTION("low-level driver for the NS/AMD 5530");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, cs5535);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(cs5535_init);
++module_exit(cs5535_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cypress.c linux-2.6.16-rc6/drivers/scsi/pata_cypress.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_cypress.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_cypress.c 2006-02-16 15:37:46.000000000 +0000
+@@ -0,0 +1,215 @@
++/*
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_cypress"
++#define DRV_VERSION "0.1"
++
++/* here are the offset definitions for the registers */
++
++enum {
++ CY82_IDE_CMDREG = 0x04,
++ CY82_IDE_ADDRSETUP = 0x48,
++ CY82_IDE_MASTER_IOR = 0x4C,
++ CY82_IDE_MASTER_IOW = 0x4D,
++ CY82_IDE_SLAVE_IOR = 0x4E,
++ CY82_IDE_SLAVE_IOW = 0x4F,
++ CY82_IDE_MASTER_8BIT = 0x50,
++ CY82_IDE_SLAVE_8BIT = 0x51,
++
++ CY82_INDEX_PORT = 0x22,
++ CY82_DATA_PORT = 0x23,
++
++ CY82_INDEX_CTRLREG1 = 0x01,
++ CY82_INDEX_CHANNEL0 = 0x30,
++ CY82_INDEX_CHANNEL1 = 0x31,
++ CY82_INDEX_TIMEOUT = 0x32
++};
++
++/* Phee Phy Pho Phum */
++
++static void cy82c693_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * cy82c693_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup.
++ */
++
++static void cy82c693_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct ata_timing t;
++ const unsigned long T = 1000000 / 33;
++ short time_16, time_8;
++ u32 addr;
++
++ if (ata_timing_compute(adev, adev->pio_mode, &t, T, 1) < 0) {
++ printk(KERN_ERR DRV_NAME ": mome computation failed.\n");
++ return;
++ }
++
++ time_16 = FIT(t.recover, 0, 15) | (FIT(t.active, 0, 15) << 4);
++ time_8 = FIT(t.act8b, 0, 15) | (FIT(t.rec8b, 0, 15) << 4);
++
++ if (adev->devno == 0) {
++ pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr);
++
++ addr &= ~0x0F; /* Mask bits */
++ addr |= FIT(t.setup, 0, 15);
++
++ pci_write_config_dword(pdev, CY82_IDE_ADDRSETUP, addr);
++ pci_write_config_byte(pdev, CY82_IDE_MASTER_IOR, time_16);
++ pci_write_config_byte(pdev, CY82_IDE_MASTER_IOW, time_16);
++ pci_write_config_byte(pdev, CY82_IDE_MASTER_8BIT, time_8);
++ } else {
++ pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr);
++
++ addr &= ~0xF0; /* Mask bits */
++ addr |= (FIT(t.setup, 0, 15) << 4);
++
++ pci_write_config_dword(pdev, CY82_IDE_ADDRSETUP, addr);
++ pci_write_config_byte(pdev, CY82_IDE_SLAVE_IOR, time_16);
++ pci_write_config_byte(pdev, CY82_IDE_SLAVE_IOW, time_16);
++ pci_write_config_byte(pdev, CY82_IDE_SLAVE_8BIT, time_8);
++ }
++}
++
++/**
++ * cy82c693_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the DMA mode setup.
++ */
++
++static void cy82c693_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ int reg = CY82_INDEX_CHANNEL0 + ap->hard_port_no;
++
++ /* Be afraid, be very afraid. Magic registers in low I/O space */
++ outb(reg, 0x22);
++ outb(adev->dma_mode - XFER_MW_DMA_0, 0x23);
++
++ /* 0x50 gives the best behaviour on the Alpha's using this chip */
++ outb(CY82_INDEX_TIMEOUT, 0x22);
++ outb(0x50, 0x23);
++}
++
++static struct scsi_host_template cy82c693_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations cy82c693_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = cy82c693_set_piomode,
++ .set_dmamode = cy82c693_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = cy82c693_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int cy82c693_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &cy82c693_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &cy82c693_port_ops
++ };
++ static struct ata_port_info *port_info[1] = { &info };
++
++ /* Devfn 1 is the ATA primary. The secondary is magic and on devfn2. For the
++ moment we don't handle the secondary. FIXME */
++
++ if (PCI_FUNC(pdev->devfn) != 1)
++ return -ENODEV;
++
++ return ata_pci_init_one(pdev, port_info, 1);
++}
++
++static struct pci_device_id cy82c693[] = {
++ { PCI_VENDOR_ID_CONTAQ, PCI_DEVICE_ID_CONTAQ_82C693, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { 0, },
++};
++
++static struct pci_driver cy82c693_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = cy82c693,
++ .probe = cy82c693_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init cy82c693_init(void)
++{
++ return pci_register_driver(&cy82c693_pci_driver);
++}
++
++
++static void __exit cy82c693_exit(void)
++{
++ pci_unregister_driver(&cy82c693_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the CY82C693 PATA controller");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, cy82c693);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(cy82c693_init);
++module_exit(cy82c693_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_efar.c linux-2.6.16-rc6/drivers/scsi/pata_efar.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_efar.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_efar.c 2006-02-16 15:37:53.000000000 +0000
+@@ -0,0 +1,341 @@
++/*
++ * pata_efar.c - EFAR PIIX clone controller driver
++ *
++ * (C) 2005 Red Hat <alan@redhat.com>
++ *
++ * Some parts based on ata_piix.c by Jeff Garzik and others.
++ *
++ * The EFAR is a PIIX4 clone with UDMA66 support. Unlike the later
++ * Intel ICH controllers the EFAR widened the UDMA mode register bits
++ * and doesn't require the funky clock selection.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/ata.h>
++
++#define DRV_NAME "pata_efar"
++#define DRV_VERSION "0.1"
++
++/**
++ * efar_cable_detect - check for 40/80 pin
++ * @ap: Port
++ *
++ * Perform cable detection for the EFAR ATA interface. This is
++ * different to the PIIX arrangement
++ */
++
++static int efar_cable_detect(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 tmp;
++
++ pci_read_config_byte(pdev, 0x47, &tmp);
++ if (tmp & (2 >> ap->hard_port_no))
++ return ATA_CBL_PATA40;
++ return ATA_CBL_PATA80;
++}
++
++/**
++ * efar_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void efar_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ const struct pci_bits efar_enable_bits[] = {
++ { 0x41U, 1U, 0x80UL, 0x80UL }, /* port 0 */
++ { 0x43U, 1U, 0x80UL, 0x80UL }, /* port 1 */
++ };
++
++ if (!pci_test_config_bits(pdev, &efar_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = efar_cable_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * efar_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: um
++ *
++ * Set PIO mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void efar_set_piomode (struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int pio = adev->pio_mode - XFER_PIO_0;
++ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
++ unsigned int idetm_port= ap->hard_port_no ? 0x42 : 0x40;
++ u16 idetm_data;
++ int control = 0;
++
++ /*
++ * See Intel Document 298600-004 for the timing programing rules
++ * for PIIX/ICH. The EFAR is a clone so very similar
++ */
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 0 },
++ { 2, 1 },
++ { 2, 3 }, };
++
++ if (pio > 2)
++ control |= 1; /* TIME1 enable */
++ if (ata_pio_need_iordy(adev)) /* PIO 3/4 require IORDY */
++ control |= 2; /* IE enable */
++ /* Intel specifies that the PPE functionality is for disk only */
++ if (adev->class == ATA_DEV_ATA)
++ control |= 4; /* PPE enable */
++
++ pci_read_config_word(dev, idetm_port, &idetm_data);
++
++ /* Enable PPE, IE and TIME as appropriate */
++
++ if (adev->devno == 0) {
++ idetm_data &= 0xCCF0;
++ idetm_data |= control;
++ idetm_data |= (timings[pio][0] << 12) |
++ (timings[pio][1] << 8);
++ } else {
++ int shift = 4 * ap->hard_port_no;
++ u8 slave_data;
++
++ idetm_data &= 0xCC0F;
++ idetm_data |= (control << 4);
++
++ /* Slave timing in seperate register */
++ pci_read_config_byte(dev, 0x44, &slave_data);
++ slave_data &= 0x0F << shift;
++ slave_data |= ((timings[pio][0] << 2) | timings[pio][1]) << shift;
++ pci_write_config_byte(dev, 0x44, slave_data);
++ }
++
++ idetm_data |= 0x4000; /* Ensure SITRE is enabled */
++ pci_write_config_word(dev, idetm_port, idetm_data);
++}
++
++/**
++ * efar_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ *
++ * Set UDMA/MWDMA mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void efar_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
++ u8 master_port = ap->hard_port_no ? 0x42 : 0x40;
++ u16 master_data;
++ u8 speed = adev->dma_mode;
++ int devid = adev->devno + 2 * ap->hard_port_no;
++ u8 udma_enable;
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 0 },
++ { 2, 1 },
++ { 2, 3 }, };
++
++ pci_read_config_word(dev, master_port, &master_data);
++ pci_read_config_byte(dev, 0x48, &udma_enable);
++
++ if (speed >= XFER_UDMA_0) {
++ unsigned int udma = adev->dma_mode - XFER_UDMA_0;
++ u16 udma_timing;
++
++ udma_enable |= (1 << devid);
++
++ /* Load the UDMA mode number */
++ pci_read_config_word(dev, 0x4A, &udma_timing);
++ udma_timing &= ~(7 << (4 * devid));
++ udma_timing |= udma << (4 * devid);
++ pci_write_config_word(dev, 0x4A, udma_timing);
++ } else {
++ /*
++ * MWDMA is driven by the PIO timings. We must also enable
++ * IORDY unconditionally along with TIME1. PPE has already
++ * been set when the PIO timing was set.
++ */
++ unsigned int mwdma = adev->dma_mode - XFER_MW_DMA_0;
++ unsigned int control;
++ u8 slave_data;
++ const unsigned int needed_pio[3] = {
++ XFER_PIO_0, XFER_PIO_3, XFER_PIO_4
++ };
++ int pio = needed_pio[mwdma] - XFER_PIO_0;
++
++ control = 3; /* IORDY|TIME1 */
++
++ /* If the drive MWDMA is faster than it can do PIO then
++ we must force PIO into PIO0 */
++
++ if (adev->pio_mode < needed_pio[mwdma])
++ /* Enable DMA timing only */
++ control |= 8; /* PIO cycles in PIO0 */
++
++ if (adev->devno) { /* Slave */
++ master_data &= 0xFF4F; /* Mask out IORDY|TIME1|DMAONLY */
++ master_data |= control << 4;
++ pci_read_config_byte(dev, 0x44, &slave_data);
++ slave_data &= (0x0F + 0xE1 * ap->hard_port_no);
++ /* Load the matching timing */
++ slave_data |= ((timings[pio][0] << 2) | timings[pio][1]) << (ap->hard_port_no ? 4 : 0);
++ pci_write_config_byte(dev, 0x44, slave_data);
++ } else { /* Master */
++ master_data &= 0xCCF4; /* Mask out IORDY|TIME1|DMAONLY
++ and master timing bits */
++ master_data |= control;
++ master_data |=
++ (timings[pio][0] << 12) |
++ (timings[pio][1] << 8);
++ }
++ udma_enable &= ~(1 << devid);
++ pci_write_config_word(dev, master_port, master_data);
++ }
++ pci_write_config_byte(dev, 0x48, udma_enable);
++}
++
++static struct scsi_host_template efar_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static const struct ata_port_operations efar_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = efar_set_piomode,
++ .set_dmamode = efar_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = efar_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++
++/**
++ * efar_init_one - Register EFAR ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in efar_pci_tbl matching with @pdev
++ *
++ * Called from kernel PCI layer.
++ *
++ * LOCKING:
++ * Inherited from PCI layer (may sleep).
++ *
++ * RETURNS:
++ * Zero on success, or -ERRNO value.
++ */
++
++static int efar_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ static struct ata_port_info info = {
++ .sht = &efar_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma1-2 */
++ .udma_mask = 0x0f, /* UDMA 66 */
++ .port_ops = &efar_ops,
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev,
++ "version " DRV_VERSION "\n");
++
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id efar_pci_tbl[] = {
++ { 0x1055, 0x9130, PCI_ANY_ID, PCI_ANY_ID, },
++ { } /* terminate list */
++};
++
++static struct pci_driver efar_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = efar_pci_tbl,
++ .probe = efar_init_one,
++ .remove = ata_pci_remove_one,
++};
++
++static int __init efar_init(void)
++{
++ return pci_register_driver(&efar_pci_driver);
++}
++
++static void __exit efar_exit(void)
++{
++ pci_unregister_driver(&efar_pci_driver);
++}
++
++
++module_init(efar_init);
++module_exit(efar_exit);
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("SCSI low-level driver for EFAR PIIX clones");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, efar_pci_tbl);
++MODULE_VERSION(DRV_VERSION);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt34x.c linux-2.6.16-rc6/drivers/scsi/pata_hpt34x.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt34x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_hpt34x.c 2006-03-10 17:05:51.000000000 +0000
+@@ -0,0 +1,206 @@
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "hpt34x"
++#define DRV_VERSION "0.1.1"
++
++/**
++ * hpt34x_bus_reset - reset the hpt34x bus
++ * @ap: ATA port to reset
++ *
++ * Perform the housekeeping when doing an ATA bus reeset. We just
++ * need to force the cable type.
++ */
++
++static void hpt34x_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA40;
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * hpt34x_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Set our PIO requirements. This is fairly simple on the HPT34x as
++ * all we have to do is clear the MWDMA and UDMA bits then load the
++ * mode number.
++ */
++
++static void hpt34x_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 r1, r2;
++ int dn = 2 * ap->hard_port_no + adev->devno;
++
++ pci_read_config_dword(pdev, 0x44, &r1);
++ pci_read_config_dword(pdev, 0x48, &r2);
++ /* Load the PIO timing number */
++ r1 &= ~(7 << (3 * dn));
++ r1 |= (adev->pio_mode - XFER_PIO_0) << (3 * dn);
++ r2 &= ~(0x11 << dn); /* Clear MWDMA and UDMA bits */
++
++ pci_write_config_dword(pdev, 0x44, r1);
++ pci_write_config_dword(pdev, 0x48, r2);
++}
++
++/**
++ * hpt34x_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * Set up the channel for MWDMA or UDMA modes. Much the same as with
++ * PIO, load the mode number and then set MWDMA or UDMA flag.
++ */
++
++static void hpt34x_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 r1, r2;
++ int dn = 2 * ap->hard_port_no + adev->devno;
++ int mode_num = adev->dma_mode & 0x0F;
++
++ pci_read_config_dword(pdev, 0x44, &r1);
++ pci_read_config_dword(pdev, 0x48, &r2);
++ /* Load the timing number */
++ r1 &= ~(7 << (3 * dn));
++ r1 |= (mode_num << (3 * dn));
++ r2 &= ~(0x11 << dn); /* Clear MWDMA and UDMA bits */
++
++ if (adev->dma_mode >= XFER_UDMA_0)
++ r2 |= 0x01 << dn; /* Ultra mode */
++ else
++ r2 |= 0x10 << dn; /* MWDMA */
++
++ pci_write_config_dword(pdev, 0x44, r1);
++ pci_write_config_dword(pdev, 0x48, r2);
++}
++
++static struct scsi_host_template hpt34x_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations hpt34x_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt34x_set_piomode,
++ .set_dmamode = hpt34x_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt34x_phy_reset,
++
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * hpt34x_init_one - Initialise an HPT343/363
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Perform basic initialisation. The chip has a quirk that it won't
++ * function unless it is at XX00. The old ATA driver touched this up
++ * but we leave it for pci quirks to do properly.
++ */
++
++static int hpt34x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &hpt34x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x07,
++ .port_ops = &hpt34x_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++ u16 cmd;
++
++ /* Initialize the board */
++ pci_write_config_word(dev, 0x80, 0x00);
++ /* Check if it is a 343 or a 363. 363 has COMMAND_MEMORY set */
++ pci_read_config_word(dev, PCI_COMMAND, &cmd);
++ if (cmd & PCI_COMMAND_MEMORY)
++ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0xF0);
++ else
++ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0x20);
++
++ /* Now kick off ATA set up */
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id hpt34x[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT343), },
++ { 0, },
++};
++
++static struct pci_driver hpt34x_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = hpt34x,
++ .probe = hpt34x_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init hpt34x_init(void)
++{
++ return pci_register_driver(&hpt34x_pci_driver);
++}
++
++
++static void __exit hpt34x_exit(void)
++{
++ pci_unregister_driver(&hpt34x_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the Highpoint HPT343/363");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, hpt34x);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(hpt34x_init);
++module_exit(hpt34x_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt366.c linux-2.6.16-rc6/drivers/scsi/pata_hpt366.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt366.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_hpt366.c 2006-03-10 17:06:06.000000000 +0000
+@@ -0,0 +1,479 @@
++/*
++ * Libata driver for the highpoint 366 and 368 UDMA66 ATA controllers.
++ *
++ * This driver is heavily based upon:
++ *
++ * linux/drivers/ide/pci/hpt366.c Version 0.36 April 25, 2003
++ *
++ * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
++ * Portions Copyright (C) 2001 Sun Microsystems, Inc.
++ * Portions Copyright (C) 2003 Red Hat Inc
++ *
++ *
++ * TODO
++ * Maybe PLL mode
++ * Look into engine reset on timeout errors. Should not be
++ * required.
++ */
++
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "hpt36x"
++#define DRV_VERSION "0.2.1"
++
++struct hpt_clock {
++ u8 xfer_speed;
++ u32 timing;
++};
++
++/* key for bus clock timings
++ * bit
++ * 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
++ * DMA. cycles = value + 1
++ * 4:8 data_low_time. active time of DIOW_/DIOR_ for PIO and MW
++ * DMA. cycles = value + 1
++ * 9:12 cmd_high_time. inactive time of DIOW_/DIOR_ during task file
++ * register access.
++ * 13:17 cmd_low_time. active time of DIOW_/DIOR_ during task file
++ * register access.
++ * 18:21 udma_cycle_time. clock freq and clock cycles for UDMA xfer.
++ * during task file register access.
++ * 22:24 pre_high_time. time to initialize 1st cycle for PIO and MW DMA
++ * xfer.
++ * 25:27 cmd_pre_high_time. time to initialize 1st PIO cycle for task
++ * register access.
++ * 28 UDMA enable
++ * 29 DMA enable
++ * 30 PIO_MST enable. if set, the chip is in bus master mode during
++ * PIO.
++ * 31 FIFO enable.
++ */
++
++static struct chipset_bus_clock_list_entry hpt366_40[] = {
++ { XFER_UDMA_4, 0x900fd943 },
++ { XFER_UDMA_3, 0x900ad943 },
++ { XFER_UDMA_2, 0x900bd943 },
++ { XFER_UDMA_1, 0x9008d943 },
++ { XFER_UDMA_0, 0x9008d943 },
++
++ { XFER_MW_DMA_2, 0xa008d943 },
++ { XFER_MW_DMA_1, 0xa010d955 },
++ { XFER_MW_DMA_0, 0xa010d9fc },
++
++ { XFER_PIO_4, 0xc008d963 },
++ { XFER_PIO_3, 0xc010d974 },
++ { XFER_PIO_2, 0xc010d997 },
++ { XFER_PIO_1, 0xc010d9c7 },
++ { XFER_PIO_0, 0xc018d9d9 },
++ { 0, 0x0120d9d9 }
++};
++
++static struct chipset_bus_clock_list_entry hpt366_33[] = {
++ { XFER_UDMA_4, 0x90c9a731 },
++ { XFER_UDMA_3, 0x90cfa731 },
++ { XFER_UDMA_2, 0x90caa731 },
++ { XFER_UDMA_1, 0x90cba731 },
++ { XFER_UDMA_0, 0x90c8a731 },
++
++ { XFER_MW_DMA_2, 0xa0c8a731 },
++ { XFER_MW_DMA_1, 0xa0c8a732 }, /* 0xa0c8a733 */
++ { XFER_MW_DMA_0, 0xa0c8a797 },
++
++ { XFER_PIO_4, 0xc0c8a731 },
++ { XFER_PIO_3, 0xc0c8a742 },
++ { XFER_PIO_2, 0xc0d0a753 },
++ { XFER_PIO_1, 0xc0d0a7a3 }, /* 0xc0d0a793 */
++ { XFER_PIO_0, 0xc0d0a7aa }, /* 0xc0d0a7a7 */
++ { 0, 0x0120a7a7 }
++};
++
++static struct chipset_bus_clock_list_entry hpt366_25[] = {
++ { XFER_UDMA_4, 0x90c98521 },
++ { XFER_UDMA_3, 0x90cf8521 },
++ { XFER_UDMA_2, 0x90cf8521 },
++ { XFER_UDMA_1, 0x90cb8521 },
++ { XFER_UDMA_0, 0x90cb8521 },
++
++ { XFER_MW_DMA_2, 0xa0ca8521 },
++ { XFER_MW_DMA_1, 0xa0ca8532 },
++ { XFER_MW_DMA_0, 0xa0ca8575 },
++
++ { XFER_PIO_4, 0xc0ca8521 },
++ { XFER_PIO_3, 0xc0ca8532 },
++ { XFER_PIO_2, 0xc0ca8542 },
++ { XFER_PIO_1, 0xc0d08572 },
++ { XFER_PIO_0, 0xc0d08585 },
++ { 0, 0x01208585 }
++};
++
++static const char *bad_ata33[] = {
++ "Maxtor 92720U8", "Maxtor 92040U6", "Maxtor 91360U4", "Maxtor 91020U3", "Maxtor 90845U3", "Maxtor 90650U2",
++ "Maxtor 91360D8", "Maxtor 91190D7", "Maxtor 91020D6", "Maxtor 90845D5", "Maxtor 90680D4", "Maxtor 90510D3", "Maxtor 90340D2",
++ "Maxtor 91152D8", "Maxtor 91008D7", "Maxtor 90845D6", "Maxtor 90840D6", "Maxtor 90720D5", "Maxtor 90648D5", "Maxtor 90576D4",
++ "Maxtor 90510D4",
++ "Maxtor 90432D3", "Maxtor 90288D2", "Maxtor 90256D2",
++ "Maxtor 91000D8", "Maxtor 90910D8", "Maxtor 90875D7", "Maxtor 90840D7", "Maxtor 90750D6", "Maxtor 90625D5", "Maxtor 90500D4",
++ "Maxtor 91728D8", "Maxtor 91512D7", "Maxtor 91303D6", "Maxtor 91080D5", "Maxtor 90845D4", "Maxtor 90680D4", "Maxtor 90648D3", "Maxtor 90432D2",
++ NULL
++};
++
++static const char *bad_ata66_4[] = {
++ "IBM-DTLA-307075",
++ "IBM-DTLA-307060",
++ "IBM-DTLA-307045",
++ "IBM-DTLA-307030",
++ "IBM-DTLA-307020",
++ "IBM-DTLA-307015",
++ "IBM-DTLA-305040",
++ "IBM-DTLA-305030",
++ "IBM-DTLA-305020",
++ "IC35L010AVER07-0",
++ "IC35L020AVER07-0",
++ "IC35L030AVER07-0",
++ "IC35L040AVER07-0",
++ "IC35L060AVER07-0",
++ "WDC AC310200R",
++ NULL
++};
++
++static const char *bad_ata66_3[] = {
++ "WDC AC310200R",
++ NULL
++};
++
++static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, const char *list[])
++{
++ unsigned char model_num[40];
++ char *s;
++ unsigned int len;
++ int i = 0;
++
++ ata_dev_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
++ sizeof(model_num));
++ s = &model_num[0];
++ len = strnlen(s, sizeof(model_num));
++
++ /* ATAPI specifies that empty space is blank-filled; remove blanks */
++ while ((len > 0) && (s[len - 1] == ' ')) {
++ len--;
++ s[len] = 0;
++ }
++
++ while(list[i] != NULL) {
++ if (!strncmp(list[i], s, len)) {
++ printk(KERN_WARNING DRV_NAME ": %s is not supported for %s.\n",
++ modestr, list[i]);
++ return 1;
++ }
++ i++;
++ }
++ return 0;
++}
++
++/**
++ * hpt366_filter - mode selection filter
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Block UDMA on devices that cause trouble with this controller.
++ */
++
++static unsigned int hpt366_filter(const struct ata_port *ap, struct ata_device *adev, unsigned int mask, int shift)
++{
++ if (shift != ATA_SHIFT_UDMA)
++ return mask;
++ if (adev->class != ATA_DEV_ATA)
++ return mask;
++ if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33))
++ return 0;
++ if (hpt_dma_blacklisted(adev, "UDMA3", bad_ata66_3))
++ return mask & 0x07;
++ if (hpt_dma_blacklisted(adev, "UDMA4", bad_ata66_4))
++ return mask & 0x0F;
++ return mask;
++}
++
++/**
++ * hpt36x_find_mode - reset the hpt36x bus
++ * @ap: ATA port
++ * @speed: transfer mode
++ *
++ * Return the 32bit register programming information for this channel
++ * that matches the speed provided.
++ */
++
++static u32 hpt36x_find_mode(struct ata_port *ap, int speed)
++{
++ struct hpt_clock *clocks = ap->host_set->private_data;
++
++ while(clocks->xfer_speed) {
++ if (clocks->xfer_speed == speed)
++ return clocks->timing;
++ clocks++;
++ }
++ BUG();
++}
++
++/**
++ * hpt36x_phy_reset - reset the hpt36x bus
++ * @ap: ATA port to reset
++ *
++ * Perform the PHY reset handling for the 366/368
++ */
++
++static void hpt36x_phy_reset(struct ata_port *ap)
++{
++ u8 scr2, ata66;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_byte(pdev, 0x5A, &ata66);
++ if (ata66 & (1 << ap->hard_port_no))
++ ap->cbl = ATA_CBL_PATA40;
++ else
++ ap->cbl = ATA_CBL_PATA80;
++
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * hpt366_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Perform PIO mode setup.
++ */
++
++static void hpt366_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ if (fast & 0x80) {
++ fast &= ~0x80;
++ pci_write_config_byte(pdev, addr2, fast);
++ }
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt36x_find_mode(ap, adev->pio_mode);
++ mode &= ~0x8000000; /* No FIFO in PIO */
++ mode &= ~0x30070000; /* Leave config bits alone */
++ reg &= 0x30070000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt366_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * Set up the channel for MWDMA or UDMA modes. Much the same as with
++ * PIO, load the mode number and then set MWDMA or UDMA flag.
++ */
++
++static void hpt366_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ if (fast & 0x80) {
++ fast &= ~0x80;
++ pci_write_config_byte(pdev, addr2, fast);
++ }
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt36x_find_mode(ap, adev->dma_mode);
++ mode |= 0x8000000; /* FIFO in MWDMA or UDMA */
++ mode &= ~0xC0000000; /* Leave config bits alone */
++ reg &= 0xC0000000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++static struct scsi_host_template hpt36x_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++/*
++ * Configuration for HPT366/68
++ */
++
++static struct ata_port_operations hpt366_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt366_set_piomode,
++ .set_dmamode = hpt366_set_dmamode,
++ .mode_filter = hpt366_filter,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt36x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * hpt36x_init_one - Initialise an HPT366/368
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Initialise an HPT36x device. There are some interesting complications
++ * here. Firstly the chip may report 366 and be one of several variants.
++ * Secondly all the timings depend on the clock for the chip which we must
++ * detect and look up
++ *
++ * This is the known chip mappings. It may be missing a couple of later
++ * releases.
++ *
++ * Chip version PCI Rev Notes
++ * HPT366 4 (HPT366) 0 UDMA66
++ * HPT366 4 (HPT366) 1 UDMA66
++ * HPT368 4 (HPT366) 2 UDMA66
++ * HPT37x/30x 4 (HPT366) 3+ Other driver
++ *
++ */
++
++static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info_hpt366 = {
++ .sht = &hpt366_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x1f,
++ .port_ops = &hpt370_port_ops
++ };
++ struct ata_port_info *port_info[2] = {&info_hpt366, &info_hpt366};
++
++ u8 irqmask;
++ u32 class_rev;
++ u32 reg1;
++
++ struct hpt_chip *chip_table;
++ int clock_slot;
++
++ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev);
++ class_rev &= 0xFF;
++
++ /* May be a later chip in disguise. Check */
++ /* Newer chips are in the HPT36x driver. Ignore them */
++ if (class_rev > 2)
++ return -ENODEV;
++
++ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, (L1_CACHE_BYTES / 4));
++ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0x78);
++ pci_write_config_byte(dev, PCI_MIN_GNT, 0x08);
++ pci_write_config_byte(dev, PCI_MAX_LAT, 0x08);
++
++ pci_read_config_byte(dev, 0x51, &drive_fast);
++ if (drive_fast & 0x80)
++ pci_write_config_byte(dev, 0x51, drive_fast & ~0x80);
++
++ pci_read_config_dword(dev, 0x40, &reg1);
++
++ /* PCI clocking determines the ATA timing values to use */
++ switch((reg1 & 0x700) {
++ case 5:
++ port->private_data = hpt366_40;
++ break;
++ case 9:
++ port->private_data = hpt366_25;
++ break;
++ default:
++ port->private_data = hpt366_33;
++ break;
++ }
++ port_info[0] = port_info[1] = port;
++ /* Now kick off ATA set up */
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id hpt36x[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT366), },
++ { 0, },
++};
++
++static struct pci_driver hpt36x_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = hpt36x,
++ .probe = hpt36x_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init hpt36x_init(void)
++{
++ return pci_register_driver(&hpt36x_pci_driver);
++}
++
++
++static void __exit hpt36x_exit(void)
++{
++ pci_unregister_driver(&hpt36x_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the Highpoint HPT366/368");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, hpt36x);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(hpt36x_init);
++module_exit(hpt36x_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt37x.c linux-2.6.16-rc6/drivers/scsi/pata_hpt37x.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt37x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_hpt37x.c 2006-03-10 17:03:35.000000000 +0000
+@@ -0,0 +1,1233 @@
++/*
++ * Libata driver for the highpoint 37x and 30x UDMA66 ATA controllers.
++ *
++ * This driver is heavily based upon:
++ *
++ * linux/drivers/ide/pci/hpt366.c Version 0.36 April 25, 2003
++ *
++ * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
++ * Portions Copyright (C) 2001 Sun Microsystems, Inc.
++ * Portions Copyright (C) 2003 Red Hat Inc
++ *
++ * TODO
++ * PLL mode
++ * Look into engine reset on timeout errors. Should not be
++ * required.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "hpt37x"
++#define DRV_VERSION "0.2.2"
++
++struct hpt_clock {
++ u8 xfer_speed;
++ u32 timing;
++};
++
++struct hpt_chip {
++ const char *name;
++ unsigned int base;
++ struct hpt_clock *clocks[4];
++};
++
++/* key for bus clock timings
++ * bit
++ * 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
++ * DMA. cycles = value + 1
++ * 4:8 data_low_time. active time of DIOW_/DIOR_ for PIO and MW
++ * DMA. cycles = value + 1
++ * 9:12 cmd_high_time. inactive time of DIOW_/DIOR_ during task file
++ * register access.
++ * 13:17 cmd_low_time. active time of DIOW_/DIOR_ during task file
++ * register access.
++ * 18:21 udma_cycle_time. clock freq and clock cycles for UDMA xfer.
++ * during task file register access.
++ * 22:24 pre_high_time. time to initialize 1st cycle for PIO and MW DMA
++ * xfer.
++ * 25:27 cmd_pre_high_time. time to initialize 1st PIO cycle for task
++ * register access.
++ * 28 UDMA enable
++ * 29 DMA enable
++ * 30 PIO_MST enable. if set, the chip is in bus master mode during
++ * PIO.
++ * 31 FIFO enable.
++ */
++
++/* from highpoint documentation. these are old values */
++static struct hpt_clock hpt370_timings_33[] = {
++/* { XFER_UDMA_5, 0x1A85F442, 0x16454e31 }, */
++ { XFER_UDMA_5, 0x16454e31 },
++ { XFER_UDMA_4, 0x16454e31 },
++ { XFER_UDMA_3, 0x166d4e31 },
++ { XFER_UDMA_2, 0x16494e31 },
++ { XFER_UDMA_1, 0x164d4e31 },
++ { XFER_UDMA_0, 0x16514e31 },
++
++ { XFER_MW_DMA_2, 0x26514e21 },
++ { XFER_MW_DMA_1, 0x26514e33 },
++ { XFER_MW_DMA_0, 0x26514e97 },
++
++ { XFER_PIO_4, 0x06514e21 },
++ { XFER_PIO_3, 0x06514e22 },
++ { XFER_PIO_2, 0x06514e33 },
++ { XFER_PIO_1, 0x06914e43 },
++ { XFER_PIO_0, 0x06914e57 },
++ { 0, 0x06514e57 }
++};
++
++static struct hpt_clock hpt370_timings_66[] = {
++ { XFER_UDMA_5, 0x14846231 },
++ { XFER_UDMA_4, 0x14886231 },
++ { XFER_UDMA_3, 0x148c6231 },
++ { XFER_UDMA_2, 0x148c6231 },
++ { XFER_UDMA_1, 0x14906231 },
++ { XFER_UDMA_0, 0x14986231 },
++
++ { XFER_MW_DMA_2, 0x26514e21 },
++ { XFER_MW_DMA_1, 0x26514e33 },
++ { XFER_MW_DMA_0, 0x26514e97 },
++
++ { XFER_PIO_4, 0x06514e21 },
++ { XFER_PIO_3, 0x06514e22 },
++ { XFER_PIO_2, 0x06514e33 },
++ { XFER_PIO_1, 0x06914e43 },
++ { XFER_PIO_0, 0x06914e57 },
++ { 0, 0x06514e57 }
++};
++
++/* these are the current (4 sep 2001) timings from highpoint */
++static struct hpt_clock hpt370a_timings_33[] = {
++ { XFER_UDMA_5, 0x12446231 },
++ { XFER_UDMA_4, 0x12446231 },
++ { XFER_UDMA_3, 0x126c6231 },
++ { XFER_UDMA_2, 0x12486231 },
++ { XFER_UDMA_1, 0x124c6233 },
++ { XFER_UDMA_0, 0x12506297 },
++
++ { XFER_MW_DMA_2, 0x22406c31 },
++ { XFER_MW_DMA_1, 0x22406c33 },
++ { XFER_MW_DMA_0, 0x22406c97 },
++
++ { XFER_PIO_4, 0x06414e31 },
++ { XFER_PIO_3, 0x06414e42 },
++ { XFER_PIO_2, 0x06414e53 },
++ { XFER_PIO_1, 0x06814e93 },
++ { XFER_PIO_0, 0x06814ea7 },
++ { 0, 0x06814ea7 }
++};
++
++/* 2x 33MHz timings */
++static struct hpt_clock hpt370a_timings_66[] = {
++ { XFER_UDMA_5, 0x1488e673 },
++ { XFER_UDMA_4, 0x1488e673 },
++ { XFER_UDMA_3, 0x1498e673 },
++ { XFER_UDMA_2, 0x1490e673 },
++ { XFER_UDMA_1, 0x1498e677 },
++ { XFER_UDMA_0, 0x14a0e73f },
++
++ { XFER_MW_DMA_2, 0x2480fa73 },
++ { XFER_MW_DMA_1, 0x2480fa77 },
++ { XFER_MW_DMA_0, 0x2480fb3f },
++
++ { XFER_PIO_4, 0x0c82be73 },
++ { XFER_PIO_3, 0x0c82be95 },
++ { XFER_PIO_2, 0x0c82beb7 },
++ { XFER_PIO_1, 0x0d02bf37 },
++ { XFER_PIO_0, 0x0d02bf5f },
++ { 0, 0x0d02bf5f }
++};
++
++static struct hpt_clock hpt370a_timings_50[] = {
++ { XFER_UDMA_5, 0x12848242 },
++ { XFER_UDMA_4, 0x12ac8242 },
++ { XFER_UDMA_3, 0x128c8242 },
++ { XFER_UDMA_2, 0x120c8242 },
++ { XFER_UDMA_1, 0x12148254 },
++ { XFER_UDMA_0, 0x121882ea },
++
++ { XFER_MW_DMA_2, 0x22808242 },
++ { XFER_MW_DMA_1, 0x22808254 },
++ { XFER_MW_DMA_0, 0x228082ea },
++
++ { XFER_PIO_4, 0x0a81f442 },
++ { XFER_PIO_3, 0x0a81f443 },
++ { XFER_PIO_2, 0x0a81f454 },
++ { XFER_PIO_1, 0x0ac1f465 },
++ { XFER_PIO_0, 0x0ac1f48a },
++ { 0, 0x0ac1f48a }
++};
++
++static struct hpt_clock hpt372_timings_33[] = {
++ { XFER_UDMA_6, 0x1c81dc62 },
++ { XFER_UDMA_5, 0x1c6ddc62 },
++ { XFER_UDMA_4, 0x1c8ddc62 },
++ { XFER_UDMA_3, 0x1c8edc62 }, /* checkme */
++ { XFER_UDMA_2, 0x1c91dc62 },
++ { XFER_UDMA_1, 0x1c9adc62 }, /* checkme */
++ { XFER_UDMA_0, 0x1c82dc62 }, /* checkme */
++
++ { XFER_MW_DMA_2, 0x2c829262 },
++ { XFER_MW_DMA_1, 0x2c829266 }, /* checkme */
++ { XFER_MW_DMA_0, 0x2c82922e }, /* checkme */
++
++ { XFER_PIO_4, 0x0c829c62 },
++ { XFER_PIO_3, 0x0c829c84 },
++ { XFER_PIO_2, 0x0c829ca6 },
++ { XFER_PIO_1, 0x0d029d26 },
++ { XFER_PIO_0, 0x0d029d5e },
++ { 0, 0x0d029d5e }
++};
++
++static struct hpt_clock hpt372_timings_50[] = {
++ { XFER_UDMA_5, 0x12848242 },
++ { XFER_UDMA_4, 0x12ac8242 },
++ { XFER_UDMA_3, 0x128c8242 },
++ { XFER_UDMA_2, 0x120c8242 },
++ { XFER_UDMA_1, 0x12148254 },
++ { XFER_UDMA_0, 0x121882ea },
++
++ { XFER_MW_DMA_2, 0x22808242 },
++ { XFER_MW_DMA_1, 0x22808254 },
++ { XFER_MW_DMA_0, 0x228082ea },
++
++ { XFER_PIO_4, 0x0a81f442 },
++ { XFER_PIO_3, 0x0a81f443 },
++ { XFER_PIO_2, 0x0a81f454 },
++ { XFER_PIO_1, 0x0ac1f465 },
++ { XFER_PIO_0, 0x0ac1f48a },
++ { 0, 0x0a81f443 }
++};
++
++static struct hpt_clock hpt372_timings_66[] = {
++ { XFER_UDMA_6, 0x1c869c62 },
++ { XFER_UDMA_5, 0x1cae9c62 },
++ { XFER_UDMA_4, 0x1c8a9c62 },
++ { XFER_UDMA_3, 0x1c8e9c62 },
++ { XFER_UDMA_2, 0x1c929c62 },
++ { XFER_UDMA_1, 0x1c9a9c62 },
++ { XFER_UDMA_0, 0x1c829c62 },
++
++ { XFER_MW_DMA_2, 0x2c829c62 },
++ { XFER_MW_DMA_1, 0x2c829c66 },
++ { XFER_MW_DMA_0, 0x2c829d2e },
++
++ { XFER_PIO_4, 0x0c829c62 },
++ { XFER_PIO_3, 0x0c829c84 },
++ { XFER_PIO_2, 0x0c829ca6 },
++ { XFER_PIO_1, 0x0d029d26 },
++ { XFER_PIO_0, 0x0d029d5e },
++ { 0, 0x0d029d26 }
++};
++
++static struct hpt_clock hpt374_timings_33[] = {
++ { XFER_UDMA_6, 0x12808242 },
++ { XFER_UDMA_5, 0x12848242 },
++ { XFER_UDMA_4, 0x12ac8242 },
++ { XFER_UDMA_3, 0x128c8242 },
++ { XFER_UDMA_2, 0x120c8242 },
++ { XFER_UDMA_1, 0x12148254 },
++ { XFER_UDMA_0, 0x121882ea },
++
++ { XFER_MW_DMA_2, 0x22808242 },
++ { XFER_MW_DMA_1, 0x22808254 },
++ { XFER_MW_DMA_0, 0x228082ea },
++
++ { XFER_PIO_4, 0x0a81f442 },
++ { XFER_PIO_3, 0x0a81f443 },
++ { XFER_PIO_2, 0x0a81f454 },
++ { XFER_PIO_1, 0x0ac1f465 },
++ { XFER_PIO_0, 0x0ac1f48a },
++ { 0, 0x06814e93 }
++};
++
++static struct hpt_chip hpt370 = {
++ "HPT370",
++ 48,
++ {
++ hpt370_timings_33,
++ NULL,
++ NULL,
++ hpt370_timings_66
++ }
++};
++
++static struct hpt_chip hpt370a = {
++ "HPT370A",
++ 48,
++ {
++ hpt370a_timings_33,
++ NULL,
++ hpt370a_timings_50,
++ hpt370a_timings_66
++ }
++};
++
++static struct hpt_chip hpt372 = {
++ "HPT372",
++ 55,
++ {
++ hpt372_timings_33,
++ NULL,
++ hpt372_timings_50,
++ hpt372_timings_66
++ }
++};
++
++static struct hpt_chip hpt302 = {
++ "HPT302",
++ 66,
++ {
++ hpt372_timings_33,
++ NULL,
++ hpt372_timings_50,
++ hpt372_timings_66
++ }
++};
++
++static struct hpt_chip hpt371 = {
++ "HPT371",
++ 66,
++ {
++ hpt372_timings_33,
++ NULL,
++ hpt372_timings_50,
++ hpt372_timings_66
++ }
++};
++
++static struct hpt_chip hpt372a = {
++ "HPT372A",
++ 66,
++ {
++ hpt372_timings_33,
++ NULL,
++ hpt372_timings_50,
++ hpt372_timings_66
++ }
++};
++
++static struct hpt_chip hpt374 = {
++ "HPT374",
++ 48,
++ {
++ hpt374_timings_33,
++ NULL,
++ NULL,
++ NULL
++ }
++};
++
++/**
++ * hpt37x_find_mode - reset the hpt37x bus
++ * @ap: ATA port
++ * @speed: transfer mode
++ *
++ * Return the 32bit register programming information for this channel
++ * that matches the speed provided.
++ */
++
++static u32 hpt37x_find_mode(struct ata_port *ap, int speed)
++{
++ struct hpt_clock *clocks = ap->host_set->private_data;
++
++ while(clocks->xfer_speed) {
++ if (clocks->xfer_speed == speed)
++ return clocks->timing;
++ clocks++;
++ }
++ BUG();
++}
++
++static int hpt_dma_blacklisted(const struct ata_device *dev, char *modestr, const char *list[])
++{
++ unsigned char model_num[40];
++ char *s;
++ unsigned int len;
++ int i = 0;
++
++ ata_dev_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
++ sizeof(model_num));
++ s = &model_num[0];
++ len = strnlen(s, sizeof(model_num));
++
++ /* ATAPI specifies that empty space is blank-filled; remove blanks */
++ while ((len > 0) && (s[len - 1] == ' ')) {
++ len--;
++ s[len] = 0;
++ }
++
++ while(list[i] != NULL) {
++ if (!strncmp(list[i], s, len)) {
++ printk(KERN_WARNING DRV_NAME ": %s is not supported for %s.\n",
++ modestr, list[i]);
++ return 1;
++ }
++ i++;
++ }
++ return 0;
++}
++
++static const char *bad_ata33[] = {
++ "Maxtor 92720U8", "Maxtor 92040U6", "Maxtor 91360U4", "Maxtor 91020U3", "Maxtor 90845U3", "Maxtor 90650U2",
++ "Maxtor 91360D8", "Maxtor 91190D7", "Maxtor 91020D6", "Maxtor 90845D5", "Maxtor 90680D4", "Maxtor 90510D3", "Maxtor 90340D2",
++ "Maxtor 91152D8", "Maxtor 91008D7", "Maxtor 90845D6", "Maxtor 90840D6", "Maxtor 90720D5", "Maxtor 90648D5", "Maxtor 90576D4",
++ "Maxtor 90510D4",
++ "Maxtor 90432D3", "Maxtor 90288D2", "Maxtor 90256D2",
++ "Maxtor 91000D8", "Maxtor 90910D8", "Maxtor 90875D7", "Maxtor 90840D7", "Maxtor 90750D6", "Maxtor 90625D5", "Maxtor 90500D4",
++ "Maxtor 91728D8", "Maxtor 91512D7", "Maxtor 91303D6", "Maxtor 91080D5", "Maxtor 90845D4", "Maxtor 90680D4", "Maxtor 90648D3", "Maxtor 90432D2",
++ NULL
++};
++
++static const char *bad_ata100_5[] = {
++ "IBM-DTLA-307075",
++ "IBM-DTLA-307060",
++ "IBM-DTLA-307045",
++ "IBM-DTLA-307030",
++ "IBM-DTLA-307020",
++ "IBM-DTLA-307015",
++ "IBM-DTLA-305040",
++ "IBM-DTLA-305030",
++ "IBM-DTLA-305020",
++ "IC35L010AVER07-0",
++ "IC35L020AVER07-0",
++ "IC35L030AVER07-0",
++ "IC35L040AVER07-0",
++ "IC35L060AVER07-0",
++ "WDC AC310200R",
++ NULL
++};
++
++/**
++ * hpt370_filter - mode selection filter
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Block UDMA on devices that cause trouble with this controller.
++ */
++
++static unsigned int hpt370_filter(const struct ata_port *ap, struct ata_device *adev, unsigned int mask, int shift)
++{
++ if (shift != ATA_SHIFT_UDMA)
++ return mask;
++ if (adev->class != ATA_DEV_ATA)
++ return mask;
++ if (hpt_dma_blacklisted(adev, "UDMA", bad_ata33))
++ return mask & 0x1F;
++ if (hpt_dma_blacklisted(adev, "UDMA100", bad_ata100_5))
++ return mask & 0x1F;
++ return mask;
++}
++
++/**
++ * hpt370a_filter - mode selection filter
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Block UDMA on devices that cause trouble with this controller.
++ */
++
++static unsigned int hpt370a_filter(const struct ata_port *ap, struct ata_device *adev, unsigned int mask, int shift)
++{
++ if (shift != ATA_SHIFT_UDMA)
++ return mask;
++ if (adev->class != ATA_DEV_ATA)
++ return mask;
++ if (hpt_dma_blacklisted(adev, "UDMA100", bad_ata100_5))
++ return mask & 0x1F;
++ return mask;
++}
++
++/**
++ * hpt37x_phy_reset - reset the hpt37x bus
++ * @ap: ATA port to reset
++ *
++ * Perform the PHY reset handling for the 370/372 and 374 func 0
++ */
++
++static void hpt37x_phy_reset(struct ata_port *ap)
++{
++ u8 scr2, ata66;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_byte(pdev, 0x5B, &scr2);
++ pci_write_config_byte(pdev, 0x5B, scr2 & ~0x01);
++ /* Cable register now active */
++ pci_read_config_byte(pdev, 0x5A, &ata66);
++ /* Restore state */
++ pci_write_config_byte(pdev, 0x5B, scr2);
++
++ if (ata66 & (1 << ap->hard_port_no))
++ ap->cbl = ATA_CBL_PATA40;
++ else
++ ap->cbl = ATA_CBL_PATA80;
++
++ /* Reset the state machine */
++ pci_write_config_byte(pdev, 0x50, 0x37);
++ pci_write_config_byte(pdev, 0x54, 0x37);
++ udelay(100);
++
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * hpt374_phy_reset - reset the hpt374
++ * @ap: ATA port to reset
++ *
++ * The 374 cable detect is a little different due to the extra
++ * channels. The function 0 channels work like usual but function 1
++ * is special
++ */
++
++static void hpt374_phy_reset(struct ata_port *ap)
++{
++ u16 mcr3, mcr6;
++ u8 ata66;
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ if (!(PCI_FUNC(pdev->devfn) & 1)) {
++ hpt37x_phy_reset(ap);
++ return;
++ }
++ /* Do the extra channel work */
++ pci_read_config_word(pdev, 0x52, &mcr3);
++ pci_read_config_word(pdev, 0x56, &mcr6);
++ /* Set bit 15 of 0x52 to enable TCBLID as input
++ Set bit 15 of 0x56 to enable FCBLID as input
++ */
++ pci_write_config_word(pdev, 0x52, mcr3 | 0x8000);
++ pci_write_config_word(pdev, 0x56, mcr6 | 0x8000);
++ pci_read_config_byte(pdev, 0x5A, &ata66);
++ /* Reset TCBLID/FCBLID to output */
++ pci_write_config_word(pdev, 0x52, mcr3);
++ pci_write_config_word(pdev, 0x56, mcr6);
++
++ if (ata66 & (1 << ap->hard_port_no))
++ ap->cbl = ATA_CBL_PATA40;
++ else
++ ap->cbl = ATA_CBL_PATA80;
++
++ /* Reset the state machine */
++ pci_write_config_byte(pdev, 0x50, 0x37);
++ pci_write_config_byte(pdev, 0x54, 0x37);
++ udelay(100);
++
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++
++/**
++ * hpt370_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Perform PIO mode setup.
++ */
++
++static void hpt370_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ fast &= ~0x02;
++ fast |= 0x01;
++ pci_write_config_byte(pdev, addr2, fast);
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt37x_find_mode(ap, adev->pio_mode);
++ mode &= ~0x8000000; /* No FIFO in PIO */
++ mode &= ~0x30070000; /* Leave config bits alone */
++ reg &= 0x30070000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt370_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * Set up the channel for MWDMA or UDMA modes. Much the same as with
++ * PIO, load the mode number and then set MWDMA or UDMA flag.
++ */
++
++static void hpt370_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ fast &= ~0x02;
++ fast |= 0x01;
++ pci_write_config_byte(pdev, addr2, fast);
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt37x_find_mode(ap, adev->dma_mode);
++ mode |= 0x8000000; /* FIFO in MWDMA or UDMA */
++ mode &= ~0xC0000000; /* Leave config bits alone */
++ reg &= 0xC0000000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt370_bmdma_start - DMA engine begin
++ * @qc: ATA command
++ *
++ * The 370 and 370A want us to reset the DMA engine each time we
++ * use it. The 372 and later are fine.
++ */
++
++static void hpt370_bmdma_start(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ pci_write_config_byte(pdev, 0x50 + 4 * ap->hard_port_no, 0x37);
++ udelay(10);
++ ata_bmdma_start(qc);
++}
++
++/**
++ * hpt370_bmdma_end - DMA engine stop
++ * @qc: ATA command
++ *
++ * Work around the HPT370 DMA engine.
++ */
++
++static void hpt370_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 dma_stat = inb(ap->ioaddr.bmdma_addr + 2);
++ u8 dma_cmd;
++ unsigned long bmdma = ap->ioaddr.bmdma_addr;
++
++ if (dma_stat & 0x01) {
++ udelay(20);
++ dma_stat = inb(bmdma + 2);
++ }
++ if (dma_stat & 0x01) {
++ /* Clear the engine */
++ pci_write_config_byte(pdev, 0x50 + 4 * ap->hard_port_no, 0x37);
++ udelay(10);
++ /* Stop DMA */
++ dma_cmd = inb(bmdma );
++ outb(dma_cmd & 0xFE, bmdma);
++ /* Clear Error */
++ dma_stat = inb(bmdma + 2);
++ outb(dma_stat | 0x06 , bmdma + 2);
++ /* Clear the engine */
++ pci_write_config_byte(pdev, 0x50 + 4 * ap->hard_port_no, 0x37);
++ udelay(10);
++ }
++ ata_bmdma_stop(qc);
++}
++
++/**
++ * hpt372_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Perform PIO mode setup.
++ */
++
++static void hpt372_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ fast &= ~0x07;
++ pci_write_config_byte(pdev, addr2, fast);
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt37x_find_mode(ap, adev->pio_mode);
++
++ printk("Find mode for %d reports %X\n", adev->pio_mode, mode);
++ mode &= ~0x80000000; /* No FIFO in PIO */
++ mode &= ~0x30070000; /* Leave config bits alone */
++ reg &= 0x30070000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt372_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * Set up the channel for MWDMA or UDMA modes. Much the same as with
++ * PIO, load the mode number and then set MWDMA or UDMA flag.
++ */
++
++static void hpt372_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ fast &= ~0x07;
++ pci_write_config_byte(pdev, addr2, fast);
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt37x_find_mode(ap, adev->dma_mode);
++ printk("Find mode for DMA %d reports %X\n", adev->dma_mode, mode);
++ mode &= ~0xC0000000; /* Leave config bits alone */
++ mode |= 0x80000000; /* FIFO in MWDMA or UDMA */
++ reg &= 0xC0000000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt37x_bmdma_end - DMA engine stop
++ * @qc: ATA command
++ *
++ * Clean up after the HPT372 and later DMA engine
++ */
++
++static void hpt37x_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int mscreg = 0x50 + 2 * ap->hard_port_no;
++ u8 bwsr_stat, msc_stat;
++
++ pci_read_config_byte(pdev, 0x6A, &bwsr_stat);
++ pci_read_config_byte(pdev, mscreg, &msc_stat);
++ if (bwsr_stat & (1 << ap->hard_port_no))
++ pci_write_config_byte(pdev, mscreg, msc_stat | 0x30);
++ ata_bmdma_stop(qc);
++}
++
++
++static struct scsi_host_template hpt37x_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++/*
++ * Configuration for HPT370
++ */
++
++static struct ata_port_operations hpt370_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt370_set_piomode,
++ .set_dmamode = hpt370_set_dmamode,
++ .mode_filter = hpt370_filter,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt37x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = hpt370_bmdma_start,
++ .bmdma_stop = hpt370_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Configuration for HPT370A. Close to 370 but less filters
++ */
++
++static struct ata_port_operations hpt370a_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt370_set_piomode,
++ .set_dmamode = hpt370_set_dmamode,
++ .mode_filter = hpt370a_filter,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt37x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = hpt370_bmdma_start,
++ .bmdma_stop = hpt370_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Configuration for HPT372, HPT371, HPT302. Slightly different PIO
++ * and DMA mode setting functionality.
++ */
++
++static struct ata_port_operations hpt372_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt372_set_piomode,
++ .set_dmamode = hpt372_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt37x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = hpt37x_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Configuration for HPT374. Mode setting works like 372 and friends
++ * but we have a different cable detection procedure.
++ */
++
++static struct ata_port_operations hpt374_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt372_set_piomode,
++ .set_dmamode = hpt372_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt374_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = hpt37x_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * htp37x_clock_slot - Turn timing to PC clock entry
++ * @freq: Reported frequency timing
++ * @base: Base timing
++ *
++ * Turn the timing data intoa clock slot (0 for 33, 1 for 40, 2 for 50
++ * and 3 for 66Mhz)
++ */
++
++static int hpt37x_clock_slot(unsigned int freq, unsigned int base)
++{
++ unsigned int f = (base * freq) / 192; /* Mhz */
++ if (f < 40)
++ return 0; /* 33Mhz slot */
++ if (f < 45)
++ return 1; /* 40Mhz slot */
++ if (f < 55)
++ return 2; /* 50Mhz slot */
++ return 3; /* 60Mhz slot */
++}
++
++/**
++ * hpt37x_calibrate_dpll - Calibrate the DPLL loop
++ * @dev: PCI device
++ *
++ * Perform a calibration cycle on the HPT37x DPLL. Returns 1 if this
++ * succeeds
++ */
++
++static int hpt37x_calibrate_dpll(struct pci_dev *dev)
++{
++ u8 reg5b;
++ u32 reg5c;
++ int tries;
++
++ for(tries = 0; tries < 0x5000; tries++) {
++ udelay(50);
++ pci_read_config_byte(dev, 0x5b, &reg5b);
++ if (reg5b & 0x80) {
++ /* See if it stays set */
++ for(tries = 0; tries < 0x1000; tries ++) {
++ pci_read_config_byte(dev, 0x5b, &reg5b);
++ /* Failed ? */
++ if ((reg5b & 0x80) == 0)
++ return 0;
++ }
++ /* Turn off tuning, we have the DPLL set */
++ pci_read_config_dword(dev, 0x5c, &reg5c);
++ pci_write_config_dword(dev, 0x5c, reg5c & ~ 0x100);
++ return 1;
++ }
++ }
++ /* Never went stable */
++ return 0;
++}
++/**
++ * hpt37x_init_one - Initialise an HPT37X/302
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Initialise an HPT37x device. There are some interesting complications
++ * here. Firstly the chip may report 366 and be one of several variants.
++ * Secondly all the timings depend on the clock for the chip which we must
++ * detect and look up
++ *
++ * This is the known chip mappings. It may be missing a couple of later
++ * releases.
++ *
++ * Chip version PCI Rev Notes
++ * HPT366 4 (HPT366) 0 Other driver
++ * HPT366 4 (HPT366) 1 Other driver
++ * HPT368 4 (HPT366) 2 Other driver
++ * HPT370 4 (HPT366) 3 UDMA100
++ * HPT370A 4 (HPT366) 4 UDMA100
++ * HPT372 4 (HPT366) 5 UDMA133 (1)
++ * HPT372N 4 (HPT366) 6 Other driver
++ * HPT372A 5 (HPT372) 1 UDMA133 (1)
++ * HPT372N 5 (HPT372) 2 Other driver
++ * HPT302 6 (HPT302) 1 UDMA133
++ * HPT302N 6 (HPT302) 2 Other driver
++ * HPT371 7 (HPT371) * UDMA133
++ * HPT374 8 (HPT374) * UDMA133 4 channel
++ * HPT372N 9 (HPT372N) * Other driver
++ *
++ * (1) UDMA133 support depends on the bus clock
++ */
++
++static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ /* HPT370 - UDMA100 */
++ static struct ata_port_info info_hpt370 = {
++ .sht = &hpt37x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &hpt370_port_ops
++ };
++ /* HPT370A - UDMA100 */
++ static struct ata_port_info info_hpt370a = {
++ .sht = &hpt37x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &hpt370a_port_ops
++ };
++ /* HPT371, 372 and friends - UDMA133 */
++ static struct ata_port_info info_hpt372 = {
++ .sht = &hpt37x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f,
++ .port_ops = &hpt372_port_ops
++ };
++ /* HPT371, 372 and friends - UDMA100 at 50MHz clock */
++ static struct ata_port_info info_hpt372_50 = {
++ .sht = &hpt37x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &hpt372_port_ops
++ };
++ /* HPT374 - UDMA133 */
++ static struct ata_port_info info_hpt374 = {
++ .sht = &hpt37x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f,
++ .port_ops = &hpt374_port_ops
++ };
++
++ struct ata_port_info *port_info[2];
++ struct ata_port_info *port;
++
++ u8 irqmask;
++ u32 class_rev;
++ u32 freq;
++
++ int MHz[4] = { 33, 40, 50, 66 };
++ struct hpt_chip *chip_table;
++ int clock_slot;
++
++ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev);
++ class_rev &= 0xFF;
++
++ if (dev->device == PCI_DEVICE_ID_TTI_HPT366) {
++ /* May be a later chip in disguise. Check */
++ /* Older chips are in the HPT366 driver. Ignore them */
++ if (class_rev < 3)
++ return -ENODEV;
++ /* N series chips have their own driver. Ignore */
++ if (class_rev == 6)
++ return -ENODEV;
++
++ switch(class_rev) {
++ case 3:
++ port = &info_hpt370;
++ chip_table = &hpt370;
++ break;
++ case 4:
++ port = &info_hpt370a;
++ chip_table = &hpt370a;
++ break;
++ case 5:
++ port = &info_hpt372;
++ chip_table = &hpt372;
++ break;
++ default:
++ printk(KERN_ERR "pata_hpt37x: Unknown HPT366 subtype please report (%d).\n", class_rev);
++ return -ENODEV;
++ }
++ } else {
++ switch(dev->device) {
++ case PCI_DEVICE_ID_TTI_HPT372:
++ /* 372N if rev >= 2*/
++ if (class_rev >= 2)
++ return -ENODEV;
++ port = &info_hpt372;
++ chip_table = &hpt372a;
++ break;
++ case PCI_DEVICE_ID_TTI_HPT302:
++ /* 302N if rev > 1 */
++ if (class_rev > 1)
++ return -ENODEV;
++ port = &info_hpt372;
++ /* Check this */
++ chip_table = &hpt302;
++ break;
++ case PCI_DEVICE_ID_TTI_HPT371:
++ port = &info_hpt372;
++ chip_table = &hpt371;
++ break;
++ case PCI_DEVICE_ID_TTI_HPT374:
++ chip_table = &hpt374;
++ port = &info_hpt374;
++ break;
++ default:
++ printk(KERN_ERR "pata_hpt37x: PCI table is bogus please report (%d).\n", dev->device);
++ return -ENODEV;
++ }
++ }
++ /* Ok so this is a chip we support */
++
++ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, (L1_CACHE_BYTES / 4));
++ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0x78);
++ pci_write_config_byte(dev, PCI_MIN_GNT, 0x08);
++ pci_write_config_byte(dev, PCI_MAX_LAT, 0x08);
++
++ pci_read_config_byte(dev, 0x5A, &irqmask);
++ irqmask &= ~0x10;
++ pci_write_config_byte(dev, 0x5a, irqmask);
++
++ /*
++ * default to pci clock. make sure MA15/16 are set to output
++ * to prevent drives having problems with 40-pin cables. Needed
++ * for some drives such as IBM-DTLA which will not enter ready
++ * state on reset when PDIAG is a input.
++ */
++
++ pci_write_config_byte(dev, 0x5b, 0x23);
++
++ pci_read_config_dword(dev, 0x70, &freq);
++ if ((freq >> 12) != 0xABCDE) {
++ int i;
++ u8 sr;
++ u32 total = 0;
++
++ printk(KERN_WARNING "pata_hpt37x: BIOS has not set timing clocks.\n");
++
++ /* This is the process the HPT371 BIOS is reported to use */
++ for(i = 0; i < 128; i++) {
++ pci_read_config_byte(dev, 0x78, &sr);
++ total += sr;
++ udelay(15);
++ }
++ freq = total / 128;
++ }
++ freq &= 0x1FF;
++
++ /*
++ * Turn the frequency check into a band and then find a timing
++ * table to match it.
++ */
++
++ clock_slot = hpt37x_clock_slot(freq, chip_table->base);
++ if (chip_table->clocks[clock_slot] == NULL) {
++ /*
++ * We need to try PLL mode instead
++ */
++ unsigned int f_low = (MHz[clock_slot] * chip_table->base) / 192;
++ unsigned int f_high = f_low + 2;
++ int adjust;
++
++ for(adjust = 0; adjust < 8; adjust++) {
++ if (hpt37x_calibrate_dpll(dev))
++ break;
++ /* See if it'll settle at a fractionally different clock */
++ if ((adjust & 3) == 3) {
++ f_low --;
++ f_high ++;
++ }
++ pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low);
++ }
++ if (adjust == 8) {
++ printk(KERN_WARNING "hpt37x: DPLL did not stabilize.\n");
++ return -ENODEV;
++ }
++ /* Check if this works for all cases */
++ port->private_data = hpt370_timings_66;
++
++ printk(KERN_INFO "hpt37x: Bus clock %dMHz, using DPLL.\n", MHz[clock_slot]);
++ } else {
++ port->private_data = chip_table->clocks[clock_slot];
++ /*
++ * Perform a final fixup. The 371 and 372 clock determines
++ * if UDMA133 is available.
++ */
++
++ if (clock_slot == 2 && chip_table == &hpt372) { /* 50Mhz */
++ printk(KERN_WARNING "pata_hpt37x: No UDMA133 support available with 50MHz bus clock.\n");
++ if (port == &info_hpt372)
++ port = &info_hpt372_50;
++ else BUG();
++ }
++ printk(KERN_INFO "hpt37x: %s: Bus clock %dMHz.\n", chip_table->name, MHz[clock_slot]);
++ }
++ port_info[0] = port_info[1] = port;
++ /* Now kick off ATA set up */
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id hpt37x[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT366), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT371), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT372), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT374), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT302), },
++ { 0, },
++};
++
++static struct pci_driver hpt37x_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = hpt37x,
++ .probe = hpt37x_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init hpt37x_init(void)
++{
++ return pci_register_driver(&hpt37x_pci_driver);
++}
++
++
++static void __exit hpt37x_exit(void)
++{
++ pci_unregister_driver(&hpt37x_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the Highpoint HPT37x/30x");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, hpt37x);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(hpt37x_init);
++module_exit(hpt37x_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt3x2n.c linux-2.6.16-rc6/drivers/scsi/pata_hpt3x2n.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_hpt3x2n.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_hpt3x2n.c 2006-03-10 17:06:19.000000000 +0000
+@@ -0,0 +1,580 @@
++/*
++ * Libata driver for the highpoint 372N and 302N UDMA66 ATA controllers.
++ *
++ * This driver is heavily based upon:
++ *
++ * linux/drivers/ide/pci/hpt366.c Version 0.36 April 25, 2003
++ *
++ * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
++ * Portions Copyright (C) 2001 Sun Microsystems, Inc.
++ * Portions Copyright (C) 2003 Red Hat Inc
++ *
++ *
++ * TODO
++ * 371N
++ * Work out best PLL policy
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "hpt3x2n"
++#define DRV_VERSION "0.1"
++
++enum {
++ HPT_PCI_FAST = (1 << 31),
++ PCI66 = (1 << 1),
++ USE_DPLL = (1 << 0)
++};
++
++struct hpt_clock {
++ u8 xfer_speed;
++ u32 timing;
++};
++
++struct hpt_chip {
++ const char *name;
++ struct hpt_clock *clocks[3];
++};
++
++/* key for bus clock timings
++ * bit
++ * 0:3 data_high_time. inactive time of DIOW_/DIOR_ for PIO and MW
++ * DMA. cycles = value + 1
++ * 4:8 data_low_time. active time of DIOW_/DIOR_ for PIO and MW
++ * DMA. cycles = value + 1
++ * 9:12 cmd_high_time. inactive time of DIOW_/DIOR_ during task file
++ * register access.
++ * 13:17 cmd_low_time. active time of DIOW_/DIOR_ during task file
++ * register access.
++ * 18:21 udma_cycle_time. clock freq and clock cycles for UDMA xfer.
++ * during task file register access.
++ * 22:24 pre_high_time. time to initialize 1st cycle for PIO and MW DMA
++ * xfer.
++ * 25:27 cmd_pre_high_time. time to initialize 1st PIO cycle for task
++ * register access.
++ * 28 UDMA enable
++ * 29 DMA enable
++ * 30 PIO_MST enable. if set, the chip is in bus master mode during
++ * PIO.
++ * 31 FIFO enable.
++ */
++
++/* 66MHz DPLL clocks */
++
++static struct hpt_clock hpt3x2n_clocks[] = {
++ { XFER_UDMA_7, 0x1c869c62 },
++ { XFER_UDMA_6, 0x1c869c62 },
++ { XFER_UDMA_5, 0x1c8a9c62 },
++ { XFER_UDMA_4, 0x1c8a9c62 },
++ { XFER_UDMA_3, 0x1c8e9c62 },
++ { XFER_UDMA_2, 0x1c929c62 },
++ { XFER_UDMA_1, 0x1c9a9c62 },
++ { XFER_UDMA_0, 0x1c829c62 },
++
++ { XFER_MW_DMA_2, 0x2c829c62 },
++ { XFER_MW_DMA_1, 0x2c829c66 },
++ { XFER_MW_DMA_0, 0x2c829d2c },
++
++ { XFER_PIO_4, 0x0c829c62 },
++ { XFER_PIO_3, 0x0c829c84 },
++ { XFER_PIO_2, 0x0c829ca6 },
++ { XFER_PIO_1, 0x0d029d26 },
++ { XFER_PIO_0, 0x0d029d5e },
++ { 0, 0x0d029d5e }
++};
++
++/**
++ * hpt3x2n_find_mode - reset the hpt3x2n bus
++ * @ap: ATA port
++ * @speed: transfer mode
++ *
++ * Return the 32bit register programming information for this channel
++ * that matches the speed provided. For the moment the clocks table
++ * is hard coded but easy to change. This will be needed if we use
++ * different DPLLs
++ */
++
++static u32 hpt3x2n_find_mode(struct ata_port *ap, int speed)
++{
++ struct hpt_clock *clocks = hpt3x2n_clocks;
++
++ while(clocks->xfer_speed) {
++ if (clocks->xfer_speed == speed)
++ return clocks->timing;
++ clocks++;
++ }
++ BUG();
++}
++
++/**
++ * hpt3x2n_phy_reset - reset the hpt3x2n bus
++ * @ap: ATA port to reset
++ *
++ * Perform the PHY reset handling for the 3x2N
++ */
++
++static void hpt3x2n_phy_reset(struct ata_port *ap)
++{
++ u8 scr2, ata66;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_byte(pdev, 0x5B, &scr2);
++ pci_write_config_byte(pdev, 0x5B, scr2 & ~0x01);
++ /* Cable register now active */
++ pci_read_config_byte(pdev, 0x5A, &ata66);
++ /* Restore state */
++ pci_write_config_byte(pdev, 0x5B, scr2);
++
++ if (ata66 & (1 << ap->hard_port_no))
++ ap->cbl = ATA_CBL_PATA40;
++ else
++ ap->cbl = ATA_CBL_PATA80;
++
++ /* Reset the state machine */
++ pci_write_config_byte(pdev, 0x50, 0x37);
++ pci_write_config_byte(pdev, 0x54, 0x37);
++ udelay(100);
++
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++/**
++ * hpt3x2n_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Perform PIO mode setup.
++ */
++
++static void hpt3x2n_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ fast &= ~0x07;
++ pci_write_config_byte(pdev, addr2, fast);
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt3x2n_find_mode(ap, adev->pio_mode);
++ mode &= ~0x8000000; /* No FIFO in PIO */
++ mode &= ~0x30070000; /* Leave config bits alone */
++ reg &= 0x30070000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt3x2n_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * Set up the channel for MWDMA or UDMA modes. Much the same as with
++ * PIO, load the mode number and then set MWDMA or UDMA flag.
++ */
++
++static void hpt3x2n_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 addr1, addr2;
++ u32 reg;
++ u32 mode;
++ u8 fast;
++
++ addr1 = 0x40 + 4 * (adev->devno + 2 * ap->hard_port_no);
++ addr2 = 0x51 + 4 * ap->hard_port_no;
++
++ /* Fast interrupt prediction disable, hold off interrupt disable */
++ pci_read_config_byte(pdev, addr2, &fast);
++ fast &= ~0x07;
++ pci_write_config_byte(pdev, addr2, fast);
++
++ pci_read_config_dword(pdev, addr1, &reg);
++ mode = hpt3x2n_find_mode(ap, adev->dma_mode);
++ mode |= 0x8000000; /* FIFO in MWDMA or UDMA */
++ mode &= ~0xC0000000; /* Leave config bits alone */
++ reg &= 0xC0000000; /* Strip timing bits */
++ pci_write_config_dword(pdev, addr1, reg | mode);
++}
++
++/**
++ * hpt3x2n_bmdma_end - DMA engine stop
++ * @qc: ATA command
++ *
++ * Clean up after the HPT3x2n and later DMA engine
++ */
++
++static void hpt3x2n_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int mscreg = 0x50 + 2 * ap->hard_port_no;
++ u8 bwsr_stat, msc_stat;
++
++ pci_read_config_byte(pdev, 0x6A, &bwsr_stat);
++ pci_read_config_byte(pdev, mscreg, &msc_stat);
++ if (bwsr_stat & (1 << ap->hard_port_no))
++ pci_write_config_byte(pdev, mscreg, msc_stat | 0x30);
++ ata_bmdma_stop(qc);
++}
++
++/**
++ * hpt3x2n_set_clock - clock control
++ * @ap: ATA port
++ * @source: 0x21 or 0x23 for PLL or PCI sourced clock
++ *
++ * Switch the ATA bus clock between the PLL and PCI clock sources
++ * while correctly isolating the bus and resetting internal logic
++ *
++ * We must use the DPLL for
++ * - writing
++ * - second channel UDMA7 (SATA ports) or higher
++ * - 66MHz PCI
++ *
++ * or we will underclock the device and get reduced performance.
++ */
++
++static void hpt3x2n_set_clock(struct ata_port *ap, int source)
++{
++ unsigned long bmdma = ap->ioaddr.bmdma_addr;
++
++ /* Tristate the bus */
++ outb(0x80, bmdma+0x73);
++ outb(0x80, bmdma+0x77);
++
++ /* Switch clock and reset channels */
++ outb(source, bmdma+0x7B);
++ outb(0xC0, bmdma+0x79);
++
++ /* Reset state machines */
++ outb(0x37, bmdma+0x70);
++ outb(0x37, bmdma+0x74);
++
++ /* Complete reset */
++ outb(0x00, bmdma+0x79);
++
++ /* Reconnect channels to bus */
++ outb(0x00, bmdma+0x73);
++ outb(0x00, bmdma+0x77);
++}
++
++/* Check if our partner interface is busy */
++
++static int hpt3x2n_pair_idle(struct ata_port *ap)
++{
++ struct ata_host_set *host = ap->host_set;
++ struct ata_port *pair = host->ports[ap->hard_port_no ^ 1];
++
++ if (pair->hsm_task_state == HSM_ST_IDLE)
++ return 1;
++ return 0;
++}
++
++static int hpt3x2n_use_dpll(struct ata_port *ap, int reading)
++{
++ long flags = (long)ap->host_set->private_data;
++ /* See if we should use the DPLL */
++ if (reading == 0)
++ return USE_DPLL; /* Needed for write */
++ if (flags & PCI66)
++ return USE_DPLL; /* Needed at 66Mhz */
++ return 0;
++}
++
++static int hpt3x2n_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_taskfile *tf = &qc->tf;
++ struct ata_port *ap = qc->ap;
++ int flags = (long)ap->host_set->private_data;
++
++ if (hpt3x2n_pair_idle(ap)) {
++ int dpll = hpt3x2n_use_dpll(ap, (tf->flags & ATA_TFLAG_WRITE));
++ if ((flags & USE_DPLL) != dpll) {
++ if (dpll == 1)
++ hpt3x2n_set_clock(ap, 0x21);
++ else
++ hpt3x2n_set_clock(ap, 0x23);
++ }
++ }
++ return ata_qc_issue_prot(qc);
++}
++
++static struct scsi_host_template hpt3x2n_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++/*
++ * Configuration for HPT3x2n.
++ */
++
++static struct ata_port_operations hpt3x2n_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = hpt3x2n_set_piomode,
++ .set_dmamode = hpt3x2n_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = hpt3x2n_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = hpt3x2n_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = hpt3x2n_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * hpt3xn_calibrate_dpll - Calibrate the DPLL loop
++ * @dev: PCI device
++ *
++ * Perform a calibration cycle on the HPT3xN DPLL. Returns 1 if this
++ * succeeds
++ */
++
++static int hpt3xn_calibrate_dpll(struct pci_dev *dev)
++{
++ u8 reg5b;
++ u32 reg5c;
++ int tries;
++
++ for(tries = 0; tries < 0x5000; tries++) {
++ udelay(50);
++ pci_read_config_byte(dev, 0x5b, &reg5b);
++ if (reg5b & 0x80) {
++ /* See if it stays set */
++ for(tries = 0; tries < 0x1000; tries ++) {
++ pci_read_config_byte(dev, 0x5b, &reg5b);
++ /* Failed ? */
++ if ((reg5b & 0x80) == 0)
++ return 0;
++ }
++ /* Turn off tuning, we have the DPLL set */
++ pci_read_config_dword(dev, 0x5c, &reg5c);
++ pci_write_config_dword(dev, 0x5c, reg5c & ~ 0x100);
++ return 1;
++ }
++ }
++ /* Never went stable */
++ return 0;
++}
++
++static int hpt3x2n_pci_clock(struct pci_dev *pdev)
++{
++ unsigned long freq;
++ u32 fcnt;
++
++ pci_read_config_dword(pdev, 0x70/*CHECKME*/, &fcnt);
++ if ((fcnt >> 12) != 0xABCDE) {
++ printk(KERN_WARNING "hpt3xn: BIOS clock data not set.\n");
++ return 33; /* Not BIOS set */
++ }
++ fcnt &= 0x1FF;
++
++ freq = (fcnt * 77) / 192;
++
++ /* Clamp to bands */
++ if (freq < 40)
++ return 33;
++ if (freq < 45)
++ return 40;
++ if (freq < 55)
++ return 50;
++ return 66;
++}
++
++/**
++ * hpt3x2n_init_one - Initialise an HPT37X/302
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Initialise an HPT3x2n device. There are some interesting complications
++ * here. Firstly the chip may report 366 and be one of several variants.
++ * Secondly all the timings depend on the clock for the chip which we must
++ * detect and look up
++ *
++ * This is the known chip mappings. It may be missing a couple of later
++ * releases.
++ *
++ * Chip version PCI Rev Notes
++ * HPT372 4 (HPT366) 5 Other driver
++ * HPT372N 4 (HPT366) 6 UDMA133
++ * HPT372 5 (HPT372) 1 Other driver
++ * HPT372N 5 (HPT372) 2 UDMA133
++ * HPT302 6 (HPT302) * Other driver
++ * HPT302N 6 (HPT302) > 1 UDMA133
++ * HPT371 7 (HPT371) * Other driver
++ * HPT371N 7 (HPT371) > 1 UDMA133
++ * HPT374 8 (HPT374) * Other driver
++ * HPT372N 9 (HPT372N) * UDMA133
++ *
++ * (1) UDMA133 support depends on the bus clock
++ *
++ * To pin down HPT371N
++ */
++
++static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ /* HPT372N and friends - UDMA133 */
++ static struct ata_port_info info = {
++ .sht = &hpt3x2n_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f,
++ .port_ops = &hpt3x2n_port_ops
++ };
++ struct ata_port_info *port_info[2];
++ struct ata_port_info *port = &info;
++
++ u8 irqmask;
++ u32 class_rev;
++
++ unsigned int pci_mhz;
++ unsigned int f_low, f_high;
++ int adjust;
++
++ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev);
++ class_rev &= 0xFF;
++
++ switch(dev->device) {
++ case PCI_DEVICE_ID_TTI_HPT366:
++ if (class_rev < 6)
++ return -ENODEV;
++ break;
++ case PCI_DEVICE_ID_TTI_HPT372:
++ /* 372N if rev >= 1*/
++ if (class_rev == 0)
++ return -ENODEV;
++ break;
++ case PCI_DEVICE_ID_TTI_HPT302:
++ if (class_rev < 2)
++ return -ENODEV;
++ break;
++ case PCI_DEVICE_ID_TTI_HPT372N:
++ break;
++ default:
++ printk(KERN_ERR "pata_hpt3x2n: PCI table is bogus please report (%d).\n", dev->device);
++ return -ENODEV;
++ }
++
++ /* Ok so this is a chip we support */
++
++ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, (L1_CACHE_BYTES / 4));
++ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0x78);
++ pci_write_config_byte(dev, PCI_MIN_GNT, 0x08);
++ pci_write_config_byte(dev, PCI_MAX_LAT, 0x08);
++
++ pci_read_config_byte(dev, 0x5A, &irqmask);
++ irqmask &= ~0x10;
++ pci_write_config_byte(dev, 0x5a, irqmask);
++
++ /* Tune the PLL. HPT recommend using 75 for SATA, 66 for UDMA133 or
++ 50 for UDMA100. Right now we always use 66 */
++
++ pci_mhz = hpt3x2n_pci_clock(dev);
++
++ f_low = (pci_mhz * 48) / 66; /* PCI Mhz for 66Mhz DPLL */
++ f_high = f_low + 2; /* Tolerance */
++
++ pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low | 0x100);
++ /* PLL clock */
++ pci_write_config_byte(dev, 0x5B, 0x21);
++
++ /* Unlike the 37x we don't try jiggling the frequency */
++ for(adjust = 0; adjust < 8; adjust++) {
++ if (hpt3xn_calibrate_dpll(dev))
++ break;
++ pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low);
++ }
++ if (adjust == 8)
++ printk(KERN_WARNING "hpt3xn: DPLL did not stabilize.\n");
++
++ /* Set our private data up. We only need a few flags so we use
++ it directly */
++ port->private_data = NULL;
++ if (pci_mhz > 60)
++ port->private_data = (void *)PCI66;
++
++ /* Now kick off ATA set up */
++ port_info[0] = port_info[1] = port;
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id hpt3x2n[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT366), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT372), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT302), },
++ { PCI_DEVICE(PCI_VENDOR_ID_TTI, PCI_DEVICE_ID_TTI_HPT372N), },
++ { 0, },
++};
++
++static struct pci_driver hpt3x2n_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = hpt3x2n,
++ .probe = hpt3x2n_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init hpt3x2n_init(void)
++{
++ return pci_register_driver(&hpt3x2n_pci_driver);
++}
++
++
++static void __exit hpt3x2n_exit(void)
++{
++ pci_unregister_driver(&hpt3x2n_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the Highpoint HPT3x2n/30x");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, hpt3x2n);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(hpt3x2n_init);
++module_exit(hpt3x2n_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_isapnp.c linux-2.6.16-rc6/drivers/scsi/pata_isapnp.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_isapnp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_isapnp.c 2006-01-21 16:52:31.000000000 +0000
+@@ -0,0 +1,151 @@
++
++/*
++ * pata-isapnp.c - ISA PnP PATA controller driver.
++ * Copyright 2005/2006 Red Hat Inc <alan@redhat.com>, all rights reserved.
++ *
++ * Based in part on ide-pnp.c by Andrey Panin <pazke@donpac.ru>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/isapnp.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/ata.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_isapnp"
++#define DRV_VERSION "0.1"
++
++static struct scsi_host_template isapnp_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations isapnp_port_ops = {
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * isapnp_init_one - attach an isapnp interface
++ * @idev: PnP device
++ * @dev_id: matching detect line
++ *
++ * Register an ISA bus IDE interface. Such interfaces are PIO 0 and
++ * non shared IRQ.
++ */
++
++static int isapnp_init_one(struct pnp_dev *idev, const struct pnp_device_id *dev_id)
++{
++ struct ata_probe_ent ae;
++
++ if (pnp_port_valid(idev, 0) == 0)
++ return -ENODEV;
++ if (pnp_port_valid(idev, 1) == 0)
++ return -ENODEV;
++
++ /* FIXME: Should selected polled PIO here not fail */
++ if (pnp_irq_valid(idev, 0) == 0)
++ return -ENODEV;
++
++ memset(&ae, 0, sizeof(struct ata_probe_ent));
++ INIT_LIST_HEAD(&ae.node);
++ ae.dev = &idev->dev;
++ ae.port_ops = &isapnp_port_ops;
++ ae.sht = &isapnp_sht;
++ ae.n_ports = 1;
++ ae.pio_mask = 1; /* ISA so PIO 0 cycles */
++ ae.irq = pnp_irq(idev, 0);
++ ae.irq_flags = 0;
++ ae.host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_IRQ_MASK;
++ ae.port[0].cmd_addr = pnp_port_start(idev, 0);
++ ae.port[0].altstatus_addr = pnp_port_start(idev, 1);
++ ae.port[0].ctl_addr = pnp_port_start(idev, 1);
++ ata_std_ports(&ae.port[0]);
++
++ if (ata_device_add(&ae) == 0)
++ return -ENODEV;
++ return 0;
++}
++
++/**
++ * isapnp_remove_one - unplug an isapnp interface
++ * @idev: PnP device
++ *
++ * Remove a previously configured PnP ATA port. Called only on module
++ * unload events as the core does not currently deal with ISAPnP docking.
++ */
++
++static void isapnp_remove_one(struct pnp_dev *idev)
++{
++ struct device *dev = &idev->dev;
++ struct ata_host_set *host_set = dev_get_drvdata(dev);
++
++ ata_host_set_remove(host_set);
++ dev_set_drvdata(dev, NULL);
++}
++
++static struct pnp_device_id isapnp_devices[] = {
++ /* Generic ESDI/IDE/ATA compatible hard disk controller */
++ {.id = "PNP0600", .driver_data = 0},
++ {.id = ""}
++};
++
++static struct pnp_driver isapnp_driver = {
++ .name = DRV_NAME,
++ .id_table = isapnp_devices,
++ .probe = isapnp_init_one,
++ .remove = isapnp_remove_one,
++};
++
++static int __init isapnp_init(void)
++{
++ return pnp_register_driver(&isapnp_driver);
++}
++
++static void __exit isapnp_exit(void)
++{
++ pnp_unregister_driver(&isapnp_driver);
++}
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for ISA PnP ATA");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++module_init(isapnp_init);
++module_exit(isapnp_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_it8172.c linux-2.6.16-rc6/drivers/scsi/pata_it8172.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_it8172.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_it8172.c 2006-02-16 15:39:11.000000000 +0000
+@@ -0,0 +1,280 @@
++/*
++ * pata_it8172.c - IT8172 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based heavily on
++ *
++ * BRIEF MODULE DESCRIPTION
++ * IT8172 IDE controller support
++ *
++ * Copyright 2000 MontaVista Software Inc.
++ * Author: MontaVista Software, Inc.
++ * stevel@mvista.com or source@mvista.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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
++ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
++ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * You 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.
++ *
++ * TODO
++ * Check for errata
++ * See if we really need to force native mode
++ * PIO timings (also lacking in original)
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "it8172"
++#define DRV_VERSION "0.1.1"
++
++static void it8172_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits it8172_enable_bits[] = {
++ { 0x00, 0, 0x00, 0x00 },
++ { 0x40, 1, 0x00, 0x01 }
++ };
++
++ if (ap->hard_port_no && !pci_test_config_bits(pdev, &it8172_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * it8172_set_pio_timing - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called by both the pio and dma setup functions to set the controller
++ * timings for PIO transfers. We must load both the mode number and
++ * timing values into the controller.
++ */
++
++static void it8172_set_pio_timing(struct ata_port *ap, struct ata_device *adev, int pio)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u16 reg40;
++
++ pci_read_config_word(pdev, 0x40, &reg40);
++
++ /*
++ * FIX! The DIOR/DIOW pulse width and recovery times in port 0x44
++ * are being left at the default values of 8 PCI clocks (242 nsec
++ * for a 33 MHz clock). These can be safely shortened at higher
++ * PIO modes. The DIOR/DIOW pulse width and recovery times only
++ * apply to PIO modes, not to the DMA modes.
++ */
++
++ /*
++ * Enable port 0x44. The IT8172G spec is confused; it calls
++ * this register the "Slave IDE Timing Register", but in fact,
++ * it controls timing for both master and slave drives.
++ */
++
++ reg40 |= 0x4000;
++ if (adev->devno) {
++ reg40 |= 0xC006;
++ if (pio > 1)
++ /* Enable prefetch and IORDY sample-point */
++ reg40 |= 0x0060;
++ } else {
++ reg40 |= 0xC060;
++ if (pio > 1)
++ /* Enable prefetch and IORDY sample-point */
++ reg40 |= 0x0006;
++ }
++ /* Write back the enables */
++ pci_write_config_word(pdev, 0x40, reg40);
++}
++
++/**
++ * it8172_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup. We use a shared helper for this
++ * as the DMA setup must also adjust the PIO timing information.
++ */
++
++static void it8172_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ it8172_set_pio_timing(ap, adev, adev->pio_mode - XFER_PIO_0);
++}
++
++/**
++ * it8172_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the DMA mode setup. We must tune an appropriate PIO
++ * mode to match.
++ */
++
++static void it8172_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int dn = (2 * ap->hard_port_no) + adev->devno;
++ u8 reg48, reg4a;
++ int pio;
++
++ static int pio_map[] = { 1, 3, 4};
++ /*
++ * Setting the DMA cycle time to 2 or 3 PCI clocks (60 and 91 nsec
++ * at 33 MHz PCI clock) seems to cause BadCRC errors during DMA
++ * transfers on some drives, even though both numbers meet the minimum
++ * ATAPI-4 spec of 73 and 54 nsec for UDMA 1 and 2 respectively.
++ * So the faster times are just commented out here. The good news is
++ * that the slower cycle time has very little affect on transfer
++ * performance.
++ */
++
++ pci_read_config_byte(pdev, 0x48, &reg48);
++ pci_read_config_byte(pdev, 0x4A, &reg4a);
++
++ reg4a &= ~(3 << (4 * dn));
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ reg48 |= 1 << dn;
++#ifdef UDMA_TIMING_SET
++ reg4a |= ((adev->dma_mode - XFER_UDMA_0) << (4 * dn));
++#endif
++ pio = 4;
++ } else {
++ pio = pio_map[adev->dma_mode - XFER_MW_DMA_0];
++ reg48 &= ~ (1 << dn);
++ }
++ pci_write_config_byte(pdev, 0x48, reg48);
++ pci_write_config_byte(pdev, 0x4A, reg4a);
++ it8172_set_pio_timing(ap, adev, pio);
++
++}
++
++static struct scsi_host_template it8172_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations it8172_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = it8172_set_piomode,
++ .set_dmamode = it8172_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = it8172_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int it8172_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &it8172_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x06, /* No MWDMA0 support */
++ .udma_mask = 0x7,
++ .port_ops = &it8172_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ if ((!(PCI_FUNC(dev->devfn) & 1) ||
++ (!((dev->class >> 8) == PCI_CLASS_STORAGE_IDE))))
++ return -ENODEV; /* IT8172 is more than an IDE controller */
++
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id it8172[] = {
++ { PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_IT8172G, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { 0, },
++};
++
++static struct pci_driver it8172_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = it8172,
++ .probe = it8172_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init it8172_init(void)
++{
++ return pci_register_driver(&it8172_pci_driver);
++}
++
++
++static void __exit it8172_exit(void)
++{
++ pci_unregister_driver(&it8172_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for ITE IT8172");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, it8172);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(it8172_init);
++module_exit(it8172_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_it821x.c linux-2.6.16-rc6/drivers/scsi/pata_it821x.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_it821x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_it821x.c 2006-03-08 17:14:51.000000000 +0000
+@@ -0,0 +1,790 @@
++/*
++ * ata-it821x.c - IT821x PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based upon
++ *
++ * it821x.c
++ *
++ * linux/drivers/ide/pci/it821x.c Version 0.09 December 2004
++ *
++ * Copyright (C) 2004 Red Hat <alan@redhat.com>
++ *
++ * May be copied or modified under the terms of the GNU General Public License
++ * Based in part on the ITE vendor provided SCSI driver.
++ *
++ * Documentation available from
++ * http://www.ite.com.tw/pc/IT8212F_V04.pdf
++ * Some other documents are NDA.
++ *
++ * The ITE8212 isn't exactly a standard IDE controller. It has two
++ * modes. In pass through mode then it is an IDE controller. In its smart
++ * mode its actually quite a capable hardware raid controller disguised
++ * as an IDE controller. Smart mode only understands DMA read/write and
++ * identify, none of the fancier commands apply. The IT8211 is identical
++ * in other respects but lacks the raid mode.
++ *
++ * Errata:
++ * o Rev 0x10 also requires master/slave hold the same DMA timings and
++ * cannot do ATAPI MWDMA.
++ * o The identify data for raid volumes lacks CHS info (technically ok)
++ * but also fails to set the LBA28 and other bits. We fix these in
++ * the IDE probe quirk code.
++ * o If you write LBA48 sized I/O's (ie > 256 sector) in smart mode
++ * raid then the controller firmware dies
++ * o Smart mode without RAID doesn't clear all the necessary identify
++ * bits to reduce the command set to the one used
++ *
++ * This has a few impacts on the driver
++ * - In pass through mode we do all the work you would expect
++ * - In smart mode the clocking set up is done by the controller generally
++ * but we must watch the other limits and filter.
++ * - There are a few extra vendor commands that actually talk to the
++ * controller but only work PIO with no IRQ.
++ *
++ * Vendor areas of the identify block in smart mode are used for the
++ * timing and policy set up. Each HDD in raid mode also has a serial
++ * block on the disk. The hardware extra commands are get/set chip status,
++ * rebuild, get rebuild status.
++ *
++ * In Linux the driver supports pass through mode as if the device was
++ * just another IDE controller. If the smart mode is running then
++ * volumes are managed by the controller firmware and each IDE "disk"
++ * is a raid volume. Even more cute - the controller can do automated
++ * hotplug and rebuild.
++ *
++ * The pass through controller itself is a little demented. It has a
++ * flaw that it has a single set of PIO/MWDMA timings per channel so
++ * non UDMA devices restrict each others performance. It also has a
++ * single clock source per channel so mixed UDMA100/133 performance
++ * isn't perfect and we have to pick a clock. Thankfully none of this
++ * matters in smart mode. ATAPI DMA is not currently supported.
++ *
++ * It seems the smart mode is a win for RAID1/RAID10 but otherwise not.
++ *
++ * TODO
++ * - ATAPI and other speed filtering
++ * - Command filter in smart mode
++ * - RAID configuration ioctls
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++
++#define DRV_NAME "it821x"
++#define DRV_VERSION "0.2.2"
++
++struct it821x_dev
++{
++ unsigned int smart:1, /* Are we in smart raid mode */
++ timing10:1; /* Rev 0x10 */
++ u8 clock_mode; /* 0, ATA_50 or ATA_66 */
++ u8 want[2][2]; /* Mode/Pri log for master slave */
++ /* We need these for switching the clock when DMA goes on/off
++ The high byte is the 66Mhz timing */
++ u16 pio[2]; /* Cached PIO values */
++ u16 mwdma[2]; /* Cached MWDMA values */
++ u16 udma[2]; /* Cached UDMA values (per drive) */
++ u16 last_device; /* Master or slave loaded ? */
++};
++
++#define ATA_66 0
++#define ATA_50 1
++#define ATA_ANY 2
++
++#define UDMA_OFF 0
++#define MWDMA_OFF 0
++
++/*
++ * We allow users to force the card into non raid mode without
++ * flashing the alternative BIOS. This is also neccessary right now
++ * for embedded platforms that cannot run a PC BIOS but are using this
++ * device.
++ */
++
++static int it8212_noraid;
++
++
++/**
++ * it821x_phy_reset - probe/reset
++ * @ap: ATA port
++ *
++ * Set the cable type and trigger a probe
++ */
++
++static void it821x_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA80;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * it821x_program - program the PIO/MWDMA registers
++ * @ap: ATA port
++ * @adev: Device to program
++ * @timing: Timing value (66Mhz in top 8bits, 50 in the low 8)
++ *
++ * Program the PIO/MWDMA timing for this channel according to the
++ * current clock. These share the same register so are managed by
++ * the DMA start/stop sequence as with the old driver.
++ */
++
++static void it821x_program(struct ata_port *ap, struct ata_device *adev, u16 timing)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct it821x_dev *itdev = ap->private_data;
++ int channel = ap->hard_port_no;
++ u8 conf;
++
++ /* Program PIO/MWDMA timing bits */
++ if (itdev->clock_mode == ATA_66)
++ conf = timing >> 8;
++ else
++ conf = timing & 0xFF;
++ pci_write_config_byte(pdev, 0x54 + 4 * channel, conf);
++}
++
++
++/**
++ * it821x_program_udma - program the UDMA registers
++ * @ap: ATA port
++ * @adev: ATA device to update
++ * @timing: Timing bits. Top 8 are for 66Mhz bottom for 50Mhz
++ *
++ * Program the UDMA timing for this drive according to the
++ * current clock. Handles the dual clocks and also knows about
++ * the errata on the 0x10 revision. The UDMA errata is partly handled
++ * here and partly in start_dma.
++ */
++
++static void it821x_program_udma(struct ata_port *ap, struct ata_device *adev, u16 timing)
++{
++ struct it821x_dev *itdev = ap->private_data;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int channel = ap->hard_port_no;
++ int unit = adev->devno;
++ u8 conf;
++
++ /* Program UDMA timing bits */
++ if (itdev->clock_mode == ATA_66)
++ conf = timing >> 8;
++ else
++ conf = timing & 0xFF;
++ if (itdev->timing10 == 0)
++ pci_write_config_byte(pdev, 0x56 + 4 * channel + unit, conf);
++ else {
++ /* Early revision must be programmed for both together */
++ pci_write_config_byte(pdev, 0x56 + 4 * channel, conf);
++ pci_write_config_byte(pdev, 0x56 + 4 * channel + 1, conf);
++ }
++}
++
++/**
++ * it821x_clock_strategy
++ * @ap: ATA interface
++ * @adev: ATA device being updated
++ *
++ * Select between the 50 and 66Mhz base clocks to get the best
++ * results for this interface.
++ */
++
++static void it821x_clock_strategy(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct it821x_dev *itdev = ap->private_data;
++ u8 unit = adev->devno;
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++
++ int clock, altclock;
++ u8 v;
++ int sel = 0;
++
++ /* Look for the most wanted clocking */
++ if (itdev->want[0][0] > itdev->want[1][0]) {
++ clock = itdev->want[0][1];
++ altclock = itdev->want[1][1];
++ } else {
++ clock = itdev->want[1][1];
++ altclock = itdev->want[0][1];
++ }
++
++ /* Master doesn't care does the slave ? */
++ if (clock == ATA_ANY)
++ clock = altclock;
++
++ /* Nobody cares - keep the same clock */
++ if (clock == ATA_ANY)
++ return;
++ /* No change */
++ if (clock == itdev->clock_mode)
++ return;
++
++ /* Load this into the controller ? */
++ if (clock == ATA_66)
++ itdev->clock_mode = ATA_66;
++ else {
++ itdev->clock_mode = ATA_50;
++ sel = 1;
++ }
++ pci_read_config_byte(pdev, 0x50, &v);
++ v &= ~(1 << (1 + ap->hard_port_no));
++ v |= sel << (1 + ap->hard_port_no);
++ pci_write_config_byte(pdev, 0x50, v);
++
++ /*
++ * Reprogram the UDMA/PIO of the pair drive for the switch
++ * MWDMA will be dealt with by the dma switcher
++ */
++ if (pair && itdev->udma[1-unit] != UDMA_OFF) {
++ it821x_program_udma(ap, pair, itdev->udma[1-unit]);
++ it821x_program(ap, pair, itdev->pio[1-unit]);
++ }
++ /*
++ * Reprogram the UDMA/PIO of our drive for the switch.
++ * MWDMA will be dealt with by the dma switcher
++ */
++ if (itdev->udma[unit] != UDMA_OFF) {
++ it821x_program_udma(ap, adev, itdev->udma[unit]);
++ it821x_program(ap, adev, itdev->pio[unit]);
++ }
++}
++
++/**
++ * it821x_passthru_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Configure for PIO mode. This is complicated as the register is
++ * shared by PIO and MWDMA and for both channels.
++ */
++
++static void it821x_passthru_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ /* Spec says 89 ref driver uses 88 */
++ static u16 pio[] = { 0xAA88, 0xA382, 0xA181, 0x3332, 0x3121 };
++ static u8 pio_want[] = { ATA_66, ATA_66, ATA_66, ATA_66, ATA_ANY };
++
++ struct it821x_dev *itdev = ap->private_data;
++ int unit = adev->devno;
++ int mode_wanted = adev->pio_mode - XFER_PIO_0;
++
++ /* We prefer 66Mhz clock for PIO 0-3, don't care for PIO4 */
++ itdev->want[unit][1] = pio_want[mode_wanted];
++ itdev->want[unit][0] = 1; /* PIO is lowest priority */
++ itdev->pio[unit] = pio[mode_wanted];
++ it821x_clock_strategy(ap, adev);
++ it821x_program(ap, adev, itdev->pio[unit]);
++}
++
++/**
++ * it821x_passthru_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Set up the DMA modes. The actions taken depend heavily on the mode
++ * to use. If UDMA is used as is hopefully the usual case then the
++ * timing register is private and we need only consider the clock. If
++ * we are using MWDMA then we have to manage the setting ourself as
++ * we switch devices and mode.
++ */
++
++static void it821x_passthru_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u16 dma[] = { 0x8866, 0x3222, 0x3121 };
++ static u8 mwdma_want[] = { ATA_ANY, ATA_66, ATA_ANY };
++ static u16 udma[] = { 0x4433, 0x4231, 0x3121, 0x2121, 0x1111, 0x2211, 0x1111 };
++ static u8 udma_want[] = { ATA_ANY, ATA_50, ATA_ANY, ATA_66, ATA_66, ATA_50, ATA_66 };
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct it821x_dev *itdev = ap->private_data;
++ int channel = ap->hard_port_no;
++ int unit = adev->devno;
++ u8 conf;
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ int mode_wanted = adev->dma_mode - XFER_UDMA_0;
++
++ itdev->want[unit][1] = udma_want[mode_wanted];
++ itdev->want[unit][0] = 3; /* UDMA is high priority */
++ itdev->mwdma[unit] = MWDMA_OFF;
++ itdev->udma[unit] = udma[mode_wanted];
++ if (mode_wanted >= 5)
++ itdev->udma[unit] |= 0x8080; /* UDMA 5/6 select on */
++
++ /* UDMA on. Again revision 0x10 must do the pair */
++ pci_read_config_byte(pdev, 0x50, &conf);
++ if (itdev->timing10)
++ conf &= channel ? 0x9F: 0xE7;
++ else
++ conf &= ~ (1 << (3 + 2 * channel + unit));
++ pci_write_config_byte(pdev, 0x50, conf);
++ it821x_clock_strategy(ap, adev);
++ it821x_program_udma(ap, adev, itdev->udma[unit]);
++ } else {
++ int mode_wanted = adev->dma_mode - XFER_UDMA_0;
++
++ itdev->want[unit][1] = mwdma_want[mode_wanted];
++ itdev->want[unit][0] = 2; /* MWDMA is low priority */
++ itdev->mwdma[unit] = dma[mode_wanted];
++ itdev->udma[unit] = UDMA_OFF;
++
++ /* UDMA bits off - Revision 0x10 do them in pairs */
++ pci_read_config_byte(pdev, 0x50, &conf);
++ if (itdev->timing10)
++ conf |= channel ? 0x60: 0x18;
++ else
++ conf |= 1 << (3 + 2 * channel + unit);
++ pci_write_config_byte(pdev, 0x50, conf);
++ it821x_clock_strategy(ap, adev);
++ }
++}
++
++/**
++ * it821x_passthru_dma_start - DMA start callback
++ * @qc: Command in progress
++ *
++ * Usually drivers set the DMA timing at the point the set_dmamode call
++ * is made. IT821x however requires we load new timings on the
++ * transitions in some cases.
++ */
++
++static void it821x_passthru_bmdma_start(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ struct it821x_dev *itdev = ap->private_data;
++ int unit = adev->devno;
++
++ if (itdev->mwdma[unit] != MWDMA_OFF)
++ it821x_program(ap, adev, itdev->mwdma[unit]);
++ else if (itdev->udma[unit] != UDMA_OFF && itdev->timing10)
++ it821x_program_udma(ap, adev, itdev->udma[unit]);
++ ata_bmdma_start(qc);
++}
++
++/**
++ * it821x_passthru_dma_stop - DMA stop callback
++ * @qc: ATA command
++ *
++ * We loaded new timings in dma_start, as a result we need to restore
++ * the PIO timings in dma_stop so that the next command issue gets the
++ * right clock values.
++ */
++
++static void it821x_passthru_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ struct it821x_dev *itdev = ap->private_data;
++ int unit = adev->devno;
++
++ ata_bmdma_stop(qc);
++ if (itdev->mwdma[unit] != MWDMA_OFF)
++ it821x_program(ap, adev, itdev->pio[unit]);
++}
++
++
++/**
++ * it821x_passthru_dev_select - Select master/slave
++ * @ap: ATA port
++ * @device: Device number (not pointer)
++ *
++ * Device selection hook. If neccessary perform clock switching
++ */
++
++void it821x_passthru_dev_select(struct ata_port *ap, unsigned int device)
++{
++ struct it821x_dev *itdev = ap->private_data;
++ if (itdev && device != itdev->last_device) {
++ struct ata_device *adev = &ap->device[device];
++ it821x_program(ap, adev, itdev->pio[adev->devno]);
++ itdev->last_device = device;
++ }
++}
++
++/**
++ * it821x_passthru_qc_issue_prot - wrap qc issue prot
++ * @qc: command
++ *
++ * Wrap the command issue sequence for the IT821x. We need to
++ * perform out own device selection timing loads before the
++ * usual happenings kick off
++ */
++
++static int it821x_passthru_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ it821x_passthru_dev_select(qc->ap, qc->dev->devno);
++ return ata_qc_issue_prot(qc);
++}
++
++/**
++ * it821x_smart_set_mode - mode setting
++ * @ap: interface to set up
++ *
++ * Use a non standard set_mode function. We don't want to be tuned.
++ * The BIOS configured everything. Our job is not to fiddle. We
++ * read the dma enabled bits from the PCI configuration of the device
++ * and respect them.
++ */
++
++static void it821x_smart_set_mode(struct ata_port *ap)
++{
++ int dma_enabled;
++ int i;
++
++ /* Bits 5 and 6 indicate if DMA is active on master/slave */
++ dma_enabled = inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *dev = &ap->device[i];
++ if (ata_dev_present(dev)) {
++ /* We don't really care */
++ dev->pio_mode = XFER_PIO_0;
++ dev->dma_mode = XFER_MW_DMA_0;
++ /* We do need the right mode information for DMA or PIO
++ and this comes from the current configuration flags */
++ if (dma_enabled & (1 << (5 + i))) {
++ dev->xfer_mode = XFER_MW_DMA_0;
++ dev->xfer_shift = ATA_SHIFT_MWDMA;
++ dev->flags &= ~ATA_DFLAG_PIO;
++ } else {
++ dev->xfer_mode = XFER_PIO_0;
++ dev->xfer_shift = ATA_SHIFT_PIO;
++ dev->flags |= ATA_DFLAG_PIO;
++ }
++ }
++ }
++}
++
++/**
++ * it821x_dev_config - Called each device identify
++ * @ap: ATA port
++ * @adev: Device that has just been identified
++ *
++ * Perform the initial setup needed for each device that is chip
++ * special. In our case we need to lock the sector count to avoid
++ * blowing the brains out of the firmware with large LBA48 requests
++ *
++ * FIXME: When FUA appears we need to block FUA too. And SMART and
++ * basically we need to filter commands for this chip.
++ */
++
++static void it821x_dev_config(struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned char model_num[40];
++ char *s;
++ unsigned int len;
++
++ /* This block ought to be a library routine as it is in several
++ drivers now */
++
++ ata_dev_id_string(adev->id, model_num, ATA_ID_PROD_OFS,
++ sizeof(model_num));
++ s = &model_num[0];
++ len = strnlen(s, sizeof(model_num));
++
++ /* ATAPI specifies that empty space is blank-filled; remove blanks */
++ while ((len > 0) && (s[len - 1] == ' ')) {
++ len--;
++ s[len] = 0;
++ }
++
++ if(ap->host->max_sectors > 255) {
++ ap->host->max_sectors = 255;
++ ap->host->hostt->max_sectors = 255;
++ }
++ adev->flags |= ATA_DFLAG_LOCK_SECTORS;
++
++ if (strstr(model_num, "Integrated Technology Express")) {
++ /* RAID mode */
++ printk(KERN_INFO "IT821x %sRAID%d volume",
++ adev->id[147]?"Bootable ":"",
++ adev->id[129]);
++ if(adev->id[129] != 1)
++ printk("(%dK stripe)", adev->id[146]);
++ printk(".\n");
++ }
++}
++
++
++/**
++ * it821x_check_atapi_dma - ATAPI DMA handler
++ * @qc: Command we are about to issue
++ *
++ * Decide if this ATAPI command can be issued by DMA on this
++ * controller. Return 0 if it can be.
++ */
++
++static int it821x_check_atapi_dma(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct it821x_dev *itdev = ap->private_data;
++
++ /* No ATAPI DMA in smart mode */
++ if (itdev->smart)
++ return -EOPNOTSUPP;
++ /* No ATAPI DMA on rev 10 */
++ if (itdev->timing10)
++ return -EOPNOTSUPP;
++ /* Cool */
++ return 0;
++}
++
++
++/**
++ * it821x_port_start - port setup
++ * @ap: ATA port being set up
++ *
++ * The it821x needs to maintain private data structures and also to
++ * use the standard PCI interface which lacks support for this
++ * functionality. We instead set up the private data on the port
++ * start hook, and tear it down on port stop
++ */
++
++static int it821x_port_start(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct it821x_dev *itdev;
++ u8 conf;
++
++ int ret = ata_port_start(ap);
++ if (ret < 0)
++ return ret;
++
++ ap->private_data = kmalloc(sizeof(struct it821x_dev), GFP_KERNEL);
++ if (ap->private_data == NULL) {
++ ata_port_stop(ap);
++ return -ENOMEM;
++ }
++
++ itdev = ap->private_data;
++ memset(itdev, 0, sizeof(struct it821x_dev));
++
++ pci_read_config_byte(pdev, 0x50, &conf);
++
++ if (conf & 1) {
++ itdev->smart = 1;
++ /* Long I/O's although allowed in LBA48 space cause the
++ onboard firmware to enter the twighlight zone */
++ /* No ATAPI DMA in this mode either */
++ }
++ /* Pull the current clocks from 0x50 */
++ if (conf & (1 << (1 + ap->hard_port_no)))
++ itdev->clock_mode = ATA_50;
++ else
++ itdev->clock_mode = ATA_66;
++
++ itdev->want[0][1] = ATA_ANY;
++ itdev->want[1][1] = ATA_ANY;
++ itdev->last_device = -1;
++
++ pci_read_config_byte(pdev, PCI_REVISION_ID, &conf);
++ if (conf == 0x10) {
++ itdev->timing10 = 1;
++ /* Need to disable ATAPI DMA for this case */
++ if (!itdev->smart)
++ printk(KERN_WARNING DRV_NAME": Revision 0x10, workarounds activated.\n");
++ }
++
++ return 0;
++}
++
++/**
++ * it821x_port_stop - port shutdown
++ * @ap: ATA port being removed
++ *
++ * Release the private objects we added in it821x_port_start
++ */
++
++static void it821x_port_stop(struct ata_port *ap) {
++ kfree(ap->private_data);
++ ap->private_data = NULL; /* We want an OOPS if we reuse this
++ too late! */
++ ata_port_stop(ap);
++}
++
++static struct scsi_host_template it821x_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ /* 255 sectors to begin with. This is locked in smart mode but not
++ in pass through */
++ .max_sectors = 255,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations it821x_smart_port_ops = {
++ .set_mode = it821x_smart_set_mode,
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .check_atapi_dma= it821x_check_atapi_dma,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++ .dev_config = it821x_dev_config,
++
++ .phy_reset = it821x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = it821x_port_start,
++ .port_stop = it821x_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations it821x_passthru_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = it821x_passthru_set_piomode,
++ .set_dmamode = it821x_passthru_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .check_atapi_dma= it821x_check_atapi_dma,
++ .dev_select = it821x_passthru_dev_select,
++
++ .phy_reset = it821x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = it821x_passthru_bmdma_start,
++ .bmdma_stop = it821x_passthru_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = it821x_passthru_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++ .irq_handler = ata_interrupt,
++ .port_start = it821x_port_start,
++ .port_stop = it821x_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static void __devinit it821x_disable_raid(struct pci_dev *pdev)
++{
++ /* Reset local CPU, and set BIOS not ready */
++ pci_write_config_byte(pdev, 0x5E, 0x01);
++
++ /* Set to bypass mode, and reset PCI bus */
++ pci_write_config_byte(pdev, 0x50, 0x00);
++ pci_write_config_word(pdev, PCI_COMMAND,
++ PCI_COMMAND_PARITY | PCI_COMMAND_IO |
++ PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
++ pci_write_config_word(pdev, 0x40, 0xA0F3);
++
++ pci_write_config_dword(pdev,0x4C, 0x02040204);
++ pci_write_config_byte(pdev, 0x42, 0x36);
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x20);
++}
++
++
++static int it821x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ u8 conf;
++
++ static struct ata_port_info info_smart = {
++ .sht = &it821x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &it821x_smart_port_ops
++ };
++ static struct ata_port_info info_passthru = {
++ .sht = &it821x_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f,
++ .port_ops = &it821x_passthru_port_ops
++ };
++ static struct ata_port_info *port_info[2];
++
++ static char *mode[2] = { "pass through", "smart" };
++
++ /* Force the card into bypass mode if so requested */
++ if (it8212_noraid) {
++ printk(KERN_INFO DRV_NAME ": forcing bypass mode.\n");
++ it821x_disable_raid(pdev);
++ }
++ pci_read_config_byte(pdev, 0x50, &conf);
++ conf &= 1;
++
++ printk(KERN_INFO DRV_NAME ": controller in %s mode.\n", mode[conf]);
++ if (conf == 0)
++ port_info[0] = port_info[1] = &info_passthru;
++ else
++ port_info[0] = port_info[1] = &info_smart;
++
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static struct pci_device_id it821x[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8211), },
++ { PCI_DEVICE(PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8212), },
++ { 0, },
++};
++
++static struct pci_driver it821x_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = it821x,
++ .probe = it821x_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init it821x_init(void)
++{
++ return pci_register_driver(&it821x_pci_driver);
++}
++
++
++static void __exit it821x_exit(void)
++{
++ pci_unregister_driver(&it821x_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for the IT8211/IT8212 IDE RAID controller");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, it821x);
++MODULE_VERSION(DRV_VERSION);
++
++
++module_param_named(noraid, it8212_noraid, int, S_IRUGO);
++MODULE_PARM_DESC(it8212_noraid, "Force card into bypass mode");
++
++module_init(it821x_init);
++module_exit(it821x_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_legacy.c linux-2.6.16-rc6/drivers/scsi/pata_legacy.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_legacy.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_legacy.c 2006-02-16 15:33:52.000000000 +0000
+@@ -0,0 +1,672 @@
++
++/*
++ * pata-legacy.c - Legacy port PATA/SATA controller driver.
++ * Copyright 2005/2006 Red Hat Inc <alan@redhat.com>, all rights reserved.
++ *
++ * An ATA driver for the legacy ATA ports.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/ata.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "legacy"
++#define DRV_VERSION "0.3.1"
++
++#define NR_HOST 6
++
++static int legacy_port[NR_HOST] = { 0x1f0, 0x170, 0x1e8, 0x168, 0x1e0, 0x160 };
++static int legacy_irq[NR_HOST] = { 15, 14, 11, 10, 8, 12 };
++
++static struct ata_host_set *legacy_host[NR_HOST];
++static int nr_legacy_host;
++static int legacy_all;
++static int ht6560a;
++static int ht6560b;
++static int opti82c611a;
++
++/**
++ * legacy_set_mode - mode setting
++ * @ap: IDE interface
++ *
++ * Use a non standard set_mode function. We don't want to be tuned.
++ *
++ * The BIOS configured everything. Our job is not to fiddle. Just use
++ * whatever PIO the hardware is using and leave it at that. When we
++ * get some kind of nice user driven API for control then we can
++ * expand on this as per hdparm in the base kernel.
++ */
++
++static void legacy_set_mode(struct ata_port *ap)
++{
++ int i;
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *dev = &ap->device[i];
++ if (ata_dev_present(dev)) {
++ dev->pio_mode = XFER_PIO_0;
++ dev->xfer_mode = XFER_PIO_0;
++ dev->xfer_shift = ATA_SHIFT_PIO;
++ dev->flags |= ATA_DFLAG_PIO;
++ }
++ }
++}
++
++static struct scsi_host_template legacy_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations legacy_port_ops = {
++ .set_mode = legacy_set_mode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer_noirq,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Promise 20230C and 20620 support
++ *
++ * This controller supports PIO0 to PIO2. We set PIO timings conservatively to
++ * allow for 50MHz Vesa Local Bus. The 20620 DMA support is weird being DMA to
++ * controller and PIO'd to the host and not supported.
++ */
++
++static void pdc20230_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ int tries = 5;
++ int pio = adev->pio_mode - XFER_PIO_0;
++ u8 rt;
++
++ do
++ {
++ inb(0x1F5);
++ outb(inb(0x1F2) | 0x80, 0x1F2);
++ inb(0x1F2);
++ inb(0x3F6);
++ inb(0x3F6);
++ inb(0x1F2);
++ inb(0x1F2);
++ }
++ while((inb(0x1F2) & 0x80) && --tries);
++
++ outb(inb(0x1F4) & 0x07, 0x1F4);
++
++ rt = inb(0x1F3);
++ rt &= 0x07 << (3 * adev->devno);
++ rt |= (3 * pio) << (3 * adev->devno);
++
++ udelay(100);
++ outb(inb(0x1F2) | 0x01, 0x1F2);
++ udelay(100);
++ inb(0x1F5);
++
++}
++
++static void pdc_data_xfer_vlb(struct ata_port *ap, struct ata_device *adev, unsigned char *buf, unsigned int buflen, int write_data)
++{
++ int slop = buflen & 3;
++ unsigned long flags;
++
++ if (ata_id_has_dword_io(adev->id)) {
++ local_irq_save(flags);
++
++ /* Perform the 32bit I/O synchronization sequence */
++ inb(ap->ioaddr.nsect_addr);
++ inb(ap->ioaddr.nsect_addr);
++ inb(ap->ioaddr.nsect_addr);
++
++ /* Now the data */
++
++ if (write_data)
++ outsl(ap->ioaddr.data_addr, buf, buflen >> 2);
++ else
++ insl(ap->ioaddr.data_addr, buf, buflen >> 2);
++
++ if (unlikely(slop)) {
++ u32 pad;
++ if (write_data) {
++ memcpy(&pad, buf + buflen - slop, slop);
++ outl(le32_to_cpu(pad), ap->ioaddr.data_addr);
++ } else {
++ pad = cpu_to_le16(inl(ap->ioaddr.data_addr));
++ memcpy(buf + buflen - slop, &pad, slop);
++ }
++ }
++ local_irq_restore(flags);
++ }
++ else
++ ata_pio_data_xfer_noirq(ap, adev, buf, buflen, write_data);
++}
++
++static struct ata_port_operations pdc20230_port_ops = {
++ .set_piomode = pdc20230_set_piomode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = pdc_data_xfer_vlb,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Holtek 6560A support
++ *
++ * This controller supports PIO0 to PIO2 (no IORDY even though higher timings
++ * can be loaded).
++ */
++
++static void ht6560a_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ u8 active, recover;
++ struct ata_timing t;
++
++ /* Get the timing data in cycles. For now play safe at 50Mhz */
++ ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000);
++
++ active = FIT(t.active, 2, 15);
++ recover = FIT(t.recover, 4, 15);
++
++ inb(0x3E6);
++ inb(0x3E6);
++ inb(0x3E6);
++ inb(0x3E6);
++
++ outb(recover << 4 | active, ap->ioaddr.device_addr);
++ inb(ap->ioaddr.status_addr);
++}
++
++static struct ata_port_operations ht6560a_port_ops = {
++ .set_piomode = ht6560a_set_piomode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer, /* Check vlb/noirq */
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Holtek 6560B support
++ *
++ * This controller supports PIO0 to PIO4. We honour the BIOS/jumper FIFO setting
++ * unless we see an ATAPI device in which case we force it off.
++ *
++ * FIXME: need to implement 2nd channel support.
++ */
++
++static void ht6560b_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ u8 active, recover;
++ struct ata_timing t;
++
++ /* Get the timing data in cycles. For now play safe at 50Mhz */
++ ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000);
++
++ active = FIT(t.active, 2, 15);
++ recover = FIT(t.recover, 2, 16);
++ recover &= 0x15;
++
++ inb(0x3E6);
++ inb(0x3E6);
++ inb(0x3E6);
++ inb(0x3E6);
++
++ outb(recover << 4 | active, ap->ioaddr.device_addr);
++
++ if (adev->class != ATA_DEV_ATA) {
++ u8 rconf = inb(0x3E6);
++ if (rconf & 0x24) {
++ rconf &= ~ 0x24;
++ outb(rconf, 0x3E6);
++ }
++ }
++ inb(ap->ioaddr.status_addr);
++}
++
++static struct ata_port_operations ht6560b_port_ops = {
++ .set_piomode = ht6560b_set_piomode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer, /* FIXME: Check 32bit and noirq */
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/*
++ * Opti 82C611A
++ *
++ * This controller supports PIO0 to PIO3.
++ */
++
++static void opti82c611a_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ u8 active, recover, setup;
++ struct ata_timing t;
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++ int clock;
++ int khz[4] = { 50000, 40000, 33000, 25000 };
++ u8 rc;
++
++ /* Enter configuration mode */
++ inb(ap->ioaddr.error_addr);
++ inb(ap->ioaddr.error_addr);
++
++ /* Read VLB clock strapping */
++ clock = 1000000000 / khz[inb(ap->ioaddr.lbah_addr) & 0x03];
++
++ /* Get the timing data in cycles */
++ ata_timing_compute(adev, adev->pio_mode, &t, clock, 1000);
++
++ /* Setup timing is shared */
++ if (pair) {
++ struct ata_timing tp;
++ ata_timing_compute(pair, pair->pio_mode, &tp, clock, 1000);
++
++ ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP);
++ }
++
++ active = FIT(t.active, 2, 17) - 2;
++ recover = FIT(t.recover, 1, 16) - 1;
++ setup = FIT(t.setup, 1, 4) - 1;
++
++ /* Select the right timing bank for write timing */
++ rc = inb(ap->ioaddr.lbal_addr);
++ rc &= 0x7F;
++ rc |= (adev->devno << 7);
++ outb(rc, ap->ioaddr.lbal_addr);
++
++ /* Write the timings */
++ outb(active << 4 | recover, ap->ioaddr.error_addr);
++
++ /* Select the right bank for read timings, also
++ load the shared timings for address */
++ rc = inb(ap->ioaddr.device_addr);
++ rc &= 0xC0;
++ rc |= adev->devno; /* Index select */
++ rc |= (setup << 4) | 0x04;
++ outb(rc, ap->ioaddr.device_addr);
++
++ /* Load the read timings */
++ outb(active << 4 | recover, ap->ioaddr.data_addr);
++
++ /* Ensure the timing register mode is right */
++ rc = inb (ap->ioaddr.lbal_addr);
++ rc &= 0x73;
++ rc |= 0x84;
++ outb(rc, ap->ioaddr.lbal_addr);
++
++ /* Exit command mode */
++ outb(0x82, ap->ioaddr.nsect_addr);
++}
++
++static struct ata_port_operations opti82c611a_port_ops = {
++ .set_piomode = opti82c611a_set_piomode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * legacy_init_one - attach a legacy interface
++ * @io: I/O port start
++ * @ctrl: control port
++ * @irq: interrupt line
++ *
++ * Register an ISA bus IDE interface. Such interfaces are PIO and we
++ * assume do not support IRQ sharing.
++ */
++
++static __init int legacy_init_one(unsigned long io, unsigned long ctrl, int irq)
++{
++ struct ata_probe_ent ae;
++ int ret;
++ struct ata_port_operations *ops = &legacy_port_ops;
++ int pio_mask = 0x1F;
++
++ if (request_region(io, 8, "pata_legacy") == NULL)
++ return -EBUSY;
++ if (request_region(ctrl, 1, "pata_legacy") == NULL) {
++ release_region(io, 8);
++ return -EBUSY;
++ }
++
++ if (ht6560a == 1 && (io == 0x1F0 || io == 0x170)) {
++ ops = &ht6560a_port_ops;
++ pio_mask = 0x07;
++ }
++ if (ht6560b == 1 && (io == 0x1F0 || io == 0x170)) {
++ ops = &ht6560b_port_ops;
++ pio_mask = 0x1F;
++ }
++ if (opti82c611a == 1 && (io == 0x1F0 || io == 0x170)) {
++ ops = &opti82c611a_port_ops;
++ pio_mask = 0x0F;
++ }
++ else if (io == 0x1F0) {
++ /* Probes */
++ inb(0x1F5);
++ outb(inb(0x1F2) | 0x80, 0x1F2);
++ inb(0x1F2);
++ inb(0x3F6);
++ inb(0x3F6);
++ inb(0x1F2);
++ inb(0x1F2);
++
++ if ((inb(0x1F2) & 0x80) == 0) {
++ /* PDC20230 or 20630 ? */
++ printk(KERN_INFO "PDC20230-C/20630 VLB ATA controller detected.\n");
++ pio_mask = 0x07;
++ ops = &pdc20230_port_ops;
++ udelay(100);
++ inb(0x1F5);
++ } else {
++ outb(0x55, 0x1F2);
++ inb(0x1F2);
++ inb(0x1F2);
++ if (inb(0x1F2) == 0x00) {
++ printk(KERN_INFO "PDC20230-B VLB ATA controller detected.\n");
++ }
++ }
++ }
++ memset(&ae, 0, sizeof(struct ata_probe_ent));
++ INIT_LIST_HEAD(&ae.node);
++ ae.dev = NULL;
++ ae.port_ops = ops;
++ ae.sht = &legacy_sht;
++ ae.n_ports = 1;
++ ae.pio_mask = pio_mask;
++ ae.irq = irq;
++ ae.irq_flags = 0;
++ ae.host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_IRQ_MASK;
++ ae.port[0].cmd_addr = io;
++ ae.port[0].altstatus_addr = ctrl;
++ ae.port[0].ctl_addr = ctrl;
++ ata_std_ports(&ae.port[0]);
++
++ ret = ata_device_add(&ae);
++ if (ret == 0)
++ return -ENODEV;
++
++ legacy_host[nr_legacy_host++] = ae.host_set;
++ return 0;
++}
++
++/**
++ * legacy_check_special_cases - ATA special cases
++ * @p: PCI device to check
++ * @master: set this if we find an ATA master
++ * @master: set this if we find an ATA secondary
++ *
++ * A small number of vendors implemented early PCI ATA interfaces on bridge logic
++ * without the ATA interface being PCI visible. Where we have a matching PCI driver
++ * we must skip the relevant device here. If we don't know about it then the legacy
++ * driver is the right driver anyway.
++ */
++
++static void legacy_check_special_cases(struct pci_dev *p, int *primary, int *secondary)
++{
++ /* Cyrix CS5510 pre SFF MWDMA ATA on the bridge */
++ if (p->vendor == 0x1078 && p->device == 0x0000) {
++ *primary = *secondary = 1;
++ return;
++ }
++ /* Cyrix CS5520 pre SFF MWDMA ATA on the bridge */
++ if (p->vendor == 0x1078 && p->device == 0x0002) {
++ *primary = *secondary = 1;
++ return;
++ }
++ /* Intel MPIIX - PIO ATA on non PCI side of bridge */
++ if (p->vendor == 0x8086 && p->device == 0x1234) {
++ u16 r;
++ pci_read_config_word(p, 0x6C, &r);
++ if (r & 0x8000) { /* ATA port enabled */
++ if (r & 0x4000)
++ *secondary = 1;
++ else
++ *primary = 1;
++ }
++ return;
++ }
++}
++
++/**
++ * legacy_init - attach legacy interfaces
++ *
++ * Attach legacy IDE interfaces by scanning the usual IRQ/port suspects.
++ * Right now we do not scan the ide0 and ide1 address but should do so
++ * for non PCI systems or systems with no PCI IDE legacy mode devices.
++ * If you fix that note there are special cases to consider like VLB
++ * drivers and CS5510/20.
++ */
++
++static __init int legacy_init(void)
++{
++ int i;
++ int ct = 0;
++ int primary = 0;
++ int secondary = 0;
++ int last_port = NR_HOST;
++
++ struct pci_dev *p = NULL;
++
++ for_each_pci_dev(p) {
++ int r;
++ /* Check for any overlap of the system ATA mappings. Native mode controllers
++ stuck on these addresses or some devices in 'raid' mode won't be found by
++ the storage class test */
++ for (r = 0; r < 6; r++) {
++ if (pci_resource_start(p, r) == 0x1f0)
++ primary = 1;
++ if (pci_resource_start(p, r) == 0x170)
++ secondary = 1;
++ }
++ /* Check for special cases */
++ legacy_check_special_cases(p, &primary, &secondary);
++
++ /* If PCI bus is present then don't probe for tertiary legacy ports */
++ if (legacy_all == 0)
++ last_port = 2;
++ }
++
++
++ for (i = 0; i < last_port; i++) {
++ /* Skip primary if we have seen a PCI one */
++ if (i == 0 && primary == 1)
++ continue;
++ /* Skip secondary if we have seen a PCI one */
++ if (i == 1 && secondary == 1)
++ continue;
++ if (legacy_init_one(legacy_port[i],
++ legacy_port[i] + 0x0206,
++ legacy_irq[i]) == 0)
++ ct++;
++ }
++ if (ct != 0)
++ return 0;
++ return -ENODEV;
++}
++
++static __exit void legacy_exit(void)
++{
++ int i;
++
++ for (i = 0; i < nr_legacy_host; i++) {
++ struct ata_port *ap =legacy_host[i]->ports[0];
++ unsigned long io = ap->ioaddr.cmd_addr;
++ unsigned long ctrl = ap->ioaddr.ctl_addr;
++ ata_host_set_remove(legacy_host[i]);
++ release_region(io, 8);
++ release_region(ctrl, 1);
++ }
++}
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for legacy ATA");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++/**
++ * legacy_probe_all - setup argument handler
++ * @unused: unused
++ *
++ * Called when the probe_all argument is passed to this driver. This indicates
++ * that we should check all the legacy ATA addresses even if PCI is present. Should
++ * only ever be needed on very strange PCI/legacy combinations
++ */
++
++static int __init legacy_probe_all(char *unused)
++{
++ legacy_all = 1;
++ return 1;
++}
++
++__setup("probe-all", legacy_probe_all);
++
++/**
++ * legacy_ht6560a - setup argument handler
++ * @unused: unused
++ *
++ * Called when the ht6560a argument is passed to this driver. This indicates
++ * that we should check all the legacy ATA addresses even if PCI is present. Should
++ * only ever be needed on very strange PCI/legacy combinations
++ */
++
++static int __init legacy_ht6560a(char *unused)
++{
++ ht6560a = 1;
++ return 1;
++}
++
++__setup("ht6560a", legacy_ht6560a);
++
++/**
++ * legacy_ht6560b - setup argument handler
++ * @unused: unused
++ *
++ * Called when the ht6560b argument is passed to this driver. This indicates
++ * that we should check all the legacy ATA addresses even if PCI is present. Should
++ * only ever be needed on very strange PCI/legacy combinations
++ */
++
++static int __init legacy_ht6560b(char *unused)
++{
++ ht6560b = 1;
++ return 1;
++}
++
++__setup("ht6560b", legacy_ht6560b);
++
++/**
++ * legacy_ht6560a - setup argument handler
++ * @unused: unused
++ *
++ * Called when the ht6560a argument is passed to this driver. This indicates
++ * that we should check all the legacy ATA addresses even if PCI is present. Should
++ * only ever be needed on very strange PCI/legacy combinations
++ */
++
++static int __init legacy_opti82c611a(char *unused)
++{
++ opti82c611a = 1;
++ return 1;
++}
++
++__setup("opti82c611a", legacy_opti82c611a);
++
++module_init(legacy_init);
++module_exit(legacy_exit);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_mpiix.c linux-2.6.16-rc6/drivers/scsi/pata_mpiix.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_mpiix.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_mpiix.c 2006-03-10 17:06:42.000000000 +0000
+@@ -0,0 +1,303 @@
++/*
++ * pata_mpiix.c - Intel MPIIX PATA for new ATA layer
++ * (C) 2005-2006 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * The MPIIX is different enough to the PIIX4 and friends that we give it
++ * a separate driver. The old ide/pci code handles this by just not tuning
++ * MPIIX at all.
++ *
++ * The MPIIX also differs in another important way from the majority of PIIX
++ * devices. The chip is a bridge (pardon the pun) between the old world of
++ * ISA IDE and PCI IDE. Although the ATA timings are PCI configured the actual
++ * IDE controller is not decoded in PCI space and the chip does not claim to
++ * be IDE class PCI. This requires slightly non-standard probe logic compared
++ * with PCI IDE and also that we do not disable the device when our driver is
++ * unloaded (as it has many other functions).
++ *
++ * The driver conciously keeps this logic internally to avoid pushing quirky
++ * PATA history into the clean libata layer.
++ *
++ * Thinkpad specific note: If you boot an MPIIX using thinkpad with a PCMCIA
++ * hard disk present this driver will not detect it. This is not a bug. In this
++ * configuration the secondary port of the MPIIX is disabled and the addresses
++ * are decoded by the PCMCIA bridge and therefore are for a generic IDE driver
++ * to operate.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_mpiix"
++#define DRV_VERSION "0.4.1"
++
++/**
++ * mpiix_phy_reset - probe reset
++ * @ap: ATA port
++ *
++ * Perform the ATA probe and bus reset sequence plus specific handling
++ * for this hardware. The MPIIX has the enable bits in a different place
++ * to PIIX4 and friends. As a pure PIO device it has no cable detect
++ */
++
++static void mpiix_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static const struct pci_bits mpiix_enable_bits[] = {
++ { 0x6D, 1, 0x80, 0x80 },
++ { 0x6F, 1, 0x80, 0x80 }
++ };
++
++ if (!pci_test_config_bits(pdev, &mpiix_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * mpiix_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup. The MPIIX allows us to program the
++ * IORDY sample point (2-5 clocks), recovery 1-4 clocks and whether
++ * prefetching or iordy are used.
++ *
++ * This would get very ugly because we can only program timing for one
++ * device at a time, the other gets PIO0. Fortunately libata calls
++ * our qc_issue_prot command before a command is issued so we can
++ * flip the timings back and forth to reduce the pain.
++ */
++
++static void mpiix_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ int control = 0;
++ int pio = adev->pio_mode - XFER_PIO_0;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u16 idetim;
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 0 },
++ { 2, 1 },
++ { 2, 3 }, };
++
++ pci_read_config_word(pdev, 0x6C, &idetim);
++ /* Mask the IORDY/TIME/PPE0 bank for this device */
++ if (adev->class == ATA_DEV_ATA)
++ control |= 4; /* PPE enable for disk */
++ if (ata_pio_need_iordy(adev))
++ control |= 2; /* IORDY */
++ if (pio > 0)
++ control |= 1; /* This drive is on the fast timing bank */
++
++ /* Mask out timing and clear both TIME bank selects */
++ idetim &= 0xCCEE;
++ idetim &= ~(0x07 << (2 * adev->devno));
++ idetim |= (control << (2 * adev->devno));
++
++ idetim |= (timings[pio][0] << 12) | (timings[pio][1] << 8);
++ pci_write_config_word(pdev, 0x6C, idetim);
++
++ /* We use ap->private_data as a pointer to the device currently
++ loaded for timing */
++ ap->private_data = adev;
++}
++
++/**
++ * mpiix_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings if
++ * neccessary. Our logic also clears TIME0/TIME1 for the other device so
++ * that, even if we get this wrong, cycles to the other device will
++ * be made PIO0.
++ */
++
++static int mpiix_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++
++ /* If modes have been configured and the channel data is not loaded
++ then load it. We have to check if pio_mode is set as the core code
++ does not set adev->pio_mode to XFER_PIO_0 while probing as would be
++ logical */
++
++ if (adev->pio_mode && adev != ap->private_data)
++ mpiix_set_piomode(ap, adev);
++
++ return ata_qc_issue_prot(qc);
++}
++
++static struct scsi_host_template mpiix_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations mpiix_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = mpiix_set_piomode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = mpiix_phy_reset,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = mpiix_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int mpiix_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ /* Single threaded by the PCI probe logic */
++ static struct ata_probe_ent probe[2];
++ static int printed_version;
++ u16 idetim;
++ int enabled;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n");
++
++ /* MPIIX has many functions which can be turned on or off according
++ to other devices present. Make sure IDE is enabled before we try
++ and use it */
++
++ pci_read_config_word(dev, 0x6C, &idetim);
++ if (!(idetim & 0x8000))
++ return -ENODEV;
++
++ /* We do our own plumbing to avoid leaking special cases for whacko
++ ancient hardware into the core code. There are two issues to
++ worry about. #1 The chip is a bridge so if in legacy mode and
++ without BARs set fools the setup. #2 If you pci_disable_device
++ the MPIIX your box goes castors up */
++
++ INIT_LIST_HEAD(&probe[0].node);
++ probe[0].dev = pci_dev_to_dev(dev);
++ probe[0].port_ops = &mpiix_port_ops;
++ probe[0].sht = &mpiix_sht;
++ probe[0].pio_mask = 0x1F;
++ probe[0].irq = 14;
++ probe[0].irq_flags = SA_SHIRQ;
++ probe[0].host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST;
++ probe[0].legacy_mode = 1;
++ probe[0].hard_port_no = 0;
++ probe[0].n_ports = 1;
++ probe[0].port[0].cmd_addr = 0x1F0;
++ probe[0].port[0].ctl_addr = 0x3F6;
++ probe[0].port[0].altstatus_addr = 0x3F6;
++
++ /* The secondary lurks at different addresses but is otherwise
++ the same beastie */
++
++ INIT_LIST_HEAD(&probe[1].node);
++ probe[1] = probe[0];
++ probe[1].irq = 15;
++ probe[1].hard_port_no = 1;
++ probe[1].port[0].cmd_addr = 0x170;
++ probe[1].port[0].ctl_addr = 0x376;
++ probe[1].port[0].altstatus_addr = 0x376;
++
++ /* Let libata fill in the port details */
++ ata_std_ports(&probe[0].port[0]);
++ ata_std_ports(&probe[1].port[0]);
++
++ /* Now add the port that is active */
++ enabled = (idetim & 0x4000) ? 1 : 0;
++
++ if (ata_device_add(&probe[enabled]))
++ return 0;
++ return -ENODEV;
++}
++
++/**
++ * mpiix_remove_one - device unload
++ * @pdev: PCI device being removed
++ *
++ * Handle an unplug/unload event for a PCI device. Unload the
++ * PCI driver but do not use the default handler as we *MUST NOT*
++ * disable the device as it has other functions.
++ */
++
++static void __devexit mpiix_remove_one(struct pci_dev *pdev)
++{
++ struct device *dev = pci_dev_to_dev(pdev);
++ struct ata_host_set *host_set = dev_get_drvdata(dev);
++
++ ata_host_set_remove(host_set);
++ dev_set_drvdata(dev, NULL);
++}
++
++
++
++static const struct pci_device_id mpiix[] = {
++ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371MX, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ { 0, },
++};
++
++static struct pci_driver mpiix_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = mpiix,
++ .probe = mpiix_init_one,
++ .remove = mpiix_remove_one
++};
++
++static int __init mpiix_init(void)
++{
++ return pci_register_driver(&mpiix_pci_driver);
++}
++
++
++static void __exit mpiix_exit(void)
++{
++ pci_unregister_driver(&mpiix_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Intel MPIIX");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, mpiix);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(mpiix_init);
++module_exit(mpiix_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_netcell.c linux-2.6.16-rc6/drivers/scsi/pata_netcell.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_netcell.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_netcell.c 2006-02-08 14:05:57.000000000 +0000
+@@ -0,0 +1,176 @@
++/*
++ * pata_netcell.c - Netcell PATA driver
++ *
++ * (c) 2006 Red Hat <alan@redhat.com>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/ata.h>
++
++#define DRV_NAME "pata_netcell"
++#define DRV_VERSION "0.1"
++
++/**
++ * netcell_cable_detect - check for 40/80 pin
++ * @ap: Port
++ *
++ * Cables are handled by the RAID controller. Report 80 pin.
++ */
++
++static int netcell_cable_detect(struct ata_port *ap)
++{
++ return ATA_CBL_PATA80;
++}
++
++/**
++ * netcell_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void netcell_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = netcell_cable_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/* No PIO or DMA methods needed for this device */
++
++static struct scsi_host_template netcell_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ /* Special handling needed if you have sector or LBA48 limits */
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ /* Use standard CHS mapping rules */
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static const struct ata_port_operations netcell_ops = {
++ .port_disable = ata_port_disable,
++
++ /* Task file is PCI ATA format, use helpers */
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = netcell_phy_reset,
++
++ /* BMDMA handling is PCI ATA format, use helpers */
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer, /* In -ac only right now */
++
++ /* Timeout handling. Special recovery hooks here */
++ .eng_timeout = ata_eng_timeout,
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ /* Generic PATA PCI ATA helpers */
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++
++/**
++ * netcell_init_one - Register Netcell ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in netcell_pci_tbl matching with @pdev
++ *
++ * Called from kernel PCI layer.
++ *
++ * LOCKING:
++ * Inherited from PCI layer (may sleep).
++ *
++ * RETURNS:
++ * Zero on success, or -ERRNO value.
++ */
++
++static int netcell_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ static struct ata_port_info info = {
++ .sht = &netcell_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ /* Actually we don't really care about these as the
++ firmware deals with it */
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma0-2 */
++ .udma_mask = 0x3f, /* UDMA 133 */
++ .port_ops = &netcell_ops,
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev,
++ "version " DRV_VERSION "\n");
++
++ /* Any chip specific setup/optimisation/messages here */
++ ata_pci_clear_simplex(pdev);
++
++ /* And let the library code do the work */
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id netcell_pci_tbl[] = {
++ { 0x169C, 0x0044, PCI_ANY_ID, PCI_ANY_ID, },
++ { } /* terminate list */
++};
++
++static struct pci_driver netcell_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = netcell_pci_tbl,
++ .probe = netcell_init_one,
++ .remove = ata_pci_remove_one,
++};
++
++static int __init netcell_init(void)
++{
++ return pci_register_driver(&netcell_pci_driver);
++}
++
++static void __exit netcell_exit(void)
++{
++ pci_unregister_driver(&netcell_pci_driver);
++}
++
++
++module_init(netcell_init);
++module_exit(netcell_exit);
++
++MODULE_AUTHOR("");
++MODULE_DESCRIPTION("SCSI low-level driver for Netcell PATA RAID");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, netcell_pci_tbl);
++MODULE_VERSION(DRV_VERSION);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_ns87410.c linux-2.6.16-rc6/drivers/scsi/pata_ns87410.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_ns87410.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_ns87410.c 2006-02-15 15:05:43.000000000 +0000
+@@ -0,0 +1,213 @@
++/*
++ * pata_ns87410.c - National Semiconductor 87410 PATA for new ATA layer
++ * (C) 2006 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_ns87410"
++#define DRV_VERSION "0.1"
++
++/**
++ * ns87410_phy_reset - probe reset
++ * @ap: ATA port
++ *
++ * Perform the ATA probe and bus reset sequence plus specific handling
++ * for this hardware. The MPIIX has the enable bits in a different place
++ * to PIIX4 and friends. As a pure PIO device it has no cable detect
++ */
++
++static void ns87410_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static const struct pci_bits ns87410_enable_bits[] = {
++ { 0x43, 1, 0x08, 0x08 },
++ { 0x47, 1, 0x08, 0x08 }
++ };
++
++ if (!pci_test_config_bits(pdev, &ns87410_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * ns87410_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program timing data. This is kept per channel not per device,
++ * and only affects the data port.
++ */
++
++static void ns87410_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int port = 0x40 + 4 * ap->hard_port_no;
++ u8 idetcr, idefr;
++ struct ata_timing at;
++
++ static const u8 activebits[15] = {
++ 0, 1, 2, 3, 4,
++ 5, 5, 6, 6, 6,
++ 6, 7, 7, 7, 7
++ };
++
++ static const u8 recoverbits[12] = {
++ 0, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7
++ };
++
++ pci_read_config_byte(pdev, port + 3, &idefr);
++
++ if (ata_pio_need_iordy(adev))
++ idefr |= 0x04; /* IORDY enable */
++ else
++ idefr &= ~0x04;
++
++ if (ata_timing_compute(adev, adev->pio_mode, &at, 30303, 1) < 0) {
++ dev_printk(KERN_ERR, &pdev->dev, "unknown mode %d.\n", adev->pio_mode);
++ return;
++ }
++
++ at.active = FIT(at.active, 2, 16) - 2;
++ at.setup = FIT(at.setup, 1, 4) - 1;
++ at.recover = FIT(at.recover, 1, 12) - 1;
++
++ idetcr = (at.setup << 6) | (recoverbits[at.recover] << 3) | activebits[at.active];
++
++ pci_write_config_byte(pdev, port, idetcr);
++ pci_write_config_byte(pdev, port + 3, idefr);
++ /* We use ap->private_data as a pointer to the device currently
++ loaded for timing */
++ ap->private_data = adev;
++}
++
++/**
++ * ns87410_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings if
++ * neccessary. Our logic also clears TIME0/TIME1 for the other device so
++ * that, even if we get this wrong, cycles to the other device will
++ * be made PIO0.
++ */
++
++static int ns87410_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++
++ /* If modes have been configured and the channel data is not loaded
++ then load it. We have to check if pio_mode is set as the core code
++ does not set adev->pio_mode to XFER_PIO_0 while probing as would be
++ logical */
++
++ if (adev->pio_mode && adev != ap->private_data)
++ ns87410_set_piomode(ap, adev);
++
++ return ata_qc_issue_prot(qc);
++}
++
++static struct scsi_host_template ns87410_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations ns87410_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = ns87410_set_piomode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = ns87410_phy_reset,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ns87410_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int ns87410_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &ns87410_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x0F,
++ .port_ops = &ns87410_port_ops
++ };
++ static struct ata_port_info *port_info[2] = {&info, &info};
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static const struct pci_device_id ns87410[] = {
++ { PCI_DEVICE(0x100B, 0xD001), },
++ { 0, },
++};
++
++static struct pci_driver ns87410_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = ns87410,
++ .probe = ns87410_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init ns87410_init(void)
++{
++ return pci_register_driver(&ns87410_pci_driver);
++}
++
++
++static void __exit ns87410_exit(void)
++{
++ pci_unregister_driver(&ns87410_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Nat Semi 87410");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, ns87410);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(ns87410_init);
++module_exit(ns87410_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_oldpiix.c linux-2.6.16-rc6/drivers/scsi/pata_oldpiix.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_oldpiix.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_oldpiix.c 2006-01-21 16:55:29.000000000 +0000
+@@ -0,0 +1,327 @@
++/*
++ * pata_oldpiix.c - Intel PATA/SATA controllers
++ *
++ * (C) 2005 Red Hat <alan@redhat.com>
++ *
++ * Some parts based on ata_piix.c by Jeff Garzik and others.
++ *
++ * Early PIIX differs significantly from the later PIIX as it lacks
++ * SITRE and the slave timing registers. This means that you have to
++ * set timing per channel, or be clever. Libata tells us whenever it
++ * does drive selection and we use this to reload the timings.
++ *
++ * Because of these behaviour differences PIIX gets its own driver module.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/ata.h>
++
++#define DRV_NAME "pata_oldpiix"
++#define DRV_VERSION "0.3"
++
++/**
++ * oldpiix_pata_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void oldpiix_pata_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static const struct pci_bits oldpiix_enable_bits[] = {
++ { 0x41U, 1U, 0x80UL, 0x80UL }, /* port 0 */
++ { 0x43U, 1U, 0x80UL, 0x80UL }, /* port 1 */
++ };
++
++ if (!pci_test_config_bits(pdev, &oldpiix_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * oldpiix_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: um
++ *
++ * Set PIO mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void oldpiix_set_piomode (struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int pio = adev->pio_mode - XFER_PIO_0;
++ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
++ unsigned int idetm_port= ap->hard_port_no ? 0x42 : 0x40;
++ u16 idetm_data;
++ int control = 0;
++
++ /*
++ * See Intel Document 298600-004 for the timing programing rules
++ * for PIIX/ICH. Note that the early PIIX does not have the slave
++ * timing port at 0x44.
++ */
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 0 },
++ { 2, 1 },
++ { 2, 3 }, };
++
++ if (pio > 2)
++ control |= 1; /* TIME1 enable */
++ if (ata_pio_need_iordy(adev))
++ control |= 2; /* IE IORDY */
++
++ /* Intel specifies that the PPE functionality is for disk only */
++ if (adev->class == ATA_DEV_ATA)
++ control |= 4; /* PPE enable */
++
++ pci_read_config_word(dev, idetm_port, &idetm_data);
++
++ /* Enable PPE, IE and TIME as appropriate. Clear the other
++ drive timing bits */
++ if (adev->devno == 0) {
++ idetm_data &= 0xCCE0;
++ idetm_data |= control;
++ } else {
++ idetm_data &= 0xCC0E;
++ idetm_data |= (control << 4);
++ }
++ idetm_data |= (timings[pio][0] << 12) |
++ (timings[pio][1] << 8);
++ pci_write_config_word(dev, idetm_port, idetm_data);
++
++ /* Track which port is configured */
++ ap->private_data = adev;
++}
++
++/**
++ * oldpiix_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ * @isich: True if the device is an ICH and has IOCFG registers
++ *
++ * Set MWDMA mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void oldpiix_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
++ u8 idetm_port = ap->hard_port_no ? 0x42 : 0x40;
++ u16 idetm_data;
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 0 },
++ { 2, 1 },
++ { 2, 3 }, };
++
++ /*
++ * MWDMA is driven by the PIO timings. We must also enable
++ * IORDY unconditionally along with TIME1. PPE has already
++ * been set when the PIO timing was set.
++ */
++
++ unsigned int mwdma = adev->dma_mode - XFER_MW_DMA_0;
++ unsigned int control;
++ const unsigned int needed_pio[3] = {
++ XFER_PIO_0, XFER_PIO_3, XFER_PIO_4
++ };
++ int pio = needed_pio[mwdma] - XFER_PIO_0;
++
++ pci_read_config_word(dev, idetm_port, &idetm_data);
++
++ control = 3; /* IORDY|TIME0 */
++ /* Intel specifies that the PPE functionality is for disk only */
++ if (adev->class == ATA_DEV_ATA)
++ control |= 4; /* PPE enable */
++
++ /* If the drive MWDMA is faster than it can do PIO then
++ we must force PIO into PIO0 */
++
++ if (adev->pio_mode < needed_pio[mwdma])
++ /* Enable DMA timing only */
++ control |= 8; /* PIO cycles in PIO0 */
++
++ /* Mask out the relevant control and timing bits we will load. Also
++ clear the other drive TIME register as a precaution */
++ if (adev->devno == 0) {
++ idetm_data &= 0xCCE0;
++ idetm_data |= control;
++ } else {
++ idetm_data &= 0xCC0E;
++ idetm_data |= (control << 4);
++ }
++ idetm_data |= (timings[pio][0] << 12) | (timings[pio][1] << 8);
++ pci_write_config_word(dev, idetm_port, idetm_data);
++
++ /* Track which port is configured */
++ ap->private_data = adev;
++}
++
++/**
++ * oldpiix_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings if
++ * neccessary. Our logic also clears TIME0/TIME1 for the other device so
++ * that, even if we get this wrong, cycles to the other device will
++ * be made PIO0.
++ */
++
++static int oldpiix_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++
++ if (adev != ap->private_data) {
++ if (adev->dma_mode)
++ oldpiix_set_dmamode(ap, adev);
++ else if (adev->pio_mode)
++ oldpiix_set_piomode(ap, adev);
++ }
++ return ata_qc_issue_prot(qc);
++}
++
++
++static struct scsi_host_template oldpiix_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static const struct ata_port_operations oldpiix_pata_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = oldpiix_set_piomode,
++ .set_dmamode = oldpiix_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = oldpiix_pata_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = oldpiix_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++
++/**
++ * oldpiix_init_one - Register PIIX ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in oldpiix_pci_tbl matching with @pdev
++ *
++ * Called from kernel PCI layer. We probe for combined mode (sigh),
++ * and then hand over control to libata, for it to do the rest.
++ *
++ * LOCKING:
++ * Inherited from PCI layer (may sleep).
++ *
++ * RETURNS:
++ * Zero on success, or -ERRNO value.
++ */
++
++static int oldpiix_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ static struct ata_port_info info = {
++ .sht = &oldpiix_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma1-2 */
++ .port_ops = &oldpiix_pata_ops,
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev,
++ "version " DRV_VERSION "\n");
++
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id oldpiix_pci_tbl[] = {
++ { 0x8086, 0x1230, PCI_ANY_ID, PCI_ANY_ID, },
++ { } /* terminate list */
++};
++
++static struct pci_driver oldpiix_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = oldpiix_pci_tbl,
++ .probe = oldpiix_init_one,
++ .remove = ata_pci_remove_one,
++};
++
++static int __init oldpiix_init(void)
++{
++ return pci_register_driver(&oldpiix_pci_driver);
++}
++
++static void __exit oldpiix_exit(void)
++{
++ pci_unregister_driver(&oldpiix_pci_driver);
++}
++
++
++module_init(oldpiix_init);
++module_exit(oldpiix_exit);
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("SCSI low-level driver for early PIIX series controllers");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, oldpiix_pci_tbl);
++MODULE_VERSION(DRV_VERSION);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_opti.c linux-2.6.16-rc6/drivers/scsi/pata_opti.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_opti.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_opti.c 2006-02-16 15:38:28.000000000 +0000
+@@ -0,0 +1,268 @@
++/*
++ * pata_opti.c - ATI PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based on
++ * linux/drivers/ide/pci/opti621.c Version 0.7 Sept 10, 2002
++ *
++ * Copyright (C) 1996-1998 Linus Torvalds & authors (see below)
++ *
++ * Authors:
++ * Jaromir Koutek <miri@punknet.cz>,
++ * Jan Harkes <jaharkes@cwi.nl>,
++ * Mark Lord <mlord@pobox.com>
++ * Some parts of code are from ali14xx.c and from rz1000.c.
++ *
++ * Also consulted the FreeBSD prototype driver by Kevin Day to try
++ * and resolve some confusions.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_opti"
++#define DRV_VERSION "0.1.2"
++
++enum {
++ READ_REG = 0, /* index of Read cycle timing register */
++ WRITE_REG = 1, /* index of Write cycle timing register */
++ CNTRL_REG = 3, /* index of Control register */
++ STRAP_REG = 5, /* index of Strap register */
++ MISC_REG = 6 /* index of Miscellaneous register */
++};
++
++/**
++ * opti_phy_reset - probe reset
++ * @ap: ATA port
++ *
++ * Perform the ATA probe and bus reset sequence plus specific handling
++ * for this hardware. The Opti needs little handling - we have no UDMA66
++ * capability that needs cable detection. All we must do is check the port
++ * is enabled.
++ */
++
++static void opti_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static const struct pci_bits opti_enable_bits[] = {
++ { 0x45, 1, 0x80, 0x00 },
++ { 0x45, 1, 0x08, 0x00 }
++ };
++
++ if (!pci_test_config_bits(pdev, &opti_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * opti_write_reg - control register setup
++ * @ap: ATA port
++ * @value: value
++ * @reg: control register number
++ *
++ * The Opti uses magic 'trapdoor' register accesses to do configuration
++ * rather than using PCI space as other controllers do. The double inw
++ * on the error register activates configuration mode. We can then write
++ * the control register
++ */
++
++static void opti_write_reg(struct ata_port *ap, u8 val, int reg)
++{
++ unsigned long regio = ap->ioaddr.cmd_addr;
++ inw(regio + 1);
++ inw(regio + 1);
++ outb(3, regio + 2);
++ outb(val, regio + reg);
++ outb(0x83, regio + 2);
++}
++
++#if 0
++/**
++ * opti_read_reg - control register read
++ * @ap: ATA port
++ * @reg: control register number
++ *
++ * The Opti uses magic 'trapdoor' register accesses to do configuration
++ * rather than using PCI space as other controllers do. The double inw
++ * on the error register activates configuration mode. We can then read
++ * the control register
++ */
++
++static u8 opti_read_reg(struct ata_port *ap, int reg)
++{
++ unsigned long regio = ap->ioaddr.cmd_addr;
++ u8 ret;
++ inw(regio + 1);
++ inw(regio + 1);
++ outb(3, regio + 2);
++ ret = inb(regio + reg);
++ outb(0x83, regio + 2);
++}
++#endif
++
++/**
++ * opti_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup. Timing numbers are taken from
++ * the FreeBSD driver then pre computed to keep the code clean. There
++ * are two tables depending on the hardware clock speed.
++ */
++
++static void opti_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++ int clock;
++ int pio = adev->pio_mode - XFER_PIO_0;
++ unsigned long regio = ap->ioaddr.cmd_addr;
++ u8 addr;
++
++ /* Address table precomputed with prefetch off and a DCLK of 2 */
++ static const u8 addr_timing[2][5] = {
++ { 0x30, 0x20, 0x20, 0x10, 0x10 },
++ { 0x20, 0x20, 0x10, 0x10, 0x10 }
++ };
++ static const u8 data_rec_timing[2][5] = {
++ { 0x6B, 0x56, 0x42, 0x32, 0x31 },
++ { 0x58, 0x44, 0x32, 0x22, 0x21 }
++ };
++
++ outb(0xff, regio + 5);
++ clock = inw(regio + 5) & 1;
++
++ /*
++ * As with many controllers the address setup time is shared
++ * and must suit both devices if present.
++ */
++
++ addr = addr_timing[clock][pio];
++ if (pair) {
++ /* Hardware constraint */
++ u8 pair_addr = addr_timing[clock][pair->pio_mode - XFER_PIO_0];
++ if (pair_addr > addr)
++ addr = pair_addr;
++ }
++
++ /* Commence primary programming sequence */
++ opti_write_reg(ap, adev->devno, MISC_REG);
++ opti_write_reg(ap, data_rec_timing[clock][pio], READ_REG);
++ opti_write_reg(ap, data_rec_timing[clock][pio], WRITE_REG);
++ opti_write_reg(ap, addr, MISC_REG);
++
++ /* Programming sequence complete, override strapping */
++ opti_write_reg(ap, 0x85, CNTRL_REG);
++}
++
++static struct scsi_host_template opti_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations opti_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = opti_set_piomode,
++/* .set_dmamode = opti_set_dmamode, */
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = opti_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int opti_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &opti_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .port_ops = &opti_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++ static int printed_version;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n");
++
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static const struct pci_device_id opti[] = {
++ { PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C621, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
++ { 0, },
++};
++
++static struct pci_driver opti_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = opti,
++ .probe = opti_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init opti_init(void)
++{
++ return pci_register_driver(&opti_pci_driver);
++}
++
++
++static void __exit opti_exit(void)
++{
++ pci_unregister_driver(&opti_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Opti 621/621X");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, opti);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(opti_init);
++module_exit(opti_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_pcmcia.c linux-2.6.16-rc6/drivers/scsi/pata_pcmcia.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_pcmcia.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_pcmcia.c 2006-03-10 17:07:27.000000000 +0000
+@@ -0,0 +1,406 @@
++/*
++ * pata-pcmcia.c - PCMCIA PATA controller driver.
++ * Copyright 2005/2006 Red Hat Inc <alan@redhat.com>, all rights reserved.
++ *
++ * Heavily based upon ide-cs.c
++ * The initial developer of the original code is David A. Hinds
++ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
++ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/ata.h>
++#include <linux/libata.h>
++
++#include <pcmcia/cs_types.h>
++#include <pcmcia/cs.h>
++#include <pcmcia/cistpl.h>
++#include <pcmcia/ds.h>
++#include <pcmcia/cisreg.h>
++#include <pcmcia/ciscode.h>
++
++
++#define DRV_NAME "pata_pcmcia"
++#define DRV_VERSION "0.1"
++
++/*
++ * Private data structure to glue stuff together
++ */
++
++struct ata_pcmcia_info {
++ dev_link_t link;
++ int ndev;
++ dev_node_t node;
++};
++
++static struct scsi_host_template pcmcia_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations pcmcia_port_ops = {
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++#define CS_CHECK(fn, ret) \
++do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
++
++/**
++ * pcmcia_init_one - attach an pcmcia interface
++ * @pdev: pcmcia device
++ *
++ * Register a PCMCIA IDE interface. Such interfaces are PIO 0 and
++ * non shared IRQ.
++ */
++
++static int pcmcia_init_one(struct pcmcia_device *pdev)
++{
++ struct ata_probe_ent ae;
++ dev_link_t *link;
++ struct ata_pcmcia_info *info;
++ client_handle_t handle;
++ tuple_t tuple;
++ struct {
++ unsigned short buf[128];
++ cisparse_t parse;
++ config_info_t conf;
++ cistpl_cftable_entry_t dflt;
++ } *stk = NULL;
++ cistpl_cftable_entry_t *cfg;
++ int pass, last_ret = 0, last_fn = 0, is_kme = 0, ret = -ENOMEM;
++ unsigned long io_base, ctl_base;
++
++ info = kzalloc(sizeof(*info), GFP_KERNEL);
++ if (info == NULL)
++ return -ENOMEM;
++
++ link = &info->link;
++ link->priv = info;
++
++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
++ link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
++ link->io.IOAddrLines = 3;
++ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
++ link->irq.IRQInfo1 = IRQ_LEVEL_ID;
++ link->conf.Attributes = CONF_ENABLE_IRQ;
++ link->conf.Vcc = 50;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++
++ link->handle = pdev;
++ pdev->instance = link;
++
++ handle = link->handle;
++
++ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
++
++ stk = kzalloc(sizeof(*stk), GFP_KERNEL);
++ if (!stk)
++ goto out1;
++
++ cfg = &stk->parse.cftable_entry;
++
++ tuple.TupleData = (cisdata_t *)&stk->buf;
++ tuple.TupleOffset = 0;
++ tuple.TupleDataMax = 255;
++ tuple.Attributes = 0;
++ tuple.DesiredTuple = CISTPL_CONFIG;
++
++ CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
++ CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple));
++ CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &stk->parse));
++ link->conf.ConfigBase = stk->parse.config.base;
++ link->conf.Present = stk->parse.config.rmask[0];
++
++ tuple.DesiredTuple = CISTPL_MANFID;
++ if (!pcmcia_get_first_tuple(handle, &tuple) && !pcmcia_get_tuple_data(handle, &tuple) && !pcmcia_parse_tuple(handle, &tuple, &stk->parse))
++ is_kme = ((stk->parse.manfid.manf == MANFID_KME) && ((stk->parse.manfid.card == PRODID_KME_KXLC005_A) || (stk->parse.manfid.card == PRODID_KME_KXLC005_B)));
++
++ /* Configure card */
++ link->state |= DEV_CONFIG;
++
++ /* Not sure if this is right... look up the current Vcc */
++ CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &stk->conf));
++ link->conf.Vcc = stk->conf.Vcc;
++
++ pass = io_base = ctl_base = 0;
++ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
++ tuple.Attributes = 0;
++ CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
++
++ while (1) {
++ if (pcmcia_get_tuple_data(handle, &tuple) != 0)
++ goto next_entry;
++ if (pcmcia_parse_tuple(handle, &tuple, &stk->parse) != 0)
++ goto next_entry;
++ /* Check for matching Vcc, unless we're desperate */
++ if (!pass) {
++ if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
++ if (stk->conf.Vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000)
++ goto next_entry;
++ } else if (stk->dflt.vcc.present & (1 << CISTPL_POWER_VNOM)) {
++ if (stk->conf.Vcc != stk->dflt.vcc.param[CISTPL_POWER_VNOM] / 10000)
++ goto next_entry;
++ }
++ }
++
++ if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ link->conf.Vpp1 = link->conf.Vpp2 = cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++ else if (stk->dflt.vpp1.present & (1 << CISTPL_POWER_VNOM))
++ link->conf.Vpp1 = link->conf.Vpp2 = stk->dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
++
++ if ((cfg->io.nwin > 0) || (stk->dflt.io.nwin > 0)) {
++ cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &stk->dflt.io;
++ link->conf.ConfigIndex = cfg->index;
++ link->io.BasePort1 = io->win[0].base;
++ link->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
++ if (!(io->flags & CISTPL_IO_16BIT))
++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ if (io->nwin == 2) {
++ link->io.NumPorts1 = 8;
++ link->io.BasePort2 = io->win[1].base;
++ link->io.NumPorts2 = (is_kme) ? 2 : 1;
++ if (pcmcia_request_io(link->handle, &link->io) != 0)
++ goto next_entry;
++ io_base = link->io.BasePort1;
++ ctl_base = link->io.BasePort2;
++ } else if ((io->nwin == 1) && (io->win[0].len >= 16)) {
++ link->io.NumPorts1 = io->win[0].len;
++ link->io.NumPorts2 = 0;
++ if (pcmcia_request_io(link->handle, &link->io) != 0)
++ goto next_entry;
++ io_base = link->io.BasePort1;
++ ctl_base = link->io.BasePort1 + 0x0e;
++ } else goto next_entry;
++ /* If we've got this far, we're done */
++ break;
++ }
++next_entry:
++ if (cfg->flags & CISTPL_CFTABLE_DEFAULT)
++ memcpy(&stk->dflt, cfg, sizeof(stk->dflt));
++ if (pass) {
++ CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(handle, &tuple));
++ } else if (pcmcia_get_next_tuple(handle, &tuple) != 0) {
++ CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
++ memset(&stk->dflt, 0, sizeof(stk->dflt));
++ pass++;
++ }
++ }
++
++ if (is_kme)
++ outb(0x81, ctl_base + 0x01);
++
++ /* FIXME: Could be more ports at base + 0x10 but we only deal with
++ one right now */
++
++ if (link->io.NumPorts1 >= 0x20)
++ printk(KERN_WARNING DRV_NAME ": second channel not yet supported.\n");
++
++ /*
++ * Having done the PCMCIA plumbing the ATA side is relatively
++ * sane.
++ */
++
++ memset(&ae, 0, sizeof(struct ata_probe_ent));
++ INIT_LIST_HEAD(&ae.node);
++ ae.dev = &pdev->dev;
++ ae.port_ops = &pcmcia_port_ops;
++ ae.sht = &pcmcia_sht;
++ ae.n_ports = 1;
++ ae.pio_mask = 1; /* ISA so PIO 0 cycles */
++ ae.irq = link->irq.AssignedIRQ;
++ ae.irq_flags = 0;
++ ae.host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_IRQ_MASK | ATA_FLAG_SRST;
++ ae.port[0].cmd_addr = io_base;
++ ae.port[0].altstatus_addr = ctl_base;
++ ae.port[0].ctl_addr = ctl_base;
++ ata_std_ports(&ae.port[0]);
++
++ if (ata_device_add(&ae) == 0)
++ goto failed;
++
++ info->ndev = 1;
++ link->dev = &info->node;
++ link->state &= ~DEV_CONFIG_PENDING;
++ kfree(stk);
++ return 0;
++
++cs_failed:
++ cs_error(link->handle, last_fn, last_ret);
++failed:
++ kfree(stk);
++ info->ndev = 0;
++ link->dev = NULL;
++
++ pcmcia_release_configuration(link->handle);
++ pcmcia_release_io(link->handle, &link->io);
++ pcmcia_release_irq(link->handle, &link->irq);
++
++ link->state &= ~DEV_CONFIG;
++out1:
++ kfree(info);
++ return ret;
++}
++
++/**
++ * pcmcia_remove_one - unplug an pcmcia interface
++ * @pdev: pcmcia device
++ *
++ * A PCMCIA ATA device has been unplugged. Perform the needed
++ * cleanup. Also called on module unload for any active devices.
++ */
++
++void pcmcia_remove_one(struct pcmcia_device *pdev)
++{
++ dev_link_t *link = dev_to_instance(pdev);
++ struct ata_pcmcia_info *info = link->priv;
++ struct device *dev = &pdev->dev;
++
++ if (link->state & DEV_CONFIG) {
++ if (info->ndev) {
++ struct ata_host_set *host_set = dev_get_drvdata(dev);
++ ata_host_set_remove(host_set);
++ dev_set_drvdata(dev, NULL);
++ }
++ info->ndev = 0;
++ link->dev = NULL;
++
++ pcmcia_release_configuration(link->handle);
++ pcmcia_release_io(link->handle, &link->io);
++ pcmcia_release_irq(link->handle, &link->irq);
++ link->state &= ~DEV_CONFIG;
++ }
++ kfree(link->priv);
++}
++
++static int pcmcia_suspend(struct pcmcia_device *dev)
++{
++ dev_link_t *link = dev_to_instance(dev);
++
++ link->state |= DEV_SUSPEND;
++ if (link->state & DEV_CONFIG)
++ pcmcia_release_configuration(link->handle);
++
++ return 0;
++}
++
++static int pcmcia_resume(struct pcmcia_device *dev)
++{
++ dev_link_t *link = dev_to_instance(dev);
++
++ link->state &= ~DEV_SUSPEND;
++ if (DEV_OK(link))
++ pcmcia_request_configuration(link->handle, &link->conf);
++
++ return 0;
++}
++
++static struct pcmcia_device_id pcmcia_devices[] = {
++ PCMCIA_DEVICE_FUNC_ID(4),
++ PCMCIA_DEVICE_MANF_CARD(0x0007, 0x0000), /* Hitachi */
++ PCMCIA_DEVICE_MANF_CARD(0x0032, 0x0704),
++ PCMCIA_DEVICE_MANF_CARD(0x0045, 0x0401),
++ PCMCIA_DEVICE_MANF_CARD(0x0098, 0x0000), /* Toshiba */
++ PCMCIA_DEVICE_MANF_CARD(0x00a4, 0x002d),
++ PCMCIA_DEVICE_MANF_CARD(0x00ce, 0x0000), /* Samsung */
++ PCMCIA_DEVICE_MANF_CARD(0x0319, 0x0000), /* Hitachi */
++ PCMCIA_DEVICE_MANF_CARD(0x2080, 0x0001),
++ PCMCIA_DEVICE_MANF_CARD(0x4e01, 0x0200), /* Lexar */
++ PCMCIA_DEVICE_PROD_ID123("Caravelle", "PSC-IDE ", "PSC000", 0x8c36137c, 0xd0693ab8, 0x2768a9f0),
++ PCMCIA_DEVICE_PROD_ID123("CDROM", "IDE", "MCD-601p", 0x1b9179ca, 0xede88951, 0x0d902f74),
++ PCMCIA_DEVICE_PROD_ID123("PCMCIA", "IDE CARD", "F1", 0x281f1c5d, 0x1907960c, 0xf7fde8b9),
++ PCMCIA_DEVICE_PROD_ID12("ARGOSY", "CD-ROM", 0x78f308dc, 0x66536591),
++ PCMCIA_DEVICE_PROD_ID12("ARGOSY", "PnPIDE", 0x78f308dc, 0x0c694728),
++ PCMCIA_DEVICE_PROD_ID12("CNF CD-M", "CD-ROM", 0x7d93b852, 0x66536591),
++ PCMCIA_DEVICE_PROD_ID12("Creative Technology Ltd.", "PCMCIA CD-ROM Interface Card", 0xff8c8a45, 0xfe8020c4),
++ PCMCIA_DEVICE_PROD_ID12("Digital Equipment Corporation.", "Digital Mobile Media CD-ROM", 0x17692a66, 0xef1dcbde),
++ PCMCIA_DEVICE_PROD_ID12("EXP", "CD+GAME", 0x6f58c983, 0x63c13aaf),
++ PCMCIA_DEVICE_PROD_ID12("EXP ", "CD-ROM", 0x0a5c52fd, 0x66536591),
++ PCMCIA_DEVICE_PROD_ID12("EXP ", "PnPIDE", 0x0a5c52fd, 0x0c694728),
++ PCMCIA_DEVICE_PROD_ID12("FREECOM", "PCCARD-IDE", 0x5714cbf7, 0x48e0ab8e),
++ PCMCIA_DEVICE_PROD_ID12("HITACHI", "FLASH", 0xf4f43949, 0x9eb86aae),
++ PCMCIA_DEVICE_PROD_ID12("HITACHI", "microdrive", 0xf4f43949, 0xa6d76178),
++ PCMCIA_DEVICE_PROD_ID12("IBM", "IBM17JSSFP20", 0xb569a6e5, 0xf2508753),
++ PCMCIA_DEVICE_PROD_ID12("IO DATA", "CBIDE2 ", 0x547e66dc, 0x8671043b),
++ PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149),
++ PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674),
++ PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b),
++ PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79),
++ PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591),
++ PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728),
++ PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1),
++ PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003),
++ PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852),
++ PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
++ PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
++ PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
++ PCMCIA_DEVICE_NULL,
++};
++
++MODULE_DEVICE_TABLE(pcmcia, pcmcia_devices);
++
++static struct pcmcia_driver pcmcia_driver = {
++ .owner = THIS_MODULE,
++ .drv = {
++ .name = DRV_NAME,
++ },
++ .id_table = pcmcia_devices,
++ .probe = pcmcia_init_one,
++ .remove = pcmcia_remove_one,
++ .suspend = pcmcia_suspend,
++ .resume = pcmcia_resume,
++};
++
++static int __init pcmcia_init(void)
++{
++ return pcmcia_register_driver(&pcmcia_driver);
++}
++
++static void __exit pcmcia_exit(void)
++{
++ pcmcia_unregister_driver(&pcmcia_driver);
++}
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for PCMCIA ATA");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++module_init(pcmcia_init);
++module_exit(pcmcia_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_pdc2027x.c linux-2.6.16-rc6/drivers/scsi/pata_pdc2027x.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_pdc2027x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_pdc2027x.c 2006-01-21 16:56:47.000000000 +0000
+@@ -0,0 +1,857 @@
++/*
++ * Promise PATA TX2/TX4/TX2000/133 IDE driver for pdc20268 to pdc20277.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ *
++ * Ported to libata by:
++ * Albert Lee <albertcc@tw.ibm.com> IBM Corporation
++ *
++ * Copyright (C) 1998-2002 Andre Hedrick <andre@linux-ide.org>
++ * Portions Copyright (C) 1999 Promise Technology, Inc.
++ *
++ * Author: Frank Tiernan (frankt@promise.com)
++ * Released under terms of General Public License
++ *
++ *
++ * libata documentation is available via 'make {ps|pdf}docs',
++ * as Documentation/DocBook/libata.*
++ *
++ * Hardware information only available under NDA.
++ *
++ */
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi.h>
++#include <scsi/scsi_host.h>
++#include <scsi/scsi_cmnd.h>
++#include <linux/libata.h>
++#include <asm/io.h>
++
++#define DRV_NAME "pata_pdc2027x"
++#define DRV_VERSION "0.73"
++#undef PDC_DEBUG
++
++#ifdef PDC_DEBUG
++#define PDPRINTK(fmt, args...) printk(KERN_ERR "%s: " fmt, __FUNCTION__, ## args)
++#else
++#define PDPRINTK(fmt, args...)
++#endif
++
++enum {
++ PDC_UDMA_100 = 0,
++ PDC_UDMA_133 = 1,
++
++ PDC_100_MHZ = 100000000,
++ PDC_133_MHZ = 133333333,
++
++ PDC_SYS_CTL = 0x1100,
++ PDC_ATA_CTL = 0x1104,
++ PDC_GLOBAL_CTL = 0x1108,
++ PDC_CTCR0 = 0x110C,
++ PDC_CTCR1 = 0x1110,
++ PDC_BYTE_COUNT = 0x1120,
++ PDC_PLL_CTL = 0x1202,
++};
++
++static int pdc2027x_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
++static void pdc2027x_remove_one(struct pci_dev *pdev);
++static void pdc2027x_phy_reset(struct ata_port *ap);
++static void pdc2027x_set_piomode(struct ata_port *ap, struct ata_device *adev);
++static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev);
++static void pdc2027x_post_set_mode(struct ata_port *ap);
++static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc);
++
++/*
++ * ATA Timing Tables based on 133MHz controller clock.
++ * These tables are only used when the controller is in 133MHz clock.
++ * If the controller is in 100MHz clock, the ASIC hardware will
++ * set the timing registers automatically when "set feature" command
++ * is issued to the device. However, if the controller clock is 133MHz,
++ * the following tables must be used.
++ */
++static struct pdc2027x_pio_timing {
++ u8 value0, value1, value2;
++} pdc2027x_pio_timing_tbl [] = {
++ { 0xfb, 0x2b, 0xac }, /* PIO mode 0 */
++ { 0x46, 0x29, 0xa4 }, /* PIO mode 1 */
++ { 0x23, 0x26, 0x64 }, /* PIO mode 2 */
++ { 0x27, 0x0d, 0x35 }, /* PIO mode 3, IORDY on, Prefetch off */
++ { 0x23, 0x09, 0x25 }, /* PIO mode 4, IORDY on, Prefetch off */
++};
++
++static struct pdc2027x_mdma_timing {
++ u8 value0, value1;
++} pdc2027x_mdma_timing_tbl [] = {
++ { 0xdf, 0x5f }, /* MDMA mode 0 */
++ { 0x6b, 0x27 }, /* MDMA mode 1 */
++ { 0x69, 0x25 }, /* MDMA mode 2 */
++};
++
++static struct pdc2027x_udma_timing {
++ u8 value0, value1, value2;
++} pdc2027x_udma_timing_tbl [] = {
++ { 0x4a, 0x0f, 0xd5 }, /* UDMA mode 0 */
++ { 0x3a, 0x0a, 0xd0 }, /* UDMA mode 1 */
++ { 0x2a, 0x07, 0xcd }, /* UDMA mode 2 */
++ { 0x1a, 0x05, 0xcd }, /* UDMA mode 3 */
++ { 0x1a, 0x03, 0xcd }, /* UDMA mode 4 */
++ { 0x1a, 0x02, 0xcb }, /* UDMA mode 5 */
++ { 0x1a, 0x01, 0xcb }, /* UDMA mode 6 */
++};
++
++static const struct pci_device_id pdc2027x_pci_tbl[] = {
++#ifdef ATA_ENABLE_PATA
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20268, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_100 },
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20269, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_133 },
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20270, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_100 },
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20271, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_133 },
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20275, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_133 },
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20276, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_133 },
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20277, PCI_ANY_ID, PCI_ANY_ID, 0, 0, PDC_UDMA_133 },
++#endif
++ { } /* terminate list */
++};
++
++static struct pci_driver pdc2027x_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = pdc2027x_pci_tbl,
++ .probe = pdc2027x_init_one,
++ .remove = __devexit_p(pdc2027x_remove_one),
++};
++
++static struct scsi_host_template pdc2027x_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++};
++
++static struct ata_port_operations pdc2027x_pata100_ops = {
++ .port_disable = ata_port_disable,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = pdc2027x_phy_reset,
++
++ .check_atapi_dma = pdc2027x_check_atapi_dma,
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_mmio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static struct ata_port_operations pdc2027x_pata133_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = pdc2027x_set_piomode,
++ .set_dmamode = pdc2027x_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = pdc2027x_phy_reset,
++ .post_set_mode = pdc2027x_post_set_mode,
++
++ .check_atapi_dma = pdc2027x_check_atapi_dma,
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_mmio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static struct ata_port_info pdc2027x_port_info[] = {
++ /* PDC_UDMA_100 */
++ {
++ .sht = &pdc2027x_sht,
++ .host_flags = ATA_FLAG_NO_LEGACY | ATA_FLAG_SLAVE_POSS |
++ ATA_FLAG_SRST | ATA_FLAG_MMIO,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma0-2 */
++ .udma_mask = ATA_UDMA5, /* udma0-5 */
++ .port_ops = &pdc2027x_pata100_ops,
++ },
++ /* PDC_UDMA_133 */
++ {
++ .sht = &pdc2027x_sht,
++ .host_flags = ATA_FLAG_NO_LEGACY | ATA_FLAG_SLAVE_POSS |
++ ATA_FLAG_SRST | ATA_FLAG_MMIO,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma0-2 */
++ .udma_mask = ATA_UDMA6, /* udma0-6 */
++ .port_ops = &pdc2027x_pata133_ops,
++ },
++};
++
++MODULE_AUTHOR("Andre Hedrick, Frank Tiernan, Albert Lee");
++MODULE_DESCRIPTION("libata driver module for Promise PDC20268 to PDC20277");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++MODULE_DEVICE_TABLE(pci, pdc2027x_pci_tbl);
++
++/**
++ * port_mmio - Get the MMIO address of PDC2027x extended registers
++ * @ap: Port
++ * @offset: offset from mmio base
++ */
++static inline void* port_mmio(struct ata_port *ap, unsigned int offset)
++{
++ return ap->host_set->mmio_base + ap->port_no * 0x100 + offset;
++}
++
++/**
++ * dev_mmio - Get the MMIO address of PDC2027x extended registers
++ * @ap: Port
++ * @adev: device
++ * @offset: offset from mmio base
++ */
++static inline void* dev_mmio(struct ata_port *ap, struct ata_device *adev, unsigned int offset)
++{
++ u8 adj = (adev->devno) ? 0x08 : 0x00;
++ return port_mmio(ap, offset) + adj;
++}
++
++/**
++ * pdc2027x_pata_cbl_detect - Probe host controller cable detect info
++ * @ap: Port for which cable detect info is desired
++ *
++ * Read 80c cable indicator from Promise extended register.
++ * This register is latched when the system is reset.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++static void pdc2027x_cbl_detect(struct ata_port *ap)
++{
++ u32 cgcr;
++
++ /* check cable detect results */
++ cgcr = readl(port_mmio(ap, PDC_GLOBAL_CTL));
++ if (cgcr & (1 << 26))
++ goto cbl40;
++
++ PDPRINTK("No cable or 80-conductor cable on port %d\n", ap->port_no);
++
++ ap->cbl = ATA_CBL_PATA80;
++ return;
++
++cbl40:
++ printk(KERN_INFO DRV_NAME ": 40-conductor cable detected on port %d\n", ap->port_no);
++ ap->cbl = ATA_CBL_PATA40;
++ ap->udma_mask &= ATA_UDMA_MASK_40C;
++}
++
++/**
++ * pdc2027x_port_enabled - Check PDC ATA control register to see whether the port is enabled.
++ * @ap: Port to check
++ */
++static inline int pdc2027x_port_enabled(struct ata_port *ap)
++{
++ return readb(port_mmio(ap, PDC_ATA_CTL)) & 0x02;
++}
++
++/**
++ * pdc2027x_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * Probe PATA phy.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++static void pdc2027x_phy_reset(struct ata_port *ap)
++{
++ /* Check whether port enabled */
++ if (!pdc2027x_port_enabled(ap)) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++
++ pdc2027x_cbl_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * pdc2027x_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port to configure
++ * @adev: um
++ * @pio: PIO mode, 0 - 4
++ *
++ * Set PIO mode for device.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++static void pdc2027x_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int pio = adev->pio_mode - XFER_PIO_0;
++ u32 ctcr0, ctcr1;
++
++ PDPRINTK("adev->pio_mode[%X]\n", adev->pio_mode);
++
++ /* Sanity check */
++ if (pio > 4) {
++ printk(KERN_ERR DRV_NAME ": Unknown pio mode [%d] ignored\n", pio);
++ return;
++
++ }
++
++ /* Set the PIO timing registers using value table for 133MHz */
++ PDPRINTK("Set pio regs... \n");
++
++ ctcr0 = readl(dev_mmio(ap, adev, PDC_CTCR0));
++ ctcr0 &= 0xffff0000;
++ ctcr0 |= pdc2027x_pio_timing_tbl[pio].value0 |
++ (pdc2027x_pio_timing_tbl[pio].value1 << 8);
++ writel(ctcr0, dev_mmio(ap, adev, PDC_CTCR0));
++
++ ctcr1 = readl(dev_mmio(ap, adev, PDC_CTCR1));
++ ctcr1 &= 0x00ffffff;
++ ctcr1 |= (pdc2027x_pio_timing_tbl[pio].value2 << 24);
++ writel(ctcr1, dev_mmio(ap, adev, PDC_CTCR1));
++
++ PDPRINTK("Set pio regs done\n");
++
++ PDPRINTK("Set to pio mode[%u] \n", pio);
++}
++
++/**
++ * pdc2027x_set_dmamode - Initialize host controller PATA UDMA timings
++ * @ap: Port to configure
++ * @adev: um
++ * @udma: udma mode, XFER_UDMA_0 to XFER_UDMA_6
++ *
++ * Set UDMA mode for device.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++static void pdc2027x_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int dma_mode = adev->dma_mode;
++ u32 ctcr0, ctcr1;
++
++ if ((dma_mode >= XFER_UDMA_0) &&
++ (dma_mode <= XFER_UDMA_6)) {
++ /* Set the UDMA timing registers with value table for 133MHz */
++ unsigned int udma_mode = dma_mode & 0x07;
++
++ if (dma_mode == XFER_UDMA_2) {
++ /*
++ * Turn off tHOLD.
++ * If tHOLD is '1', the hardware will add half clock for data hold time.
++ * This code segment seems to be no effect. tHOLD will be overwritten below.
++ */
++ ctcr1 = readl(dev_mmio(ap, adev, PDC_CTCR1));
++ writel(ctcr1 & ~(1 << 7), dev_mmio(ap, adev, PDC_CTCR1));
++ }
++
++ PDPRINTK("Set udma regs... \n");
++
++ ctcr1 = readl(dev_mmio(ap, adev, PDC_CTCR1));
++ ctcr1 &= 0xff000000;
++ ctcr1 |= pdc2027x_udma_timing_tbl[udma_mode].value0 |
++ (pdc2027x_udma_timing_tbl[udma_mode].value1 << 8) |
++ (pdc2027x_udma_timing_tbl[udma_mode].value2 << 16);
++ writel(ctcr1, dev_mmio(ap, adev, PDC_CTCR1));
++
++ PDPRINTK("Set udma regs done\n");
++
++ PDPRINTK("Set to udma mode[%u] \n", udma_mode);
++
++ } else if ((dma_mode >= XFER_MW_DMA_0) &&
++ (dma_mode <= XFER_MW_DMA_2)) {
++ /* Set the MDMA timing registers with value table for 133MHz */
++ unsigned int mdma_mode = dma_mode & 0x07;
++
++ PDPRINTK("Set mdma regs... \n");
++ ctcr0 = readl(dev_mmio(ap, adev, PDC_CTCR0));
++
++ ctcr0 &= 0x0000ffff;
++ ctcr0 |= (pdc2027x_mdma_timing_tbl[mdma_mode].value0 << 16) |
++ (pdc2027x_mdma_timing_tbl[mdma_mode].value1 << 24);
++
++ writel(ctcr0, dev_mmio(ap, adev, PDC_CTCR0));
++ PDPRINTK("Set mdma regs done\n");
++
++ PDPRINTK("Set to mdma mode[%u] \n", mdma_mode);
++ } else {
++ printk(KERN_ERR DRV_NAME ": Unknown dma mode [%u] ignored\n", dma_mode);
++ }
++}
++
++/**
++ * pdc2027x_post_set_mode - Set the timing registers back to correct values.
++ * @ap: Port to configure
++ *
++ * The pdc2027x hardware will look at "SET FEATURES" and change the timing registers
++ * automatically. The values set by the hardware might be incorrect, under 133Mhz PLL.
++ * This function overwrites the possibly incorrect values set by the hardware to be correct.
++ */
++static void pdc2027x_post_set_mode(struct ata_port *ap)
++{
++ int i;
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *dev = &ap->device[i];
++
++ if (ata_dev_present(dev)) {
++
++ pdc2027x_set_piomode(ap, dev);
++
++ /*
++ * Enable prefetch if the device support PIO only.
++ */
++ if (dev->xfer_shift == ATA_SHIFT_PIO) {
++ u32 ctcr1 = readl(dev_mmio(ap, dev, PDC_CTCR1));
++ ctcr1 |= (1 << 25);
++ writel(ctcr1, dev_mmio(ap, dev, PDC_CTCR1));
++
++ PDPRINTK("Turn on prefetch\n");
++ } else {
++ pdc2027x_set_dmamode(ap, dev);
++ }
++ }
++ }
++}
++
++/**
++ * pdc2027x_check_atapi_dma - Check whether ATAPI DMA can be supported for this command
++ * @qc: Metadata associated with taskfile to check
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ *
++ * RETURNS: 0 when ATAPI DMA can be used
++ * 1 otherwise
++ */
++static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc)
++{
++ struct scsi_cmnd *cmd = qc->scsicmd;
++ u8 *scsicmd = cmd->cmnd;
++ int rc = 1; /* atapi dma off by default */
++
++ /*
++ * This workaround is from Promise's GPL driver.
++ * If ATAPI DMA is used for commands not in the
++ * following white list, say MODE_SENSE and REQUEST_SENSE,
++ * pdc2027x might hit the irq lost problem.
++ */
++ switch (scsicmd[0]) {
++ case READ_10:
++ case WRITE_10:
++ case READ_12:
++ case WRITE_12:
++ case READ_6:
++ case WRITE_6:
++ case 0xad: /* READ_DVD_STRUCTURE */
++ case 0xbe: /* READ_CD */
++ /* ATAPI DMA is ok */
++ rc = 0;
++ break;
++ default:
++ ;
++ }
++
++ return rc;
++}
++
++/**
++ * pdc_read_counter - Read the ctr counter
++ * @probe_ent: for the port address
++ */
++
++static long pdc_read_counter(struct ata_probe_ent *probe_ent)
++{
++ long counter;
++ int retry = 1;
++ u32 bccrl, bccrh, bccrlv, bccrhv;
++
++retry:
++ bccrl = readl(probe_ent->mmio_base + PDC_BYTE_COUNT) & 0xffff;
++ bccrh = readl(probe_ent->mmio_base + PDC_BYTE_COUNT + 0x100) & 0xffff;
++ rmb();
++
++ /* Read the counter values again for verification */
++ bccrlv = readl(probe_ent->mmio_base + PDC_BYTE_COUNT) & 0xffff;
++ bccrhv = readl(probe_ent->mmio_base + PDC_BYTE_COUNT + 0x100) & 0xffff;
++ rmb();
++
++ counter = (bccrh << 15) | bccrl;
++
++ PDPRINTK("bccrh [%X] bccrl [%X]\n", bccrh, bccrl);
++ PDPRINTK("bccrhv[%X] bccrlv[%X]\n", bccrhv, bccrlv);
++
++ /*
++ * The 30-bit decreasing counter are read by 2 pieces.
++ * Incorrect value may be read when both bccrh and bccrl are changing.
++ * Ex. When 7900 decrease to 78FF, wrong value 7800 might be read.
++ */
++ if (retry && !(bccrh == bccrhv && bccrl >= bccrlv)) {
++ retry--;
++ PDPRINTK("rereading counter\n");
++ goto retry;
++ }
++
++ return counter;
++}
++
++/**
++ * adjust_pll - Adjust the PLL input clock in Hz.
++ *
++ * @pdc_controller: controller specific information
++ * @probe_ent: For the port address
++ * @pll_clock: The input of PLL in HZ
++ */
++static void pdc_adjust_pll(struct ata_probe_ent *probe_ent, long pll_clock, unsigned int board_idx)
++{
++
++ u16 pll_ctl;
++ long pll_clock_khz = pll_clock / 1000;
++ long pout_required = board_idx? PDC_133_MHZ:PDC_100_MHZ;
++ long ratio = pout_required / pll_clock_khz;
++ int F, R;
++
++ /* Sanity check */
++ if (unlikely(pll_clock_khz < 5000L || pll_clock_khz > 70000L)) {
++ printk(KERN_ERR DRV_NAME ": Invalid PLL input clock %ldkHz, give up!\n", pll_clock_khz);
++ return;
++ }
++
++#ifdef PDC_DEBUG
++ PDPRINTK("pout_required is %ld\n", pout_required);
++
++ /* Show the current clock value of PLL control register
++ * (maybe already configured by the firmware)
++ */
++ pll_ctl = readw(probe_ent->mmio_base + PDC_PLL_CTL);
++
++ PDPRINTK("pll_ctl[%X]\n", pll_ctl);
++#endif
++
++ /*
++ * Calculate the ratio of F, R and OD
++ * POUT = (F + 2) / (( R + 2) * NO)
++ */
++ if (ratio < 8600L) { /* 8.6x */
++ /* Using NO = 0x01, R = 0x0D */
++ R = 0x0d;
++ } else if (ratio < 12900L) { /* 12.9x */
++ /* Using NO = 0x01, R = 0x08 */
++ R = 0x08;
++ } else if (ratio < 16100L) { /* 16.1x */
++ /* Using NO = 0x01, R = 0x06 */
++ R = 0x06;
++ } else if (ratio < 64000L) { /* 64x */
++ R = 0x00;
++ } else {
++ /* Invalid ratio */
++ printk(KERN_ERR DRV_NAME ": Invalid ratio %ld, give up!\n", ratio);
++ return;
++ }
++
++ F = (ratio * (R+2)) / 1000 - 2;
++
++ if (unlikely(F < 0 || F > 127)) {
++ /* Invalid F */
++ printk(KERN_ERR DRV_NAME ": F[%d] invalid!\n", F);
++ return;
++ }
++
++ PDPRINTK("F[%d] R[%d] ratio*1000[%ld]\n", F, R, ratio);
++
++ pll_ctl = (R << 8) | F;
++
++ PDPRINTK("Writing pll_ctl[%X]\n", pll_ctl);
++
++ writew(pll_ctl, probe_ent->mmio_base + PDC_PLL_CTL);
++ readw(probe_ent->mmio_base + PDC_PLL_CTL); /* flush */
++
++ /* Wait the PLL circuit to be stable */
++ mdelay(30);
++
++#ifdef PDC_DEBUG
++ /*
++ * Show the current clock value of PLL control register
++ * (maybe configured by the firmware)
++ */
++ pll_ctl = readw(probe_ent->mmio_base + PDC_PLL_CTL);
++
++ PDPRINTK("pll_ctl[%X]\n", pll_ctl);
++#endif
++
++ return;
++}
++
++/**
++ * detect_pll_input_clock - Detect the PLL input clock in Hz.
++ * @probe_ent: for the port address
++ * Ex. 16949000 on 33MHz PCI bus for pdc20275.
++ * Half of the PCI clock.
++ */
++static long pdc_detect_pll_input_clock(struct ata_probe_ent *probe_ent)
++{
++ u32 scr;
++ long start_count, end_count;
++ long pll_clock;
++
++ /* Read current counter value */
++ start_count = pdc_read_counter(probe_ent);
++
++ /* Start the test mode */
++ scr = readl(probe_ent->mmio_base + PDC_SYS_CTL);
++ PDPRINTK("scr[%X]\n", scr);
++ writel(scr | (0x01 << 14), probe_ent->mmio_base + PDC_SYS_CTL);
++ readl(probe_ent->mmio_base + PDC_SYS_CTL); /* flush */
++
++ /* Let the counter run for 100 ms. */
++ mdelay(100);
++
++ /* Read the counter values again */
++ end_count = pdc_read_counter(probe_ent);
++
++ /* Stop the test mode */
++ scr = readl(probe_ent->mmio_base + PDC_SYS_CTL);
++ PDPRINTK("scr[%X]\n", scr);
++ writel(scr & ~(0x01 << 14), probe_ent->mmio_base + PDC_SYS_CTL);
++ readl(probe_ent->mmio_base + PDC_SYS_CTL); /* flush */
++
++ /* calculate the input clock in Hz */
++ pll_clock = (start_count - end_count) * 10;
++
++ PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count);
++ PDPRINTK("PLL input clock[%ld]Hz\n", pll_clock);
++
++ return pll_clock;
++}
++
++/**
++ * pdc_hardware_init - Initialize the hardware.
++ * @pdev: instance of pci_dev found
++ * @pdc_controller: controller specific information
++ * @pe: for the port address
++ */
++static int pdc_hardware_init(struct pci_dev *pdev, struct ata_probe_ent *pe, unsigned int board_idx)
++{
++ long pll_clock;
++
++ /*
++ * Detect PLL input clock rate.
++ * On some system, where PCI bus is running at non-standard clock rate.
++ * Ex. 25MHz or 40MHz, we have to adjust the cycle_time.
++ * The pdc20275 controller employs PLL circuit to help correct timing registers setting.
++ */
++ pll_clock = pdc_detect_pll_input_clock(pe);
++
++ if (pll_clock < 0) /* counter overflow? Try again. */
++ pll_clock = pdc_detect_pll_input_clock(pe);
++
++ dev_printk(KERN_INFO, &pdev->dev, "PLL input clock %ld kHz\n", pll_clock/1000);
++
++ /* Adjust PLL control register */
++ pdc_adjust_pll(pe, pll_clock, board_idx);
++
++ return 0;
++}
++
++/**
++ * pdc_ata_setup_port - setup the mmio address
++ * @port: ata ioports to setup
++ * @base: base address
++ */
++static void pdc_ata_setup_port(struct ata_ioports *port, unsigned long base)
++{
++ port->cmd_addr =
++ port->data_addr = base;
++ port->feature_addr =
++ port->error_addr = base + 0x05;
++ port->nsect_addr = base + 0x0a;
++ port->lbal_addr = base + 0x0f;
++ port->lbam_addr = base + 0x10;
++ port->lbah_addr = base + 0x15;
++ port->device_addr = base + 0x1a;
++ port->command_addr =
++ port->status_addr = base + 0x1f;
++ port->altstatus_addr =
++ port->ctl_addr = base + 0x81a;
++}
++
++/**
++ * pdc2027x_init_one - PCI probe function
++ * Called when an instance of PCI adapter is inserted.
++ * This function checks whether the hardware is supported,
++ * initialize hardware and register an instance of ata_host_set to
++ * libata by providing struct ata_probe_ent and ata_device_add().
++ * (implements struct pci_driver.probe() )
++ *
++ * @pdev: instance of pci_dev found
++ * @ent: matching entry in the id_tbl[]
++ */
++static int __devinit pdc2027x_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ unsigned int board_idx = (unsigned int) ent->driver_data;
++
++ struct ata_probe_ent *probe_ent = NULL;
++ unsigned long base;
++ void *mmio_base;
++ int rc;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
++
++ rc = pci_enable_device(pdev);
++ if (rc)
++ return rc;
++
++ rc = pci_request_regions(pdev, DRV_NAME);
++ if (rc)
++ goto err_out;
++
++ rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
++ if (rc)
++ goto err_out_regions;
++
++ rc = pci_set_consistent_dma_mask(pdev, ATA_DMA_MASK);
++ if (rc)
++ goto err_out_regions;
++
++ /* Prepare the probe entry */
++ probe_ent = kmalloc(sizeof(*probe_ent), GFP_KERNEL);
++ if (probe_ent == NULL) {
++ rc = -ENOMEM;
++ goto err_out_regions;
++ }
++
++ memset(probe_ent, 0, sizeof(*probe_ent));
++ probe_ent->dev = pci_dev_to_dev(pdev);
++ INIT_LIST_HEAD(&probe_ent->node);
++
++ mmio_base = ioremap(pci_resource_start(pdev, 5),
++ pci_resource_len(pdev, 5));
++
++ if (mmio_base == NULL) {
++ rc = -ENOMEM;
++ goto err_out_free_ent;
++ }
++
++ base = (unsigned long) mmio_base;
++
++ probe_ent->sht = pdc2027x_port_info[board_idx].sht;
++ probe_ent->host_flags = pdc2027x_port_info[board_idx].host_flags;
++ probe_ent->pio_mask = pdc2027x_port_info[board_idx].pio_mask;
++ probe_ent->mwdma_mask = pdc2027x_port_info[board_idx].mwdma_mask;
++ probe_ent->udma_mask = pdc2027x_port_info[board_idx].udma_mask;
++ probe_ent->port_ops = pdc2027x_port_info[board_idx].port_ops;
++
++ probe_ent->irq = pdev->irq;
++ probe_ent->irq_flags = SA_SHIRQ;
++ probe_ent->mmio_base = mmio_base;
++
++ pdc_ata_setup_port(&probe_ent->port[0], base + 0x17c0);
++ probe_ent->port[0].bmdma_addr = base + 0x1000;
++ pdc_ata_setup_port(&probe_ent->port[1], base + 0x15c0);
++ probe_ent->port[1].bmdma_addr = base + 0x1008;
++
++ probe_ent->n_ports = 2;
++
++ pci_set_master(pdev);
++ //pci_enable_intx(pdev);
++
++ /* initialize adapter */
++ if (pdc_hardware_init(pdev, probe_ent, board_idx) != 0)
++ goto err_out_free_ent;
++
++ ata_device_add(probe_ent);
++ kfree(probe_ent);
++
++ return 0;
++
++err_out_free_ent:
++ kfree(probe_ent);
++err_out_regions:
++ pci_release_regions(pdev);
++err_out:
++ pci_disable_device(pdev);
++ return rc;
++}
++
++/**
++ * pdc2027x_remove_one - Called to remove a single instance of the
++ * adapter.
++ *
++ * @dev: The PCI device to remove.
++ * FIXME: module load/unload not working yet
++ */
++static void __devexit pdc2027x_remove_one(struct pci_dev *pdev)
++{
++ ata_pci_remove_one(pdev);
++}
++
++/**
++ * pdc2027x_init - Called after this module is loaded into the kernel.
++ */
++static int __init pdc2027x_init(void)
++{
++ return pci_register_driver(&pdc2027x_pci_driver);
++}
++
++/**
++ * pdc2027x_exit - Called before this module unloaded from the kernel
++ */
++static void __exit pdc2027x_exit(void)
++{
++ pci_unregister_driver(&pdc2027x_pci_driver);
++}
++
++module_init(pdc2027x_init);
++module_exit(pdc2027x_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_pdc202xx_old.c linux-2.6.16-rc6/drivers/scsi/pata_pdc202xx_old.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_pdc202xx_old.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_pdc202xx_old.c 2006-02-20 13:19:57.000000000 +0000
+@@ -0,0 +1,428 @@
++/*
++ * pata_pdc202xx_old.c - SL82C105 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based in part on linux/drivers/ide/pci/pdc202xx_old.c
++ *
++ * Initial revision
++ *
++ * TODO:
++ * Channel interlock/reset on both required ?
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_pdc202xx_old"
++#define DRV_VERSION "0.1.2"
++
++static void pdc2024x_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++
++static void pdc2026x_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u16 cis;
++
++ pci_read_config_word(pdev, 0x50, &cis);
++ if (cis & (1 << (10 + ap->hard_port_no)))
++ ap->cbl = ATA_CBL_PATA80;
++ else
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++
++/**
++ * pdc_configure_piomode - set chip PIO timing
++ * @ap: ATA interface
++ * @adev: ATA device
++ * @pio: PIO mode
++ *
++ * Called to do the PIO mode setup. Our timing registers are shared
++ * so a configure_dmamode call will undo any work we do here and vice
++ * versa
++ */
++
++static void pdc_configure_piomode(struct ata_port *ap, struct ata_device *adev, int pio)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int port = 0x60 + 4 * ap->hard_port_no + 2 * adev->devno;
++ static u16 pio_timing[5] = {
++ 0x0913, 0x050C , 0x0308, 0x0206, 0x0104
++ };
++ u8 r_ap, r_bp;
++
++ /* FIFO, IORDY ? */
++ pci_read_config_byte(pdev, port, &r_ap);
++ pci_read_config_byte(pdev, port + 1, &r_bp);
++ r_ap &= ~0x0F;
++ r_bp &= ~0x07;
++ r_ap |= (pio_timing[pio] >> 8);
++ r_bp |= (pio_timing[pio] & 0xFF);
++ pci_write_config_byte(pdev, port, r_ap);
++ pci_write_config_byte(pdev, port + 1, r_bp);
++}
++
++/**
++ * pdc_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup. Our timing registers are shared
++ * but we want to set the PIO timing by default.
++ */
++
++static void pdc_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ pdc_configure_piomode(ap, adev, adev->pio_mode - XFER_PIO_0);
++}
++
++/**
++ * pdc_configure_dmamode - set DMA mode in chip
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Load DMA cycle times into the chip ready for a DMA transfer
++ * to occur.
++ */
++
++static void pdc_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int port = 0x60 + 4 * ap->hard_port_no + 2 * adev->devno;
++ static u8 udma_timing[6][2] = {
++ { 0x60, 0x03 }, /* 33 Mhz Clock */
++ { 0x40, 0x02 },
++ { 0x20, 0x01 },
++ { 0x40, 0x02 }, /* 66 Mhz Clock */
++ { 0x20, 0x01 },
++ { 0x20, 0x01 }
++ };
++ u8 r_bp, r_cp;
++
++ pci_read_config_byte(pdev, port + 1, &r_bp);
++ pci_read_config_byte(pdev, port + 2, &r_cp);
++
++ r_bp &= ~0xF0;
++ r_cp &= ~0x0F;
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ int speed = adev->dma_mode - XFER_UDMA_0;
++ r_bp |= udma_timing[speed][0];
++ r_cp |= udma_timing[speed][1];
++
++ } else {
++ int speed = adev->dma_mode - XFER_MW_DMA_0;
++ r_bp |= 0x60;
++ r_cp |= (5 - speed);
++ }
++ pci_write_config_byte(pdev, port + 1, r_bp);
++ pci_write_config_byte(pdev, port + 2, r_cp);
++
++}
++
++/**
++ * pdc2026x_reset_engine - Reset the DMA engine
++ * @ap: ATA interface
++ *
++ * Reset the 2026x DMA engine. This is not something we want to do,
++ * and we need to figure out how to serialize this across dual channel
++ * devices if it is neccessary.
++ *
++ * FIXME: Do we need to reset the other interface too ?
++ */
++
++static void pdc2026x_reset_engine(struct ata_port *ap)
++{
++ unsigned long ctrl = ap->host_set->ports[0]->ioaddr.bmdma_addr + 0x1F;
++
++ u8 val = inb(ctrl);
++ outb(val | 0x10, ctrl);
++ mdelay(100);
++ outb(val & ~0x10, ctrl);
++ mdelay(2000); /* Check - seems to be overkill, plus if needed
++ redo locking */
++ /* Need to fix up speed info at this point */
++}
++
++/**
++ * pdc2026x_bmdma_start - DMA engine begin
++ * @qc: ATA command
++ *
++ * In UDMA3 or higher we have to clock switch for the duration of the
++ * DMA transfer sequence.
++ */
++
++static void pdc2026x_bmdma_start(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ int sel66 = ap->hard_port_no ? 0x08: 0x02;
++ /* The clock bits are in the same register for both channels */
++ unsigned long clock = ap->host_set->ports[0]->ioaddr.bmdma_addr + 0x11;
++
++ /* Check we keep host_set level locking here */
++ if (adev->dma_mode >= XFER_UDMA_2)
++ outb(inb(clock) | sel66, clock);
++ else
++ outb(inb(clock) & ~sel66, clock);
++ /* The DMA clocks may have been trashed by a reset. FIXME: make conditional
++ and move to qc_issue ? */
++ pdc_set_dmamode(ap, qc->dev);
++ /* Activate DMA */
++ ata_bmdma_start(qc);
++}
++
++/**
++ * pdc2026x_bmdma_end - DMA engine stop
++ * @qc: ATA command
++ *
++ * After a DMA completes we need to put the clock back to 33MHz for
++ * PIO timings.
++ */
++
++static void pdc2026x_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ int sel66 = ap->hard_port_no ? 0x08: 0x02;
++ /* The clock bits are in the same register for both channels */
++ unsigned long clock = ap->host_set->ports[0]->ioaddr.bmdma_addr + 0x11;
++
++ /* FIXME: Review LBA48 code in ide/pci driver */
++ ata_bmdma_stop(qc);
++ /* Check we keep host_set level locking here */
++ /* Flip back to 33Mhz for PIO */
++ if (adev->dma_mode >= XFER_UDMA_2)
++ outb(inb(clock) & ~sel66, clock);
++}
++
++/**
++ * pdc2026x_eng_timeout - command timeout
++ * @qc: command that timed out
++ *
++ * When the PDC2026x times out hit the controller over the head
++ * with a hammer before continuing. The reset unfortunately also
++ * resets the timing registers so we must reprogram these.
++ */
++
++static void pdc2026x_eng_timeout(struct ata_port *ap)
++{
++ int i;
++
++ /* Perform libata side housekeeping */
++ ata_eng_timeout(ap);
++
++ /* Reset the controller */
++ pdc2026x_reset_engine(ap);
++
++ /* Reprogram the device timings */
++ for (i = 0; i < 2; i++) {
++ struct ata_device *adev = &ap->device[i];
++ if (ata_dev_present(adev)) {
++ pdc_set_piomode(ap, adev);
++ if (adev->dma_mode)
++ pdc_set_dmamode(ap, adev);
++ }
++ }
++}
++
++/**
++ * pdc2026x_dev_config - device setup hook
++ * @ap: ATA port
++ * @adev: newly found device
++ *
++ * Perform chip specific early setup. We need to lock the transfer
++ * sizes to 8bit to avoid making the state engine on the 2026x cards
++ * barf.
++ */
++
++static void pdc2026x_dev_config(struct ata_port *ap, struct ata_device *adev)
++{
++ /* We cannot blindly set 256 as the core code may already
++ have picked a lower limit */
++
++ if(ap->host->max_sectors > 256) {
++ ap->host->max_sectors = 256;
++ ap->host->hostt->max_sectors = 256;
++ }
++ adev->flags |= ATA_DFLAG_LOCK_SECTORS;
++}
++
++static struct scsi_host_template pdc_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations pdc2024x_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = pdc_set_piomode,
++ .set_dmamode = pdc_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = pdc2024x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations pdc2026x_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = pdc_set_piomode,
++ .set_dmamode = pdc_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++ .dev_config = pdc2026x_dev_config,
++
++ .phy_reset = pdc2026x_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = pdc2026x_bmdma_start,
++ .bmdma_stop = pdc2026x_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = pdc2026x_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int pdc_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info[3] = {
++ {
++ .sht = &pdc_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA2,
++ .port_ops = &pdc2024x_port_ops
++ },
++ {
++ .sht = &pdc_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA4,
++ .port_ops = &pdc2026x_port_ops
++ },
++ {
++ .sht = &pdc_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &pdc2026x_port_ops
++ }
++
++ };
++ static struct ata_port_info *port_info[2];
++
++ port_info[0] = port_info[1] = &info[id->driver_data];
++
++ if (dev->device == PCI_DEVICE_ID_PROMISE_20265) {
++ struct pci_dev *bridge = dev->bus->self;
++ /* Don't grab anything behind a Promise I2O RAID */
++ if (bridge && bridge->vendor == PCI_VENDOR_ID_INTEL) {
++ if( bridge->device == PCI_DEVICE_ID_INTEL_I960)
++ return -ENODEV;
++ if( bridge->device == PCI_DEVICE_ID_INTEL_I960RM)
++ return -ENODEV;
++ }
++ }
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static struct pci_device_id pdc[] = {
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20246, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20262, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20263, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20265, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { PCI_VENDOR_ID_PROMISE, PCI_DEVICE_ID_PROMISE_20267, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { 0, },
++};
++
++static struct pci_driver pdc_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = pdc,
++ .probe = pdc_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init pdc_init(void)
++{
++ return pci_register_driver(&pdc_pci_driver);
++}
++
++
++static void __exit pdc_exit(void)
++{
++ pci_unregister_driver(&pdc_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Promise 2024x and 20262-20267");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, pdc);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(pdc_init);
++module_exit(pdc_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_qdi.c linux-2.6.16-rc6/drivers/scsi/pata_qdi.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_qdi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_qdi.c 2006-02-15 15:08:22.000000000 +0000
+@@ -0,0 +1,370 @@
++/*
++ * pata_qdi.c - QDI VLB ATA controllers
++ * (C) 2006 Red Hat <alan@redhat.com>
++ *
++ * This driver mostly exists as a proof of concept for non PCI devices under libata.
++ * While the QDI6580 was 'neat' in 1993 it is no longer terribly useful.
++ *
++ * Tuning code written from the documentation at
++ * http://www.ryston.cz/petr/vlb/qd6500.html
++ * http://www.ryston.cz/petr/vlb/qd6580.html
++ *
++ * Probe code based on drivers/ide/legacy/qd65xx.c
++ * Rewritten from the work of Colten Edwards <pje120@cs.usask.ca> by
++ * Samuel Thibault <samuel.thibault@fnac.net>
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_qdi"
++#define DRV_VERSION "0.2"
++
++#define NR_HOST 4 /* Two 6580s */
++
++struct qdi_data {
++ unsigned long timing;
++ u8 clock[2];
++ u8 last;
++ int fast;
++
++};
++
++static struct ata_host_set *qdi_host[NR_HOST];
++static struct qdi_data qdi_data[NR_HOST];
++static int nr_qdi_host = 0;
++
++static void qdi6500_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct ata_timing t;
++ struct qdi_data *qdi = ap->host_set->private_data;
++ int active, recovery;
++ u8 timing;
++
++ /* Get the timing data in cycles */
++ ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000);
++
++ if (qdi->fast) {
++ active = 8 - FIT(t.active, 1, 8);
++ recovery = 18 - FIT(t.recover, 3, 18);
++ } else {
++ active = 9 - FIT(t.active, 2, 9);
++ recovery = 15 - FIT(t.recover, 0, 15);
++ }
++ timing = (recovery << 4) | active | 0x08;
++
++ qdi->clock[adev->devno] = timing;
++
++ outb(timing, qdi->timing);
++}
++
++static void qdi6580_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct ata_timing t;
++ struct qdi_data *qdi = ap->host_set->private_data;
++ int active, recovery;
++ u8 timing;
++
++ /* Get the timing data in cycles */
++ ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000);
++
++ if (qdi->fast) {
++ active = 8 - FIT(t.active, 1, 8);
++ recovery = 18 - FIT(t.recover, 3, 18);
++ } else {
++ active = 9 - FIT(t.active, 2, 9);
++ recovery = 15 - FIT(t.recover, 0, 15);
++ }
++ timing = (recovery << 4) | active | 0x08;
++
++ qdi->clock[adev->devno] = timing;
++
++ outb(timing, qdi->timing);
++
++ /* Clear the FIFO */
++ if (adev->class != ATA_DEV_ATA)
++ outb(0x5F, (qdi->timing & 0xFFF0) + 3);
++}
++
++/**
++ * qdi_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings.
++ */
++
++static int qdi_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ struct qdi_data *qdi = ap->host_set->private_data;
++
++ if (qdi->clock[adev->devno] != qdi->last) {
++ if (adev->pio_mode) {
++ qdi->last = qdi->clock[adev->devno];
++ outb(qdi->clock[adev->devno], qdi->timing);
++ }
++ }
++ return ata_qc_issue_prot(qc);
++}
++
++static void qdi_data_xfer(struct ata_port *ap, struct ata_device *adev, unsigned char *buf, unsigned int buflen, int write_data)
++{
++ int slop = buflen & 3;
++
++ if (ata_id_has_dword_io(adev->id)) {
++ if (write_data)
++ outsl(ap->ioaddr.data_addr, buf, buflen >> 2);
++ else
++ insl(ap->ioaddr.data_addr, buf, buflen >> 2);
++
++ if (unlikely(slop)) {
++ u32 pad;
++ if (write_data) {
++ memcpy(&pad, buf + buflen - slop, slop);
++ outl(le32_to_cpu(pad), ap->ioaddr.data_addr);
++ } else {
++ pad = cpu_to_le16(inl(ap->ioaddr.data_addr));
++ memcpy(buf + buflen - slop, &pad, slop);
++ }
++ }
++ } else
++ ata_pio_data_xfer(ap, adev, buf, buflen, write_data);
++}
++
++static struct scsi_host_template qdi_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations qdi6500_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = qdi6500_set_piomode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = qdi_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = qdi_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations qdi6580_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = qdi6580_set_piomode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = qdi_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = qdi_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * qdi_init_one - attach a qdi interface
++ * @type: Type to display
++ * @io: I/O port start
++ * @irq: interrupt line
++ * @fast: True if on a > 33Mhz VLB
++ *
++ * Register an ISA bus IDE interface. Such interfaces are PIO and we
++ * assume do not support IRQ sharing.
++ */
++
++static __init int qdi_init_one(unsigned long port, int type, unsigned long io, int irq, int fast)
++{
++ struct ata_probe_ent ae;
++ int ret;
++
++ unsigned long ctrl = io + 0x206;
++
++ /*
++ * Fill in a probe structure first of all
++ */
++
++ memset(&ae, 0, sizeof(struct ata_probe_ent));
++ INIT_LIST_HEAD(&ae.node);
++ ae.dev = NULL;
++
++ if (type == 6580) {
++ ae.port_ops = &qdi6580_port_ops;
++ ae.pio_mask = 0x1F;
++ } else {
++ ae.port_ops = &qdi6500_port_ops;
++ ae.pio_mask = 0x07; /* Actually PIO3 !IORDY is possible */
++ }
++
++ ae.sht = &qdi_sht;
++ ae.n_ports = 1;
++ ae.irq = irq;
++ ae.irq_flags = 0;
++ ae.host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_IRQ_MASK;
++ ae.port[0].cmd_addr = io;
++ ae.port[0].altstatus_addr = ctrl;
++ ae.port[0].ctl_addr = ctrl;
++ ata_std_ports(&ae.port[0]);
++
++ /*
++ * Hook in a private data structure per channel
++ */
++ ae.private_data = &qdi_data[nr_qdi_host];
++
++ qdi_data[nr_qdi_host].timing = port;
++ qdi_data[nr_qdi_host].fast = fast;
++
++ printk(KERN_INFO DRV_NAME": qd%d at 0x%lx.\n", type, io);
++ ret = ata_device_add(&ae);
++ if (ret == 0)
++ return -ENODEV;
++
++ qdi_host[nr_qdi_host++] = ae.host_set;
++ return 0;
++}
++
++/**
++ * qdi_init - attach qdi interfaces
++ *
++ * Attach qdi IDE interfaces by scanning the ports it may occupy.
++ */
++
++static __init int qdi_init(void)
++{
++ unsigned long flags;
++ unsigned long qd_port[2] = { 0x30, 0xB0 };
++ unsigned long ide_port[2] = { 0x170, 0x1F0 };
++ int ide_irq[2] = { 14, 15 };
++ int ct = 0;
++ int i;
++
++ /*
++ * Check each possible QD65xx base address
++ */
++
++ for (i = 0; i < 2; i++) {
++ unsigned long port = qd_port[i];
++ u8 r, res;
++
++
++ if (request_region(port, 2, "pata_qdi")) {
++ /* Check for a card */
++ local_irq_save(flags);
++ r = inb_p(port);
++ outb_p(0x19, port);
++ res = inb_p(port);
++ outb_p(r, port);
++ local_irq_restore(flags);
++
++ /* Fail */
++ if (res == 0x19)
++ {
++ release_region(port, 2);
++ continue;
++ }
++
++ /* Passes the presence test */
++ r = inb_p(port + 1); /* Check port agrees with port set */
++ if ((r & 2) >> 1 != i) {
++ release_region(port, 2);
++ continue;
++ }
++
++ /* Check card type */
++ if ((r & 0xF0) == 0xC0) {
++ /* QD6500: single channel */
++ if (r & 8) {
++ /* Disabled ? */
++ release_region(port, 2);
++ continue;
++ }
++ ct += qdi_init_one(port, 6500, ide_port[r & 0x01], ide_irq[r & 0x01], r & 0x04);
++ }
++ if (((r & 0xF0) == 0xA0) || (r & 0xF0) == 0x50) {
++ /* QD6580: dual channel */
++ if (!request_region(port + 2 , 2, "pata_qdi"))
++ {
++ release_region(port, 2);
++ continue;
++ }
++ res = inb(port + 3);
++ if (res & 1) {
++ /* Single channel mode */
++ ct += qdi_init_one(port, 6580, ide_port[r & 0x01], ide_irq[r & 0x01], r & 0x04);
++ } else {
++ /* Dual channel mode */
++ ct += qdi_init_one(port, 6580, 0x1F0, 14, r & 0x04);
++ ct += qdi_init_one(port + 2, 6580, 0x170, 15, r & 0x04);
++ }
++ }
++ }
++ }
++ if (ct != 0)
++ return 0;
++ return -ENODEV;
++}
++
++static __exit void qdi_exit(void)
++{
++ int i;
++
++ for (i = 0; i < nr_qdi_host; i++) {
++ ata_host_set_remove(qdi_host[i]);
++ /* Free the control resource. The 6580 dual channel has the resources
++ * claimed as a pair of 2 byte resources so we need no special cases...
++ */
++ release_region(qdi_data[i].timing, 2);
++ }
++}
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for qdi ATA");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++module_init(qdi_init);
++module_exit(qdi_exit);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_radisys.c linux-2.6.16-rc6/drivers/scsi/pata_radisys.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_radisys.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_radisys.c 2006-02-17 15:31:12.000000000 +0000
+@@ -0,0 +1,321 @@
++/*
++ * pata_radisys.c - Intel PATA/SATA controllers
++ *
++ * (C) 2006 Red Hat <alan@redhat.com>
++ *
++ * Some parts based on ata_piix.c by Jeff Garzik and others.
++ *
++ * A PIIX relative, this device has a single ATA channel and no
++ * slave timings, SITRE or PPE. In that sense it is a close relative
++ * of the original PIIX. It does however support UDMA 33/66 per channel
++ * although no other modes/timings. Also lacking is 32bit I/O on the ATA
++ * port.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/ata.h>
++
++#define DRV_NAME "pata_radisys"
++#define DRV_VERSION "0.2"
++
++/**
++ * radisys_pata_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void radisys_pata_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA80;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * radisys_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: um
++ *
++ * Set PIO mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void radisys_set_piomode (struct ata_port *ap, struct ata_device *adev)
++{
++ unsigned int pio = adev->pio_mode - XFER_PIO_0;
++ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
++ u16 idetm_data;
++ int control = 0;
++
++ /*
++ * See Intel Document 298600-004 for the timing programing rules
++ * for PIIX/ICH. Note that the early PIIX does not have the slave
++ * timing port at 0x44. The Radisys is a relative of the PIIX
++ * but not the same so be careful.
++ */
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 }, /* Check me */
++ { 0, 0 },
++ { 1, 1 },
++ { 2, 2 },
++ { 3, 3 }, };
++
++ if (pio > 0)
++ control |= 1; /* TIME1 enable */
++ if (ata_pio_need_iordy(adev))
++ control |= 2; /* IE IORDY */
++
++ pci_read_config_word(dev, 0x40, &idetm_data);
++
++ /* Enable IE and TIME as appropriate. Clear the other
++ drive timing bits */
++ idetm_data &= 0xCCCC;
++ idetm_data |= (control << (4 * adev->devno));
++ idetm_data |= (timings[pio][0] << 12) |
++ (timings[pio][1] << 8);
++ pci_write_config_word(dev, 0x40, idetm_data);
++
++ /* Track which port is configured */
++ ap->private_data = adev;
++}
++
++/**
++ * radisys_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ * @isich: True if the device is an ICH and has IOCFG registers
++ *
++ * Set MWDMA mode for device, in host controller PCI config space.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void radisys_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *dev = to_pci_dev(ap->host_set->dev);
++ u16 idetm_data;
++ u8 udma_enable;
++
++ static const /* ISP RTC */
++ u8 timings[][2] = { { 0, 0 },
++ { 0, 0 },
++ { 1, 1 },
++ { 2, 2 },
++ { 3, 3 }, };
++
++ /*
++ * MWDMA is driven by the PIO timings. We must also enable
++ * IORDY unconditionally.
++ */
++
++ pci_read_config_word(dev, 0x40, &idetm_data);
++ pci_read_config_byte(dev, 0x48, &udma_enable);
++
++ if (adev->dma_mode < XFER_UDMA_0) {
++ unsigned int mwdma = adev->dma_mode - XFER_MW_DMA_0;
++ const unsigned int needed_pio[3] = {
++ XFER_PIO_0, XFER_PIO_3, XFER_PIO_4
++ };
++ int pio = needed_pio[mwdma] - XFER_PIO_0;
++ int control = 3; /* IORDY|TIME0 */
++
++ /* If the drive MWDMA is faster than it can do PIO then
++ we must force PIO0 for PIO cycles. */
++
++ if (adev->pio_mode < needed_pio[mwdma])
++ control = 1;
++
++ /* Mask out the relevant control and timing bits we will load. Also
++ clear the other drive TIME register as a precaution */
++
++ idetm_data &= 0xCCCC;
++ idetm_data |= control << (4 * adev->devno);
++ idetm_data |= (timings[pio][0] << 12) | (timings[pio][1] << 8);
++
++ udma_enable &= ~(1 << adev->devno);
++ } else {
++ u8 udma_mode;
++
++ /* UDMA66 on. It isn't clear from the documentation whether
++ UDMA 33 and 66 are switchable via register 0x4A */
++
++ pci_read_config_byte(dev, 0x4A, &udma_mode);
++
++ if (adev->xfer_mode == XFER_UDMA_2)
++ udma_mode &= ~ (1 << adev->devno);
++ else /* UDMA 4 */
++ udma_mode |= (1 << adev->devno);
++
++ pci_write_config_byte(dev, 0x4A, udma_mode);
++
++ udma_enable |= (1 << adev->devno);
++ }
++ pci_write_config_word(dev, 0x40, idetm_data);
++ pci_write_config_byte(dev, 0x48, udma_enable);
++
++ /* Track which port is configured */
++ ap->private_data = adev;
++}
++
++/**
++ * radisys_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings if
++ * neccessary. Our logic also clears TIME0/TIME1 for the other device so
++ * that, even if we get this wrong, cycles to the other device will
++ * be made PIO0.
++ */
++
++static int radisys_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++
++ if (adev != ap->private_data) {
++ /* UDMA timing is not shared */
++ if (adev->dma_mode < XFER_UDMA_0) {
++ if (adev->dma_mode)
++ radisys_set_dmamode(ap, adev);
++ else if (adev->pio_mode)
++ radisys_set_piomode(ap, adev);
++ }
++ }
++ return ata_qc_issue_prot(qc);
++}
++
++
++static struct scsi_host_template radisys_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static const struct ata_port_operations radisys_pata_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = radisys_set_piomode,
++ .set_dmamode = radisys_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = radisys_pata_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = radisys_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++
++/**
++ * radisys_init_one - Register PIIX ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in radisys_pci_tbl matching with @pdev
++ *
++ * Called from kernel PCI layer. We probe for combined mode (sigh),
++ * and then hand over control to libata, for it to do the rest.
++ *
++ * LOCKING:
++ * Inherited from PCI layer (may sleep).
++ *
++ * RETURNS:
++ * Zero on success, or -ERRNO value.
++ */
++
++static int radisys_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ static struct ata_port_info info = {
++ .sht = &radisys_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07, /* mwdma1-2 */
++ .udma_mask = 0x14, /* UDMA33/66 only */
++ .port_ops = &radisys_pata_ops,
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev,
++ "version " DRV_VERSION "\n");
++
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id radisys_pci_tbl[] = {
++ { 0x1331, 0x8201, PCI_ANY_ID, PCI_ANY_ID, },
++ { } /* terminate list */
++};
++
++static struct pci_driver radisys_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = radisys_pci_tbl,
++ .probe = radisys_init_one,
++ .remove = ata_pci_remove_one,
++};
++
++static int __init radisys_init(void)
++{
++ return pci_register_driver(&radisys_pci_driver);
++}
++
++static void __exit radisys_exit(void)
++{
++ pci_unregister_driver(&radisys_pci_driver);
++}
++
++
++module_init(radisys_init);
++module_exit(radisys_exit);
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("SCSI low-level driver for Radisys R82600 controllers");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, radisys_pci_tbl);
++MODULE_VERSION(DRV_VERSION);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_rz1000.c linux-2.6.16-rc6/drivers/scsi/pata_rz1000.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_rz1000.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_rz1000.c 2006-02-16 15:38:18.000000000 +0000
+@@ -0,0 +1,183 @@
++/*
++ * RZ1000/1001 driver based upon
++ *
++ * linux/drivers/ide/pci/rz1000.c Version 0.06 January 12, 2003
++ * Copyright (C) 1995-1998 Linus Torvalds & author (see below)
++ * Principal Author: mlord@pobox.com (Mark Lord)
++ *
++ * See linux/MAINTAINERS for address of current maintainer.
++ *
++ * This file provides support for disabling the buggy read-ahead
++ * mode of the RZ1000 IDE chipset, commonly used on Intel motherboards.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "rz1000"
++#define DRV_VERSION "0.01"
++
++static void rz1000_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * rz1000_set_mode - mode setting function
++ * @ap: ATA interface
++ *
++ * Use a non standard set_mode function. We don't want to be tuned. We
++ * would prefer to be BIOS generic but for the fact our hardware is
++ * whacked out.
++ */
++
++static void rz1000_set_mode(struct ata_port *ap)
++{
++ int i;
++
++ for (i = 0; i < ATA_MAX_DEVICES; i++) {
++ struct ata_device *dev = &ap->device[i];
++ if (ata_dev_present(dev)) {
++ /* We don't really care */
++ dev->pio_mode = XFER_PIO_0;
++ dev->xfer_mode = XFER_PIO_0;
++ dev->xfer_shift = ATA_SHIFT_PIO;
++ dev->flags |= ATA_DFLAG_PIO;
++ }
++ }
++}
++
++
++static struct scsi_host_template rz1000_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations rz1000_port_ops = {
++ .set_mode = rz1000_set_mode,
++
++ .port_disable = ata_port_disable,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = rz1000_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * rz1000_init_one - Register RZ1000 ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in rz1000_pci_tbl matching with @pdev
++ *
++ * Configure an RZ1000 interface. This doesn't require much special
++ * handling except that we *MUST* kill the chipset readahead or the
++ * user may experience data corruption.
++ */
++
++static int rz1000_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ struct ata_port_info *port_info[2];
++ u16 reg;
++ static struct ata_port_info info = {
++ .sht = &rz1000_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .port_ops = &rz1000_port_ops
++ };
++
++ if (!printed_version++)
++ printk(KERN_DEBUG DRV_NAME " version " DRV_VERSION "\n");
++
++ /* Be exceptionally paranoid as we must be sure to apply the fix */
++ if (pci_read_config_word(pdev, 0x40, &reg) != 0)
++ goto fail;
++ reg &= 0xDFFF;
++ if (pci_write_config_word(pdev, 0x40, reg) != 0)
++ goto fail;
++ printk(KERN_INFO DRV_NAME ": disabled chipset readahead.\n");
++
++ port_info[0] = &info;
++ port_info[1] = &info;
++ return ata_pci_init_one(pdev, port_info, 2);
++fail:
++ printk(KERN_ERR DRV_NAME ": failed to disable read-ahead on chipset..\n");
++ /* Not safe to use so skip */
++ return -ENODEV;
++}
++
++static struct pci_device_id pata_rz1000[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_RZ1000), },
++ { PCI_DEVICE(PCI_VENDOR_ID_PCTECH, PCI_DEVICE_ID_PCTECH_RZ1001), },
++ { 0, },
++};
++
++static struct pci_driver rz1000_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = pata_rz1000,
++ .probe = rz1000_init_one,
++ .remove = ata_pci_remove_one
++};
++
++
++static int __init rz1000_init(void)
++{
++ return pci_register_driver(&rz1000_pci_driver);
++}
++
++static void __exit rz1000_exit(void)
++{
++ pci_unregister_driver(&rz1000_pci_driver);
++}
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for RZ1000 PCI ATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, pata_rz1000);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(rz1000_init);
++module_exit(rz1000_exit);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sc1200.c linux-2.6.16-rc6/drivers/scsi/pata_sc1200.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sc1200.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_sc1200.c 2006-03-10 17:07:03.000000000 +0000
+@@ -0,0 +1,286 @@
++/*
++ * New ATA layer SC1200 driver Alan Cox <alan@redhat.com>
++ *
++ * TODO: Mode selection filtering
++ * TODO: Can't enable second channel until ATA core has serialize
++ * TODO: Needs custom DMA cleanup code
++ *
++ * Based very heavily on
++ *
++ * linux/drivers/ide/pci/sc1200.c Version 0.91 28-Jan-2003
++ *
++ * Copyright (C) 2000-2002 Mark Lord <mlord@pobox.com>
++ * May be copied or modified under the terms of the GNU General Public License
++ *
++ * Development of this chipset driver was funded
++ * by the nice folks at National Semiconductor.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "sc1200"
++#define DRV_VERSION "0.2"
++
++#define SC1200_REV_A 0x00
++#define SC1200_REV_B1 0x01
++#define SC1200_REV_B3 0x02
++#define SC1200_REV_C1 0x03
++#define SC1200_REV_D1 0x04
++
++/**
++ * sc1200_clock - PCI clock
++ *
++ * Return the PCI bus clocking for the SC1200 chipset configuration
++ * in use. We return 0 for 33MHz 1 for 48MHz and 2 for 66Mhz
++ */
++
++static int sc1200_clock(void)
++{
++ /* Magic registers that give us the chipset data */
++ u8 chip_id = inb(0x903C);
++ u8 silicon_rev = inb(0x903D);
++ u16 pci_clock;
++
++ if (chip_id == 0x04 && silicon_rev < SC1200_REV_B1)
++ return 0; /* 33 MHz mode */
++
++ /* Clock generator configuration 0x901E its 8/9 are the PCI clocking
++ 0/3 is 33Mhz 1 is 48 2 is 66 */
++
++ pci_clock = inw(0x901E);
++ pci_clock >>= 8;
++ pci_clock &= 0x03;
++ if (pci_clock == 3)
++ pci_clock = 0;
++ return pci_clock;
++}
++
++/**
++ * sc1200_set_piomode - PIO setup
++ * @ap: ATA interface
++ * @adev: device on the interface
++ *
++ * Set our PIO requirements. This is fairly simple on the SC1200
++ */
++
++static void sc1200_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u32 pio_timings[4][5] = {
++ {0x00009172, 0x00012171, 0x00020080, 0x00032010, 0x00040010}, // format0 33Mhz
++ {0xd1329172, 0x71212171, 0x30200080, 0x20102010, 0x00100010}, // format1, 33Mhz
++ {0xfaa3f4f3, 0xc23232b2, 0x513101c1, 0x31213121, 0x10211021}, // format1, 48Mhz
++ {0xfff4fff4, 0xf35353d3, 0x814102f1, 0x42314231, 0x11311131} // format1, 66Mhz
++ };
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 format;
++ unsigned int reg = 0x40 + 0x10 * ap->hard_port_no;
++ int mode = adev->pio_mode - XFER_PIO_0;
++
++ pci_read_config_dword(pdev, reg + 4, &format);
++ format >>= 31;
++ format += sc1200_clock();
++ pci_write_config_dword(pdev, reg + 8 * adev->devno,
++ pio_timings[format][mode]);
++}
++
++/**
++ * sc1200_set_dmamode - DMA timing setup
++ * @ap: ATA interface
++ * @adev: Device being configured
++ *
++ * We cannot mix MWDMA and UDMA without reloading timings each switch
++ * master to slave.
++ */
++
++static void sc1200_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u32 udma_timing[3][3] = {
++ { 0x00921250, 0x00911140, 0x00911030 },
++ { 0x00932470, 0x00922260, 0x00922140 },
++ { 0x009436A1, 0x00933481, 0x00923261 }
++ };
++
++ static u32 mwdma_timing[3][3] = {
++ { 0x00077771, 0x00012121, 0x00002020 },
++ { 0x000BBBB2, 0x00024241, 0x00013131 },
++ { 0x000FFFF3, 0x00035352, 0x00015151 }
++ };
++
++ int clock = sc1200_clock();
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ unsigned int reg = 0x40 + 0x10 * ap->hard_port_no;
++ int mode = adev->dma_mode;
++ u32 format;
++
++ if (mode >= XFER_UDMA_0)
++ format = udma_timing[clock][mode - XFER_UDMA_0];
++ else
++ format = mwdma_timing[clock][mode - XFER_MW_DMA_0];
++
++ if (adev->devno == 0) {
++ u32 timings;
++
++ pci_read_config_dword(pdev, reg + 4, &timings);
++ timings &= 0x80000000UL;
++ timings |= format;
++ pci_write_config_dword(pdev, reg + 4, timings);
++ } else
++ pci_write_config_dword(pdev, reg + 12, format);
++}
++
++/**
++ * sc1200_qc_issue_prot - command issue
++ * @qc: command pending
++ *
++ * Called when the libata layer is about to issue a command. We wrap
++ * this interface so that we can load the correct ATA timings if
++ * neccessary. Specifically we have a problem that there is only
++ * one MWDMA/UDMA bit.
++ */
++
++static int sc1200_qc_issue_prot(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++ struct ata_device *adev = qc->dev;
++ struct ata_device *prev = ap->private_data;
++
++ /* See if the DMA settings could be wrong */
++ if (adev->dma_mode != 0 && adev != prev && prev != NULL) {
++ /* Maybe, but do the channels match MWDMA/UDMA ? */
++ if ((adev->dma_mode >= XFER_UDMA_0 && prev->dma_mode < XFER_UDMA_0) ||
++ (adev->dma_mode < XFER_UDMA_0 && prev->dma_mode >= XFER_UDMA_0))
++ /* Switch the mode bits */
++ sc1200_set_dmamode(ap, adev);
++ }
++
++ return ata_qc_issue_prot(qc);
++}
++
++static struct scsi_host_template sc1200_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations sc1200_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sc1200_set_piomode,
++ .set_dmamode = sc1200_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = sc1200_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * sc1200_init_one - Initialise an SC1200
++ * @dev: PCI device
++ * @id: Entry in match table
++ *
++ * Just throw the needed data at the libata helper and it does all
++ * our work.
++ */
++
++static int sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &sc1200_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS|ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x07,
++ .port_ops = &sc1200_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++
++ /* Can't enable port 2 yet, see top comments */
++ return ata_pci_init_one(dev, port_info, 1);
++}
++
++static struct pci_device_id sc1200[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SCx200_IDE), },
++ { 0, },
++};
++
++static struct pci_driver sc1200_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = sc1200,
++ .probe = sc1200_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init sc1200_init(void)
++{
++ return pci_register_driver(&sc1200_pci_driver);
++}
++
++
++static void __exit sc1200_exit(void)
++{
++ pci_unregister_driver(&sc1200_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox, Mark Lord");
++MODULE_DESCRIPTION("low-level driver for the NS/AMD SC1200");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, sc1200);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(sc1200_init);
++module_exit(sc1200_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_serverworks.c linux-2.6.16-rc6/drivers/scsi/pata_serverworks.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_serverworks.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_serverworks.c 2006-02-16 15:37:31.000000000 +0000
+@@ -0,0 +1,586 @@
++/*
++ * ata-serverworks.c - Serverworks PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based upon
++ *
++ * serverworks.c
++ *
++ * Copyright (C) 1998-2000 Michel Aubry
++ * Copyright (C) 1998-2000 Andrzej Krzysztofowicz
++ * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
++ * Portions copyright (c) 2001 Sun Microsystems
++ *
++ *
++ * RCC/ServerWorks IDE driver for Linux
++ *
++ * OSB4: `Open South Bridge' IDE Interface (fn 1)
++ * supports UDMA mode 2 (33 MB/s)
++ *
++ * CSB5: `Champion South Bridge' IDE Interface (fn 1)
++ * all revisions support UDMA mode 4 (66 MB/s)
++ * revision A2.0 and up support UDMA mode 5 (100 MB/s)
++ *
++ * *** The CSB5 does not provide ANY register ***
++ * *** to detect 80-conductor cable presence. ***
++ *
++ * CSB6: `Champion South Bridge' IDE Interface (optional: third channel)
++ *
++ * Documentation:
++ * Available under NDA only. Errata info very hard to get.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "serverworks"
++#define DRV_VERSION "0.1.1"
++
++#define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */
++#define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */
++
++/* Seagate Barracuda ATA IV Family drives in UDMA mode 5
++ * can overrun their FIFOs when used with the CSB5 */
++
++static const char *csb_bad_ata100[] = {
++ "ST320011A",
++ "ST340016A",
++ "ST360021A",
++ "ST380021A",
++ NULL
++};
++
++/**
++ * dell_cable - Dell serverworks cable detection
++ * @ap: ATA port to do cable detect
++ *
++ * Dell hide the 40/80 pin select for their interfaces in the top two
++ * bits of the subsystem ID.
++ */
++
++static int dell_cable(struct ata_port *ap) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ if (pdev->subsystem_device & (1 << (ap->hard_port_no + 14)))
++ return ATA_CBL_PATA80;
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * sun_cable - Sun Cobalt 'Alpine' cable detection
++ * @ap: ATA port to do cable select
++ *
++ * Cobalt CSB5 IDE hides the 40/80pin in the top two bits of the
++ * subsystem ID the same as dell. We could use one function but we may
++ * need to extend the Dell one in future
++ */
++
++static int sun_cable(struct ata_port *ap) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ if (pdev->subsystem_device & (1 << (ap->hard_port_no + 14)))
++ return ATA_CBL_PATA80;
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * osb4_cable - OSB4 cable detect
++ * @ap: ATA port to check
++ *
++ * The OSB4 isn't UDMA66 capable so this is easy
++ */
++
++static int osb4_cable(struct ata_port *ap) {
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * csb4_cable - CSB5/6 cable detect
++ * @ap: ATA port to check
++ *
++ * Serverworks default arrangement is to use the drive side detection
++ * only.
++ */
++
++static int csb_cable(struct ata_port *ap) {
++ return ATA_CBL_PATA80;
++}
++
++struct sv_cable_table {
++ int device;
++ int subvendor;
++ int (*cable_detect)(struct ata_port *ap);
++};
++
++/*
++ * Note that we don't copy the old serverworks code because the old
++ * code contains obvious mistakes
++ */
++
++static struct sv_cable_table cable_detect[] = {
++ { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_DELL, dell_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_VENDOR_ID_DELL, dell_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_SUN, sun_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_OSB4, PCI_ANY_ID, osb4_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, csb_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, csb_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, csb_cable },
++ { PCI_DEVICE_ID_SERVERWORKS_HT1000IDE, PCI_ANY_ID, csb_cable },
++ { }
++};
++
++/**
++ * serverworks_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection according to the device and subvendor
++ * identifications
++ */
++
++static int serverworks_cable_detect(struct ata_port *ap) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct sv_cable_table *cb = cable_detect;
++
++ while(cb->device) {
++ if (cb->device == pdev->device &&
++ (cb->subvendor == pdev->subsystem_vendor ||
++ cb->subvendor == PCI_ANY_ID)) {
++ return cb->cable_detect(ap);
++ }
++ cb++;
++ }
++ BUG();
++}
++
++static void serverworks_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = serverworks_cable_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * serverworks_is_csb - Check for CSB or OSB
++ * @pdev: PCI device to check
++ *
++ * Returns true if the device being checked is known to be a CSB
++ * series device.
++ */
++
++static u8 serverworks_is_csb(struct pci_dev *pdev)
++{
++ switch (pdev->device) {
++ case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
++ case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE:
++ case PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2:
++ case PCI_DEVICE_ID_SERVERWORKS_HT1000IDE:
++ return 1;
++ default:
++ break;
++ }
++ return 0;
++}
++
++/**
++ * serverworks_osb4_filter - mode selection filter
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Filter the offered modes for the device to apply controller
++ * specific rules. OSB4 requires no UDMA for disks due to a FIFO
++ * bug we hit.
++ */
++
++static unsigned int serverworks_osb4_filter(const struct ata_port *ap, struct ata_device *adev, unsigned int mask, int shift)
++{
++ if (shift != ATA_SHIFT_UDMA)
++ return mask;
++ if (adev->class == ATA_DEV_ATA)
++ return 0;
++ return mask;
++}
++
++
++/**
++ * serverworks_csb_filter - mode selection filter
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Check the blacklist and disable UDMA5 if matched
++ */
++
++static unsigned int serverworks_csb_filter(const struct ata_port *ap, struct ata_device *adev, unsigned int mask, int shift)
++{
++ const char *p;
++ char model_num[40];
++ int len, i;
++
++ /* Disk, UDMA */
++ if (shift != ATA_SHIFT_UDMA)
++ return mask;
++ if (adev->class != ATA_DEV_ATA)
++ return mask;
++
++ /* Actually do need to check */
++ ata_dev_id_string(adev->id, model_num, ATA_ID_PROD_OFS, sizeof(model_num));
++ /* Precuationary - why not do this in the libata core ?? */
++
++ len = strlen(model_num);
++ while ((len > 0) && (model_num[len - 1] == ' ')) {
++ len--;
++ model_num[len] = 0;
++ }
++
++ for(i = 0; (p = csb_bad_ata100[i]) != NULL; i++) {
++ if (!strncmp(p, model_num, len))
++ return mask & 0x1F;
++ }
++ return mask;
++}
++
++
++/**
++ * serverworks_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the OSB4/CSB5 timing registers for PIO. The PIO register
++ * load is done as a simple lookup.
++ */
++static void serverworks_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u8 pio_mode[] = { 0x5d, 0x47, 0x34, 0x22, 0x20 };
++ int offset = 1 + 2 * ap->hard_port_no - adev->devno;
++ int devbits = (2 * ap->hard_port_no + adev->devno) * 4;
++ u16 csb5_pio;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int pio = adev->pio_mode - XFER_PIO_0;
++
++ pci_write_config_byte(pdev, 0x40 + offset, pio_mode[pio]);
++
++ /* The OSB4 just requires the timing but the CSB series want the
++ mode number as well */
++ if (serverworks_is_csb(pdev)) {
++ pci_read_config_word(pdev, 0x4A, &csb5_pio);
++ csb5_pio &= ~(0x0F << devbits);
++ pci_write_config_byte(pdev, 0x4A, csb5_pio | (pio << devbits));
++ }
++}
++
++/**
++ * serverworks_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the MWDMA/UDMA modes for the serverworks OSB4/CSB5
++ * chipset. The MWDMA mode values are pulled from a lookup table
++ * while the chipset uses mode number for UDMA.
++ */
++
++static void serverworks_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u8 dma_mode[] = { 0x77, 0x21, 0x20 };
++ int offset = 1 + 2 * ap->hard_port_no - adev->devno;
++ int devbits = (2 * ap->hard_port_no + adev->devno);
++ u8 ultra;
++ u8 ultra_cfg;
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++
++ pci_read_config_byte(pdev, 0x54, &ultra_cfg);
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ pci_write_config_byte(pdev, 0x44 + offset, 0x20);
++
++ pci_read_config_byte(pdev, 0x56 + ap->hard_port_no, &ultra);
++ ultra &= ~(0x0F << (ap->hard_port_no * 4));
++ ultra |= (adev->dma_mode - XFER_UDMA_0)
++ << (ap->hard_port_no * 4);
++ pci_write_config_byte(pdev, 0x56 + ap->hard_port_no, ultra);
++
++ ultra_cfg |= (1 << devbits);
++ } else {
++ pci_write_config_byte(pdev, 0x44 + offset,
++ dma_mode[adev->dma_mode - XFER_MW_DMA_0]);
++ ultra_cfg &= ~(1 << devbits);
++ }
++ pci_write_config_byte(pdev, 0x54, ultra_cfg);
++}
++
++static struct scsi_host_template serverworks_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations serverworks_osb4_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = serverworks_set_piomode,
++ .set_dmamode = serverworks_set_dmamode,
++ .mode_filter = serverworks_osb4_filter,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = serverworks_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations serverworks_csb_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = serverworks_set_piomode,
++ .set_dmamode = serverworks_set_dmamode,
++ .mode_filter = serverworks_csb_filter,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = serverworks_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int serverworks_fixup_osb4(struct pci_dev *pdev)
++{
++ u32 reg;
++ struct pci_dev *isa_dev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
++ PCI_DEVICE_ID_SERVERWORKS_OSB4, NULL);
++ if (isa_dev) {
++ pci_read_config_dword(isa_dev, 0x64, &reg);
++ reg &= ~0x00002000; /* disable 600ns interrupt mask */
++ if (!(reg & 0x00004000))
++ printk(KERN_DEBUG DRV_NAME ": UDMA not BIOS enabled.\n");
++ reg |= 0x00004000; /* enable UDMA/33 support */
++ pci_write_config_dword(isa_dev, 0x64, reg);
++ pci_dev_put(isa_dev);
++ return 0;
++ }
++ printk(KERN_WARNING "ata_serverworks: Unable to find bridge.\n");
++ return -ENODEV;
++}
++
++static int serverworks_fixup_csb(struct pci_dev *pdev)
++{
++ u8 rev;
++ u8 btr;
++
++ pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
++
++ /* Third Channel Test */
++ if (!(PCI_FUNC(pdev->devfn) & 1)) {
++ struct pci_dev * findev = NULL;
++ u32 reg4c = 0;
++ findev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
++ PCI_DEVICE_ID_SERVERWORKS_CSB5, NULL);
++ if (findev) {
++ pci_read_config_dword(findev, 0x4C, &reg4c);
++ reg4c &= ~0x000007FF;
++ reg4c |= 0x00000040;
++ reg4c |= 0x00000020;
++ pci_write_config_dword(findev, 0x4C, reg4c);
++ pci_dev_put(findev);
++ }
++ } else {
++ struct pci_dev * findev = NULL;
++ u8 reg41 = 0;
++
++ findev = pci_get_device(PCI_VENDOR_ID_SERVERWORKS,
++ PCI_DEVICE_ID_SERVERWORKS_CSB6, NULL);
++ if (findev) {
++ pci_read_config_byte(findev, 0x41, &reg41);
++ reg41 &= ~0x40;
++ pci_write_config_byte(findev, 0x41, reg41);
++ pci_dev_put(findev);
++ }
++ }
++ /* setup the UDMA Control register
++ *
++ * 1. clear bit 6 to enable DMA
++ * 2. enable DMA modes with bits 0-1
++ * 00 : legacy
++ * 01 : udma2
++ * 10 : udma2/udma4
++ * 11 : udma2/udma4/udma5
++ */
++ pci_read_config_byte(pdev, 0x5A, &btr);
++ btr &= ~0x40;
++ if (!(PCI_FUNC(pdev->devfn) & 1))
++ btr |= 0x2;
++ else
++ btr |= (rev >= SVWKS_CSB5_REVISION_NEW) ? 0x3 : 0x2;
++ pci_write_config_byte(pdev, 0x5A, btr);
++
++ return btr;
++}
++
++static void serverworks_fixup_ht1000(struct pci_dev *pdev)
++{
++ u8 btr;
++ /* Setup HT1000 SouthBridge Controller - Single Channel Only */
++ pci_read_config_byte(pdev, 0x5A, &btr);
++ btr &= ~0x40;
++ btr |= 0x3;
++ pci_write_config_byte(pdev, 0x5A, btr);
++}
++
++
++static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ int ports = 2;
++ static struct ata_port_info info[4] = {
++ { /* OSB4 */
++ .sht = &serverworks_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x07,
++ .port_ops = &serverworks_osb4_port_ops
++ }, { /* OSB4 no UDMA */
++ .sht = &serverworks_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x00,
++ .port_ops = &serverworks_osb4_port_ops
++ }, { /* CSB5 */
++ .sht = &serverworks_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x1f,
++ .port_ops = &serverworks_csb_port_ops
++ }, { /* CSB5 - later revisions*/
++ .sht = &serverworks_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &serverworks_csb_port_ops
++ }
++ };
++ static struct ata_port_info *port_info[2];
++ struct ata_port_info *devinfo = &info[id->driver_data];
++
++ /* Force master latency timer to 64 PCI clocks */
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40);
++
++ /* OSB4 : South Bridge and IDE */
++ if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) {
++ /* Select non UDMA capable OSB4 if we can't do fixups */
++ if ( serverworks_fixup_osb4(pdev) < 0)
++ devinfo = &info[1];
++ }
++ /* setup CSB5/CSB6 : South Bridge and IDE option RAID */
++ else if ((pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) ||
++ (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE) ||
++ (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2)) {
++
++ /* If the returned btr is the newer revision then
++ select the right info block */
++ if (serverworks_fixup_csb(pdev) == 3)
++ devinfo = &info[3];
++
++ /* Is this the 3rd channel CSB6 IDE ? */
++ if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2)
++ ports = 1;
++ }
++ /* setup HT1000E */
++ else if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE)
++ serverworks_fixup_ht1000(pdev);
++
++ if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE)
++ ata_pci_clear_simplex(pdev);
++
++ port_info[0] = port_info[1] = devinfo;
++ return ata_pci_init_one(pdev, port_info, ports);
++}
++
++static struct pci_device_id serverworks[] = {
++ { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2},
++ { 0, },
++};
++
++static struct pci_driver serverworks_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = serverworks,
++ .probe = serverworks_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init serverworks_init(void)
++{
++ return pci_register_driver(&serverworks_pci_driver);
++}
++
++
++static void __exit serverworks_exit(void)
++{
++ pci_unregister_driver(&serverworks_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Serverworks OSB4/CSB5/CSB6");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, serverworks);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(serverworks_init);
++module_exit(serverworks_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sil680.c linux-2.6.16-rc6/drivers/scsi/pata_sil680.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sil680.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_sil680.c 2006-03-01 16:24:18.000000000 +0000
+@@ -0,0 +1,377 @@
++/*
++ * pata_sil680.c - SIL680 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based upon
++ *
++ * linux/drivers/ide/pci/siimage.c Version 1.07 Nov 30, 2003
++ *
++ * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org>
++ * Copyright (C) 2003 Red Hat <alan@redhat.com>
++ *
++ * May be copied or modified under the terms of the GNU General Public License
++ *
++ * Documentation publically available.
++ *
++ * If you have strange problems with nVidia chipset systems please
++ * see the SI support documentation and update your system BIOS
++ * if neccessary
++ *
++ * TODO
++ * If we know all our devices are LBA28 (or LBA28 sized) we could use
++ * the command fifo mode.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_sil680"
++#define DRV_VERSION "0.2.1"
++
++/**
++ * sil680_selreg - return register base
++ * @hwif: interface
++ * @r: config offset
++ *
++ * Turn a config register offset into the right address in either
++ * PCI space or MMIO space to access the control register in question
++ * Thankfully this is a configuration operation so isnt performance
++ * criticial.
++ */
++
++static unsigned long sil680_selreg(struct ata_port *ap, int r)
++{
++ unsigned long base = 0xA0 + r;
++ base += (ap->hard_port_no << 4);
++ return base;
++}
++
++/**
++ * sil680_seldev - return register base
++ * @hwif: interface
++ * @r: config offset
++ *
++ * Turn a config register offset into the right address in either
++ * PCI space or MMIO space to access the control register in question
++ * including accounting for the unit shift.
++ */
++
++static unsigned long sil680_seldev(struct ata_port *ap, struct ata_device *adev, int r)
++{
++ unsigned long base = 0xA0 + r;
++ base += (ap->hard_port_no << 4);
++ base |= adev->devno ? 2 : 0;
++ return base;
++}
++
++
++/**
++ * sil680_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection. The SIL680 stores this in PCI config
++ * space for us.
++ */
++
++static int sil680_cable_detect(struct ata_port *ap) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ unsigned long addr = sil680_selreg(ap, 0);
++ u8 ata66;
++ pci_read_config_byte(pdev, addr, &ata66);
++ if (ata66 & 1)
++ return ATA_CBL_PATA80;
++ else
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * sil680_bus_reset - reset the SIL680 bus
++ * @ap: ATA port to reset
++ *
++ * Perform the SIL680 housekeeping when doing an ATA bus reset
++ */
++
++static void sil680_bus_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ unsigned long addr = sil680_selreg(ap, 0);
++ u8 reset;
++
++ pci_read_config_byte(pdev, addr, &reset);
++ pci_write_config_byte(pdev, addr, reset | 0x03);
++ udelay(25);
++ pci_write_config_byte(pdev, addr, reset);
++ ata_bus_reset(ap);
++}
++
++static void sil680_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = sil680_cable_detect(ap);
++ sil680_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * sil680_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the SIL680 registers for PIO mode. Note that the task speed
++ * registers are shared between the devices so we must pick the lowest
++ * mode for command work.
++ */
++
++static void sil680_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u16 speed_p[5] = { 0x328A, 0x2283, 0x1104, 0x10C3, 0x10C1 };
++ static u16 speed_t[5] = { 0x328A, 0x1281, 0x1281, 0x10C3, 0x10C1 };
++
++ unsigned long tfaddr = sil680_selreg(ap, 0x02);
++ unsigned long addr = sil680_seldev(ap, adev, 0x04);
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int pio = adev->pio_mode - XFER_PIO_0;
++ int lowest_pio = pio;
++ u16 reg;
++
++ struct ata_device *pair = ata_dev_pair(ap, adev);
++
++ if (pair != NULL) {
++ if (adev->pio_mode > pair->pio_mode)
++ lowest_pio = pair->pio_mode - XFER_PIO_0;
++ }
++
++ pci_write_config_word(pdev, addr, speed_p[pio]);
++ pci_write_config_word(pdev, tfaddr, speed_t[lowest_pio]);
++
++ pci_read_config_word(pdev, tfaddr-2, &reg);
++ reg &= ~0x0200; /* Clear IORDY */
++ if (ata_pio_need_iordy(adev))
++ reg |= 0x0200; /* Enable IORDY */
++ pci_write_config_word(pdev, tfaddr-2, reg);
++}
++
++/**
++ * sil680_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Program the MWDMA/UDMA modes for the sil680 k
++ * chipset. The MWDMA mode values are pulled from a lookup table
++ * while the chipset uses mode number for UDMA.
++ */
++
++static void sil680_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ static u8 ultra_table[2][7] = {
++ { 0x0C, 0x07, 0x05, 0x04, 0x02, 0x01, 0xFF }, /* 100MHz */
++ { 0x0F, 0x0B, 0x07, 0x05, 0x03, 0x02, 0x01 }, /* 133Mhz */
++ };
++ static u16 dma_table[3] = { 0x2208, 0x10C2, 0x10C1 };
++
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ unsigned long ma = sil680_seldev(ap, adev, 0x08);
++ unsigned long ua = sil680_seldev(ap, adev, 0x0C);
++ unsigned long addr_mask = 0x80 + 4 * ap->hard_port_no;
++ int port_shift = adev->devno * 4;
++ u8 scsc, mode;
++ u16 multi, ultra;
++
++ pci_read_config_byte(pdev, 0x8A, &scsc);
++ pci_read_config_byte(pdev, addr_mask, &mode);
++ pci_read_config_word(pdev, ma, &multi);
++ pci_read_config_word(pdev, ua, &ultra);
++
++ /* Mask timing bits */
++ ultra &= ~0x3F;
++ mode &= ~(0x03 << port_shift);
++
++ /* Extract scsc */
++ scsc = (scsc & 0x30) ? 1: 0;
++
++ if (adev->dma_mode >= XFER_UDMA_0) {
++ multi = 0x10C1;
++ ultra |= ultra_table[scsc][adev->dma_mode - XFER_UDMA_0];
++ mode |= (0x03 << port_shift);
++ } else {
++ multi = dma_table[adev->dma_mode - XFER_MW_DMA_0];
++ mode |= (0x02 << port_shift);
++ }
++ pci_write_config_byte(pdev, addr_mask, mode);
++ pci_write_config_word(pdev, ma, multi);
++ pci_write_config_word(pdev, ua, ultra);
++}
++
++static struct scsi_host_template sil680_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations sil680_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sil680_set_piomode,
++ .set_dmamode = sil680_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sil680_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int sil680_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &sil680_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f,
++ .port_ops = &sil680_port_ops
++ };
++ static struct ata_port_info info_slow = {
++ .sht = &sil680_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &sil680_port_ops
++ };
++ static struct ata_port_info *port_info[2] = {&info, &info};
++ static int printed_version;
++ u32 class_rev = 0;
++ u8 tmpbyte = 0;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
++
++ pci_read_config_dword(pdev, PCI_CLASS_REVISION, &class_rev);
++ class_rev &= 0xff;
++ /* FIXME: double check */
++ pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, (class_rev) ? 1 : 255);
++
++ pci_write_config_byte(pdev, 0x80, 0x00);
++ pci_write_config_byte(pdev, 0x84, 0x00);
++
++ pci_read_config_byte(pdev, 0x8A, &tmpbyte);
++
++ printk(KERN_INFO "sil680: BA5_EN = %d clock = %02X\n",
++ tmpbyte & 1, tmpbyte & 0x30);
++
++ switch(tmpbyte & 0x30) {
++ case 0x00:
++ /* 133 clock attempt to force it on */
++ pci_write_config_byte(pdev, 0x8A, tmpbyte|0x10);
++ break;
++ case 0x30:
++ /* if clocking is disabled */
++ /* 133 clock attempt to force it on */
++ pci_write_config_byte(pdev, 0x8A, tmpbyte & ~0x20);
++ break;
++ case 0x10:
++ /* 133 already */
++ break;
++ case 0x20:
++ /* BIOS set PCI x2 clocking */
++ break;
++ }
++
++ pci_read_config_byte(pdev, 0x8A, &tmpbyte);
++ printk(KERN_INFO "sil680: BA5_EN = %d clock = %02X\n",
++ tmpbyte & 1, tmpbyte & 0x30);
++ if ((tmpbyte & 0x30) == 0)
++ port_info[0] = port_info[1] = &info_slow;
++
++ pci_write_config_byte(pdev, 0xA1, 0x72);
++ pci_write_config_word(pdev, 0xA2, 0x328A);
++ pci_write_config_dword(pdev, 0xA4, 0x62DD62DD);
++ pci_write_config_dword(pdev, 0xA8, 0x43924392);
++ pci_write_config_dword(pdev, 0xAC, 0x40094009);
++ pci_write_config_byte(pdev, 0xB1, 0x72);
++ pci_write_config_word(pdev, 0xB2, 0x328A);
++ pci_write_config_dword(pdev, 0xB4, 0x62DD62DD);
++ pci_write_config_dword(pdev, 0xB8, 0x43924392);
++ pci_write_config_dword(pdev, 0xBC, 0x40094009);
++
++ switch(tmpbyte & 0x30) {
++ case 0x00: printk(KERN_INFO "sil680: 100MHz clock.\n");break;
++ case 0x10: printk(KERN_INFO "sil680: 133MHz clock.\n");break;
++ case 0x20: printk(KERN_INFO "sil680: Using PCI clock.\n");break;
++ /* This last case is _NOT_ ok */
++ case 0x30: printk(KERN_ERR "sil680: Clock disabled ?\n");
++ return -EIO;
++ }
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id sil680[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_CMD, PCI_DEVICE_ID_SII_680), },
++ { 0, },
++};
++
++static struct pci_driver sil680_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = sil680,
++ .probe = sil680_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init sil680_init(void)
++{
++ return pci_register_driver(&sil680_pci_driver);
++}
++
++
++static void __exit sil680_exit(void)
++{
++ pci_unregister_driver(&sil680_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for SI680 PATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, sil680);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(sil680_init);
++module_exit(sil680_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sis.c linux-2.6.16-rc6/drivers/scsi/pata_sis.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sis.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_sis.c 2006-02-28 16:51:31.000000000 +0000
+@@ -0,0 +1,982 @@
++/*
++ * pata_sis.c - SiS ATA driver
++ *
++ * (C) 2005 Red Hat <alan@redhat.com>
++ *
++ * Based upon linux/drivers/ide/pci/sis5513.c
++ * Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org>
++ * Copyright (C) 2002 Lionel Bouton <Lionel.Bouton@inet6.fr>, Maintainer
++ * Copyright (C) 2003 Vojtech Pavlik <vojtech@suse.cz>
++ * SiS Taiwan : for direct support and hardware.
++ * Daniela Engert : for initial ATA100 advices and numerous others.
++ * John Fremlin, Manfred Spraul, Dave Morgan, Peter Kjellerstedt :
++ * for checking code correctness, providing patches.
++ * Original tests and design on the SiS620 chipset.
++ * ATA100 tests and design on the SiS735 chipset.
++ * ATA16/33 support from specs
++ * ATA133 support for SiS961/962 by L.C. Chang <lcchang@sis.com.tw>
++ *
++ *
++ * TODO
++ * Check MWDMA on drives that don't support MWDMA speed pio cycles ?
++ * More Testing
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++#include <linux/ata.h>
++
++#define DRV_NAME "pata_sis"
++#define DRV_VERSION "0.2"
++
++struct sis_chipset {
++ u16 device; /* PCI host ID */
++ struct ata_port_info *info; /* Info block */
++ /* Probably add family, cable detect type etc here to clean
++ up code later */
++};
++
++/**
++ * sis_133_cable_detect - check for 40/80 pin
++ * @ap: Port
++ *
++ * Perform cable detection for the later UDMA133 capable
++ * SiS chipset.
++ */
++
++static int sis_133_cable_detect(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u16 tmp;
++
++ pci_read_config_word(pdev, 0x50 + 2 * ap->hard_port_no, &tmp);
++ if (tmp & 0x8000)
++ return ATA_CBL_PATA40;
++ return ATA_CBL_PATA80;
++}
++
++/**
++ * sis_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_133_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits sis_enable_bits[] = {
++ { 0x4aU, 1U, 0x02UL, 0x02UL }, /* port 0 */
++ { 0x4aU, 1U, 0x04UL, 0x04UL }, /* port 1 */
++ };
++
++ if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = sis_133_cable_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++
++/**
++ * sis_66_cable_detect - check for 40/80 pin
++ * @ap: Port
++ *
++ * Perform cable detection on the UDMA66, UDMA100 and early UDMA133
++ * SiS IDE controllers.
++ */
++
++static int sis_66_cable_detect(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 tmp;
++
++ pci_read_config_byte(pdev, 0x48, &tmp);
++ tmp >>= ap->hard_port_no;
++ if (tmp & 0x10)
++ return ATA_CBL_PATA40;
++ return ATA_CBL_PATA80;
++}
++
++/**
++ * sis_66_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_66_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits sis_enable_bits[] = {
++ { 0x4aU, 1U, 0x02UL, 0x02UL }, /* port 0 */
++ { 0x4aU, 1U, 0x04UL, 0x04UL }, /* port 1 */
++ };
++
++ if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = sis_66_cable_detect(ap);
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++
++/**
++ * sis_old_phy_reset - Probe specified port on PATA host controller
++ * @ap: Port to probe
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_old_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits sis_enable_bits[] = {
++ { 0x4aU, 1U, 0x02UL, 0x02UL }, /* port 0 */
++ { 0x4aU, 1U, 0x04UL, 0x04UL }, /* port 1 */
++ };
++
++ if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * sis_set_fifo - Set RWP fifo bits for this device
++ * @ap: Port
++ * @adev: Device
++ *
++ * SIS chipsets implement prefetch/postwrite bits for each device
++ * on both channels. This functionality is not ATAPI compatible and
++ * must be configured according to the class of device present
++ */
++
++static void sis_set_fifo(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u8 reg4b;
++ u8 mask = 0x11;
++
++ mask <<= (2 * ap->hard_port_no);
++ mask <<= adev->devno;
++
++ pci_read_config_byte(pdev, 0x4B, &reg4b);
++ reg4b &= ~mask;
++
++ /* Enable for ATA (disk) only */
++ if (adev->class == ATA_DEV_ATA)
++ reg4b |= mask;
++ pci_write_config_byte(pdev, 0x4B, reg4b);
++}
++
++/**
++ * sis_old_set_piomode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring for.
++ *
++ * Set PIO mode for device, in host controller PCI config space. This
++ * function handles PIO set up for all chips that are pre ATA100 and
++ * also early ATA100 devices.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_old_set_piomode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int port = 0x40 + 4 * ap->hard_port_no + 2 * adev->devno;
++ u8 t1, t2;
++ int speed = adev->pio_mode - XFER_PIO_0;
++
++ const u8 active[] = { 0x00, 0x07, 0x04, 0x03, 0x01 };
++ const u8 recovery[] = { 0x00, 0x06, 0x04, 0x03, 0x03 };
++
++ sis_set_fifo(ap, adev);
++
++ pci_read_config_byte(pdev, port, &t1);
++ pci_read_config_byte(pdev, port + 1, &t2);
++
++ t1 &= ~0x0F; /* Clear active/recovery timings */
++ t2 &= ~0x07;
++
++ t1 |= active[speed];
++ t2 |= recovery[speed];
++
++ pci_write_config_byte(pdev, port, t1);
++ pci_write_config_byte(pdev, port + 1, t2);
++}
++
++/**
++ * sis_100_set_pioode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring for.
++ *
++ * Set PIO mode for device, in host controller PCI config space. This
++ * function handles PIO set up for ATA100 devices and early ATA133.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_100_set_piomode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int port = 0x40 + 4 * ap->hard_port_no + 2 * adev->devno;
++ int speed = adev->pio_mode - XFER_PIO_0;
++
++ const u8 actrec[] = { 0x00, 0x67, 0x44, 0x33, 0x31 };
++
++ sis_set_fifo(ap, adev);
++
++ pci_write_config_byte(pdev, port, actrec[speed]);
++}
++
++/**
++ * sis_133_set_pioode - Initialize host controller PATA PIO timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device we are configuring for.
++ *
++ * Set PIO mode for device, in host controller PCI config space. This
++ * function handles PIO set up for the later ATA133 devices.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_133_set_piomode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int port = 0x40;
++ u32 t1;
++ u32 reg54;
++ int speed = adev->pio_mode - XFER_PIO_0;
++
++ const u32 timing133[] = {
++ 0x28269000, /* Recovery << 24 | Act << 16 | Ini << 12 */
++ 0x0C266000,
++ 0x04263000,
++ 0x0C0A3000,
++ 0x05093000
++ };
++ const u32 timing100[] = {
++ 0x1E1C6000, /* Recovery << 24 | Act << 16 | Ini << 12 */
++ 0x091C4000,
++ 0x031C2000,
++ 0x09072000,
++ 0x04062000
++ };
++
++ sis_set_fifo(ap, adev);
++
++ pci_read_config_dword(pdev, 0x54, &reg54);
++ if (reg54 & 0x40000000)
++ port = 0x70;
++ port += 8 * ap->hard_port_no + 4 * adev->devno;
++
++ pci_read_config_dword(pdev, port, &t1);
++ t1 &= 0xC0C00FFF; /* Mask out timing */
++
++ if (t1 & 0x08) /* 100 or 133 ? */
++ t1 |= timing133[speed];
++ else
++ t1 |= timing100[speed];
++ pci_write_config_byte(pdev, port, t1);
++}
++
++/**
++ * sis_old_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ *
++ * Set UDMA/MWDMA mode for device, in host controller PCI config space.
++ * Handles pre UDMA and UDMA33 devices. Supports MWDMA as well unlike
++ * the old ide/pci driver.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_old_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int speed = adev->dma_mode - XFER_MW_DMA_0;
++ int drive_pci = 0x40 + 4 * ap->hard_port_no + 2 * adev->devno;
++ u16 timing;
++
++ const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 };
++ const u16 udma_bits[] = {
++ 0xE000, 0xC000, 0xA000
++ };
++
++ pci_read_config_word(pdev, drive_pci, &timing);
++
++ if (adev->dma_mode < XFER_UDMA_0) {
++ /* bits 3-0 hold recovery timing bits 8-10 active timing and
++ the higer bits are dependant on the device */
++ timing &= ~ 0x870F;
++ timing |= mwdma_bits[speed];
++ pci_write_config_word(pdev, drive_pci, timing);
++ } else {
++ /* Bit 15 is UDMA on/off, bit 13-14 are cycle time */
++ speed = adev->dma_mode - XFER_UDMA_0;
++ timing &= ~0x6000;
++ timing |= udma_bits[speed];
++ }
++}
++
++/**
++ * sis_66_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ *
++ * Set UDMA/MWDMA mode for device, in host controller PCI config space.
++ * Handles UDMA66 and early UDMA100 devices. Supports MWDMA as well unlike
++ * the old ide/pci driver.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_66_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int speed = adev->dma_mode - XFER_MW_DMA_0;
++ int drive_pci = 0x40 + 4 * ap->hard_port_no + 2 * adev->devno;
++ u16 timing;
++
++ const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 };
++ const u16 udma_bits[] = { 0xF000, 0xD000, 0xB000, 0xA000, 0x9000};
++
++ pci_read_config_word(pdev, drive_pci, &timing);
++
++ if (adev->dma_mode < XFER_UDMA_0) {
++ /* bits 3-0 hold recovery timing bits 8-10 active timing and
++ the higer bits are dependant on the device, bit 15 udma */
++ timing &= ~ 0x870F;
++ timing |= mwdma_bits[speed];
++ } else {
++ /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */
++ speed = adev->dma_mode - XFER_UDMA_0;
++ timing &= ~0x6000;
++ timing |= udma_bits[speed];
++ }
++ pci_write_config_word(pdev, drive_pci, timing);
++}
++
++/**
++ * sis_100_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ *
++ * Set UDMA/MWDMA mode for device, in host controller PCI config space.
++ * Handles UDMA66 and early UDMA100 devices.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_100_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int speed = adev->dma_mode - XFER_MW_DMA_0;
++ int drive_pci = 0x40 + 4 * ap->hard_port_no + 2 * adev->devno;
++ u16 timing;
++
++ const u16 udma_bits[] = { 0x8B00, 0x8700, 0x8500, 0x8300, 0x8200, 0x8100};
++
++ pci_read_config_word(pdev, drive_pci, &timing);
++
++ if (adev->dma_mode < XFER_UDMA_0) {
++ /* NOT SUPPORTED YET: NEED DATA SHEET. DITTO IN OLD DRIVER */
++ } else {
++ /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */
++ speed = adev->dma_mode - XFER_UDMA_0;
++ timing &= ~0x0F00;
++ timing |= udma_bits[speed];
++ }
++ pci_write_config_word(pdev, drive_pci, timing);
++}
++
++/**
++ * sis_133_early_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ *
++ * Set UDMA/MWDMA mode for device, in host controller PCI config space.
++ * Handles early SiS 961 bridges. Supports MWDMA as well unlike
++ * the old ide/pci driver.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_133_early_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int speed = adev->dma_mode - XFER_MW_DMA_0;
++ int drive_pci = 0x40 + 4 * ap->hard_port_no + 2 * adev->devno;
++ u16 timing;
++
++ const u16 udma_bits[] = { 0x8F00, 0x8A00, 0x8700, 0x8500, 0x8300, 0x8200, 0x8100};
++
++ pci_read_config_word(pdev, drive_pci, &timing);
++
++ if (adev->dma_mode < XFER_UDMA_0) {
++ /* NOT SUPPORTED YET: NEED DATA SHEET. DITTO IN OLD DRIVER */
++ } else {
++ /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */
++ speed = adev->dma_mode - XFER_UDMA_0;
++ timing &= ~0x0F00;
++ timing |= udma_bits[speed];
++ }
++ pci_write_config_word(pdev, drive_pci, timing);
++}
++
++/**
++ * sis_133_set_dmamode - Initialize host controller PATA DMA timings
++ * @ap: Port whose timings we are configuring
++ * @adev: Device to program
++ *
++ * Set UDMA/MWDMA mode for device, in host controller PCI config space.
++ * Handles early SiS 961 bridges. Supports MWDMA as well unlike
++ * the old ide/pci driver.
++ *
++ * LOCKING:
++ * None (inherited from caller).
++ */
++
++static void sis_133_set_dmamode (struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ int speed = adev->dma_mode - XFER_MW_DMA_0;
++ int port = 0x40;
++ u32 t1;
++ u32 reg54;
++
++ /* bits 4- cycle time 8 - cvs time */
++ const u32 timing_u100[] = { 0x6B0, 0x470, 0x350, 0x140, 0x120, 0x110, 0x000 };
++ const u32 timing_u133[] = { 0x9F0, 0x6A0, 0x470, 0x250, 0x230, 0x220, 0x210 };
++
++ pci_read_config_dword(pdev, 0x54, &reg54);
++ if (reg54 & 0x40000000)
++ port = 0x70;
++ port += 8 * ap->hard_port_no + 4 * adev->devno;
++
++ pci_read_config_dword(pdev, port, &t1);
++
++ if (adev->dma_mode < XFER_UDMA_0) {
++ t1 &= ~0x00000004;
++ /* FIXME: need data sheet to add MWDMA here. Also lacking on
++ ide/pci driver */
++ } else {
++ speed = adev->dma_mode - XFER_UDMA_0;
++ /* if & 8 no UDMA133 - need info for ... */
++ t1 &= ~0x00000FF0;
++ t1 |= 0x00000004;
++ if (t1 & 0x08)
++ t1 |= timing_u133[speed];
++ else
++ t1 |= timing_u100[speed];
++ }
++ pci_write_config_dword(pdev, port, t1);
++}
++
++static struct scsi_host_template sis_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static const struct ata_port_operations sis_133_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sis_133_set_piomode,
++ .set_dmamode = sis_133_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sis_133_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static const struct ata_port_operations sis_133_early_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sis_100_set_piomode,
++ .set_dmamode = sis_133_early_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sis_66_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static const struct ata_port_operations sis_100_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sis_100_set_piomode,
++ .set_dmamode = sis_100_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sis_66_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static const struct ata_port_operations sis_66_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sis_old_set_piomode,
++ .set_dmamode = sis_66_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sis_66_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static const struct ata_port_operations sis_old_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sis_old_set_piomode,
++ .set_dmamode = sis_old_set_dmamode,
++
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sis_old_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
++
++ .eng_timeout = ata_eng_timeout,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop,
++};
++
++static struct ata_port_info sis_info = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07,
++ .udma_mask = 0,
++ .port_ops = &sis_old_ops,
++};
++static struct ata_port_info sis_info33 = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .mwdma_mask = 0x07,
++ .udma_mask = ATA_UDMA2, /* UDMA 33 */
++ .port_ops = &sis_old_ops,
++};
++static struct ata_port_info sis_info66 = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .udma_mask = ATA_UDMA4, /* UDMA 66 */
++ .port_ops = &sis_66_ops,
++};
++static struct ata_port_info sis_info100 = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .udma_mask = ATA_UDMA5,
++ .port_ops = &sis_100_ops,
++};
++static struct ata_port_info sis_info100_early = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .udma_mask = ATA_UDMA5,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .port_ops = &sis_66_ops,
++};
++static struct ata_port_info sis_info133 = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .udma_mask = ATA_UDMA6,
++ .port_ops = &sis_133_ops,
++};
++static struct ata_port_info sis_info133_early = {
++ .sht = &sis_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f, /* pio0-4 */
++ .udma_mask = ATA_UDMA6,
++ .port_ops = &sis_133_early_ops,
++};
++
++
++static void sis_fixup(struct pci_dev *pdev, struct sis_chipset *sis)
++{
++ u16 regw;
++ u8 reg;
++
++ if (sis->info == &sis_info133) {
++ pci_read_config_word(pdev, 0x50, &regw);
++ if (regw & 0x08)
++ pci_write_config_word(pdev, 0x50, regw & ~0x08);
++ pci_read_config_word(pdev, 0x52, &regw);
++ if (regw & 0x08)
++ pci_write_config_word(pdev, 0x52, regw & ~0x08);
++ return;
++ }
++
++ if (sis->info == &sis_info133_early || sis->info == &sis_info100) {
++ /* Fix up latency */
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);
++ /* Set compatibility bit */
++ pci_read_config_byte(pdev, 0x49, &reg);
++ if (!(reg & 0x01))
++ pci_write_config_byte(pdev, 0x49, reg | 0x01);
++ return;
++ }
++
++ if (sis->info == &sis_info66 || sis->info == &sis_info100_early) {
++ /* Fix up latency */
++ pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80);
++ /* Set compatibility bit */
++ pci_read_config_byte(pdev, 0x52, &reg);
++ if (!(reg & 0x04))
++ pci_write_config_byte(pdev, 0x52, reg | 0x04);
++ return;
++ }
++
++ if (sis->info == &sis_info33) {
++ pci_read_config_byte(pdev, PCI_CLASS_PROG, &reg);
++ if (( reg & 0x0F ) != 0x00)
++ pci_write_config_byte(pdev, PCI_CLASS_PROG, reg & 0xF0);
++ /* Fall through to ATA16 fixup below */
++ }
++
++ if (sis->info == &sis_info || sis->info == &sis_info33) {
++ /* force per drive recovery and active timings
++ needed on ATA_33 and below chips */
++ pci_read_config_byte(pdev, 0x52, &reg);
++ if (!(reg & 0x08))
++ pci_write_config_byte(pdev, 0x52, reg|0x08);
++ return;
++ }
++
++ BUG();
++}
++
++/**
++ * sis_init_one - Register SiS ATA PCI device with kernel services
++ * @pdev: PCI device to register
++ * @ent: Entry in sis_pci_tbl matching with @pdev
++ *
++ * Called from kernel PCI layer. We probe for combined mode (sigh),
++ * and then hand over control to libata, for it to do the rest.
++ *
++ * LOCKING:
++ * Inherited from PCI layer (may sleep).
++ *
++ * RETURNS:
++ * Zero on success, or -ERRNO value.
++ */
++
++static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
++{
++ static int printed_version;
++ static struct ata_port_info *port_info[2];
++ struct ata_port_info *port;
++ struct pci_dev *host;
++ struct sis_chipset *chipset = NULL;
++
++ static struct sis_chipset sis_chipsets[] = {
++ { 0x0745, &sis_info100 },
++ { 0x0735, &sis_info100 },
++ { 0x0733, &sis_info100 },
++ { 0x0635, &sis_info100 },
++ { 0x0633, &sis_info100 },
++
++ { 0x0730, &sis_info100_early }, /* 100 with ATA 66 layout */
++ { 0x0550, &sis_info100_early }, /* 100 with ATA 66 layout */
++
++ { 0x0640, &sis_info66 },
++ { 0x0630, &sis_info66 },
++ { 0x0620, &sis_info66 },
++ { 0x0540, &sis_info66 },
++ { 0x0530, &sis_info66 },
++
++ { 0x5600, &sis_info33 },
++ { 0x5598, &sis_info33 },
++ { 0x5597, &sis_info33 },
++ { 0x5591, &sis_info33 },
++ { 0x5582, &sis_info33 },
++ { 0x5581, &sis_info33 },
++
++ { 0x5596, &sis_info },
++ { 0x5571, &sis_info },
++ { 0x5517, &sis_info },
++ { 0x5511, &sis_info },
++
++ {0}
++ };
++ static struct sis_chipset sis133_early = {
++ 0x0, &sis_info133_early
++ };
++ static struct sis_chipset sis133 = {
++ 0x0, &sis_info133
++ };
++ static struct sis_chipset sis100_early = {
++ 0x0, &sis_info100_early
++ };
++ static struct sis_chipset sis100 = {
++ 0x0, &sis_info100
++ };
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev,
++ "version " DRV_VERSION "\n");
++
++ /* We have to find the bridge first */
++
++ for (chipset = &sis_chipsets[0]; chipset->device; chipset++) {
++ host = pci_get_device(0x1039, chipset->device, NULL);
++ if (host != NULL) {
++ if (chipset->device == 0x630) { /* SIS630 */
++ u8 host_rev;
++ pci_read_config_byte(host, PCI_REVISION_ID, &host_rev);
++ if (host_rev >= 0x30) /* 630 ET */
++ chipset = &sis100_early;
++ }
++ break;
++ }
++ }
++
++ /* Look for concealed bridges */
++ if (host == NULL) {
++ /* Second check */
++ u32 idemisc;
++ u16 trueid;
++
++ /* Disable ID masking and register remapping then
++ see what the real ID is */
++
++ pci_read_config_dword(pdev, 0x54, &idemisc);
++ pci_write_config_dword(pdev, 0x54, idemisc & 0x7fffffff);
++ pci_read_config_word(pdev, PCI_DEVICE_ID, &trueid);
++ pci_write_config_dword(pdev, 0x54, idemisc);
++
++ switch(trueid) {
++ case 0x5518: /* SIS 962/963 */
++ chipset = &sis133;
++ if ((idemisc & 0x40000000) == 0) {
++ pci_write_config_dword(pdev, 0x54, idemisc | 0x40000000);
++ printk(KERN_INFO "SIS5513: Switching to 5513 register mapping\n");
++ }
++ break;
++ case 0x0180: /* SIS 965/965L */
++ chipset = &sis133;
++ break;
++ case 0x1180: /* SIS 966/966L */
++ chipset = &sis133;
++ break;
++ }
++ }
++
++ /* Further check */
++ if (chipset == NULL) {
++ struct pci_dev *lpc_bridge;
++ u16 trueid;
++ u8 prefctl;
++ u8 idecfg;
++ u8 sbrev;
++
++ /* Try the second unmasking technique */
++ pci_read_config_byte(pdev, 0x4a, &idecfg);
++ pci_write_config_byte(pdev, 0x4a, idecfg | 0x10);
++ pci_read_config_word(pdev, PCI_DEVICE_ID, &trueid);
++ pci_write_config_byte(pdev, 0x4a, idecfg);
++
++ switch(trueid) {
++ case 0x5517:
++ lpc_bridge = pci_get_slot(0x00, 0x10); /* Bus 0 Dev 2 Fn 0 */
++ if (lpc_bridge == NULL)
++ break;
++ pci_read_config_byte(lpc_bridge, PCI_REVISION_ID, &sbrev);
++ pci_read_config_byte(pdev, 0x49, &prefctl);
++ pci_dev_put(lpc_bridge);
++
++ if (sbrev == 0x10 && (prefctl & 0x80)) {
++ chipset = &sis133_early;
++ break;
++ }
++ chipset = &sis100;
++ break;
++ }
++ }
++ pci_dev_put(host);
++
++ /* No chipset info, no support */
++ if (chipset == NULL)
++ return -ENODEV;
++
++ port = chipset->info;
++ port->private_data = chipset;
++
++ sis_fixup(pdev, chipset);
++
++ port_info[0] = port_info[1] = port;
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id sis_pci_tbl[] = {
++ { 0x1039, 0x5513, PCI_ANY_ID, PCI_ANY_ID, },
++ { 0x1039, 0x5518, PCI_ANY_ID, PCI_ANY_ID, },
++ { } /* terminate list */
++};
++
++static struct pci_driver sis_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = sis_pci_tbl,
++ .probe = sis_init_one,
++ .remove = ata_pci_remove_one,
++};
++
++static int __init sis_init(void)
++{
++ return pci_register_driver(&sis_pci_driver);
++}
++
++static void __exit sis_exit(void)
++{
++ pci_unregister_driver(&sis_pci_driver);
++}
++
++
++module_init(sis_init);
++module_exit(sis_exit);
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("SCSI low-level driver for SiS ATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, sis_pci_tbl);
++MODULE_VERSION(DRV_VERSION);
++
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sl82c105.c linux-2.6.16-rc6/drivers/scsi/pata_sl82c105.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_sl82c105.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_sl82c105.c 2006-02-16 15:36:32.000000000 +0000
+@@ -0,0 +1,376 @@
++/*
++ * pata_sl82c105.c - SL82C105 PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Based in part on linux/drivers/ide/pci/sl82c105.c
++ * SL82C105/Winbond 553 IDE driver
++ *
++ * and in part on the documentation and errata sheet
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_sl82c105"
++#define DRV_VERSION "0.1.1"
++
++enum {
++ /*
++ * SL82C105 PCI config register 0x40 bits.
++ */
++ CTRL_IDE_IRQB = (1 << 30),
++ CTRL_IDE_IRQA = (1 << 28),
++ CTRL_LEGIRQ = (1 << 11),
++ CTRL_P1F16 = (1 << 5),
++ CTRL_P1EN = (1 << 4),
++ CTRL_P0F16 = (1 << 1),
++ CTRL_P0EN = (1 << 0)
++};
++
++static void sl82c105_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits sl82c105_enable_bits[] = {
++ { 0x40, 1, 0x01, 0x01 },
++ { 0x40, 1, 0x10, 0x10 }
++ };
++
++ if (ap->hard_port_no && !pci_test_config_bits(pdev, &sl82c105_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ dev_printk(KERN_INFO, &pdev->dev, "port disabled. ignoring.\n");
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++
++/**
++ * sl82c105_configure_piomode - set chip PIO timing
++ * @ap: ATA interface
++ * @adev: ATA device
++ * @pio: PIO mode
++ *
++ * Called to do the PIO mode setup. Our timing registers are shared
++ * so a configure_dmamode call will undo any work we do here and vice
++ * versa
++ */
++
++static void sl82c105_configure_piomode(struct ata_port *ap, struct ata_device *adev, int pio)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static u16 pio_timing[5] = {
++ 0x50D, 0x407, 0x304, 0x242, 0x240
++ };
++ u16 dummy;
++ int timing = 0x44 + 8 * ap->hard_port_no + 4 * adev->devno;
++
++ pci_write_config_word(pdev, timing, pio_timing[pio]);
++ /* Can we lose this oddity of the old driver */
++ pci_read_config_word(pdev, timing, &dummy);
++}
++
++/**
++ * sl82c105_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the PIO mode setup. Our timing registers are shared
++ * but we want to set the PIO timing by default.
++ */
++
++static void sl82c105_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ sl82c105_configure_piomode(ap, adev, adev->pio_mode - XFER_PIO_0);
++}
++
++/**
++ * sl82c105_configure_dmamode - set DMA mode in chip
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Load DMA cycle times into the chip ready for a DMA transfer
++ * to occur.
++ */
++
++static void sl82c105_configure_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static u16 dma_timing[3] = {
++ 0x707, 0x201, 0x200
++ };
++ u16 dummy;
++ int timing = 0x44 + 8 * ap->hard_port_no + 4 * adev->devno;
++ int dma = adev->dma_mode - XFER_MW_DMA_0;
++
++ pci_write_config_word(pdev, timing, dma_timing[dma]);
++ /* Can we lose this oddity of the old driver */
++ pci_read_config_word(pdev, timing, &dummy);
++}
++
++/**
++ * sl82c105_set_dmamode - set initial DMA mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Called to do the DMA mode setup. This replaces the PIO timings
++ * for the device in question. Set appropriate PIO timings not DMA
++ * timings at this point.
++ */
++
++static void sl82c105_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ switch(adev->dma_mode) {
++ case XFER_MW_DMA_0:
++ sl82c105_configure_piomode(ap, adev, 1);
++ break;
++ case XFER_MW_DMA_1:
++ sl82c105_configure_piomode(ap, adev, 3);
++ break;
++ case XFER_MW_DMA_2:
++ sl82c105_configure_piomode(ap, adev, 3);
++ break;
++ default:
++ BUG();
++ }
++}
++
++/**
++ * sl82c105_reset_engine - Reset the DMA engine
++ * @ap: ATA interface
++ *
++ * The sl82c105 has some serious problems with the DMA engine
++ * when transfers don't run as expected or ATAPI is used. The
++ * recommended fix is to reset the engine each use using a chip
++ * test register.
++ */
++
++static void sl82c105_reset_engine(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u16 val;
++
++ pci_read_config_word(pdev, 0x7E, &val);
++ pci_write_config_word(pdev, 0x7E, val | 4);
++ pci_write_config_word(pdev, 0x7E, val & ~4);
++}
++
++/**
++ * sl82c105_bmdma_start - DMA engine begin
++ * @qc: ATA command
++ *
++ * Reset the DMA engine each use as recommended by the errata
++ * document.
++ *
++ * FIXME: if we switch clock at BMDMA start/end we might get better
++ * PIO performance on DMA capable devices.
++ */
++
++static void sl82c105_bmdma_start(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++
++ sl82c105_reset_engine(ap);
++
++ /* Set the clocks for DMA */
++ sl82c105_configure_dmamode(ap, qc->dev);
++ /* Activate DMA */
++ ata_bmdma_start(qc);
++}
++
++/**
++ * sl82c105_bmdma_end - DMA engine stop
++ * @qc: ATA command
++ *
++ * Reset the DMA engine each use as recommended by the errata
++ * document.
++ *
++ * This function is also called to turn off DMA when a timeout occurs
++ * during DMA operation. In both cases we need to reset the engine,
++ * so no actual eng_timeout handler is required.
++ *
++ * We assume bmdma_stop is always called if bmdma_start as called. If
++ * not then we may need to wrap qc_issue.
++ */
++
++static void sl82c105_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ struct ata_port *ap = qc->ap;
++
++ ata_bmdma_stop(qc);
++ sl82c105_reset_engine(ap);
++
++ /* This will redo the initial setup of the DMA device to matching
++ PIO timings */
++ sl82c105_set_dmamode(ap, qc->dev);
++}
++
++static struct scsi_host_template sl82c105_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations sl82c105_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = sl82c105_set_piomode,
++ .set_dmamode = sl82c105_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = sl82c105_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = sl82c105_bmdma_start,
++ .bmdma_stop = sl82c105_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * sl82c105_bridge_revision - find bridge version
++ * @pdev: PCI device for the ATA function
++ *
++ * Locates the PCI bridge associated with the ATA function and
++ * providing it is a Winbond 553 reports the revision. If it cannot
++ * find a revision or the right device it returns -1
++ */
++
++static int sl82c105_bridge_revision(struct pci_dev *pdev)
++{
++ struct pci_dev *bridge;
++ u8 rev;
++
++ /*
++ * The bridge should be part of the same device, but function 0.
++ */
++ bridge = pci_get_slot(pdev->bus,
++ PCI_DEVFN(PCI_SLOT(pdev->devfn), 0));
++ if (!bridge)
++ return -1;
++
++ /*
++ * Make sure it is a Winbond 553 and is an ISA bridge.
++ */
++ if (bridge->vendor != PCI_VENDOR_ID_WINBOND ||
++ bridge->device != PCI_DEVICE_ID_WINBOND_83C553 ||
++ bridge->class >> 8 != PCI_CLASS_BRIDGE_ISA) {
++ pci_dev_put(bridge);
++ return -1;
++ }
++ /*
++ * We need to find function 0's revision, not function 1
++ */
++ pci_read_config_byte(bridge, PCI_REVISION_ID, &rev);
++
++ pci_dev_put(bridge);
++ return rev;
++}
++
++
++static int sl82c105_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info_dma = {
++ .sht = &sl82c105_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &sl82c105_port_ops
++ };
++ static struct ata_port_info info_early = {
++ .sht = &sl82c105_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .port_ops = &sl82c105_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info_early, &info_early };
++ u32 val;
++ int rev;
++
++ rev = sl82c105_bridge_revision(dev);
++
++ if (rev == -1)
++ dev_printk(KERN_WARNING, &dev->dev, "pata_sl82c105: Unable to find bridge, disabling DMA.\n");
++ else if (rev <= 5)
++ dev_printk(KERN_WARNING, &dev->dev, "pata_sl82c105: Early bridge revision, no DMA available.\n");
++ else {
++ port_info[0] = &info_dma;
++ port_info[1] = &info_dma;
++ }
++
++ pci_read_config_dword(dev, 0x40, &val);
++ val |= CTRL_P0EN | CTRL_P0F16 | CTRL_P1F16;
++ pci_write_config_dword(dev, 0x40, val);
++
++
++ return ata_pci_init_one(dev, port_info, 1); /* For now */
++}
++
++static struct pci_device_id sl82c105[] = {
++ { PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { 0, },
++};
++
++static struct pci_driver sl82c105_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = sl82c105,
++ .probe = sl82c105_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init sl82c105_init(void)
++{
++ return pci_register_driver(&sl82c105_pci_driver);
++}
++
++
++static void __exit sl82c105_exit(void)
++{
++ pci_unregister_driver(&sl82c105_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Sl82c105");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, sl82c105);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(sl82c105_init);
++module_exit(sl82c105_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_triflex.c linux-2.6.16-rc6/drivers/scsi/pata_triflex.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_triflex.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_triflex.c 2006-02-16 15:36:23.000000000 +0000
+@@ -0,0 +1,268 @@
++/*
++ * pata_triflex.c - Compaq PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * based upon
++ *
++ * triflex.c
++ *
++ * IDE Chipset driver for the Compaq TriFlex IDE controller.
++ *
++ * Known to work with the Compaq Workstation 5x00 series.
++ *
++ * Copyright (C) 2002 Hewlett-Packard Development Group, L.P.
++ * Author: Torben Mathiasen <torben.mathiasen@hp.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * Loosely based on the piix & svwks drivers.
++ *
++ * Documentation:
++ * Not publically available.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_triflex"
++#define DRV_VERSION "0.2.1"
++
++static void triflex_phy_reset(struct ata_port *ap)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static struct pci_bits triflex_enable_bits[] = {
++ { 0x80, 1, 0x01, 0x01 },
++ { 0x80, 1, 0x02, 0x02 }
++ };
++
++ if (!pci_test_config_bits(pdev, &triflex_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++/**
++ * triflex_load_timing - timing configuration
++ * @ap: ATA interface
++ * @adev: Device on the bus
++ * @speed: speed to configure
++ *
++ * The Triflex has one set of timings per device per channel. This
++ * means we must do some switching. As the PIO and DMA timings don't
++ * match we have to do some reloading unlike PIIX devices where tuning
++ * tricks can avoid it.
++ */
++
++static void triflex_load_timing(struct ata_port *ap, struct ata_device *adev, int speed)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 timing = 0;
++ u32 triflex_timing, old_triflex_timing;
++ int channel_offset = ap->hard_port_no ? 0x74: 0x70;
++ unsigned int is_slave = (adev->devno != 0);
++
++
++ pci_read_config_dword(pdev, channel_offset, &old_triflex_timing);
++ triflex_timing = old_triflex_timing;
++
++ switch(speed)
++ {
++ case XFER_MW_DMA_2:
++ timing = 0x0103;break;
++ case XFER_MW_DMA_1:
++ timing = 0x0203;break;
++ case XFER_MW_DMA_0:
++ timing = 0x0808;break;
++ case XFER_SW_DMA_2:
++ case XFER_SW_DMA_1:
++ case XFER_SW_DMA_0:
++ timing = 0x0F0F;break;
++ case XFER_PIO_4:
++ timing = 0x0202;break;
++ case XFER_PIO_3:
++ timing = 0x0204;break;
++ case XFER_PIO_2:
++ timing = 0x0404;break;
++ case XFER_PIO_1:
++ timing = 0x0508;break;
++ case XFER_PIO_0:
++ timing = 0x0808;break;
++ default:
++ BUG();
++ }
++ triflex_timing &= ~ (0xFFFF << (16 * is_slave));
++ triflex_timing |= (timing << (16 * is_slave));
++
++ if (triflex_timing != old_triflex_timing)
++ pci_write_config_dword(pdev, channel_offset, triflex_timing);
++}
++
++/**
++ * triflex_set_piomode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * Use the timing loader to set up the PIO mode. We have to do this
++ * because DMA start/stop will only be called once DMA occurs. If there
++ * has been no DMA then the PIO timings are still needed.
++ */
++static void triflex_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ triflex_load_timing(ap, adev, adev->pio_mode);
++}
++
++/**
++ * triflex_dma_start - DMA start callback
++ * @qc: Command in progress
++ *
++ * Usually drivers set the DMA timing at the point the set_dmamode call
++ * is made. Triflex however requires we load new timings on the
++ * transition or keep matching PIO/DMA pairs (ie MWDMA2/PIO4 etc).
++ * We load the DMA timings just before starting DMA and then restore
++ * the PIO timing when the DMA is finished.
++ */
++
++static void triflex_bmdma_start(struct ata_queued_cmd *qc)
++{
++ triflex_load_timing(qc->ap, qc->dev, qc->dev->dma_mode);
++ ata_bmdma_start(qc);
++}
++
++/**
++ * triflex_dma_stop - DMA stop callback
++ * @ap: ATA interface
++ * @adev: ATA device
++ *
++ * We loaded new timings in dma_start, as a result we need to restore
++ * the PIO timings in dma_stop so that the next command issue gets the
++ * right clock values.
++ */
++
++static void triflex_bmdma_stop(struct ata_queued_cmd *qc)
++{
++ ata_bmdma_stop(qc);
++ triflex_load_timing(qc->ap, qc->dev, qc->dev->pio_mode);
++}
++
++static struct scsi_host_template triflex_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations triflex_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = triflex_set_piomode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = triflex_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = triflex_bmdma_start,
++ .bmdma_stop = triflex_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static int triflex_init_one(struct pci_dev *dev, const struct pci_device_id *id)
++{
++ static struct ata_port_info info = {
++ .sht = &triflex_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &triflex_port_ops
++ };
++ static struct ata_port_info *port_info[2] = { &info, &info };
++ static int printed_version;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n");
++
++ return ata_pci_init_one(dev, port_info, 2);
++}
++
++static const struct pci_device_id triflex[] = {
++ { PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE,
++ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
++ { 0, },
++};
++
++static struct pci_driver triflex_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = triflex,
++ .probe = triflex_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init triflex_init(void)
++{
++ return pci_register_driver(&triflex_pci_driver);
++}
++
++
++static void __exit triflex_exit(void)
++{
++ pci_unregister_driver(&triflex_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for Compaq Triflex");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, triflex);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(triflex_init);
++module_exit(triflex_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pata_via.c linux-2.6.16-rc6/drivers/scsi/pata_via.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pata_via.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc6/drivers/scsi/pata_via.c 2006-03-10 16:27:29.000000000 +0000
+@@ -0,0 +1,563 @@
++/*
++ * pata_via.c - VIA PATA for new ATA layer
++ * (C) 2005 Red Hat Inc
++ * Alan Cox <alan@redhat.com>
++ *
++ * Documentation
++ * Most chipset documentation available under NDA only
++ *
++ * VIA version guide
++ * VIA VT82C561 - early design, uses ata_generic currently
++ * VIA VT82C576 - MWDMA, 33Mhz
++ * VIA VT82C586 - MWDMA, 33Mhz
++ * VIA VT82C586a - Added UDMA to 33Mhz
++ * VIA VT82C586b - UDMA33
++ * VIA VT82C596a - Nonfunctional UDMA66
++ * VIA VT82C596b - Working UDMA66
++ * VIA VT82C686 - Nonfunctional UDMA66
++ * VIA VT82C686a - Working UDMA66
++ * VIA VT82C686b - Updated to UDMA100
++ * VIA VT8231 - UDMA100
++ * VIA VT8233 - UDMA100
++ * VIA VT8233a - UDMA133
++ * VIA VT8233c - UDMA100
++ * VIA VT8235 - UDMA133
++ * VIA VT8237 - UDMA133
++ *
++ * Most registers remain compatible across chips. Others start reserved
++ * and acquire sensible semantics if set to 1 (eg cable detect). A few
++ * exceptions exist, notably around the FIFO settings.
++ *
++ * One additional quirk of the VIA design is that like ALi they use few
++ * PCI IDs for a lot of chips.
++ *
++ * Based heavily on:
++ *
++ * Version 3.38
++ *
++ * VIA IDE driver for Linux. Supported southbridges:
++ *
++ * vt82c576, vt82c586, vt82c586a, vt82c586b, vt82c596a, vt82c596b,
++ * vt82c686, vt82c686a, vt82c686b, vt8231, vt8233, vt8233c, vt8233a,
++ * vt8235, vt8237
++ *
++ * Copyright (c) 2000-2002 Vojtech Pavlik
++ *
++ * Based on the work of:
++ * Michel Aubry
++ * Jeff Garzik
++ * Andre Hedrick
++
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/init.h>
++#include <linux/blkdev.h>
++#include <linux/delay.h>
++#include <scsi/scsi_host.h>
++#include <linux/libata.h>
++
++#define DRV_NAME "pata_via"
++#define DRV_VERSION "0.1.6"
++
++/*
++ * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx
++ * driver.
++ */
++
++enum {
++ VIA_UDMA = 0x007,
++ VIA_UDMA_NONE = 0x000,
++ VIA_UDMA_33 = 0x001,
++ VIA_UDMA_66 = 0x002,
++ VIA_UDMA_100 = 0x003,
++ VIA_UDMA_133 = 0x004,
++ VIA_BAD_PREQ = 0x010, /* Crashes if PREQ# till DDACK# set */
++ VIA_BAD_CLK66 = 0x020, /* 66 MHz clock doesn't work correctly */
++ VIA_SET_FIFO = 0x040, /* Needs to have FIFO split set */
++ VIA_NO_UNMASK = 0x080, /* Doesn't work with IRQ unmasking on */
++ VIA_BAD_ID = 0x100, /* Has wrong vendor ID (0x1107) */
++ VIA_BAD_AST = 0x200, /* Don't touch Address Setup Timing */
++ VIA_NO_ENABLES = 0x400, /* Has no enablebits */
++};
++
++/*
++ * VIA SouthBridge chips.
++ */
++
++static const struct via_isa_bridge {
++ const char *name;
++ u16 id;
++ u8 rev_min;
++ u8 rev_max;
++ u16 flags;
++} via_isa_bridges[] = {
++ { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_NO_ENABLES},
++ { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
++ { "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
++ { "vt8233a", PCI_DEVICE_ID_VIA_8233A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
++ { "vt8233c", PCI_DEVICE_ID_VIA_8233C_0, 0x00, 0x2f, VIA_UDMA_100 },
++ { "vt8233", PCI_DEVICE_ID_VIA_8233_0, 0x00, 0x2f, VIA_UDMA_100 },
++ { "vt8231", PCI_DEVICE_ID_VIA_8231, 0x00, 0x2f, VIA_UDMA_100 },
++ { "vt82c686b", PCI_DEVICE_ID_VIA_82C686, 0x40, 0x4f, VIA_UDMA_100 },
++ { "vt82c686a", PCI_DEVICE_ID_VIA_82C686, 0x10, 0x2f, VIA_UDMA_66 },
++ { "vt82c686", PCI_DEVICE_ID_VIA_82C686, 0x00, 0x0f, VIA_UDMA_33 | VIA_BAD_CLK66 },
++ { "vt82c596b", PCI_DEVICE_ID_VIA_82C596, 0x10, 0x2f, VIA_UDMA_66 },
++ { "vt82c596a", PCI_DEVICE_ID_VIA_82C596, 0x00, 0x0f, VIA_UDMA_33 | VIA_BAD_CLK66 },
++ { "vt82c586b", PCI_DEVICE_ID_VIA_82C586_0, 0x47, 0x4f, VIA_UDMA_33 | VIA_SET_FIFO },
++ { "vt82c586b", PCI_DEVICE_ID_VIA_82C586_0, 0x40, 0x46, VIA_UDMA_33 | VIA_SET_FIFO | VIA_BAD_PREQ },
++ { "vt82c586b", PCI_DEVICE_ID_VIA_82C586_0, 0x30, 0x3f, VIA_UDMA_33 | VIA_SET_FIFO },
++ { "vt82c586a", PCI_DEVICE_ID_VIA_82C586_0, 0x20, 0x2f, VIA_UDMA_33 | VIA_SET_FIFO },
++ { "vt82c586", PCI_DEVICE_ID_VIA_82C586_0, 0x00, 0x0f, VIA_UDMA_NONE | VIA_SET_FIFO },
++ { "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK },
++ { "vt82c576", PCI_DEVICE_ID_VIA_82C576, 0x00, 0x2f, VIA_UDMA_NONE | VIA_SET_FIFO | VIA_NO_UNMASK | VIA_BAD_ID },
++ { NULL }
++};
++
++/**
++ * via_cable_detect - cable detection
++ * @ap: ATA port
++ *
++ * Perform cable detection. Actually for the VIA case the BIOS
++ * already did this for us. We read the values provided by the
++ * BIOS. If you are using an 8235 in a non-PC configuration you
++ * may need to update this code.
++ *
++ * Hotplug also impacts on this.
++ */
++
++static int via_cable_detect(struct ata_port *ap) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ u32 ata66;
++
++ pci_read_config_dword(pdev, 0x50, &ata66);
++ /* Check both the drive cable reporting bits, we might not have
++ two drives */
++ if (ata66 & (0x1010 << (16 * ap->hard_port_no)))
++ return ATA_CBL_PATA80;
++ else
++ return ATA_CBL_PATA40;
++}
++
++/**
++ * via_phy_reset - reset for eary chip
++ * @ap: ATA port
++ *
++ * Handle the reset callback for the later chips with cable detect
++ */
++
++static void via_phy_reset(struct ata_port *ap)
++{
++ const struct via_isa_bridge *config = ap->host_set->private_data;
++
++ if (!(config->flags & VIA_NO_ENABLES)) {
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ static const struct pci_bits via_enable_bits[] = {
++ { 0x40, 1, 0x02, 0x02 },
++ { 0x40, 1, 0x01, 0x01 }
++ };
++
++ if (!pci_test_config_bits(pdev, &via_enable_bits[ap->hard_port_no])) {
++ ata_port_disable(ap);
++ printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
++ return;
++ }
++ }
++
++ if ((config->flags & VIA_UDMA) >= VIA_UDMA_66)
++ ap->cbl = via_cable_detect(ap);
++ else
++ ap->cbl = ATA_CBL_PATA40;
++
++ ata_bus_reset(ap);
++ ata_port_probe(ap);
++}
++
++/**
++ * via_do_set_mode - set initial PIO mode data
++ * @ap: ATA interface
++ * @adev: ATA device
++ * @mode: ATA mode being programmed
++ * @tdiv: Clocks per PCI clock
++ * @set_ast: Set to program address setup
++ * @udma_type: UDMA mode/format of registers
++ *
++ * Program the VIA registers for DMA and PIO modes. Uses the ata timing
++ * support in order to compute modes.
++ *
++ * FIXME: Hotplug will require we serialize multiple mode changes
++ * on the two channels.
++ */
++
++static void via_do_set_mode(struct ata_port *ap, struct ata_device *adev, int mode, int tdiv, int set_ast, int udma_type)
++{
++ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
++ struct ata_device *peer = ata_dev_pair(ap, adev);
++ struct ata_timing t, p;
++ static int via_clock = 33333; /* Bus clock in kHZ - ought to be tunable one day */
++ unsigned long T = 1000000000 / via_clock;
++ unsigned long UT = T/tdiv;
++ int ut;
++ int offset = 3 - (2*ap->hard_port_no) - adev->devno;
++
++
++ /* Calculate the timing values we require */
++ ata_timing_compute(adev, adev->pio_mode, &t, T, UT);
++
++ /* We share 8bit timing so we must merge the constraints */
++ if (peer) {
++ if (peer->pio_mode) {
++ ata_timing_compute(peer, peer->pio_mode, &p, T, UT);
++ ata_timing_merge(&p, &t, &t, ATA_TIMING_8BIT);
++ }
++ }
++
++ /* Address setup is programmable but breaks on UDMA133 setups */
++ if (set_ast) {
++ u8 setup; /* 2 bits per drive */
++ int shift = 2 * offset;
++
++ pci_read_config_byte(pdev, 0x4C, &setup);
++ setup &= ~(3 << shift);
++ setup |= FIT(t.setup, 1, 4) << shift; /* 1,4 or 1,4 - 1 FIXME */
++ pci_write_config_byte(pdev, 0x4C, setup);
++ }
++
++ printk(KERN_DEBUG "via_do_set_mode: Mode=%d ast broken=%c udma=%d mul=%d\n",
++ mode, "YN"[set_ast], udma_type, tdiv);
++ printk(KERN_DEBUG "t.act8b = %d, t.rec8b = %d, t.active = %d, t.recover = %d\n",
++ t.act8b, t.rec8b, t.active, t.recover);
++ printk(KERN_DEBUG "FIT t.act8b = %d, t.rec8b = %d, t.active = %d, t.recover = %d\n",
++ FIT(t.act8b,1,16) -1,
++ FIT(t.rec8b,1,16) -1,
++ FIT(t.active,1,16) -1,
++ FIT(t.recover,1,16) -1);
++
++ /* Load the PIO mode bits */
++ pci_write_config_byte(pdev, 0x4F - ap->hard_port_no,
++ ((FIT(t.act8b, 1, 16) - 1) << 4) | (FIT(t.rec8b, 1, 16) - 1));
++ pci_write_config_byte(pdev, 0x48 + offset,
++ ((FIT(t.active, 1, 16) - 1) << 4) | (FIT(t.recover, 1, 16) - 1));
++
++ /* Load the UDMA bits according to type */
++ switch(udma_type) {
++ default:
++ /* BUG() ? */
++ /* fall through */
++ case 33:
++ ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 5) - 2)) : 0x03;
++ break;
++ case 66:
++ ut = t.udma ? (0xe8 | (FIT(t.udma, 2, 9) - 2)) : 0x0f;
++ break;
++ case 100:
++ ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 9) - 2)) : 0x07;
++ break;
++ case 133:
++ ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 9) - 2)) : 0x07;
++ break;
++ }
++ /* Set UDMA unless device is not UDMA capable */
++ if (udma_type)
++ pci_write_config_byte(pdev, 0x50 + offset, ut);
++}
++
++static void via_set_piomode(struct ata_port *ap, struct ata_device *adev)
++{
++ const struct via_isa_bridge *config = ap->host_set->private_data;
++ int set_ast = (config->flags & VIA_BAD_AST) ? 0 : 1;
++ int mode = config->flags & VIA_UDMA;
++ static u8 tclock[5] = { 1, 1, 2, 3, 4 };
++ static u8 udma[5] = { 0, 33, 66, 100, 133 };
++
++ via_do_set_mode(ap, adev, adev->pio_mode, tclock[mode], set_ast, udma[mode]);
++}
++
++static void via_set_dmamode(struct ata_port *ap, struct ata_device *adev)
++{
++ const struct via_isa_bridge *config = ap->host_set->private_data;
++ int set_ast = (config->flags & VIA_BAD_AST) ? 0 : 1;
++ int mode = config->flags & VIA_UDMA;
++ static u8 tclock[5] = { 1, 1, 2, 3, 4 };
++ static u8 udma[5] = { 0, 33, 66, 100, 133 };
++
++ via_do_set_mode(ap, adev, adev->dma_mode, tclock[mode], set_ast, udma[mode]);
++}
++
++static struct scsi_host_template via_sht = {
++ .module = THIS_MODULE,
++ .name = DRV_NAME,
++ .ioctl = ata_scsi_ioctl,
++ .queuecommand = ata_scsi_queuecmd,
++ .eh_strategy_handler = ata_scsi_error,
++ .can_queue = ATA_DEF_QUEUE,
++ .this_id = ATA_SHT_THIS_ID,
++ .sg_tablesize = LIBATA_MAX_PRD,
++ .max_sectors = ATA_MAX_SECTORS,
++ .cmd_per_lun = ATA_SHT_CMD_PER_LUN,
++ .emulated = ATA_SHT_EMULATED,
++ .use_clustering = ATA_SHT_USE_CLUSTERING,
++ .proc_name = DRV_NAME,
++ .dma_boundary = ATA_DMA_BOUNDARY,
++ .slave_configure = ata_scsi_slave_config,
++ .bios_param = ata_std_bios_param,
++// .ordered_flush = 1,
++};
++
++static struct ata_port_operations via_port_ops = {
++ .port_disable = ata_port_disable,
++ .set_piomode = via_set_piomode,
++ .set_dmamode = via_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = via_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++static struct ata_port_operations via_port_ops_noirq = {
++ .port_disable = ata_port_disable,
++ .set_piomode = via_set_piomode,
++ .set_dmamode = via_set_dmamode,
++ .tf_load = ata_tf_load,
++ .tf_read = ata_tf_read,
++ .check_status = ata_check_status,
++ .exec_command = ata_exec_command,
++ .dev_select = ata_std_dev_select,
++
++ .phy_reset = via_phy_reset,
++
++ .bmdma_setup = ata_bmdma_setup,
++ .bmdma_start = ata_bmdma_start,
++ .bmdma_stop = ata_bmdma_stop,
++ .bmdma_status = ata_bmdma_status,
++
++ .qc_prep = ata_qc_prep,
++ .qc_issue = ata_qc_issue_prot,
++ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer_noirq,
++
++ .irq_handler = ata_interrupt,
++ .irq_clear = ata_bmdma_irq_clear,
++
++ .port_start = ata_port_start,
++ .port_stop = ata_port_stop,
++ .host_stop = ata_host_stop
++};
++
++/**
++ * via_init_one - discovery callback
++ * @pdev: PCI device ID
++ * @id: PCI table info
++ *
++ * A VIA IDE interface has been discovered. Figure out what revision
++ * and perform configuration work before handing it to the ATA layer
++ */
++
++static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ /* Early VIA without UDMA support */
++ static struct ata_port_info via_mwdma_info = {
++ .sht = &via_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &via_port_ops
++ };
++ /* Ditto with IRQ masking required */
++ static struct ata_port_info via_mwdma_info_borked = {
++ .sht = &via_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_IRQ_MASK,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .port_ops = &via_port_ops_noirq,
++ };
++ /* VIA UDMA 33 devices (and borked 66) */
++ static struct ata_port_info via_udma33_info = {
++ .sht = &via_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7,
++ .port_ops = &via_port_ops
++ };
++ /* VIA UDMA 66 devices */
++ static struct ata_port_info via_udma66_info = {
++ .sht = &via_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x1f,
++ .port_ops = &via_port_ops
++ };
++ /* VIA UDMA 100 devices */
++ static struct ata_port_info via_udma100_info = {
++ .sht = &via_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x3f,
++ .port_ops = &via_port_ops
++ };
++ /* UDMA133 with bad AST (All current 133) */
++ static struct ata_port_info via_udma133_info = {
++ .sht = &via_sht,
++ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
++ .pio_mask = 0x1f,
++ .mwdma_mask = 0x07,
++ .udma_mask = 0x7f, /* FIXME: should check north bridge */
++ .port_ops = &via_port_ops
++ };
++ struct ata_port_info *port_info[2], *type;
++ struct pci_dev *isa = NULL;
++ const struct via_isa_bridge *config;
++ static int printed_version;
++ u8 t;
++ u8 enable;
++ u32 timing;
++
++ if (!printed_version++)
++ dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
++
++ /* To find out how the IDE will behave and what features we
++ actually have to look at the bridge not the IDE controller */
++ for (config = via_isa_bridges; config->id; config++)
++ if ((isa = pci_get_device(PCI_VENDOR_ID_VIA +
++ !!(config->flags & VIA_BAD_ID),
++ config->id, NULL))) {
++
++ pci_read_config_byte(isa, PCI_REVISION_ID, &t);
++ if (t >= config->rev_min &&
++ t <= config->rev_max)
++ break;
++ pci_dev_put(isa);
++ }
++
++ if (!config->id) {
++ printk(KERN_WARNING "via: Unknown VIA SouthBridge, disabling.\n");
++ return -ENODEV;
++ }
++
++ /* 0x40 low bits indicate enabled channels */
++ pci_read_config_byte(pdev, 0x40 , &enable);
++ enable &= 3;
++ if (enable == 0) {
++ pci_dev_put(isa);
++ return -ENODEV;
++ }
++
++ /* Initialise the FIFO for the enabled channels. */
++ if (config->flags & VIA_SET_FIFO) {
++ u8 fifo_setting[4] = {0x00, 0x60, 0x00, 0x20};
++ u8 fifo;
++
++ pci_read_config_byte(pdev, 0x43, &fifo);
++
++ /* Clear PREQ# until DDACK# for errata */
++ if (config->flags & VIA_BAD_PREQ)
++ fifo &= 0x7F;
++ else
++ fifo &= 0x9f;
++ /* Turn on FIFO for enabled channels */
++ fifo |= fifo_setting[enable];
++ pci_write_config_byte(pdev, 0x43, fifo);
++ }
++ /* Clock set up */
++ switch(config->flags & VIA_UDMA) {
++ case VIA_UDMA_NONE:
++ if (config->flags & VIA_NO_UNMASK)
++ type = &via_mwdma_info_borked;
++ else
++ type = &via_mwdma_info;
++ break;
++ case VIA_UDMA_33:
++ type = &via_udma33_info;
++ break;
++ case VIA_UDMA_66:
++ type = &via_udma66_info;
++ /* The 66 MHz devices require we enable the clock */
++ pci_read_config_dword(pdev, 0x50, &timing);
++ timing |= 0x80008;
++ pci_write_config_dword(pdev, 0x50, timing);
++ break;
++ case VIA_UDMA_100:
++ type = &via_udma100_info;
++ break;
++ case VIA_UDMA_133:
++ type = &via_udma133_info;
++ break;
++ default:
++ type = NULL;
++ BUG();
++ break;
++ }
++
++ if (config->flags & VIA_BAD_CLK66) {
++ /* Disable the 66MHz clock on problem devices */
++ pci_read_config_dword(pdev, 0x50, &timing);
++ timing &= ~0x80008;
++ pci_write_config_dword(pdev, 0x50, timing);
++ }
++
++ /* We have established the device type, now fire it up */
++ type->private_data = (void *)config;
++
++ port_info[0] = port_info[1] = type;
++ return ata_pci_init_one(pdev, port_info, 2);
++}
++
++static const struct pci_device_id via[] = {
++ { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
++ { 0, },
++};
++
++static struct pci_driver via_pci_driver = {
++ .name = DRV_NAME,
++ .id_table = via,
++ .probe = via_init_one,
++ .remove = ata_pci_remove_one
++};
++
++static int __init via_init(void)
++{
++ return pci_register_driver(&via_pci_driver);
++}
++
++
++static void __exit via_exit(void)
++{
++ pci_unregister_driver(&via_pci_driver);
++}
++
++
++MODULE_AUTHOR("Alan Cox");
++MODULE_DESCRIPTION("low-level driver for VIA PATA");
++MODULE_LICENSE("GPL");
++MODULE_DEVICE_TABLE(pci, via);
++MODULE_VERSION(DRV_VERSION);
++
++module_init(via_init);
++module_exit(via_exit);
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/pdc_adma.c linux-2.6.16-rc6/drivers/scsi/pdc_adma.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/pdc_adma.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/pdc_adma.c 2006-02-23 13:15:50.000000000 +0000
+@@ -322,7 +322,7 @@
+ = (pFLAGS & pEND) ? 0 : cpu_to_le32(pp->pkt_dma + i + 4);
+ i += 4;
+
+- VPRINTK("PRD[%u] = (0x%lX, 0x%X)\n", nelem,
++ VPRINTK("PRD[%u] = (0x%lX, 0x%X)\n", i/4,
+ (unsigned long)addr, len);
+ }
+ return i;
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_mv.c linux-2.6.16-rc6/drivers/scsi/sata_mv.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_mv.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_mv.c 2006-02-20 11:28:03.000000000 +0000
+@@ -389,6 +389,7 @@
+
+ .qc_prep = mv_qc_prep,
+ .qc_issue = mv_qc_issue,
++ .data_xfer = ata_mmio_data_xfer,
+
+ .eng_timeout = mv_eng_timeout,
+
+@@ -416,6 +417,7 @@
+
+ .qc_prep = mv_qc_prep,
+ .qc_issue = mv_qc_issue,
++ .data_xfer = ata_mmio_data_xfer,
+
+ .eng_timeout = mv_eng_timeout,
+
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_nv.c linux-2.6.16-rc6/drivers/scsi/sata_nv.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_nv.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_nv.c 2006-01-21 17:08:58.000000000 +0000
+@@ -258,6 +258,7 @@
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
+ .eng_timeout = ata_eng_timeout,
++ .data_xfer = ata_pio_data_xfer,
+ .irq_handler = nv_interrupt,
+ .irq_clear = ata_bmdma_irq_clear,
+ .scr_read = nv_scr_read,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_promise.c linux-2.6.16-rc6/drivers/scsi/sata_promise.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_promise.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_promise.c 2006-02-06 12:36:12.000000000 +0000
+@@ -130,6 +130,7 @@
+ .qc_prep = pdc_qc_prep,
+ .qc_issue = pdc_qc_issue_prot,
+ .eng_timeout = pdc_eng_timeout,
++ .data_xfer = ata_mmio_data_xfer,
+ .irq_handler = pdc_interrupt,
+ .irq_clear = pdc_irq_clear,
+
+@@ -152,6 +153,7 @@
+
+ .qc_prep = pdc_qc_prep,
+ .qc_issue = pdc_qc_issue_prot,
++ .data_xfer = ata_mmio_data_xfer,
+ .eng_timeout = pdc_eng_timeout,
+ .irq_handler = pdc_interrupt,
+ .irq_clear = pdc_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_qstor.c linux-2.6.16-rc6/drivers/scsi/sata_qstor.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_qstor.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_qstor.c 2006-02-27 14:35:16.000000000 +0000
+@@ -158,6 +158,7 @@
+ .phy_reset = qs_phy_reset,
+ .qc_prep = qs_qc_prep,
+ .qc_issue = qs_qc_issue,
++ .data_xfer = ata_mmio_data_xfer,
+ .eng_timeout = qs_eng_timeout,
+ .irq_handler = qs_intr,
+ .irq_clear = qs_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sil24.c linux-2.6.16-rc6/drivers/scsi/sata_sil24.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sil24.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_sil24.c 2006-01-21 17:10:52.000000000 +0000
+@@ -309,6 +309,7 @@
+
+ .qc_prep = sil24_qc_prep,
+ .qc_issue = sil24_qc_issue,
++ .data_xfer = ata_mmio_data_xfer,
+
+ .eng_timeout = sil24_eng_timeout,
+
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sil.c linux-2.6.16-rc6/drivers/scsi/sata_sil.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sil.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_sil.c 2006-03-13 14:03:24.000000000 +0000
+@@ -167,6 +167,7 @@
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_mmio_data_xfer,
+ .eng_timeout = ata_eng_timeout,
+ .irq_handler = ata_interrupt,
+ .irq_clear = ata_bmdma_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sis.c linux-2.6.16-rc6/drivers/scsi/sata_sis.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sis.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_sis.c 2006-01-21 17:11:23.000000000 +0000
+@@ -115,6 +115,7 @@
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
+ .eng_timeout = ata_eng_timeout,
+ .irq_handler = ata_interrupt,
+ .irq_clear = ata_bmdma_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_svw.c linux-2.6.16-rc6/drivers/scsi/sata_svw.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_svw.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_svw.c 2006-02-06 12:30:23.000000000 +0000
+@@ -320,6 +320,7 @@
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_mmio_data_xfer,
+ .eng_timeout = ata_eng_timeout,
+ .irq_handler = ata_interrupt,
+ .irq_clear = ata_bmdma_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sx4.c linux-2.6.16-rc6/drivers/scsi/sata_sx4.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_sx4.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_sx4.c 2006-01-21 17:12:01.000000000 +0000
+@@ -206,6 +206,7 @@
+ .phy_reset = pdc_20621_phy_reset,
+ .qc_prep = pdc20621_qc_prep,
+ .qc_issue = pdc20621_qc_issue_prot,
++ .data_xfer = ata_mmio_data_xfer,
+ .eng_timeout = pdc_eng_timeout,
+ .irq_handler = pdc20621_interrupt,
+ .irq_clear = pdc20621_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_uli.c linux-2.6.16-rc6/drivers/scsi/sata_uli.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_uli.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_uli.c 2006-01-21 17:12:24.000000000 +0000
+@@ -106,6 +106,7 @@
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
+
+ .eng_timeout = ata_eng_timeout,
+
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_via.c linux-2.6.16-rc6/drivers/scsi/sata_via.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_via.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_via.c 2006-01-21 17:12:51.000000000 +0000
+@@ -126,6 +126,7 @@
+
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
+
+ .eng_timeout = ata_eng_timeout,
+
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/drivers/scsi/sata_vsc.c linux-2.6.16-rc6/drivers/scsi/sata_vsc.c
+--- linux.vanilla-2.6.16-rc6/drivers/scsi/sata_vsc.c 2006-03-13 14:00:14.000000000 +0000
++++ linux-2.6.16-rc6/drivers/scsi/sata_vsc.c 2006-02-20 11:28:11.000000000 +0000
+@@ -280,6 +280,7 @@
+ .bmdma_status = ata_bmdma_status,
+ .qc_prep = ata_qc_prep,
+ .qc_issue = ata_qc_issue_prot,
++ .data_xfer = ata_pio_data_xfer,
+ .eng_timeout = ata_eng_timeout,
+ .irq_handler = vsc_sata_interrupt,
+ .irq_clear = ata_bmdma_irq_clear,
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/include/linux/ata.h linux-2.6.16-rc6/include/linux/ata.h
+--- linux.vanilla-2.6.16-rc6/include/linux/ata.h 2006-03-13 14:00:15.000000000 +0000
++++ linux-2.6.16-rc6/include/linux/ata.h 2006-02-15 14:39:41.000000000 +0000
+@@ -134,6 +134,8 @@
+ ATA_CMD_PIO_READ_EXT = 0x24,
+ ATA_CMD_PIO_WRITE = 0x30,
+ ATA_CMD_PIO_WRITE_EXT = 0x34,
++ ATA_CMD_READ_NATIVE_MAX = 0xF8,
++ ATA_CMD_READ_NATIVE_MAX_EXT = 0x27,
+ ATA_CMD_READ_MULTI = 0xC4,
+ ATA_CMD_READ_MULTI_EXT = 0x29,
+ ATA_CMD_WRITE_MULTI = 0xC5,
+@@ -247,18 +249,22 @@
+ };
+
+ #define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0)
++#define ata_id_is_cfa(id) ((id)[0] == 0x848A)
+ #define ata_id_is_sata(id) ((id)[93] == 0)
+ #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6))
+ #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5))
++#define ata_id_hpa_enabled(id) ((id)[85] & (1 << 10))
+ #define ata_id_has_fua(id) ((id)[84] & (1 << 6))
+ #define ata_id_has_flush(id) ((id)[83] & (1 << 12))
+ #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13))
+ #define ata_id_has_lba48(id) ((id)[83] & (1 << 10))
++#define ata_id_has_hpa(id) ((id)[82] & (1 << 10))
+ #define ata_id_has_wcache(id) ((id)[82] & (1 << 5))
+ #define ata_id_has_pm(id) ((id)[82] & (1 << 3))
+ #define ata_id_has_lba(id) ((id)[49] & (1 << 9))
+ #define ata_id_has_dma(id) ((id)[49] & (1 << 8))
+ #define ata_id_removeable(id) ((id)[0] & (1 << 7))
++#define ata_id_has_dword_io(id) ((id)[50] & (1 << 0))
+ #define ata_id_u32(id,n) \
+ (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
+ #define ata_id_u64(id,n) \
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc6/include/linux/libata.h linux-2.6.16-rc6/include/linux/libata.h
+--- linux.vanilla-2.6.16-rc6/include/linux/libata.h 2006-03-13 14:00:15.000000000 +0000
++++ linux-2.6.16-rc6/include/linux/libata.h 2006-03-10 16:48:12.000000000 +0000
+@@ -39,9 +39,9 @@
+ */
+ #undef ATA_DEBUG /* debugging output */
+ #undef ATA_VERBOSE_DEBUG /* yet more debugging output */
+-#undef ATA_IRQ_TRAP /* define to ack screaming irqs */
++#define ATA_IRQ_TRAP /* define to ack screaming irqs */
+ #undef ATA_NDEBUG /* define to disable quick runtime checks */
+-#undef ATA_ENABLE_PATA /* define to enable PATA support in some
++#define ATA_ENABLE_PATA /* define to enable PATA support in some
+ * low-level drivers */
+ #undef ATAPI_ENABLE_DMADIR /* enables ATAPI DMADIR bridge support */
+
+@@ -101,6 +101,7 @@
+ ATA_DFLAG_PIO = (1 << 1), /* device currently in PIO mode */
+ ATA_DFLAG_LOCK_SECTORS = (1 << 2), /* don't adjust max_sectors */
+ ATA_DFLAG_LBA = (1 << 3), /* device supports LBA */
++ ATA_DFLAG_HPA = (1 << 4), /* device has an HPA */
+
+ ATA_DEV_UNKNOWN = 0, /* unknown device */
+ ATA_DEV_ATA = 1, /* ATA device */
+@@ -133,6 +134,8 @@
+ ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */
+ ATA_QCFLAG_SINGLE = (1 << 4), /* no s/g, just a single buffer */
+ ATA_QCFLAG_DMAMAP = ATA_QCFLAG_SG | ATA_QCFLAG_SINGLE,
++
++ ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host_set only */
+
+ /* various lengths of time */
+ ATA_TMOUT_EDD = 5 * HZ, /* heuristic */
+@@ -197,6 +200,7 @@
+
+ /* forward declarations */
+ struct scsi_device;
++struct ata_host_set;
+ struct ata_port_operations;
+ struct ata_port;
+ struct ata_queued_cmd;
+@@ -237,8 +241,10 @@
+ unsigned long irq;
+ unsigned int irq_flags;
+ unsigned long host_flags;
++ unsigned long host_set_flags;
+ void __iomem *mmio_base;
+ void *private_data;
++ struct ata_host_set *host_set; /* Return not input value */
+ };
+
+ struct ata_host_set {
+@@ -250,6 +256,9 @@
+ void *private_data;
+ const struct ata_port_operations *ops;
+ struct ata_port * ports[0];
++ unsigned long host_set_flags;
++ int simplex_claimed; /* Keep seperate in case we
++ ever need to do this locked */
+ };
+
+ struct ata_queued_cmd {
+@@ -369,6 +378,7 @@
+
+ void (*set_piomode) (struct ata_port *, struct ata_device *);
+ void (*set_dmamode) (struct ata_port *, struct ata_device *);
++ unsigned int (*mode_filter) (const struct ata_port *, struct ata_device *, unsigned int, int);
+
+ void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf);
+ void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
+@@ -379,12 +389,15 @@
+ void (*dev_select)(struct ata_port *ap, unsigned int device);
+
+ void (*phy_reset) (struct ata_port *ap);
++ void (*set_mode) (struct ata_port *ap);
+ void (*post_set_mode) (struct ata_port *ap);
+
+ int (*check_atapi_dma) (struct ata_queued_cmd *qc);
+
+ void (*bmdma_setup) (struct ata_queued_cmd *qc);
+ void (*bmdma_start) (struct ata_queued_cmd *qc);
++
++ void (*data_xfer) (struct ata_port *, struct ata_device *, unsigned char *, unsigned int, int);
+
+ void (*qc_prep) (struct ata_queued_cmd *qc);
+ int (*qc_issue) (struct ata_queued_cmd *qc);
+@@ -443,8 +456,9 @@
+ extern void ata_pci_remove_one (struct pci_dev *pdev);
+ extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state);
+ extern int ata_pci_device_resume(struct pci_dev *pdev);
++extern int ata_pci_clear_simplex(struct pci_dev *pdev);
+ #endif /* CONFIG_PCI */
+-extern int ata_device_add(const struct ata_probe_ent *ent);
++extern int ata_device_add(struct ata_probe_ent *ent);
+ extern void ata_host_set_remove(struct ata_host_set *host_set);
+ extern int ata_scsi_detect(struct scsi_host_template *sht);
+ extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg);
+@@ -491,6 +505,15 @@
+ extern void ata_bmdma_irq_clear(struct ata_port *ap);
+ extern void ata_qc_complete(struct ata_queued_cmd *qc);
+ extern void ata_eng_timeout(struct ata_port *ap);
++extern void ata_mmio_data_xfer(struct ata_port *ap, struct ata_device *adev, unsigned char *buf,
++ unsigned int buflen, int write_data);
++extern void ata_pio_data_xfer(struct ata_port *ap, struct ata_device *adev, unsigned char *buf,
++ unsigned int buflen, int write_data);
++extern void ata_mmio_data_xfer_noirq(struct ata_port *ap, struct ata_device *adev, unsigned char *buf,
++ unsigned int buflen, int do_write);
++extern void ata_pio_data_xfer_noirq(struct ata_port *ap, struct ata_device *adev, unsigned char *buf,
++ unsigned int buflen, int do_write);
++
+ extern void ata_scsi_simulate(struct ata_port *ap, struct ata_device *dev,
+ struct scsi_cmnd *cmd,
+ void (*done)(struct scsi_cmnd *));
+@@ -498,6 +521,8 @@
+ struct block_device *bdev,
+ sector_t capacity, int geom[]);
+ extern int ata_scsi_slave_config(struct scsi_device *sdev);
++extern struct ata_device *ata_dev_pair(struct ata_port *ap,
++ struct ata_device *adev);
+
+ /*
+ * Timing helpers
diff --git a/packages/linux/ixp4xx-kernel_2.6.16-rc4-git9.bb b/packages/linux/ixp4xx-kernel_2.6.16.bb
index 1a2563cdb7..ba9a2522f7 100644
--- a/packages/linux/ixp4xx-kernel_2.6.16-rc4-git9.bb
+++ b/packages/linux/ixp4xx-kernel_2.6.16.bb
@@ -8,7 +8,7 @@ PR_CONFIG = "1"
# Increment the number below (i.e. the digits after PR) when
# making changes within this file or for changes to the patches
# applied to the kernel.
-PR = "r0.${PR_CONFIG}"
+PR = "r1.${PR_CONFIG}"
include ixp4xx-kernel.inc
@@ -19,8 +19,9 @@ IXP4XX_PATCHES = ""
IXP4XX_PATCHES += "file://patch-2.6.16-rc4-ide2;patch=1"
IXP4XX_PATCHES += "file://leds-class.patch;patch=1"
-IXP4XX_PATCHES += "file://06-remove-extraversion.patch;patch=1"
-IXP4XX_PATCHES += "file://10-mtdpart-redboot-fis-byteswap.patch;patch=1"
+IXP4XX_PATCHES += "file://copypage-xscale.patch;patch=1"
+# IXP4XX_PATCHES += "file://06-remove-extraversion.patch;patch=1"
+IXP4XX_PATCHES += "file://10-ixp4xx-fix-irq.patch;patch=1"
IXP4XX_PATCHES += "file://11-mtdpart-redboot-config-byteswap.patch;patch=1"
IXP4XX_PATCHES += "file://15-jffs2-endian-config.patch;patch=1"
IXP4XX_PATCHES += "file://951-ixp4xx-leds-cpu-activity.patch;patch=1"
@@ -30,21 +31,18 @@ IXP4XX_PATCHES += "file://48-setup-byteswap-cmdline.patch;patch=1"
IXP4XX_PATCHES += "file://50-i2c-bus-ixp4xx-hwmon.patch;patch=1"
IXP4XX_PATCHES += "file://50-hwmon-ad741x.patch;patch=1"
IXP4XX_PATCHES += "file://65-loft-config.patch;patch=1"
-IXP4XX_PATCHES += "file://70-artop-latency.patch;patch=1"
IXP4XX_PATCHES += "file://75-dsmg600.patch;patch=1"
-IXP4XX_PATCHES += "file://82-nas100d-power.patch;patch=1"
+IXP4XX_PATCHES += "file://83-nas100d-memory-fixup.patch;patch=1"
+IXP4XX_PATCHES += "file://84-nas100d-cmdline.patch;patch=1"
IXP4XX_PATCHES += "file://85-timer.patch;patch=1"
IXP4XX_PATCHES += "file://91-maclist.patch;patch=1"
IXP4XX_PATCHES += "file://92-nas100d-maclist.patch;patch=1"
IXP4XX_PATCHES += "file://92-nslu2-maclist.patch;patch=1"
-IXP4XX_PATCHES += "file://94-nas100d-setup.patch;patch=1"
IXP4XX_PATCHES += "file://94-nslu2-setup.patch;patch=1"
IXP4XX_PATCHES += "file://94-loft-setup.patch;patch=1"
IXP4XX_PATCHES += "file://96-pata-ixp4xx.patch;patch=1"
IXP4XX_PATCHES += "file://96-nas100d-leds.patch;patch=1"
IXP4XX_PATCHES += "file://96-nslu2-leds.patch;patch=1"
-IXP4XX_PATCHES += "file://97-ds101-setup.patch;patch=1"
-IXP4XX_PATCHES += "file://97-ds101-includes.patch;patch=1"
-IXP4XX_PATCHES += "file://97-ds101-pci.patch;patch=1"
+IXP4XX_PATCHES += "file://97-ds101.patch;patch=1"
IXP4XX_PATCHES += "file://97-ds101-buttons.patch;patch=1"
IXP4XX_PATCHES += "file://97-ds101-doc.patch;patch=1"
diff --git a/packages/qt/qt-x11-free-4.0.1/.mtn2git_empty b/packages/linux/linux-openzaurus-2.6.16/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qt/qt-x11-free-4.0.1/.mtn2git_empty
+++ b/packages/linux/linux-openzaurus-2.6.16/.mtn2git_empty
diff --git a/packages/linux/linux-openzaurus-2.6.16/add-oz-release-string.patch b/packages/linux/linux-openzaurus-2.6.16/add-oz-release-string.patch
new file mode 100644
index 0000000000..22a6fd3943
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/add-oz-release-string.patch
@@ -0,0 +1,24 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- linux-2.6.11-rc1/init/version.c~add-oz-release-string
++++ linux-2.6.11-rc1/init/version.c
+@@ -29,5 +29,5 @@
+ EXPORT_SYMBOL(system_utsname);
+
+ const char linux_banner[] =
+- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
++ "Linux version " UTS_RELEASE OPENZAURUS_RELEASE " (" LINUX_COMPILE_BY "@"
+ LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
+--- linux-2.6.11-rc1/Makefile~add-oz-release-string
++++ linux-2.6.11-rc1/Makefile
+@@ -827,6 +827,7 @@
+ exit 1; \
+ fi; \
+ (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
++ echo \#define OPENZAURUS_RELEASE \"$(OPENZAURUS_RELEASE)\"; \
+ echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
+ echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
+ )
diff --git a/packages/linux/linux-openzaurus-2.6.16/connectplus-remove-ide-HACK.patch b/packages/linux/linux-openzaurus-2.6.16/connectplus-remove-ide-HACK.patch
new file mode 100644
index 0000000000..4414b21191
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/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-openzaurus-2.6.16/defconfig-c7x0 b/packages/linux/linux-openzaurus-2.6.16/defconfig-c7x0
new file mode 100644
index 0000000000..996fba9724
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-c7x0
@@ -0,0 +1,1591 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Thu Mar 23 22:03:05 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_POODLE is not set
+CONFIG_MACH_CORGI=y
+CONFIG_MACH_SHEPHERD=y
+CONFIG_MACH_HUSKY=y
+# CONFIG_MACH_TOSA is not set
+CONFIG_PXA25x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_PXA_SHARP_C7xx=y
+CONFIG_PXA_SSP=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA25x=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=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 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=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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_SHARP_SL=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=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 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=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_CORGI=y
+# CONFIG_KEYBOARD_SPITZ is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_CORGI=y
+# CONFIG_LEDS_TOSA is not set
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_VIDEO_AUDIO_DECODER is not set
+# CONFIG_VIDEO_DECODER is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+CONFIG_FB_W100=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=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 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_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_DETECT is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
+CONFIG_SND_PXA2xx_SOC_CORGI=m
+# CONFIG_SND_PXA2xx_SOC_SPITZ is not set
+# CONFIG_SND_PXA2xx_SOC_TOSA is not set
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+CONFIG_SND_SOC_WM8731=m
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+# CONFIG_USB_ITMTOUCH is not set
+CONFIG_USB_EGALAX=m
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_PWC is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ANYDATA is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_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=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO 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=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-openzaurus-2.6.16/defconfig-collie b/packages/linux/linux-openzaurus-2.6.16/defconfig-collie
new file mode 100644
index 0000000000..bfc5809f30
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-collie
@@ -0,0 +1,1008 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.14-git3
+# Thu Nov 3 09:37:28 2005
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_CLEAN_COMPILE is not set
+CONFIG_BROKEN=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=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_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+CONFIG_ARCH_SA1100=y
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+
+#
+# SA11x0 Implementations
+#
+# CONFIG_SA1100_ASSABET is not set
+# CONFIG_SA1100_CERF is not set
+CONFIG_SA1100_COLLIE=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+# CONFIG_SA1100_BADGE4 is not set
+# CONFIG_SA1100_JORNADA720 is not set
+# CONFIG_SA1100_HACKKIT is not set
+# CONFIG_SA1100_LART is not set
+# CONFIG_SA1100_PLEB is not set
+# CONFIG_SA1100_SHANNON is not set
+# CONFIG_SA1100_SIMPAD is not set
+# CONFIG_SA1100_SSP is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_SA1100=y
+CONFIG_CPU_32v4=y
+CONFIG_CPU_ABRT_EV4=y
+CONFIG_CPU_CACHE_V4WB=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WB=y
+
+#
+# Processor Features
+#
+CONFIG_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_SA1100=y
+
+#
+# Kernel Features
+#
+# CONFIG_SMP is not set
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_DISCONTIGMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_NEED_MULTIPLE_NODES=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_OBSOLETE_CHIPS=y
+# CONFIG_MTD_AMDSTD is not set
+CONFIG_MTD_SHARP=y
+# CONFIG_MTD_JEDEC is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND 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_XD is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# 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"
+CONFIG_ATA_OVER_ETH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_TSDEV=y
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=y
+# CONFIG_INPUT_POWER is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_LOCOMO=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_LIBPS2 is not set
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_SA1100=y
+CONFIG_SERIAL_SA1100_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELEKTOR is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_RTC_X1205_I2C is not set
+# CONFIG_MAX7310 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP_SA11X0 is not set
+
+#
+# SoC drivers
+#
+# CONFIG_SOC is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+CONFIG_FB_SA1100=y
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_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
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_ROMFS_FS=y
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-openzaurus-2.6.16/defconfig-cxx00 b/packages/linux/linux-openzaurus-2.6.16/defconfig-cxx00
new file mode 100644
index 0000000000..794ff52a88
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-cxx00
@@ -0,0 +1,1557 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Thu Mar 23 22:11:12 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_MTD_XIP=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_UID16=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_PXA_SHARPSL_25x is not set
+CONFIG_PXA_SHARPSL_27x=y
+CONFIG_MACH_AKITA=y
+CONFIG_MACH_SPITZ=y
+CONFIG_MACH_BORZOI=y
+CONFIG_PXA27x=y
+# CONFIG_PXA_KEYS is not set
+CONFIG_IWMMXT=y
+CONFIG_PXA_SHARP_Cxx00=y
+CONFIG_PXA_SSP=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+# CONFIG_KEXEC is not set
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_IP6_NF_QUEUE=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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_SHARP_SL=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=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 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=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_CORGI is not set
+CONFIG_KEYBOARD_SPITZ=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_SPITZ=y
+# CONFIG_LEDS_TOSA is not set
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_W100 is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=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 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+# CONFIG_SND_SEQUENCER_OSS is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+# CONFIG_SND_DEBUG_DETECT is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_AC97_BUS=m
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# PCMCIA devices
+#
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=m
+
+#
+# Soc Platforms
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2xx_SOC=m
+CONFIG_SND_PXA2xx_SOC_I2S=m
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM8753 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9713 is not set
+# CONFIG_SND_PXA2xx_SOC_MAINSTONE_WM9712 is not set
+# CONFIG_SND_PXA2xx_SOC_CORGI is not set
+CONFIG_SND_PXA2xx_SOC_SPITZ=m
+# CONFIG_SND_PXA2xx_SOC_TOSA is not set
+
+#
+# Soc Codecs
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_WM8731 is not set
+CONFIG_SND_SOC_WM8750=m
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8772 is not set
+# CONFIG_SND_SOC_WM8971 is not set
+# CONFIG_SND_SOC_WM9713 is not set
+# CONFIG_SND_SOC_WM9712 is not set
+# CONFIG_SND_SOC_UDA1380 is not set
+# CONFIG_SND_SOC_AK4535 is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SL811_HCD=m
+CONFIG_USB_SL811_CS=m
+
+#
+# USB Device Class drivers
+#
+# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+# CONFIG_USB_ACECAD is not set
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+# CONFIG_USB_ITMTOUCH is not set
+CONFIG_USB_EGALAX=m
+# CONFIG_USB_YEALINK is not set
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ANYDATA is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+# CONFIG_USB_SERIAL_OPTION is not set
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+CONFIG_USB_GADGET_PXA27X=y
+CONFIG_USB_PXA27X=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DETECT_SOFTLOCKUP is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO 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 is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-openzaurus-2.6.16/defconfig-ipaq-pxa270 b/packages/linux/linux-openzaurus-2.6.16/defconfig-ipaq-pxa270
new file mode 100644
index 0000000000..9f029a7467
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-ipaq-pxa270
@@ -0,0 +1,1018 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.15-rc1-git7
+# Sat Nov 19 23:13:51 2005
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_CLEAN_COMPILE is not set
+CONFIG_BROKEN=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_SWAP is not set
+# CONFIG_SYSVIPC is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+# CONFIG_PXA_SHARPSL is not set
+CONFIG_MACH_HX2750=y
+CONFIG_PXA27x=y
+CONFIG_PXA_KEYS=y
+CONFIG_PXA_SSP=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_AIRO is not set
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_CS=m
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_PCMCIA_PCNET=m
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_PCMCIA_AXNET is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_POWER is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+CONFIG_TOUCHSCREEN_TSC2101=y
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+CONFIG_MFD_TSC2101=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_HX2750=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_WBSD is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_MAGIC_SYSRQ is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+CONFIG_CRYPTO_ARC4=m
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+
diff --git a/packages/linux/linux-openzaurus-2.6.16/defconfig-poodle b/packages/linux/linux-openzaurus-2.6.16/defconfig-poodle
new file mode 100644
index 0000000000..c8c74522bd
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-poodle
@@ -0,0 +1,1559 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.15
+# Sat Feb 4 16:06:13 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_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_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=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_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=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
+
+#
+# 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_SHARP_LOCOMO=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARP_SCOOP=y
+
+#
+# Bus support
+#
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_PXA25x=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=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 is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_MAC=m
+CONFIG_IP_NF_MATCH_PKTTYPE=m
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_DSCP=m
+CONFIG_IP_NF_MATCH_AH_ESP=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_TCPMSS=m
+CONFIG_IP_NF_MATCH_HELPER=m
+CONFIG_IP_NF_MATCH_STATE=m
+CONFIG_IP_NF_MATCH_CONNTRACK=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_REALM=m
+CONFIG_IP_NF_MATCH_SCTP=m
+# CONFIG_IP_NF_MATCH_DCCP is not set
+CONFIG_IP_NF_MATCH_COMMENT=m
+CONFIG_IP_NF_MATCH_HASHLIMIT=m
+# CONFIG_IP_NF_MATCH_STRING is not set
+CONFIG_IP_NF_FILTER=m
+# CONFIG_IP_NF_TARGET_REJECT is not set
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+# CONFIG_IP_NF_TARGET_NFQUEUE is not set
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+# CONFIG_IP_NF_TARGET_MASQUERADE is not set
+# CONFIG_IP_NF_TARGET_REDIRECT is not set
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_SAME is not set
+# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_AMANDA=m
+CONFIG_IP_NF_MANGLE=m
+# CONFIG_IP_NF_TARGET_TOS is not set
+# CONFIG_IP_NF_TARGET_ECN is not set
+# CONFIG_IP_NF_TARGET_DSCP is not set
+# CONFIG_IP_NF_TARGET_MARK is not set
+# CONFIG_IP_NF_TARGET_CLASSIFY is not set
+# CONFIG_IP_NF_TARGET_TTL is not set
+CONFIG_IP_NF_RAW=m
+# CONFIG_IP_NF_TARGET_NOTRACK is not set
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_LIMIT=m
+CONFIG_IP6_NF_MATCH_MAC=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_MARK=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AHESP=m
+CONFIG_IP6_NF_MATCH_LENGTH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+# CONFIG_IP6_NF_TARGET_LOG is not set
+# CONFIG_IP6_NF_TARGET_REJECT is not set
+# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
+CONFIG_IP6_NF_MANGLE=m
+# CONFIG_IP6_NF_TARGET_MARK is not set
+# CONFIG_IP6_NF_TARGET_HL is not set
+CONFIG_IP6_NF_RAW=m
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# 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_NSC_FIR is not set
+# CONFIG_WINBOND_FIR is not set
+# CONFIG_SMC_IRCC_FIR is not set
+# CONFIG_ALI_FIR is not set
+# CONFIG_VIA_FIR is not set
+CONFIG_PXA_FICP=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_SHARP_SL=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_SHARPSL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=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_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 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=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_LOCOMO=y
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_CORGI is not set
+# CONFIG_KEYBOARD_SPITZ is not set
+# CONFIG_KEYBOARD_TOSA is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_CORGI=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+# CONFIG_SERIAL_8250_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_SA1100_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_RTC_X1205_I2C is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_CORGI is not set
+# CONFIG_LEDS_TOSA is not set
+CONFIG_LEDS_TRIGGER_TIMER=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# 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=y
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_PXA=y
+# CONFIG_FB_PXA_PARAMETERS is not set
+# CONFIG_FB_W100 is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=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_CORGI is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+CONFIG_USB=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
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+# 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_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_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_PWC is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_ZD1201 is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ANYDATA is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
+# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+CONFIG_USB_GADGET_PXA2XX=y
+CONFIG_USB_PXA2XX=y
+# CONFIG_USB_PXA2XX_SMALL is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+CONFIG_USB_G_SERIAL=m
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_PXA=y
+# CONFIG_MMC_WBSD is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_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=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+
diff --git a/packages/linux/linux-openzaurus-2.6.16/defconfig-qemuarm b/packages/linux/linux-openzaurus-2.6.16/defconfig-qemuarm
new file mode 100644
index 0000000000..2d896af0e6
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-qemuarm
@@ -0,0 +1,935 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.15
+# Thu Feb 23 16:29:38 2006
+#
+CONFIG_ARM=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_CAMELOT is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+CONFIG_ARCH_INTEGRATOR=y
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+
+#
+# Integrator Options
+#
+# CONFIG_ARCH_INTEGRATOR_AP is not set
+CONFIG_ARCH_INTEGRATOR_CP=y
+CONFIG_ARCH_CINTEGRATOR=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+# CONFIG_CPU_ARM720T is not set
+# CONFIG_CPU_ARM920T is not set
+# CONFIG_CPU_ARM922T is not set
+CONFIG_CPU_ARM926T=y
+# CONFIG_CPU_ARM1020 is not set
+# CONFIG_CPU_ARM1022 is not set
+CONFIG_CPU_ARM1026=y
+# CONFIG_CPU_V6 is not set
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+CONFIG_ICST525=y
+
+#
+# Bus support
+#
+CONFIG_ARM_AMBA=y
+CONFIG_ISA_DMA_API=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_LEDS=y
+CONFIG_LEDS_TIMER=y
+CONFIG_LEDS_CPU=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyAMA0 console=tty1 user_debug=31"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_INTEGRATOR=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_AFS_PARTS=y
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_XIP is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_POWER is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_UINPUT is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_AMBAKMI=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_AMBA_PL010 is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+CONFIG_FB_ARMCLCD=y
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=m
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_DEBUG_KERNEL=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-openzaurus-2.6.16/defconfig-tosa b/packages/linux/linux-openzaurus-2.6.16/defconfig-tosa
new file mode 100644
index 0000000000..f1a5c1e1c4
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/defconfig-tosa
@@ -0,0 +1,1590 @@
+#
+# 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 is not set
+CONFIG_EMBEDDED=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=m
+CONFIG_IOSCHED_CFQ=m
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# System Type
+#
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_IOP3XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_PXA=y
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# Intel PXA2xx Implementations
+#
+# CONFIG_ARCH_LUBBOCK is not set
+# CONFIG_MACH_MAINSTONE is not set
+# CONFIG_ARCH_PXA_IDP is not set
+CONFIG_PXA_SHARPSL=y
+# CONFIG_MACH_HX2750 is not set
+CONFIG_PXA_SHARPSL_25x=y
+# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_POODLE is not set
+# CONFIG_MACH_CORGI is not set
+# CONFIG_MACH_SHEPHERD is not set
+# CONFIG_MACH_HUSKY is not set
+CONFIG_MACH_TOSA=y
+CONFIG_PXA25x=y
+# CONFIG_PXA_KEYS is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+CONFIG_KEXEC=y
+CONFIG_SHARP_PARAM=y
+CONFIG_SHARPSL_PM=y
+CONFIG_SHARP_SCOOP=y
+CONFIG_TOSHIBA_TC6393XB=y
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PXA2XX=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+CONFIG_NO_IDLE_HZ=y
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_XIP_KERNEL is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+CONFIG_CPU_FREQ_PXA25x=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_IPV6_TUNNEL=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NETFILTER_XTABLES is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
+CONFIG_IP_NF_CT_PROTO_SCTP=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+# CONFIG_IP_NF_NETBIOS_NS is not set
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+# CONFIG_IP_NF_PPTP is not set
+CONFIG_IP_NF_QUEUE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_IP6_NF_QUEUE=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
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+# CONFIG_IRDA_ULTRA is not set
+
+#
+# IrDA options
+#
+# CONFIG_IRDA_CACHE_LAST_LSAP is not set
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+# CONFIG_IRTTY_SIR is not set
+
+#
+# Dongle support
+#
+
+#
+# Old SIR device drivers
+#
+# CONFIG_IRPORT_SIR is not set
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+# CONFIG_USB_IRDA is not set
+# CONFIG_SIGMATEL_FIR is not set
+CONFIG_PXA_FICP=m
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+# CONFIG_BT_HCIUSB_SCO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+CONFIG_MTD_ROM=y
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_SHARP_SL=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLKMTD is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_VERIFY_WRITE=y
+# CONFIG_MTD_NAND_H1900 is not set
+CONFIG_MTD_NAND_TMIO=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_IDE_GENERIC is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# PCMCIA SCSI adapter support
+#
+# CONFIG_PCMCIA_AHA152X is not set
+# CONFIG_PCMCIA_FDOMAIN is not set
+# CONFIG_PCMCIA_NINJA_SCSI is not set
+# CONFIG_PCMCIA_QLOGIC is not set
+# CONFIG_PCMCIA_SYM53C500 is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=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 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=y
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_CORGI is not set
+# CONFIG_KEYBOARD_SPITZ is not set
+CONFIG_KEYBOARD_TOSA=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_CORGI is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+CONFIG_TOUCHSCREEN_WM97XX=y
+# CONFIG_TOUCHSCREEN_WM9705 is not set
+CONFIG_TOUCHSCREEN_WM9712=y
+# CONFIG_TOUCHSCREEN_WM9713 is not set
+# CONFIG_TOUCHSCREEN_WM97XX_PXA is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multi-Function Devices
+#
+
+#
+# LED devices
+#
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TOSA=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_VIDEO_AUDIO_DECODER is not set
+# CONFIG_VIDEO_DECODER is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_MAESTRO is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_PXA is not set
+# CONFIG_FB_W100 is not set
+CONFIG_FB_TMIO=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_DEVICE=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# 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 is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=m
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# 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=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=m
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_GENERIC_ALLOCATOR=y
diff --git a/packages/linux/linux-openzaurus-2.6.16/pxa-serial-hack.patch b/packages/linux/linux-openzaurus-2.6.16/pxa-serial-hack.patch
new file mode 100644
index 0000000000..b3a7f786ea
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/pxa-serial-hack.patch
@@ -0,0 +1,73 @@
+Index: linux-2.6.14/drivers/serial/8250.c
+===================================================================
+--- linux-2.6.14.orig/drivers/serial/8250.c 2005-11-07 18:10:50.000000000 +0000
++++ linux-2.6.14/drivers/serial/8250.c 2005-11-07 19:01:21.000000000 +0000
+@@ -2333,7 +2333,12 @@
+ .devfs_name = "tts/",
+ .dev_name = "ttyS",
+ .major = TTY_MAJOR,
++#ifdef CONFIG_SERIAL_PXA
++ .minor = 64 + 3,
++ .name_base = 3,
++#else
+ .minor = 64,
++#endif
+ .nr = UART_NR,
+ .cons = SERIAL8250_CONSOLE,
+ };
+Index: linux-2.6.14/drivers/serial/serial_core.c
+===================================================================
+--- linux-2.6.14.orig/drivers/serial/serial_core.c 2005-11-07 18:10:50.000000000 +0000
++++ linux-2.6.14/drivers/serial/serial_core.c 2005-11-07 19:01:21.000000000 +0000
+@@ -2126,6 +2126,7 @@
+ normal->driver_name = drv->driver_name;
+ normal->devfs_name = drv->devfs_name;
+ normal->name = drv->dev_name;
++ normal->name_base = drv->name_base;
+ normal->major = drv->major;
+ normal->minor_start = drv->minor;
+ normal->type = TTY_DRIVER_TYPE_SERIAL;
+Index: linux-2.6.14/include/linux/serial_core.h
+===================================================================
+--- linux-2.6.14.orig/include/linux/serial_core.h 2005-11-07 18:10:56.000000000 +0000
++++ linux-2.6.14/include/linux/serial_core.h 2005-11-07 19:01:21.000000000 +0000
+@@ -322,6 +322,7 @@
+ const char *driver_name;
+ const char *dev_name;
+ const char *devfs_name;
++ int name_base;
+ int major;
+ int minor;
+ int nr;
+Index: linux-2.6.14/drivers/serial/serial_cs.c
+===================================================================
+--- linux-2.6.14.orig/drivers/serial/serial_cs.c 2005-10-28 01:02:08.000000000 +0100
++++ linux-2.6.14/drivers/serial/serial_cs.c 2005-11-07 19:01:21.000000000 +0000
+@@ -294,7 +294,7 @@
+ kio_addr_t iobase, int irq)
+ {
+ struct uart_port port;
+- int line;
++ int line, linestart;
+
+ memset(&port, 0, sizeof (struct uart_port));
+ port.iobase = iobase;
+@@ -311,10 +311,16 @@
+ return -EINVAL;
+ }
+
++#if CONFIG_SERIAL_PXA
++ linestart = 3;
++#else
++ linestart = 0;
++#endif
++
+ info->line[info->ndev] = line;
+- sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
++ sprintf(info->node[info->ndev].dev_name, "ttyS%d", line+linestart);
+ info->node[info->ndev].major = TTY_MAJOR;
+- info->node[info->ndev].minor = 0x40 + line;
++ info->node[info->ndev].minor = 0x40 + line + linestart;
+ if (info->ndev > 0)
+ info->node[info->ndev - 1].next = &info->node[info->ndev];
+ info->ndev++;
diff --git a/packages/linux/linux-openzaurus-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-openzaurus-2.6.16/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
new file mode 100644
index 0000000000..18bf4268fc
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.16/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-openzaurus.inc b/packages/linux/linux-openzaurus.inc
index c0b01616ac..74edea8df8 100644
--- a/packages/linux/linux-openzaurus.inc
+++ b/packages/linux/linux-openzaurus.inc
@@ -9,6 +9,7 @@ DOSRC = "http://www.do13.de/openzaurus/patches"
RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
JLSRC = "http://www.cs.wisc.edu/~lenz/zaurus/files"
BASRC = "http://www.orca.cx/zaurus/patches"
+CHSRC = "http://oz.drigon.com/patches"
inherit kernel
@@ -38,6 +39,8 @@ CMDLINE_MEM_collie = "mem=${mem}M"
CMDLINE_ROTATE_spitz = "fbcon=rotate:1"
CMDLINE_ROTATE_akita = "fbcon=rotate:1"
CMDLINE_ROTATE_borzoi = "fbcon=rotate:1"
+CMDLINE_ROTATE_collie = "fbcon=rotate:1"
+CMDLINE_ROTATE_poodle = "fbcon=rotate:1"
CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_MEM} ${CMDLINE_ROTATE} ${CMDLINE_OTHER} ${CMDLINE_DEBUG}"
###############################################################
@@ -117,8 +120,9 @@ do_compile_append() {
do_deploy() {
install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ tar -cvzf ${DEPLOY_DIR_IMAGE}/modules-${KERNEL_RELEASE}-${MACHINE}.tgz -C ${D} lib
}
do_deploy[dirs] = "${S}"
-addtask deploy before do_build after do_compile
+addtask deploy before do_package after do_install
diff --git a/packages/linux/linux-openzaurus_2.6.16.bb b/packages/linux/linux-openzaurus_2.6.16.bb
new file mode 100644
index 0000000000..0cf048ed72
--- /dev/null
+++ b/packages/linux/linux-openzaurus_2.6.16.bb
@@ -0,0 +1,120 @@
+include linux-openzaurus.inc
+
+PR = "r4"
+
+DEFAULT_PREFERENCE = "-1"
+
+# Handy URLs
+# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
+# http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.gz \
+# http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.15-rc1.bz2;patch=1 \
+# http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.15-rc2-git1.bz2;patch=1 \
+# http://www.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1 \
+# http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.14-rc2/2.6.14-rc2-mm1/2.6.14-rc2-mm1.bz2;patch=1 \
+
+# Patches submitted upstream are towards top of this list
+# Hacks should clearly named and at the bottom
+SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
+ ${RPSRC}/led_core-r15.patch;patch=1 \
+ ${RPSRC}/led_triggers-r14.patch;patch=1 \
+ ${RPSRC}/led_trig_timer-r8.patch;patch=1 \
+ ${RPSRC}/led_trig_sharpsl_pm-r5.patch;patch=1 \
+ ${RPSRC}/led_zaurus-r10.patch;patch=1 \
+ ${RPSRC}/led_locomo-r7.patch;patch=1 \
+ ${RPSRC}/led_ixp4xx-r2.patch;patch=1 \
+ ${RPSRC}/led_tosa-r5.patch;patch=1 \
+ ${RPSRC}/led_ide-r6.patch;patch=1 \
+ ${RPSRC}/led_nand-r3.patch;patch=1 \
+ ${RPSRC}/ide_end_request-r1.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-library-functions.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-arm-cleanup-r1.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-class.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-class-fix.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-class-fix-2.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-i2c-cleanup-r1.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-sysfs-interface.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-proc-interface.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-dev-interface.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-x1205-driver.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-test-device-driver.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-ds1672-driver.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-pcf8563-driver.patch;patch=1 \
+ ${RPSRC}/rtc-subsystem-rs5c372-driver.patch;patch=1 \
+ ${RPSRC}/rtc_class_pxa-r2.patch;patch=1 \
+ ${RPSRC}/rmk_pxa_mmc_timeout-r0.patch;patch=1 \
+ ${RPSRC}/integrator_rtc-r0.patch;patch=1 \
+ ${RPSRC}/zaurus_keyboard_tweak-r3.patch;patch=1 \
+ ${RPSRC}/pxafb_tweaks-r0.patch;patch=1 \
+ ${RPSRC}/alsa/asoc-v0.10rc4.patch;patch=1 \
+ ${RPSRC}/hx2750_base-r24.patch;patch=1 \
+ ${RPSRC}/hx2750_bl-r5.patch;patch=1 \
+ ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \
+ ${RPSRC}/pxa_keys-r5.patch;patch=1 \
+ ${RPSRC}/tsc2101-r12.patch;patch=1 \
+ ${RPSRC}/hx2750_test1-r3.patch;patch=1 \
+ ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
+ ${RPSRC}/input_power-r4.patch;patch=1 \
+ ${RPSRC}/jffs2_longfilename-r0.patch;patch=1 \
+ ${RPSRC}/pxa25x_cpufreq-r0.patch;patch=1 \
+ ${RPSRC}/misc_fix1-r0.patch;patch=1 \
+ ${RPSRC}/corgi_bl_cleanup-r3.patch;patch=1 \
+ ${RPSRC}/corgi_bl_generic-r3.patch;patch=1 \
+ ${RPSRC}/w100_accel1-r0.patch;patch=1 \
+ ${RPSRC}/poodle_partsize-r0.patch;patch=1 \
+ ${RPSRC}/poodle_memsize-r0.patch;patch=1 \
+ ${RPSRC}/collie_frontlight-r1.patch;patch=1 \
+ ${RPSRC}/zlib_inflate-r3.patch;patch=1 \
+ ${RPSRC}/pm_changes-r1.patch;patch=1 \
+ ${RPSRC}/sharpsl_pm-do-r2.patch;patch=1 \
+ ${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
+ ${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
+ ${DOSRC}/kexec-arm-r2.patch;patch=1 \
+ ${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1 \
+ ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1 \
+ ${RPSRC}/poodle_ts_hack-r0.patch;patch=1 \
+ file://add-oz-release-string.patch;patch=1 \
+ file://pxa-serial-hack.patch;patch=1 \
+ ${RPSRC}/pxa-linking-bug.patch;patch=1 \
+ file://serial-add-support-for-non-standard-xtals-to-16c950-driver.patch;patch=1 \
+ file://connectplus-remove-ide-HACK.patch;patch=1 \
+ file://defconfig-c7x0 \
+ file://defconfig-ipaq-pxa270 \
+ file://defconfig-collie \
+ file://defconfig-poodle \
+ file://defconfig-cxx00 \
+ file://defconfig-qemuarm \
+ file://defconfig-tosa "
+
+# Disabled until I find the reason this gives issues with cdc_subset
+# ${RPSRC}/usb_rndis_tweaks-r0.patch;patch=1 \
+
+# These patches would really help collie/poodle but we
+# need someone to maintain them
+# ${JLSRC}/zaurus-lcd-2.6.11.diff.gz;patch=1
+# (Pavel Machek's git tree has updated versions of this?)
+# Also parts were recently committed to mainline by rmk (drivers/mfd/)
+# ${JLSRC}/zaurus-base-2.6.11.diff.gz;patch=1
+# (This is mostly in mainline now?)
+# ${JLSRC}/zaurus-local-2.6.11.diff.gz;patch=1 \
+# ${JLSRC}/zaurus-leds-2.6.11.diff.gz;patch=1 \
+
+SRC_URI_append_tosa = "\
+ ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \
+ ${CHSRC}/tmio-core-r4.patch;patch=1 \
+ ${CHSRC}/tmio-tc6393-r5.patch;patch=1 \
+ ${CHSRC}/tmio-nand-r5.patch;patch=1 \
+ ${CHSRC}/tmio-ohci-r3.patch;patch=1 \
+ ${CHSRC}/tmio-fb-r6.patch;patch=1 \
+ ${DOSRC}/tosa-keyboard-r13.patch;patch=1 \
+ ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \
+ ${DOSRC}/tosa-tmio-r4.patch;patch=1 \
+ ${DOSRC}/tosa-power-r14.patch;patch=1 \
+ ${DOSRC}/tosa-tmio-lcd-r5.patch;patch=1 \
+ ${DOSRC}/tosa-bluetooth-r5.patch;patch=1 \
+ ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \
+ ${DOSRC}/tosa-asoc-r0.patch;patch=1 "
+
+S = "${WORKDIR}/linux-2.6.16"
+
+# to get module dependencies working
+KERNEL_RELEASE = "2.6.16"
diff --git a/packages/lyx/lyx_1.3.6.bb b/packages/lyx/lyx_1.4.0.bb
index de58313b0a..b3f6a2c7ad 100644
--- a/packages/lyx/lyx_1.3.6.bb
+++ b/packages/lyx/lyx_1.4.0.bb
@@ -5,25 +5,21 @@ HOMEPAGE = "http://www.lyx.org"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
DEPENDS = "boost qt3x11"
RRECOMMENDS = "tetex"
-PR = "r1"
+PR = "r0"
-SRC_URI = "ftp://ftp.lyx.org/pub/lyx/stable/lyx-${PV}.tar.bz2"
+# 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_0;rev=13538"
+S = "${WORKDIR}/lyx-1_4_0"
inherit autotools qt3x11
EXTRA_OECONF = "--with-frontend=qt --with-qt-dir=${QTDIR}"
+PARALLEL_MAKE = ""
-export UIC="${OE_QMAKE_UIC}"
-export MOC="${OE_QMAKE_MOC}"
-
-do_configure() {
- oe_runconf
-}
-
-do_install_append() {
- for i in noweb2lyx lyx reLyX
- do
- ln -sf ./${TARGET_PREFIX}$i ${D}/${bindir}/$i
- done
+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/lzma/lzma-native_4.17.bb b/packages/lzma/lzma-native_4.17.bb
index 174ed700e4..a6b3fff74f 100644
--- a/packages/lzma/lzma-native_4.17.bb
+++ b/packages/lzma/lzma-native_4.17.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "LZMA is a general compression method. LZMA provides high compression ratio and very fast decompression."
HOMEPAGE = "http://www.7-zip.org/"
LICENSE = "LGPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.7-zip.org/dl/lzma417.tar.bz2 \
file://lzma-406-zlib-stream.patch;patch=1;pnum=2"
@@ -18,5 +18,5 @@ do_compile() {
do_stage () {
install -m 0755 7zip/Compress/LZMA_Alone/lzma ${STAGING_BINDIR}
- oe_libinstall -a 7zip/Compress/LZMA_Lib/liblzma ${STAGING_LIBDIR}
+ oe_libinstall -a -C 7zip/Compress/LZMA_Lib liblzma ${STAGING_LIBDIR}
}
diff --git a/packages/uicmoc/uicmoc4-native-4.0.1/.mtn2git_empty b/packages/matchbox-applet-tasks/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/uicmoc/uicmoc4-native-4.0.1/.mtn2git_empty
+++ b/packages/matchbox-applet-tasks/.mtn2git_empty
diff --git a/packages/matchbox-applet-tasks/mb-applet-tasks_1.0.0.bb b/packages/matchbox-applet-tasks/mb-applet-tasks_1.0.0.bb
new file mode 100644
index 0000000000..f483d6ec43
--- /dev/null
+++ b/packages/matchbox-applet-tasks/mb-applet-tasks_1.0.0.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "Tasks applet switcher for matchbox"
+LICENSE = "GPLv2"
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+DEPENDS = "gtk+ libwnck libmatchbox"
+
+PR = "r1"
+
+CFLAGS += "-I${STAGING_INCDIR} \
+ -I${STAGING_INCDIR}/gtk-2.0 \
+ -I${STAGING_INCDIR}/glib-2.0 \
+ -I${STAGING_INCDIR}/freetype2 \
+ -I${STAGING_INCDIR}/atk-1.0 \
+ -I${STAGING_INCDIR}/libwnck-1.0 \
+ -I${STAGING_LIBDIR}/gtk-2.0/include \
+ -I${STAGING_INCDIR}/cairo \
+ -DWNCK_I_KNOW_THIS_IS_UNSTABLE"
+
+SRC_URI = "http://mail.pdaxrom.org/1.1.0beta1/src/${P}.tar.bz2"
+
+do_install() {
+install -d ${D}/${datadir}/applications
+install -d ${D}/${bindir}
+
+install -m 755 mb-applet-tasks ${D}/${bindir}
+install -m 644 mb-applet-tasks.desktop ${D}/${datadir}/applications
+}
+
+
+
+
+
+
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/.mtn2git_empty b/packages/matchbox-panel/matchbox-panel-0.9.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/.mtn2git_empty
+++ b/packages/matchbox-panel/matchbox-panel-0.9.3/.mtn2git_empty
diff --git a/packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-battery-repaint-093.patch b/packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-battery-repaint-093.patch
new file mode 100644
index 0000000000..22cc56e56a
--- /dev/null
+++ b/packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-battery-repaint-093.patch
@@ -0,0 +1,32 @@
+--- matchbox-panel-0.9.3/applets/mb-applet-battery.c.orig 2006-04-05 12:28:01.883215416 +0200
++++ matchbox-panel-0.9.3/applets/mb-applet-battery.c 2006-04-05 12:29:14.973104064 +0200
+@@ -374,12 +374,6 @@
+
+ MBPixbufImage *img_backing = NULL;
+
+- while (!read_apm(apm_vals))
+- usleep(50000L);
+-
+- if (last_percentage == apm_vals[PERCENTAGE] && last_ac == apm_vals[AC_POWER])
+- return;
+-
+ img_backing = mb_tray_app_get_background (app, pb);
+
+ /* we assume width = height */
+@@ -571,10 +565,12 @@
+
+ }
+
+-void
+-timeout_callback ( MBTrayApp *app )
+-{
+- mb_tray_app_repaint (app);
++void timeout_callback (MBTrayApp *app) {
++ while (!read_apm(apm_vals))
++ usleep(50000L);
++
++ if (last_percentage != apm_vals[PERCENTAGE] || last_ac != apm_vals[AC_POWER])
++ mb_tray_app_repaint (app);
+ }
+
+ void
diff --git a/packages/matchbox-panel/matchbox-panel_0.9.3.bb b/packages/matchbox-panel/matchbox-panel_0.9.3.bb
new file mode 100644
index 0000000000..9c6e75b9a5
--- /dev/null
+++ b/packages/matchbox-panel/matchbox-panel_0.9.3.bb
@@ -0,0 +1,5 @@
+include matchbox-panel.inc
+
+PR="r0"
+SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/0.9/${PN}-${PV}.tar.gz \
+ file://mb-applet-battery-repaint-093.patch;patch=1"
diff --git a/packages/zd1211/zd1211-20050822/.mtn2git_empty b/packages/matchbox-wm/matchbox-wm/akita/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/zd1211/zd1211-20050822/.mtn2git_empty
+++ b/packages/matchbox-wm/matchbox-wm/akita/.mtn2git_empty
diff --git a/packages/matchbox-wm/matchbox-wm/akita/kbdconfig b/packages/matchbox-wm/matchbox-wm/akita/kbdconfig
new file mode 100644
index 0000000000..7de0071c08
--- /dev/null
+++ b/packages/matchbox-wm/matchbox-wm/akita/kbdconfig
@@ -0,0 +1,51 @@
+#
+# This is an example keyboard config file for matchbox
+#
+# You can edit this file or change per user by copying to
+# ~/.matchbox/kbdconfig
+#
+# Se the matchbox manual for more info ( http://projects.o-hand.com/matchbox )
+
+### Window operation short cuts
+
+<Alt>n=next
+<Alt>p=prev
+<Alt>c=close
+<Alt>d=desktop
+<Alt>m=!matchbox-remote -mbmenu
+
+### App launching.
+
+<ctrl><alt>x=!xterm
+<ctrl><alt>r=!rxvt
+
+### App launching with startup notify
+
+<ctrl><alt>e=!!gpe-calender
+
+### windows style key shortcuts
+
+<alt>Tab=next
+<alt><shift>Tab=prev
+
+<alt>space=taskmenu
+<alt>escape=!matchbox-remote -mbmenu
+<alt>f4=close
+
+# On SL-Cxxxx, F11 is the "menu" key. In order to be able to assign a function
+# to this key via keylaunch, this must be commented out.
+# NOTE: Uncommenting this usually means that matchbox crashes on startup!
+#
+# f11=fullscreen
+
+### super should be a 'window' key, uncomment '#' if you have one.
+
+#<super>d=desktop
+#<super>r=!xterm
+#<super>e=!!nautilus
+
+### Special keys, likely probably only available on extended keyboards.
+
+#App=!matchbox-remote -mbmenu
+#Menu=!matchbox-remote -mbmenu
+
diff --git a/packages/zd1211/zd1211-r52/.mtn2git_empty b/packages/matchbox-wm/matchbox-wm/borzoi/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/zd1211/zd1211-r52/.mtn2git_empty
+++ b/packages/matchbox-wm/matchbox-wm/borzoi/.mtn2git_empty
diff --git a/packages/matchbox-wm/matchbox-wm/borzoi/kbdconfig b/packages/matchbox-wm/matchbox-wm/borzoi/kbdconfig
new file mode 100644
index 0000000000..7de0071c08
--- /dev/null
+++ b/packages/matchbox-wm/matchbox-wm/borzoi/kbdconfig
@@ -0,0 +1,51 @@
+#
+# This is an example keyboard config file for matchbox
+#
+# You can edit this file or change per user by copying to
+# ~/.matchbox/kbdconfig
+#
+# Se the matchbox manual for more info ( http://projects.o-hand.com/matchbox )
+
+### Window operation short cuts
+
+<Alt>n=next
+<Alt>p=prev
+<Alt>c=close
+<Alt>d=desktop
+<Alt>m=!matchbox-remote -mbmenu
+
+### App launching.
+
+<ctrl><alt>x=!xterm
+<ctrl><alt>r=!rxvt
+
+### App launching with startup notify
+
+<ctrl><alt>e=!!gpe-calender
+
+### windows style key shortcuts
+
+<alt>Tab=next
+<alt><shift>Tab=prev
+
+<alt>space=taskmenu
+<alt>escape=!matchbox-remote -mbmenu
+<alt>f4=close
+
+# On SL-Cxxxx, F11 is the "menu" key. In order to be able to assign a function
+# to this key via keylaunch, this must be commented out.
+# NOTE: Uncommenting this usually means that matchbox crashes on startup!
+#
+# f11=fullscreen
+
+### super should be a 'window' key, uncomment '#' if you have one.
+
+#<super>d=desktop
+#<super>r=!xterm
+#<super>e=!!nautilus
+
+### Special keys, likely probably only available on extended keyboards.
+
+#App=!matchbox-remote -mbmenu
+#Menu=!matchbox-remote -mbmenu
+
diff --git a/packages/matchbox-wm/matchbox-wm/spitz/.mtn2git_empty b/packages/matchbox-wm/matchbox-wm/spitz/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/matchbox-wm/matchbox-wm/spitz/.mtn2git_empty
diff --git a/packages/matchbox-wm/matchbox-wm/spitz/kbdconfig b/packages/matchbox-wm/matchbox-wm/spitz/kbdconfig
new file mode 100644
index 0000000000..7de0071c08
--- /dev/null
+++ b/packages/matchbox-wm/matchbox-wm/spitz/kbdconfig
@@ -0,0 +1,51 @@
+#
+# This is an example keyboard config file for matchbox
+#
+# You can edit this file or change per user by copying to
+# ~/.matchbox/kbdconfig
+#
+# Se the matchbox manual for more info ( http://projects.o-hand.com/matchbox )
+
+### Window operation short cuts
+
+<Alt>n=next
+<Alt>p=prev
+<Alt>c=close
+<Alt>d=desktop
+<Alt>m=!matchbox-remote -mbmenu
+
+### App launching.
+
+<ctrl><alt>x=!xterm
+<ctrl><alt>r=!rxvt
+
+### App launching with startup notify
+
+<ctrl><alt>e=!!gpe-calender
+
+### windows style key shortcuts
+
+<alt>Tab=next
+<alt><shift>Tab=prev
+
+<alt>space=taskmenu
+<alt>escape=!matchbox-remote -mbmenu
+<alt>f4=close
+
+# On SL-Cxxxx, F11 is the "menu" key. In order to be able to assign a function
+# to this key via keylaunch, this must be commented out.
+# NOTE: Uncommenting this usually means that matchbox crashes on startup!
+#
+# f11=fullscreen
+
+### super should be a 'window' key, uncomment '#' if you have one.
+
+#<super>d=desktop
+#<super>r=!xterm
+#<super>e=!!nautilus
+
+### Special keys, likely probably only available on extended keyboards.
+
+#App=!matchbox-remote -mbmenu
+#Menu=!matchbox-remote -mbmenu
+
diff --git a/packages/matchbox-wm/matchbox-wm_svn.bb b/packages/matchbox-wm/matchbox-wm_svn.bb
index 7654ebd94c..c17ce96252 100644
--- a/packages/matchbox-wm/matchbox-wm_svn.bb
+++ b/packages/matchbox-wm/matchbox-wm_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL"
DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
PV = "0.9.5+svn${SRCDATE}"
-PR = "r1"
+PR = "r2"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-window-manager;proto=http \
diff --git a/packages/meta/e-image-core.bb b/packages/meta/e-image-core.bb
index 46957d1c53..f20f6c61f1 100644
--- a/packages/meta/e-image-core.bb
+++ b/packages/meta/e-image-core.bb
@@ -5,13 +5,18 @@ PR = "r1"
export IMAGE_BASENAME = "e-image-core"
export IMAGE_LINGUAS = ""
-DEPENDS = "task-bootstrap xserver-kdrive task-e-x11-core"
+DEPENDS = "task-bootstrap \
+ xserver-kdrive \
+ task-e-x11-core \
+ glibc-charmap-utf-8 \
+ glibc-localedata-i18n"
PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/evas = "evas-x11"
PREFERRED_PROVIDER_virtual/ecore = "ecore-x11"
PREFERRED_PROVIDER_virtual/imlib2 = "imlib2-x11"
PREFERRED_PROVIDER_virtual/libxine = "libxine-x11"
+PREFERRED_PROVIDER_libx11 = "libx11"
export IPKG_INSTALL = "task-bootstrap task-e-x11-core xserver-kdrive-fbdev"
diff --git a/packages/meta/slugos-native.bb b/packages/meta/slugos-native.bb
index cbb74fc823..e23bfd1d8f 100644
--- a/packages/meta/slugos-native.bb
+++ b/packages/meta/slugos-native.bb
@@ -5,7 +5,7 @@
#
DESCRIPTION = "Packages that are required for the SlugOS native build environment"
LICENSE = "MIT"
-PR = "r0"
+PR = "r1"
INHIBIT_DEFAULT_DEPS = "1"
EXCLUDE_FROM_WORLD = "1"
@@ -16,8 +16,7 @@ PROVIDES += "${SLUGOS_IMAGENAME}-native"
# Run-time only (RDEPENDS) stuff - no package explicitly provides
# these targets.
SLUGOS_NATIVE_RT_prepend_linux = "\
- glibc-extra-nss glibc-utils \
- libc6 libc6-dev \
+ glibc-extra-nss glibc-utils glibc \
"
SLUGOS_NATIVE_RT_prepend_linux-uclibc = "\
uclibc-dev uclibc-utils \
diff --git a/packages/meta/task-gpe.bb b/packages/meta/task-gpe.bb
index 7ee14f9733..7fb4de851f 100644
--- a/packages/meta/task-gpe.bb
+++ b/packages/meta/task-gpe.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Task packages for GPE Palmtop Environment"
-PR = "r0"
+PR = "r1"
LICENSE = MIT
ALLOW_EMPTY = "1"
@@ -88,7 +88,8 @@ RDEPENDS_gpe-task-apps := "\
matchbox-panel-hacks \
gpe-aerial \
gpe-soundbite \
- rosetta"
+ rosetta \
+ gpe-screenshot"
RDEPENDS_gpe-task-games := "\
gpe-go \
diff --git a/packages/meta/task-python-everything_1.0.0.bb b/packages/meta/task-python-everything_1.0.0.bb
index 705074a876..c98b3231f3 100644
--- a/packages/meta/task-python-everything_1.0.0.bb
+++ b/packages/meta/task-python-everything_1.0.0.bb
@@ -2,7 +2,7 @@ DESCRIPTION= "Everything Python"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml2"
+PR = "ml3"
RDEPENDS = "\
python-ao \
@@ -19,6 +19,7 @@ RDEPENDS = "\
python-hmm \
python-inotify \
python-irclib \
+ python-itools \
python-logilab \
python-libgmail \
python-mad \
diff --git a/packages/meta/task-python-sharprom_1.0.0.bb b/packages/meta/task-python-sharprom_1.0.0.bb
index aa1fc348bd..a90e31b76a 100644
--- a/packages/meta/task-python-sharprom_1.0.0.bb
+++ b/packages/meta/task-python-sharprom_1.0.0.bb
@@ -2,7 +2,7 @@ DESCRIPTION= "Everything Python for SharpROM"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml2"
+PR = "ml3"
NONWORKING = "\
python-codes \
@@ -26,7 +26,7 @@ RDEPENDS = "\
python-gnosis \
python-hmm \
python-irclib \
- python-irclib \
+ python-itools \
python-libgmail \
python-logilab \
python-mad \
diff --git a/packages/mozilla/files/firefox-1.0-gcc4-compile.patch b/packages/mozilla/files/firefox-1.0-gcc4-compile.patch
new file mode 100644
index 0000000000..5179a3195c
--- /dev/null
+++ b/packages/mozilla/files/firefox-1.0-gcc4-compile.patch
@@ -0,0 +1,119 @@
+Index: gfx/src/freetype/nsFreeType.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/gfx/src/freetype/nsFreeType.cpp,v
+retrieving revision 1.24
+diff -u -r1.24 nsFreeType.cpp
+--- gfx/src/freetype/nsFreeType.cpp 7 Feb 2004 15:22:30 -0000 1.24
++++ gfx/src/freetype/nsFreeType.cpp 4 Mar 2005 19:59:53 -0000
+@@ -96,7 +96,7 @@
+ // Define the FreeType2 functions we resolve at run time.
+ // see the comment near nsFreeType2::DoneFace() for more info
+ //
+-#define NS_FT2_OFFSET(f) (int)&((nsFreeType2*)0)->f
++#define NS_FT2_OFFSET(f) (NS_PTR_TO_INT32(&((nsFreeType2*)0)->f))
+ FtFuncList nsFreeType2::FtFuncs [] = {
+ {"FT_Done_Face", NS_FT2_OFFSET(nsFT_Done_Face), PR_TRUE},
+ {"FT_Done_FreeType", NS_FT2_OFFSET(nsFT_Done_FreeType), PR_TRUE},
+Index: netwerk/protocol/http/src/nsHttpConnectionMgr.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/netwerk/protocol/http/src/nsHttpConnectionMgr.cpp,v
+retrieving revision 1.7.20.1
+diff -u -r1.7.20.1 nsHttpConnectionMgr.cpp
+--- netwerk/protocol/http/src/nsHttpConnectionMgr.cpp 1 Sep 2004 23:31:03 -0000 1.7.20.1
++++ netwerk/protocol/http/src/nsHttpConnectionMgr.cpp 4 Mar 2005 19:59:57 -0000
+@@ -834,8 +834,8 @@
+ void
+ nsHttpConnectionMgr::OnMsgUpdateParam(nsresult status, void *param)
+ {
+- PRUint16 name = (PRUint32(param) & 0xFFFF0000) >> 16;
+- PRUint16 value = PRUint32(param) & 0x0000FFFF;
++ PRUint16 name = (NS_PTR_TO_INT32(param) & 0xFFFF0000) >> 16;
++ PRUint16 value = NS_PTR_TO_INT32(param) & 0x0000FFFF;
+
+ switch (name) {
+ case MAX_CONNECTIONS:
+Index: security/nss/lib/pki1/oiddata.h
+===================================================================
+RCS file: /cvsroot/mozilla/security/nss/lib/pki1/oiddata.h,v
+retrieving revision 1.1
+diff -u -r1.1 oiddata.h
+--- security/nss/lib/pki1/oiddata.h 4 Jan 2002 05:22:07 -0000 1.1
++++ security/nss/lib/pki1/oiddata.h 4 Mar 2005 19:59:58 -0000
+@@ -43,9 +43,6 @@
+ #include "nsspki1t.h"
+ #endif /* NSSPKI1T_H */
+
+-extern const NSSOID nss_builtin_oids[];
+-extern const PRUint32 nss_builtin_oid_count;
+-
+ /*extern const nssAttributeTypeAliasTable nss_attribute_type_aliases[];*/
+ /*extern const PRUint32 nss_attribute_type_alias_count;*/
+
+Index: security/nss/lib/pki1/pki1.h
+===================================================================
+RCS file: /cvsroot/mozilla/security/nss/lib/pki1/pki1.h,v
+retrieving revision 1.2
+diff -u -r1.2 pki1.h
+--- security/nss/lib/pki1/pki1.h 19 Jul 2001 20:40:42 -0000 1.2
++++ security/nss/lib/pki1/pki1.h 4 Mar 2005 19:59:59 -0000
+@@ -58,6 +58,8 @@
+ /* fgmr 19990505 moved these here from oiddata.h */
+ extern const nssAttributeTypeAliasTable nss_attribute_type_aliases[];
+ extern const PRUint32 nss_attribute_type_alias_count;
++extern const NSSOID nss_builtin_oids[];
++extern const PRUint32 nss_builtin_oid_count;
+
+ /*
+ * NSSOID
+Index: widget/src/gtk2/nsDragService.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/widget/src/gtk2/nsDragService.cpp,v
+retrieving revision 1.5
+diff -u -r1.5 nsDragService.cpp
+--- widget/src/gtk2/nsDragService.cpp 30 Oct 2003 01:48:41 -0000 1.5
++++ widget/src/gtk2/nsDragService.cpp 4 Mar 2005 20:00:01 -0000
+@@ -838,7 +838,7 @@
+ (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+ listTarget->target = g_strdup(gMimeListType);
+ listTarget->flags = 0;
+- listTarget->info = (guint)listAtom;
++ listTarget->info = (guint)(NS_PTR_TO_INT32(listAtom));
+ PR_LOG(sDragLm, PR_LOG_DEBUG,
+ ("automatically adding target %s with id %ld\n",
+ listTarget->target, listAtom));
+@@ -877,7 +877,7 @@
+ (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+ listTarget->target = g_strdup(gTextUriListType);
+ listTarget->flags = 0;
+- listTarget->info = (guint)listAtom;
++ listTarget->info = (guint)NS_PTR_TO_INT32(listAtom);
+ PR_LOG(sDragLm, PR_LOG_DEBUG,
+ ("automatically adding target %s with \
+ id %ld\n", listTarget->target, listAtom));
+@@ -914,7 +914,7 @@
+ (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+ target->target = g_strdup(flavorStr);
+ target->flags = 0;
+- target->info = (guint)atom;
++ target->info = (guint)NS_PTR_TO_INT32(atom);
+ PR_LOG(sDragLm, PR_LOG_DEBUG,
+ ("adding target %s with id %ld\n",
+ target->target, atom));
+@@ -931,7 +931,7 @@
+ (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+ plainTarget->target = g_strdup(kTextMime);
+ plainTarget->flags = 0;
+- plainTarget->info = (guint)plainAtom;
++ plainTarget->info = (guint)NS_PTR_TO_INT32(plainAtom);
+ PR_LOG(sDragLm, PR_LOG_DEBUG,
+ ("automatically adding target %s with \
+ id %ld\n", plainTarget->target, plainAtom));
+@@ -948,7 +948,7 @@
+ (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+ urlTarget->target = g_strdup(gMozUrlType);
+ urlTarget->flags = 0;
+- urlTarget->info = (guint)urlAtom;
++ urlTarget->info = (guint)NS_PTR_TO_INT32(urlAtom);
+ PR_LOG(sDragLm, PR_LOG_DEBUG,
+ ("automatically adding target %s with \
+ id %ld\n", urlTarget->target, urlAtom));
diff --git a/packages/mozilla/firefox-1.0.6/firefox-cc-fix.patch b/packages/mozilla/firefox-1.0.6/firefox-cc-fix.patch
deleted file mode 100644
index e2df2a390c..0000000000
--- a/packages/mozilla/firefox-1.0.6/firefox-cc-fix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- mozilla/js/src/Makefile.in 2004-03-31 09:38:54.000000000 -0700
-+++ mozilla.new/js/src/Makefile.in 2004-11-12 16:29:32.856436952 -0700
-@@ -342,16 +342,10 @@
-
- jsopcode.h jsopcode.c: jsopcode.tbl
-
--ifeq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
-+# OE hack - we copy this in
- jsautocfg.h:
- touch $@
--else
--jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
-- @rm -f $@ jsautocfg.tmp
-- ./jscpucfg > jsautocfg.tmp
-- mv jsautocfg.tmp $@
--endif
--
-+
- # jscpucfg is a strange target
- # Needs to be built with the host compiler but needs to include
- # the mdcpucfg for the target so it needs the appropriate target defines
diff --git a/packages/mozilla/firefox-1.5.0.1/.mtn2git_empty b/packages/mozilla/firefox-1.5.0.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/firefox-1.5.0.1/.mtn2git_empty
diff --git a/packages/mozilla/firefox-1.0.6/jsautocfg.h b/packages/mozilla/firefox-1.5.0.1/jsautocfg.h
index 05f3dad50a..05f3dad50a 100644
--- a/packages/mozilla/firefox-1.0.6/jsautocfg.h
+++ b/packages/mozilla/firefox-1.5.0.1/jsautocfg.h
diff --git a/packages/mozilla/firefox-1.0.6/mozconfig b/packages/mozilla/firefox-1.5.0.1/mozconfig
index 025b396ac7..025b396ac7 100644
--- a/packages/mozilla/firefox-1.0.6/mozconfig
+++ b/packages/mozilla/firefox-1.5.0.1/mozconfig
diff --git a/packages/mozilla/firefox-1.5/mozconfig b/packages/mozilla/firefox-1.5/mozconfig
deleted file mode 100644
index 025b396ac7..0000000000
--- a/packages/mozilla/firefox-1.5/mozconfig
+++ /dev/null
@@ -1,53 +0,0 @@
-. $topsrcdir/browser/config/mozconfig
-
-# use GTK+-2 widget set with XFT font rendering
-ac_add_options --enable-default-toolkit=gtk2
-ac_add_options --enable-xft
-ac_add_options --disable-freetype2
-
-# enable minimal profile support
-ac_add_options --disable-profilesharing
-ac_add_options --disable-profilelocking
-ac_add_options --enable-single-profile
-
-ac_add_options --with-system-zlib
-ac_add_options --with-system-jpeg
-ac_add_options --with-system-png
-
-ac_add_options --disable-accessibility
-ac_add_options --disable-composer
-#ac_add_options --enable-plaintext-editor-only
-ac_add_options --disable-mailnews
-ac_add_options --disable-ldap
-#ac_add_options --disable-postscript
-ac_add_options --disable-mathml
-ac_add_options --disable-jsd
-ac_add_options --disable-installer
-ac_add_options --disable-xprint
-ac_add_options --disable-necko-disk-cache
-
-# configure necko to allocate smaller network buffers
-ac_add_options --enable-necko-small-buffers
-
-# disable debug logging and tests
-#ac_add_options --disable-dtd-debug
-ac_add_options --disable-logging
-ac_add_options --disable-debug
-ac_add_options --disable-gtktest
-ac_add_options --disable-tests
-
-# build crypto module (PSM + NSS)
-ac_add_options --enable-crypto
-
-# build minimal set of protocol handlers
-ac_add_options --enable-necko-protocols=http,file,res,jar,ftp,about,viewsource
-
-# build minimal set of image decoders
-ac_add_options --enable-image-decoders=png,gif,jpeg
-
-#ac_add_options --enable-reorder
-#ac_add_options --enable-elf-dynstr-gc
-
-# enable static build
-#ac_add_options --disable-shared
-#ac_add_options --enable-static
diff --git a/packages/mozilla/firefox_1.0.6.bb b/packages/mozilla/firefox_1.0.6.bb
deleted file mode 100644
index b3eeedcf64..0000000000
--- a/packages/mozilla/firefox_1.0.6.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-PR = "r0"
-SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/firefox-${PV}-source.tar.bz2 \
- file://xptcstubs.patch;patch=1 \
- file://no-xmb.patch;patch=1 \
- file://firefox-cc-fix.patch;patch=1 \
- file://jsautocfg.h \
- file://extensions-hack.patch;patch=1"
-
-S = "${WORKDIR}/mozilla"
-
-inherit mozilla
-
-include firefox.inc
-
-do_compile_prepend() {
- cp ${WORKDIR}/jsautocfg.h ${S}/js/src/
-}
-
diff --git a/packages/mozilla/firefox_1.0.7.bb b/packages/mozilla/firefox_1.0.7.bb
index b3eeedcf64..668c9a6aeb 100644
--- a/packages/mozilla/firefox_1.0.7.bb
+++ b/packages/mozilla/firefox_1.0.7.bb
@@ -4,7 +4,8 @@ SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${PV}/source/
file://no-xmb.patch;patch=1 \
file://firefox-cc-fix.patch;patch=1 \
file://jsautocfg.h \
- file://extensions-hack.patch;patch=1"
+ file://extensions-hack.patch;patch=1 \
+ file://firefox-1.0-gcc4-compile.patch;patch=1;pnum=0"
S = "${WORKDIR}/mozilla"
diff --git a/packages/mozilla/firefox_1.5.bb b/packages/mozilla/firefox_1.5.0.1.bb
index 95c9509b69..95c9509b69 100644
--- a/packages/mozilla/firefox_1.5.bb
+++ b/packages/mozilla/firefox_1.5.0.1.bb
diff --git a/packages/mozilla/thunderbird-1.0.6/extensions-hack.patch b/packages/mozilla/thunderbird-1.0.6/extensions-hack.patch
deleted file mode 100644
index b3906b2be6..0000000000
--- a/packages/mozilla/thunderbird-1.0.6/extensions-hack.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- mozilla/toolkit/mozapps/extensions/src/nsExtensionManager.js.in.old 2004-08-03 11:45:51.000000000 +0100
-+++ mozilla/toolkit/mozapps/extensions/src/nsExtensionManager.js.in 2004-08-03 11:46:04.000000000 +0100
-@@ -1429,6 +1429,7 @@
- win.close();
-
- }
-+ needsRestart = false;
- return needsRestart;
- },
-
diff --git a/packages/mozilla/thunderbird-1.0.6/mozconfig b/packages/mozilla/thunderbird-1.0.6/mozconfig
deleted file mode 100644
index b48cb7398d..0000000000
--- a/packages/mozilla/thunderbird-1.0.6/mozconfig
+++ /dev/null
@@ -1,49 +0,0 @@
-ac_add_options --with-pthreads
-ac_add_options --disable-freetype2
-ac_add_options --disable-xprint
-ac_add_options --enable-crypto
-ac_add_options --disable-jsd
-ac_add_options --disable-oji
-ac_add_options --disable-accessibility
-ac_add_options --enable-single-profile
-ac_add_options --disable-composer
-ac_add_options --enable-extensions=pref,spellcheck,universalchardet,wallet
-ac_add_options --disable-ldap
-ac_add_options --disable-mathml
-ac_add_options --disable-installer
-ac_add_options --disable-activex
-ac_add_options --disable-activex-scripting
-ac_add_options --disable-tests
-ac_add_options --disable-logging
-ac_add_options --enable-reorder
-ac_add_options --enable-strip
-ac_add_options --enable-elf-dynstr-gc
-ac_add_options --enable-xterm-updates
-ac_add_options --with-default-mozilla-five-home=/usr/lib/thunderbird-0.7.3
-ac_add_options --disable-pedantic
-ac_add_options --disable-profilesharing
-ac_add_options --disable-profilelocking
-ac_add_options --disable-necko-disk-cache
-ac_add_options --enable-necko-small-buffers
-
-# use GTK+-2 widget set with XFT font rendering
-ac_add_options --enable-default-toolkit=gtk2
-ac_add_options --enable-xft
-ac_add_options --disable-freetype2
-
-ac_add_options --with-system-zlib
-ac_add_options --with-system-jpeg
-ac_add_options --with-system-png
-
-# build minimal set of protocol handlers
-ac_add_options --enable-necko-protocols=http,file,res,jar,viewsource
-
-# build minimal set of image decoders
-ac_add_options --enable-image-decoders=png,gif,jpeg
-
-export MOZ_THUNDERBIRD=1
-mk_add_options MOZ_THUNDERBIRD=1
-export BUILD_OFFICIAL=1
-export MOZILLA_OFFICIAL=1
-mk_add_options BUILD_OFFICIAL=1
-mk_add_options MOZILLA_OFFICIAL=1
diff --git a/packages/mozilla/thunderbird-1.0.7/.mtn2git_empty b/packages/mozilla/thunderbird-1.0.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mozilla/thunderbird-1.0.7/.mtn2git_empty
diff --git a/packages/mozilla/thunderbird-0.7.3/extensions-hack.patch b/packages/mozilla/thunderbird-1.0.7/extensions-hack.patch
index b3906b2be6..b3906b2be6 100644
--- a/packages/mozilla/thunderbird-0.7.3/extensions-hack.patch
+++ b/packages/mozilla/thunderbird-1.0.7/extensions-hack.patch
diff --git a/packages/mozilla/thunderbird-0.7.3/mozconfig b/packages/mozilla/thunderbird-1.0.7/mozconfig
index b48cb7398d..b48cb7398d 100644
--- a/packages/mozilla/thunderbird-0.7.3/mozconfig
+++ b/packages/mozilla/thunderbird-1.0.7/mozconfig
diff --git a/packages/mozilla/thunderbird_0.7.3.bb b/packages/mozilla/thunderbird_0.7.3.bb
deleted file mode 100644
index 8b83da248f..0000000000
--- a/packages/mozilla/thunderbird_0.7.3.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-SECTION = "x11/utils"
-DEPENDS += "gnupg"
-RRECOMMENDS += "gnupg"
-PR = "r1"
-
-EMVER="0.85.0"
-IPCVER="1.0.7"
-SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/${PV}/thunderbird-${PV}-source.tar.bz2 \
- http://downloads.mozdev.org/enigmail/src/enigmail-${EMVER}.tar.gz \
-http://downloads.mozdev.org/enigmail/src/ipc-${IPCVER}.tar.gz \
- file://xptcstubs.patch;patch=1 \
- file://no-xmb.patch;patch=1 \
- file://extensions-hack.patch;patch=1 \
- file://mozilla-thunderbird.png file://mozilla-thunderbird.desktop"
-S = "${WORKDIR}/mozilla"
-
-FILES_${PN} += "${libdir}/thunderbird-${PV} ${datadir}/idl"
-
-inherit mozilla
-
-export MOZ_THUNDERBIRD=1
-
-do_configure() {
- for x in ipc enigmail; do
- if [ ! -e ${WORKDIR}/mozilla/extensions/$x ]; then
- mv ${WORKDIR}/$x ${WORKDIR}/mozilla/extensions/
- cd ${WORKDIR}/mozilla/extensions/$x
- makemake
- fi
- done
- cd ${S}
- mozilla_do_configure
-}
-
-do_compile() {
- mozilla_do_compile
- oe_runmake -C ${WORKDIR}/mozilla/extensions/ipc
- oe_runmake -C ${WORKDIR}/mozilla/extensions/enigmail
-}
-
-do_install() {
- mozilla_do_install
- oe_runmake -C ${WORKDIR}/mozilla/extensions/ipc DESTDIR="${D}" install
- oe_runmake -C ${WORKDIR}/mozilla/extensions/enigmail DESTDIR="${D}" install
- install -d ${D}${datadir}/applications
- install -d ${D}${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/mozilla-thunderbird.desktop ${D}${datadir}/applications/
- install -m 0644 ${WORKDIR}/mozilla-thunderbird.png ${D}${datadir}/pixmaps/
-}
-
-pkg_postinst_thunderbird() {
- chmod -R a+w ${libdir}/thunderbird*
-}
-
-# Simulate the silly csh makemake script
-makemake() {
- typeset m topdir
- for m in $(find . -name Makefile.in); do
- topdir=$(echo "$m" | sed -r 's:[^/]+:..:g')
- sed -e "s:@srcdir@:.:g" -e "s:@top_srcdir@:${topdir}:g" \
- < ${m} > ${m%.in} || die "sed ${m} failed"
- done
-}
diff --git a/packages/mozilla/thunderbird_1.0.6.bb b/packages/mozilla/thunderbird_1.0.6.bb
deleted file mode 100644
index 52d68ef481..0000000000
--- a/packages/mozilla/thunderbird_1.0.6.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-SECTION = "x11/utils"
-DEPENDS += "gnupg"
-RRECOMMENDS += "gnupg"
-PR = "r0"
-
-EMVER="0.92.0"
-IPCVER="1.1.3"
-SRC_URI = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/${PV}/source/thunderbird-${PV}-source.tar.bz2 \
- http://downloads.mozdev.org/enigmail/src/enigmail-${EMVER}.tar.gz \
-http://downloads.mozdev.org/enigmail/src/ipc-${IPCVER}.tar.gz \
- file://xptcstubs.patch;patch=1 \
- file://no-xmb.patch;patch=1 \
- file://extensions-hack.patch;patch=1 \
- file://mozilla-thunderbird.png file://mozilla-thunderbird.desktop"
-S = "${WORKDIR}/mozilla"
-
-FILES_${PN} += "${libdir}/thunderbird-${PV} ${datadir}/idl"
-
-inherit mozilla
-
-export MOZ_THUNDERBIRD=1
-
-do_configure() {
- for x in ipc enigmail; do
- if [ ! -e ${WORKDIR}/mozilla/extensions/$x ]; then
- mv ${WORKDIR}/$x ${WORKDIR}/mozilla/extensions/
- cd ${WORKDIR}/mozilla/extensions/$x
- makemake
- fi
- done
- cd ${S}
- mozilla_do_configure
-}
-
-do_compile() {
- mozilla_do_compile
- oe_runmake -C ${WORKDIR}/mozilla/extensions/ipc
- oe_runmake -C ${WORKDIR}/mozilla/extensions/enigmail
-}
-
-do_install() {
- mozilla_do_install
- oe_runmake -C ${WORKDIR}/mozilla/extensions/ipc DESTDIR="${D}" install
- oe_runmake -C ${WORKDIR}/mozilla/extensions/enigmail DESTDIR="${D}" install
- install -d ${D}${datadir}/applications
- install -d ${D}${datadir}/pixmaps
- install -m 0644 ${WORKDIR}/mozilla-thunderbird.desktop ${D}${datadir}/applications/
- install -m 0644 ${WORKDIR}/mozilla-thunderbird.png ${D}${datadir}/pixmaps/
-}
-
-pkg_postinst_thunderbird() {
- chmod -R a+w ${libdir}/thunderbird*
-}
-
-# Simulate the silly csh makemake script
-makemake() {
- typeset m topdir
- for m in $(find . -name Makefile.in); do
- topdir=$(echo "$m" | sed -r 's:[^/]+:..:g')
- sed -e "s:@srcdir@:.:g" -e "s:@top_srcdir@:${topdir}:g" \
- < ${m} > ${m%.in} || die "sed ${m} failed"
- done
-}
diff --git a/packages/mozilla/thunderbird_1.0.7.bb b/packages/mozilla/thunderbird_1.0.7.bb
index 52d68ef481..c3370c6f28 100644
--- a/packages/mozilla/thunderbird_1.0.7.bb
+++ b/packages/mozilla/thunderbird_1.0.7.bb
@@ -11,6 +11,7 @@ http://downloads.mozdev.org/enigmail/src/ipc-${IPCVER}.tar.gz \
file://xptcstubs.patch;patch=1 \
file://no-xmb.patch;patch=1 \
file://extensions-hack.patch;patch=1 \
+ file://firefox-1.0-gcc4-compile.patch;patch=1;pnum=0 \
file://mozilla-thunderbird.png file://mozilla-thunderbird.desktop"
S = "${WORKDIR}/mozilla"
diff --git a/packages/mplayer/files/.mtn2git_empty b/packages/mplayer/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mplayer/files/.mtn2git_empty
diff --git a/packages/mplayer/files/mplayer-1.0_pre7-gcc4.patch b/packages/mplayer/files/mplayer-1.0_pre7-gcc4.patch
new file mode 100644
index 0000000000..d5a7a30505
--- /dev/null
+++ b/packages/mplayer/files/mplayer-1.0_pre7-gcc4.patch
@@ -0,0 +1,187 @@
+diff -bBur MPlayer-20050413-orig/configure MPlayer-20050413/configure
+--- MPlayer-20050413-orig/configure 2005-04-06 14:57:08.000000000 +0300
++++ MPlayer-20050413/configure 2005-04-14 16:20:41.000000000 +0300
+@@ -604,7 +604,7 @@
+ cc_version="v. ?.??, bad"
+ cc_verc_fail=yes
+ ;;
+- 2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9])
++ 2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]|4.*)
+ _cc_major=`echo $cc_version | cut -d '.' -f 1`
+ _cc_minor=`echo $cc_version | cut -d '.' -f 2`
+ _cc_mini=`echo $cc_version | cut -d '.' -f 3`
+diff -bBur MPlayer-20050413-orig/liba52/imdct.c MPlayer-20050413/liba52/imdct.c
+--- MPlayer-20050413-orig/liba52/imdct.c 2005-03-23 01:27:18.000000000 +0200
++++ MPlayer-20050413/liba52/imdct.c 2005-04-14 16:48:54.000000000 +0300
+@@ -937,7 +937,8 @@
+ /* 4-7. iterations */
+ for (m=3; m < 7; m++) {
+ two_m = (1 << m);
+- two_m_plus_one = two_m<<1;
++ int two_m_plus_four=two_m<<4;
++ complex_t* buf_plus_128=buf+128;
+ asm volatile(
+ "movl %0, %%esi \n\t"
+ ".balign 16 \n\t"
+@@ -963,7 +964,7 @@
+ "addl %2, %%esi \n\t"
+ "cmpl %1, %%esi \n\t"
+ " jb 1b \n\t"
+- :: "g" (buf), "m" (buf+128), "m" (two_m_plus_one<<3), "r" (two_m<<3),
++ :: "g" (buf), "m" (buf_plus_128), "m" (two_m_plus_four), "r" (two_m<<3),
+ "r" (sseW[m])
+ : "%esi", "%edi", "%edx"
+ );
+diff -bBur MPlayer-20050413-orig/libavcodec/libpostproc/postprocess_template.c MPlayer-20050413/libavcodec/libpostproc/postprocess_template.c
+--- MPlayer-20050413-orig/libavcodec/libpostproc/postprocess_template.c 2005-02-27 10:56:26.000000000 +0200
++++ MPlayer-20050413/libavcodec/libpostproc/postprocess_template.c 2005-04-14 16:35:07.000000000 +0300
+@@ -2648,6 +2648,8 @@
+ static always_inline void RENAME(do_a_deblock)(uint8_t *src, int step, int stride, PPContext *c){
+ int64_t dc_mask, eq_mask;
+ int64_t sums[10*8*2];
++ int64_t dc_and_eq_mask;
++
+ src+= step*3; // src points to begin of the 8x8 Block
+ //START_TIMER
+ asm volatile(
+@@ -2754,8 +2756,9 @@
+ : "r" (src), "r" ((long)step), "m" (c->pQPb), "m"(c->ppMode.flatnessThreshold)
+ : "%"REG_a
+ );
++ dc_and_eq_mask=dc_mask & eq_mask;
+
+- if(dc_mask & eq_mask){
++ if(dc_and_eq_mask){
+ long offset= -8*step;
+ int64_t *temp_sums= sums;
+
+@@ -2930,7 +2933,7 @@
+ " js 1b \n\t"
+
+ : "+r"(offset), "+r"(temp_sums)
+- : "r" ((long)step), "r"(src - offset), "m"(dc_mask & eq_mask)
++ : "r" ((long)step), "r"(src - offset), "m"(dc_and_eq_mask)
+ );
+ }else
+ src+= step; // src points to begin of the 8x8 Block
+diff -bBur MPlayer-20050413-orig/libmpdemux/frequencies.h MPlayer-20050413/libmpdemux/frequencies.h
+--- MPlayer-20050413-orig/libmpdemux/frequencies.h 2001-11-17 00:06:48.000000000 +0200
++++ MPlayer-20050413/libmpdemux/frequencies.h 2005-04-14 16:36:51.000000000 +0300
+@@ -104,7 +104,7 @@
+ /* --------------------------------------------------------------------- */
+
+ extern struct CHANLISTS chanlists[];
+-extern struct STRTAB chanlist_names[];
++/* extern struct STRTAB chanlist_names[]; */
+
+ extern int chantab;
+ extern struct CHANLIST *chanlist;
+diff -bBur MPlayer-20050413-orig/mmx.h MPlayer-20050413/mmx.h
+--- MPlayer-20050413-orig/mmx.h 2001-10-28 13:47:21.000000000 +0200
++++ MPlayer-20050413/mmx.h 2005-04-14 16:22:54.000000000 +0300
+@@ -353,11 +353,11 @@
+ #define mmx_m2r(op, mem, reg) \
+ __asm__ __volatile__ (#op " %0, %%" #reg \
+ : /* nothing */ \
+- : "X" (mem))
++ : "m" (mem))
+
+ #define mmx_r2m(op, reg, mem) \
+ __asm__ __volatile__ (#op " %%" #reg ", %0" \
+- : "=X" (mem) \
++ : "=m" (mem) \
+ : /* nothing */ )
+
+ #define mmx_r2r(op, regs, regd) \
+@@ -367,8 +367,8 @@
+ __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
+ #op " %1, %%mm0\n\t" \
+ "movq %%mm0, %0" \
+- : "=X" (memd) \
+- : "X" (mems))
++ : "=m" (memd) \
++ : "m" (mems))
+
+ #endif
+
+diff -bBur MPlayer-20050413-orig/postproc/swscale_template.c MPlayer-20050413/postproc/swscale_template.c
+--- MPlayer-20050413-orig/postproc/swscale_template.c 2005-02-17 01:47:00.000000000 +0200
++++ MPlayer-20050413/postproc/swscale_template.c 2005-04-14 16:46:12.000000000 +0300
+@@ -2136,6 +2136,7 @@
+ else
+ {
+ long counter= -2*dstW;
++ uint8_t* ptr=src+filterSize;
+ // filter-= counter*filterSize/2;
+ filterPos-= counter/2;
+ dst-= counter/2;
+@@ -2177,7 +2178,7 @@
+ " jnc 1b \n\t"
+
+ : "+r" (counter), "+r" (filter)
+- : "m" (filterPos), "m" (dst), "m"(src+filterSize),
++ : "m" (filterPos), "m" (dst), "m"(ptr),
+ "m" (src), "r" ((long)filterSize*2)
+ : "%"REG_b, "%"REG_a, "%"REG_c
+ );
+@@ -2320,6 +2321,8 @@
+ {
+ #endif
+ //NO MMX just normal asm ...
++ int xInc_hi=xInc>>16;
++ int xInc_lo=xInc&0xffff;
+ asm volatile(
+ "xor %%"REG_a", %%"REG_a" \n\t" // i
+ "xor %%"REG_b", %%"REG_b" \n\t" // xx
+@@ -2356,7 +2359,7 @@
+ " jb 1b \n\t"
+
+
+- :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc>>16), "m" (xInc&0xFFFF)
++ :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc_hi), "m" (xInc_lo)
+ : "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi"
+ );
+ #ifdef HAVE_MMX2
+@@ -2515,6 +2518,8 @@
+ else
+ {
+ #endif
++ int xInc_hi=xInc>>16;
++ int xInc_lo=xInc&0xffff;
+ asm volatile(
+ "xor %%"REG_a", %%"REG_a" \n\t" // i
+ "xor %%"REG_b", %%"REG_b" \n\t" // xx
+@@ -2548,7 +2553,7 @@
+ "cmp %2, %%"REG_a" \n\t"
+ " jb 1b \n\t"
+
+- :: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" ((long)(xInc>>16)), "m" ((xInc&0xFFFF)),
++ :: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" ((long)(xInc_hi)), "m" ((xInc_lo)),
+ "r" (src2)
+ : "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi"
+ );
+
+--- MPlayer-1.0pre7/libvo/aclib_template.c 2005-04-25 08:26:11.000000000 +0000
++++ MPlayer-1.0pre7.az/libvo/aclib_template.c 2005-04-25 08:26:17.000000000 +0000
+@@ -249,8 +249,8 @@
+ MOVNTQ" %%mm6, 48(%1)\n"
+ MOVNTQ" %%mm7, 56(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+- ((const unsigned char *)from)+=64;
+- ((unsigned char *)to)+=64;
++ from=((const unsigned char *)from)+64;
++ to=((unsigned char *)to)+64;
+ }
+
+ // printf(" %d %d\n", (int)from&1023, (int)to&1023);
+@@ -338,8 +338,8 @@
+ MOVNTQ" %%mm6, 48(%1)\n"
+ MOVNTQ" %%mm7, 56(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+- ((const unsigned char *)from)+=64;
+- ((unsigned char *)to)+=64;
++ from=((const unsigned char *)from)+64;
++ to=((unsigned char *)to)+64;
+ }
+
+ #endif /* Have SSE */
diff --git a/packages/mplayer/mplayer-atty_1.1.5.bb b/packages/mplayer/mplayer-atty_1.1.5.bb
index a45c43b05d..cfc8c7a40a 100644
--- a/packages/mplayer/mplayer-atty_1.1.5.bb
+++ b/packages/mplayer/mplayer-atty_1.1.5.bb
@@ -2,11 +2,12 @@ DESCRIPTION = "Open Source multimedia player."
SECTION = "opie/multimedia"
PRIORITY = "optional"
HOMEPAGE = "http://atty.skr.jp/?Zaurus%2Fmplayer"
-DEPENDS = "virtual/libsdl freetype libmad libogg libvorbis zlib libpng jpeg alsa-lib"
+DEPENDS = "virtual/libsdl freetype libmad libogg libvorbis zlib libpng jpeg alsa-lib mplayer-common"
+RDEPENDS = "mplayer-common"
LICENSE = "GPL"
RCONFLICTS = "mplayer"
MAINTAINER = "Graeme Gregory <dp@xora.org.uk>"
-PR = "r4"
+PR = "r5"
SRC_URI = "http://www.xora.org.uk/oe/mplayer-${PV}.tar.gz \
file://Makefile.patch;patch=1;pnum=0 \
@@ -14,7 +15,8 @@ SRC_URI = "http://www.xora.org.uk/oe/mplayer-${PV}.tar.gz \
file://Makefile-libs.patch;patch=1 \
file://libmpdemux-ogg-include.patch;patch=1 \
file://libmpcodecs-ogg-include.patch;patch=1 \
- file://alsa-configure.patch;patch=1 "
+ file://alsa-configure.patch;patch=1 \
+ file://mplayer-1.0_pre7-gcc4.patch;patch=1 "
PARALLEL_MAKE = ""
diff --git a/packages/mplayer/mplayer-common.bb b/packages/mplayer/mplayer-common.bb
new file mode 100644
index 0000000000..93ddc975b9
--- /dev/null
+++ b/packages/mplayer/mplayer-common.bb
@@ -0,0 +1,31 @@
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: mplayer-common.bb
+# Date: 26-Mar-06
+
+DESCRIPTION = "Preconfigured mplayer preferences"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+HOMEPAGE = "http://www.hentges.net/misc/openzaurus/index.shtml"
+
+######################################################################################
+
+PV = "0.0.1"
+PR = "r0"
+
+######################################################################################
+
+SRC_URI = "file://mplayer.conf"
+
+######################################################################################
+
+FILES_${PN} = "/usr/etc/mplayer"
+
+######################################################################################
+
+do_install() {
+ install -d "${D}/usr/etc/mplayer"
+
+ install -m 0644 ${WORKDIR}/mplayer.conf "${D}/usr/etc/mplayer"
+}
diff --git a/packages/mplayer/mplayer-common/.mtn2git_empty b/packages/mplayer/mplayer-common/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/mplayer/mplayer-common/.mtn2git_empty
diff --git a/packages/mplayer/mplayer-common/mplayer.conf b/packages/mplayer/mplayer-common/mplayer.conf
new file mode 100644
index 0000000000..92aeb15f3b
--- /dev/null
+++ b/packages/mplayer/mplayer-common/mplayer.conf
@@ -0,0 +1,15 @@
+
+# You probably shouldn't touch these
+ac=mad,
+ao=oss,
+
+# Required on SL-Cxxxx for correct rotation in the *VT*,
+# breaks rotation in X!
+# vf=rotate=1
+
+# Enable fullscreen display by default
+# fs=true
+
+# Drop frames to keep audio and video in sync
+framedrop=true
+
diff --git a/packages/mplayer/mplayer_1.0pre7.bb b/packages/mplayer/mplayer_1.0pre7.bb
index a9ace88530..25194beec9 100644
--- a/packages/mplayer/mplayer_1.0pre7.bb
+++ b/packages/mplayer/mplayer_1.0pre7.bb
@@ -2,17 +2,20 @@ DESCRIPTION = "Open Source multimedia player."
SECTION = "opie/multimedia"
PRIORITY = "optional"
HOMEPAGE = "http://www.mplayerhq.hu/"
-DEPENDS = "virtual/libsdl libmad libogg libvorbis zlib libpng jpeg"
+DEPENDS = "virtual/libsdl libmad libogg libvorbis zlib libpng jpeg mplayer-common"
+RDEPENDS = "mplayer-common"
LICENSE = "GPL"
SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-${PV}.tar.bz2 \
file://Makefile.patch;patch=1 \
file://sdl.patch;patch=0 \
file://zlib.patch;patch=0 \
file://libmpdemux-ogg-include.patch;patch=1 \
- file://libmpcodecs-ogg-include.patch;patch=1 "
+ file://libmpcodecs-ogg-include.patch;patch=1 \
+ file://mplayer-1.0_pre7-gcc4.patch;patch=1 "
+
MAINTAINER="Graeme Gregory <dp@xora.org.uk>"
RCONFLICTS_${PN} = "mplayer-atty"
-PR = "r2"
+PR = "r3"
PARALLEL_MAKE = ""
diff --git a/packages/nslu2-binary-only/unslung-rootfs/NOTES b/packages/nslu2-binary-only/unslung-rootfs/NOTES
index dedc2431ee..8d6908c74d 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/NOTES
+++ b/packages/nslu2-binary-only/unslung-rootfs/NOTES
@@ -1,4 +1,4 @@
-Unslung-5.x Family Release Notes
+Unslung-6.x Family Release Notes
Unslung is a replacement firmware image for the Linksys NSLU2 which is designed
to allow you to make changes to the root filesystem (including the installation
@@ -18,7 +18,7 @@ posting to the mailing list or asking a question in the IRC channel
OK! Now that that's out of the way...
This file is provided to give general information and usage notes for the
-Unslung 5.x firmware. If you are looking for installation instructions, please
+Unslung 6.x firmware. If you are looking for installation instructions, please
stop now and go to the README file. Follow the README instructions WORD for
WORD to keep from turning your NSLU2 into a brick. The information contained
in this file will make more sense if you have already "unslung" your NSLU2.
@@ -38,8 +38,8 @@ GENERAL INFORMATION
As stated above, Unslung firmware is a replacement firmware image for the
Linksys NSLU2. The Unslung firmware is intended to be used for loading new
packages (giving enhanced or additional functionality) with minimal changes
-to the standard user interface and firmware. The differences in the Unslung 5.x
-firmware from the standard Linksys 2.3R29 firmware can be found at:
+to the standard user interface and firmware. The differences in the Unslung 6.x
+firmware from the standard Linksys 2.3R63 firmware can be found at:
http://www.nslu2-linux.org/wiki/Unslung/UnslungFeatures
@@ -447,3 +447,48 @@ Added disk auto-wait countdown to /linuxrc (courtesy of glc).
5.5:
First public release of 5.x firmware.
+
+6.1:
+
+Upgraded to Linksys firmware V2.3R63.
+
+6.1 to 6.7:
+
+"Unslung" status (i.e. Unslung to disk, or running from internal
+flash) is now displayed on the home page in the Web GUI, as well as
+displayed at login.
+
+Using "ipkg" when running from internal flash now displays a helpful
+message indicating why ipkg won't run.
+
+The unsling script now contains a number of sanity checks, and prints
+(hopefully) helpful error messages if the system will be unlikely to
+unsling correctly.
+
+The unsling script now prompts for a new root password, and sets the
+password for both booting with as well as without drives attached. (A
+new argument "-nopw" can be given to unsling to have it skip prompting
+for and setting the root password.)
+
+The "Enable Telnet" web gui page can now be reached from the home page
+in the Linksys Web GUI.
+
+The new Unslung logo is now featured in the Web GUI.
+
+The special handling for unslinging to flash devices now works for
+both USB Port 1 and 2.
+
+The utmp and wtmp files are now created by unsling, and will be
+"emptied" at each boot. Additionally, the .pid files in /var/run and
+/var/log are cleaned out at boot; this avoids a number of strange and
+difficult-to-reproduce problems.
+
+The following additional kernel modules are provided: loop.o isofs.o
+keyspan.o netconsole.o
+
+Sundry bugfixes.
+
+6.8:
+
+First public release of 6.x firmware.
+
diff --git a/packages/nslu2-binary-only/unslung-rootfs/README b/packages/nslu2-binary-only/unslung-rootfs/README
index e8b27197ea..c750709e5f 100644
--- a/packages/nslu2-binary-only/unslung-rootfs/README
+++ b/packages/nslu2-binary-only/unslung-rootfs/README
@@ -1,4 +1,4 @@
-Unslung-5.x Family Release README INSTALLATION
+Unslung-6.x Family Release README INSTALLATION
You must follow the steps in this README *exactly*. Do not skip any steps, and
do not skip ahead thinking you know what you are doing and don't need to follow
@@ -80,54 +80,42 @@ PRE-INSTALLATION CONSIDERATIONS
FIRMWARE INSTALLATION DETAILS
1) Shutdown the NSLU2, and remove any disks that you may have plugged into the
- NSLU2. Power back up the NSLU2.
+ NSLU2.
- Firmware upgrades must always be performed with *no* hard disks or flash
disks attached. This CANNOT be emphasized enough. Are you sure you
unplugged the disks before powering up? If so, you may continue.
-2) Access the Web interface. Note that you should use the username "admin" and
- password "admin" for the web interface at this point (as no disks are
- attached, the default username and password is the only way to access the
- Management web pages).
-
- 2-a) If you are installing Unslung 5.x onto an NSLU2 unit with Linksys
- standard firmware *or* Unslung version 1.x or version 2.x already
- installed, flash unslung-5.x.bin as you normally would flash new
- firmware (using the web interface "Upgrade Firmware" page).
-
- 2-b) If you are installing Unslung 5.x onto an NSLU2 unit with Unslung
- version 3.x already installed, you must put the NSLU2 into
- maintenance mode before you can use the web interface to flash a new
- version. Just click the "Enter Maintenance Mode" link on the web
- interface "Upgrade Firmware" page, wait for the NSLU2 to reboot, and
- then flash the new firmware in the normal manner (using the web
- interface "Upgrade Firmware" page).
-
- 2-c) If you are installing Unslung 5.x onto an NSLU2 unit with Unslung
- version 4.x already installed, you must put the NSLU2 into RedBoot
- Upgrade Mode before you can upload new firmware. Note that Unslung
- version 4.x has an "Enter Maintenance Mode" link on the web interface
- "Upgrade Firmware" page, but it does not work, so you will need to
- use the instructions at
-
- http://www.nslu2-linux.org/wiki/HowTo/TelnetIntoRedBoot
-
- to access the RedBoot command line, and then type "upgrade" to put
- the NSLU2 into RedBoot Upgrade Mode. Then you will need to use the
- Linux UpSlug tool or the Windows SerComm Upgrade tool to upload the
- new firmware.
-
- 2-d) If you are installing Unslung 5.x onto an NSLU2 unit with version 5.x
- already installed, you must first put the NSLU2 into RedBoot Upgrade
- Mode. Just click the "Enter Upgrade Mode" link on the web interface
- "Upgrade Firmware" page, wait for the NSLU2 to reboot, and for the
- Ready/Status LED to begin flashing red and green, and then use either
- the Linux UpSlug tool or the Windows SerComm Upgrade tool to upload
- the new firmware.
+2-a) If you are installing Unslung 6.x onto an NSLU2 unit with Linksys standard
+ firmware already installed, flash unslung-6.x.bin as you normally would
+ flash new firmware (using the web interface "Upgrade Firmware" page).
+ See your NSLU2 user manual for details if you don't know how to do this.
- During firmware flashing, the top LED - Ready/Status - flashes red and
- green (approximately 5 minutes, but can be much longer).
+ green (approximately 5 minutes, but can be much longer).
+
+ - The NSLU2 will reboot after the flashing is complete.
+
+2-b) If you are installing Unslung 6.x onto an NSLU2 unit with an existing
+ version of nslu2-linux.org firmware already installed, you must first put
+ the NSLU2 into RedBoot Upgrade Mode.
+
+ - The NSLU2 should still be powered off at this point. If not, shut it
+ down again before proceeding.
+ - Using a paper clip, push and hold in the reset button which is located
+ on the back of the NSLU2 near the power socket.
+ - While holding in the reset button, press and release the power button.
+ - Watch the Ready/Status LED and as soon as it turns red, then quickly
+ release the reset button.
+ - You should now be in upgrade mode which is indicated by the Ready/Status
+ LED alternating between red and green.
+ - Use either the Linux UpSlug tool or the Windows SerComm Upgrade tool to
+ upload the new firmware - you can find download links at
+
+ http://www.nslu2-linux.org/wiki/HowTo/InstallUnslungFirmware
+
+ - During firmware flashing, the top LED - Ready/Status - flashes red and
+ green (approximately 5 minutes, but can be much longer).
- The NSLU2 will reboot after the flashing is complete.
@@ -209,9 +197,20 @@ you won't have access until you change the file /share/hdd/conf/passwd.
3) OK, now that you don't have any disks attached, you can proceed and telnet
into the NSLU2 using the username root and password uNSLUng.
-4) Identify which drive you wish you "unsling", and plug it in. Wait a minute
- or two while the disk is mounted. Check the web interface to make sure
- that the disk has been recognised by the Linksys software.
+ - If you are upgrading from a previous release of Unslung, please read
+
+ http://www.nslu2-linux.org/wiki/Unslung/UpgradingToUnslung6
+
+4) Identify which drive you wish you "unsling", and plug it in. Note that for
+ Unslung 6.x it is recommended that you plug the target disk into the Disk2
+ port so that you can use the Disk1 port for attaching multiple ext3 and/or
+ NTFS data disks via a USB hub. For more information, see
+
+ http://www.nslu2-linux.org/wiki/Unslung/WhichUSBPortforUnslung6
+
+ Wait a minute or two while the disk is mounted. Check the web
+ interface to make sure that the disk has been recognised by the
+ Linksys software.
- If the disk has not been previously formatted on the NSLU2, then now is
the time to do that. Make sure that the drive is recognized in the
@@ -219,7 +218,8 @@ you won't have access until you change the file /share/hdd/conf/passwd.
5) In the telnet session, run "/sbin/unsling disk1" or "/sbin/unsling disk2"
(depending upon whether you want to unsling to a disk connected to the
- Disk1 port or the Disk2 port).
+ Disk1 port or the Disk2 port). Again, we recommend for Unslung 6.x that
+ you unsling to disk2.
- Once you "unsling" to an external disk on a particular port (Disk 1 or
Disk 2), it is important that you keep that disk continually plugged
@@ -246,7 +246,7 @@ you won't have access until you change the file /share/hdd/conf/passwd.
6) If you wish to migrate your packages from the old Unslung 3.x location in
the /share/hdd/conf (disk1) or /share/flash/conf (disk2) partitions to the
- new Unslung 4.x and 5.x location on the data partition, then run:
+ new Unslung 4.x, 5.x and 6.x location on the data partition, then run:
"/sbin/slingover disk1" (if your packages were previously on disk1 and you
ran "/sbin/unsling disk1" in step 5) or "/sbin/slingover disk2" (if your
packages were previously on disk2 and you ran "/sbin/unsling disk2" in
@@ -271,7 +271,7 @@ you won't have access until you change the file /share/hdd/conf/passwd.
***** Congratulations, you're now Unslung! *****
-Make sure you add an entry to the "The Unslung 5.x" table in the Yahoo group.
+Make sure you add an entry to the "The Unslung 6.x" table in the Yahoo group.
Just use the next free integer for your Unslung number.
If you make no further changes, your NSLU2 will continue to operate normally.
diff --git a/packages/obexftp/files/.mtn2git_empty b/packages/obexftp/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obexftp/files/.mtn2git_empty
diff --git a/packages/obexftp/obexftp-0.10.3/m4.patch b/packages/obexftp/files/m4.patch
index 07c5eedcd7..07c5eedcd7 100644
--- a/packages/obexftp/obexftp-0.10.3/m4.patch
+++ b/packages/obexftp/files/m4.patch
diff --git a/packages/obexftp/obexftp_0.10.3.bb b/packages/obexftp/obexftp_0.10.3.bb
deleted file mode 100644
index c4285c5c9c..0000000000
--- a/packages/obexftp/obexftp_0.10.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "OBEX Ftp Client"
-SECTION = "console/network"
-LICENSE = "GPL"
-PRIORITY = "optional"
-DEPENDS = "openobex libgsm"
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/obexftp-${PV}.tar.gz \
- file://m4.patch;patch=1"
-
-inherit autotools
-
-#EXTRA_OEMAKE = "'SUBDIRS=bfb cobexbfb cobexpe obexftp apps vmo doc'"
-EXTRA_OEMAKE = "'SUBDIRS=bfb cobexbfb cobexpe obexftp apps vmo'"
diff --git a/packages/obexftp/obexftp_0.19.bb b/packages/obexftp/obexftp_0.19.bb
new file mode 100644
index 0000000000..e5479c14de
--- /dev/null
+++ b/packages/obexftp/obexftp_0.19.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "OBEX Ftp Client based on openobex."
+SECTION = "console/network"
+HOMEPAGE = "http://openobex.triq.net"
+LICENSE = "GPL"
+DEPENDS = "openobex libgsm"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/obexftp-${PV}.tar.gz \
+ file://m4.patch;patch=1"
+
+inherit autotools
+
+EXTRA_OECONF = " --enable-bluetooth --disable-swig --disable-perl --disable-python --disable-tcl --disable-builddocs"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/openobex-apps/openobex-apps-1.0.0/gcc34.patch b/packages/openobex-apps/openobex-apps-1.0.0/gcc34.patch
deleted file mode 100644
index 6dac1725b6..0000000000
--- a/packages/openobex-apps/openobex-apps-1.0.0/gcc34.patch
+++ /dev/null
@@ -1,260 +0,0 @@
-diff -Naur openobex-apps-1.0.0-clean/src/obex_put_common.c openobex-apps-1.0.0/src/obex_put_common.c
---- openobex-apps-1.0.0-clean/src/obex_put_common.c 2002-12-01 18:34:41.000000000 +0100
-+++ openobex-apps-1.0.0/src/obex_put_common.c 2004-05-12 12:57:37.000000000 +0200
-@@ -82,7 +82,7 @@
- break;
-
- default:
-- printf(__FUNCTION__ "() Skipped header %02x\n", hi);
-+ printf("%s() Skipped header %02x\n", __func__, hi);
- }
- }
- if(!body) {
-@@ -123,7 +123,7 @@
- OBEX_ObjectSetRsp(object, OBEX_RSP_SUCCESS, OBEX_RSP_SUCCESS);
- break;
- default:
-- printf(__FUNCTION__ "() Denied %02x request\n", cmd);
-+ printf("%s() Denied %02x request\n", __func__, cmd);
- OBEX_ObjectSetRsp(object, OBEX_RSP_NOT_IMPLEMENTED, OBEX_RSP_NOT_IMPLEMENTED);
- break;
- }
-diff -Naur openobex-apps-1.0.0-clean/src/obex_test_cable.h openobex-apps-1.0.0/src/obex_test_cable.h
---- openobex-apps-1.0.0-clean/src/obex_test_cable.h 2002-12-01 18:34:41.000000000 +0100
-+++ openobex-apps-1.0.0/src/obex_test_cable.h 2004-05-12 13:23:11.000000000 +0200
-@@ -1,16 +1,16 @@
- /*********************************************************************
-- *
-+ *
- * Filename: obex_test_cable.h
-- * Version:
-- * Description:
-+ * Version:
-+ * Description:
- * Status: Experimental.
- * Author: Pontus Fuchs <pontus.fuchs@tactel.se>
- * Created at: Wed Nov 17 22:05:16 1999
- * Modified at: Sun Aug 13 10:55:20 PM CEST 2000
- * Modified by: Pontus Fuchs <pontus.fuchs@tactel.se>
-- *
-+ *
- * Copyright (c) 1999, 2000 Pontus Fuchs, All Rights Reserved.
-- *
-+ *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
-@@ -23,9 +23,9 @@
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
-- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
-- *
-+ *
- ********************************************************************/
-
- #ifndef OBEX_TEST_CABLE_H
-@@ -38,7 +38,7 @@
- #include <openobex/obex.h>
-
- #ifdef CABLE_DEBUG
--#define CDEBUG(args...) printf(__FUNCTION__ "() " args)
-+#define CDEBUG(args...) printf("%s() ", __func__, args)
- #else
- #define CDEBUG(args...)
- #endif
-diff -Naur openobex-apps-1.0.0-clean/src/obex_test_cable.h~ openobex-apps-1.0.0/src/obex_test_cable.h~
---- openobex-apps-1.0.0-clean/src/obex_test_cable.h~ 1970-01-01 01:00:00.000000000 +0100
-+++ openobex-apps-1.0.0/src/obex_test_cable.h~ 2004-05-12 13:22:48.000000000 +0200
-@@ -0,0 +1,66 @@
-+/*********************************************************************
-+ *
-+ * Filename: obex_test_cable.h
-+ * Version:
-+ * Description:
-+ * Status: Experimental.
-+ * Author: Pontus Fuchs <pontus.fuchs@tactel.se>
-+ * Created at: Wed Nov 17 22:05:16 1999
-+ * Modified at: Sun Aug 13 10:55:20 PM CEST 2000
-+ * Modified by: Pontus Fuchs <pontus.fuchs@tactel.se>
-+ *
-+ * Copyright (c) 1999, 2000 Pontus Fuchs, All Rights Reserved.
-+ *
-+ * This library is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this library; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ *
-+ ********************************************************************/
-+
-+#ifndef OBEX_TEST_CABLE_H
-+#define OBEX_TEST_CABLE_H
-+
-+#define CABLE_DEBUG 1
-+
-+
-+#include <termios.h>
-+#include <openobex/obex.h>
-+
-+#ifdef CABLE_DEBUG
-+#define CDEBUG(args...) printf("%s() " __func__, args)
-+#else
-+#define CDEBUG(args...)
-+#endif
-+
-+struct cobex_context
-+{
-+ const char *portname;
-+ int ttyfd;
-+ char inputbuf[500];
-+ struct termios oldtio, newtio;
-+ int r320;
-+};
-+
-+/* User function */
-+struct cobex_context *cobex_open(const char *port, int r320);
-+void cobex_close(struct cobex_context *gt);
-+int cobex_do_at_cmd(struct cobex_context *gt, char *cmd, char *rspbuf, int rspbuflen, int timeout);
-+
-+/* Callbacks */
-+int cobex_handle_input(obex_t *handle, void * userdata, int timeout);
-+int cobex_write(obex_t *self, void * userdata, uint8_t *buffer, int length);
-+int cobex_connect(obex_t *handle, void * userdata);
-+int cobex_disconnect(obex_t *handle, void * userdata);
-+
-+#endif
-diff -Naur openobex-apps-1.0.0-clean/src/obex_test_client.c openobex-apps-1.0.0/src/obex_test_client.c
---- openobex-apps-1.0.0-clean/src/obex_test_client.c 2002-12-01 18:34:41.000000000 +0100
-+++ openobex-apps-1.0.0/src/obex_test_client.c 2004-05-12 13:07:24.000000000 +0200
-@@ -370,13 +370,13 @@
-
- while(OBEX_ObjectGetNextHeader(handle, object, &hi, &hv, &hlen)) {
- if(hi == OBEX_HDR_BODY) {
-- printf(__FUNCTION__ "() Found body\n");
-+ printf("%s() Found body\n", __func__);
- body = hv.bs;
- body_len = hlen;
- break;
- }
- else {
-- printf(__FUNCTION__ "() Skipped header %02x\n", hi);
-+ printf("%s() Skipped header %02x\n", __func__, hi);
- }
- }
-
-diff -Naur openobex-apps-1.0.0-clean/src/obex_test_server.c openobex-apps-1.0.0/src/obex_test_server.c
---- openobex-apps-1.0.0-clean/src/obex_test_server.c 2002-12-01 18:34:41.000000000 +0100
-+++ openobex-apps-1.0.0/src/obex_test_server.c 2004-05-12 13:07:33.000000000 +0200
-@@ -54,17 +54,17 @@
- char *name = NULL;
- char *namebuf = NULL;
-
-- printf(__FUNCTION__ "()\n");
-+ printf("%s()\n", __func__);
-
- while(OBEX_ObjectGetNextHeader(handle, object, &hi, &hv, &hlen)) {
- switch(hi) {
- case OBEX_HDR_BODY:
-- printf(__FUNCTION__ "() Found body\n");
-+ printf("%s() Found body\n", __func__);
- body = hv.bs;
- body_len = hlen;
- break;
- case OBEX_HDR_NAME:
-- printf(__FUNCTION__ "() Found name\n");
-+ printf("%s() Found name\n", __func__);
- if( (namebuf = malloc(hlen / 2))) {
- OBEX_UnicodeToChar(namebuf, hv.bs, hlen);
- name = namebuf;
-@@ -72,7 +72,7 @@
- break;
-
- default:
-- printf(__FUNCTION__ "() Skipped header %02x\n", hi);
-+ printf("%s() Skipped header %02x\n", __func__, hi);
- }
- }
- if(!body) {
-@@ -103,12 +103,12 @@
- char *name = NULL;
- char *namebuf = NULL;
-
-- printf(__FUNCTION__ "()\n");
-+ printf("%s()\n", __func__);
-
- while(OBEX_ObjectGetNextHeader(handle, object, &hi, &hv, &hlen)) {
- switch(hi) {
- case OBEX_HDR_NAME:
-- printf(__FUNCTION__ "() Found name\n");
-+ printf("%s() Found name\n", __func__);
- if( (namebuf = malloc(hlen / 2))) {
- OBEX_UnicodeToChar(namebuf, hv.bs, hlen);
- name = namebuf;
-@@ -116,16 +116,16 @@
- break;
-
- default:
-- printf(__FUNCTION__ "() Skipped header %02x\n", hi);
-+ printf("%s() Skipped header %02x\n", __func__, hi);
- }
- }
-
- if(!name) {
-- printf(__FUNCTION__ "() Got a GET without a name-header!\n");
-+ printf("%s() Got a GET without a name-header!\n", __func__);
- OBEX_ObjectSetRsp(object, OBEX_RSP_NOT_FOUND, OBEX_RSP_NOT_FOUND);
- return;
- }
-- printf(__FUNCTION__ "() Got a request for %s\n", name);
-+ printf("%s() Got a request for %s\n", __func__, name);
-
- buf = easy_readfile(name, &file_size);
- if(buf == NULL) {
-@@ -154,7 +154,7 @@
-
- const uint8_t *who = NULL;
- int who_len = 0;
-- printf(__FUNCTION__ "()\n");
-+ printf("%s()\n", __func__);
-
- while(OBEX_ObjectGetNextHeader(handle, object, &hi, &hv, &hlen)) {
- if(hi == OBEX_HDR_WHO) {
-@@ -162,7 +162,7 @@
- who_len = hlen;
- }
- else {
-- printf(__FUNCTION__ "() Skipped header %02x\n", hi);
-+ printf("%s() Skipped header %02x\n", __func__, hi);
- }
- }
- if (who_len == 6) {
-@@ -199,7 +199,7 @@
- OBEX_ObjectSetRsp(object, OBEX_RSP_CONTINUE, OBEX_RSP_SUCCESS);
- break;
- default:
-- printf(__FUNCTION__ "() Denied %02x request\n", cmd);
-+ printf("%s() Denied %02x request\n", __func__, cmd);
- OBEX_ObjectSetRsp(object, OBEX_RSP_NOT_IMPLEMENTED, OBEX_RSP_NOT_IMPLEMENTED);
- break;
- }
-@@ -224,7 +224,7 @@
- break;
-
- default:
-- printf(__FUNCTION__ "() Command (%02x) has now finished\n", obex_cmd);
-+ printf("%s() Command (%02x) has now finished\n", __func__, obex_cmd);
- break;
- }
- }
diff --git a/packages/openobex-apps/openobex-apps-1.0.0/m4.patch b/packages/openobex-apps/openobex-apps-1.0.0/m4.patch
deleted file mode 100644
index 249074bf60..0000000000
--- a/packages/openobex-apps/openobex-apps-1.0.0/m4.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
---- /dev/null 2003-09-23 18:19:32.000000000 -0400
-+++ openobex-apps-1.0.0/m4/openobex.m4 2004-01-26 18:48:04.000000000 -0500
-@@ -0,0 +1,56 @@
-+dnl Check for openobex library
-+dnl Written by Pontus Fuchs 2000-08-18
-+dnl Version checking fixed by Christian W. Zuckschwerdt 2002-10-17
-+
-+AC_DEFUN([AM_PATH_OPENOBEX], [
-+ AC_PATH_PROG(OPENOBEX_CONFIG, openobex-config, no)
-+
-+ if test "$OPENOBEX_CONFIG" = "no" ; then
-+ AC_MSG_ERROR(openobex-config not found. Pehaps openobex is not installed.)
-+ fi
-+
-+ min_obex_version=ifelse([$1], ,0.9.6,$1)
-+ AC_MSG_CHECKING(for openobex - version >= $min_obex_version)
-+
-+ OPENOBEX_CFLAGS=`$OPENOBEX_CONFIG --cflags`
-+ OPENOBEX_LIBS=`$OPENOBEX_CONFIG --libs`
-+
-+ obex_config_version=`$OPENOBEX_CONFIG --version`
-+
-+ obex_config_major_version=`$OPENOBEX_CONFIG --version | \
-+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-+ obex_config_minor_version=`$OPENOBEX_CONFIG --version | \
-+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-+ obex_config_micro_version=`$OPENOBEX_CONFIG --version | \
-+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-+
-+ obex_req_major_version=`echo $min_obex_version | \
-+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-+ obex_req_minor_version=`echo $min_obex_version | \
-+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-+ obex_req_micro_version=`echo $min_obex_version | \
-+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-+
-+
-+ if test $obex_req_major_version -lt $obex_config_major_version ; then
-+ obex_config_version_ok="yes"
-+ fi
-+ if test $obex_req_major_version -eq $obex_config_major_version ; then
-+ if test $obex_req_minor_version -lt $obex_config_minor_version ; then
-+ obex_config_version_ok="yes"
-+ fi
-+ if test $obex_req_minor_version -eq $obex_config_minor_version ; then
-+ if test $obex_req_micro_version -le $obex_config_micro_version ; then
-+ obex_config_version_ok="yes"
-+ fi
-+ fi
-+ fi
-+
-+ if test "$obex_config_version_ok" != "yes" ; then
-+ AC_MSG_ERROR(Installed openobex library too old ($obex_config_version))
-+ fi
-+
-+ AC_SUBST(OPENOBEX_CFLAGS)
-+ AC_SUBST(OPENOBEX_LIBS)
-+ AC_MSG_RESULT(yes)
-+])
diff --git a/packages/openobex-apps/openobex-apps_1.0.0.bb b/packages/openobex-apps/openobex-apps_1.0.0.bb
deleted file mode 100644
index 5fee78ce9b..0000000000
--- a/packages/openobex-apps/openobex-apps_1.0.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-LICENSE = "GPL"
-DESCRIPTION = "Applications for OpenOBEX"
-SECTION = "console/network"
-PRIORITY = "optional"
-DEPENDS = "openobex"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/openobex-apps-${PV}.tar.gz \
- file://m4.patch;patch=1 \
- file://gcc34.patch;patch=1"
-
-inherit autotools
-
-EXTRA_OECONF = "--disable-glibtest --with-glib-prefix=${STAGING_LIBDIR}/.."
-EXTRA_OEMAKE = "'INCLUDES='"
diff --git a/packages/openobex/files/.mtn2git_empty b/packages/openobex/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openobex/files/.mtn2git_empty
diff --git a/packages/openobex/files/disable-cable-test.patch b/packages/openobex/files/disable-cable-test.patch
new file mode 100644
index 0000000000..95b636dd8f
--- /dev/null
+++ b/packages/openobex/files/disable-cable-test.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- openobex-1.2/apps/Makefile.am~disable-cable-test
++++ openobex-1.2/apps/Makefile.am
+@@ -6,7 +6,7 @@
+ obex_io.c obex_io.h \
+ obex_put_common.c obex_put_common.h
+
+-bin_PROGRAMS = irxfer obex_tcp irobex_palm3 obex_test
++bin_PROGRAMS = irxfer obex_tcp irobex_palm3
+
+ obex_test_SOURCES = \
+ obex_test.c obex_test.h \
diff --git a/packages/openobex/openobex-1.0.1/syms.patch b/packages/openobex/openobex-1.0.1/syms.patch
deleted file mode 100644
index 46eea177cf..0000000000
--- a/packages/openobex/openobex-1.0.1/syms.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Index: obex.sym
-===================================================================
-RCS file: /cvsroot/openobex/openobex/lib/src/obex.sym,v
-retrieving revision 1.7
-retrieving revision 1.8
-diff -u -r1.7 -r1.8
---- openobex/src/obex.sym 15 Nov 2002 09:14:11 -0000 1.7
-+++ openobex/src/obex.sym 30 Jan 2004 19:25:45 -0000 1.8
-@@ -1,27 +1,31 @@
- OBEX_Init
- OBEX_Cleanup
-+OBEX_SetUserData
-+OBEX_GetUserData
-+OBEX_SetUserCallBack
-+OBEX_SetTransportMTU
-+OBEX_GetFD
- OBEX_RegisterCTransport
- OBEX_SetCustomData
- OBEX_GetCustomData
- OBEX_TransportConnect
- OBEX_TransportDisconnect
- OBEX_CustomDataFeed
--OBEX_GetFD
- OBEX_HandleInput
- OBEX_ServerRegister
-+OBEX_ServerAccept
- OBEX_Request
- OBEX_CancelRequest
--OBEX_SetUserData
--OBEX_GetUserData
- OBEX_ObjectNew
- OBEX_ObjectDelete
- OBEX_ObjectAddHeader
- OBEX_ObjectGetNextHeader
--OBEX_ObjectReadStream
-+OBEX_ObjectReParseHeaders
- OBEX_ObjectSetRsp
- OBEX_ObjectGetNonHdrData
- OBEX_ObjectSetNonHdrData
- OBEX_ObjectSetHdrOffset
-+OBEX_ObjectReadStream
- OBEX_UnicodeToChar
- OBEX_CharToUnicode
- OBEX_ResponseToString
diff --git a/packages/openobex/openobex_1.0.1.bb b/packages/openobex/openobex_1.0.1.bb
deleted file mode 100644
index 221ea71d61..0000000000
--- a/packages/openobex/openobex_1.0.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-LICENSE = "GPL"
-DESCRIPTION = "The Openobex project aims to make an \
-open source implementation of the Object Exchange \
-(OBEX) protocol."
-SECTION = "libs"
-PR = "r4"
-
-# put openobex-config into -dev package
-FILES_${PN} = "${libdir}/lib*.so.*"
-FILES_${PN}-dev += "${bindir}"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/openobex-${PV}.tar.gz \
- file://syms.patch;patch=1"
-
-inherit autotools binconfig
-
-do_stage () {
- oe_libinstall -so -C src libopenobex ${STAGING_LIBDIR}
- ln -sf libopenobex.so ${STAGING_LIBDIR}/libopenobex-1.0.so
- install -d ${STAGING_INCDIR}/openobex
- install -m 0644 src/obex_const.h src/obex.h ${STAGING_INCDIR}/openobex/
- install -d ${STAGING_DIR}/aclocal
- install -m 0644 m4macros/openobex.m4 ${STAGING_DATADIR}/aclocal/
-}
diff --git a/packages/openobex/openobex_1.2.bb b/packages/openobex/openobex_1.2.bb
new file mode 100644
index 0000000000..421b342476
--- /dev/null
+++ b/packages/openobex/openobex_1.2.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "The Openobex project aims to make an \
+open source implementation of the Object Exchange \
+(OBEX) protocol."
+HOMEPAGE = "http://openobex.triq.net"
+SECTION = "libs"
+PROVIDES = "openobex-apps"
+LICENSE = "GPL"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/openobex-${PV}.tar.gz \
+ file://disable-cable-test.patch;patch=1"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_OECONF = "--enable-apps --enable-syslog --enable-dump \
+ --with-usb=${STAGING_DIR} --with-bluez=${STAGING_DIR}"
+
+do_stage() {
+ oe_libinstall -so -C lib libopenobex ${STAGING_LIBDIR}
+ ln -sf libopenobex.so ${STAGING_LIBDIR}/libopenobex-1.2.so
+ install -d ${STAGING_INCDIR}/openobex
+ install -m 0644 include/*.h ${STAGING_INCDIR}/openobex/
+ install -d ${STAGING_DIR}/aclocal
+ install -m 0644 openobex.m4 ${STAGING_DATADIR}/aclocal/
+}
+
+# how to stop shlibrename from renaming -apps?
+PACKAGES = "${PN} ${PN}-dev openobex-apps"
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/openobex-config"
+FILES_${PN}-apps = "${bindir}"
diff --git a/packages/openssh/openssh_4.0p1.bb b/packages/openssh/openssh_4.0p1.bb
index e41b8f655c..bcfe2f370f 100644
--- a/packages/openssh/openssh_4.0p1.bb
+++ b/packages/openssh/openssh_4.0p1.bb
@@ -1,4 +1,10 @@
DEPENDS = "zlib openssl"
+
+RREPLACES_openssh = "dropbear"
+RCONFLICTS_openssh = "dropbear"
+RREPLACES_openssh-sshd = "dropbear"
+RCONFLICTS_openssh-sshd = "dropbear"
+
SECTION = "console/network"
DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
Ssh (Secure Shell) is a program for logging into a remote machine \
@@ -11,7 +17,7 @@ used to provide applications with a secure communication channel."
HOMEPAGE = "http://www.openssh.org/"
LICENSE = "BSD"
MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>"
-PR = "r6"
+PR = "r7"
SRC_URI = "ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
file://configure.patch;patch=1 \
diff --git a/packages/openssl/openssl-0.9.7b/armeb.patch b/packages/openssl/openssl-0.9.7b/armeb.patch
deleted file mode 100644
index dc1d866bee..0000000000
--- a/packages/openssl/openssl-0.9.7b/armeb.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: openssl-0.9.7b/Configure
-===================================================================
---- openssl-0.9.7b.orig/Configure 2005-02-03 13:02:06.876524776 -0500
-+++ openssl-0.9.7b/Configure 2005-02-03 13:03:12.869492320 -0500
-@@ -415,6 +415,7 @@
-
- # Linux on ARM
- "linux-elf-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-elf-armeb","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-
- # SCO/Caldera targets.
- #
diff --git a/packages/openssl/openssl-0.9.7b/debian.patch b/packages/openssl/openssl-0.9.7b/debian.patch
deleted file mode 100644
index 176789a2b9..0000000000
--- a/packages/openssl/openssl-0.9.7b/debian.patch
+++ /dev/null
@@ -1,682 +0,0 @@
---- openssl-0.9.7b.orig/apps/der_chop
-+++ openssl-0.9.7b/apps/der_chop
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
- #
- # der_chop ... this is one total hack that Eric is really not proud of
- # so don't look at it and don't ask for support
---- openssl-0.9.7b.orig/apps/Makefile.ssl
-+++ openssl-0.9.7b/apps/Makefile.ssl
-@@ -3,7 +3,7 @@
- #
-
- DIR= apps
--TOP= ..
-+TOP= $(shell pwd)/..
- CC= cc
- INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
- CFLAG= -g -static
-@@ -30,9 +30,14 @@
-
- GENERAL=Makefile makeapps.com install.com
-
-+TOP=$(shell pwd)/..
-+#DLIBCRYPTO=../crypto/.libs/libcrypto.a
- DLIBCRYPTO=../libcrypto.a
-+#DLIBSSL=../ssl/.libs/libssl.a
- DLIBSSL=../libssl.a
-+#LIBCRYPTO=-L$(TOP)/crypto/.libs -lcrypto
- LIBCRYPTO=-L.. -lcrypto
-+#LIBSSL=-L$(TOP)/ssl/.libs -lssl
- LIBSSL=-L.. -lssl
-
- PROGRAM= openssl
-@@ -136,6 +141,8 @@
- clean:
- rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
- rm -f req
-+ rm -f *.lo
-+ rm -fr .libs
-
- $(DLIBSSL):
- (cd ..; $(MAKE) DIRS=ssl all)
---- openssl-0.9.7b.orig/apps/progs.h
-+++ openssl-0.9.7b/apps/progs.h
-@@ -35,9 +35,7 @@
- extern int spkac_main(int argc,char *argv[]);
- extern int smime_main(int argc,char *argv[]);
- extern int rand_main(int argc,char *argv[]);
--#ifndef OPENSSL_NO_ENGINE
- extern int engine_main(int argc,char *argv[]);
--#endif
- extern int ocsp_main(int argc,char *argv[]);
-
- #define FUNC_TYPE_GENERAL 1
-@@ -94,9 +92,7 @@
- #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
- {FUNC_TYPE_GENERAL,"s_client",s_client_main},
- #endif
--#ifndef OPENSSL_NO_SPEED
- {FUNC_TYPE_GENERAL,"speed",speed_main},
--#endif
- #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
- {FUNC_TYPE_GENERAL,"s_time",s_time_main},
- #endif
-@@ -115,9 +111,7 @@
- {FUNC_TYPE_GENERAL,"spkac",spkac_main},
- {FUNC_TYPE_GENERAL,"smime",smime_main},
- {FUNC_TYPE_GENERAL,"rand",rand_main},
--#ifndef OPENSSL_NO_ENGINE
- {FUNC_TYPE_GENERAL,"engine",engine_main},
--#endif
- {FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
- #ifndef OPENSSL_NO_MD2
- {FUNC_TYPE_MD,"md2",dgst_main},
---- openssl-0.9.7b.orig/Configure
-+++ openssl-0.9.7b/Configure
-@@ -1,4 +1,4 @@
--:
-+#!/usr/bin/perl
- eval 'exec perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
- ##
-@@ -1257,7 +1290,8 @@
- elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
- {
- my $sotmp = $1;
-- s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
-+# s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
-+ s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
- }
- elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
- {
---- openssl-0.9.7b.orig/crypto/asn1/charmap.pl
-+++ openssl-0.9.7b/crypto/asn1/charmap.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/bin/perl
-
- use strict;
-
---- openssl-0.9.7b.orig/crypto/Makefile.ssl
-+++ openssl-0.9.7b/crypto/Makefile.ssl
-@@ -34,6 +34,7 @@
-
- GENERAL=Makefile README crypto-lib.com install.com
-
-+#LIB= libcrypto.la
- LIB= $(TOP)/libcrypto.a
- SHARED_LIB= libcrypto$(SHLIB_EXT)
- LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c
-@@ -69,8 +70,9 @@
- @for i in $(SDIRS) ;\
- do \
- (cd $$i && echo "making all in crypto/$$i..." && \
-- $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; \
-+ $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='true' all ) || exit 1; \
- done;
-+# $(AR) $(LIB) *.lo */*.lo
-
- files:
- $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
-@@ -145,7 +147,9 @@
- done;
-
- clean:
-- rm -f buildinf.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
-+ rm -f buildinf.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff date.h
-+ $(RM) -f *.lo */*.lo *.la
-+ $(RM) -rf .libs
- @for i in $(SDIRS) ;\
- do \
- (cd $$i && echo "making clean in crypto/$$i..." && \
---- openssl-0.9.7b.orig/crypto/md5/asm/md5-sparcv9.S
-+++ openssl-0.9.7b/crypto/md5/asm/md5-sparcv9.S
-@@ -72,14 +72,14 @@
- #define Dval R8
-
- #if defined(MD5_BLOCK_DATA_ORDER)
--# if defined(OPENSSL_SYSNAME_ULTRASPARC)
-+/*# if defined(OPENSSL_SYSNAME_ULTRASPARC)*/
- # define LOAD lda
- # define X(i) [%i1+i*4]%asi
- # define md5_block md5_block_asm_data_order_aligned
- # define ASI_PRIMARY_LITTLE 0x88
--# else
-+/*# else
- # error "MD5_BLOCK_DATA_ORDER is supported only on UltraSPARC!"
--# endif
-+# endif*/
- #else
- # define LOAD ld
- # define X(i) [%i1+i*4]
---- openssl-0.9.7b.orig/crypto/opensslconf.h
-+++ openssl-0.9.7b/crypto/opensslconf.h
-@@ -4,17 +4,38 @@
- /* OpenSSL was configured with the following options: */
- #ifndef OPENSSL_DOING_MAKEDEPEND
-
-+#ifndef OPENSSL_NO_IDEA
-+# define OPENSSL_NO_IDEA
-+#endif
-+#ifndef OPENSSL_NO_MDC2
-+# define OPENSSL_NO_MDC2
-+#endif
-+#ifndef OPENSSL_NO_RC5
-+# define OPENSSL_NO_RC5
-+#endif
- #ifndef OPENSSL_NO_KRB5
- # define OPENSSL_NO_KRB5
- #endif
-
- #endif /* OPENSSL_DOING_MAKEDEPEND */
-+#ifndef OPENSSL_THREADS
-+# define OPENSSL_THREADS
-+#endif
-
- /* The OPENSSL_NO_* macros are also defined as NO_* if the application
- asks for it. This is a transient feature that is provided for those
- who haven't had the time to do the appropriate changes in their
- applications. */
- #ifdef OPENSSL_ALGORITHM_DEFINES
-+# if defined(OPENSSL_NO_IDEA) && !defined(NO_IDEA)
-+# define NO_IDEA
-+# endif
-+# if defined(OPENSSL_NO_MDC2) && !defined(NO_MDC2)
-+# define NO_MDC2
-+# endif
-+# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
-+# define NO_RC5
-+# endif
- # if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
- # define NO_KRB5
- # endif
-@@ -27,7 +48,7 @@
-
- #if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
- #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
--#define OPENSSLDIR "/usr/local/ssl"
-+#define OPENSSLDIR "/usr/lib/ssl"
- #endif
- #endif
-
-@@ -79,7 +100,7 @@
-
- #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
- #define CONFIG_HEADER_BN_H
--#undef BN_LLONG
-+#define BN_LLONG
-
- /* Should we define BN_DIV2W here? */
-
-@@ -98,7 +119,7 @@
- #define CONFIG_HEADER_RC4_LOCL_H
- /* if this is defined data[i] is used instead of *data, this is a %20
- * speedup on x86 */
--#undef RC4_INDEX
-+#define RC4_INDEX
- #endif
-
- #if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
-@@ -112,14 +133,14 @@
- /* the following is tweaked from a config script, that is why it is a
- * protected undef/define */
- #ifndef DES_PTR
--#undef DES_PTR
-+#define DES_PTR
- #endif
-
- /* This helps C compiler generate the correct code for multiple functional
- * units. It reduces register dependancies at the expense of 2 more
- * registers */
- #ifndef DES_RISC1
--#undef DES_RISC1
-+#define DES_RISC1
- #endif
-
- #ifndef DES_RISC2
-@@ -133,7 +154,7 @@
- /* Unroll the inner loop, this sometimes helps, sometimes hinders.
- * Very mucy CPU dependant */
- #ifndef DES_UNROLL
--#undef DES_UNROLL
-+#define DES_UNROLL
- #endif
-
- /* These default values were supplied by
---- openssl-0.9.7b.orig/demos/tunala/configure.in
-+++ openssl-0.9.7b/demos/tunala/configure.in
-@@ -1,4 +1,4 @@
--dnl Process this file with autoconf to produce a configure script.
-+#!/usr/local/bin/perl
- AC_INIT(tunala.c)
- AM_CONFIG_HEADER(config.h)
- AM_INIT_AUTOMAKE(tunala, 0.0.1-dev)
---- openssl-0.9.7b.orig/doc/crypto/RAND_add.pod
-+++ openssl-0.9.7b/doc/crypto/RAND_add.pod
-@@ -2,8 +2,7 @@
-
- =head1 NAME
-
--RAND_add, RAND_seed, RAND_status, RAND_event, RAND_screen - add
--entropy to the PRNG
-+RAND_add, RAND_seed, RAND_status, RAND_event, RAND_screen - add entropy to the PRNG
-
- =head1 SYNOPSIS
-
---- openssl-0.9.7b.orig/doc/Makefile.ssl
-+++ openssl-0.9.7b/doc/Makefile.ssl
-@@ -0,0 +1,40 @@
-+VERSION =
-+
-+#PODS = $(wildcard *.pod)
-+#MANS = $(addsuffix .man, $(basename $(PODS)))
-+
-+MANS = openssl.1 ssl.3 crypto.3
-+
-+P2M = pod2man --center='OpenSSL Documentation' --release="OpenSSL $(VERSION)"
-+
-+all: manpages
-+
-+.PHONY: manpages
-+
-+manpages: openssl.1 crypto.3 ssl.3
-+
-+openssl.1:
-+ $(P2M) --section=1 openssl.pod > openssl.1
-+
-+crypto.3:
-+ $(P2M) --section=3 crypto.pod > crypto.3
-+
-+ssl.3:
-+ $(P2M) --section=3 ssl.pod > ssl.3
-+
-+.PHONY: install
-+install:
-+ mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man1
-+ mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
-+ install -m 644 -p openssl.1 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man1
-+ install -m 644 -p crypto.3 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
-+ install -m 644 -p ssl.3 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
-+ rm -f $(MANS)
-+
-+.PHONY: clean
-+clean:
-+ rm -f $(MANS)
-+
-+.PHONY: realclean
-+realclean:
-+ -$(MAKE) clean
---- openssl-0.9.7b.orig/Makefile.org
-+++ openssl-0.9.7b/Makefile.org
-@@ -57,6 +57,7 @@
- # equal 4.
- # PKCS1_CHECK - pkcs1 tests.
-
-+#TOP=$(shell pwd)
- CC= gcc
- #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
- CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
-@@ -173,7 +174,7 @@
- # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
- SHLIB_MARK=
-
--DIRS= crypto ssl $(SHLIB_MARK) apps test tools
-+DIRS= crypto ssl $(SHLIB_MARK) apps doc tools
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
-@@ -191,7 +192,8 @@
- MAKEFILE= Makefile.ssl
- MAKE= make -f Makefile.ssl
-
--MANDIR=$(OPENSSLDIR)/man
-+MANDIR=/usr/share/man
-+MANSUF=ssl
- MAN1=1
- MAN3=3
- SHELL=/bin/sh
-@@ -792,7 +794,7 @@
- do \
- if [ -f "$$i" ]; then \
- ( echo installing $$i; \
-- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+ cp -d $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
-@@ -847,33 +849,35 @@
- for i in doc/apps/*.pod; do \
- fn=`basename $$i .pod`; \
- if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
-- echo "installing man$$sec/$$fn.$$sec"; \
-+ secsuf=`echo -n $$sec; echo $(MANSUF)`; \
-+ echo "installing man$$sec/$$fn.$$secsuf"; \
- (cd `$(PERL) util/dirname.pl $$i`; \
- sh -c "$$pod2man \
-- --section=$$sec --center=OpenSSL \
-+ --section=$$secsuf --center=OpenSSL \
- --release=$(VERSION) `basename $$i`") \
-- > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
-+ > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$secsuf; \
- $(PERL) util/extract-names.pl < $$i | \
- grep -v $$filecase "^$$fn\$$" | \
- (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
- while read n; do \
-- $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
-+ $$here/util/point.sh $$fn.$$secsuf $$n.$$secsuf; \
- done); \
- done; \
- for i in doc/crypto/*.pod doc/ssl/*.pod; do \
- fn=`basename $$i .pod`; \
- if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
-- echo "installing man$$sec/$$fn.$$sec"; \
-+ secsuf=`echo -n $$sec; echo $(MANSUF)`; \
-+ echo "installing man$$sec/$$fn.$$secsuf"; \
- (cd `$(PERL) util/dirname.pl $$i`; \
- sh -c "$$pod2man \
-- --section=$$sec --center=OpenSSL \
-+ --section=$$secsuf --center=OpenSSL \
- --release=$(VERSION) `basename $$i`") \
-- > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
-+ > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$secsuf; \
- $(PERL) util/extract-names.pl < $$i | \
- grep -v $$filecase "^$$fn\$$" | \
- (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
- while read n; do \
-- $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
-+ $$here/util/point.sh $$fn.$$secsuf $$n.$$secsuf; \
- done); \
- done
-
---- openssl-0.9.7b.orig/Makefile.ssl
-+++ openssl-0.9.7b/Makefile.ssl
-@@ -11,11 +11,11 @@
- SHLIB_VERSION_HISTORY=
- SHLIB_MAJOR=0
- SHLIB_MINOR=9.7
--SHLIB_EXT=
--PLATFORM=dist
--OPTIONS= no-krb5
--CONFIGURE_ARGS=dist
--SHLIB_TARGET=
-+SHLIB_EXT=.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-+PLATFORM=debian-i386
-+OPTIONS=--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 no-krb5
-+CONFIGURE_ARGS=--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 debian-i386
-+SHLIB_TARGET=linux-shared
-
- # HERE indicates where this Makefile lives. This can be used to indicate
- # where sub-Makefiles are expected to be. Currently has very limited usage,
-@@ -26,10 +26,10 @@
- # for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
- # Normally it is left empty.
- INSTALL_PREFIX=
--INSTALLTOP=/usr/local/ssl
-+INSTALLTOP=/usr
-
- # Do not edit this manually. Use Configure --openssldir=DIR do change this!
--OPENSSLDIR=/usr/local/ssl
-+OPENSSLDIR=/usr/lib/ssl
-
- # NO_IDEA - Define to build without the IDEA algorithm
- # NO_RC4 - Define to build without the RC4 algorithm
-@@ -59,20 +59,21 @@
- # equal 4.
- # PKCS1_CHECK - pkcs1 tests.
-
--CC= cc
-+#TOP=$(shell pwd)
-+CC= gcc
- #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
--CFLAG= -DOPENSSL_NO_KRB5 -O
--DEPFLAG=
-+CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
-+DEPFLAG= -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5
- PEX_LIBS=
--EX_LIBS=
-+EX_LIBS= -ldl
- EXE_EXT=
- ARFLAGS=
- AR=ar $(ARFLAGS) r
- RANLIB= /usr/bin/ranlib
--PERL= /usr/local/bin/perl
-+PERL= /usr/bin/perl
- TAR= tar
- TARFLAGS= --no-recursion
--MAKEDEPPROG=makedepend
-+MAKEDEPPROG= gcc
-
- # We let the C compiler driver to take care of .s files. This is done in
- # order to be excused from maintaining a separate set of architecture
-@@ -175,13 +176,13 @@
- # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
- SHLIB_MARK=
-
--DIRS= crypto ssl $(SHLIB_MARK) apps test tools
-+DIRS= crypto ssl $(SHLIB_MARK) apps doc tools
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
- SDIRS= \
-- md2 md4 md5 sha mdc2 hmac ripemd \
-- des rc2 rc4 rc5 idea bf cast \
-+ md2 md4 md5 sha hmac ripemd \
-+ des rc2 rc4 bf cast \
- bn ec rsa dsa dh dso engine aes \
- buffer bio stack lhash rand err objects \
- evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
-@@ -193,7 +194,8 @@
- MAKEFILE= Makefile.ssl
- MAKE= make -f Makefile.ssl
-
--MANDIR=$(OPENSSLDIR)/man
-+MANDIR=/usr/share/man
-+MANSUF=ssl
- MAN1=1
- MAN3=3
- SHELL=/bin/sh
-@@ -206,7 +208,7 @@
- SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
- SHARED_SSL=libssl$(SHLIB_EXT)
- SHARED_LIBS=
--SHARED_LIBS_LINK_EXTS=
-+SHARED_LIBS_LINK_EXTS=.so
- SHARED_LDFLAGS=
-
- GENERAL= Makefile
-@@ -794,7 +796,7 @@
- do \
- if [ -f "$$i" ]; then \
- ( echo installing $$i; \
-- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+ cp -d $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
-@@ -849,33 +851,35 @@
- for i in doc/apps/*.pod; do \
- fn=`basename $$i .pod`; \
- if [ "$$fn" = "config" ]; then sec=5; else sec=1; fi; \
-- echo "installing man$$sec/$$fn.$$sec"; \
-+ secsuf=`echo -n $$sec; echo $(MANSUF)`; \
-+ echo "installing man$$sec/$$fn.$$secsuf"; \
- (cd `$(PERL) util/dirname.pl $$i`; \
- sh -c "$$pod2man \
-- --section=$$sec --center=OpenSSL \
-+ --section=$$secsuf --center=OpenSSL \
- --release=$(VERSION) `basename $$i`") \
-- > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
-+ > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$secsuf; \
- $(PERL) util/extract-names.pl < $$i | \
- grep -v $$filecase "^$$fn\$$" | \
- (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
- while read n; do \
-- $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
-+ $$here/util/point.sh $$fn.$$secsuf $$n.$$secsuf; \
- done); \
- done; \
- for i in doc/crypto/*.pod doc/ssl/*.pod; do \
- fn=`basename $$i .pod`; \
- if [ "$$fn" = "des_modes" ]; then sec=7; else sec=3; fi; \
-- echo "installing man$$sec/$$fn.$$sec"; \
-+ secsuf=`echo -n $$sec; echo $(MANSUF)`; \
-+ echo "installing man$$sec/$$fn.$$secsuf"; \
- (cd `$(PERL) util/dirname.pl $$i`; \
- sh -c "$$pod2man \
-- --section=$$sec --center=OpenSSL \
-+ --section=$$secsuf --center=OpenSSL \
- --release=$(VERSION) `basename $$i`") \
-- > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$sec; \
-+ > $(INSTALL_PREFIX)$(MANDIR)/man$$sec/$$fn.$$secsuf; \
- $(PERL) util/extract-names.pl < $$i | \
- grep -v $$filecase "^$$fn\$$" | \
- (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
- while read n; do \
-- $$here/util/point.sh $$fn.$$sec $$n.$$sec; \
-+ $$here/util/point.sh $$fn.$$secsuf $$n.$$secsuf; \
- done); \
- done
-
---- openssl-0.9.7b.orig/ssl/Makefile.ssl
-+++ openssl-0.9.7b/ssl/Makefile.ssl
-@@ -24,6 +24,7 @@
- TEST=ssltest.c
- APPS=
-
-+#LIB=libssl.la
- LIB=$(TOP)/libssl.a
- SHARED_LIB= libssl$(SHLIB_EXT)
- LIBSRC= \
-@@ -58,6 +59,7 @@
- all: lib shared
-
- lib: $(LIBOBJ)
-+# $(AR) $(LIB) *.lo
- $(AR) $(LIB) $(LIBOBJ)
- $(RANLIB) $(LIB) || echo Never mind.
- @touch lib
-@@ -100,6 +102,8 @@
-
- clean:
- rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
-+ rm -f *.lo *.la
-+ rm -rf .libs
-
- # DO NOT DELETE THIS LINE -- make depend depends on it.
-
---- openssl-0.9.7b.orig/ssl/ssl_algs.c
-+++ openssl-0.9.7b/ssl/ssl_algs.c
-@@ -109,3 +109,8 @@
- return(1);
- }
-
-+#undef SSLeay_add_ssl_algorithms
-+int SSLeay_add_ssl_algorithms(void)
-+ {
-+ return SSL_library_init();
-+ }
---- openssl-0.9.7b.orig/test/Makefile.ssl
-+++ openssl-0.9.7b/test/Makefile.ssl
-@@ -3,7 +3,7 @@
- #
-
- DIR= test
--TOP= ..
-+TOP= $(shell pwd)/..
- CC= cc
- INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
- CFLAG= -g
-@@ -29,6 +29,10 @@
- tpkcs7.com tpkcs7d.com tverify.com testgen.com testss.com testssl.com \
- testca.com VMSca-response.1 VMSca-response.2
-
-+#DLIBCRYPTO= ../crypto/.libs/libcrypto.a
-+#DLIBSSL= ../ssl/.libs/libssl.a
-+#LIBCRYPTO= -L$(TOP)/crypto/.libs -lcrypto
-+#LIBSSL= -L$(TOP)/ssl/.libs -lssl
- DLIBCRYPTO= ../libcrypto.a
- DLIBSSL= ../libssl.a
- LIBCRYPTO= -L.. -lcrypto
---- openssl-0.9.7b.orig/tools/c_rehash
-+++ openssl-0.9.7b/tools/c_rehash
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
-
-
- # Perl c_rehash script, scan all files in a directory
-@@ -6,7 +6,7 @@
-
- my $openssl;
-
--my $dir = "/usr/local/ssl";
-+my $dir = "/usr/lib/ssl";
-
- if(defined $ENV{OPENSSL}) {
- $openssl = $ENV{OPENSSL};
---- openssl-0.9.7b.orig/tools/c_rehash.in
-+++ openssl-0.9.7b/tools/c_rehash.in
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
-
-
- # Perl c_rehash script, scan all files in a directory
---- openssl-0.9.7b.orig/util/clean-depend.pl
-+++ openssl-0.9.7b/util/clean-depend.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
- # Clean the dependency list in a makefile of standard includes...
- # Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999
-
---- openssl-0.9.7b.orig/util/extract-names.pl
-+++ openssl-0.9.7b/util/extract-names.pl
-@@ -1,4 +1,4 @@
--#!/usr/bin/perl
-+#!/usr/local/bin/perl
-
- $/ = ""; # Eat a paragraph at once.
- while(<STDIN>) {
---- openssl-0.9.7b.orig/util/mkdef.pl
-+++ openssl-0.9.7b/util/mkdef.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
- #
- # generate a .def file
- #
---- openssl-0.9.7b.orig/util/mkerr.pl
-+++ openssl-0.9.7b/util/mkerr.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
-
- my $config = "crypto/err/openssl.ec";
- my $debug = 0;
---- openssl-0.9.7b.orig/util/mkstack.pl
-+++ openssl-0.9.7b/util/mkstack.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
-
- # This is a utility that searches out "DECLARE_STACK_OF()"
- # declarations in .h and .c files, and updates/creates/replaces
---- openssl-0.9.7b.orig/util/pod2man.pl
-+++ openssl-0.9.7b/util/pod2man.pl
-@@ -1,4 +1,4 @@
--: #!/usr/bin/perl-5.005
-+#!/usr/local/bin/perl
- eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
-
---- openssl-0.9.7b.orig/util/selftest.pl
-+++ openssl-0.9.7b/util/selftest.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
- #
- # Run the test suite and generate a report
- #
diff --git a/packages/openssl/openssl-0.9.7d/debian.patch b/packages/openssl/openssl-0.9.7d/debian.patch
deleted file mode 100644
index 4d0eed03e9..0000000000
--- a/packages/openssl/openssl-0.9.7d/debian.patch
+++ /dev/null
@@ -1,670 +0,0 @@
---- openssl-0.9.7d.orig/apps/der_chop
-+++ openssl-0.9.7d/apps/der_chop
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
- #
- # der_chop ... this is one total hack that Eric is really not proud of
- # so don't look at it and don't ask for support
---- openssl-0.9.7d.orig/apps/der_chop.in
-+++ openssl-0.9.7d/apps/der_chop.in
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
- #
- # der_chop ... this is one total hack that Eric is really not proud of
- # so don't look at it and don't ask for support
---- openssl-0.9.7d.orig/apps/Makefile.ssl
-+++ openssl-0.9.7d/apps/Makefile.ssl
-@@ -3,7 +3,7 @@
- #
-
- DIR= apps
--TOP= ..
-+TOP= $(shell pwd)/..
- CC= cc
- INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
- CFLAG= -g -static
-@@ -30,9 +30,14 @@
-
- GENERAL=Makefile makeapps.com install.com
-
-+TOP=$(shell pwd)/..
-+#DLIBCRYPTO=../crypto/.libs/libcrypto.a
- DLIBCRYPTO=../libcrypto.a
-+#DLIBSSL=../ssl/.libs/libssl.a
- DLIBSSL=../libssl.a
-+#LIBCRYPTO=-L$(TOP)/crypto/.libs -lcrypto
- LIBCRYPTO=-L.. -lcrypto
-+#LIBSSL=-L$(TOP)/ssl/.libs -lssl
- LIBSSL=-L.. -lssl
-
- PROGRAM= openssl
-@@ -136,6 +141,8 @@
- clean:
- rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
- rm -f req
-+ rm -f *.lo
-+ rm -fr .libs
-
- $(DLIBSSL):
- (cd ..; $(MAKE) DIRS=ssl all)
---- openssl-0.9.7d.orig/apps/progs.h
-+++ openssl-0.9.7d/apps/progs.h
-@@ -35,9 +35,7 @@
- extern int spkac_main(int argc,char *argv[]);
- extern int smime_main(int argc,char *argv[]);
- extern int rand_main(int argc,char *argv[]);
--#ifndef OPENSSL_NO_ENGINE
- extern int engine_main(int argc,char *argv[]);
--#endif
- extern int ocsp_main(int argc,char *argv[]);
-
- #define FUNC_TYPE_GENERAL 1
-@@ -94,9 +92,7 @@
- #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
- {FUNC_TYPE_GENERAL,"s_client",s_client_main},
- #endif
--#ifndef OPENSSL_NO_SPEED
- {FUNC_TYPE_GENERAL,"speed",speed_main},
--#endif
- #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
- {FUNC_TYPE_GENERAL,"s_time",s_time_main},
- #endif
-@@ -115,9 +111,7 @@
- {FUNC_TYPE_GENERAL,"spkac",spkac_main},
- {FUNC_TYPE_GENERAL,"smime",smime_main},
- {FUNC_TYPE_GENERAL,"rand",rand_main},
--#ifndef OPENSSL_NO_ENGINE
- {FUNC_TYPE_GENERAL,"engine",engine_main},
--#endif
- {FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
- #ifndef OPENSSL_NO_MD2
- {FUNC_TYPE_MD,"md2",dgst_main},
---- openssl-0.9.7d.orig/config
-+++ openssl-0.9.7d/config
-@@ -162,8 +162,8 @@
- echo "${MACHINE}-whatever-linux1"; exit 0
- ;;
-
-- GNU*)
-- echo "hurd-x86"; exit 0;
-+ GNU:*|GNU/*:*)
-+ echo "${MACHINE}-gnuish"; exit 0;
- ;;
-
- LynxOS:*)
---- openssl-0.9.7d.orig/Configure
-+++ openssl-0.9.7d/Configure
-@@ -1,4 +1,4 @@
--:
-+#!/usr/local/bin/perl
- eval 'exec perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
- ##
-@@ -373,6 +373,42 @@
- # assembler versions -- currently defunct:
- ##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer:::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${alpha_asm}",
-
-+# Debian GNU/* (various architectures)
-+"debian-alpha","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-alpha-ev4","gcc:-DTERMIO -O3 -mcpu=ev4 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-alpha-ev5","gcc:-DTERMIO -O3 -mcpu=ev5 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#"debian-amd64","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-amd64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o:::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#"debian-freebsd-alpha","gcc:-DTERMIOS -O -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#"debian-freebsd-i386", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::-pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-freebsd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-hppa","gcc:-DB_ENDIAN -DTERMIO -O2 -Wall::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-hurd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-ia64","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+#"debian-i386","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC",
-+"debian-i386","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-i386-i486","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i486 -mcpu=i486 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-i386-i586","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i586 -mcpu=i586 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-i386-i686/cmov","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i686 -mcpu=i686 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-m68k","gcc:-DB_ENDIAN -DTERMIO -O2 -Wall::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-mips", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-mipsel", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-netbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-netbsd-m68k", "gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-netbsd-sparc", "gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-openbsd-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-openbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-openbsd-mips","gcc:-O2 -DL_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-powerpc","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_UNROLL DES_RISC2 DES_PTR MD2_CHAR RC4_INDEX::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-s390","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sh3", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sh4", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sh3eb", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sh4eb", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sparc","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sparc-v8","gcc:-DB_ENDIAN -DTERMIO -O3 -mcpu=v8 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-sparc-v9","gcc:-DB_ENDIAN -DTERMIO -O3 -mcpu=v9 -Wa,-Av8plus -fomit-frame-pointer -Wall -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
- # The intel boxes :-), It would be worth seeing if bsdi-gcc can use the
- # bn86-elf.o file file since it is hand tweaked assembler.
- "linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-@@ -1260,7 +1296,8 @@
- elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
- {
- my $sotmp = $1;
-- s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
-+# s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
-+ s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
- }
- elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
- {
---- openssl-0.9.7d.orig/crypto/asn1/charmap.pl
-+++ openssl-0.9.7d/crypto/asn1/charmap.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
-
- use strict;
-
---- openssl-0.9.7d.orig/crypto/Makefile.ssl
-+++ openssl-0.9.7d/crypto/Makefile.ssl
-@@ -34,6 +34,7 @@
-
- GENERAL=Makefile README crypto-lib.com install.com
-
-+#LIB= libcrypto.la
- LIB= $(TOP)/libcrypto.a
- SHARED_LIB= libcrypto$(SHLIB_EXT)
- LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c
-@@ -69,8 +70,9 @@
- @for i in $(SDIRS) ;\
- do \
- (cd $$i && echo "making all in crypto/$$i..." && \
-- $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='${RANLIB}' all ) || exit 1; \
-+ $(MAKE) CC='$(CC)' INCLUDES='${INCLUDES}' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' MD5_ASM_OBJ='${MD5_ASM_OBJ}' RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' AR='${AR}' PROCESSOR='${PROCESSOR}' PERL='${PERL}' RANLIB='true' all ) || exit 1; \
- done;
-+# $(AR) $(LIB) *.lo */*.lo
-
- files:
- $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO
-@@ -145,7 +147,9 @@
- done;
-
- clean:
-- rm -f buildinf.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
-+ rm -f buildinf.h *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff date.h
-+ $(RM) -f *.lo */*.lo *.la
-+ $(RM) -rf .libs
- @for i in $(SDIRS) ;\
- do \
- (cd $$i && echo "making clean in crypto/$$i..." && \
---- openssl-0.9.7d.orig/crypto/md5/asm/md5-sparcv9.S
-+++ openssl-0.9.7d/crypto/md5/asm/md5-sparcv9.S
-@@ -74,14 +74,14 @@
- #define Dval R8
-
- #if defined(MD5_BLOCK_DATA_ORDER)
--# if defined(OPENSSL_SYSNAME_ULTRASPARC)
-+/*# if defined(OPENSSL_SYSNAME_ULTRASPARC)*/
- # define LOAD lda
- # define X(i) [%i1+i*4]%asi
- # define md5_block md5_block_asm_data_order_aligned
- # define ASI_PRIMARY_LITTLE 0x88
--# else
-+/*# else
- # error "MD5_BLOCK_DATA_ORDER is supported only on UltraSPARC!"
--# endif
-+# endif*/
- #else
- # define LOAD ld
- # define X(i) [%i1+i*4]
---- openssl-0.9.7d.orig/crypto/opensslconf.h
-+++ openssl-0.9.7d/crypto/opensslconf.h
-@@ -4,17 +4,38 @@
- /* OpenSSL was configured with the following options: */
- #ifndef OPENSSL_DOING_MAKEDEPEND
-
-+#ifndef OPENSSL_NO_IDEA
-+# define OPENSSL_NO_IDEA
-+#endif
-+#ifndef OPENSSL_NO_MDC2
-+# define OPENSSL_NO_MDC2
-+#endif
-+#ifndef OPENSSL_NO_RC5
-+# define OPENSSL_NO_RC5
-+#endif
- #ifndef OPENSSL_NO_KRB5
- # define OPENSSL_NO_KRB5
- #endif
-
- #endif /* OPENSSL_DOING_MAKEDEPEND */
-+#ifndef OPENSSL_THREADS
-+# define OPENSSL_THREADS
-+#endif
-
- /* The OPENSSL_NO_* macros are also defined as NO_* if the application
- asks for it. This is a transient feature that is provided for those
- who haven't had the time to do the appropriate changes in their
- applications. */
- #ifdef OPENSSL_ALGORITHM_DEFINES
-+# if defined(OPENSSL_NO_IDEA) && !defined(NO_IDEA)
-+# define NO_IDEA
-+# endif
-+# if defined(OPENSSL_NO_MDC2) && !defined(NO_MDC2)
-+# define NO_MDC2
-+# endif
-+# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
-+# define NO_RC5
-+# endif
- # if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
- # define NO_KRB5
- # endif
-@@ -27,7 +48,7 @@
-
- #if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
- #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
--#define OPENSSLDIR "/usr/local/ssl"
-+#define OPENSSLDIR "/usr/lib/ssl"
- #endif
- #endif
-
-@@ -79,7 +100,7 @@
-
- #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
- #define CONFIG_HEADER_BN_H
--#undef BN_LLONG
-+#define BN_LLONG
-
- /* Should we define BN_DIV2W here? */
-
-@@ -98,7 +119,7 @@
- #define CONFIG_HEADER_RC4_LOCL_H
- /* if this is defined data[i] is used instead of *data, this is a %20
- * speedup on x86 */
--#undef RC4_INDEX
-+#define RC4_INDEX
- #endif
-
- #if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
-@@ -112,14 +133,14 @@
- /* the following is tweaked from a config script, that is why it is a
- * protected undef/define */
- #ifndef DES_PTR
--#undef DES_PTR
-+#define DES_PTR
- #endif
-
- /* This helps C compiler generate the correct code for multiple functional
- * units. It reduces register dependancies at the expense of 2 more
- * registers */
- #ifndef DES_RISC1
--#undef DES_RISC1
-+#define DES_RISC1
- #endif
-
- #ifndef DES_RISC2
-@@ -133,7 +154,7 @@
- /* Unroll the inner loop, this sometimes helps, sometimes hinders.
- * Very mucy CPU dependant */
- #ifndef DES_UNROLL
--#undef DES_UNROLL
-+#define DES_UNROLL
- #endif
-
- /* These default values were supplied by
---- openssl-0.9.7d.orig/demos/tunala/configure.in
-+++ openssl-0.9.7d/demos/tunala/configure.in
-@@ -1,4 +1,4 @@
--dnl Process this file with autoconf to produce a configure script.
-+#!/usr/local/bin/perl
- AC_INIT(tunala.c)
- AM_CONFIG_HEADER(config.h)
- AM_INIT_AUTOMAKE(tunala, 0.0.1-dev)
---- openssl-0.9.7d.orig/doc/crypto/pem.pod
-+++ openssl-0.9.7d/doc/crypto/pem.pod
-@@ -471,6 +471,6 @@
- =head1 RETURN CODES
-
- The read routines return either a pointer to the structure read or NULL
--is an error occurred.
-+if an error occurred.
-
- The write routines return 1 for success or 0 for failure.
---- openssl-0.9.7d.orig/doc/Makefile.ssl
-+++ openssl-0.9.7d/doc/Makefile.ssl
-@@ -0,0 +1,40 @@
-+VERSION =
-+
-+#PODS = $(wildcard *.pod)
-+#MANS = $(addsuffix .man, $(basename $(PODS)))
-+
-+MANS = openssl.1 ssl.3 crypto.3
-+
-+P2M = pod2man --center='OpenSSL Documentation' --release="OpenSSL $(VERSION)"
-+
-+all: manpages
-+
-+.PHONY: manpages
-+
-+manpages: openssl.1 crypto.3 ssl.3
-+
-+openssl.1:
-+ $(P2M) --section=1 openssl.pod > openssl.1
-+
-+crypto.3:
-+ $(P2M) --section=3 crypto.pod > crypto.3
-+
-+ssl.3:
-+ $(P2M) --section=3 ssl.pod > ssl.3
-+
-+.PHONY: install
-+install:
-+ mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man1
-+ mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
-+ install -m 644 -p openssl.1 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man1
-+ install -m 644 -p crypto.3 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
-+ install -m 644 -p ssl.3 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
-+ rm -f $(MANS)
-+
-+.PHONY: clean
-+clean:
-+ rm -f $(MANS)
-+
-+.PHONY: realclean
-+realclean:
-+ -$(MAKE) clean
---- openssl-0.9.7d.orig/Makefile.org
-+++ openssl-0.9.7d/Makefile.org
-@@ -57,6 +57,7 @@
- # equal 4.
- # PKCS1_CHECK - pkcs1 tests.
-
-+#TOP=$(shell pwd)
- CC= gcc
- #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
- CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
-@@ -173,7 +174,7 @@
- # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
- SHLIB_MARK=
-
--DIRS= crypto ssl $(SHLIB_MARK) apps test tools
-+DIRS= crypto ssl $(SHLIB_MARK) apps doc tools
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
-@@ -191,10 +192,10 @@
- MAKEFILE= Makefile.ssl
- MAKE= make -f Makefile.ssl
-
--MANDIR=$(OPENSSLDIR)/man
-+MANDIR=/usr/share/man
- MAN1=1
- MAN3=3
--MANSUFFIX=
-+MANSUFFIX=ssl
- SHELL=/bin/sh
-
- TOP= .
-@@ -795,7 +796,7 @@
- do \
- if [ -f "$$i" ]; then \
- ( echo installing $$i; \
-- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+ cp -d $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
---- openssl-0.9.7d.orig/Makefile.ssl
-+++ openssl-0.9.7d/Makefile.ssl
-@@ -11,11 +11,11 @@
- SHLIB_VERSION_HISTORY=
- SHLIB_MAJOR=0
- SHLIB_MINOR=9.7
--SHLIB_EXT=
--PLATFORM=dist
--OPTIONS= no-krb5
--CONFIGURE_ARGS=dist
--SHLIB_TARGET=
-+SHLIB_EXT=.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
-+PLATFORM=debian-i386
-+OPTIONS=--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 no-krb5
-+CONFIGURE_ARGS=--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 debian-i386
-+SHLIB_TARGET=linux-shared
-
- # HERE indicates where this Makefile lives. This can be used to indicate
- # where sub-Makefiles are expected to be. Currently has very limited usage,
-@@ -26,10 +26,10 @@
- # for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
- # Normally it is left empty.
- INSTALL_PREFIX=
--INSTALLTOP=/usr/local/ssl
-+INSTALLTOP=/usr
-
- # Do not edit this manually. Use Configure --openssldir=DIR do change this!
--OPENSSLDIR=/usr/local/ssl
-+OPENSSLDIR=/usr/lib/ssl
-
- # NO_IDEA - Define to build without the IDEA algorithm
- # NO_RC4 - Define to build without the RC4 algorithm
-@@ -59,20 +59,21 @@
- # equal 4.
- # PKCS1_CHECK - pkcs1 tests.
-
--CC= cc
-+#TOP=$(shell pwd)
-+CC= gcc
- #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
--CFLAG= -DOPENSSL_NO_KRB5 -O
--DEPFLAG=
-+CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
-+DEPFLAG= -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5
- PEX_LIBS=
--EX_LIBS=
-+EX_LIBS= -ldl
- EXE_EXT=
- ARFLAGS=
- AR=ar $(ARFLAGS) r
- RANLIB= /usr/bin/ranlib
--PERL= /usr/local/bin/perl
-+PERL= /usr/bin/perl
- TAR= tar
- TARFLAGS= --no-recursion
--MAKEDEPPROG=makedepend
-+MAKEDEPPROG= gcc
-
- # We let the C compiler driver to take care of .s files. This is done in
- # order to be excused from maintaining a separate set of architecture
-@@ -175,13 +176,13 @@
- # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
- SHLIB_MARK=
-
--DIRS= crypto ssl $(SHLIB_MARK) apps test tools
-+DIRS= crypto ssl $(SHLIB_MARK) apps doc tools
- SHLIBDIRS= crypto ssl
-
- # dirs in crypto to build
- SDIRS= \
-- md2 md4 md5 sha mdc2 hmac ripemd \
-- des rc2 rc4 rc5 idea bf cast \
-+ md2 md4 md5 sha hmac ripemd \
-+ des rc2 rc4 bf cast \
- bn ec rsa dsa dh dso engine aes \
- buffer bio stack lhash rand err objects \
- evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
-@@ -193,10 +194,10 @@
- MAKEFILE= Makefile.ssl
- MAKE= make -f Makefile.ssl
-
--MANDIR=$(OPENSSLDIR)/man
-+MANDIR=/usr/share/man
- MAN1=1
- MAN3=3
--MANSUFFIX=
-+MANSUFFIX=ssl
- SHELL=/bin/sh
-
- TOP= .
-@@ -207,7 +208,7 @@
- SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
- SHARED_SSL=libssl$(SHLIB_EXT)
- SHARED_LIBS=
--SHARED_LIBS_LINK_EXTS=
-+SHARED_LIBS_LINK_EXTS=.so
- SHARED_LDFLAGS=
-
- GENERAL= Makefile
-@@ -797,7 +798,7 @@
- do \
- if [ -f "$$i" ]; then \
- ( echo installing $$i; \
-- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
-+ cp -d $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \
---- openssl-0.9.7d.orig/os2/backwardify.pl
-+++ openssl-0.9.7d/os2/backwardify.pl
-@@ -1,4 +1,4 @@
--#!/usr/bin/perl -w
-+#!/usr/local/bin/perl
- use strict;
-
- # Use as $0
---- openssl-0.9.7d.orig/ssl/Makefile.ssl
-+++ openssl-0.9.7d/ssl/Makefile.ssl
-@@ -24,6 +24,7 @@
- TEST=ssltest.c
- APPS=
-
-+#LIB=libssl.la
- LIB=$(TOP)/libssl.a
- SHARED_LIB= libssl$(SHLIB_EXT)
- LIBSRC= \
-@@ -58,6 +59,7 @@
- all: shared
-
- lib: $(LIBOBJ)
-+# $(AR) $(LIB) *.lo
- $(AR) $(LIB) $(LIBOBJ)
- $(RANLIB) $(LIB) || echo Never mind.
- @touch lib
-@@ -100,6 +102,8 @@
-
- clean:
- rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
-+ rm -f *.lo *.la
-+ rm -rf .libs
-
- # DO NOT DELETE THIS LINE -- make depend depends on it.
-
---- openssl-0.9.7d.orig/ssl/ssl_algs.c
-+++ openssl-0.9.7d/ssl/ssl_algs.c
-@@ -109,3 +109,8 @@
- return(1);
- }
-
-+#undef SSLeay_add_ssl_algorithms
-+int SSLeay_add_ssl_algorithms(void)
-+ {
-+ return SSL_library_init();
-+ }
---- openssl-0.9.7d.orig/test/Makefile.ssl
-+++ openssl-0.9.7d/test/Makefile.ssl
-@@ -3,7 +3,7 @@
- #
-
- DIR= test
--TOP= ..
-+TOP= $(shell pwd)/..
- CC= cc
- INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
- CFLAG= -g
-@@ -29,6 +29,10 @@
- tpkcs7.com tpkcs7d.com tverify.com testgen.com testss.com testssl.com \
- testca.com VMSca-response.1 VMSca-response.2
-
-+#DLIBCRYPTO= ../crypto/.libs/libcrypto.a
-+#DLIBSSL= ../ssl/.libs/libssl.a
-+#LIBCRYPTO= -L$(TOP)/crypto/.libs -lcrypto
-+#LIBSSL= -L$(TOP)/ssl/.libs -lssl
- DLIBCRYPTO= ../libcrypto.a
- DLIBSSL= ../libssl.a
- LIBCRYPTO= -L.. -lcrypto
---- openssl-0.9.7d.orig/tools/c_issuer
-+++ openssl-0.9.7d/tools/c_issuer
-@@ -6,5 +6,5 @@
- for i in $*
- do
- n=`openssl x509 -issuer -noout -in $i`
-- echo "$i\t$n"
-+ echo -e "$i\t$n"
- done
---- openssl-0.9.7d.orig/tools/c_rehash
-+++ openssl-0.9.7d/tools/c_rehash
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
-
-
- # Perl c_rehash script, scan all files in a directory
---- openssl-0.9.7d.orig/tools/c_rehash.in
-+++ openssl-0.9.7d/tools/c_rehash.in
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl
-+#!/usr/bin/perl
-
-
- # Perl c_rehash script, scan all files in a directory
---- openssl-0.9.7d.orig/util/clean-depend.pl
-+++ openssl-0.9.7d/util/clean-depend.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
- # Clean the dependency list in a makefile of standard includes...
- # Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999
-
---- openssl-0.9.7d.orig/util/extract-names.pl
-+++ openssl-0.9.7d/util/extract-names.pl
-@@ -1,4 +1,4 @@
--#!/usr/bin/perl
-+#!/usr/local/bin/perl
-
- $/ = ""; # Eat a paragraph at once.
- while(<STDIN>) {
---- openssl-0.9.7d.orig/util/mkdef.pl
-+++ openssl-0.9.7d/util/mkdef.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
- #
- # generate a .def file
- #
---- openssl-0.9.7d.orig/util/mkerr.pl
-+++ openssl-0.9.7d/util/mkerr.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
-
- my $config = "crypto/err/openssl.ec";
- my $debug = 0;
---- openssl-0.9.7d.orig/util/mkstack.pl
-+++ openssl-0.9.7d/util/mkstack.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
-
- # This is a utility that searches out "DECLARE_STACK_OF()"
- # declarations in .h and .c files, and updates/creates/replaces
---- openssl-0.9.7d.orig/util/pod2man.pl
-+++ openssl-0.9.7d/util/pod2man.pl
-@@ -1,4 +1,4 @@
--: #!/usr/bin/perl-5.005
-+#!/usr/local/bin/perl
- eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
-
---- openssl-0.9.7d.orig/util/selftest.pl
-+++ openssl-0.9.7d/util/selftest.pl
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/perl -w
-+#!/usr/local/bin/perl
- #
- # Run the test suite and generate a report
- #
diff --git a/packages/openssl/openssl-0.9.7e/gnueabi-arm.patch b/packages/openssl/openssl-0.9.7e/gnueabi-arm.patch
new file mode 100644
index 0000000000..be0adbdea7
--- /dev/null
+++ b/packages/openssl/openssl-0.9.7e/gnueabi-arm.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- openssl-0.9.7e/Configure~gnueabi-arm 2006-03-19 21:04:31.000000000 +0100
++++ openssl-0.9.7e/Configure 2006-03-19 21:07:22.000000000 +0100
+@@ -462,6 +462,7 @@
+ # Linux on ARM
+ "linux-elf-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-elf-armeb","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-gnueabi-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
+ # SCO/Caldera targets.
+ #
diff --git a/packages/openssl/openssl-0.9.7g/.mtn2git_empty b/packages/openssl/openssl-0.9.7g/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openssl/openssl-0.9.7g/.mtn2git_empty
diff --git a/packages/openssl/openssl-0.9.7d/armeb.patch b/packages/openssl/openssl-0.9.7g/armeb.patch
index 881604a0c4..7539506949 100644
--- a/packages/openssl/openssl-0.9.7d/armeb.patch
+++ b/packages/openssl/openssl-0.9.7g/armeb.patch
@@ -1,20 +1,18 @@
-Index: openssl-0.9.7d/Configure
-===================================================================
---- openssl-0.9.7d.orig/Configure 2005-02-03 13:20:33.949224144 -0500
-+++ openssl-0.9.7d/Configure 2005-02-03 13:21:26.543228640 -0500
-@@ -378,6 +378,7 @@
+--- Configure.orig 2006-03-22 16:29:20.000000000 +0100
++++ Configure 2006-03-22 16:31:44.000000000 +0100
+@@ -395,6 +395,7 @@
"debian-alpha-ev4","gcc:-DTERMIO -O3 -mcpu=ev4 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debian-alpha-ev5","gcc:-DTERMIO -O3 -mcpu=ev5 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
- "debian-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"debian-armeb","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "debian-arm","gcc:-DL_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-armeb","gcc:-DB_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
#"debian-amd64","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"debian-amd64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o:::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
#"debian-freebsd-alpha","gcc:-DTERMIOS -O -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-@@ -452,6 +453,7 @@
-
- # Linux on ARM
- "linux-elf-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
-+"linux-elf-armeb","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+@@ -474,6 +475,7 @@
+ # ARM comes in both little- and big-endian flavors. The following line is
+ # endian neutral, but ./config is free to throw in -D[BL]_ENDIAN...
+ "linux-elf-arm","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-elf-armeb","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
# SCO/Caldera targets.
#
diff --git a/packages/openssl/openssl-0.9.7g/debian.patch b/packages/openssl/openssl-0.9.7g/debian.patch
new file mode 100644
index 0000000000..8cfdd2d653
--- /dev/null
+++ b/packages/openssl/openssl-0.9.7g/debian.patch
@@ -0,0 +1,2808 @@
+--- openssl097-0.9.7g.orig/apps/CA.pl
++++ openssl097-0.9.7g/apps/CA.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl
++#!/usr/local/bin/perl
+ #
+ # CA - wrapper around ca to make it easier to use ... basically ca requires
+ # some setup stuff to be done before you can use it and this makes
+@@ -63,6 +63,7 @@
+ foreach (@ARGV) {
+ if ( /^(-\?|-h|-help)$/ ) {
+ print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
+ exit 0;
+ } elsif (/^-newcert$/) {
+ # create a certificate
+@@ -158,6 +159,7 @@
+ } else {
+ print STDERR "Unknown arg $_\n";
+ print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
+ exit 1;
+ }
+ }
+--- openssl097-0.9.7g.orig/apps/CA.pl.in
++++ openssl097-0.9.7g/apps/CA.pl.in
+@@ -63,6 +63,7 @@
+ foreach (@ARGV) {
+ if ( /^(-\?|-h|-help)$/ ) {
+ print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
+ exit 0;
+ } elsif (/^-newcert$/) {
+ # create a certificate
+@@ -158,6 +159,7 @@
+ } else {
+ print STDERR "Unknown arg $_\n";
+ print STDERR "usage: CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify\n";
++ print STDERR "usage: CA -signcert certfile keyfile|-newcert|-newreq|-newca|-sign|-verify\n";
+ exit 1;
+ }
+ }
+--- openssl097-0.9.7g.orig/apps/progs.h
++++ openssl097-0.9.7g/apps/progs.h
+@@ -35,11 +35,9 @@
+ extern int spkac_main(int argc,char *argv[]);
+ extern int smime_main(int argc,char *argv[]);
+ extern int rand_main(int argc,char *argv[]);
+-extern int prime_main(int argc,char *argv[]);
+-#ifndef OPENSSL_NO_ENGINE
+ extern int engine_main(int argc,char *argv[]);
+-#endif
+ extern int ocsp_main(int argc,char *argv[]);
++extern int prime_main(int argc,char *argv[]);
+
+ #define FUNC_TYPE_GENERAL 1
+ #define FUNC_TYPE_MD 2
+@@ -95,9 +93,7 @@
+ #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
+ {FUNC_TYPE_GENERAL,"s_client",s_client_main},
+ #endif
+-#ifndef OPENSSL_NO_SPEED
+ {FUNC_TYPE_GENERAL,"speed",speed_main},
+-#endif
+ #if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
+ {FUNC_TYPE_GENERAL,"s_time",s_time_main},
+ #endif
+@@ -116,11 +112,9 @@
+ {FUNC_TYPE_GENERAL,"spkac",spkac_main},
+ {FUNC_TYPE_GENERAL,"smime",smime_main},
+ {FUNC_TYPE_GENERAL,"rand",rand_main},
+- {FUNC_TYPE_GENERAL,"prime",prime_main},
+-#ifndef OPENSSL_NO_ENGINE
+ {FUNC_TYPE_GENERAL,"engine",engine_main},
+-#endif
+ {FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
++ {FUNC_TYPE_GENERAL,"prime",prime_main},
+ #ifndef OPENSSL_NO_MD2
+ {FUNC_TYPE_MD,"md2",dgst_main},
+ #endif
+--- openssl097-0.9.7g.orig/config
++++ openssl097-0.9.7g/config
+@@ -163,8 +163,8 @@
+ echo "${MACHINE}-whatever-linux1"; exit 0
+ ;;
+
+- GNU*)
+- echo "hurd-x86"; exit 0;
++ GNU:*|GNU/*:*)
++ echo "${MACHINE}-gnuish"; exit 0;
+ ;;
+
+ LynxOS:*)
+--- openssl097-0.9.7g.orig/Configure
++++ openssl097-0.9.7g/Configure
+@@ -1,4 +1,4 @@
+-:
++#!/usr/local/bin/perl
+ eval 'exec perl -S $0 ${1+"$@"}'
+ if $running_under_some_shell;
+ ##
+@@ -390,6 +390,42 @@
+ # assembler versions -- currently defunct:
+ ##"OpenBSD-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer:::(unknown):SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2:${alpha_asm}",
+
++# Debian GNU/* (various architectures)
++"debian-alpha","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-alpha-ev4","gcc:-DTERMIO -O3 -mcpu=ev4 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-alpha-ev5","gcc:-DTERMIO -O3 -mcpu=ev5 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-arm","gcc:-DL_ENDIAN -DTERMIO -O2 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_RISC1::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++#"debian-amd64","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-amd64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR BF_PTR2 DES_INT DES_UNROLL:asm/x86_64-gcc.o:::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++#"debian-freebsd-alpha","gcc:-DTERMIOS -O -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-kfreebsd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-hppa","gcc:-DB_ENDIAN -DTERMIO -O2 -Wall::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-hurd-i386","gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-ia64","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK RC4_CHAR:asm/ia64.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++#"debian-i386","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC",
++"debian-i386","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386-i486","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i486 -mcpu=i486 -Wa,--noexecstack -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386-i586","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i586 -mcpu=i586 -Wa,--noexecstack -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-i386-i686/cmov","gcc:-DL_ENDIAN -DTERMIO -O3 -march=i686 -mcpu=i686 -Wa,--noexecstack -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-m68k","gcc:-DB_ENDIAN -DTERMIO -O2 -Wall::-D_REENTRANT::-ldl:BN_LLONG MD2_CHAR RC4_INDEX::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-mips", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-mipsel", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL DES_RISC2::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-netbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-netbsd-m68k", "gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-netbsd-sparc", "gcc:-DB_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mv8 -Wall::(unknown):::BN_LLONG MD2_CHAR RC4_INDEX DES_UNROLL::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-openbsd-alpha","gcc:-DTERMIOS -O3 -fomit-frame-pointer::(unknown):::SIXTY_FOUR_BIT_LONG DES_INT DES_PTR DES_RISC2::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-openbsd-i386", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -m486::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-openbsd-mips","gcc:-O2 -DL_ENDIAN::(unknown)::BN_LLONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC2 DES_PTR BF_PTR:::::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-powerpc","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG DES_UNROLL DES_RISC2 DES_PTR MD2_CHAR RC4_INDEX::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-ppc64","gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:asm/linux_ppc64.o:::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-s390","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh3", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh4", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh3eb", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sh4eb", "gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc-v8","gcc:-DB_ENDIAN -DTERMIO -O3 -mcpu=v8 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"debian-sparc-v9","gcc:-DB_ENDIAN -DTERMIO -O3 -mcpu=v9 -Wa,-Av8plus -fomit-frame-pointer -Wall -DULTRASPARC -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:asm/sparcv8plus.o:::asm/md5-sparcv8plus.o::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ # The intel boxes :-), It would be worth seeing if bsdi-gcc can use the
+ # bn86-elf.o file file since it is hand tweaked assembler.
+ "linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+@@ -1316,7 +1352,8 @@
+ elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
+ {
+ my $sotmp = $1;
+- s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
++# s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
++ s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp/;
+ }
+ elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
+ {
+--- openssl097-0.9.7g.orig/crypto/asn1/charmap.pl
++++ openssl097-0.9.7g/crypto/asn1/charmap.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl -w
++#!/usr/local/bin/perl
+
+ use strict;
+
+--- openssl097-0.9.7g.orig/crypto/bn/asm/ppc.pl
++++ openssl097-0.9.7g/crypto/bn/asm/ppc.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/local/bin/perl
+ #
+ # Implemented as a Perl wrapper as we want to support several different
+ # architectures with single file. We pick up the target based on the
+--- openssl097-0.9.7g.orig/crypto/md5/asm/md5-sparcv9.S
++++ openssl097-0.9.7g/crypto/md5/asm/md5-sparcv9.S
+@@ -74,14 +74,14 @@
+ #define Dval R8
+
+ #if defined(MD5_BLOCK_DATA_ORDER)
+-# if defined(OPENSSL_SYSNAME_ULTRASPARC)
++/*# if defined(OPENSSL_SYSNAME_ULTRASPARC)*/
+ # define LOAD lda
+ # define X(i) [%i1+i*4]%asi
+ # define md5_block md5_block_asm_data_order_aligned
+ # define ASI_PRIMARY_LITTLE 0x88
+-# else
++/*# else
+ # error "MD5_BLOCK_DATA_ORDER is supported only on UltraSPARC!"
+-# endif
++# endif*/
+ #else
+ # define LOAD ld
+ # define X(i) [%i1+i*4]
+--- openssl097-0.9.7g.orig/crypto/opensslconf.h
++++ openssl097-0.9.7g/crypto/opensslconf.h
+@@ -4,17 +4,38 @@
+ /* OpenSSL was configured with the following options: */
+ #ifndef OPENSSL_DOING_MAKEDEPEND
+
++#ifndef OPENSSL_NO_IDEA
++# define OPENSSL_NO_IDEA
++#endif
++#ifndef OPENSSL_NO_MDC2
++# define OPENSSL_NO_MDC2
++#endif
++#ifndef OPENSSL_NO_RC5
++# define OPENSSL_NO_RC5
++#endif
+ #ifndef OPENSSL_NO_KRB5
+ # define OPENSSL_NO_KRB5
+ #endif
+
+ #endif /* OPENSSL_DOING_MAKEDEPEND */
++#ifndef OPENSSL_THREADS
++# define OPENSSL_THREADS
++#endif
+
+ /* The OPENSSL_NO_* macros are also defined as NO_* if the application
+ asks for it. This is a transient feature that is provided for those
+ who haven't had the time to do the appropriate changes in their
+ applications. */
+ #ifdef OPENSSL_ALGORITHM_DEFINES
++# if defined(OPENSSL_NO_IDEA) && !defined(NO_IDEA)
++# define NO_IDEA
++# endif
++# if defined(OPENSSL_NO_MDC2) && !defined(NO_MDC2)
++# define NO_MDC2
++# endif
++# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
++# define NO_RC5
++# endif
+ # if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
+ # define NO_KRB5
+ # endif
+@@ -27,7 +48,7 @@
+
+ #if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
+ #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
+-#define OPENSSLDIR "/usr/local/ssl"
++#define OPENSSLDIR "/usr/lib/ssl"
+ #endif
+ #endif
+
+@@ -79,7 +100,7 @@
+
+ #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
+ #define CONFIG_HEADER_BN_H
+-#undef BN_LLONG
++#define BN_LLONG
+
+ /* Should we define BN_DIV2W here? */
+
+@@ -98,7 +119,7 @@
+ #define CONFIG_HEADER_RC4_LOCL_H
+ /* if this is defined data[i] is used instead of *data, this is a %20
+ * speedup on x86 */
+-#undef RC4_INDEX
++#define RC4_INDEX
+ #endif
+
+ #if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
+@@ -112,14 +133,14 @@
+ /* the following is tweaked from a config script, that is why it is a
+ * protected undef/define */
+ #ifndef DES_PTR
+-#undef DES_PTR
++#define DES_PTR
+ #endif
+
+ /* This helps C compiler generate the correct code for multiple functional
+ * units. It reduces register dependancies at the expense of 2 more
+ * registers */
+ #ifndef DES_RISC1
+-#undef DES_RISC1
++#define DES_RISC1
+ #endif
+
+ #ifndef DES_RISC2
+@@ -133,7 +154,7 @@
+ /* Unroll the inner loop, this sometimes helps, sometimes hinders.
+ * Very mucy CPU dependant */
+ #ifndef DES_UNROLL
+-#undef DES_UNROLL
++#define DES_UNROLL
+ #endif
+
+ /* These default values were supplied by
+--- openssl097-0.9.7g.orig/crypto/pkcs7/pk7_mime.c
++++ openssl097-0.9.7g/crypto/pkcs7/pk7_mime.c
+@@ -277,9 +277,9 @@
+
+ if(strcmp(hdr->value, "application/x-pkcs7-signature") &&
+ strcmp(hdr->value, "application/pkcs7-signature")) {
+- sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
+ PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_SIG_INVALID_MIME_TYPE);
+ ERR_add_error_data(2, "type: ", hdr->value);
++ sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
+ sk_BIO_pop_free(parts, BIO_vfree);
+ return NULL;
+ }
+--- openssl097-0.9.7g.orig/crypto/rc4/asm/rc4-amd64.pl
++++ openssl097-0.9.7g/crypto/rc4/asm/rc4-amd64.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/local/bin/perl
+ #
+ # ====================================================================
+ # Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
+--- openssl097-0.9.7g.orig/crypto/rc4/rc4_enc.c
++++ openssl097-0.9.7g/crypto/rc4/rc4_enc.c
+@@ -77,10 +77,6 @@
+ x=key->x;
+ y=key->y;
+ d=key->data;
+-#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
+- /* see crypto/rc4/asm/rc4-ia64.S for further details... */
+- d=(RC4_INT *)(((size_t)(d+255))&~(sizeof(key->data)-1));
+-#endif
+
+ #if defined(RC4_CHUNK)
+ /*
+--- openssl097-0.9.7g.orig/crypto/rc4/rc4.h
++++ openssl097-0.9.7g/crypto/rc4/rc4.h
+@@ -73,10 +73,6 @@
+ {
+ RC4_INT x,y;
+ RC4_INT data[256];
+-#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
+- /* see crypto/rc4/asm/rc4-ia64.S for further details... */
+- RC4_INT pad[512-256-2];
+-#endif
+ } RC4_KEY;
+
+
+--- openssl097-0.9.7g.orig/crypto/rc4/rc4_skey.c
++++ openssl097-0.9.7g/crypto/rc4/rc4_skey.c
+@@ -94,10 +94,6 @@
+ unsigned int i;
+
+ d= &(key->data[0]);
+-#if defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
+- /* see crypto/rc4/asm/rc4-ia64.S for further details... */
+- d=(RC4_INT *)(((size_t)(d+255))&~(sizeof(key->data)-1));
+-#endif
+
+ for (i=0; i<256; i++)
+ d[i]=i;
+--- openssl097-0.9.7g.orig/crypto/sha/asm/sha1-ia64.pl
++++ openssl097-0.9.7g/crypto/sha/asm/sha1-ia64.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env perl
++#!/usr/local/bin/perl
+ #
+ # ====================================================================
+ # Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
+--- openssl097-0.9.7g.orig/demos/tunala/configure.in
++++ openssl097-0.9.7g/demos/tunala/configure.in
+@@ -1,4 +1,4 @@
+-dnl Process this file with autoconf to produce a configure script.
++#!/usr/local/bin/perl
+ AC_INIT(tunala.c)
+ AM_CONFIG_HEADER(config.h)
+ AM_INIT_AUTOMAKE(tunala, 0.0.1-dev)
+--- openssl097-0.9.7g.orig/doc/apps/CA.pl.pod
++++ openssl097-0.9.7g/doc/apps/CA.pl.pod
+@@ -47,7 +47,7 @@
+ creates a new certificate request. The private key and request are
+ written to the file "newreq.pem".
+
+-=item B<-newreq-nowdes>
++=item B<-newreq-nodes>
+
+ is like B<-newreq> except that the private key will not be encrypted.
+
+--- openssl097-0.9.7g.orig/doc/Makefile
++++ openssl097-0.9.7g/doc/Makefile
+@@ -0,0 +1,40 @@
++VERSION =
++
++#PODS = $(wildcard *.pod)
++#MANS = $(addsuffix .man, $(basename $(PODS)))
++
++MANS = openssl.1 ssl.3 crypto.3
++
++P2M = pod2man --center='OpenSSL Documentation' --release="OpenSSL $(VERSION)"
++
++all: manpages
++
++.PHONY: manpages
++
++manpages: openssl.1 crypto.3 ssl.3
++
++openssl.1:
++ $(P2M) --section=1 openssl.pod > openssl.1
++
++crypto.3:
++ $(P2M) --section=3 crypto.pod > crypto.3
++
++ssl.3:
++ $(P2M) --section=3 ssl.pod > ssl.3
++
++.PHONY: install
++install:
++ mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man1
++ mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
++ install -m 644 -p openssl.1 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man1
++ install -m 644 -p crypto.3 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
++ install -m 644 -p ssl.3 $(INSTALL_PREFIX)$(INSTALLTOP)/share/man/man3
++ rm -f $(MANS)
++
++.PHONY: clean
++clean:
++ rm -f $(MANS)
++
++.PHONY: realclean
++realclean:
++ -$(MAKE) clean
+--- openssl097-0.9.7g.orig/Makefile
++++ openssl097-0.9.7g/Makefile
+@@ -11,11 +11,11 @@
+ SHLIB_VERSION_HISTORY=
+ SHLIB_MAJOR=0
+ SHLIB_MINOR=9.7
+-SHLIB_EXT=
+-PLATFORM=dist
+-OPTIONS= no-krb5
+-CONFIGURE_ARGS=dist
+-SHLIB_TARGET=
++SHLIB_EXT=.so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
++PLATFORM=debian-i386
++OPTIONS=--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib-dynamic debug no-krb5
++CONFIGURE_ARGS=--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib-dynamic debug debian-i386
++SHLIB_TARGET=linux-shared
+
+ # HERE indicates where this Makefile lives. This can be used to indicate
+ # where sub-Makefiles are expected to be. Currently has very limited usage,
+@@ -26,10 +26,10 @@
+ # for, say, /usr/ and yet have everything installed to /tmp/somedir/usr/.
+ # Normally it is left empty.
+ INSTALL_PREFIX=
+-INSTALLTOP=/usr/local/ssl
++INSTALLTOP=/usr
+
+ # Do not edit this manually. Use Configure --openssldir=DIR do change this!
+-OPENSSLDIR=/usr/local/ssl
++OPENSSLDIR=/usr/lib/ssl
+
+ # NO_IDEA - Define to build without the IDEA algorithm
+ # NO_RC4 - Define to build without the RC4 algorithm
+@@ -59,12 +59,13 @@
+ # equal 4.
+ # PKCS1_CHECK - pkcs1 tests.
+
+-CC= cc
++#TOP=$(shell pwd)
++CC= gcc
+ #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
+-CFLAG= -DOPENSSL_NO_KRB5 -O
+-DEPFLAG=
++CFLAG= -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DL_ENDIAN -DTERMIO -O3 -Wall -g
++DEPFLAG= -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5
+ PEX_LIBS=
+-EX_LIBS=
++EX_LIBS= -ldl
+ EXE_EXT=
+ ARFLAGS=
+ AR=ar $(ARFLAGS) r
+@@ -72,7 +73,7 @@
+ PERL= /usr/bin/perl
+ TAR= tar
+ TARFLAGS= --no-recursion
+-MAKEDEPPROG=makedepend
++MAKEDEPPROG= gcc
+
+ # We let the C compiler driver to take care of .s files. This is done in
+ # order to be excused from maintaining a separate set of architecture
+@@ -177,13 +178,13 @@
+ # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
+ SHLIB_MARK=
+
+-DIRS= crypto fips ssl $(SHLIB_MARK) sigs apps test tools
++DIRS= crypto fips ssl $(SHLIB_MARK) sigs apps doc tools
+ SHLIBDIRS= crypto ssl
+
+ # dirs in crypto to build
+ SDIRS= objects \
+- md2 md4 md5 sha mdc2 hmac ripemd \
+- des rc2 rc4 rc5 idea bf cast \
++ md2 md4 md5 sha hmac ripemd \
++ des rc2 rc4 bf cast \
+ bn ec rsa dsa dh dso engine aes \
+ buffer bio stack lhash rand err \
+ evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5
+@@ -196,10 +197,10 @@
+
+ MAKEFILE= Makefile
+
+-MANDIR=$(OPENSSLDIR)/man
++MANDIR=/usr/share/man
+ MAN1=1
+ MAN3=3
+-MANSUFFIX=
++MANSUFFIX=ssl
+ SHELL=/bin/sh
+
+ TOP= .
+@@ -211,7 +212,7 @@
+ SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
+ SHARED_SSL=libssl$(SHLIB_EXT)
+ SHARED_LIBS=
+-SHARED_LIBS_LINK_EXTS=
++SHARED_LIBS_LINK_EXTS=.so
+ SHARED_LDFLAGS=
+
+ GENERAL= Makefile
+@@ -826,7 +827,7 @@
+ do \
+ if [ -f "$$i" ]; then \
+ ( echo installing $$i; \
+- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
++ cp -d $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+ if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
+ : ; \
+ else \
+--- openssl097-0.9.7g.orig/Makefile.org
++++ openssl097-0.9.7g/Makefile.org
+@@ -57,6 +57,7 @@
+ # equal 4.
+ # PKCS1_CHECK - pkcs1 tests.
+
++#TOP=$(shell pwd)
+ CC= gcc
+ #CFLAG= -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -Wuninitialized -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
+ CFLAG= -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM
+@@ -175,7 +176,7 @@
+ # we might set SHLIB_MARK to '$(SHARED_LIBS)'.
+ SHLIB_MARK=
+
+-DIRS= crypto fips ssl $(SHLIB_MARK) sigs apps test tools
++DIRS= crypto fips ssl $(SHLIB_MARK) sigs apps doc tools
+ SHLIBDIRS= crypto ssl
+
+ # dirs in crypto to build
+@@ -194,10 +195,10 @@
+
+ MAKEFILE= Makefile
+
+-MANDIR=$(OPENSSLDIR)/man
++MANDIR=/usr/share/man
+ MAN1=1
+ MAN3=3
+-MANSUFFIX=
++MANSUFFIX=ssl
+ SHELL=/bin/sh
+
+ TOP= .
+@@ -824,7 +825,7 @@
+ do \
+ if [ -f "$$i" ]; then \
+ ( echo installing $$i; \
+- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
++ cp -d $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \
+ if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h > /dev/null; then \
+ : ; \
+ else \
+--- openssl097-0.9.7g.orig/os2/backwardify.pl
++++ openssl097-0.9.7g/os2/backwardify.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl -w
++#!/usr/local/bin/perl
+ use strict;
+
+ # Use as $0
+--- openssl097-0.9.7g.orig/ssl/s23_srvr.c
++++ openssl097-0.9.7g/ssl/s23_srvr.c
+@@ -528,9 +528,7 @@
+ }
+
+ s->state=SSL2_ST_GET_CLIENT_HELLO_A;
+- if ((s->options & SSL_OP_MSIE_SSLV2_RSA_PADDING) ||
+- use_sslv2_strong ||
+- (s->options & SSL_OP_NO_TLSv1 && s->options & SSL_OP_NO_SSLv3))
++ if (s->options & SSL_OP_NO_TLSv1 && s->options & SSL_OP_NO_SSLv3)
+ s->s2->ssl2_rollback=0;
+ else
+ /* reject SSL 2.0 session if client supports SSL 3.0 or TLS 1.0
+--- openssl097-0.9.7g.orig/ssl/ssl_algs.c
++++ openssl097-0.9.7g/ssl/ssl_algs.c
+@@ -109,3 +109,8 @@
+ return(1);
+ }
+
++#undef SSLeay_add_ssl_algorithms
++int SSLeay_add_ssl_algorithms(void)
++ {
++ return SSL_library_init();
++ }
+--- openssl097-0.9.7g.orig/tools/c_rehash
++++ openssl097-0.9.7g/tools/c_rehash
+@@ -6,7 +6,7 @@
+
+ my $openssl;
+
+-my $dir = "/usr/local/ssl";
++my $dir = "/usr/lib/ssl";
+
+ if(defined $ENV{OPENSSL}) {
+ $openssl = $ENV{OPENSSL};
+--- openssl097-0.9.7g.orig/tools/c_rehash.in
++++ openssl097-0.9.7g/tools/c_rehash.in
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl
++#!/usr/bin/perl
+
+
+ # Perl c_rehash script, scan all files in a directory
+--- openssl097-0.9.7g.orig/util/clean-depend.pl
++++ openssl097-0.9.7g/util/clean-depend.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl -w
++#!/usr/local/bin/perl
+ # Clean the dependency list in a makefile of standard includes...
+ # Written by Ben Laurie <ben@algroup.co.uk> 19 Jan 1999
+
+--- openssl097-0.9.7g.orig/util/extract-names.pl
++++ openssl097-0.9.7g/util/extract-names.pl
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl
++#!/usr/local/bin/perl
+
+ $/ = ""; # Eat a paragraph at once.
+ while(<STDIN>) {
+--- openssl097-0.9.7g.orig/util/mkdef.pl
++++ openssl097-0.9.7g/util/mkdef.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl -w
++#!/usr/local/bin/perl
+ #
+ # generate a .def file
+ #
+--- openssl097-0.9.7g.orig/util/mkerr.pl
++++ openssl097-0.9.7g/util/mkerr.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl -w
++#!/usr/local/bin/perl
+
+ my $config = "crypto/err/openssl.ec";
+ my $debug = 0;
+--- openssl097-0.9.7g.orig/util/mkstack.pl
++++ openssl097-0.9.7g/util/mkstack.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl -w
++#!/usr/local/bin/perl
+
+ # This is a utility that searches out "DECLARE_STACK_OF()"
+ # declarations in .h and .c files, and updates/creates/replaces
+--- openssl097-0.9.7g.orig/util/pod2man.pl
++++ openssl097-0.9.7g/util/pod2man.pl
+@@ -1,4 +1,4 @@
+-: #!/usr/bin/perl-5.005
++#!/usr/local/bin/perl
+ eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+--- openssl097-0.9.7g.orig/util/selftest.pl
++++ openssl097-0.9.7g/util/selftest.pl
+@@ -1,4 +1,4 @@
+-#!/usr/local/bin/perl -w
++#!/usr/local/bin/perl
+ #
+ # Run the test suite and generate a report
+ #
+--- openssl097-0.9.7g.orig/VMS/VMSify-conf.pl
++++ openssl097-0.9.7g/VMS/VMSify-conf.pl
+@@ -1,4 +1,4 @@
+-#! /usr/bin/perl
++#!/usr/local/bin/perl
+
+ use strict;
+ use warnings;
+--- openssl097-0.9.7g.orig/debian/po/sv.po
++++ openssl097-0.9.7g/debian/po/sv.po
+@@ -0,0 +1,61 @@
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++# Developers do not need to manually edit POT or PO files.
++# , fuzzy
++#
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl 0.9.7g-2\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2005-09-28 19:22-0700\n"
++"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
++"Language-Team: Swedish <sv@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=iso-8859-1\n"
++"Content-Transfer-Encoding: 8bit"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "Vilka tjänster ska startas om för att få dom att använda de nya biblioteken?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Säkerhetshålen fixades i denna versionen. Tjänster kommer inte att använda denna version förrän de har startats om. Notera: startar du om sshd kommer inte fixen aktiveras för redan etablerade anslutningar."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"Följande är en lista på upptäcka tjänster som behöver startas om. Vänligen undersök listan och du tror den är felaktig. Namnen på tjänsterna måste vara identiska som skriptnamnen i /etc/init.d och måste separeras med mellanslag. Om du rensar listan kommer inga tjänster att startas om."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Om andra tjänster börjar att få underliga problem efter denna uppgradering kanske de måste startas om också. Vi rekommenderar att du startar om din maskin för att inte få SSL-relaterade problem."
++
+--- openssl097-0.9.7g.orig/debian/po/templates.pot
++++ openssl097-0.9.7g/debian/po/templates.pot
+@@ -0,0 +1,59 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
++"Language-Team: LANGUAGE <LL@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=CHARSET\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr ""
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
+--- openssl097-0.9.7g.orig/debian/po/ca.po
++++ openssl097-0.9.7g/debian/po/ca.po
+@@ -0,0 +1,59 @@
++# openssl (debconf) translation to Catalan.
++# Copyright (C) 2004 Free Software Foundation, Inc.
++# Aleix Badia i Bosch <abadia@ica.es>, 2004
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl_0.9.7d-1_templates\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-04-08 19:46GMT\n"
++"Last-Translator: Aleix Badia i Bosch <abadia@ica.es>\n"
++"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr ""
++"Quina serveis s'han de reiniciar perquè utilitzin les noves biblioteques?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Aquesta versió resol els errors de seguretat. Els serveis no utilitzaran les "
++"correccions fins que no s'hagin reiniciat. Nota: reiniciant l'sshd no "
++"s'afectarà cap connexió existent."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"És una llista de serveis que s'ha detectat que s'haurien de reiniciar, "
++"corregiu-la si és incorrecta. El nom dels serveis hauria de ser idèntic als "
++"noms de les seqüències del directori /etc/init.d i haurien d'estar separats "
++"per espais. Si suprimiu la llista no es reiniciarà cap servei."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Si després de l'actualització d'altres serveis fallen de forma inexplicable, "
++"probablement també sigui necessari reiniciar-los. Us recomanem que per "
++"evitar els problemes relacionats amb l'SSL reinicieu l'ordinador."
+--- openssl097-0.9.7g.orig/debian/po/da.po
++++ openssl097-0.9.7g/debian/po/da.po
+@@ -0,0 +1,70 @@
++# translation of openssl_0.9.7d-1_templates.po to Danish
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
++# Developers do not need to manually edit POT or PO files.
++# Claus Hindsgaul <claus_h@image.dk>, 2004.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl_0.9.7d-1_templates\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-04-02 16:08+0200\n"
++"Last-Translator: Claus Hindsgaul <claus_h@image.dk>\n"
++"Language-Team: Danish <dansk@klid.dk>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-1\n"
++"Content-Transfer-Encoding: 8bit\n"
++"X-Generator: KBabel 1.3.1\n"
++"Plural-Forms: nplurals=2; plural=(n != 1);\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "Hvilke services skal genstartes, så de benytter de nye biblioteker?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Der lukket nogle sikkerhedshuller i denne version af openssl. Disse huller "
++"bliver ikke lukket i dine services før de er blevet genstartet. Bemærk at "
++"det ikke vil påvirke eksisterende forbindelser at genstarte ssh."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"Herunder ser du en liste over fundne services, som bør genstartes. Ret "
++"listen, hvis du mener at den ikke er korrekt. Servicenavnene skal være "
++"identiske med skriptnavnene i /etc/init.d, og skal adskilles med mellemrum. "
++"Hvis du sletter listen, vil ingen services blive genstartet."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Hvis andre services begynder at fejle på mystisk vis efter denne "
++"opgradering, kan det være nødvendigt også at genstarte disse. Vi anbefaler "
++"dig kraftigt at genstarte din maskine for at undgå SSL-relaterede problemer."
+--- openssl097-0.9.7g.orig/debian/po/cs.po
++++ openssl097-0.9.7g/debian/po/cs.po
+@@ -0,0 +1,68 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-09-26 17:40+0200\n"
++"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
++"Language-Team: Czech <provoz@debian.cz>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-2\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "Které slu¾by se mají restartovat, aby zaèaly vyu¾ívat nové knihovny?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"V této verzi balíku byly opraveny bezbeènostní chyby. Tyto opravy se v "
++"programech projeví a¾ po jejich restartu. Poznámka: restart sshd by nemìl "
++"ovlivnit stávající spojení."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"Následuje seznam rozpoznaných slu¾eb, které je tøeba restartovat. Pokud se "
++"vám zdá, ¾e je tento seznam chybný, mù¾ete jej opravit. Názvy slu¾eb musí "
++"být shodné s názvy skriptù v adresáøi /etc/init.d a musí být oddìleny "
++"mezerami. Pokud seznam vyma¾ete, nebude restartována ¾ádná slu¾ba."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Jestli¾e po této aktualizaci zaènou selhávat nìkteré slu¾by, mo¾ná bude "
++"nutné je takté¾ restartovat. Abyste se vyhnuli problémùm spojených se SSL, "
++"doporuèujeme restartovat celý poèítaè."
+--- openssl097-0.9.7g.orig/debian/po/pt_BR.po
++++ openssl097-0.9.7g/debian/po/pt_BR.po
+@@ -0,0 +1,69 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-04-04 15:21-0300\n"
++"Last-Translator: André Luís Lopes <andrelop@debian.org>\n"
++"Language-Team: Debian-BR Project <debian-l10n-portuguese@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-1\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "Quais serviços devem ser reiniciados para utilizar novas bibliotecas ?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Falhas de segurança foram corrigidas nesta versão. Alguns serviços podem não "
++"utilizar estas correções até que sejam reiniciados. Note : reiniciar o sshd "
++"não afetará nenhuma conexão já estabelecida."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"A seguir será exibida uma lista de serviços que foram detectados e que "
++"precisam ser reiniciados. Por favor, corrija a lista caso você tenha certeza "
++"que ela esteja incorreta. Os nomes dos serviços devem ser idênticos aos "
++"nomes dos scripts sob o diretório /etc/init.d e devem estar separados por "
++"espaços. Caso você esvazie a lista, nenhum serviço será reiniciado."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Caso outros serviços comecem a falhar misteriosamente após esta atualização, "
++"pode ser necessário reiniciá-los também. Recomendados fortemente que você "
++"reinicie sua máquina para evitar problemas relacionados a SSL."
+--- openssl097-0.9.7g.orig/debian/po/es.po
++++ openssl097-0.9.7g/debian/po/es.po
+@@ -0,0 +1,85 @@
++# openssl translation to spanish
++# Copyright (C) 2004 Software in the Public Interest
++# This file is distributed under the same license as the openssl package.
++#
++# Changes:
++# - Initial translation
++# Lucas Wall <kthulhu@kadath.com.ar>, 2004
++#
++#
++# Traductores, si no conoce el formato PO, merece la pena leer la
++# documentación de gettext, especialmente las secciones dedicadas a este
++# formato, por ejemplo ejecutando:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Equipo de traducción al español, por favor lean antes de traducir
++# los siguientes documentos:
++#
++# - El proyecto de traducción de Debian al español
++# http://www.debian.org/intl/spanish/coordinacion
++# especialmente las notas de traducción en
++# http://www.debian.org/intl/spanish/notas
++#
++# - La guía de traducción de po's de debconf:
++# /usr/share/doc/po-debconf/README-trans
++# o http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl 0.9.7d-3\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-06-12 15:23-0300\n"
++"Last-Translator: Lucas Wall <kthulhu@kadath.com.ar>\n"
++"Language-Team: Debian Spanish <debian-l10n-spanish@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-15\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr ""
++"¿Qué servicios desea reiniciar para que utilicen las nuevas bibliotecas?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"En esta versión se han solucionado problemas de seguridad. Los servicios "
++"afectados no gozarán de los arreglos hasta que no se hayan reiniciado. Nota: "
++"reiniciar el servicio «sshd» no afectará ninguna de las conexiones "
++"existentes."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"Una lista de los servicios que deben ser reiniciados se presenta a "
++"continuación. Si cree que no es correcta haga los ajustes necesarios. Los "
++"nombres de los servicios deben ser iguales a los nombres de los ficheros en "
++"«/etc/init.d» y debe estar separados por espacios. Ningún servicio será "
++"reiniciado si deja la lista en blanco."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Si, tras esta actualización, otros servicios comienzan a fallar en forma "
++"misteriosa puede ser necesario reiniciarlos también. Para evitar problemas "
++"relacionados con «SSL» se le recomienda reiniciar su sistema."
+--- openssl097-0.9.7g.orig/debian/po/fr.po
++++ openssl097-0.9.7g/debian/po/fr.po
+@@ -0,0 +1,69 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
++# Developers do not need to manually edit POT or PO files.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl_0.9.7c-5\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2003-10-22 21:37+0200\n"
++"Last-Translator: Michel Grentzinger <mic.grentz@online.fr>\n"
++"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-15\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "Services à redémarrer afin d'utiliser les nouvelles bibliothèques"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Des failles de sécurité on été corrigées dans cette version. Les services ne "
++"devraient pas utiliser ces correctifs tant qu'ils n'auront pas été "
++"redémarrés. Note : le redémarrage de sshd n'affectera aucune connexion "
++"existante."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"La liste suivante recense tous les services devant être redémarrés. Veuillez "
++"corriger la liste si vous pensez qu'elle contient des erreurs. Les noms des "
++"services doivent être identiques aux noms des scripts présents dans /etc/"
++"init.d et doivent être séparés par des espaces. Si vous effacez la liste, "
++"aucun service ne sera redémarré."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Si d'autres services ne fonctionnent plus correctement après cette mise à "
++"jour, il est sans doute nécessaire de les redémarrer de la même façon. Il "
++"est fortement recommandé de redémarrer votre machine pour éviter les "
++"problèmes liés à SSL."
+--- openssl097-0.9.7g.orig/debian/po/nl.po
++++ openssl097-0.9.7g/debian/po/nl.po
+@@ -0,0 +1,71 @@
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl 0.9.7d-5\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-08-01 18:31+0100\n"
++"Last-Translator: Luk Claes <luk.claes@ugent.be>\n"
++"Language-Team: Debian l10n Dutch <debian-l10n-dutch@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=iso-8859-1\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr ""
++"Welke diensten moeten herstart worden om ze de nieuwe bibliotheken te laten "
++"gebruiken?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Er zijn veiligheidslekken gedicht in deze release. Diensten gebruiken deze "
++"versie misschien niet totdat ze herstart zijn. Merk op: sshd herstarten zou "
++"geen effect mogen hebben op bestaande verbindingen."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"Hierna volgt een lijst van gedetecteerde diensten die herstart moeten "
++"worden. Verbeter de lijst, als u denkt dat ze incorrect is. De namen moeten "
++"overeenkomen met de script-namen in /etc/init.d en moeten gescheiden worden "
++"door spaties. Als u de lijst ledigt, dan zullen er geen diensten worden "
++"herstart."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Als er andere diensten mysterieus beginnen te falen na deze opwaardering, "
++"kan het nodig zijn om ze ook te herstarten. Er wordt u ten zeerste "
++"aanbevolen uw machine te herstarten om SSL-gerelateerde problemen te "
++"vermijden."
+--- openssl097-0.9.7g.orig/debian/po/ja.po
++++ openssl097-0.9.7g/debian/po/ja.po
+@@ -0,0 +1,69 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl 0.9.7d-1\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2004-03-24 23:41+0900\n"
++"Last-Translator: Hideki Yamane <henrich@samba.gr.jp>\n"
++"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=EUC-JP\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "¤É¤Î¥µ¡¼¥Ó¥¹¤ò¿·¤·¤¤¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤¿¤á¤ËºÆµ¯Æ°¤·¤Þ¤¹¤«?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"º£²ó¤Î¥ê¥ê¡¼¥¹¤Ç¥»¥­¥å¥ê¥Æ¥£¥Û¡¼¥ë¤¬½¤Àµ¤µ¤ì¤Þ¤·¤¿¡£³Æ¥µ¡¼¥Ó¥¹¤ÏºÆµ¯Æ°¤ò¹Ô¤¦"
++"¤Þ¤Ç¤³¤Î½¤Àµ¤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤Þ¤»¤ó¡£Ãí°Õ: sshd ¤ÎºÆµ¯Æ°¤Ï¸½¾õ¤ÎÀܳ¤Ë"
++"¤Ï²¿¤é±Æ¶Á¤·¤Þ¤»¤ó¡£"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"°Ê²¼¤¬ºÆµ¯Æ°¤¬É¬ÍפÀ¤ÈȽÃǤµ¤ì¤¿¥µ¡¼¥Ó¥¹¤Î¥ê¥¹¥È¤Ç¤¹¡£´Ö°ã¤Ã¤Æ¤¤¤ë¤È»×¤Ã¤¿¤é"
++"½¤Àµ¤·¤Æ¤¯¤À¤µ¤¤¡£¥µ¡¼¥Ó¥¹Ì¾¤Ï /etc/init.d ¤Ë¤¢¤ë¥¹¥¯¥ê¥×¥È¤Î̾Á°¤ò»Ø¤·¡¢¶õÇò"
++"¤Ç¶èÀÚ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥ê¥¹¥È¤¬¶õ¤Î¾ì¹ç¤Ï¡¢¥µ¡¼¥Ó¥¹¤ÎºÆµ¯Æ°¤ÏɬÍפ¢¤ê¤Þ¤»"
++"¤ó¡£"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"¾¤Î¥µ¡¼¥Ó¥¹¤¬¤³¤³¤Ç¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¸å¤Ë²¿¸Î¤«¥¨¥é¡¼¤òµ¯¤³¤·»Ï¤á¤¿¾ì¹ç¡¢¤½"
++"¤ì¤é¤âºÆµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£SSL ´ØÏ¢¤Î¥È¥é¥Ö¥ë¤òÈò¤±¤ë¤¿¤á¤Ë¥Þ¥·¥ó¤òºÆµ¯"
++"ư¤¹¤ë¤Î¤ò¶¯¤¯¤ª´«¤á¤·¤Þ¤¹¡£"
+--- openssl097-0.9.7g.orig/debian/po/POTFILES.in
++++ openssl097-0.9.7g/debian/po/POTFILES.in
+@@ -0,0 +1 @@
++[type: gettext/rfc822deb] libssl0.9.7.templates
+--- openssl097-0.9.7g.orig/debian/po/vi.po
++++ openssl097-0.9.7g/debian/po/vi.po
+@@ -0,0 +1,61 @@
++# Vietnamese translation for openssl.
++# Copyright © 2005 Free Software Foundation, Inc.
++# Clytie Siddall <clytie@riverland.net.au>, 2005.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: openssl 0.9.7g-1\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2004-03-22 18:34+0100\n"
++"PO-Revision-Date: 2005-07-03 12:49+0930\n"
++"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
++"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=utf-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"Plural-Forms: nplurals=1; plural=0\n"
++"X-Generator: LocFactoryEditor 1.2.2\n"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid "Which services should be restarted to make them use the new libraries?"
++msgstr "Äể dùng những thư viên má»›i, cần phải khởi chạy lại dịch vụ nào?"
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Security holes were fixed with this release. Services may not use these "
++"fixes until they are restarted. Note: restarting sshd should not affect any "
++"existing connections."
++msgstr ""
++"Phiên bản phát hành này đã sửa một số lỗ hổng bảo mật rồi. Dịch vụ sẽ dùng "
++"mã đã sửa chỉ sau khi khởi chạy lại thôi. Ghi chú: khởi chạy lại sshd nên "
++"không làm ảnh hưởng đến sá»± kết nối hiện thá»i nào."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"Following is a list of detected services that need to be restarted. Please "
++"correct the list, if you think it is incorrect. The services names must be "
++"identical to the script names in /etc/init.d and must be separated by "
++"spaces. If you clear the list, no services will be restarted."
++msgstr ""
++"Theo đây có một danh sách dịch vụ đã phát hiện mà cần phải khởi chạy lại. "
++"Bạn hãy sửa danh sách nếu chưa đúng. Tên dịch vụ phải là cùng một tên với "
++"tên tập lệnh trong «/etc/init.d», những tên định giới bằng dấu cách. Nếu bạn "
++"xóa hết danh sách thì sẽ không khởi chạy lại dịch vụ nào."
++
++#. Type: string
++#. Description
++#: ../libssl0.9.7.templates:3
++msgid ""
++"If other services begin to fail mysteriously after this upgrade, it may be "
++"necessary to restart them too. We strongly recommend you to reboot your "
++"machine to avoid the SSL related trouble."
++msgstr ""
++"Nếu dịch vụ khác mới bị lỗi một cách lạ sau việc nâng cấp này, có lẽ bạn "
++"cũng cần phải khởi chạy lại chúng. Khuyến khích nặng bạn khởi động máy này "
++"để tránh lỗi liên quan đến SSL."
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7-dev.docs
++++ openssl097-0.9.7g/debian/libssl0.9.7-dev.docs
+@@ -0,0 +1 @@
++demos
+--- openssl097-0.9.7g.orig/debian/control
++++ openssl097-0.9.7g/debian/control
+@@ -0,0 +1,27 @@
++Source: openssl097
++Build-Depends: debhelper (>= 4.2.0), binutils (>= 2.14.90.0.7), zlib1g-dev
++Section: utils
++Priority: optional
++Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
++Uploaders: Christoph Martin <christoph.martin@uni-mainz.de>, Kurt Roeckx <kurt@roeckx.be>
++Standards-Version: 3.6.1
++
++Package: libssl0.9.7
++Section: oldlibs
++Priority: important
++Architecture: any
++Depends: ${shlibs:Depends}, ${misc:Depends}
++Conflicts: ssleay (<< 0.9.2b), libssl, openssl (<< 0.9.6-2), libssl096-dev (<< 0.9.6-2)
++Description: SSL shared libraries
++ libssl and libcrypto shared libraries needed by programs like
++ apache-ssl, telnet-ssl and openssh.
++ .
++ It is part of the OpenSSL implementation of SSL.
++
++Package: libssl0.9.7-dbg
++Section: libdevel
++Priority: extra
++Architecture: any
++Depends: libssl0.9.7 (= ${Source-Version})
++Description: Symbol tables for libssl and libcrypt
++ This package is part of the OpenSSL implementation of SSL.
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7-dev.prerm
++++ openssl097-0.9.7g/debian/libssl0.9.7-dev.prerm
+@@ -0,0 +1,3 @@
++#!/bin/sh -e
++
++#DEBHELPER#
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7-dev.postinst
++++ openssl097-0.9.7g/debian/libssl0.9.7-dev.postinst
+@@ -0,0 +1,3 @@
++#!/bin/sh -e
++
++#DEBHELPER#
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7-dev.files
++++ openssl097-0.9.7g/debian/libssl0.9.7-dev.files
+@@ -0,0 +1,9 @@
++usr/lib/libssl.so
++usr/lib/libcrypto.so
++usr/lib/libssl.a
++usr/lib/libcrypto.a
++usr/lib/libssl_pic.a
++usr/lib/libcrypto_pic.a
++usr/lib/pkgconfig/openssl.pc
++usr/include
++usr/share/man/man3
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7.templates
++++ openssl097-0.9.7g/debian/libssl0.9.7.templates
+@@ -0,0 +1,15 @@
++Template: libssl0.9.7/restart-services
++Type: string
++_Description: Which services should be restarted to make them use the new libraries?
++ Security holes were fixed with this release. Services may not use these
++ fixes until they are restarted. Note: restarting sshd should not affect any
++ existing connections.
++ .
++ Following is a list of detected services that need to be restarted. Please
++ correct the list, if you think it is incorrect. The services names must be
++ identical to the script names in /etc/init.d and must be separated by
++ spaces. If you clear the list, no services will be restarted.
++ .
++ If other services begin to fail mysteriously after this upgrade, it may be
++ necessary to restart them too. We strongly recommend you to reboot your
++ machine to avoid the SSL related trouble.
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7-dev.dirs
++++ openssl097-0.9.7g/debian/libssl0.9.7-dev.dirs
+@@ -0,0 +1,3 @@
++usr/lib
++usr/share/doc/libssl0.9.7-dev
++usr/share/man
+--- openssl097-0.9.7g.orig/debian/README.optimization
++++ openssl097-0.9.7g/debian/README.optimization
+@@ -0,0 +1,32 @@
++openssl ships optimized libraries for some cpus. The loading of these
++libraries depends on the ability of the dynamic linker to automaticly
++search additional directories depending on the cpu. If you want to
++find out which are these directories for your computer, run the
++following command:
++
++LD_LIBRARY_PATH=/usr/lib strace true 2>&1 | fgrep "open(\"/usr/lib"
++
++On a Pentium III this gives:
++
++open("/usr/lib/i686/mmx/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
++open("/usr/lib/i686/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
++open("/usr/lib/mmx/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
++open("/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
++
++Following is a list of cpus, library paths and possible optimizations:
++
++486 /usr/lib/i486 -march=i486 -mcpu=i486 +asm
++Pentium /usr/lib/i586 -march=i586 -mcpu=i586 +asm
++Pentium MMX /usr/lib/i586 -march=i586 -mcpu=i586 +asm
++Pentium II /usr/lib/i686 -march=i686 -mcpu=i686 +asm
++Pentium III /usr/lib/i686 -march=i686 -mcpu=i686 +asm
++AMD-K6 /usr/lib/i586 -march=i586 -mcpu=i586 +asm
++AMD-K7 /usr/lib/i686 -march=i686 -mcpu=i686 +asm
++
++Sparc v8 /usr/lib/v8 -mcpu=v8 +asm
++Sparc v9 /usr/lib/v9 -mcpu=v9 -Wa,-Av8plus +asm
++
++Alpha EV4 /usr/lib/ev4 -mcpu=ev4
++Alpha EV5 /usr/lib/ev5 -mcpu=ev5
++
+++asm means that the handcrafted 586 assembler routines can be used.
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7.dirs
++++ openssl097-0.9.7g/debian/libssl0.9.7.dirs
+@@ -0,0 +1,2 @@
++usr/lib
++usr/share/doc/libssl0.9.7
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7.files
++++ openssl097-0.9.7g/debian/libssl0.9.7.files
+@@ -0,0 +1,3 @@
++usr/lib/*.so.*.*.*
++usr/lib/*/*.so.*.*.*
++usr/lib/i686/cmov/*.so.*.*.*
+--- openssl097-0.9.7g.orig/debian/changelog
++++ openssl097-0.9.7g/debian/changelog
+@@ -0,0 +1,689 @@
++openssl097 (0.9.7g-5) unstable; urgency=medium
++
++ * Add the shlibs for libcrypto again, removed by accident.
++ * Change priority of -dbg package to extra.
++ * Remove the libssl0.9.7-dev package.
++ * Add security patch for CAN-2005-2969, setting urgency to medium.
++
++ -- Kurt Roeckx <kurt@roeckx.be> Wed, 12 Oct 2005 21:07:19 +0200
++
++openssl097 (0.9.7g-4) unstable; urgency=low
++
++ * Reintroduce openssl 0.9.7 source package to provide the old
++ library version. This should make packages linked against
++ the old version installable again. (Closes: #332892)
++ * Drop the openssl and libcrypto0.9.7-udeb package.
++ * Rename libssl-dev to libssl0.9.7-dev.
++ * Add myself to the Uploaders field.
++
++ -- Kurt Roeckx <kurt@roeckx.be> Mon, 10 Oct 2005 18:38:30 +0200
++
++openssl (0.9.7g-3) unstable; urgency=low
++
++ * change Configure line for debian-freebsd-i386 to debian-kfreebsd-i386
++ (closes: #327692)
++ * include -dbg version. That implies compiling with -g and without
++ -fomit-frame-pointer (closes: #293823, #153811)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 23 Sep 2005 13:51:57 +0200
++
++openssl (0.9.7g-2) unstable; urgency=low
++
++ * really include nl translation
++ * remove special ia64 code from rc4 code to make the abi compatible to
++ older 0.9.7 versions (closes: #310489, #309274)
++ * fix compile flag for debian-ppc64 (closes: #318750)
++ * small fix in libssl0.9.7.postinst (closes: #239956)
++ * fix pk7_mime.c to prevent garbled messages because of to early memory
++ free (closes: #310184)
++ * include vietnamese debconf translation (closes: #316689)
++ * make optimized i386 libraries have non executable stack (closes:
++ #321721)
++ * remove leftover files from ssleay
++ * move from dh_installmanpages to dh_installman
++ * change Maintainer to pkg-openssl-devel@lists.alioth.debian.org
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 7 Sep 2005 15:32:54 +0200
++
++openssl (0.9.7g-1) unstable; urgency=low
++
++ * New upstream release
++ * Added support for proxy certificates according to RFC 3820.
++ Because they may be a security thread to unaware applications,
++ they must be explicitely allowed in run-time. See
++ docs/HOWTO/proxy_certificates.txt for further information.
++ * Prompt for pass phrases when appropriate for PKCS12 input format.
++ * Back-port of selected performance improvements from development
++ branch, as well as improved support for PowerPC platforms.
++ * Add lots of checks for memory allocation failure, error codes to indicate
++ failure and freeing up memory if a failure occurs.
++ * Perform some character comparisons of different types in X509_NAME_cmp:
++ this is needed for some certificates that reencode DNs into UTF8Strings
++ (in violation of RFC3280) and can't or wont issue name rollover
++ certificates.
++ * corrected watchfile
++ * added upstream source url (closes: #292904)
++ * fix typo in CA.pl.1 (closes: #290271)
++ * change debian-powerpc64 to debian-ppc64 and adapt the configure
++ options to be the same like upstream (closes: #289841)
++ * include -signcert option in CA.pl usage
++ * compile with zlib-dynamic to use system zlib (closes: #289872)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 9 May 2005 23:32:03 +0200
++
++openssl (0.9.7e-3) unstable; urgency=high
++
++ * really fix der_chop. The fix from -1 was not really included (closes:
++ #281212)
++ * still fixes security problem CAN-2004-0975 etc.
++ - tempfile raise condition in der_chop
++ - Avoid a race condition when CRLs are checked in a multi threaded
++ environment.
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 16 Dec 2004 18:41:29 +0100
++
++openssl (0.9.7e-2) unstable; urgency=high
++
++ * fix perl path in der_chop and c_rehash (closes: #281212)
++ * still fixes security problem CAN-2004-0975 etc.
++ - tempfile raise condition in der_chop
++ - Avoid a race condition when CRLs are checked in a multi threaded
++ environment.
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sun, 14 Nov 2004 20:16:21 +0100
++
++openssl (0.9.7e-1) unstable; urgency=high
++
++ * SECURITY UPDATE: fix insecure temporary file handling
++ * apps/der_chop:
++ - replaced $$-style creation of temporary files with
++ File::Temp::tempfile()
++ - removed unused temporary file name in do_certificate()
++ * References:
++ CAN-2004-0975 (closes: #278260)
++ * fix ASN1_STRING_to_UTF8 with UTF8 (closes: #260357)
++ * New upstream release with security fixes
++ - Avoid a race condition when CRLs are checked in a multi threaded
++ environment.
++ - Various fixes to s3_pkt.c so alerts are sent properly.
++ - Reduce the chances of duplicate issuer name and serial numbers (in
++ violation of RFC3280) using the OpenSSL certificate creation
++ utilities.
++ * depends openssl on perl-base instead of perl (closes: #280225)
++ * support powerpc64 in Configure (closes: #275224)
++ * include cs translation (closes: #273517)
++ * include nl translation (closes: #272479)
++ * Fix default dir of c_rehash (closes: #253126)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 12 Nov 2004 14:11:15 +0100
++
++openssl (0.9.7d-5) unstable; urgency=low
++
++ * Make S/MIME encrypt work again (backport from CVS) (closes: #241407,
++ #241386)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 26 Jul 2004 17:22:42 +0200
++
++openssl (0.9.7d-4) unstable; urgency=low
++
++ * add Catalan translation (closes: #248749)
++ * add Spanish translation (closes: #254561)
++ * include NMU fixes: see below
++ * decrease optimisation level for debian-arm to work around gcc bug
++ (closes: #253848) (thanks to Steve Langasek and Thom May)
++ * Add libcrypto0.9.7-udeb. (closes: #250010) (thanks to Bastian Blank)
++ * Add watchfile
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 14 Jul 2004 14:31:02 +0200
++
++openssl (0.9.7d-3) unstable; urgency=low
++
++ * rename -pic.a libraries to _pic.a (closes: #250016)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 24 May 2004 17:02:29 +0200
++
++openssl (0.9.7d-2) unstable; urgency=low
++
++ * include PIC libs (libcrypto-pic.a and libssl-pic.a) to libssl-dev
++ (closes: #246928, #243999)
++ * add racoon to restart list (closes: #242652)
++ * add Brazilian, Japanese and Danish translations (closes: #242087,
++ #241830, #241705)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 11 May 2004 10:13:49 +0200
++
++openssl (0.9.7d-1) unstable; urgency=high
++
++ * new upstream
++ * fixes security holes (http://www.openssl.org/news/secadv_20040317.txt)
++ (closes: #238661)
++ * includes support for debian-amd64 (closes: #235551, #232310)
++ * fix typo in pem.pod (closes: #219873)
++ * fix typo in libssl0.9.7.templates (closes: #224690)
++ * openssl suggests ca-certificates (closes: #217180)
++ * change debconf template to gettext format (closes: #219013)
++ * include french debconf template (closes: #219014)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 18 Mar 2004 16:18:43 +0100
++
++openssl (0.9.7c-5) unstable; urgency=low
++
++ * include openssl.pc into libssl-dev (closes: #212545)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 16 Oct 2003 16:31:32 +0200
++
++openssl (0.9.7c-4) unstable; urgency=low
++
++ * change question to restart services to debconf (closes: #214840)
++ * stop using dh_undocumented (closes: #214831)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 10 Oct 2003 15:40:48 +0200
++
++openssl (0.9.7c-3) unstable; urgency=low
++
++ * fix POSIX conformance for head in libssl0.9.7.postinst (closes:
++ #214700)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 8 Oct 2003 14:02:38 +0200
++
++openssl (0.9.7c-2) unstable; urgency=low
++
++ * add filerc macro to libssl0.9.7.postinst (closes: #213906)
++ * restart spamassassins spamd on upgrade (closes: #214106)
++ * restart more services on upgrade
++ * fix EVP_BytesToKey manpage (closes: #213715)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 7 Oct 2003 15:01:32 +0200
++
++openssl (0.9.7c-1) unstable; urgency=high
++
++ * upstream security fix (closes: #213451)
++ - Fix various bugs revealed by running the NISCC test suite:
++ Stop out of bounds reads in the ASN1 code when presented with
++ invalid tags (CAN-2003-0543 and CAN-2003-0544).
++ Free up ASN1_TYPE correctly if ANY type is invalid (CAN-2003-0545).
++ If verify callback ignores invalid public key errors don't try to check
++ certificate signature with the NULL public key.
++ - In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate
++ if the server requested one: as stated in TLS 1.0 and SSL 3.0
++ specifications.
++ * more minor upstream bugfixes
++ * fix formatting in c_issuer (closes: #190026)
++ * fix Debian-FreeBSD support (closes: #200381)
++ * restart some services in postinst to make them use the new libraries
++ * remove duplicated openssl.1, crypto.3 and ssl.3 (closes: #198594)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 1 Oct 2003 08:54:27 +0200
++
++openssl (0.9.7b-2) unstable; urgency=high
++
++ * fix permission of /etc/ssl/private to 700 again
++ * change section of libssl-dev to libdevel
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 23 Apr 2003 11:13:24 +0200
++
++openssl (0.9.7b-1) unstable; urgency=high
++
++ * upstream security fix
++ - Countermeasure against the Klima-Pokorny-Rosa extension of
++ Bleichbacher's attack on PKCS #1 v1.5 padding: treat
++ a protocol version number mismatch like a decryption error
++ in ssl3_get_client_key_exchange (ssl/s3_srvr.c). (CAN-2003-0131)
++ (closes: #189087)
++ - Turn on RSA blinding by default in the default implementation
++ to avoid a timing attack. Applications that don't want it can call
++ RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING.
++ They would be ill-advised to do so in most cases. (CAN-2003-0147)
++ - Change RSA blinding code so that it works when the PRNG is not
++ seeded (in this case, the secret RSA exponent is abused as
++ an unpredictable seed -- if it is not unpredictable, there
++ is no point in blinding anyway). Make RSA blinding thread-safe
++ by remembering the creator's thread ID in rsa->blinding and
++ having all other threads use local one-time blinding factors
++ (this requires more computation than sharing rsa->blinding, but
++ avoids excessive locking; and if an RSA object is not shared
++ between threads, blinding will still be very fast).
++ for more details see the CHANGES file
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 16 Apr 2003 10:32:57 +0200
++
++openssl (0.9.7a-1) unstable; urgency=high
++
++ * upstream Security fix
++ - In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked
++ via timing by performing a MAC computation even if incorrrect
++ block cipher padding has been found. This is a countermeasure
++ against active attacks where the attacker has to distinguish
++ between bad padding and a MAC verification error. (CAN-2003-0078)
++ for more details see the CHANGES file
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 21 Feb 2003 22:39:40 +0100
++
++openssl (0.9.7-4) unstable; urgency=low
++
++ * use DH_COMPAT=3 to build
++ * move i686 to i686/cmov to fix problems on Via C3. For that to work we
++ have to depend on the newest libc6 on i386 (closes: #177891)
++ * fix bug in ui_util.c (closes: #177615)
++ * fix typo in md5.h (closes: #178112)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 24 Jan 2003 10:22:56 +0100
++
++openssl (0.9.7-3) unstable; urgency=low
++
++ * enable build of ultrasparc code on non ultrasparc machines (closes:
++ #177024)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 17 Jan 2003 08:22:13 +0100
++
++openssl (0.9.7-2) unstable; urgency=low
++
++ * include changes between 0.9.6g-9 and -10
++ * fix problem in build-process on i386 with libc6 version number
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 13 Jan 2003 14:26:56 +0100
++
++openssl (0.9.7-1) unstable; urgency=low
++
++ * new upstream
++ * includes engine support
++ * a lot of bugfixes and enhancements, see the CHANGES file
++ * include AES encryption
++ * makes preview of certificate configurable (closes: #176059)
++ * fix x509 manpage (closes: #168070)
++ * fix declaration of ERR_load_PEM_string in pem.h (closes: #141360)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 11 Jan 2003 09:12:16 +0100
++
++openssl (0.9.6g-10) unstable; urgency=low
++
++ * fix problem in build-process on i386 with libc6 version number
++ (closes: #167096)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 4 Nov 2002 12:27:21 +0100
++
++openssl (0.9.6g-9) unstable; urgency=low
++
++ * fix typo in i386 libc6 depend (sigh) (closes: #163848)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 8 Oct 2002 23:29:20 +0200
++
++openssl (0.9.6g-8) unstable; urgency=low
++
++ * fix libc6 depends. Only needed for i386 (closes: #163701)
++ * remove SHLIB section for bsds from Configure (closes: #163585)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 8 Oct 2002 10:57:35 +0200
++
++openssl (0.9.6g-7) unstable; urgency=low
++
++ * enable i686 optimisation and depend on fixed glibc (closes: #163500)
++ * remove transition package ssleay
++ * include optimisation vor sparcv8 (closes: #139996)
++ * improve optimisation vor sparcv9
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sun, 6 Oct 2002 14:07:12 +0200
++
++openssl (0.9.6g-6) unstable; urgency=low
++
++ * temporarily disable i686 optimisation (See bug in glibc #161788)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 21 Sep 2002 18:56:49 +0200
++
++openssl (0.9.6g-5) unstable; urgency=low
++
++ * i486 can use i586 assembler
++ * include set -xe in the for loops in the rules files to make it abort
++ on error (closes: #161768)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 21 Sep 2002 16:23:11 +0200
++
++openssl (0.9.6g-4) unstable; urgency=low
++
++ * fix optimization for alpha and sparc
++ * add optimization for i486
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 20 Sep 2002 22:36:19 +0200
++
++openssl (0.9.6g-3) unstable; urgency=low
++
++ * add optimized libraries for i586, i686, ev4, ev5 and v9 (closes: #139783)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 19 Sep 2002 18:33:04 +0200
++
++openssl (0.9.6g-2) unstable; urgency=low
++
++ * fix manpage names (closes: #156717, #156718, #156719, #156721)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 15 Aug 2002 11:26:37 +0200
++
++openssl (0.9.6g-1) unstable; urgency=low
++
++ * new upstream version
++ * Use proper error handling instead of 'assertions' in buffer
++ overflow checks added in 0.9.6e. This prevents DoS (the
++ assertions could call abort()). (closes: #155985, #156495)
++ * Fix ASN1 checks. Check for overflow by comparing with LONG_MAX
++ and get fix the header length calculation.
++ * include support for new sh* architectures (closes: #155117)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 14 Aug 2002 13:59:22 +0200
++
++openssl (0.9.6e-1) unstable; urgency=high
++
++ * fixes remote exploits (see DSA-136-1)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 30 Jul 2002 18:32:28 +0200
++
++openssl (0.9.6d-1) unstable; urgency=low
++
++ * new upstream (minor) version
++ * includes Configure lines for debian-*bsd-* (closes: #130413)
++ * fix wrong prototype for BN_pseudo_rand_range in BN_rand(3ssl) (closes:
++ #144586)
++ * fix typos in package description (closes: #141469)
++ * fix typo in SSL_CTX_set_cert_store manpage (closes: #135297)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 3 Jun 2002 19:42:10 +0200
++
++openssl (0.9.6c-2) unstable; urgency=low
++
++ * moved from non-US to main
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 19 Mar 2002 14:48:39 +0100
++
++openssl (0.9.6c-1) unstable; urgency=low
++
++ * new upstream version with a lot of bugfixes
++ * remove directory /usr/include/openssl from openssl package (closes:
++ bug #121226)
++ * remove selfdepends from libssl0.9.6
++ * link openssl binary shared again
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 5 Jan 2002 19:04:31 +0100
++
++openssl (0.9.6b-4) unstable; urgency=low
++
++ * build with -D_REENTRANT for threads support on all architectures
++ (closes: #112329, #119239)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 24 Nov 2001 12:17:51 +0100
++
++openssl (0.9.6b-3) unstable; urgency=low
++
++ * disable idea, mdc2 and rc5 because they are not free (closes: #65368)
++ * ready to be moved from nonus to main
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 21 Nov 2001 17:51:41 +0100
++
++openssl (0.9.6b-2) unstable; urgency=high
++
++ * fix definition of crypt in des.h (closes: #107533)
++ * fix descriptions (closes: #109503)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 17 Sep 2001 15:38:27 +0200
++
++openssl (0.9.6b-1) unstable; urgency=medium
++
++ * new upstream fixes some security issues (closes: #105835, #100146)
++ * added support for s390 (closes: #105681)
++ * added support for sh (closes: #100003)
++ * change priority of libssl096 to standard as ssh depends on it (closes:
++ #105440)
++ * don't optimize for i486 to support i386. (closes: #104127, #82194)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 20 Jul 2001 15:52:42 +0200
++
++openssl (0.9.6a-3) unstable; urgency=medium
++
++ * add perl-base to builddeps
++ * include static libraries in libssl-dev (closes: #93688)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 14 May 2001 20:16:06 +0200
++
++openssl (0.9.6a-2) unstable; urgency=medium
++
++ * change Architecture of ssleay from any to all (closes: #92913)
++ * depend libssl-dev on the exact same version of libssl0.9.6 (closes:
++ #88939)
++ * remove lib{crypto,ssl}.a from openssl (closes: #93666)
++ * rebuild with newer gcc to fix atexit problem (closes: #94036)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 2 May 2001 12:28:39 +0200
++
++openssl (0.9.6a-1) unstable; urgency=medium
++
++ * new upstream, fixes some security bugs (closes: #90584)
++ * fix typo in s_server manpage (closes: #89756)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 10 Apr 2001 12:13:11 +0200
++
++openssl (0.9.6-2) unstable; urgency=low
++
++ * policy: reorganisation of package names: libssl096 -> libssl0.9.6,
++ libssl096-dev -> libssl-dev (closes: #83426)
++ * libssl0.9.6 drops replaces libssl09 (Closes: #83425)
++ * install upstream CHANGES files (Closes: #83430)
++ * added support for hppa and ia64 (Closes: #88790)
++ * move man3 manpages to libssl-dev (Closes: #87546)
++ * fix formating problem in rand_add(1) (Closes: #87547)
++ * remove manpage duplicates (Closes: #87545, #74986)
++ * make package descriptions clearer (Closes: #83518, #83444)
++ * increase default emailAddress_max from 40 to 60 (Closes: #67238)
++ * removed RSAREF warning (Closes: #84122)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 8 Mar 2001 14:24:00 +0100
++
++openssl (0.9.6-1) unstable; urgency=low
++
++ * New upstream version (Thanks to Enrique Zanardi <ezanard@debian.org>)
++ (closes: #72388)
++ * Add support for debian-hurd (closes: #76032)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 13 Nov 2000 22:30:46 +0100
++
++openssl (0.9.5a-5) unstable; urgency=low
++
++ * move manpages in standard directories with section ssl (closes:
++ #72152, #69809)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 5 Oct 2000 19:56:20 +0200
++
++openssl (0.9.5a-4) unstable; urgency=low
++
++ * include edg_rand_bytes patch from and for apache-ssl
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 23 Sep 2000 16:48:06 +0200
++
++openssl (0.9.5a-3) unstable; urgency=low
++
++ * fix call to dh_makeshlibs to create correct shlibs file and make
++ dependend programs link correctly (closes: Bug#61658)
++ * include a note in README.debian concerning the location of the
++ subcommand manpages (closes: Bug#69809)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 16 Sep 2000 19:10:50 +0200
++
++openssl (0.9.5a-2) unstable; urgency=low
++
++ * try to fix the sharedlib problem. change soname of library
++ (closes: Bug#4622, #66102, #66538, #66123)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 12 Jul 2000 03:26:30 +0200
++
++openssl (0.9.5a-1) unstable; urgency=low
++
++ * new upstream version (major changes see file NEWS) (closes: Bug#63976,
++ #65239, #65358)
++ * new library package libssl095a because of probably changed library
++ interface (closes: Bug#46222)
++ * added architecture mips and mipsel (closes: Bug#62437, #60366)
++ * provide shlibs.local file in build to help build if libraries are not
++ yet installed (closes: Bug#63984)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sun, 11 Jun 2000 15:17:35 +0200
++
++openssl (0.9.4-5) frozen unstable; urgency=medium
++
++ * cleanup of move of doc directories to /usr/share/doc (closes:
++ Bug#56430)
++ * lintian issues (closes: Bug#49358)
++ * move demos from openssl to libssl09-dev (closes: Bug#59201)
++ * move to debhelpers
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 11 Mar 2000 10:38:04 +0100
++
++openssl (0.9.4-4) unstable; urgency=medium
++
++ * Added 'debian-arm' in 'Configure'. (closes: Bug#54251, #54766)
++ * Fixed Configure for 'debian-m68k' (closes: Bug#53636)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 15 Jan 2000 13:16:18 +0100
++
++openssl (0.9.4-3) unstable; urgency=low
++
++ * define symbol SSLeay_add_ssl_algorithms for backward compatibility
++ (closes: Bug#46882)
++ * remove manpages from /usr/doc/openssl (closes: Bug#46791)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 14 Oct 1999 16:51:08 +0200
++
++openssl (0.9.4-2) unstable; urgency=low
++
++ * include some more docu in pod format (Bug #43933)
++ * removed -mv8 from sparc flags (Bug #44769)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 14 Sep 1999 22:04:06 +0200
++
++openssl (0.9.4-1) unstable; urgency=low
++
++ * new upstream version (Closes: #42926)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sat, 28 Aug 1999 17:04:23 +0200
++
++openssl (0.9.3a-1) unstable; urgency=low
++
++ * new upstream version (Bug #38345, #38627)
++ * sparc is big-endian (Bug #39973)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 7 Jul 1999 16:03:37 +0200
++
++openssl (0.9.2b-3) unstable; urgency=low
++
++ * correct move conffiles to /etc/ssl (Bug #38570)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 31 May 1999 21:08:07 +0200
++
++openssl (0.9.2b-2) unstable; urgency=low
++
++ * added convenience package ssleay to help upgrade to openssl (Bug
++ #37185, #37623, #36326)
++ * added some missing dependencies from libssl09 (Bug #36681, #35867,
++ #36326)
++ * move lib*.so to libssl09-dev (Bug #36761)
++ * corrected version numbers of library files
++ * introduce link from /usr/lib/ssl to /etc/ssl (Bug #36710)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sun, 23 May 1999 14:57:48 +0200
++
++openssl (0.9.2b-1) unstable; urgency=medium
++
++ * First openssl version
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 31 Mar 1999 15:54:26 +0200
++
++ssleay (0.9.0b-2) unstable; urgency=low
++
++ * Include message about the (not)usage of RSAREF (#24409)
++ * Move configfiles from /usr/lib/ssl to /etc/ssl (#26406)
++ * Change definitions for sparc (#26487)
++ * Added missing dependency (#28591)
++ * Make debian/libtool executable (#29708)
++ * /etc/ssl/lib/ssleay.cnf is now a confile (#32624)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Sun, 21 Mar 1999 19:41:04 +0100
++
++ssleay (0.9.0b-1) unstable; urgency=low
++
++ * new upstream version (Bug #21227, #25971)
++ * build shared libraries with -fPIC (Bug #20027)
++ * support sparc architecture (Bug #28467)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 13 Oct 1998 10:20:13 +0200
++
++ssleay (0.8.1-7) frozen unstable; urgency=high
++
++ * security fix patch to 0.8.1b (bug #24022)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 6 Jul 1998 15:42:15 +0200
++
++ssleay (0.8.1-6) frozen unstable; urgency=low
++
++ * second try to fix bug #15235 (copyright was still missing)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Mon, 22 Jun 1998 08:56:27 +0200
++
++ssleay (0.8.1-5) frozen unstable; urgency=high
++
++ * changed /dev/random to /dev/urandom (Bug #23169, #17817)
++ * copyright contains now the full licence (Bug #15235)
++ * fixed bug #19410 (md5sums-lists-nonexisting-file)
++ * added demos to /usr/doc (Bug #17372)
++ * fixed type in package description (Bug #18969)
++ * fixed bug in adding documentation (Bug #21463)
++ * added patch for support of debian-powerpc (Bug #21579)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 18 Jun 1998 23:09:13 +0200
++
++ssleay (0.8.1-4) unstable; urgency=low
++
++ * purged dependency from libc5
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Tue, 11 Nov 1997 15:31:50 +0100
++
++ssleay (0.8.1-3) unstable; urgency=low
++
++ * changed packagename libssl to libssl08 to get better dependancies
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Fri, 7 Nov 1997 14:23:17 +0100
++
++ssleay (0.8.1-2) unstable; urgency=low
++
++ * linked shared libraries against libc6
++ * use /dev/random for randomseed
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 5 Nov 1997 11:21:40 +0100
++
++ssleay (0.8.1-1) unstable; urgency=low
++
++ * new upstream version
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Thu, 16 Oct 1997 16:15:43 +0200
++
++ssleay (0.6.6-2) unstable; urgency=low
++
++ * cleanup in diffs
++ * removed INSTALL from docs (bug #13205)
++ * split libssl and libssl-dev (but #13735)
++
++ -- Christoph Martin <christoph.martin@uni-mainz.de> Wed, 15 Oct 1997 17:38:38 +0200
++
++ssleay (0.6.6-1) unstable; urgency=low
++
++ * New upstream version
++ * added shared libraries for libcrypto and libssl
++
++ -- Christoph Martin <martin@uni-mainz.de> Thu, 26 Jun 1997 19:26:14 +0200
++
++ssleay (0.6.4-2) unstable; urgency=low
++
++ * changed doc filenames from .doc to .txt to be able to read them
++ over with webbrowser
++
++ -- Christoph Martin <martin@uni-mainz.de> Tue, 25 Feb 1997 14:02:53 +0100
++
++ssleay (0.6.4-1) unstable; urgency=low
++
++ * Initial Release.
++
++ -- Christoph Martin <martin@uni-mainz.de> Fri, 22 Nov 1996 21:29:51 +0100
+--- openssl097-0.9.7g.orig/debian/rules
++++ openssl097-0.9.7g/debian/rules
+@@ -0,0 +1,173 @@
++#!/usr/bin/make -f
++# Sample debian.rules file - for GNU Hello (1.3).
++# Copyright 1994,1995 by Ian Jackson.
++# I hereby give you perpetual unlimited permission to copy,
++# modify and relicense this file, provided that you do not remove
++# my name from the file itself. (I assert my moral right of
++# paternity under the Copyright, Designs and Patents Act 1988.)
++# This file may have to be extensively modified
++#
++# Modified to be a prototype for debmake by Christoph Lameter <clameter@debian.org>
++SHELL=/bin/bash
++export DH_COMPAT=3
++
++package=openssl
++
++# For generating the manpages
++export VERSION=$(shell dpkg-parsechangelog | grep '^Version:' | sed -e 's/^.*://' -e 's/-.*//')
++
++# The binary architeture
++DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH)
++
++CONFARGS = --prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib-dynamic debug
++OPT_alpha = ev4 ev5
++OPT_i386 = i486 i586 i686/cmov
++OPT_sparc = v8 v9
++ARCHOPTS = OPT_$(DEB_HOST_ARCH)
++OPTS = $($(ARCHOPTS))
++WANTED_LIBC_VERSION = 2.3.1-10
++
++build:
++ dh_testdir
++ perl util/perlpath.pl /usr/bin
++# perl util/ssldir.pl /usr/lib/ssl
++# chmod +x debian/libtool
++ ./Configure no-shared $(CONFARGS) debian-$(DEB_HOST_ARCH)
++ make -f Makefile DIRS="crypto ssl" all
++ mv libcrypto.a libcrypto.static
++ mv libssl.a libssl.static
++ make -f Makefile DIRS="crypto ssl" clean
++ test -z "$(OPTS)" || for opt in $(OPTS); \
++ do \
++ set -xe; \
++ ./Configure shared $(CONFARGS) debian-$(DEB_HOST_ARCH)-$$opt; \
++ make -f Makefile DIRS="crypto ssl" all; \
++ mkdir -p $$opt; \
++ mv libcrypto.so* libssl.so* $$opt/; \
++ make -f Makefile DIRS="crypto ssl" clean; \
++ done
++ ./Configure shared $(CONFARGS) debian-$(DEB_HOST_ARCH)
++ #make -f Makefile depend
++ ln -sf apps/openssl.pod crypto/crypto.pod ssl/ssl.pod doc/
++# make -f Makefile linux-shared
++ make -f Makefile all
++# strip apps/openssl
++# make -f Makefile clean DIRS="crypto ssl"
++# ./Configure --prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 debian-$(DEB_HOST_ARCH)
++# make -f Makefile all DIRS="crypto ssl"
++ touch build
++
++clean:
++ dh_testdir
++ dh_testroot
++ -rm -f build
++ -perl util/perlpath.pl /usr/bin
++ -./Configure $(CONFARGS) debian-$(DEB_HOST_ARCH)
++ -make -f Makefile clean clean-shared
++ #-make -f Makefile dclean
++ -perl util/perlpath.pl /usr/local/bin/perl
++# perl util/ssldir.pl /usr/local/ssl
++ -rm -f test/.rnd test/testkey.pem test/testreq.pem test/certCA.srl
++ -rm -f util/mk1mf.bak Makefile.bak `find . -name Makefile.save`
++ -rm -f crypto/pem/ctx_size
++ -rm -f `find . -name "*~"`
++ -rm -f `find . -name "*.orig" -o -name "*.rej"`
++ -rm -f certs/*.0 certs/*.1
++# -rm -rf debian/tmp debian/files* core `find debian/* -type d`
++ -rm -rf core $(OPTS)
++ -rm doc/*.pod
++ -rm -f libcrypto.* libssl.*
++ dh_clean
++
++binary-indep: build
++ dh_testdir
++ dh_testroot
++# There are no architecture-independent files to be uploaded
++# generated by this package. If there were any they would be
++# made here.
++
++binary-arch: build
++ dh_testdir
++ dh_testroot
++ dh_clean
++# -rm -rf debian/tmp `find debian/* -type d`
++# install -d debian/tmp debian/libssl0.9.7 debian/libssl0.9.7-dev
++# cd debian/tmp && install -d `cat ../dirs`
++# cd debian/libssl09 && install -d `cat ../libssl09.dirs`
++# cd debian/libssl09-dev && install -d `cat ../libssl09-dev.dirs`
++ dh_installdirs
++#openssl install
++ make -f Makefile install INSTALL_PREFIX=`pwd`/debian/tmp
++ rm debian/tmp/usr/share/man/man1/openssl.1
++ rm debian/tmp/usr/share/man/man3/crypto.3
++ rm debian/tmp/usr/share/man/man3/ssl.3
++# rm debian/tmp/usr/lib/libcrypto.a
++# rm debian/tmp/usr/lib/libssl.a
++ mv debian/tmp/usr/lib/libcrypto.a debian/tmp/usr/lib/libcrypto_pic.a
++ mv debian/tmp/usr/lib/libssl.a debian/tmp/usr/lib/libssl_pic.a
++ cp -pf libcrypto.static debian/tmp/usr/lib/libcrypto.a
++ cp -pf libssl.static debian/tmp/usr/lib/libssl.a
++# mv debian/tmp/usr/lib/ssl/bin debian/tmp/usr/bin/ssl
++# (cd debian/tmp/usr/lib/ssl; ln -s /usr/bin/ssl bin)
++# mv debian/tmp/usr/lib/ssl/include debian/tmp/usr/include/ssl
++# (cd debian/tmp/usr/lib/ssl; ln -s /usr/include/ssl include)
++# chmod -x debian/tmp/usr/lib/*.so.*
++# mv debian/tmp/usr/lib/*.a debian/libssl09-dev/usr/lib/
++# mv debian/tmp/usr/lib/*.so debian/libssl09-dev/usr/lib/
++# mv debian/tmp/usr/lib/*.so.*.*.* debian/libssl09/usr/lib/
++# mv debian/tmp/usr/lib/*.la debian/libssl09-dev/usr/lib/
++# mv debian/tmp/usr/include debian/libssl09-dev/usr/
++ mkdir -p debian/tmp/etc/ssl
++ mv debian/tmp/usr/lib/ssl/{certs,openssl.cnf,private} debian/tmp/etc/ssl/
++ ln -s /etc/ssl/{certs,openssl.cnf,private} debian/tmp/usr/lib/ssl/
++ cp -auv lib*.so* debian/tmp/usr/lib/
++# cp -auv lib*.a debian/tmp/usr/lib/
++ for opt in $(OPTS); do set -xe; mkdir -p debian/tmp/usr/lib/$$opt; cp -auv $$opt/lib*.so* debian/tmp/usr/lib/$$opt/; done
++ install debian/copyright debian/libssl0.9.7/usr/share/doc/libssl0.9.7/
++ install debian/changelog debian/libssl0.9.7/usr/share/doc/libssl0.9.7/changelog.Debian
++# install debian/copyright debian/libssl0.9.7-dev/usr/share/doc/libssl0.9.7-dev/
++# install debian/changelog debian/libssl0.9.7-dev/usr/share/doc/libssl0.9.7-dev/changelog.Debian
++# debstd -u CHANGES* LICENSE README NEWS
++ dh_installdocs CHANGES.SSLeay LICENSE README NEWS debian/README.optimization
++ dh_installexamples
++ dh_installchangelogs CHANGES
++# dh_installmenu
++# dh_installcron
++ dh_installdebconf
++# dh_undocumented c_rehash.1
++ dh_movefiles
++# rmdir debian/tmp/usr/lib/ssl/lib
++# rmdir debian/tmp/usr/include/openssl
++# rmdir debian/tmp/usr/include
++# for opt in $(OPTS); do set -xe; rm -fr debian/tmp/usr/lib/$$opt; done
++ dh_compress
++ dh_fixperms -X etc/ssl/private
++ dh_strip --dbg-package=libssl0.9.7
++ dh_perl -d
++# dh_suidregister
++ dh_shlibdeps -l`pwd` -Xlibssl.so
++ # Hack, to depend on version of libc6 which supports the i686 directory
++ if [ "${DEB_HOST_ARCH}" == "i386" ]; \
++ then \
++ SHLIB=`cat debian/libssl0.9.7.substvars`; \
++ LIBC_VERSION=`echo $$SHLIB | sed s'/.*libc6 (>= \(.*\))/\1/'`; \
++ if dpkg --compare-versions ${WANTED_LIBC_VERSION} gt $$LIBC_VERSION; \
++ then \
++ echo $$SHLIB | sed s'/libc6 (>= \(.*\))/libc6 (>= ${WANTED_LIBC_VERSION})/' > debian/libssl0.9.7.substvars; \
++ fi \
++ fi
++ dh_gencontrol
++ dh_makeshlibs -m 0.9.7
++ dh_installdeb
++ dh_md5sums
++ dh_builddeb
++ echo -en "\a"
++
++# Below here is fairly generic really
++
++binary: binary-indep binary-arch
++
++source diff:
++ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
++
++.PHONY: binary binary-arch binary-indep clean
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7.postinst
++++ openssl097-0.9.7g/debian/libssl0.9.7.postinst
+@@ -0,0 +1,139 @@
++#!/bin/sh -e
++
++. /usr/share/debconf/confmodule
++
++package_name()
++{
++ echo $(basename $0 .postinst)
++}
++
++# element() is a helper function for file-rc:
++element() {
++ local element list IFS
++
++ element="$1"
++
++ [ "$2" = "in" ] && shift
++ list="$2"
++ [ "$list" = "-" ] && return 1
++ [ "$list" = "*" ] && return 0
++
++ IFS=","
++ set -- $list
++ case $element in
++ "$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9")
++ return 0
++ esac
++ return 1
++}
++
++# filerc (runlevel, service) returns /etc/init.d/service, if service is
++# running in $runlevel:
++filerc() {
++ local runlevel basename
++ runlevel=$1
++ basename=$2
++ while read LINE
++ do
++ case $LINE in
++ \#*|"") continue
++ esac
++
++ set -- $LINE
++ SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4"
++ [ "$CMD" = "/etc/init.d/$basename" ] || continue
++
++ if element "$runlevel" in "$START" || element "S" in "$START"
++ then
++ echo "/etc/init.d/$basename"
++ return 0
++ fi
++ done < /etc/runlevel.conf
++ echo ""
++}
++
++if [ "$1" = "configure" ]
++then
++ if [ ! -z "$2" ]; then
++ if dpkg --compare-versions "$2" lt 0.9.7d-1; then
++ echo -n "Checking for services that may need to be restarted..."
++
++ check="sendmail ssh"
++ check="$check apache2-common ssh-nonfree exim4"
++ check="$check apache-ssl libapache-mod-ssl openvpn spamassassin"
++ check="$check courier-imap-ssl courier-mta-ssl courier-pop-ssl"
++ check="$check postfix-tls cyrus21-imapd cyrus21-pop3d"
++ check="$check postgresql racoon"
++ # Only get the ones that are installed, and configured
++ check=$(dpkg -s $check 2> /dev/null | sed '/^$/{N;/^\n$/D;}' | awk 'BEGIN{RS="\n\n";FS="\n"}{if ( $2 ~ /Status: .* installed$/ ) { print $1 } }' | cut -f 2 -d ' ')
++ # apache2 ships its init script in apache2-common, but the
++ # script is apache2
++ check=$(echo $check | sed 's/apache2-common/apache2/g')
++ # For mod-ssl apache has to be restarted
++ check=$(echo $check | sed 's/libapache-mod-ssl/apache/g')
++ rl=$(runlevel | awk '{print $2}')
++ for service in $check; do
++ if [ -f /usr/share/file-rc/rc -o -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then
++ idl=$(filerc $rl $service)
++ else
++ idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -n 1)
++ fi
++ if [ -n "$idl" ] && [ -x $idl ]; then
++ services="$service $services"
++ fi
++ done
++ echo "done."
++ if [ -n "$services" ]; then
++ db_version 2.0
++
++ db_reset libssl0.9.7/restart-services
++ db_set libssl0.9.7/restart-services "$services"
++ db_input critical libssl0.9.7/restart-services || true
++ db_go || true
++ db_get libssl0.9.7/restart-services
++ # Arghhh, close all the stupid debconf pipes
++ db_stop
++
++ if [ "x$RET" != "x" ]
++ then
++ services=$RET
++ answer=yes
++ else
++ answer=no
++ fi
++ echo
++ if [ "$answer" = yes ] && [ "$services" != "" ]; then
++ echo "Restarting services possibly affected by the upgrade:"
++ failed=""
++ for service in $services; do
++ idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -n 1)
++ echo -n " $service: stopping..."
++ $idl stop > /dev/null 2>&1 || true
++ sleep 1
++ echo -n "starting..."
++ if $idl start > /dev/null 2>&1; then
++ echo "done."
++ else
++ echo "FAILED! ($?)"
++ failed="$service $failed"
++ fi
++ done
++ echo
++ if [ -n "$failed" ]; then
++ # Ruh roh, George
++ echo "The following services failed to start: $failed"
++ echo
++ echo "You will need to start these manually by running \`/etc/init.d/<service> start'"
++ echo "If the service still fails to start, you may need to file a bug on"
++ echo "$(package_name) or the service involved."
++ else
++ echo "Services restarted successfully."
++ fi
++ echo
++ fi
++ fi
++ fi # end upgrading and $2 lt 0.9.7c-1
++ fi # Upgrading
++fi
++
++#DEBHELPER#
+--- openssl097-0.9.7g.orig/debian/watch
++++ openssl097-0.9.7g/debian/watch
+@@ -0,0 +1,2 @@
++version=2
++ftp://ftp.openssl.org/source/openssl-(\d+\.\d+\.\d+[a-z]?)\.tar\.gz debian uupdate
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7.preinst
++++ openssl097-0.9.7g/debian/libssl0.9.7.preinst
+@@ -0,0 +1,3 @@
++#!/bin/sh -e
++
++#DEBHELPER#
+--- openssl097-0.9.7g.orig/debian/libssl0.9.7.prerm
++++ openssl097-0.9.7g/debian/libssl0.9.7.prerm
+@@ -0,0 +1,3 @@
++#!/bin/sh -e
++
++#DEBHELPER#
+--- openssl097-0.9.7g.orig/debian/copyright
++++ openssl097-0.9.7g/debian/copyright
+@@ -0,0 +1,135 @@
++This package was debianized by Christoph Martin martin@uni-mainz.de on
++Fri, 22 Nov 1996 21:29:51 +0100.
++
++Copyright (c) 1998-2004 The OpenSSL Project
++Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
++
++The upstream sources were obtained from http://www.openssl.org/
++
++
++ LICENSE ISSUES
++ ==============
++
++ The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
++ the OpenSSL License and the original SSLeay license apply to the toolkit.
++ See below for the actual license texts. Actually both licenses are BSD-style
++ Open Source licenses. In case of any license issues related to OpenSSL
++ please contact openssl-core@openssl.org.
++
++ OpenSSL License
++ ---------------
++
++/* ====================================================================
++ * Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * 3. All advertising materials mentioning features or use of this
++ * software must display the following acknowledgment:
++ * "This product includes software developed by the OpenSSL Project
++ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
++ *
++ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
++ * endorse or promote products derived from this software without
++ * prior written permission. For written permission, please contact
++ * openssl-core@openssl.org.
++ *
++ * 5. Products derived from this software may not be called "OpenSSL"
++ * nor may "OpenSSL" appear in their names without prior written
++ * permission of the OpenSSL Project.
++ *
++ * 6. Redistributions of any form whatsoever must retain the following
++ * acknowledgment:
++ * "This product includes software developed by the OpenSSL Project
++ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
++ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
++ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
++ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++ * OF THE POSSIBILITY OF SUCH DAMAGE.
++ * ====================================================================
++ *
++ * This product includes cryptographic software written by Eric Young
++ * (eay@cryptsoft.com). This product includes software written by Tim
++ * Hudson (tjh@cryptsoft.com).
++ *
++ */
++
++ Original SSLeay License
++ -----------------------
++
++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
++ * All rights reserved.
++ *
++ * This package is an SSL implementation written
++ * by Eric Young (eay@cryptsoft.com).
++ * The implementation was written so as to conform with Netscapes SSL.
++ *
++ * This library is free for commercial and non-commercial use as long as
++ * the following conditions are aheared to. The following conditions
++ * apply to all code found in this distribution, be it the RC4, RSA,
++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
++ * included with this distribution is covered by the same copyright terms
++ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
++ *
++ * Copyright remains Eric Young's, and as such any Copyright notices in
++ * the code are not to be removed.
++ * If this package is used in a product, Eric Young should be given attribution
++ * as the author of the parts of the library used.
++ * This can be in the form of a textual message at program startup or
++ * in documentation (online or textual) provided with the package.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. All advertising materials mentioning features or use of this software
++ * must display the following acknowledgement:
++ * "This product includes cryptographic software written by
++ * Eric Young (eay@cryptsoft.com)"
++ * The word 'cryptographic' can be left out if the rouines from the library
++ * being used are not cryptographic related :-).
++ * 4. If you include any Windows specific code (or a derivative thereof) from
++ * the apps directory (application code) you must include an acknowledgement:
++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
++ *
++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ *
++ * The licence and distribution terms for any publically available version or
++ * derivative of this code cannot be changed. i.e. this code cannot simply be
++ * copied and put under another distribution licence
++ * [including the GNU Public Licence.]
++ */
++
+--- openssl097-0.9.7g.orig/debian/shlibs.local
++++ openssl097-0.9.7g/debian/shlibs.local
+@@ -0,0 +1,2 @@
++libcrypto 0.9.7 libssl0.9.7
++libssl 0.9.7 libssl0.9.7
+--- openssl097-0.9.7g.orig/debian/README.debian
++++ openssl097-0.9.7g/debian/README.debian
+@@ -0,0 +1,52 @@
++openssl for DEBIAN
++----------------------
++
++openssl replaces ssleay.
++
++The application links to openssl like req, ca, verify and s_client
++have been removed.
++
++Instead of `<application>` please call now `openssl <application>`
++
++eg:
++instead of `req` please call `openssl req`
++
++NOTE: The libssl library version for debian-i386 is optimized for
++486-processors and better. It will not run on 386-processors.
++
++----
++Self-signed certs and webservers:
++
++If you get with a selfsigned certificate and a webserver:
++ > "The certificate is not approved for the attempted operation."
++
++Bodo_Moeller@public.uni-hamburg.de (Bodo Moeller) writes:
++>Probably you are using a CA certificate for your server; if you use
++>"openssl req" to generate a new key and self-signed certificate with
++>the default openssl.cnf, the certificate you get includes certain
++>X.509v3 extensions that make it unfit for use as a server certificate.
++>This was not so with earlier versions of the software because back
++>then there was far less X.509v3 support.
++>
++>To look at the certificate some HTTPS server presents to its cliens,
++>use "openssl s_client -port 443 -host your.server", store the output
++>(at least the part from "-----BEGIN CERTIFICATE-----" up to "-----END
++>CERTIFICATE-----", including these separators) in a file and use
++>"openssl x509 -in the_file_you_just_stored -text" to look at it in
++>readable form. If it has in the "X509v3 extensions section" any of
++>the following entries, it is not usable as a server certificate:
++>
++> X509v3 Basic Constraints:
++> CA:TRUE
++>
++> X509v3 Key Usage:
++> Certificate Sign, CRL Sign
++>
++>To quickly create a new server key and certificate that works with
++>Netscape, you can just copy the original openssl.cnf file and comment
++>out the "x509_extensions" entry in the "[ req ]" section.
++>The, use "openssl req ..." as before to create a new certificate and
++>key.
++
++
++Christoph Martin <martin@uni-mainz.de>, Wed, 31 Mar 1999 16:00:51 +0200
diff --git a/packages/openssl/openssl-0.9.7g/gnueabi-arm.patch b/packages/openssl/openssl-0.9.7g/gnueabi-arm.patch
new file mode 100644
index 0000000000..be0adbdea7
--- /dev/null
+++ b/packages/openssl/openssl-0.9.7g/gnueabi-arm.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- openssl-0.9.7e/Configure~gnueabi-arm 2006-03-19 21:04:31.000000000 +0100
++++ openssl-0.9.7e/Configure 2006-03-19 21:07:22.000000000 +0100
+@@ -462,6 +462,7 @@
+ # Linux on ARM
+ "linux-elf-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-elf-armeb","gcc:-DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-gnueabi-arm","gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+
+ # SCO/Caldera targets.
+ #
diff --git a/packages/openssl/openssl_0.9.7b.bb b/packages/openssl/openssl_0.9.7b.bb
deleted file mode 100644
index e502020dd0..0000000000
--- a/packages/openssl/openssl_0.9.7b.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-include openssl.inc
-
-PR = "r1"
-
-SRC_URI += "file://debian.patch;patch=1 \
- file://armeb.patch;patch=1"
diff --git a/packages/openssl/openssl_0.9.7d.bb b/packages/openssl/openssl_0.9.7d.bb
deleted file mode 100644
index 8882de683c..0000000000
--- a/packages/openssl/openssl_0.9.7d.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-include openssl.inc
-
-PR = "r3"
-
-SRC_URI += "file://debian.patch;patch=1 \
- file://armeb.patch;patch=1"
diff --git a/packages/openssl/openssl_0.9.7e.bb b/packages/openssl/openssl_0.9.7e.bb
index e502020dd0..887bf96a61 100644
--- a/packages/openssl/openssl_0.9.7e.bb
+++ b/packages/openssl/openssl_0.9.7e.bb
@@ -1,6 +1,7 @@
include openssl.inc
-PR = "r1"
+PR = "r2"
SRC_URI += "file://debian.patch;patch=1 \
- file://armeb.patch;patch=1"
+ file://armeb.patch;patch=1 \
+ file://gnueabi-arm.patch;patch=1"
diff --git a/packages/openssl/openssl_0.9.7g.bb b/packages/openssl/openssl_0.9.7g.bb
new file mode 100644
index 0000000000..09b25c1f8f
--- /dev/null
+++ b/packages/openssl/openssl_0.9.7g.bb
@@ -0,0 +1,9 @@
+inherit pkgconfig
+
+include openssl.inc
+
+PR = "r0"
+
+SRC_URI += "file://debian.patch;patch=1 \
+ file://armeb.patch;patch=1;pnum=0 \
+ file://gnueabi-arm.patch;patch=1"
diff --git a/packages/opensync/syncml-client_0.1.bb b/packages/opensync/syncml-client_0.1.bb
new file mode 100644
index 0000000000..0b71abcf0d
--- /dev/null
+++ b/packages/opensync/syncml-client_0.1.bb
@@ -0,0 +1,9 @@
+SRC_URI = "http://hem.bredband.net/miko22/${P}.tar.gz"
+
+LICENSE = "GPL"
+DEPENDS = "gtk+ curl gconf"
+HOMEPAGE = "http://hem.bredband.net/miko22/"
+DESCRIPTION = "Linux port of the Funambol C++ SyncML client connector."
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>"
+
+inherit autotools pkgconfig
diff --git a/packages/opie-bluetoothmanager/opie-bluetoothmanager.inc b/packages/opie-bluetoothmanager/opie-bluetoothmanager.inc
index f5ebf88cb2..fbc9a06625 100644
--- a/packages/opie-bluetoothmanager/opie-bluetoothmanager.inc
+++ b/packages/opie-bluetoothmanager/opie-bluetoothmanager.inc
@@ -1,7 +1,7 @@
DESCRIPTION = "Bluetooth manager for Opie"
SECTION = "opie/settings"
PRIORITY = "optional"
-DEPENDS = "libopietooth1"
+DEPENDS = "libopietooth1 obexftp"
RDEPENDS = "opie-bluepin"
MAINTAINER = "Team Opie <opie@handhelds.org>"
LICENSE = "GPL"
@@ -10,6 +10,7 @@ APPNAME = "bluetooth-manager"
S = "${WORKDIR}/manager"
EXTRA_QMAKEVARS_POST += " INCLUDEPATH+=${STAGING_INCDIR}/opietooth "
+EXTRA_QMAKEVARS_PRE = 'LIBOBEXFTP_INC_DIR=${STAGING_INCDIR}/obexftp'
inherit opie
diff --git a/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb b/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb
index b048a02795..7f022404b1 100644
--- a/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb
+++ b/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb
@@ -1,6 +1,5 @@
include ${PN}.inc
-
-
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/net/opietooth/manager \
${HANDHELDS_CVS};tag=${TAG};module=opie/apps \
diff --git a/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb b/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb
index f6040cfdd1..0dcb90892f 100644
--- a/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb
+++ b/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb
@@ -1,6 +1,6 @@
include ${PN}.inc
-
PV = "${OPIE_CVS_PV}"
+PR = "r1"
SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/net/opietooth/manager \
${HANDHELDS_CVS};module=opie/apps \
diff --git a/packages/ortp/.mtn2git_empty b/packages/ortp/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ortp/.mtn2git_empty
diff --git a/packages/ortp/ortp_0.7.1.bb b/packages/ortp/ortp_0.7.1.bb
new file mode 100644
index 0000000000..40bcfc7d0b
--- /dev/null
+++ b/packages/ortp/ortp_0.7.1.bb
@@ -0,0 +1,13 @@
+PR = "r0"
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>
+LICENSE = "LGPL"
+DEPENDS = "glibc "
+DESCRIPTION = "An LGPL implementation of RTP - RFC3550"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://www.linphone.org/${PN}/sources/${P}.tar.gz"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/otpkeygen/otpkeygen_1.3.0.bb b/packages/otpkeygen/otpkeygen_1.3.0.bb
index cae160e170..ad19539e6b 100644
--- a/packages/otpkeygen/otpkeygen_1.3.0.bb
+++ b/packages/otpkeygen/otpkeygen_1.3.0.bb
@@ -2,8 +2,10 @@ DESCRIPTION = "OTP S/Key password generator"
SECTION = "opie/applications"
HOMEPAGE = "http://www.bitrot.de/pda_otpkeygen.html"
AUTHOR = "Thomas Driemeyer <thomas@bitrot.de>"
+MAINTANER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
LICENSE = "GPL"
APPTYPE="binary"
+PR = "r1"
SRC_URI = "ftp://ftp.bitrot.de/pub/otpkeygen/otpkeygen-src_${PV}.tar.gz"
diff --git a/packages/pango/pango_1.12.0.bb b/packages/pango/pango_1.12.0.bb
new file mode 100644
index 0000000000..08aa64b6a2
--- /dev/null
+++ b/packages/pango/pango_1.12.0.bb
@@ -0,0 +1,51 @@
+LICENSE = "LGPL"
+SECTION = "x11/libs"
+# Xt needed to keep autoconf's check for X11 happy
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt gtk-doc cairo"
+DESCRIPTION = "The goal of the Pango project is to provide an \
+Open Source framework for the layout and rendering of \
+internationalized text."
+PR = "r0"
+
+# seems to go wrong with default cflags
+FULL_OPTIMIZATION_arm = "-O2"
+
+SRC_URI = "http://download.gnome.org/sources/pango/1.12/pango-${PV}.tar.bz2 \
+ file://no-tests.patch;patch=1"
+
+inherit autotools pkgconfig
+
+DEFAULT_PREFERENCE="-1"
+
+EXTRA_OECONF = "--disable-glibtest \
+ --enable-explicit-deps=no \
+ --disable-debug"
+
+FILES_${PN} = "/etc ${bindir} ${libdir}/libpango*.so.*"
+
+LIBV = "1.5.0"
+
+do_stage () {
+ for lib in pango pangox pangoft2 pangoxft pangocairo; do
+ oe_libinstall -so -C pango lib$lib-1.0 ${STAGING_LIBDIR}/
+ done
+ install -d ${STAGING_INCDIR}/pango
+ install -m 0644 ${S}/pango/pango*.h ${STAGING_INCDIR}/pango/
+}
+
+postinst_prologue() {
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+}
+
+PACKAGES_DYNAMIC = "pango-module-*"
+
+python populate_packages_prepend () {
+ prologue = bb.data.getVar("postinst_prologue", d, 1)
+
+ modules_root = bb.data.expand('${libdir}/pango/${LIBV}/modules', d)
+
+ do_split_packages(d, modules_root, '^pango-(.*)\.so$', 'pango-module-%s', 'Pango module %s', prologue + 'pango-querymodules > /etc/pango/pango.modules')
+}
diff --git a/packages/pcmanfm/.mtn2git_empty b/packages/pcmanfm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pcmanfm/.mtn2git_empty
diff --git a/packages/pcmanfm/files/.mtn2git_empty b/packages/pcmanfm/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pcmanfm/files/.mtn2git_empty
diff --git a/packages/pcmanfm/files/emblem-symbolic-link.png b/packages/pcmanfm/files/emblem-symbolic-link.png
new file mode 100644
index 0000000000..b8e559456e
--- /dev/null
+++ b/packages/pcmanfm/files/emblem-symbolic-link.png
Binary files differ
diff --git a/packages/pcmanfm/files/gnome-fs-directory.png b/packages/pcmanfm/files/gnome-fs-directory.png
new file mode 100644
index 0000000000..05921a6689
--- /dev/null
+++ b/packages/pcmanfm/files/gnome-fs-directory.png
Binary files differ
diff --git a/packages/pcmanfm/files/gnome-fs-regular.png b/packages/pcmanfm/files/gnome-fs-regular.png
new file mode 100644
index 0000000000..ce77a8e62d
--- /dev/null
+++ b/packages/pcmanfm/files/gnome-fs-regular.png
Binary files differ
diff --git a/packages/pcmanfm/files/gnome-mime-text-plain.png b/packages/pcmanfm/files/gnome-mime-text-plain.png
new file mode 100644
index 0000000000..bfe4bad56c
--- /dev/null
+++ b/packages/pcmanfm/files/gnome-mime-text-plain.png
Binary files differ
diff --git a/packages/pcmanfm/files/no-fam-gtk2.6.patch b/packages/pcmanfm/files/no-fam-gtk2.6.patch
new file mode 100644
index 0000000000..40ced49d2c
--- /dev/null
+++ b/packages/pcmanfm/files/no-fam-gtk2.6.patch
@@ -0,0 +1,374 @@
+diff -urNd pcmanfm-0.1.9.8.old/configure.in pcmanfm-0.1.9.8/configure.in
+--- pcmanfm-0.1.9.8.old/configure.in 2006-02-08 17:13:05.000000000 +0000
++++ pcmanfm-0.1.9.8/configure.in 2006-02-14 22:53:22.000000000 +0000
+@@ -10,8 +10,12 @@
+ AM_PROG_CC_STDC
+ AC_HEADER_STDC
+
+-pkg_modules="gtk+-2.0 >= 2.8.0 gthread-2.0"
+-PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
++PKG_CHECK_MODULES(PACKAGE, [glib-2.0 >= 2.8.0 gtk+-2.0 >= 2.6.0 gthread-2.0], [
++ PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.8.0], have_gtk28=yes, have_gtk28=no)
++])
++if test x"$have_gtk28" = x"yes"; then
++ AC_DEFINE([HAVE_GTK_2_8],,[Define if you have gtk+-2.0 >= 2.8.0])
++fi
+ AC_SUBST(PACKAGE_CFLAGS)
+ AC_SUBST(PACKAGE_LIBS)
+
+@@ -38,8 +42,8 @@
+ LIBS="$LIBS $FAM_LIBS"
+ AC_CHECK_FUNCS([FAMNoExists])
+ LIBS="$save_LIBS"
+-else
+- AC_MSG_ERROR([Fatal Error: no fam or gamin detected.])
++#else
++# AC_MSG_ERROR([Fatal Error: no fam or gamin detected.])
+ fi
+
+ AC_SUBST([FAM_CFLAGS])
+diff -urNd pcmanfm-0.1.9.8.old/src/foldercontent.c pcmanfm-0.1.9.8/src/foldercontent.c
+--- pcmanfm-0.1.9.8.old/src/foldercontent.c 2006-02-08 18:36:52.000000000 +0000
++++ pcmanfm-0.1.9.8/src/foldercontent.c 2006-02-15 02:51:03.000000000 +0000
+@@ -31,9 +31,11 @@
+ }FolderContentCallback;
+
+ static GHashTable* folder_hash = NULL;
++#ifdef HAVE_FAM_H
+ static FAMConnection fam;
+ static GIOChannel* fam_io_channel = NULL;
+ static guint fam_io_watch = 0;
++#endif
+
+ typedef enum{
+ FCM_FOLDER_VIEW = 1 << 0,
+@@ -58,6 +60,9 @@
+ static FolderContent* folder_content_get( const char* path,
+ FolderContentMode mode,
+ GtkTreeRowReference* tree_parent,
++#ifndef HAVE_GTK_2_8
++ GtkTreeModel* tree_model,
++#endif
+ FolderContentUpdateFunc cb,
+ gpointer user_data );
+
+@@ -72,6 +77,7 @@
+
+ static gboolean connect_to_fam()
+ {
++#ifdef HAVE_FAM_H
+ if( FAMOpen( &fam ) )
+ {
+ fam_io_channel = NULL;
+@@ -100,10 +106,14 @@
+ /*
+ g_print("Connected to FAM server\n");
+ */
++#else
++ return FALSE;
++#endif
+ }
+
+ static void disconnect_from_fam()
+ {
++#ifdef HAVE_FAM_H
+ if( fam_io_channel )
+ {
+ g_io_channel_unref(fam_io_channel);
+@@ -115,6 +125,7 @@
+ g_print("Disonnected from FAM server\n");
+ */
+ }
++#endif
+ }
+
+ /*
+@@ -336,7 +347,11 @@
+ if( ! tree_node )
+ return;
+
++#ifdef HAVE_GTK_2_8
+ tree = gtk_tree_row_reference_get_model (tree_node);
++#else
++ tree = folder_content->tree_model;
++#endif
+ tree_path = gtk_tree_row_reference_get_path (tree_node);
+ if( !tree || !tree_path ){
+ return;
+@@ -428,6 +443,9 @@
+ FolderContent* folder_content_get( const char* path,
+ FolderContentMode mode,
+ GtkTreeRowReference* tree_node,
++#ifndef HAVE_GTK_2_8
++ GtkTreeModel* tree_model,
++#endif
+ FolderContentUpdateFunc callback,
+ gpointer user_data )
+ {
+@@ -467,6 +485,9 @@
+ */
+ if( ! folder_content->tree_node )
+ {
++#ifndef HAVE_GTK_2_8
++ folder_content->tree_model = tree_model;
++#endif
+ folder_content->tree_node = tree_node;
+ dir_tree_sub_folders_new( folder_content );
+ }
+@@ -475,10 +496,12 @@
+
+ /* First new instance */
+ if( add_new ){
++#ifdef HAVE_FAM_H
+ FAMMonitorDirectory( &fam,
+ path,
+ &folder_content->request,
+ folder_content );
++#endif
+ }
+
+ if( callback ) /* Install a callback */
+@@ -548,7 +571,9 @@
+ && 0 >= folder_content->n_ref_tree )
+ {
+ /* g_print("cancel monitor!\n"); */
++#ifdef HAVE_FAM_H
+ FAMCancelMonitor( &fam, &folder_content->request );
++#endif
+ g_hash_table_remove( folder_hash, folder_content->path );
+ g_free( folder_content->path );
+ g_array_free( folder_content->callbacks, TRUE );
+@@ -561,6 +586,7 @@
+ GIOCondition cond,
+ gpointer user_data )
+ {
++#ifdef HAVE_FAM_H
+ FAMEvent evt;
+ FolderContent* content = NULL;
+ GdkPixbuf *folder_icon = get_folder_icon32();
+@@ -613,21 +639,36 @@
+ }
+ }
+ return TRUE;
++#else
++ return FALSE;
++#endif
+ }
+
+ FolderContent* folder_content_list_get( const char* path,
+ FolderContentUpdateFunc cb,
+ gpointer user_data )
+ {
++#ifdef HAVE_GTK_2_8
+ return folder_content_get( path, FCM_FOLDER_VIEW, NULL, cb, user_data );
++#else
++ return folder_content_get( path, FCM_FOLDER_VIEW, NULL, NULL, cb, user_data );
++#endif
+ }
+
+ FolderContent* folder_content_tree_get( const char* path,
+ GtkTreeRowReference* tree_parent,
++#ifndef HAVE_GTK_2_8
++ GtkTreeModel* tree_model,
++#endif
+ FolderContentUpdateFunc cb,
+ gpointer user_data )
+ {
++#ifdef HAVE_GTK_2_8
+ return folder_content_get( path, FCM_DIR_TREE, tree_parent, cb, user_data );
++#else
++ return folder_content_get( path, FCM_DIR_TREE, tree_parent, tree_model, cb,
++ user_data );
++#endif
+ }
+
+ void folder_content_list_unref( FolderContent* folder_content,
+@@ -688,7 +729,11 @@
+ }
+
+ if( content->tree_node ) {
++#ifdef HAVE_GTK_2_8
+ model = gtk_tree_row_reference_get_model( content->tree_node );
++#else
++ model = content->tree_model;
++#endif
+ tree_path = gtk_tree_row_reference_get_path(
+ content->tree_node );
+ gtk_tree_model_get_iter( model, &parent_it, tree_path );
+@@ -724,7 +769,11 @@
+ }
+
+ if( content->tree_node ) {
++#ifdef HAVE_GTK_2_8
+ model = gtk_tree_row_reference_get_model( content->tree_node );
++#else
++ model = content->tree_model;
++#endif
+ tree_path = gtk_tree_row_reference_get_path(
+ content->tree_node );
+ gtk_tree_model_get_iter( model, &parent_it, tree_path );
+@@ -776,7 +825,11 @@
+
+ /* There is no need to update the dir tree currently. */
+ if( content->tree_node ) {
++#ifdef HAVE_GTK_2_8
+ model = gtk_tree_row_reference_get_model( content->tree_node );
++#else
++ model = content->tree_model;
++#endif
+ tree_path = gtk_tree_row_reference_get_path(
+ content->tree_node );
+ gtk_tree_model_get_iter( model, &parent_it, tree_path );
+diff -urNd pcmanfm-0.1.9.8.old/src/foldercontent.h pcmanfm-0.1.9.8/src/foldercontent.h
+--- pcmanfm-0.1.9.8.old/src/foldercontent.h 2006-02-07 10:26:03.000000000 +0000
++++ pcmanfm-0.1.9.8/src/foldercontent.h 2006-02-15 02:13:40.000000000 +0000
+@@ -15,7 +15,12 @@
+
+ #include <gtk/gtk.h>
+ #include <glib.h>
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++#ifdef HAVE_FAM_H
+ #include <fam.h>
++#endif
+
+ /* Columns of folderView */
+ enum{
+@@ -42,10 +47,20 @@
+ typedef struct{
+ GtkListStore* list; /* for Folder View */
+ int n_ref_list; /* reference counting */
++#ifndef HAVE_GTK_2_8
++ GtkTreeModel* tree_model;
++#endif
+ GtkTreeRowReference* tree_node; /* for Dir Tree */
+ int n_ref_tree;
+
++#ifdef HAVE_FAM_H
+ FAMRequest request;
++#else
++ /* A structure the same size as FAMRequest */
++ struct unused {
++ int unused;
++ };
++#endif
+ gchar* path;
+ int n_files;
+
+@@ -82,6 +97,9 @@
+
+ FolderContent* folder_content_tree_get( const char* path,
+ GtkTreeRowReference* tree_node,
++#ifndef HAVE_GTK_2_8
++ GtkTreeModel* tree_model,
++#endif
+ FolderContentUpdateFunc callback,
+ gpointer user_data );
+
+diff -urNd pcmanfm-0.1.9.8.old/src/ptk/ptkfilebrowser.c pcmanfm-0.1.9.8/src/ptk/ptkfilebrowser.c
+--- pcmanfm-0.1.9.8.old/src/ptk/ptkfilebrowser.c 2006-02-09 04:29:32.000000000 +0000
++++ pcmanfm-0.1.9.8/src/ptk/ptkfilebrowser.c 2006-02-15 02:07:16.000000000 +0000
+@@ -31,6 +31,9 @@
+ #include "ptkutils.h"
+
+ #include "settings.h"
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
+
+
+ /* If set to FALSE, all selection changes in folder_view are prevented. */
+@@ -1127,7 +1130,11 @@
+ }
+
+ row_ref = gtk_tree_row_reference_new( store, real_path );
++#ifdef HAVE_GTK_2_8
+ content = folder_content_tree_get( dir_path, row_ref, NULL, NULL );
++#else
++ content = folder_content_tree_get( dir_path, row_ref, model, NULL, NULL );
++#endif
+
+ gtk_tree_model_get_iter( model, &it, tree_path );
+ if( gtk_tree_model_iter_children( model, &child, &it ) ) {
+@@ -1231,12 +1238,15 @@
+ model = ptk_icon_view_get_model( PTK_ICON_VIEW(folder_view) );
+ }
+ else if( file_browser->view_mode == FBVM_LIST_VIEW ) {
++#ifdef HAVE_GTK_2_8
+ if( !gtk_tree_view_get_visible_range ( GTK_TREE_VIEW(folder_view),
+ &start_path, &end_path ) )
+ return;
++#endif
+ model = gtk_tree_view_get_model( GTK_TREE_VIEW(folder_view) );
+ }
+
++#ifdef HAVE_GTK_2_8
+ /*
+ NOTE:It seems that this is a bug of gtk+ 2.8.
+ gtk_tree_view_get_visible_range sometimes returns invalid paths.
+@@ -1252,6 +1262,7 @@
+ gtk_tree_path_free( end_path );
+ return;
+ }
++#endif
+
+ model_sorter = PTK_TREE_MODEL_SORT( gtk_tree_model_filter_get_model(
+ GTK_TREE_MODEL_FILTER(model) ) );
+diff -urNd pcmanfm-0.1.9.8.old/src/ptk/ptkfileiconrenderer.c pcmanfm-0.1.9.8/src/ptk/ptkfileiconrenderer.c
+--- pcmanfm-0.1.9.8.old/src/ptk/ptkfileiconrenderer.c 2006-02-03 04:24:09.000000000 +0000
++++ pcmanfm-0.1.9.8/src/ptk/ptkfileiconrenderer.c 2006-02-15 02:09:00.000000000 +0000
+@@ -346,7 +346,9 @@
+ GdkPixbuf *colorized = NULL;
+ GdkRectangle pix_rect;
+ GdkRectangle draw_rect;
++#ifdef HAVE_GTK_2_8
+ cairo_t *cr;
++#endif
+
+ GtkCellRendererClass* parent_renderer_class;
+
+@@ -432,16 +434,23 @@
+ pixbuf = colorized;
+ }
+ }
++#ifdef HAVE_GTK_2_8
+ cr = gdk_cairo_create (window);
+
+ gdk_cairo_set_source_pixbuf (cr, pixbuf, pix_rect.x, pix_rect.y);
+ gdk_cairo_rectangle (cr, &draw_rect);
+ cairo_fill (cr);
++#else
++ gdk_draw_pixbuf (GDK_DRAWABLE (window), NULL, pixbuf, 0, 0,
++ pix_rect.x, pix_rect.y, pix_rect.width, pix_rect.height,
++ GDK_RGB_DITHER_NORMAL, 0, 0);
++#endif
+
+ if( PTK_FILE_ICON_RENDERER(cell)->file_stat )
+ {
+ if( S_ISLNK(PTK_FILE_ICON_RENDERER(cell)->file_stat->st_mode) )
+ {
++#ifdef HAVE_GTK_2_8
+ gdk_cairo_set_source_pixbuf (cr, link_icon_large,
+ pix_rect.x - 2,
+ pix_rect.y - 2 );
+@@ -449,10 +458,18 @@
+ draw_rect.y -= 2;
+ gdk_cairo_rectangle (cr, &draw_rect);
+ cairo_fill (cr);
++#else
++ gdk_draw_pixbuf (GDK_DRAWABLE (window), NULL, link_icon_large, 0, 0,
++ pix_rect.x - 2, pix_rect.y - 2,
++ -1, -1, GDK_RGB_DITHER_NORMAL,
++ 0, 0);
++#endif
+ }
+ }
+-
++
++#ifdef HAVE_GTK_2_8
+ cairo_destroy (cr);
++#endif
+
+ if (invisible)
+ g_object_unref (invisible);
diff --git a/packages/pcmanfm/files/pcmanfm.desktop b/packages/pcmanfm/files/pcmanfm.desktop
new file mode 100644
index 0000000000..052d38c855
--- /dev/null
+++ b/packages/pcmanfm/files/pcmanfm.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=File Manager
+Exec=/usr/bin/pcmanfm
+Icon=pcmanfm.png
+Terminal=false
+Type=Application
+Categories=Utility;
+SingleInstance=true
+StartupNotify=true
+
diff --git a/packages/pcmanfm/files/pcmanfm.png b/packages/pcmanfm/files/pcmanfm.png
new file mode 100644
index 0000000000..3d35360848
--- /dev/null
+++ b/packages/pcmanfm/files/pcmanfm.png
Binary files differ
diff --git a/packages/pcmanfm/pcmanfm_0.1.9.8.bb b/packages/pcmanfm/pcmanfm_0.1.9.8.bb
new file mode 100644
index 0000000000..f35d0d4454
--- /dev/null
+++ b/packages/pcmanfm/pcmanfm_0.1.9.8.bb
@@ -0,0 +1,29 @@
+LICENSE = "GPL"
+DESCRIPTION = "procfs tools"
+SECTION = "x11"
+PRIORITY = "optional"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
+DEPENDS = "gtk+"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.gz \
+ file://pcmanfm.desktop \
+ file://pcmanfm.png \
+ file://gnome-fs-directory.png \
+ file://gnome-fs-regular.png \
+ file://gnome-mime-text-plain.png \
+ file://emblem-symbolic-link.png \
+ file://no-fam-gtk2.6.patch;patch=1;pnum=1"
+
+inherit autotools pkgconfig
+
+do_install_append () {
+ install -d ${D}/${datadir}
+ install -d ${D}/${datadir}/applications
+ install -d ${D}/${datadir}/pixmaps/
+
+ install -m 0644 ${WORKDIR}/*.png ${D}/${datadir}/pixmaps
+ install -m 0644 ${WORKDIR}/pcmanfm.desktop ${D}/${datadir}/applications
+}
+
+FILES_${PN} += "${datadir}/applications/pcmanfm.desktop ${datadir}/pixmaps/*.png"
+
diff --git a/packages/poppler/poppler_0.3.0.bb b/packages/poppler/poppler_0.3.0.bb
deleted file mode 100644
index dc0a7c70ac..0000000000
--- a/packages/poppler/poppler_0.3.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-LICENSE = "GPL"
-
-DEPENDS = "jpeg gtk+ cairo"
-
-SRC_URI="http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
-
-EXTRA_OECONF = "--disable-gtk-test --disable-poppler-qt"
-inherit pkgconfig autotools
-
diff --git a/packages/poppler/poppler_0.3.3.bb b/packages/poppler/poppler_0.3.3.bb
deleted file mode 100644
index 6e03cf9355..0000000000
--- a/packages/poppler/poppler_0.3.3.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-LICENSE = "GPL"
-
-DEPENDS = "jpeg gtk+ cairo"
-
-SRC_URI="http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
-
-EXTRA_OECONF = "--disable-gtk-test --disable-poppler-qt"
-inherit pkgconfig autotools
-
-
-do_stage() {
- autotools_stage_includes
- install -d ${STAGING_LIBDIR}
- install -m 755 poppler/.libs/libpoppler.so.0.0.0 ${STAGING_LIBDIR}/libpoppler.so
- install -m 755 glib/.libs/libpoppler-glib.so.0.0.0 ${STAGING_LIBDIR}/libpoppler-glib.so
-
-}
-
-
diff --git a/packages/poppler/poppler_0.4.2.bb b/packages/poppler/poppler_0.4.2.bb
deleted file mode 100644
index 6e03cf9355..0000000000
--- a/packages/poppler/poppler_0.4.2.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-LICENSE = "GPL"
-
-DEPENDS = "jpeg gtk+ cairo"
-
-SRC_URI="http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
-
-EXTRA_OECONF = "--disable-gtk-test --disable-poppler-qt"
-inherit pkgconfig autotools
-
-
-do_stage() {
- autotools_stage_includes
- install -d ${STAGING_LIBDIR}
- install -m 755 poppler/.libs/libpoppler.so.0.0.0 ${STAGING_LIBDIR}/libpoppler.so
- install -m 755 glib/.libs/libpoppler-glib.so.0.0.0 ${STAGING_LIBDIR}/libpoppler-glib.so
-
-}
-
-
diff --git a/packages/poppler/poppler_0.5.0.bb b/packages/poppler/poppler_0.5.0.bb
deleted file mode 100644
index ebe06c4015..0000000000
--- a/packages/poppler/poppler_0.5.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
-MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-LICENSE = "GPL"
-
-DEPENDS = "fontconfig jpeg gtk+ cairo"
-
-SRC_URI="http://poppler.freedesktop.org/${PN}-${PV}.tar.gz"
-
-EXTRA_OECONF = "--disable-gtk-test --disable-poppler-qt"
-inherit pkgconfig autotools
-
-
-do_stage() {
- autotools_stage_all
-}
-
-
diff --git a/packages/poppler/poppler_0.4.3.bb b/packages/poppler/poppler_0.5.1.bb
index ebe06c4015..ebe06c4015 100644
--- a/packages/poppler/poppler_0.4.3.bb
+++ b/packages/poppler/poppler_0.5.1.bb
diff --git a/packages/pvrusb2-mci/pvrusb2-mci-20060326/.mtn2git_empty b/packages/pvrusb2-mci/pvrusb2-mci-20060326/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pvrusb2-mci/pvrusb2-mci-20060326/.mtn2git_empty
diff --git a/packages/pvrusb2-mci/pvrusb2-mci-20060326/Makefile.patch b/packages/pvrusb2-mci/pvrusb2-mci-20060326/Makefile.patch
new file mode 100644
index 0000000000..29b1267177
--- /dev/null
+++ b/packages/pvrusb2-mci/pvrusb2-mci-20060326/Makefile.patch
@@ -0,0 +1,25 @@
+*** driver/Makefile- Tue Feb 28 21:05:41 2006
+--- driver/Makefile Tue Feb 28 21:07:15 2006
+***************
+*** 45,54 ****
+ M:=$(shell pwd)
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) CONFIG_VIDEO_PVRUSB2=m $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) CONFIG_VIDEO_PVRUSB2=m modules_install
+
+ else
+
+--- 45,54 ----
+ M:=$(shell pwd)
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) CONFIG_VIDEO_PVRUSB2=m $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) CONFIG_VIDEO_PVRUSB2=m modules_install
+
+ else
+
diff --git a/packages/pvrusb2-mci/pvrusb2-mci-20060329/.mtn2git_empty b/packages/pvrusb2-mci/pvrusb2-mci-20060329/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pvrusb2-mci/pvrusb2-mci-20060329/.mtn2git_empty
diff --git a/packages/pvrusb2-mci/pvrusb2-mci-20060329/Makefile.patch b/packages/pvrusb2-mci/pvrusb2-mci-20060329/Makefile.patch
new file mode 100644
index 0000000000..29b1267177
--- /dev/null
+++ b/packages/pvrusb2-mci/pvrusb2-mci-20060329/Makefile.patch
@@ -0,0 +1,25 @@
+*** driver/Makefile- Tue Feb 28 21:05:41 2006
+--- driver/Makefile Tue Feb 28 21:07:15 2006
+***************
+*** 45,54 ****
+ M:=$(shell pwd)
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) CONFIG_VIDEO_PVRUSB2=m $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) M=$(M) CONFIG_VIDEO_PVRUSB2=m modules_install
+
+ else
+
+--- 45,54 ----
+ M:=$(shell pwd)
+
+ modules modules_install clean:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) CONFIG_VIDEO_PVRUSB2=m $@
+
+ install:
+! $(MAKE) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) -C $(KDIR) CFLAGS="$(CFLAGS)" M=$(M) CONFIG_VIDEO_PVRUSB2=m modules_install
+
+ else
+
diff --git a/packages/pvrusb2-mci/pvrusb2-mci_20060326.bb b/packages/pvrusb2-mci/pvrusb2-mci_20060326.bb
new file mode 100644
index 0000000000..98b5765064
--- /dev/null
+++ b/packages/pvrusb2-mci/pvrusb2-mci_20060326.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Driver for the Hauppauge WinTV PVR USB2"
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+MAINTAINER = "eFfeM <fransmeulenbroeks at yahoo dot com>"
+LICENSE = "GPL"
+PR = "r0"
+RRECOMMENDS = "kernel-module-tveeprom kernel-module-tuner kernel-module-msp3400 kernel-module-saa7115 kernel-module-tda9887"
+
+SRC_URI = "http://www.isely.net/downloads/pvrusb2-mci-${PV}.tar.bz2 \
+ file://Makefile.patch;patch=1"
+
+S = "${WORKDIR}/pvrusb2-mci-${PV}/driver"
+
+inherit module
+
+CFLAGS = "'-I${KERNEL_SOURCE}/include' \
+ '-I${KERNEL_SOURCE}/drivers/media/video' \
+ '-D__LINUX_ARM_ARCH__=5'"
+
+EXTRA_OEMAKE = "'V=1' 'CFLAGS=${CFLAGS}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}' \
+ 'KDIR=${STAGING_KERNEL_DIR}'"
+
+export TARGET_LDFLAGS = "-L${STAGING_DIR}/${TARGET_SYS}/lib \
+ -rpath-link ${STAGING_DIR}/${TARGET_SYS}/lib"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+}
diff --git a/packages/pvrusb2-mci/pvrusb2-mci_20060329.bb b/packages/pvrusb2-mci/pvrusb2-mci_20060329.bb
new file mode 100644
index 0000000000..0089bbc717
--- /dev/null
+++ b/packages/pvrusb2-mci/pvrusb2-mci_20060329.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Driver for the Hauppauge WinTV PVR USB2"
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+MAINTAINER = "eFfeM <fransmeulenbroeks at yahoo dot com>"
+LICENSE = "GPL"
+PR = "r0"
+RRECOMMENDS = "kernel-module-tveeprom kernel-module-tuner kernel-module-msp3400 kernel-module-saa7115 kernel-module-tda9887"
+
+SRC_URI = "http://www.isely.net/downloads/pvrusb2-mci-${PV}.tar.bz2 \
+ file://Makefile.patch;patch=1"
+
+S = "${WORKDIR}/pvrusb2-mci-${PV}/driver"
+
+inherit module
+
+CFLAGS = "'-I${KERNEL_SOURCE}/include' \
+ '-I${KERNEL_SOURCE}/drivers/media/video' "
+
+CFLAGS_append_arm = " '-D__LINUX_ARM_ARCH__=5' "
+
+CFLAGS_append_armeb = " '-D__LINUX_ARM_ARCH__=5' "
+
+EXTRA_OEMAKE = "'V=1' 'CFLAGS=${CFLAGS}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}' \
+ 'KDIR=${STAGING_KERNEL_DIR}'"
+
+export TARGET_LDFLAGS = "-L${STAGING_DIR}/${TARGET_SYS}/lib \
+ -rpath-link ${STAGING_DIR}/${TARGET_SYS}/lib"
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+}
diff --git a/packages/python/python-2.4.2-manifest.inc b/packages/python/python-2.4.3-manifest.inc
index da7fc6d28b..0178d4e186 100644
--- a/packages/python/python-2.4.2-manifest.inc
+++ b/packages/python/python-2.4.3-manifest.inc
@@ -1,5 +1,5 @@
########################################################################################################################
-### AUTO-GENERATED by './generate-oe.py' [(C) 2002-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Sun Mar 12 18:58:32 2006
+### AUTO-GENERATED by './generate-oe.py' [(C) 2002-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Thu Mar 30 17:39:30 2006
###
### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
###
@@ -11,247 +11,247 @@
PACKAGES="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-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 "
DESCRIPTION_python-threading="Python Threading & Synchronization Support"
-PR_python-threading="ml2"
+PR_python-threading="ml0"
RDEPENDS_python-threading="python-core python-lang"
FILES_python-threading="${libdir}/python2.4/_threading_local.* ${libdir}/python2.4/bisect.* ${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="ml2"
+PR_python-distutils="ml0"
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="ml1"
+PR_python-textutils="ml0"
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="ml2"
+PR_python-codecs="ml0"
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="ml1"
+PR_python-pickle="ml0"
RDEPENDS_python-pickle="python-core python-codecs 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="ml1"
+PR_python-datetime="ml0"
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="ml2"
+PR_python-core="ml0"
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/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="ml2"
+PR_python-io="ml0"
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="ml1"
+PR_python-compiler="ml0"
RDEPENDS_python-compiler="python-core"
FILES_python-compiler="${libdir}/python2.4/compiler "
DESCRIPTION_python-compression="Python High Level Compression Support"
-PR_python-compression="ml1"
+PR_python-compression="ml0"
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="ml2"
+PR_python-re="ml0"
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="ml1"
+PR_python-xmlrpc="ml0"
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="ml1"
+PR_python-terminal="ml0"
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="ml1"
+PR_python-email="ml0"
RDEPENDS_python-email="python-core python-io python-re"
FILES_python-email="${libdir}/python2.4/email "
DESCRIPTION_python-image="Python Graphical Image Handling"
-PR_python-image="ml1"
+PR_python-image="ml0"
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-resource="Python Resource Control Interface"
-PR_python-resource="ml1"
+PR_python-resource="ml0"
RDEPENDS_python-resource="python-core"
FILES_python-resource="${libdir}/python2.4/lib-dynload/resource.so "
DESCRIPTION_python-devel="Python Development Package"
-PR_python-devel="ml1"
+PR_python-devel="ml0"
RDEPENDS_python-devel="python-core"
FILES_python-devel="/usr/include /usr/lib/python2.4/config "
DESCRIPTION_python-math="Python Math Support"
-PR_python-math="ml1"
+PR_python-math="ml0"
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="ml1"
+PR_python-hotshot="ml0"
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="ml1"
+PR_python-unixadmin="ml0"
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-tkinter="Python Tcl/Tk Bindings"
-PR_python-tkinter="ml1"
+PR_python-tkinter="ml0"
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="ml1"
+PR_python-gdbm="ml0"
RDEPENDS_python-gdbm="python-core libgdbm3"
FILES_python-gdbm="${libdir}/python2.4/lib-dynload/gdbm.so "
DESCRIPTION_python-fcntl="Python's fcntl Interface"
-PR_python-fcntl="ml1"
+PR_python-fcntl="ml0"
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="ml2"
+PR_python-netclient="ml0"
RDEPENDS_python-netclient="python-core python-datetime python-io python-lang python-logging python-mime"
FILES_python-netclient="${libdir}/python2.4/_LWPCookieJar.* ${libdir}/python2.4/_MozillaCookieJar.* ${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="ml1"
+PR_python-pprint="ml0"
RDEPENDS_python-pprint="python-core"
FILES_python-pprint="${libdir}/python2.4/pprint.* "
DESCRIPTION_python-netserver="Python Internet Protocol Servers"
-PR_python-netserver="ml1"
+PR_python-netserver="ml0"
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="ml1"
+PR_python-curses="ml0"
RDEPENDS_python-curses="python-core libncurses5"
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="ml1"
+PR_python-syslog="ml0"
RDEPENDS_python-syslog="python-core"
FILES_python-syslog="${libdir}/python2.4/lib-dynload/syslog.so "
DESCRIPTION_python-html="Python HTML Processing"
-PR_python-html="ml1"
+PR_python-html="ml0"
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="ml1"
+PR_python-readline="ml0"
RDEPENDS_python-readline="python-core libreadline4"
FILES_python-readline="${libdir}/python2.4/lib-dynload/readline.so ${libdir}/python2.4/rlcompleter.* "
DESCRIPTION_python-pydoc="Python Interactive Help Support"
-PR_python-pydoc="ml1"
+PR_python-pydoc="ml0"
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="ml1"
+PR_python-logging="ml0"
RDEPENDS_python-logging="python-core"
FILES_python-logging="${libdir}/python2.4/logging "
DESCRIPTION_python-mailbox="Python Mailbox Format Support"
-PR_python-mailbox="ml1"
+PR_python-mailbox="ml0"
RDEPENDS_python-mailbox="python-core python-mime"
FILES_python-mailbox="${libdir}/python2.4/mailbox.* "
DESCRIPTION_python-xml="Python basic XML support."
-PR_python-xml="ml1"
+PR_python-xml="ml0"
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="ml2"
+PR_python-mime="ml0"
RDEPENDS_python-mime="python-core python-io"
FILES_python-mime="${libdir}/python2.4/mimetools.* ${libdir}/python2.4/quopri.* ${libdir}/python2.4/rfc822.* "
DESCRIPTION_python-tests="Python Tests"
-PR_python-tests="ml1"
+PR_python-tests="ml0"
RDEPENDS_python-tests="python-core"
FILES_python-tests="${libdir}/python2.4/test "
DESCRIPTION_python-unittest="Python Unit Testing Framework"
-PR_python-unittest="ml1"
+PR_python-unittest="ml0"
RDEPENDS_python-unittest="python-core python-stringold python-lang"
FILES_python-unittest="${libdir}/python2.4/unittest.* "
DESCRIPTION_python-stringold="Python Deprecated String APIs"
-PR_python-stringold="ml2"
+PR_python-stringold="ml0"
RDEPENDS_python-stringold="python-core python-re"
FILES_python-stringold="${libdir}/python2.4/lib-dynload/strop.so ${libdir}/python2.4/string.* "
DESCRIPTION_python-lib-old-and-deprecated="Python Deprecated Libraries"
-PR_python-lib-old-and-deprecated="ml1"
+PR_python-lib-old-and-deprecated="ml0"
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="ml1"
+PR_python-compile="ml0"
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="ml1"
+PR_python-shell="ml0"
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="ml1"
+PR_python-bsddb="ml0"
RDEPENDS_python-bsddb="python-core"
FILES_python-bsddb="${libdir}/python2.4/bsddb "
DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
-PR_python-mmap="ml1"
+PR_python-mmap="ml0"
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="ml1"
+PR_python-zlib="ml0"
RDEPENDS_python-zlib="python-core libz1"
FILES_python-zlib="${libdir}/python2.4/lib-dynload/zlib.so "
DESCRIPTION_python-db="Python File-Based Database Support"
-PR_python-db="ml1"
+PR_python-db="ml0"
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="ml1"
+PR_python-crypt="ml0"
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="ml1"
+PR_python-idle="ml0"
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="ml1"
+PR_python-lang="ml0"
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/atexit.* ${libdir}/python2.4/code.* ${libdir}/python2.4/codeop.* ${libdir}/python2.4/dis.* ${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="ml1"
+PR_python-audio="ml0"
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 "
diff --git a/packages/python/python-2.4.3/.mtn2git_empty b/packages/python/python-2.4.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/python/python-2.4.3/.mtn2git_empty
diff --git a/packages/python/python-2.4.2/autohell.patch b/packages/python/python-2.4.3/autohell.patch
index b0eebb9ce8..b0eebb9ce8 100644
--- a/packages/python/python-2.4.2/autohell.patch
+++ b/packages/python/python-2.4.3/autohell.patch
diff --git a/packages/python/python-2.4.2/bindir-libdir.patch b/packages/python/python-2.4.3/bindir-libdir.patch
index 27ae5dce5b..27ae5dce5b 100644
--- a/packages/python/python-2.4.2/bindir-libdir.patch
+++ b/packages/python/python-2.4.3/bindir-libdir.patch
diff --git a/packages/python/python-2.4.2/crosscompile.patch b/packages/python/python-2.4.3/crosscompile.patch
index f917bb2567..f917bb2567 100644
--- a/packages/python/python-2.4.2/crosscompile.patch
+++ b/packages/python/python-2.4.3/crosscompile.patch
diff --git a/packages/python/python-2.4.2/fix-tkinter-detection.patch b/packages/python/python-2.4.3/fix-tkinter-detection.patch
index 602aa8e021..602aa8e021 100644
--- a/packages/python/python-2.4.2/fix-tkinter-detection.patch
+++ b/packages/python/python-2.4.3/fix-tkinter-detection.patch
diff --git a/packages/python/python-egenix-mx-base_2.0.5.bb b/packages/python/python-egenix-mx-base_2.0.6.bb
index 9e7f426928..84bf7e2e3c 100644
--- a/packages/python/python-egenix-mx-base_2.0.5.bb
+++ b/packages/python/python-egenix-mx-base_2.0.6.bb
@@ -12,4 +12,7 @@ S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit distutils
+export INCLUDE = "${STAGING_INCDIR}/${PYTHON_DIR}"
+export LIB = "${STAGING_LIBDIR}"
+
FILES_${PN} += "${datadir}"
diff --git a/packages/python/python-itools_0.13.0.bb b/packages/python/python-itools_0.13.0.bb
new file mode 100644
index 0000000000..7a8225879c
--- /dev/null
+++ b/packages/python/python-itools_0.13.0.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "itools is a python web technologies library"
+SECTION = "devel/python"
+PRIORITY = "optional"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+LICENSE = "LGPL"
+RDEPENDS = "python-core"
+SRCNAME = "itools"
+
+SRC_URI = "http://www.ikaaro.org/download/itools/${SRCNAME}-${PV}.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit distutils
diff --git a/packages/python/python-psyco_1.5.bb b/packages/python/python-psyco_1.5.bb
new file mode 100644
index 0000000000..b633b65061
--- /dev/null
+++ b/packages/python/python-psyco_1.5.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Psyco lets you run your existing Python software much faster, with no change in your source."
+HOMEPAGE = "http://psyco.sourceforge.net"
+SECTION = "devel/python"
+PRIORITY = "optional"
+MAINTAINER = "dkm@kataplop.net"
+LICENSE = "PSF"
+RDEPENDS = "python-core"
+SRCNAME = "psyco"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${SRCNAME}/${SRCNAME}-${PV}-src.tar.gz"
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+COMPATIBLE_HOST = 'i.86.*-linux'
+
+inherit distutils
diff --git a/packages/python/python_2.4.2.bb b/packages/python/python_2.4.3.bb
index 9424589c7d..7d3856d719 100644
--- a/packages/python/python_2.4.2.bb
+++ b/packages/python/python_2.4.3.bb
@@ -5,7 +5,7 @@ SECTION = "devel/python"
PRIORITY = "optional"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
DEPENDS = "python-native readline zlib gdbm openssl tcl tk"
-PR = "ml5"
+PR = "ml0"
PYTHON_MAJMIN = "2.4"
diff --git a/packages/qemu/files/trunk_nodocs.patch b/packages/qemu/files/trunk_nodocs.patch
new file mode 100644
index 0000000000..36977ca0e7
--- /dev/null
+++ b/packages/qemu/files/trunk_nodocs.patch
@@ -0,0 +1,40 @@
+diff -Naur trunk_orig/Makefile trunk/Makefile
+--- trunk_orig/Makefile 2006-04-01 11:01:54.000000000 +0200
++++ trunk/Makefile 2006-04-01 12:40:45.000000000 +0200
+@@ -12,7 +12,7 @@
+ ifdef CONFIG_STATIC
+ LDFLAGS+=-static
+ endif
+-DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1
++DOCS=
+
+ all: dyngen$(EXESUF) $(TOOLS) $(DOCS)
+ for d in $(TARGET_DIRS); do \
+@@ -54,10 +54,10 @@
+ pc-bios/proll.elf \
+ pc-bios/linux_boot.bin "$(datadir)"
+ mkdir -p "$(docdir)"
+- install -m 644 qemu-doc.html qemu-tech.html "$(docdir)"
++# install -m 644 qemu-doc.html qemu-tech.html "$(docdir)"
+ ifndef CONFIG_WIN32
+ mkdir -p "$(mandir)/man1"
+- install qemu.1 qemu-img.1 "$(mandir)/man1"
++# install qemu.1 qemu-img.1 "$(mandir)/man1"
+ mkdir -p "$(datadir)/keymaps"
+ install -m 644 $(addprefix keymaps/,$(KEYMAPS)) "$(datadir)/keymaps"
+ endif
+@@ -122,10 +122,10 @@
+ $(datadir)/ppc_rom.bin \
+ $(datadir)/video.x \
+ $(datadir)/proll.elf \
+- $(datadir)/linux_boot.bin \
+- $(docdir)/qemu-doc.html \
+- $(docdir)/qemu-tech.html \
+- $(mandir)/man1/qemu.1 $(mandir)/man1/qemu-img.1 )
++ $(datadir)/linux_boot.bin
++# $(docdir)/qemu-doc.html \
++# $(docdir)/qemu-tech.html \
++# $(mandir)/man1/qemu.1 $(mandir)/man1/qemu-img.1 )
+
+ ifneq ($(wildcard .depend),)
+ include .depend
diff --git a/packages/qemu/qemu-qop-nogfx-native_svn.bb b/packages/qemu/qemu-qop-nogfx-native_svn.bb
new file mode 100644
index 0000000000..58c65b606b
--- /dev/null
+++ b/packages/qemu/qemu-qop-nogfx-native_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL"
+PV = "0.8.0+svn${SRCDATE}"
+PROVIDES = "qemu-native"
+
+SRC_URI = "svn://nowt.dyndns.org/svn/qemu;module=trunk;proto=https \
+ file://configure.patch;patch=1 \
+ file://trunk_nodocs.patch;patch=1"
+
+S = "${WORKDIR}/trunk"
+
+inherit autotools native
+
+EXTRA_OECONF = "--disable-gcc-check --target-list=arm-user,arm-softmmu --disable-gfx-check"
+
+prefix = "${STAGING_DIR}/${BUILD_SYS}"
+
+# tested to work with gcc4 for arm target only
+# this is purely for others to test, not intended to be used as a replacement for the real qemu
diff --git a/packages/qmake/qmake-native_1.07a.bb b/packages/qmake/qmake-native_1.07a.bb
index d3fd4c78cc..0b8c3e84ec 100644
--- a/packages/qmake/qmake-native_1.07a.bb
+++ b/packages/qmake/qmake-native_1.07a.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.trolltech.com"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
SECTION = "devel"
LICENSE = "GPL QPL"
-PR = "r2"
+PR = "r3"
QTEVER = "qt-embedded-free-3.3.5"
@@ -18,18 +18,13 @@ export QTDIR = "${S}"
EXTRA_OEMAKE = "-e"
do_configure() {
- # Install the OE build templates (linux, linux-uclibc)
- install -d ${S}/mkspecs/linux-oe-g++
- install -d ${S}/mkspecs/linux-uclibc-oe-g++
- install -m 0644 ${WORKDIR}/linux-oe-qmake.conf \
- ${S}/mkspecs/linux-oe-g++/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h \
- ${S}/mkspecs/linux-oe-g++/qplatformdefs.h
- ln -sf ../linux-oe-g++/qmake.conf \
- ${S}/mkspecs/linux-uclibc-oe-g++/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h \
- ${S}/mkspecs/linux-uclibc-oe-g++/qplatformdefs.h
-
+ # Install the OE build templates
+ for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
+ do
+ install -d ${S}/mkspecs/$template
+ install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
+ ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
+ done
QMAKESPEC=
PLATFORM=${HOST_OS}-oe-g++
export PLATFORM
diff --git a/packages/qmake/qmake-native_2.00a.bb b/packages/qmake/qmake-native_2.00a.bb
index cfee87472d..31e8a0d755 100644
--- a/packages/qmake/qmake-native_2.00a.bb
+++ b/packages/qmake/qmake-native_2.00a.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.trolltech.com"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
SECTION = "devel"
LICENSE = "GPL QPL"
-PR = "r4"
+PR = "r5"
DEFAULT_PREFERENCE = "-1"
@@ -20,17 +20,13 @@ export QTDIR = "${S}"
EXTRA_OEMAKE = "-e"
do_configure() {
- # Install the OE build templates (linux, linux-uclibc)
- install -d ${S}/mkspecs/linux-oe-g++
- install -d ${S}/mkspecs/linux-uclibc-oe-g++
- install -m 0644 ${WORKDIR}/linux-oe-qmake.conf \
- ${S}/mkspecs/linux-oe-g++/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h \
- ${S}/mkspecs/linux-oe-g++/qplatformdefs.h
- ln -sf ../linux-oe-g++/qmake.conf \
- ${S}/mkspecs/linux-uclibc-oe-g++/qmake.conf
- ln -sf ../linux-g++/qplatformdefs.h \
- ${S}/mkspecs/linux-uclibc-oe-g++/qplatformdefs.h
+ # Install the OE build templates
+ for template in linux-oe-g++ linux-uclibc-oe-g++ linux-gnueabi-oe-g++
+ do
+ install -d ${S}/mkspecs/$template
+ install -m 0644 ${WORKDIR}/linux-oe-qmake.conf ${S}/mkspecs/$template/qmake.conf
+ ln -sf ../linux-g++/qplatformdefs.h ${S}/mkspecs/$template/qplatformdefs.h
+ done
QMAKESPEC=
PLATFORM=${HOST_OS}-oe-g++
diff --git a/packages/qpdf2/files/gcc4.patch b/packages/qpdf2/files/gcc4.patch
new file mode 100644
index 0000000000..5e90302bd6
--- /dev/null
+++ b/packages/qpdf2/files/gcc4.patch
@@ -0,0 +1,31 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- qpdf2_2.2.1/qdocnotes.h~gcc4 2004-02-17 18:13:18.000000000 +0100
++++ qpdf2_2.2.1/qdocnotes.h 2006-03-20 19:16:38.000000000 +0100
+@@ -1,6 +1,6 @@
+ #include "xmlparser.h"
+ #include <qmap.h>
+-
++class QDocNotes;
+ class QDocNote {
+ public:
+ friend class QDocNotes;
+--- qpdf2_2.2.1/xpdf/TextOutputDev.h~gcc4 2004-02-17 18:13:18.000000000 +0100
++++ qpdf2_2.2.1/xpdf/TextOutputDev.h 2006-03-20 19:19:47.000000000 +0100
+@@ -139,6 +139,13 @@
+ //------------------------------------------------------------------------
+ // TextPool
+ //------------------------------------------------------------------------
++class TextPool;
++class TextLine;
++class TextBlock;
++class TextFlow;
++class TextWordList;
++class TextPage;
++class TextLineFrag;
+
+ class TextPool {
+ public:
diff --git a/packages/qpdf2/qpdf2_2.2.1.bb b/packages/qpdf2/qpdf2_2.2.1.bb
index 6f853339e6..6e31f40bd6 100644
--- a/packages/qpdf2/qpdf2_2.2.1.bb
+++ b/packages/qpdf2/qpdf2_2.2.1.bb
@@ -1,19 +1,19 @@
DESCRIPTION = "QPDF2 is a Viewer for PDF documents. An unnecessary fork based on opie-qpdf."
PRIORITY = "optional"
SECTION = "opie/applications"
+HOMEPAGE = "http://qpdf2.sf.net"
LICENSE = "GPL"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-NOTE = "This is so hacky you won't believe it until you look at the source..."
DEPENDS = "t1lib freetype"
APPNAME = "qpdf"
APPTYPE = "binary"
APPDESKTOP = "${S}/ipkg-render-freetype/opt/QtPalmtop/apps/Applications"
-PR = "r2"
+PR = "r3"
SRC_URI = "${SOURCEFORGE_MIRROR}/qpdf2/qpdf2_2.2.1_20040217b.tgz \
file://hack-the-hack.patch;patch=1 \
file://fix-sigsegv.patch;patch=1 \
- file://fix_qtversion_check.patch;patch=1"
+ file://fix_qtversion_check.patch;patch=1 \
+ file://gcc4.patch;patch=1"
S = "${WORKDIR}/qpdf2_${PV}"
inherit opie
diff --git a/packages/qt/qt-x11-free-4.1.1/.mtn2git_empty b/packages/qt/qt-x11-free-4.1.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/qt/qt-x11-free-4.1.1/.mtn2git_empty
diff --git a/packages/qt/qt-x11-free-4.0.1/cross-compile.patch b/packages/qt/qt-x11-free-4.1.1/cross-compile.patch
index 39d095d7a0..39d095d7a0 100644
--- a/packages/qt/qt-x11-free-4.0.1/cross-compile.patch
+++ b/packages/qt/qt-x11-free-4.1.1/cross-compile.patch
diff --git a/packages/qt/qt-x11-free-4.0.1/fix-resinit-declaration.patch b/packages/qt/qt-x11-free-4.1.1/fix-resinit-declaration.patch
index bc30cab216..bc30cab216 100644
--- a/packages/qt/qt-x11-free-4.0.1/fix-resinit-declaration.patch
+++ b/packages/qt/qt-x11-free-4.1.1/fix-resinit-declaration.patch
diff --git a/packages/qt/qt-x11-free-4.0.1/no-tools.patch b/packages/qt/qt-x11-free-4.1.1/no-tools.patch
index 75a146a838..75a146a838 100644
--- a/packages/qt/qt-x11-free-4.0.1/no-tools.patch
+++ b/packages/qt/qt-x11-free-4.1.1/no-tools.patch
diff --git a/packages/qt/qt-x11-free/gcc4_1-HACK.patch b/packages/qt/qt-x11-free/gcc4_1-HACK.patch
new file mode 100644
index 0000000000..818bced4ee
--- /dev/null
+++ b/packages/qt/qt-x11-free/gcc4_1-HACK.patch
@@ -0,0 +1,28 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- qt-x11-free-3.3.6/src/tools/qstring.h~gcc4_1.patch
++++ qt-x11-free-3.3.6/src/tools/qstring.h
+@@ -60,7 +60,7 @@
+ #endif
+ #endif
+
+-
++#define Q_NO_PACKED_REFERENCE
+ /*****************************************************************************
+ QString class
+ *****************************************************************************/
+@@ -194,9 +194,9 @@
+ char latin1() const { return ucs > 0xff ? 0 : (char) ucs; }
+ ushort unicode() const { return ucs; }
+ #ifdef Q_NO_PACKED_REFERENCE
+- ushort &unicode() { return *(&ucs); }
++ ushort &unicode() { return *((ushort*)&ucs); }
+ #else
+- ushort &unicode() { return ucs; }
++ ushort &unicode() { return (ushort)ucs; }
+ #endif
+ #ifndef QT_NO_CAST_ASCII
+ // like all ifdef'd code this is undocumented
diff --git a/packages/qt/qt-x11-free_3.3.5.bb b/packages/qt/qt-x11-free_3.3.6.bb
index 0f57314971..f92414ac73 100644
--- a/packages/qt/qt-x11-free_3.3.5.bb
+++ b/packages/qt/qt-x11-free_3.3.6.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "Qt/X11 Version ${PV}"
+DESCRIPTION = "Qt/X11 Version ${PV} is a full fledged cross-platform application framework"
SECTION = "x11/libs"
PRIORITY = "optional"
LICENSE = "GPL QPL"
@@ -6,11 +6,12 @@ HOMEPAGE = "http://www.trolltech.com"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
DEPENDS = "uicmoc3-native freetype libx11 xft libxext libxrender libxrandr libxcursor mysql"
PROVIDES = "qt3x11"
-PR = "r10"
+PR = "r0"
SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-free-${PV}.tar.bz2 \
file://configure.patch;patch=1 \
- file://no-examples.patch;patch=1"
+ file://no-examples.patch;patch=1 \
+ file://gcc4_1-HACK.patch;patch=1"
S = "${WORKDIR}/qt-x11-free-${PV}"
inherit qmake-base qt3x11
diff --git a/packages/qt/qt-x11-free_4.0.1.bb b/packages/qt/qt-x11-free_4.1.1.bb
index 32ddca6158..32ddca6158 100644
--- a/packages/qt/qt-x11-free_4.0.1.bb
+++ b/packages/qt/qt-x11-free_4.1.1.bb
diff --git a/packages/qte/qte-2.3.10/fix-errno-exception-spec.patch b/packages/qte/qte-2.3.10/fix-errno-exception-spec.patch
new file mode 100644
index 0000000000..19a5c134c8
--- /dev/null
+++ b/packages/qte/qte-2.3.10/fix-errno-exception-spec.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- qt-2.3.10/src/kernel/qsoundqss_qws.cpp~fix-errno-exception-spec.patch
++++ qt-2.3.10/src/kernel/qsoundqss_qws.cpp
+@@ -51,8 +51,6 @@
+ #include <sys/ioctl.h>
+ #include <sys/soundcard.h>
+
+-extern int errno;
+-
+ #define QT_QWS_SOUND_16BIT 1 // or 0, or undefined for always 0
+ #define QT_QWS_SOUND_STEREO 1 // or 0, or undefined for always 0
+
diff --git a/packages/qte/qte-2.3.10/kernel-keymap.patch b/packages/qte/qte-2.3.10/kernel-keymap.patch
index 7b786eb294..79c0bd07ad 100644
--- a/packages/qte/qte-2.3.10/kernel-keymap.patch
+++ b/packages/qte/qte-2.3.10/kernel-keymap.patch
@@ -1,278 +1,176 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- qt-2.3.10-snapshot-20050131/src/kernel/qkeyboard_qws.cpp~kernel-keymap
-+++ qt-2.3.10-snapshot-20050131/src/kernel/qkeyboard_qws.cpp
-@@ -30,6 +30,42 @@
- **
- **********************************************************************/
-
-+/****************************************************************************
-+**
-+** Keyboard Handling Redesign
-+** Copyright 2003, Chris Larson <kergoth@handhelds.org>
-+** Copyright 2004,2005 Holger Hans Peter Frether <freyther@handhelds.org>
-+**
-+** TODO: (key: . = in progress, x = completed)
-+**
-+** [.] Tty driver should load its initial keymap from the kernel,
-+** thereby ensuring keymap consistency between X, console, and qt/e
-+** [x] Read kernel keymappings.
-+** [x] Read kernel keycode -> unicode map.
-+** [x] Use them, along with the existing keyM, to push events up.
-+** [x] Create a new table, from transformed keycode -> qt keycode, rather
-+** than the existing raw keycode -> qt keycode.
-+** [ ] Adapt handleKey to deal with keys that have no unicode value, such as
-+** keypresses that are mapped to strings in the string table. (e.g. F keys)
-+** [x] Cursor orientation change based on display rotation should not
-+** be bound to Ipaq or 5xxx, but instead as a runtime choice based
-+** on whether or not we're using a Transformed display driver.
-+** [.] Double check that VT handling, particularly with regard to switching,
-+** is handled properly.
-+** [ ] Add a generic means of dealing with additional (outside the realm of
-+** ctrl, alt, shift, altgr) modifiers. Also ensure a means of binding
-+** a keypress/combination to a 'lock' of said additional modifiers.
-+**
-+** Holgers Todo
-+**
-+** [ ] Fix NumLock handling
-+** [ ] Fix Keypad handling
-+** [ ] Fix LED handling (LED_NUM and LED_CAP) don't seem to work
-+** [ ] Fix CTRL+ALT+H (somehow takes the function of CTRL+ALT+BACKSPACE)
-+**
-+**********************************************************************/
-+
-+
- #include "qwindowsystem_qws.h"
- #include "qwsutils_qws.h"
- #include "qgfx_qws.h"
-@@ -45,15 +81,18 @@
- #include <ctype.h>
-
- #include <unistd.h>
--#ifdef _OS_LINUX_
--#include <linux/kd.h>
--#endif
-+#include <sys/wait.h>
- #include <sys/ioctl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <errno.h>
- #include <signal.h>
-+#include <termios.h>
-+#ifdef _OS_LINUX_
-+#include <linux/kd.h>
-+#include <linux/keyboard.h>
-+#endif
-
- #ifdef QT_QWS_TIP2
- #include <qcopchannel_qws.h>
-@@ -135,17 +174,6 @@
- };
- #endif
-
--#ifdef QT_QWS_SL5XXX
--#include <asm/sharp_char.h>
--#endif
--
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)
--#define QT_QWS_AUTOREPEAT_MANUALLY
--#endif
--
--
--
--#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)
- static int dir_keyrot = -1;
-
- static int xform_dirkey(int key)
-@@ -169,7 +197,6 @@
- int xf = qt_screen->transformOrientation() + dir_keyrot;
- return (key-Qt::Key_Left+xf)%4+Qt::Key_Left;
- }
--#endif
-
- #define VTSWITCHSIG SIGUSR2
-
-@@ -300,11 +327,19 @@
- { Qt::Key_F35, 0xffff , 0xffff , 0xffff }, // 21 light
- { Qt::Key_Escape, 0xffff , 0xffff , 0xffff }, // 22
-
-+#ifdef QT_QWS_SL6000
- // Direction key code are for *UNROTATED* display.
-- { Qt::Key_Up, 0xffff , 0xffff , 0xffff }, // 23
-- { Qt::Key_Right, 0xffff , 0xffff , 0xffff }, // 24
-- { Qt::Key_Left, 0xffff , 0xffff , 0xffff }, // 25
-- { Qt::Key_Down, 0xffff , 0xffff , 0xffff }, // 26
-+ { Qt::Key_Left, 0xffff , 0xffff , 0xffff }, // 23
-+ { Qt::Key_Up, 0xffff , 0xffff , 0xffff }, // 24
-+ { Qt::Key_Down, 0xffff , 0xffff , 0xffff }, // 25
-+ { Qt::Key_Right, 0xffff , 0xffff , 0xffff }, // 26
-+#else
-+ // Direction key code are for *UNROTATED* display.
-+ { Qt::Key_Up, 0xffff , 0xffff , 0xffff }, // 23
-+ { Qt::Key_Right, 0xffff , 0xffff , 0xffff }, // 24
-+ { Qt::Key_Left, 0xffff , 0xffff , 0xffff }, // 25
-+ { Qt::Key_Down, 0xffff , 0xffff , 0xffff }, // 26
-+#endif
-
- { Qt::Key_F33, 0xffff , 0xffff , 0xffff }, // 27 OK
- { Qt::Key_F12, 0xffff , 0xffff , 0xffff }, // 28 40 home
-@@ -369,7 +404,7 @@
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
-- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
-+ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
- { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69
-@@ -649,12 +684,61 @@
- public:
- QWSTtyKeyboardHandler(const QString&);
- virtual ~QWSTtyKeyboardHandler();
-+ void readKeyboardMap();
-+ void readUnicodeMap();
-+ void handleKey(unsigned char code);
-
- private slots:
- void readKeyboardData();
-
- private:
-+ void modifyModifier( int map, int modify, bool release );
-+ void modifyLock( unsigned int lock, bool release );
-+ void handleExtra( unsigned int key, bool release );
-+ static void restoreLeds();
-+ static void toggleLed(unsigned int);
-+ int map_to_modif ();
+Index: src/kernel/kernelkeyboard.cpp
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ src/kernel/kernelkeyboard.cpp 2006-04-01 23:42:35.154645456 +0200
+@@ -0,0 +1,701 @@
++/*
+
-+private:
- struct termios origTermData;
-+ unsigned short acm[E_TABSZ];
-+ struct KeyMap {
-+ enum ExtraKey{
-+ Key_AltGr = 0x01ffff,
-+ Key_Console1 = 0x02ffff,
-+ Key_Console2 = 0x03ffff,
-+ Key_Console3 = 0x04ffff,
-+ Key_Console4 = 0x05ffff,
-+ Key_Console5 = 0x06ffff,
-+ Key_Console6 = 0x07ffff,
-+ Key_Console7 = 0x08ffff,
-+ Key_Console8 = 0x09ffff,
-+ Key_Console9 = 0x0affff,
-+ Key_Console10 = 0x0bffff,
-+ Key_Console11 = 0x0cffff,
-+ Key_Console12 = 0x0dffff,
-+ Key_NumLock = 0x0effff,
-+ Key_ShiftLock = 0x0fffff,
-+ Key_CtrlLock = 0x10ffff,
-+ Key_AltLock = 0x11ffff,
-+ Key_AltGrLock = 0x12ffff
-+ };
++ Copyright (C) 2003 Chris Larson
++ Copyright (C) 2004, 2005 Holger Hans Peter Freyther
++ All rights reserved.
+
-+ KeyMap( Qt::Key _key = Qt::Key_unknown, unsigned short _code = 0 )
-+ : key( _key ), code( _code )
-+ {}
-+ KeyMap( ExtraKey _key, unsigned short _code )
-+ : key( _key ), code( _code )
-+ {}
-+ unsigned int key; // 16 Bit
-+ unsigned short code;
-+ };
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
+
-+ KeyMap kernel_map[(1<<KG_CAPSSHIFT)][NR_KEYS];
-+ int current_map;
-+ int modifier;
-+ bool numlock : 1;
-+ bool capslock : 1;
- };
-
-
-@@ -814,6 +898,7 @@
- fn = FALSE;
-
- numLock = FALSE;
-+#if 0
- sharp_kbdctl_modifstat st;
- int dev = ::open("/dev/sharp_kbdctl", O_RDWR);
- if( dev >= 0 ) {
-@@ -825,6 +910,7 @@
- ::close(dev);
- }
- #endif
-+#endif
- #if defined(QT_QWS_IPAQ)
- // iPAQ Action Key has ScanCode 0x60: 0x60|0x80 = 0xe0 == extended mode 1 !
- ipaq_return_pressed = FALSE;
-@@ -954,7 +1040,7 @@
- }
- } else if ( extended == 2 ) {
- switch (code) {
-- case 0x1d:
-+ case 0x1d:
- return;
- case 0x45:
- keyCode = Qt::Key_Pause;
-@@ -1199,7 +1285,7 @@
- unicode = '`';
- } else
- #endif
--
++ Redistributions of source code must retain the above copyright notice,
++ this list of conditions and the following disclaimer.
+
- if (bCtrl)
- unicode = currentKey->ctrl_unicode;
- else if (bCaps)
-@@ -1244,9 +1330,12 @@
- //
- // Tty keyboard
- //
++ Redistributions in binary form must reproduce the above copyright
++ notice, this list of conditions and the following disclaimer in the
++ documentation and/or other materials provided with the distribution.
++
++ Neither the name Chris Larson nor the names of its
++ contributors may be used to endorse or promote products derived
++ from this software without specific prior written permission.
++
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
++ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
++ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
++ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
++ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
++ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++ POSSIBILITY OF SUCH DAMAGE.
++
++*/
++
++/*
++ Copyright (C) 2005 ROAD GmbH
++
++ This program is free software; you can redistribute it
++ and/or modify it under the terms of the GNU General Public
++ License as published by the Free Software Foundation;
++ either version 2 of the License, or (at your option) any
++ later version.
++
++ This program is distributed in the hope that it will be
++ useful, but WITHOUT ANY WARRANTY; without even the implied
++ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
++ PURPOSE. See the GNU General Public License for more
++ details.
++
++ You should have received a copy of the GNU General Public
++ License along with this program; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330,
++ Boston, MA 02111-1307 USA
++
++
++ Changes Done:
++ -ShiftL and ShiftR modifier handling
++ -Keypad handling improved
++ -Handle unmapped keys by lookin them up in the first column
++ -Handle AutoRepeat
++ -Handle Keys >127
++ -Handle Increment and Decrement the Console
++ -Handle the Home Key
++ -Fix handling of Function Keys
++ -Fix handling of the unicode value (to fix QPopupMenu,QAction)
++
++ */
++
++/*
++ This is an alternative implementation of the QWSTtyKeyboardHandler
++ of Trolltech's QtE.
++
++ Instead of using a hardcoded incomplete map, this implementation
++ imports the Keymap from a Linux Kernel.
++
++ */
++
++
++//
++// Tty keyboard
++//
+#include "keyboard_linux_to_qt.h"
-
- QWSTtyKeyboardHandler::QWSTtyKeyboardHandler(const QString& device)
++
++QWSTtyKeyboardHandler::QWSTtyKeyboardHandler(const QString& device)
+ : current_map(0), modifier( 0 ), numlock( false ), capslock( false )
- {
++{
+ restoreLeds();
- kbdFD=open(device.isEmpty() ? "/dev/tty0" : device.latin1(), O_RDWR | O_NDELAY, 0);
-
- if ( kbdFD >= 0 ) {
-@@ -1262,11 +1351,7 @@
- tcgetattr( kbdFD, &termdata );
-
- #if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
--# ifdef QT_QWS_USE_KEYCODES
-- ioctl(kbdFD, KDSKBMODE, K_MEDIUMRAW);
--# else
-- ioctl(kbdFD, KDSKBMODE, K_RAW);
--# endif
++ kbdFD=open(device.isEmpty() ? "/dev/tty0" : device.latin1(), O_RDWR | O_NDELAY, 0);
++
++ if ( kbdFD >= 0 ) {
++ QSocketNotifier *notifier;
++ notifier = new QSocketNotifier( kbdFD, QSocketNotifier::Read, this );
++ connect( notifier, SIGNAL(activated(int)),this,
++ SLOT(readKeyboardData()) );
++
++ // save for restore.
++ tcgetattr( kbdFD, &origTermData );
++
++ struct termios termdata;
++ tcgetattr( kbdFD, &termdata );
++
++#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
+ ioctl(kbdFD, KDSKBMODE, K_MEDIUMRAW);
- #endif
-
- termdata.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
-@@ -1279,6 +1364,9 @@
- cfsetospeed(&termdata, 9600);
- tcsetattr(kbdFD, TCSANOW, &termdata);
-
++#endif
++
++ termdata.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
++ termdata.c_oflag = 0;
++ termdata.c_cflag = CREAD | CS8;
++ termdata.c_lflag = 0;
++ termdata.c_cc[VTIME]=0;
++ termdata.c_cc[VMIN]=1;
++ cfsetispeed(&termdata, 9600);
++ cfsetospeed(&termdata, 9600);
++ tcsetattr(kbdFD, TCSANOW, &termdata);
++
+ readUnicodeMap();
+ readKeyboardMap();
+
- signal(VTSWITCHSIG, vtSwitchHandler);
-
- #if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
-@@ -1300,6 +1388,7 @@
-
- QWSTtyKeyboardHandler::~QWSTtyKeyboardHandler()
- {
++ signal(VTSWITCHSIG, vtSwitchHandler);
++
++#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
++ struct vt_mode vtMode;
++ ioctl(kbdFD, VT_GETMODE, &vtMode);
++
++ // let us control VT switching
++ vtMode.mode = VT_PROCESS;
++ vtMode.relsig = VTSWITCHSIG;
++ vtMode.acqsig = VTSWITCHSIG;
++ ioctl(kbdFD, VT_SETMODE, &vtMode);
++
++ struct vt_stat vtStat;
++ ioctl(kbdFD, VT_GETSTATE, &vtStat);
++ vtQws = vtStat.v_active;
++#endif
++ }
++}
++
++QWSTtyKeyboardHandler::~QWSTtyKeyboardHandler()
++{
+ restoreLeds();
- if (kbdFD >= 0)
- {
-
-@@ -1328,13 +1417,451 @@
- kbdFD = -1;
- }
- }
++ if (kbdFD >= 0)
++ {
++#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
++ struct vt_mode vtMode;
++ ioctl(kbdFD, VT_GETMODE, &vtMode);
++
++ /* Mickey says: "Better give up control of VT switching.
++ * Hey, I really hate that OS-will-reacquire-resources on process-death
++ * kind of thinking!
++ */
++ vtMode.mode = VT_AUTO;
++ vtMode.relsig = 0;
++ vtMode.acqsig = 0;
++ ioctl(kbdFD, VT_SETMODE, &vtMode);
++
++ signal(VTSWITCHSIG, 0);
++ qDebug( "~QWSTtyKeyboardHandler() - released VT." );
++#endif
++
++#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
++ ioctl(kbdFD, KDSKBMODE, K_XLATE);
++#endif
++ tcsetattr(kbdFD, TCSANOW, &origTermData);
++ ::close(kbdFD);
++ kbdFD = -1;
++ }
++}
+void QWSTtyKeyboardHandler::readUnicodeMap()
+{
+ if (kbdFD < 0)
@@ -294,12 +192,13 @@
+
+ for (int key = 0; key < NR_KEYS; ++key) {
+ kbe.kb_index = key;
-+
-+ if (ioctl(kbdFD, KDGKBENT, &kbe) != 0)
-+ continue;
-+
-+ if ((kbe.kb_value == K_HOLE) || (kbe.kb_value == K_NOSUCHMAP))
-+ continue;
++
++
++ if ( (ioctl(kbdFD, KDGKBENT, &kbe) != 0) ||
++ ((kbe.kb_value == K_HOLE) || (kbe.kb_value == K_NOSUCHMAP)) ) {
++ kernel_map[map][key] = KeyMap( KeyMap::Key_NotMapped, 0 );
++ continue;
++ }
+
+ kval = KVAL(kbe.kb_value);
+ switch (KTYP(kbe.kb_value)) {
@@ -309,6 +208,7 @@
+ */
+ case KT_LETTER:
+ case KT_LATIN:
++ case KT_META:
+ kernel_map[map][key] = KeyMap( linux_to_qt[kval], kval );
+ break;
+
@@ -319,12 +219,9 @@
+ case KT_FN:
+ if ( kval <= 19 )
+ kernel_map[map][key] = KeyMap( static_cast<Qt::Key>( Qt::Key_F1 + kval ), kval );
-+ else if ( kval >= 31 && kval <= 33)
-+ kernel_map[map][key] = KeyMap( static_cast<Qt::Key>( Qt::Key_F21 + kval ), kval );
-+ else if ( kval >= 34 && kval <= 45 ) {
-+ int off = kval-34;
-+ kernel_map[map][key] = KeyMap(static_cast<KeyMap::ExtraKey>( KeyMap::Key_Console1+off ), kval );
-+ }else
++ else if ( kval >= 30 && kval <= 44)
++ kernel_map[map][key] = KeyMap( static_cast<Qt::Key>( Qt::Key_F21 + (kval - 30) ), kval );
++ else
+ switch(kbe.kb_value ) {
+ case K_INSERT:
+ kernel_map[map][key] = KeyMap( Qt::Key_Insert, kval );
@@ -351,6 +248,8 @@
+ kernel_map[map][key] = KeyMap( Qt::Key_Pause, kval );
+ break;
+ case K_FIND:
++ kernel_map[map][key] = KeyMap( Qt::Key_Home, kval );
++ break;
+ case K_DO:
+ default:
+ kernel_map[map][key] = KeyMap( Qt::Key_unknown, kval );
@@ -372,7 +271,13 @@
+ case K_HOLD:
+ kernel_map[map][key] = KeyMap( Qt::Key_ScrollLock, kval );
+ break;
-+ case K_HOLE:
++ case K_DECRCONSOLE:
++ kernel_map[map][key] = KeyMap( KeyMap::Key_DecConsole, kval );
++ break;
++ case K_INCRCONSOLE:
++ kernel_map[map][key] = KeyMap( KeyMap::Key_IncConsole, kval );
++ break;
++ case K_HOLE:
+ case K_SH_REGS:
+ case K_SH_MEM:
+ case K_SH_STAT:
@@ -384,8 +289,6 @@
+ case K_CAPSON:
+ case K_COMPOSE:
+ case K_SAK:
-+ case K_DECRCONSOLE:
-+ case K_INCRCONSOLE:
+ case K_SPAWNCONSOLE:
+ case K_BARENUMLOCK:
+ default:
@@ -399,34 +302,34 @@
+ */
+ switch(kbe.kb_value ) {
+ case K_P0:
-+ kernel_map[map][key] = KeyMap( Qt::Key_0, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_0, 48 );
+ break;
+ case K_P1:
-+ kernel_map[map][key] = KeyMap( Qt::Key_1, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_1, 49 );
+ break;
+ case K_P2:
-+ kernel_map[map][key] = KeyMap( Qt::Key_2, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_2, 50 );
+ break;
+ case K_P3:
-+ kernel_map[map][key] = KeyMap( Qt::Key_3, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_3, 51 );
+ break;
+ case K_P4:
-+ kernel_map[map][key] = KeyMap( Qt::Key_4, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_4, 52 );
+ break;
+ case K_P5:
-+ kernel_map[map][key] = KeyMap( Qt::Key_5, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_5, 53 );
+ break;
+ case K_P6:
-+ kernel_map[map][key] = KeyMap( Qt::Key_6, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_6, 54 );
+ break;
+ case K_P7:
-+ kernel_map[map][key] = KeyMap( Qt::Key_7, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_7, 55 );
+ break;
+ case K_P8:
-+ kernel_map[map][key] = KeyMap( Qt::Key_8, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_8, 56 );
+ break;
+ case K_P9:
-+ kernel_map[map][key] = KeyMap( Qt::Key_9, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_9, 57 );
+ break;
+ case K_PPLUS:
+ kernel_map[map][key] = KeyMap( Qt::Key_Plus, kval );
@@ -435,7 +338,7 @@
+ kernel_map[map][key] = KeyMap( Qt::Key_Minus, kval );
+ break;
+ case K_PSTAR:
-+ kernel_map[map][key] = KeyMap( Qt::Key_multiply, kval );
++ kernel_map[map][key] = KeyMap( Qt::Key_multiply, 42 );
+ break;
+ case K_PSLASH:
+ kernel_map[map][key] = KeyMap( Qt::Key_division, kval );
@@ -475,8 +378,14 @@
+ }
+ break;
+
-+ case KT_CONS:
-+ kernel_map[map][key] = KeyMap( Qt::Key_unknown, kval );
++ /*
++ * Console keys
++ */
++ case KT_CONS:
++ if ( kval < 10 )
++ kernel_map[map][key] = KeyMap(static_cast<KeyMap::ExtraKey>( KeyMap::Key_Console1+kval ), kval );
++ else
++ kernel_map[map][key] = KeyMap( Qt::Key_unknown, kval );
+ break;
+
+ case KT_CUR:
@@ -511,8 +420,12 @@
+ kernel_map[map][key] = KeyMap( KeyMap::Key_AltGr, kval );
+ break;
+ case K_SHIFTL:
++ kernel_map[map][key] = KeyMap( KeyMap::Key_ShiftL, kval );
++ break;
+ case K_SHIFTR:
-+ case K_CTRLL:
++ kernel_map[map][key] = KeyMap( KeyMap::Key_ShiftR, kval );
++ break;
++ case K_CTRLL:
+ case K_CTRLR:
+ case K_CAPSSHIFT:
+ default:
@@ -555,9 +468,9 @@
+ if ( !release ) {
+ int term = 0;
+ if ( (modifier & (1<<KG_ALT)) && (modifier & (1<<KG_CTRL)) ) {
-+ if ( key == Qt::Key_Left )
++ if ( key == Qt::Key_Left || key == KeyMap::Key_DecConsole )
+ term = QMAX(vtQws -1, 1 );
-+ else if ( key == Qt::Key_Right )
++ else if ( key == Qt::Key_Right || key == KeyMap::Key_IncConsole )
+ term = QMIN(vtQws +1, 12 );
+ }
+
@@ -598,24 +511,22 @@
+ }
+}
+
-+void QWSTtyKeyboardHandler::handleKey(unsigned char code)
++void QWSTtyKeyboardHandler::handleKey(unsigned int code, bool release)
+{
+ int old_modifier = modifier;
-+ bool release = false;
+ bool mod_key = true;
+
-+ if (code & 0x80)
-+ {
-+ release = true;
-+ code &= 0x7f;
-+ }
-+
+ KeyMap key_map = kernel_map[current_map][code];
-+ unsigned short unicode = acm[key_map.code];
++ if( key_map.key == KeyMap::Key_NotMapped ) {
++ qWarning("Unmapped Key Pressed fixing up map:%d modif:%d code:%d", current_map, modifier, code);
++ key_map = kernel_map[0][code];
++ }
++
++ unsigned short unicode = acm[key_map.code] & 0xff;
+ unsigned int qtKeyCode = key_map.key;
+
-+ if ( !release )
-+ qWarning( "KeyCode: %d KVAL: %d", qtKeyCode, key_map.code );
++// if ( !release )
++// qWarning( "KeyCode: %d KVAL: %d", qtKeyCode, key_map.code );
+// qWarning( "Alt:%d Ctrl:%d Shift:%d Key = %d", modifier & (1<<KG_ALT),
+// modifier & (1<<KG_CTRL),
+// modifier & (1<<KG_SHIFT), key_map.key );
@@ -631,24 +542,36 @@
+ switch (qtKeyCode)
+ {
+ case Qt::Key_Alt:
-+ case Qt::Key_F22:
++ unicode = 0xffff;
+ modif = (1<<KG_ALT);
++ map = modif;
+ break;
+ case Qt::Key_Control:
++ unicode = 0xffff;
+ modif = (1<<KG_CTRL);
+ map = modif;
+ break;
+ case Qt::Key_Shift:
++ unicode = 0xffff;
+ modif = (1<<KG_SHIFT);
+ map = modif;
+ break;
+ case KeyMap::Key_AltGr:
+ map = (1<<KG_ALTGR );
+ break;
++ case KeyMap::Key_ShiftL:
++ unicode = 0xfff;
++ map = (1<<KG_SHIFTL);
++ break;
++ case KeyMap::Key_ShiftR:
++ unicode = 0xfff;
++ map = (1<<KG_SHIFTR);
++ break;
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ case Qt::Key_Up:
+ case Qt::Key_Down:
++ unicode = 0xffff;
+ mod_key = false;
+ if (qt_screen->isTransformed())
+ qtKeyCode = static_cast<Qt::Key>( xform_dirkey(static_cast<int>( qtKeyCode ) ) );
@@ -658,6 +581,7 @@
+ */
+ case Qt::Key_CapsLock:
+ case Qt::Key_NumLock:
++ unicode = 0xffff;
+ lock = true;
+ default:
+ mod_key = false;
@@ -681,16 +605,58 @@
+ if ( modifier == old_modifier && mod_key )
+ return;
+
-+ processKeyEvent(unicode & 0xff, qtKeyCode, map_to_modif(), !release, 0);
++ processKeyEvent(unicode, qtKeyCode, map_to_modif(), !release, 0);
+}
-
- void QWSTtyKeyboardHandler::readKeyboardData()
- {
- unsigned char buf[81];
- int n = ::read(kbdFD, buf, 80 );
- for ( int loop = 0; loop < n; loop++ )
-- doKey(buf[loop]);
-+ handleKey(buf[loop]);
++
++
++/*
++ * We will read the keys off the kernel. We have two cases here
++ * 1. ) keycode < 128, bit8 is the down/up bit and the rest is
++ * is the value of the key. we can simply process it
++ * 2. ) keycode > 128, the first byte is either empty or 0x80.
++ * We need to save the status ( press/release ) the following
++ * two bytes.
++ * The difficulty is we might have not read all keys into the
++ * buffer. This makes the reading of highkeys a bit harder and
++ * I've decided against rereading, or adding a special case for
++ * the 'all' buffers in loop instead we have a simple state machine.
++ */
++void QWSTtyKeyboardHandler::readKeyboardData()
++{
++ unsigned char buf[81];
++ unsigned char code;
++ bool release = false;
++ bool release_bit;
++
++ bool highKey = false;
++ unsigned int highKeyCode = 0;
++ unsigned int highNeedMoreKey = 0;
++
++ int n = ::read(kbdFD, buf, 80 );
++ for ( int loop = 0; loop < n; loop++ ) {
++ code = buf[loop] & 0x7f;
++ release_bit = buf[loop] & 0x80;
++
++ if ( highKey ) {
++ if ( highNeedMoreKey == 2 ) {
++ highNeedMoreKey--;
++ highKeyCode = code << 7;
++ }else if ( highNeedMoreKey == 1 ) {
++ highNeedMoreKey = 0;
++ highKeyCode |= code;
++ highKey = false;
++ if ( highKeyCode > 127 && highKeyCode < NR_KEYS )
++ handleKey( highKeyCode, release );
++ }
++ }else if (code == 0) {
++ highKey = true;
++ highNeedMoreKey = 2;
++ release = release_bit;
++ }else {
++ release = release_bit;
++ handleKey(code, release);
++ }
++ }
+}
+
+void QWSTtyKeyboardHandler::modifyLock( unsigned int lock, bool release ) {
@@ -719,59 +685,282 @@
+ int ret = ioctl(kbdFD, KDGETLED, &leds );
+ leds = leds & led ? (leds & ~led) : (leds | led);
+ ret = ioctl(kbdFD, KDSETLED, &leds );
- }
++}
++
++void QWSTtyKeyboardHandler::processKeyEvent(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ) {
++ static int last_unicode = -1;
++ static int last_keycode = -1;
++
++ autoRepeat = false;
++ if( last_unicode == unicode && last_keycode == keycode && isPress )
++ autoRepeat = true;
++
++ QWSPC101KeyboardHandler::processKeyEvent(unicode, keycode, modifiers, isPress, autoRepeat);
++
++ if ( isPress ) {
++ last_unicode = unicode;
++ last_keycode = keycode;
++ } else {
++ last_unicode = last_keycode = -1;
++ }
++}
+Index: src/kernel/qkeyboard_qws.cpp
+===================================================================
+--- src/kernel/qkeyboard_qws.cpp.orig 2006-04-01 23:36:22.499297680 +0200
++++ src/kernel/qkeyboard_qws.cpp 2006-04-01 23:38:19.913448016 +0200
+@@ -45,15 +45,18 @@
+ #include <ctype.h>
+
+ #include <unistd.h>
+-#ifdef _OS_LINUX_
+-#include <linux/kd.h>
+-#endif
++#include <sys/wait.h>
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <signal.h>
++#include <termios.h>
++#ifdef _OS_LINUX_
++#include <linux/kd.h>
++#include <linux/keyboard.h>
++#endif
- typedef struct {
-@@ -1439,13 +1966,13 @@
- return;
#ifdef QT_QWS_TIP2
- // custom scan codes - translate them and create a key event immediately
-- if( overrideMap && event.value == 0 || overrideMap->find( event.value ) )
-+ if( overrideMap && event.value == 0 || overrideMap->find( event.value ) )
- {
- if( event.value )
- {
- int modifiers = 0;
- QWSServer::KeyMap *km = overrideMap->find( event.value );
-- switch( km->unicode )
-+ switch( km->unicode )
- {
- case Key_Menu:
- case Key_Back:
-@@ -1473,14 +2000,14 @@
- TRUE, FALSE );
- }
- lastPress = km;
-- }
-- else if( lastPress )
-+ }
-+ else if( lastPress )
- {
-- processKeyEvent( lastPress->unicode, lastPress->key_code, 0,
-+ processKeyEvent( lastPress->unicode, lastPress->key_code, 0,
- FALSE, FALSE );
- lastPress = 0;
- }
-- }
-+ }
- else
- #endif
- {
-@@ -1845,10 +2372,10 @@
- handler = new QWSUsbKeyboardHandler(device);
- } else if ( type == "TTY" ) {
- handler = new QWSTtyKeyboardHandler(device);
-- }
-+ }
- else if( type == "Samsung" ) {
- handler = new QWSSamsungKeypadHandler(device);
-- }
-+ }
- else {
- qWarning( "Keyboard type %s:%s unsupported", spec.latin1(), device.latin1() );
+ #include <qcopchannel_qws.h>
+@@ -135,17 +138,6 @@
+ };
+
+
+-#ifdef QT_QWS_SL5XXX
+-#include <asm/sharp_char.h>
+-#endif
+-
+-#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)
+-#define QT_QWS_AUTOREPEAT_MANUALLY
+-#endif
+-
+-
+-
+-#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX)
+ static int dir_keyrot = -1;
+
+ static int xform_dirkey(int key)
+@@ -169,7 +161,6 @@
+ int xf = qt_screen->transformOrientation() + dir_keyrot;
+ return (key-Qt::Key_Left+xf)%4+Qt::Key_Left;
+ }
+-#endif
+
+ #define VTSWITCHSIG SIGUSR2
+
+@@ -643,18 +634,81 @@
+ ioctl(0, KDSETLED, leds);
+ }
+
++/*
++ * This class was extended by:
++ *
++ * Copyright 2002 Chris Larson
++ * Copyright 2004, 2005 Holger Hans Peter Freyther
++ */
+ class QWSTtyKeyboardHandler : public QWSPC101KeyboardHandler
+ {
+ Q_OBJECT
+ public:
+ QWSTtyKeyboardHandler(const QString&);
+ virtual ~QWSTtyKeyboardHandler();
++ void readKeyboardMap();
++ void readUnicodeMap();
++ void handleKey(unsigned int key, bool release);
+
+ private slots:
+ void readKeyboardData();
+
+ private:
++ void modifyModifier( int map, int modify, bool release );
++ void modifyLock( unsigned int lock, bool release );
++ void handleExtra( unsigned int key, bool release );
++ static void restoreLeds();
++ static void toggleLed(unsigned int);
++ int map_to_modif ();
++
++private:
+ struct termios origTermData;
++ unsigned short acm[E_TABSZ];
++ struct KeyMap {
++ enum ExtraKey{
++ Key_AltGr = 0x01ffff,
++ Key_Console1 = 0x02ffff,
++ Key_Console2 = 0x03ffff,
++ Key_Console3 = 0x04ffff,
++ Key_Console4 = 0x05ffff,
++ Key_Console5 = 0x06ffff,
++ Key_Console6 = 0x07ffff,
++ Key_Console7 = 0x08ffff,
++ Key_Console8 = 0x09ffff,
++ Key_Console9 = 0x0affff,
++ Key_Console10 = 0x0bffff,
++ Key_Console11 = 0x0cffff,
++ Key_Console12 = 0x0dffff,
++ Key_NumLock = 0x0effff,
++ Key_ShiftLock = 0x0fffff,
++ Key_CtrlLock = 0x10ffff,
++ Key_AltLock = 0x11ffff,
++ Key_AltGrLock = 0x12ffff,
++ Key_ShiftL = 0x130000,
++ Key_ShiftR = 0x130001,
++ Key_IncConsole= 0x130002,
++ Key_DecConsole= 0x130003,
++ Key_NotMapped = 0x130004,
++ };
++
++ KeyMap( Qt::Key _key = Qt::Key_unknown, unsigned short _code = 0 )
++ : key( _key ), code( _code )
++ {}
++ KeyMap( ExtraKey _key, unsigned short _code )
++ : key( _key ), code( _code )
++ {}
++ unsigned int key; // 16 Bit
++ unsigned short code;
++ };
++
++ KeyMap kernel_map[(1<<KG_CAPSSHIFT)][NR_KEYS];
++ int current_map;
++ int modifier;
++ bool numlock : 1;
++ bool capslock : 1;
++
++protected:
++ void processKeyEvent(int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat );
+ };
+
+
+@@ -814,6 +868,7 @@
+ fn = FALSE;
+
+ numLock = FALSE;
++#if 0
+ sharp_kbdctl_modifstat st;
+ int dev = ::open("/dev/sharp_kbdctl", O_RDWR);
+ if( dev >= 0 ) {
+@@ -825,6 +880,7 @@
+ ::close(dev);
}
---- /dev/null
-+++ qt-2.3.10-snapshot-20050131/src/kernel/keyboard_linux_to_qt.h
+ #endif
++#endif
+ #if defined(QT_QWS_IPAQ)
+ // iPAQ Action Key has ScanCode 0x60: 0x60|0x80 = 0xe0 == extended mode 1 !
+ ipaq_return_pressed = FALSE;
+@@ -1250,98 +1306,10 @@
+ //
+ // Tty keyboard
+ //
+-
+-QWSTtyKeyboardHandler::QWSTtyKeyboardHandler(const QString& device)
+-{
+- kbdFD=open(device.isEmpty() ? "/dev/tty0" : device.latin1(), O_RDWR | O_NDELAY, 0);
+-
+- if ( kbdFD >= 0 ) {
+- QSocketNotifier *notifier;
+- notifier = new QSocketNotifier( kbdFD, QSocketNotifier::Read, this );
+- connect( notifier, SIGNAL(activated(int)),this,
+- SLOT(readKeyboardData()) );
+-
+- // save for restore.
+- tcgetattr( kbdFD, &origTermData );
+-
+- struct termios termdata;
+- tcgetattr( kbdFD, &termdata );
+-
+-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
+-# ifdef QT_QWS_USE_KEYCODES
+- ioctl(kbdFD, KDSKBMODE, K_MEDIUMRAW);
+-# else
+- ioctl(kbdFD, KDSKBMODE, K_RAW);
+-# endif
+-#endif
+-
+- termdata.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP);
+- termdata.c_oflag = 0;
+- termdata.c_cflag = CREAD | CS8;
+- termdata.c_lflag = 0;
+- termdata.c_cc[VTIME]=0;
+- termdata.c_cc[VMIN]=1;
+- cfsetispeed(&termdata, 9600);
+- cfsetospeed(&termdata, 9600);
+- tcsetattr(kbdFD, TCSANOW, &termdata);
+-
+- signal(VTSWITCHSIG, vtSwitchHandler);
+-
+-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
+- struct vt_mode vtMode;
+- ioctl(kbdFD, VT_GETMODE, &vtMode);
+-
+- // let us control VT switching
+- vtMode.mode = VT_PROCESS;
+- vtMode.relsig = VTSWITCHSIG;
+- vtMode.acqsig = VTSWITCHSIG;
+- ioctl(kbdFD, VT_SETMODE, &vtMode);
+-
+- struct vt_stat vtStat;
+- ioctl(kbdFD, VT_GETSTATE, &vtStat);
+- vtQws = vtStat.v_active;
+-#endif
+- }
+-}
+-
+-QWSTtyKeyboardHandler::~QWSTtyKeyboardHandler()
+-{
+- if (kbdFD >= 0)
+- {
+-
+-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
+- struct vt_mode vtMode;
+- ioctl(kbdFD, VT_GETMODE, &vtMode);
+-
+- /* Mickey says: "Better give up control of VT switching.
+- * Hey, I really hate that OS-will-reacquire-resources on process-death
+- * kind of thinking!
+- */
+- vtMode.mode = VT_AUTO;
+- vtMode.relsig = 0;
+- vtMode.acqsig = 0;
+- ioctl(kbdFD, VT_SETMODE, &vtMode);
+-
+- signal(VTSWITCHSIG, 0);
+- qDebug( "~QWSTtyKeyboardHandler() - released VT." );
+-#endif
+-
+-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
+- ioctl(kbdFD, KDSKBMODE, K_XLATE);
+-#endif
+- tcsetattr(kbdFD, TCSANOW, &origTermData);
+- ::close(kbdFD);
+- kbdFD = -1;
+- }
+-}
+-
+-void QWSTtyKeyboardHandler::readKeyboardData()
+-{
+- unsigned char buf[81];
+- int n = ::read(kbdFD, buf, 80 );
+- for ( int loop = 0; loop < n; loop++ )
+- doKey(buf[loop]);
+-}
++/*
++ * Include the alternative implementation
++ */
++#include "kernelkeyboard.cpp"
+
+ typedef struct {
+ unsigned short key;
+Index: src/kernel/keyboard_linux_to_qt.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ src/kernel/keyboard_linux_to_qt.h 2006-04-01 23:37:03.928999408 +0200
@@ -0,0 +1,263 @@
+/*
+ * Generated with a small python utility found at
@@ -779,38 +968,38 @@
+ */
+
+static const Qt::Key linux_to_qt[] = {
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
++Qt::Key_At,
++Qt::Key_A,
++Qt::Key_B,
++Qt::Key_C,
++Qt::Key_D,
++Qt::Key_E,
++Qt::Key_F,
++Qt::Key_G,
+Qt::Key_Backspace,
+Qt::Key_Tab,
-+Qt::Key_unknown, // LineFeed
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown, // No Symbol
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown, // No Symbol
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
-+Qt::Key_unknown,
++Qt::Key_J, // Linefeed
++Qt::Key_K,
++Qt::Key_L,
++Qt::Key_Enter,
++Qt::Key_N,
++Qt::Key_O,
++Qt::Key_P,
++Qt::Key_Q,
++Qt::Key_R,
++Qt::Key_S,
++Qt::Key_T,
++Qt::Key_U,
++Qt::Key_V,
++Qt::Key_W,
++Qt::Key_X,
++Qt::Key_Y,
++Qt::Key_Z,
+Qt::Key_Escape,
-+Qt::Key_unknown,
-+Qt::Key_unknown, // No symbol
-+Qt::Key_unknown,
-+Qt::Key_unknown,
++Qt::Key_Backslash,
++Qt::Key_BracketRight,
++Qt::Key_AsciiCircum,
++Qt::Key_Underscore,
+Qt::Key_Space,
+Qt::Key_Exclam,
+Qt::Key_QuoteDbl,
diff --git a/packages/qte/qte-common_2.3.10.inc b/packages/qte/qte-common_2.3.10.inc
new file mode 100644
index 0000000000..083174ccad
--- /dev/null
+++ b/packages/qte/qte-common_2.3.10.inc
@@ -0,0 +1,168 @@
+DESCRIPTION = "Qt/Embedded Version ${PV}"
+SECTION = "libs"
+PRIORITY = "optional"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+HOMEPAGE = "http://www.trolltech.com"
+LICENSE = "GPL"
+DEPENDS = "zlib libpng jpeg tslib uicmoc-native"
+DEPENDS_mnci = "zlib libpng jpeg uicmoc-native"
+DEPENDS_append_c7x0 = " sharp-aticore-oss"
+PROVIDES = "virtual/qte virtual/libqte2"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/qte-${PV}"
+
+SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz;md5sum=af7ad30113afc500cab7f5b2f4dec0d7 \
+ file://qpe.patch;patch=1 \
+ file://vt-switch.patch;patch=1 \
+ file://daemonize.patch;patch=1 \
+ file://no-moc.patch;patch=1 \
+ file://gcc3.patch;patch=1 \
+ file://gcc4.patch;patch=1 \
+ file://c700-hardware.patch;patch=1 \
+ file://encoding.patch;patch=1 \
+ file://fix-qgfxraster.patch;patch=1 \
+ file://qt-visibility.patch;patch=1 \
+ file://tslib.patch;patch=1 \
+ file://simpad.patch;patch=1 \
+ file://handhelds.patch;patch=1 \
+ file://qiconview-speed.patch;patch=1 \
+ file://qtabbar.patch;patch=1 \
+ file://increase-qxml-robustness.patch;patch=1 \
+ file://qte-fix-iconsize.patch;patch=1 \
+ file://fix-linuxfb-setmode.patch;patch=1 \
+ file://fix-linuxfb-offscreenoverflow.patch;patch=1 \
+ file://fix-qscreen-sync.patch;patch=1 \
+ file://improve-calibration-r0.patch;patch=1 \
+ file://key.patch;patch=1 \
+ file://bidimetrics.patch;patch=5 \
+ file://fix-native-build.patch;patch=1 \
+ file://simpad-defaultkbd.patch;patch=1 \
+ file://fix-errno-exception-spec.patch;patch=1 \
+ file://sharp_char.h \
+ file://switches.h "
+
+SRC_URI_append_simpad = "file://devfs.patch;patch=1 "
+SRC_URI_append_c7x0 = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 \
+ file://c7x0-w100-accel.patch;patch=1 file://suspend-resume-hooks.patch;patch=1 "
+SRC_URI_append_spitz = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 file://kernel-keymap-CXK.patch;patch=1 "
+SRC_URI_append_akita = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 file://kernel-keymap-CXK.patch;patch=1 "
+SRC_URI_append_borzoi = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-corgi.patch;patch=1 file://kernel-keymap-CXK.patch;patch=1 "
+SRC_URI_append_tosa = "file://kernel-keymap.patch;patch=1;pnum=0 file://kernel-keymap-tosa.patch;patch=1 "
+SRC_URI_append_jornada7xx = "file://kernel-keymap.patch;patch=1;pnum=0 file://ipaq_sound_fix.patch;patch=1 "
+SRC_URI_append_jornada56x = "file://kernel-keymap.patch;patch=1;pnum=0 file://ipaq_sound_fix.patch;patch=1 "
+SRC_URI_append_mnci = "file://devfs.patch;patch=1 \
+ file://mnci.patch;patch=1 \
+ file://mnci-touchscreen.patch;patch=1 \
+ file://qkeyboard_qws.h \
+ file://qkeyboard_qws.cpp "
+SRC_URI_append_h3600 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
+SRC_URI_append_h3900 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
+SRC_URI_append_h1910 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
+
+
+S = "${WORKDIR}/qt-${PV}"
+
+export QTDIR = "${S}"
+
+def qte_arch(d):
+ import bb, re
+ arch = bb.data.getVar('TARGET_ARCH', d, 1)
+ if re.match("^i.86$", arch):
+ arch = "x86"
+ elif arch == "x86_64":
+ arch = "x86"
+ elif arch == "mipsel":
+ arch = "mips"
+ return arch
+
+QTE_ARCH := "${@qte_arch(d)}"
+
+EXTRA_OECONF_CONFIG = "-qconfig qpe"
+EXTRA_OECONF_CONFIG_c7x0 = "-qconfig qpe -accel-w100"
+EXTRA_OECONF_CONFIG_native = "-qconfig qpe -qvfb"
+EXTRA_OECONF = "-system-jpeg -system-libpng -system-zlib -no-qvfb -no-xft -no-vnc -gif \
+ -xplatform ${TARGET_OS}-${QTE_ARCH}-g++ ${EXTRA_OECONF_CONFIG} -depths 8,16,32"
+EXTRA_OEMAKE = "-e"
+
+#
+# FIXME: Add more here
+#
+EXTRA_DEFINES = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DWARNING_UNKNOWN_DEVICE"
+EXTRA_DEFINES_collie = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
+EXTRA_DEFINES_poodle = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
+EXTRA_DEFINES_tosa = "-DQT_QWS_TSLIB -DQT_QWS_SL5XXX -DQT_QWS_SL6000"
+EXTRA_DEFINES_h3600 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_h3900 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_h1910 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_a716 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_jornada56x = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_jornada6xx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_jornada7xx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
+EXTRA_DEFINES_simpad = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SIMPAD -DQT_QWS_DEVFS"
+EXTRA_DEFINES_c7x0 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX"
+EXTRA_DEFINES_spitz = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
+EXTRA_DEFINES_akita = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
+EXTRA_DEFINES_borzoi = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
+EXTRA_DEFINES_mnci = " -DQT_QWS_RAMSES -DQT_QWS_DEVFS"
+
+export SYSCONF_CC = "${CC}"
+export SYSCONF_CXX = "${CXX}"
+export SYSCONF_LINK = "${CCLD}"
+export SYSCONF_SHLIB = "${CCLD}"
+export SYSCONF_CFLAGS = "${CFLAGS}"
+export SYSCONF_LINK_SHLIB = "${CCLD}"
+export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fno-exceptions -fno-rtti -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
+#export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fno-exceptions -fno-rtti -fvisibility=hidden -DGCC_SUPPORTS_VISIBILITY -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
+export SYSCONF_LFLAGS = "${LDFLAGS} -lts"
+export SYSCONF_LFLAGS_mnci = "${LDFLAGS}"
+export SYSCONF_MOC = "${STAGING_BINDIR}/moc"
+export SYSCONF_UIC = "${STAGING_BINDIR}/uic"
+
+do_configure_prepend_mnci() {
+ chmod -R a+w ${S}/src/kernel
+ cp ${WORKDIR}/qkeyboard_qws.h ${S}/src/kernel
+ cp ${WORKDIR}/qkeyboard_qws.cpp ${S}/src/kernel
+ mkdir bin
+ ln -sf ${STAGING_BINDIR}/moc bin/moc
+ ln -sf ${STAGING_BINDIR}/uic bin/uic
+}
+
+# generate uclibc and eabi configurations
+do_configure() {
+ for f in ${S}/configs/linux-*-g++-shared; do
+ sed -e 's,-linux-,-linux-uclibc-,g' < $f \
+ > `dirname $f`/`basename $f | sed -e 's,linux-,linux-uclibc-,'`
+ sed -e 's,-linux-,-linux-gnueabi-,g' < $f \
+ > `dirname $f`/`basename $f | sed -e 's,linux-,linux-gnueabi-,'`
+ done
+ echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
+}
+
+do_compile() {
+ unset CC LD CCLD CXX RANLIB AR STRIP CFLAGS LDFLAGS CXXFLAGS CPPFLAGS
+ install -d include/asm/
+ install -m 0644 ${WORKDIR}/sharp_char.h include/asm/
+ install -d include/linux/
+ install -m 0644 ${WORKDIR}/switches.h include/linux/
+
+ # Create symlinks first and then compile the library
+ oe_runmake symlinks
+ oe_runmake src-mt sub-src
+}
+
+do_stage() {
+ rm -rf ${STAGING_DIR}/${HOST_SYS}/qt2
+ install -d ${STAGING_DIR}/${HOST_SYS}/qt2/lib
+ oe_libinstall -so -C lib lib${PN} ${STAGING_DIR}/${HOST_SYS}/qt2/lib
+ rm -f include/qxt.h
+ install -d ${STAGING_DIR}/${HOST_SYS}/qt2/include
+ cp -pfLR include/* ${STAGING_DIR}/${HOST_SYS}/qt2/include
+ cp -pPR lib/fonts ${STAGING_DIR}/${HOST_SYS}/qt2/lib/
+}
+
+do_install() {
+ oe_libinstall -so -C lib lib${PN} ${D}${palmqtdir}/lib/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+FILES_${PN} = "${palmqtdir}"
diff --git a/packages/qte/qte-mt-static_2.3.10.bb b/packages/qte/qte-mt-static_2.3.10.bb
new file mode 100644
index 0000000000..ab0844135c
--- /dev/null
+++ b/packages/qte/qte-mt-static_2.3.10.bb
@@ -0,0 +1,23 @@
+require qte-common_${PV}.inc
+PR = "r0"
+
+EXTRA_OECONF += "-thread -static"
+export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fexceptions -frtti -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
+#export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fexceptions -frtti -fvisibility=hidden -DGCC_SUPPORTS_VISIBILITY -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
+
+do_stage() {
+ rm -rf ${STAGING_DIR}/${HOST_SYS}/qt2
+ install -d ${STAGING_DIR}/${HOST_SYS}/qt2/lib
+ oe_libinstall -a -C lib libqte-mt ${STAGING_DIR}/${HOST_SYS}/qt2/lib
+ rm -f include/qxt.h
+ install -d ${STAGING_DIR}/${HOST_SYS}/qt2/include
+ cp -pfLR include/* ${STAGING_DIR}/${HOST_SYS}/qt2/include
+ cp -pPR lib/fonts ${STAGING_DIR}/${HOST_SYS}/qt2/lib/
+}
+
+do_install() {
+ :
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+FILES_${PN} = "${palmqtdir}"
diff --git a/packages/qte/qte-mt_2.3.10.bb b/packages/qte/qte-mt_2.3.10.bb
new file mode 100644
index 0000000000..eeed231496
--- /dev/null
+++ b/packages/qte/qte-mt_2.3.10.bb
@@ -0,0 +1,11 @@
+require qte-common_${PV}.inc
+
+PR = "r0"
+
+EXTRA_OECONF = "-system-jpeg -system-libpng -system-zlib -no-qvfb -no-xft -no-vnc -gif -thread -static \
+ -xplatform ${TARGET_OS}-${QTE_ARCH}-g++ ${EXTRA_OECONF_CONFIG} -depths 8,16,32"
+export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fexceptions -frtti -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
+#export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fexceptions -frtti -fvisibility=hidden -DGCC_SUPPORTS_VISIBILITY -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+FILES_${PN} = "${palmqtdir}"
diff --git a/packages/qte/qte_2.3.10.bb b/packages/qte/qte_2.3.10.bb
index fc03ca216b..345a585254 100644
--- a/packages/qte/qte_2.3.10.bb
+++ b/packages/qte/qte_2.3.10.bb
@@ -1,166 +1,2 @@
-DESCRIPTION = "Qt/Embedded Version ${PV}"
-SECTION = "libs"
-PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-HOMEPAGE = "http://www.trolltech.com"
-LICENSE = "GPL"
-DEPENDS = "zlib libpng jpeg tslib uicmoc-native"
-DEPENDS_mnci = "zlib libpng jpeg uicmoc-native"
-DEPENDS_append_c7x0 = " sharp-aticore-oss"
-PROVIDES = "virtual/qte virtual/libqte2"
-PR = "r30"
-
-SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz;md5sum=af7ad30113afc500cab7f5b2f4dec0d7 \
- file://qpe.patch;patch=1 \
- file://vt-switch.patch;patch=1 \
- file://daemonize.patch;patch=1 \
- file://no-moc.patch;patch=1 \
- file://gcc3.patch;patch=1 \
- file://gcc4.patch;patch=1 \
- file://c700-hardware.patch;patch=1 \
- file://encoding.patch;patch=1 \
- file://fix-qgfxraster.patch;patch=1 \
- file://qt-visibility.patch;patch=1 \
- file://tslib.patch;patch=1 \
- file://simpad.patch;patch=1 \
- file://handhelds.patch;patch=1 \
- file://qiconview-speed.patch;patch=1 \
- file://qtabbar.patch;patch=1 \
- file://increase-qxml-robustness.patch;patch=1 \
- file://qte-fix-iconsize.patch;patch=1 \
- file://fix-linuxfb-setmode.patch;patch=1 \
- file://fix-linuxfb-offscreenoverflow.patch;patch=1 \
- file://fix-qscreen-sync.patch;patch=1 \
- file://improve-calibration-r0.patch;patch=1 \
- file://key.patch;patch=1 \
- file://bidimetrics.patch;patch=5 \
- file://fix-native-build.patch;patch=1 \
- file://simpad-defaultkbd.patch;patch=1 \
- file://sharp_char.h \
- file://switches.h "
-
-SRC_URI_append_simpad = "file://devfs.patch;patch=1 "
-SRC_URI_append_c7x0 = "file://kernel-keymap.patch;patch=1 file://kernel-keymap-corgi.patch;patch=1 \
- file://c7x0-w100-accel.patch;patch=1 file://suspend-resume-hooks.patch;patch=1 "
-SRC_URI_append_spitz = "file://kernel-keymap.patch;patch=1 file://kernel-keymap-corgi.patch;patch=1 file://kernel-keymap-CXK.patch;patch=1 "
-SRC_URI_append_akita = "file://kernel-keymap.patch;patch=1 file://kernel-keymap-corgi.patch;patch=1 file://kernel-keymap-CXK.patch;patch=1 "
-SRC_URI_append_borzoi = "file://kernel-keymap.patch;patch=1 file://kernel-keymap-corgi.patch;patch=1 file://kernel-keymap-CXK.patch;patch=1 "
-SRC_URI_append_tosa = "file://kernel-keymap.patch;patch=1 file://kernel-keymap-tosa.patch;patch=1 "
-SRC_URI_append_jornada7xx = "file://kernel-keymap.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_jornada56x = "file://kernel-keymap.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_mnci = "file://devfs.patch;patch=1 \
- file://mnci.patch;patch=1 \
- file://mnci-touchscreen.patch;patch=1 \
- file://qkeyboard_qws.h \
- file://qkeyboard_qws.cpp "
-SRC_URI_append_h3600 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_h3900 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
-SRC_URI_append_h1910 = "file://ipaq-keyboard.patch;patch=1 file://ipaq_sound_fix.patch;patch=1 "
-
-
-S = "${WORKDIR}/qt-${PV}"
-
-export QTDIR = "${S}"
-
-def qte_arch(d):
- import bb, re
- arch = bb.data.getVar('TARGET_ARCH', d, 1)
- if re.match("^i.86$", arch):
- arch = "x86"
- elif arch == "x86_64":
- arch = "x86"
- elif arch == "mipsel":
- arch = "mips"
- return arch
-
-QTE_ARCH := "${@qte_arch(d)}"
-
-EXTRA_OECONF_CONFIG = "-qconfig qpe"
-EXTRA_OECONF_CONFIG_c7x0 = "-qconfig qpe -accel-w100"
-EXTRA_OECONF_CONFIG_native = "-qconfig qpe -qvfb"
-EXTRA_OECONF = "-system-jpeg -system-libpng -system-zlib -no-qvfb -no-xft -no-vnc -gif \
- -xplatform ${TARGET_OS}-${QTE_ARCH}-g++ ${EXTRA_OECONF_CONFIG} -depths 8,16,32"
-EXTRA_OEMAKE = "-e"
-
-#
-# FIXME: Add more here
-#
-EXTRA_DEFINES = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DWARNING_UNKNOWN_DEVICE"
-EXTRA_DEFINES_collie = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
-EXTRA_DEFINES_poodle = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SL5XXX"
-EXTRA_DEFINES_tosa = "-DQT_QWS_TSLIB -DQT_QWS_SL5XXX -DQT_QWS_SL6000"
-EXTRA_DEFINES_h3600 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_h3900 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_h1910 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_a716 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_jornada56x = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_jornada6xx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_jornada7xx = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ"
-EXTRA_DEFINES_simpad = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_IPAQ -DQT_QWS_SIMPAD -DQT_QWS_DEVFS"
-EXTRA_DEFINES_c7x0 = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX"
-EXTRA_DEFINES_spitz = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
-EXTRA_DEFINES_akita = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
-EXTRA_DEFINES_borzoi = "-DQT_QWS_TSLIB -DQT_QWS_CUSTOM -DQT_QWS_SLC700 -DQT_QWS_SL5XXX -DQT_QWS_SLCXK"
-EXTRA_DEFINES_mnci = " -DQT_QWS_RAMSES -DQT_QWS_DEVFS"
-
-export SYSCONF_CC = "${CC}"
-export SYSCONF_CXX = "${CXX}"
-export SYSCONF_LINK = "${CCLD}"
-export SYSCONF_SHLIB = "${CCLD}"
-export SYSCONF_CFLAGS = "${CFLAGS}"
-export SYSCONF_LINK_SHLIB = "${CCLD}"
-export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fno-exceptions -fno-rtti -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
-#export SYSCONF_CXXFLAGS = "${CXXFLAGS} -pipe -DQWS -fno-exceptions -fno-rtti -fvisibility=hidden -DGCC_SUPPORTS_VISIBILITY -DNO_DEBUG ${EXTRA_DEFINES} -DUSE_BIDI"
-export SYSCONF_LFLAGS = "${LDFLAGS} -lts"
-export SYSCONF_LFLAGS_mnci = "${LDFLAGS}"
-export SYSCONF_MOC = "${STAGING_BINDIR}/moc"
-export SYSCONF_UIC = "${STAGING_BINDIR}/uic"
-
-do_configure_prepend_mnci() {
- chmod -R a+w ${S}/src/kernel
- cp ${WORKDIR}/qkeyboard_qws.h ${S}/src/kernel
- cp ${WORKDIR}/qkeyboard_qws.cpp ${S}/src/kernel
- mkdir bin
- ln -sf ${STAGING_BINDIR}/moc bin/moc
- ln -sf ${STAGING_BINDIR}/uic bin/uic
-}
-
-# generate uclibc and eabi configurations
-do_configure() {
- for f in ${S}/configs/linux-*-g++-shared; do
- sed -e 's,-linux-,-linux-uclibc-,g' < $f \
- > `dirname $f`/`basename $f | sed -e 's,linux-,linux-uclibc-,'`
- sed -e 's,-linux-,-linux-gnueabi-,g' < $f \
- > `dirname $f`/`basename $f | sed -e 's,linux-,linux-gnueabi-,'`
- done
- echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
-}
-
-do_compile() {
- unset CC LD CCLD CXX RANLIB AR STRIP CFLAGS LDFLAGS CXXFLAGS CPPFLAGS
- install -d include/asm/
- install -m 0644 ${WORKDIR}/sharp_char.h include/asm/
- install -d include/linux/
- install -m 0644 ${WORKDIR}/switches.h include/linux/
-
- # Create symlinks first and then compile the library
- oe_runmake symlinks
- oe_runmake src-mt sub-src
-}
-
-do_stage() {
- rm -rf ${STAGING_DIR}/${HOST_SYS}/qt2
- install -d ${STAGING_DIR}/${HOST_SYS}/qt2/lib
- oe_libinstall -so -C lib libqte ${STAGING_DIR}/${HOST_SYS}/qt2/lib
- rm -f include/qxt.h
- install -d ${STAGING_DIR}/${HOST_SYS}/qt2/include
- cp -pfLR include/* ${STAGING_DIR}/${HOST_SYS}/qt2/include
- cp -pPR lib/fonts ${STAGING_DIR}/${HOST_SYS}/qt2/lib/
-}
-
-do_install() {
- oe_libinstall -so -C lib libqte ${D}${palmqtdir}/lib/
-}
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} = "${palmqtdir}"
+require qte-common_${PV}.inc
+PR = "r40"
diff --git a/packages/qwt/qwt_4.2.0rc1.bb b/packages/qwt/qwt_4.2.0rc1.bb
index 3b93c4c88c..efae3446e9 100644
--- a/packages/qwt/qwt_4.2.0rc1.bb
+++ b/packages/qwt/qwt_4.2.0rc1.bb
@@ -11,7 +11,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/qwt/qwt-${PV}.tgz \
inherit qmake
-EXTRA_QMAKEVARS_POST = "CONFIG-=thread"
+EXTRA_QMAKEVARS_POST = "CONFIG-=thread DEFINES+=QWS"
do_stage() {
oe_libinstall -so -C lib libqwt ${STAGING_LIBDIR}
diff --git a/packages/rsync/rsync_2.6.6.bb b/packages/rsync/rsync_2.6.6.bb
deleted file mode 100644
index 064e924789..0000000000
--- a/packages/rsync/rsync_2.6.6.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-LICENSE = "GPL"
-DESCRIPTION = "A file-synchronization tool"
-SECTION = "console/network"
-PRIORITY = "optional"
-MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
-
-SRC_URI = "http://rsync.samba.org/ftp/rsync/rsync-${PV}.tar.gz"
-
-inherit autotools
-
-EXTRA_OEMAKE='STRIP=""'
diff --git a/packages/rsync/rsync_2.6.5.bb b/packages/rsync/rsync_2.6.7.bb
index 064e924789..b5f8a654dd 100644
--- a/packages/rsync/rsync_2.6.5.bb
+++ b/packages/rsync/rsync_2.6.7.bb
@@ -2,7 +2,7 @@ LICENSE = "GPL"
DESCRIPTION = "A file-synchronization tool"
SECTION = "console/network"
PRIORITY = "optional"
-MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
+PR = "r1"
SRC_URI = "http://rsync.samba.org/ftp/rsync/rsync-${PV}.tar.gz"
diff --git a/packages/samba/samba_3.0.14a.bb b/packages/samba/samba_3.0.14a.bb
index 9bd1c9a001..326f43131f 100644
--- a/packages/samba/samba_3.0.14a.bb
+++ b/packages/samba/samba_3.0.14a.bb
@@ -7,7 +7,7 @@ SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
file://init \
file://quota.patch;patch=1;pnum=0 \
"
-S := ${WORKDIR}/${P}/source
+S = ${WORKDIR}/${P}/source
include samba.inc
inherit update-rc.d
diff --git a/packages/samba/samba_3.0.20.bb b/packages/samba/samba_3.0.20.bb
index 0531ab575e..48fc065650 100644
--- a/packages/samba/samba_3.0.20.bb
+++ b/packages/samba/samba_3.0.20.bb
@@ -7,7 +7,7 @@ SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
file://init \
file://quota.patch;patch=1;pnum=0 \
"
-S := ${WORKDIR}/${P}/source
+S = ${WORKDIR}/${P}/source
include samba.inc
inherit update-rc.d
diff --git a/packages/scw/.mtn2git_empty b/packages/scw/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/scw/.mtn2git_empty
diff --git a/packages/scw/scw_0.4.2.bb b/packages/scw/scw_0.4.2.bb
new file mode 100644
index 0000000000..84a672a12b
--- /dev/null
+++ b/packages/scw/scw_0.4.2.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Scw is a widget set specifically designed for chat programs."
+HOMEPAGE = "http://corrie.scp.fi/users/kalle.vahlman/scw/"
+LICENSE = "LGPL"
+DEPENDS = "gtk+"
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+
+
+SRC_URI = "http://corrie.scp.fi/users/kalle.vahlman/scw/${P}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+autotools_stage_all
+}
diff --git a/packages/slugos-init/files/turnup b/packages/slugos-init/files/turnup
index f7fe0e7960..b365a49dda 100644
--- a/packages/slugos-init/files/turnup
+++ b/packages/slugos-init/files/turnup
@@ -403,6 +403,12 @@ boot_rootfs() {
return 1
};;
*) { echo '#!/bin/sh'
+ echo 'modprobe ehci-hcd'
+ echo 'modprobe ohci-hcd'
+ echo 'modprobe sd_mod'
+ echo 'modprobe usb-storage'
+ echo 'modprobe ext3'
+ echo 'sleep 5'
echo 'leds beep'
test "$sleep" -gt 0 && echo -n "sleep='$sleep' "
test -n "$uuid" && echo -n "UUID='$uuid' "
diff --git a/packages/slugos-init/slugos-init_0.10.bb b/packages/slugos-init/slugos-init_0.10.bb
index 3f1ab456ac..971f6cf288 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 = "r57"
+PR = "r58"
SRC_URI = "file://boot/flash \
file://boot/disk \
diff --git a/packages/sofia-sip/.mtn2git_empty b/packages/sofia-sip/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/sofia-sip/.mtn2git_empty
diff --git a/packages/sofia-sip/sofia-sip_1.11.7.bb b/packages/sofia-sip/sofia-sip_1.11.7.bb
new file mode 100644
index 0000000000..c9afd0de6a
--- /dev/null
+++ b/packages/sofia-sip/sofia-sip_1.11.7.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification."
+HOMEPAGE = "http://sofia-sip.sourceforge.net/"
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+LICENSE = "LGPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+autotools_stage_all
+}
+
+
diff --git a/packages/soundtracker/soundtracker-gtk2_0.6.7.bb b/packages/soundtracker/soundtracker-gtk2_0.6.7.bb
index a42bf4ae21..e5131e904a 100644
--- a/packages/soundtracker/soundtracker-gtk2_0.6.7.bb
+++ b/packages/soundtracker/soundtracker-gtk2_0.6.7.bb
@@ -3,9 +3,9 @@ DEPENDS = "gtk+ libgnomeui audiofile esound-gpe alsa-lib"
LICENSE = "GPL"
SECTION = "x11/multimedia"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-PR = "r0"
+PR = "r1"
-SRC_URI = "http://metamorph0sis.nm.ru/soundtracker-${PV}-2.gtk2.tar.bz2"
+SRC_URI = "http://mutab0r.chat.ru/soundtracker-0.6.7.gtk2.tar.bz2"
S = "${WORKDIR}/soundtracker-${PV}.gtk2"
inherit autotools
@@ -20,4 +20,3 @@ do_install() {
install -d ${D}${bindir}
install -m 0755 app/soundtracker ${D}${bindir}
}
-
diff --git a/packages/soundtracker/soundtracker_0.6.7.bb b/packages/soundtracker/soundtracker_0.6.8.bb
index cc2dc4be8c..b228c03c88 100644
--- a/packages/soundtracker/soundtracker_0.6.7.bb
+++ b/packages/soundtracker/soundtracker_0.6.8.bb
@@ -1,10 +1,14 @@
DESCRIPTION = "Music composition program in the style of AMIGA Impulse Tracker"
+HOMEPAGE = "http://www.soundtracker.org"
DEPENDS = "gtk+-1.2"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
LICENSE = "GPL"
SECTION = "x11/multimedia"
+PR = "r0"
+
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-SRC_URI = "http://www.soundtracker.org/dl/v0.6/soundtracker-${PV}.tar.gz \
- file://remove-chown.patch;patch=1"
+
+SRC_URI = "http://www.soundtracker.org/dl/v0.6/soundtracker-${PV}.tar.gz"
inherit autotools
diff --git a/packages/strace/strace-4.5.14/.mtn2git_empty b/packages/strace/strace-4.5.14/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/strace/strace-4.5.14/.mtn2git_empty
diff --git a/packages/strace/strace-4.5.14/arm-eabi.patch b/packages/strace/strace-4.5.14/arm-eabi.patch
new file mode 100644
index 0000000000..53e27f8ce8
--- /dev/null
+++ b/packages/strace/strace-4.5.14/arm-eabi.patch
@@ -0,0 +1,65 @@
+2006-03-30 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * process.c (change_syscall): Add ARM support.
+ * syscall.c (get_scno): Handle ARM EABI.
+
+Index: strace/process.c
+===================================================================
+--- strace.orig/process.c 2006-03-30 17:36:14.000000000 -0500
++++ strace/process.c 2006-03-30 17:44:16.000000000 -0500
+@@ -694,6 +694,16 @@ int new;
+ 0x100000 | new) < 0)
+ return -1;
+ return 0;
++#elif defined(ARM)
++ /* Some kernels support this, some (pre-2.6.16 or so) don't. */
++# ifndef PTRACE_SET_SYSCALL
++# define PTRACE_SET_SYSCALL 23
++# endif
++
++ if (ptrace (PTRACE_SET_SYSCALL, tcp->pid, 0, new) != 0)
++ return -1;
++
++ return 0;
+ #else
+ #warning Do not know how to handle change_syscall for this architecture
+ #endif /* architecture */
+Index: strace/syscall.c
+===================================================================
+--- strace.orig/syscall.c 2006-03-30 17:36:14.000000000 -0500
++++ strace/syscall.c 2006-03-30 17:44:16.000000000 -0500
+@@ -1108,16 +1108,25 @@ struct tcb *tcp;
+ return 0;
+ }
+
+- if ((scno & 0x0ff00000) != 0x0f900000) {
+- fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n",
+- scno);
+- return -1;
+- }
++ /* Handle the EABI syscall convention. We do not
++ bother converting structures between the two
++ ABIs, but basic functionality should work even
++ if strace and the traced program have different
++ ABIs. */
++ if (scno == 0xef000000) {
++ scno = regs.ARM_r7;
++ } else {
++ if ((scno & 0x0ff00000) != 0x0f900000) {
++ fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n",
++ scno);
++ return -1;
++ }
+
+- /*
+- * Fixup the syscall number
+- */
+- scno &= 0x000fffff;
++ /*
++ * Fixup the syscall number
++ */
++ scno &= 0x000fffff;
++ }
+ }
+
+ if (tcp->flags & TCB_INSYSCALL) {
diff --git a/packages/strace/strace_4.5.14.bb b/packages/strace/strace_4.5.14.bb
new file mode 100644
index 0000000000..cc15d962ae
--- /dev/null
+++ b/packages/strace/strace_4.5.14.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+SECTION = "console/utils"
+PR = "r0"
+
+DESCRIPTION = "strace is a system call tracing tool."
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.bz2 \
+ file://arm-eabi.patch;patch=1"
+
+inherit autotools
+
+export INCLUDES = "-I. -I./linux"
diff --git a/packages/sylpheed/sylpheed_0.9.99-gtk2-20041024.bb b/packages/sylpheed/sylpheed_0.9.99-gtk2-20041024.bb
deleted file mode 100644
index 5312e89a44..0000000000
--- a/packages/sylpheed/sylpheed_0.9.99-gtk2-20041024.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme"
-MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-gtk2/sylpheed-${PV}.tar.gz"
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sylpheed/sylpheed_1.0.0-gtk2-20041224.bb b/packages/sylpheed/sylpheed_1.0.0-gtk2-20041224.bb
deleted file mode 100644
index 3ee58453e5..0000000000
--- a/packages/sylpheed/sylpheed_1.0.0-gtk2-20041224.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme gnutls"
-MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-LICENSE = "GPL"
-PR = "r4"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-gtk2/sylpheed-${PV}.tar.gz \
- file://sylpheed-gnutls.patch;patch=1"
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-EXTRA_OECONF = "--enable-gnutls"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sylpheed/sylpheed_1.9.12.bb b/packages/sylpheed/sylpheed_1.9.12.bb
deleted file mode 100644
index b02aead205..0000000000
--- a/packages/sylpheed/sylpheed_1.9.12.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme gnutls"
-MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-LICENSE = "GPL"
-PR = "r3"
-
-SRC_URI = "http://sylpheed.good-day.net/sylpheed/v1.9/sylpheed-1.9.12.tar.bz2 \
- file://sylpheed-gnutls.patch;patch=1 \
- file://Makefile-am.patch;patch=1"
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-EXTRA_OECONF = "--enable-gnutls"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sylpheed/sylpheed_2.0.0beta6.bb b/packages/sylpheed/sylpheed_2.0.0beta6.bb
deleted file mode 100644
index aa2040b432..0000000000
--- a/packages/sylpheed/sylpheed_2.0.0beta6.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme gnutls"
-MAINTAINER = "Patrick Steiner <patrick.steiner@a1.net>"
-LICENSE = "GPL"
-PR = "r3"
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "http://sylpheed.good-day.net/sylpheed/v2.0beta/sylpheed-2.0.0beta6.tar.bz2 \
- file://sylpheed-gnutls_2.0.0beta6.patch;patch=1 \
- file://sylpheed-gnutls-extra.patch;patch=1 "
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-EXTRA_OECONF = "--enable-gnutls"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sylpheed/sylpheed_2.0.0rc.bb b/packages/sylpheed/sylpheed_2.0.0rc.bb
deleted file mode 100644
index 531d694f98..0000000000
--- a/packages/sylpheed/sylpheed_2.0.0rc.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme gnutls"
-MAINTAINER = "Patrick Steiner <patrick.steiner@a1.net>"
-LICENSE = "GPL"
-PR = "r3"
-DEFAULT_PREFERENCE = "-1"
-
-SRC_URI = "http://sylpheed.good-day.net/sylpheed/v2.0beta/sylpheed-2.0.0rc.tar.bz2 \
- file://sylpheed-gnutls_2.0.0rc.patch;patch=1 \
- file://sylpheed-gnutls-extra.patch;patch=1 "
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-EXTRA_OECONF = "--enable-gnutls"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sylpheed/sylpheed_2.2.2.bb b/packages/sylpheed/sylpheed_2.2.2.bb
deleted file mode 100644
index bc63f0d71b..0000000000
--- a/packages/sylpheed/sylpheed_2.2.2.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SECTION = "x11/network"
-DESCRIPTION = "Mail user agent"
-DEPENDS = "gtk+ gpgme gnutls"
-MAINTAINER = "Patrick Steiner <patrick.steiner@a1.net>"
-LICENSE = "GPL"
-PR = "r3"
-
-SRC_URI = "http://sylpheed.good-day.net/sylpheed/v2.2/sylpheed-${PV}.tar.bz2 \
- file://sylpheed-2.2.2-libsylph-Makefile-am.patch;patch=1 \
- file://sylpheed-2.2.2-src-Makefile-am.patch;patch=1"
-
-
-FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications"
-FILES_${PN}-doc += "${datadir}"
-
-EXTRA_OECONF = "--enable-gnutls"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-do_configure_prepend() {
- mkdir -p m4
-}
-
-inherit autotools
-
-do_install_append() {
- install -d ${D}${datadir}/applications
- install -m 0644 sylpheed.desktop ${D}${datadir}/applications/
- install -d ${D}${datadir}/pixmaps
- install -m 0644 sylpheed.png ${D}${datadir}/pixmaps/
-}
-
diff --git a/packages/sylpheed/sylpheed_2.2.3.bb b/packages/sylpheed/sylpheed_2.2.4.bb
index bc63f0d71b..4756bb200d 100644
--- a/packages/sylpheed/sylpheed_2.2.3.bb
+++ b/packages/sylpheed/sylpheed_2.2.4.bb
@@ -1,7 +1,7 @@
SECTION = "x11/network"
DESCRIPTION = "Mail user agent"
DEPENDS = "gtk+ gpgme gnutls"
-MAINTAINER = "Patrick Steiner <patrick.steiner@a1.net>"
+MAINTAINER = "Graeme Gregory <dp@xora.org.uk>"
LICENSE = "GPL"
PR = "r3"
diff --git a/packages/tapioca/.mtn2git_empty b/packages/tapioca/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/tapioca/.mtn2git_empty
diff --git a/packages/tapioca/libjingle-tapioca_svn.bb b/packages/tapioca/libjingle-tapioca_svn.bb
new file mode 100644
index 0000000000..5004cd4271
--- /dev/null
+++ b/packages/tapioca/libjingle-tapioca_svn.bb
@@ -0,0 +1,18 @@
+PR = "r0"
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>
+LICENSE = "BERKLEY"
+DEPENDS = "openssl ortp speex expat"
+PROVIDES = "libjingle"
+CVSDATE = 20060322
+SRCDATE = ${CVSDATE}
+PV = "0.3.0+tapiocasvn${SRCDATE}"
+
+inherit autotools pkgconfig
+
+SRC_URI = "svn://svn.sourceforge.net/svnroot/tapioca-voip/trunk;module=libjingle;proto=https"
+
+S = "${WORKDIR}/libjingle"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/tapioca/tapioca-xmpp_0.3.0.bb b/packages/tapioca/tapioca-xmpp_0.3.0.bb
new file mode 100644
index 0000000000..4b4dc1414c
--- /dev/null
+++ b/packages/tapioca/tapioca-xmpp_0.3.0.bb
@@ -0,0 +1,14 @@
+PR = "r1"
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>
+HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 dbus libjingle openssl tapioca"
+inherit autotools pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
+
+FILES_${PN} += "${datadir}/dbus* ${datadir}/tapioca* "
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/tapioca/tapioca_0.3.0.bb b/packages/tapioca/tapioca_0.3.0.bb
new file mode 100644
index 0000000000..05ff71b160
--- /dev/null
+++ b/packages/tapioca/tapioca_0.3.0.bb
@@ -0,0 +1,19 @@
+PR = "r1"
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>
+HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0 dbus"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
+FILES_${PN} += "${datadir}/dbus*"
+
+do_stage () {
+ autotools_stage_all
+ install -d ${STAGING_INCDIR}/tapioca/core/
+ install -d ${STAGING_INCDIR}/tapioca/client/
+
+ install -m 644 tapioca/core/*.h ${STAGING_INCDIR}/tapioca/core/
+ install -m 644 tapioca/client/*.h ${STAGING_INCDIR}/tapioca/client/
+}
diff --git a/packages/tapioca/tapiocaui_0.3.0.bb b/packages/tapioca/tapiocaui_0.3.0.bb
new file mode 100644
index 0000000000..d563f307ca
--- /dev/null
+++ b/packages/tapioca/tapiocaui_0.3.0.bb
@@ -0,0 +1,12 @@
+MAINTAINER = "Koen Kooi <Koen@dominion.kabel.utwente.nl>"
+HOMEPAGE = "http://tapioca-voip.sourceforge.net/wiki/index.php/Tapioca"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ glib-2.0 dbus gconf tapioca-xmpp tapioca farsight gst-plugins-farsight"
+RDEPENDS = "tapioca-xmpp"
+PR = "r1"
+
+inherit autotools pkgconfig
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/tapioca-voip/${P}.tar.gz"
+
+FILES_${PN} += "${datadir}/dbus*"
diff --git a/packages/tslib/tslib/akita/tslib.sh b/packages/tslib/tslib/akita/tslib.sh
index dc7484cada..218da0751b 100644
--- a/packages/tslib/tslib/akita/tslib.sh
+++ b/packages/tslib/tslib/akita/tslib.sh
@@ -9,7 +9,7 @@ case `uname -r` in
*)
TSLIB_TSDEVICE=/dev/input/event1
TSLIB_TSEVENTTYPE=INPUT
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-corgi
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/borzoi/tslib.sh b/packages/tslib/tslib/borzoi/tslib.sh
index dc7484cada..218da0751b 100644
--- a/packages/tslib/tslib/borzoi/tslib.sh
+++ b/packages/tslib/tslib/borzoi/tslib.sh
@@ -9,7 +9,7 @@ case `uname -r` in
*)
TSLIB_TSDEVICE=/dev/input/event1
TSLIB_TSEVENTTYPE=INPUT
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-corgi
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/c7x0/tslib.sh b/packages/tslib/tslib/c7x0/tslib.sh
index dc7484cada..218da0751b 100644
--- a/packages/tslib/tslib/c7x0/tslib.sh
+++ b/packages/tslib/tslib/c7x0/tslib.sh
@@ -9,7 +9,7 @@ case `uname -r` in
*)
TSLIB_TSDEVICE=/dev/input/event1
TSLIB_TSEVENTTYPE=INPUT
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-corgi
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/collie/tslib.sh b/packages/tslib/tslib/collie/tslib.sh
index 187b7ce6d2..d9cc02cb1c 100644
--- a/packages/tslib/tslib/collie/tslib.sh
+++ b/packages/tslib/tslib/collie/tslib.sh
@@ -1,10 +1,16 @@
#!/bin/sh
-if (uname -r|grep -q 'embedix'); then
+case `uname -r` in
+2.4*)
TSLIB_TSDEVICE=/dev/ts
TSLIB_TSEVENTTYPE=COLLIE
-else
- TSLIB_TSDEVICE=/dev/input/event0
-fi
+ TSLIB_CONFFILE=/usr/share/tslib/ts.conf-collie-2.4
+ ;;
+*)
+ TSLIB_TSDEVICE=/dev/input/event1
+ TSLIB_TSEVENTTYPE=INPUT
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
+ ;;
+esac
-export TSLIB_TSDEVICE TSLIB_TSEVENTTYPE
+export TSLIB_TSDEVICE TSLIB_TSEVENTTYPE TSLIB_CONFFILE
diff --git a/packages/tslib/tslib/h1940/tslib.sh b/packages/tslib/tslib/h1940/tslib.sh
index 5e5e283962..d83673e259 100644
--- a/packages/tslib/tslib/h1940/tslib.sh
+++ b/packages/tslib/tslib/h1940/tslib.sh
@@ -1,7 +1,7 @@
#!/bin/sh
TSLIB_TSDEVICE=`detect-stylus --device`
-TSLIB_CONFFILE=/usr/share/tslib/ts.conf-h3600
+TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
QWS_MOUSE_PROTO=TPanel
export TSLIB_TSDEVICE TSLIB_CONFFILE QWS_MOUSE_PROTO
diff --git a/packages/tslib/tslib/h2200/tslib.sh b/packages/tslib/tslib/h2200/tslib.sh
index be9448b1dc..0de3534a51 100644
--- a/packages/tslib/tslib/h2200/tslib.sh
+++ b/packages/tslib/tslib/h2200/tslib.sh
@@ -11,7 +11,7 @@ case `uname -r` in
;;
*)
TSLIB_TSDEVICE=`detect-stylus --device`
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-h3600
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/h3600/tslib.sh b/packages/tslib/tslib/h3600/tslib.sh
index 5c446c2610..3c27b075f7 100644
--- a/packages/tslib/tslib/h3600/tslib.sh
+++ b/packages/tslib/tslib/h3600/tslib.sh
@@ -7,7 +7,7 @@ case `uname -r` in
;;
*)
TSLIB_TSDEVICE=`detect-stylus --device`
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-h3600
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/h3900/tslib.sh b/packages/tslib/tslib/h3900/tslib.sh
index be9448b1dc..0de3534a51 100644
--- a/packages/tslib/tslib/h3900/tslib.sh
+++ b/packages/tslib/tslib/h3900/tslib.sh
@@ -11,7 +11,7 @@ case `uname -r` in
;;
*)
TSLIB_TSDEVICE=`detect-stylus --device`
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-h3600
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/h6300/tslib.sh b/packages/tslib/tslib/h6300/tslib.sh
index 21aaad9ca4..548bc918ff 100644
--- a/packages/tslib/tslib/h6300/tslib.sh
+++ b/packages/tslib/tslib/h6300/tslib.sh
@@ -1,7 +1,7 @@
#!/bin/sh
TSLIB_TSDEVICE=`detect-stylus --device`
-TSLIB_CONFFILE=/usr/share/tslib/ts.conf-h6300
+TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
export TSLIB_TSDEVICE TSLIB_CONFFILE
diff --git a/packages/tslib/tslib/ipaq-pxa270/tslib.sh b/packages/tslib/tslib/ipaq-pxa270/tslib.sh
index 72ebcba7c2..3adaba0de8 100644
--- a/packages/tslib/tslib/ipaq-pxa270/tslib.sh
+++ b/packages/tslib/tslib/ipaq-pxa270/tslib.sh
@@ -1,6 +1,6 @@
#!/bin/sh
TSLIB_TSDEVICE=`detect-stylus --device`
-TSLIB_CONFFILE=/usr/share/tslib/ts.conf-h3600
+TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
export TSLIB_TSDEVICE TSLIB_CONFFILE
diff --git a/packages/tslib/tslib/poodle/ts.conf b/packages/tslib/tslib/poodle/ts.conf
deleted file mode 100644
index 2099b9b414..0000000000
--- a/packages/tslib/tslib/poodle/ts.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-module_raw collie
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/tslib/tslib/poodle/tslib.sh b/packages/tslib/tslib/poodle/tslib.sh
index 187b7ce6d2..d9cc02cb1c 100644
--- a/packages/tslib/tslib/poodle/tslib.sh
+++ b/packages/tslib/tslib/poodle/tslib.sh
@@ -1,10 +1,16 @@
#!/bin/sh
-if (uname -r|grep -q 'embedix'); then
+case `uname -r` in
+2.4*)
TSLIB_TSDEVICE=/dev/ts
TSLIB_TSEVENTTYPE=COLLIE
-else
- TSLIB_TSDEVICE=/dev/input/event0
-fi
+ TSLIB_CONFFILE=/usr/share/tslib/ts.conf-collie-2.4
+ ;;
+*)
+ TSLIB_TSDEVICE=/dev/input/event1
+ TSLIB_TSEVENTTYPE=INPUT
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
+ ;;
+esac
-export TSLIB_TSDEVICE TSLIB_TSEVENTTYPE
+export TSLIB_TSDEVICE TSLIB_TSEVENTTYPE TSLIB_CONFFILE
diff --git a/packages/tslib/tslib/simpad/tslib.sh b/packages/tslib/tslib/simpad/tslib.sh
index 8bb94a037f..5301239373 100644
--- a/packages/tslib/tslib/simpad/tslib.sh
+++ b/packages/tslib/tslib/simpad/tslib.sh
@@ -7,7 +7,7 @@ case `uname -r` in
;;
*)
TSLIB_TSDEVICE=/dev/input/event0
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-simpad
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/spitz/tslib.sh b/packages/tslib/tslib/spitz/tslib.sh
index dc7484cada..218da0751b 100644
--- a/packages/tslib/tslib/spitz/tslib.sh
+++ b/packages/tslib/tslib/spitz/tslib.sh
@@ -9,7 +9,7 @@ case `uname -r` in
*)
TSLIB_TSDEVICE=/dev/input/event1
TSLIB_TSEVENTTYPE=INPUT
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-corgi
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/tosa/ts.conf b/packages/tslib/tslib/tosa/ts.conf
deleted file mode 100644
index 07fbbea2a8..0000000000
--- a/packages/tslib/tslib/tosa/ts.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-module_raw corgi
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/tslib/tslib/tosa/tslib.sh b/packages/tslib/tslib/tosa/tslib.sh
index dc7484cada..218da0751b 100644
--- a/packages/tslib/tslib/tosa/tslib.sh
+++ b/packages/tslib/tslib/tosa/tslib.sh
@@ -9,7 +9,7 @@ case `uname -r` in
*)
TSLIB_TSDEVICE=/dev/input/event1
TSLIB_TSEVENTTYPE=INPUT
- TSLIB_CONFFILE=/usr/share/tslib/ts.conf-corgi
+ TSLIB_CONFFILE=/usr/share/tslib/ts-2.6.conf
;;
esac
diff --git a/packages/tslib/tslib/ts.conf-corgi b/packages/tslib/tslib/ts-2.6.conf
index 09309719f2..09309719f2 100644
--- a/packages/tslib/tslib/ts.conf-corgi
+++ b/packages/tslib/tslib/ts-2.6.conf
diff --git a/packages/tslib/tslib/collie/ts.conf b/packages/tslib/tslib/ts.conf-collie-2.4
index 2099b9b414..2099b9b414 100644
--- a/packages/tslib/tslib/collie/ts.conf
+++ b/packages/tslib/tslib/ts.conf-collie-2.4
diff --git a/packages/tslib/tslib/ts.conf-h2200 b/packages/tslib/tslib/ts.conf-h2200
deleted file mode 100644
index 09309719f2..0000000000
--- a/packages/tslib/tslib/ts.conf-h2200
+++ /dev/null
@@ -1,5 +0,0 @@
-module_raw input
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/tslib/tslib/ts.conf-h3600 b/packages/tslib/tslib/ts.conf-h3600
deleted file mode 100644
index 09309719f2..0000000000
--- a/packages/tslib/tslib/ts.conf-h3600
+++ /dev/null
@@ -1,5 +0,0 @@
-module_raw input
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/tslib/tslib/ts.conf-h6300 b/packages/tslib/tslib/ts.conf-h6300
deleted file mode 100644
index 09309719f2..0000000000
--- a/packages/tslib/tslib/ts.conf-h6300
+++ /dev/null
@@ -1,5 +0,0 @@
-module_raw input
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/tslib/tslib/ts.conf-simpad b/packages/tslib/tslib/ts.conf-simpad
deleted file mode 100644
index 09309719f2..0000000000
--- a/packages/tslib/tslib/ts.conf-simpad
+++ /dev/null
@@ -1,5 +0,0 @@
-module_raw input
-module pthres pmin=1
-module variance delta=30
-module dejitter delta=100
-module linear
diff --git a/packages/tslib/tslib_cvs.bb b/packages/tslib/tslib_cvs.bb
index 2513a436a6..02f0c555ae 100644
--- a/packages/tslib/tslib_cvs.bb
+++ b/packages/tslib/tslib_cvs.bb
@@ -1,17 +1,16 @@
SECTION = "base"
DESCRIPTION = "tslib is a touchscreen access library."
PV = "0.0+cvs${SRCDATE}"
-PR = "r32"
+PR = "r33"
SRC_URI_OVERRIDES_PACKAGE_ARCH = "0"
PACKAGE_ARCH_tslib-conf = "${MACHINE_ARCH}"
PACKAGE_ARCH_mnci = "${MACHINE_ARCH}"
SRC_URI = "cvs://cvs:@pubcvs.arm.linux.org.uk/mnt/src/cvsroot;module=tslib \
- file://ts.conf \
- file://ts.conf-h3600 file://ts.conf-h3600-2.4 file://ts.conf-h6300 \
- file://ts.conf-corgi file://ts.conf-corgi-2.4 \
- file://ts.conf-simpad file://ts.conf-simpad-2.4 \
+ file://ts.conf file://ts-2.6.conf \
+ file://ts.conf-h3600-2.4 file://ts.conf-simpad-2.4 \
+ file://ts.conf-corgi-2.4 file://ts.conf-collie-2.4 \
file://tslib.sh"
SRC_URI_append_mnci += " file://devfs.patch;patch=1"
SRC_URI_append_mnci += " file://event1.patch;patch=1"
@@ -40,21 +39,29 @@ do_install_append() {
case ${MACHINE} in
h3600 | h3900 | h1940 | h6300 | h2200 | ipaq-pxa270 | blueangel)
install -d ${D}${datadir}/tslib
- for f in ts.conf-h3600 ts.conf-h3600-2.4 ts.conf-h6300; do
+ for f in ts-2.6.conf ts.conf-h3600-2.4; do
install -m 0644 ${WORKDIR}/$f ${D}${datadir}/tslib/
done
rm -f ${D}${sysconfdir}/ts.conf
;;
c7x0 | spitz | akita | tosa | borzoi )
install -d ${D}${datadir}/tslib
- for f in ts.conf-corgi ts.conf-corgi-2.4; do
+ for f in ts-2.6.conf ts.conf-corgi-2.4; do
install -m 0644 ${WORKDIR}/$f ${D}${datadir}/tslib/
done
rm -f ${D}${sysconfdir}/ts.conf
;;
+ collie | poodle )
+ install -d ${D}${datadir}/tslib
+ for f in ts-2.6.conf ts.conf-collie-2.4; do
+ install -m 0644 ${WORKDIR}/$f ${D}${datadir}/tslib/
+ done
+ rm -f ${D}${sysconfdir}/ts.conf
+ ;;
+
simpad )
install -d ${D}${datadir}/tslib
- for f in ts.conf-simpad ts.conf-simpad-2.4; do
+ for f in ts-2.6.conf ts.conf-simpad-2.4; do
install -m 0644 ${WORKDIR}/$f ${D}${datadir}/tslib/
done
rm -f ${D}${sysconfdir}/ts.conf
diff --git a/packages/ttf-fonts/ttf-dejavu_2.3.bb b/packages/ttf-fonts/ttf-dejavu_2.3.bb
index d627574ac8..304b30cfd6 100644
--- a/packages/ttf-fonts/ttf-dejavu_2.3.bb
+++ b/packages/ttf-fonts/ttf-dejavu_2.3.bb
@@ -3,7 +3,6 @@ LICENSE = "Bitstream Vera"
HOMEPAGE = "http://dejavu.sourceforge.net/wiki/index.php/Main_Page"
MAINTAINER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
-PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-ttf-${PV}-1.tar.gz"
@@ -19,6 +18,3 @@ FILES_ttf-dejavu-sans-mono = "${datadir}/fonts/truetype/DejaVuSansMono*.tt
FILES_ttf-dejavu-sans-condensed = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf"
FILES_ttf-dejavu-serif = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf"
FILES_ttf-dejavu-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf"
-
-RCONFLICTS_ttf-dejavu-sans-mono = "ttf-dejavu-sans-mono-lite"
-RREPLACES_ttf-dejavu-sans-mono = "ttf-dejavu-sans-mono-lite"
diff --git a/packages/ttf-fonts/ttf-gentium_1.02.bb b/packages/ttf-fonts/ttf-gentium_1.02.bb
index 4ec03767f7..c9ad78448c 100644
--- a/packages/ttf-fonts/ttf-gentium_1.02.bb
+++ b/packages/ttf-fonts/ttf-gentium_1.02.bb
@@ -3,7 +3,7 @@ LICENSE = "SIL Open Font License"
HOMEPAGE = "http://scripts.sil.org/gentium"
LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL"
-SRC_URI = "${DEBIAN_MIRROR}/non-free/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz \
+SRC_URI = "${DEBIAN_MIRROR}/main/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz \
file://OFL.gz"
include ttf.inc
diff --git a/packages/udev/files/local.rules b/packages/udev/files/local.rules
index 4bcaaa8aba..5f2efbeb0c 100644
--- a/packages/udev/files/local.rules
+++ b/packages/udev/files/local.rules
@@ -1,5 +1,22 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Media automounting
SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+# Handle network interface setup
SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
diff --git a/packages/udev/files/udev.rules b/packages/udev/files/udev.rules
index 044ababa7f..5c566f6cef 100644
--- a/packages/udev/files/udev.rules
+++ b/packages/udev/files/udev.rules
@@ -28,7 +28,7 @@ BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
# usbfs-like devices
SUBSYSTEM=="usb_device", \
- PROGRAM="/bin/sh -c 'X=%k X=$${X#usbdev} B=$${X%%%%.*} D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
+ PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
# serial devices
KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
diff --git a/packages/udev/udev-084/local.rules b/packages/udev/udev-084/local.rules
new file mode 100644
index 0000000000..bb8459ba23
--- /dev/null
+++ b/packages/udev/udev-084/local.rules
@@ -0,0 +1,28 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Media automounting
+SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
+SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+
+# Handle network interface setup
+SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
+SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
+
+# The first rtc device is symlinked to /dev/rtc
+KERNEL="rtc0", SYMLINK="rtc"
+
+# Try and modprobe for drivers for new hardware
+ACTION="add", DEVPATH="/devices/*", MODALIAS=="?*", RUN+="/sbin/modprobe $modalias"
diff --git a/packages/udev/udev-084/udev.rules b/packages/udev/udev-084/udev.rules
index 6308cb0918..7b4152c5bf 100644
--- a/packages/udev/udev-084/udev.rules
+++ b/packages/udev/udev-084/udev.rules
@@ -28,7 +28,7 @@ BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
# usbfs-like devices
SUBSYSTEM=="usb_device", \
- PROGRAM="/bin/sh -c 'X=%k X=$${X#usbdev} B=$${X%%%%.*} D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
+ PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
# serial devices
KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
diff --git a/packages/udev/udev_084.bb b/packages/udev/udev_084.bb
index 904f73783c..6bafa615d7 100644
--- a/packages/udev/udev_084.bb
+++ b/packages/udev/udev_084.bb
@@ -1,5 +1,3 @@
-DEFAULT_PREFERENCE = "-1"
-
DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
/dev/, handles hotplug events and loads drivers at boot time. It replaces \
the hotplug package and requires a kernel not older than 2.6.12."
@@ -15,7 +13,7 @@ include udev.inc
INITSCRIPT_PARAMS = "start 03 S . start 55 0 6 ."
-PR = "r1"
+PR = "r3"
FILES_${PN} += "${base_libdir}"
UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/ extras/run_directory/"
diff --git a/packages/uicmoc/uicmoc-native-2.3.10/64bit-cleanup.patch b/packages/uicmoc/uicmoc-native-2.3.10/64bit-cleanup.patch
new file mode 100644
index 0000000000..3cca3e0d1d
--- /dev/null
+++ b/packages/uicmoc/uicmoc-native-2.3.10/64bit-cleanup.patch
@@ -0,0 +1,226 @@
+--- qt-2.3.10/src/kernel/qsharedmemory.cpp~64bit 2005-12-14 12:31:39.000000000 +0000
++++ qt-2.3.10/src/kernel/qsharedmemory.cpp 2005-12-14 13:24:41.000000000 +0000
+@@ -36,6 +36,7 @@
+
+ #include <sys/ipc.h>
+ #include <sys/types.h>
++#include <stdint.h>
+
+ #if defined(QT_POSIX_QSHM)
+ #include <fcntl.h>
+@@ -122,8 +123,8 @@
+ if (shmId == -1)
+ shmId = shmget (key, shmSize, 0);
+
+- shmBase = shmat (shmId, 0, 0);
+- if ((int) shmBase == -1 || shmBase == 0)
++ intptr_t shmBase = (intptr_t) shmat (shmId, 0, 0);
++ if (shmBase == -1 || shmBase == 0)
+ return FALSE;
+ else
+ return TRUE;
+--- qt-2.3.10/src/kernel/qapplication_qws.cpp~64bit 2005-12-14 12:15:42.000000000 +0000
++++ qt-2.3.10/src/kernel/qapplication_qws.cpp 2005-12-14 12:19:39.000000000 +0000
+@@ -87,6 +87,7 @@
+ #include <sys/shm.h>
+ #include <sys/sem.h>
+ #include <sys/socket.h>
++#include <stdint.h>
+ #endif
+
+ #include <stdlib.h>
+@@ -2041,7 +2042,7 @@
+ w = widgetAt(*qt_last_x, *qt_last_y, FALSE);
+ if ( !w )
+ w = desktop();
+- QPaintDevice::qwsDisplay()->selectCursor(w, (int)app_cursor->handle());
++ QPaintDevice::qwsDisplay()->selectCursor(w, (intptr_t)app_cursor->handle());
+ }
+
+ void QApplication::restoreOverrideCursor()
+@@ -2060,11 +2061,11 @@
+ cursorStack = 0;
+ qws_overrideCursor = FALSE;
+ if ( w->testWState(WState_OwnCursor) )
+- QPaintDevice::qwsDisplay()->selectCursor(w, (int)w->cursor().handle());
++ QPaintDevice::qwsDisplay()->selectCursor(w, (intptr_t)w->cursor().handle());
+ else
+ QPaintDevice::qwsDisplay()->selectCursor(w, ArrowCursor);
+ } else {
+- QPaintDevice::qwsDisplay()->selectCursor(w, (int)app_cursor->handle());
++ QPaintDevice::qwsDisplay()->selectCursor(w, (intptr_t)app_cursor->handle());
+ }
+ }
+ #endif// QT_NO_CURSOR
+@@ -2635,7 +2636,7 @@
+ }
+ if ( !qws_overrideCursor ) { // is override cursor active?
+ if (curs)
+- QPaintDevice::qwsDisplay()->selectCursor(widget, (int)curs->handle());
++ QPaintDevice::qwsDisplay()->selectCursor(widget, (intptr_t)curs->handle());
+ else
+ QPaintDevice::qwsDisplay()->selectCursor(widget, ArrowCursor);
+ }
+--- qt-2.3.10/src/kernel/qgfxlinuxfb_qws.cpp~64bit 2005-01-23 14:00:46.000000000 +0000
++++ qt-2.3.10/src/kernel/qgfxlinuxfb_qws.cpp 2005-12-14 12:04:56.000000000 +0000
+@@ -42,6 +42,7 @@
+ #include <sys/mman.h>
+ #include <fcntl.h>
+ #include <errno.h>
++#include <stdint.h>
+
+ #include "qgfxlinuxfb_qws.h"
+ #include "qwindowsystem_qws.h"
+@@ -164,7 +165,7 @@
+ MAP_SHARED, fd, 0);
+ data += dataoffset;
+
+- if ((int)data == -1) {
++ if ((intptr_t)data == -1) {
+ perror("mapping /dev/fb0");
+ qWarning("Error: failed to map framebuffer device to memory.");
+ return FALSE;
+@@ -703,7 +704,7 @@
+ psize += 8; // for alignment
+ psize &= ~0x7; // align
+
+- unsigned int pos=(unsigned int)data;
++ uintptr_t pos=(uintptr_t)data;
+ pos += psize;
+ entryp = ((int *)pos);
+ lowest = ((unsigned int *)pos)+1;
+--- qt-2.3.10/src/kernel/qmemorymanager_qws.h~64bit 2005-01-23 14:00:46.000000000 +0000
++++ qt-2.3.10/src/kernel/qmemorymanager_qws.h 2005-12-14 12:00:32.000000000 +0000
+@@ -33,6 +33,9 @@
+ #ifndef QMEMORYMANAGER_H
+ #define QMEMORYMANAGER_H
+
++/* Needed for uintptr_t to allow 64bit clean pointer handling */
++#include <stdint.h>
++
+ #ifndef QT_H
+ #include <qfontmanager_qws.h>
+ #include <qstring.h>
+@@ -126,8 +129,8 @@
+ // constructs from a memory ptr to where the data after the item starts
+ QSMCacheItemPtr(void *data) {
+ char *ptr = (char*)data;
+- if ( (int)ptr != (((int)ptr+3)&~3) )
+- qDebug("err, passed a non-aligned data ptr %x", (int)ptr);
++ if (intptr_t(data)&3!=0)
++ qDebug("err, passed a non-aligned data ptr %p", ptr);
+ d = (QSMCacheItem*)(ptr - sizeof(QSMCacheItem));
+ }
+ // returns a pointer to the data after the item
+--- qt-2.3.10/src/kernel/qwsregionmanager_qws.cpp~64bit 2005-12-14 13:25:06.000000000 +0000
++++ qt-2.3.10/src/kernel/qwsregionmanager_qws.cpp 2005-12-14 13:25:51.000000000 +0000
+@@ -32,6 +32,7 @@
+ #include "qwsdisplay_qws.h"
+ #include "qwsregionmanager_qws.h"
+ #include <stdlib.h>
++#include <stdint.h>
+
+ #ifndef QT_NO_QWS_MULTIPROCESS
+ #include <sys/types.h>
+@@ -286,7 +287,7 @@
+ data = (unsigned char *)shmat( shmId, 0, SHM_RDONLY );
+ }
+
+- return ( shmId != -1 && (int)data != -1 );
++ return ( shmId != -1 && (intptr_t)data != -1 );
+ #else
+ int dataSize = sizeof(QWSRegionHeader) // header
+ + sizeof(QWSRegionIndex) * QT_MAX_REGIONS // + index
+--- qt-2.3.10/src/kernel/qpixmapcache.cpp~64bit 2005-12-14 13:26:43.000000000 +0000
++++ qt-2.3.10/src/kernel/qpixmapcache.cpp 2005-12-14 13:30:33.000000000 +0000
+@@ -38,6 +38,7 @@
+ #include "qpixmapcache.h"
+ #include "qcache.h"
+ #include "qobject.h"
++#include <stdint.h>
+
+
+ // REVISED: paul
+@@ -519,7 +520,7 @@
+ #endif // DEBUG_SHARED_MEMORY_CACHE
+ }
+
+- if ( shmId == -1 || (int)shm == -1 )
++ if ( shmId == -1 || (intptr_t)shm == -1 )
+ qFatal("Cannot attach to shared memory");
+
+ qt_sharedMemoryData = shm->data;
+@@ -536,8 +537,8 @@
+ shm->tail.setFree(false);
+ shm->tail.setNextFree(QSMemPtr());
+ #ifdef THROW_AWAY_UNUSED_PAGES
+- int freePageStart = PAGE_ALIGN((int)&shm->first + sizeof(QSMemNode));
+- int freePagesLength = PAGE_ALIGN((int)&shm->tail) - freePageStart;
++ intptr_t freePageStart = PAGE_ALIGN((intptr_t)&shm->first + sizeof(QSMemNode));
++ intptr_t freePagesLength = PAGE_ALIGN((intptr_t)&shm->tail) - freePageStart;
+ if ( freePagesLength ) {
+ # ifdef DEBUG_SHARED_MEMORY_CACHE
+ qDebug("Initially marking free pages as not needed");
+@@ -770,8 +771,8 @@
+ node = newFreeNode->next();
+
+ #ifdef THROW_AWAY_UNUSED_PAGES
+- int freePageStart = PAGE_ALIGN((int)newFreeNode+sizeof(QSMemNode));
+- int freePagesLength = PAGE_ALIGN((int)node) - freePageStart;
++ intptr_t freePageStart = PAGE_ALIGN((intptr_t)newFreeNode+sizeof(QSMemNode));
++ intptr_t freePagesLength = PAGE_ALIGN((intptr_t)node) - freePageStart;
+ if ( freePagesLength ) {
+ #ifdef DEBUG_SHARED_MEMORY_CACHE
+ qDebug("Marking pages not needed");
+--- qt-2.3.10/src/kernel/qwidget_qws.cpp~64bit 2005-12-14 12:20:46.000000000 +0000
++++ qt-2.3.10/src/kernel/qwidget_qws.cpp 2005-12-14 12:30:35.000000000 +0000
+@@ -50,6 +50,7 @@
+ #include "qwsmanager_qws.h"
+ #include "qwsregionmanager_qws.h"
+ #include "qinputcontext_p.h"
++#include <stdint.h>
+
+ void qt_insert_sip( QWidget*, int, int ); // defined in qapplication_x11.cpp
+ int qt_sip_count( QWidget* ); // --- "" ---
+@@ -633,7 +634,7 @@
+ qt_mouseGrb->releaseMouse();
+
+ qwsDisplay()->grabMouse(this,TRUE);
+- qwsDisplay()->selectCursor(this, (unsigned int)cursor.handle());
++ qwsDisplay()->selectCursor(this, (uintptr_t)cursor.handle());
+ qt_mouseGrb = this;
+ qt_pressGrab = 0;
+ }
+@@ -1840,11 +1841,11 @@
+ void QWidget::updateCursor( const QRegion &r ) const
+ {
+ if ( qt_last_x && (!QWidget::mouseGrabber() || QWidget::mouseGrabber() == this) &&
+- qt_last_cursor != (WId)cursor().handle() && !qws_overrideCursor ) {
++ qt_last_cursor != (uintptr_t)cursor().handle() && !qws_overrideCursor ) {
+ QSize s( qt_screen->width(), qt_screen->height() );
+ QPoint pos = qt_screen->mapToDevice(QPoint(*qt_last_x, *qt_last_y), s);
+ if ( r.contains(pos) )
+- qwsDisplay()->selectCursor((QWidget*)this, (unsigned int)cursor().handle());
++ qwsDisplay()->selectCursor((QWidget*)this, (uintptr_t)cursor().handle());
+ }
+ }
+ #endif
+--- qt-2.3.10/tools/qvfb/qvfbview.cpp~64bit 2005-12-14 13:32:47.000000000 +0000
++++ qt-2.3.10/tools/qvfb/qvfbview.cpp 2005-12-14 13:33:27.000000000 +0000
+@@ -40,6 +40,7 @@
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <math.h>
++#include <stdint.h>
+
+
+ QVFbView::QVFbView( int display_id, int _w, int _h, int d, Rotation r, QWidget *parent,
+@@ -136,7 +137,7 @@
+ data = (unsigned char *)shmat( shmId, 0, 0 );
+ }
+
+- if ( (int)data == -1 ){
++ if ( (intptr_t)data == -1 ){
+ ::close(mouseFd);
+ ::close(keyboardFd);
+ qFatal( "Cannot attach to shared memory %d",shmId );
diff --git a/packages/uicmoc/uicmoc-native-2.3.10/gcc4_1.patch b/packages/uicmoc/uicmoc-native-2.3.10/gcc4_1.patch
new file mode 100644
index 0000000000..550effd7ba
--- /dev/null
+++ b/packages/uicmoc/uicmoc-native-2.3.10/gcc4_1.patch
@@ -0,0 +1,16 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- qt-2.3.10/src/tools/qvaluestack.h~gcc4 2005-01-23 15:00:47.000000000 +0100
++++ qt-2.3.10/src/tools/qvaluestack.h 2006-03-19 02:32:56.000000000 +0100
+@@ -54,7 +54,7 @@
+ {
+ T elem( this->last() );
+ if ( !this->isEmpty() )
+- remove( this->fromLast() );
++ this->remove( this->fromLast() );
+ return elem;
+ }
+ T& top() { return this->last(); }
diff --git a/packages/uicmoc/uicmoc-native_2.3.10.bb b/packages/uicmoc/uicmoc-native_2.3.10.bb
index ca959c1579..c9457e139e 100644
--- a/packages/uicmoc/uicmoc-native_2.3.10.bb
+++ b/packages/uicmoc/uicmoc-native_2.3.10.bb
@@ -1,14 +1,17 @@
DESCRIPTION = "User Interface Generator and Meta Object Compiler (moc) for Qt(E) 2.x"
+HOMEPAGE = "http://www.trolltech.com"
SECTION = "devel"
PRIORITY = "optional"
LICENSE = "GPL QPL"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-PR = "r0"
+PR = "r2"
SRC_URI = "ftp://ftp.trolltech.com/pub/qt/source/qt-embedded-${PV}-free.tar.gz \
file://fix-makefile.patch;patch=1 \
file://gcc3_4.patch;patch=1" \
- file://gcc4.patch;patch=1"
+ file://gcc4.patch;patch=1 \
+ file://gcc4_1.patch;patch=1 \
+ file://64bit-cleanup.patch;patch=1"
S = "${WORKDIR}/qt-${PV}"
inherit native qmake-base
diff --git a/packages/uicmoc/uicmoc3-native-3.3.5/64bit-cleanup.patch b/packages/uicmoc/uicmoc3-native-3.3.5/64bit-cleanup.patch
new file mode 100644
index 0000000000..17836802a6
--- /dev/null
+++ b/packages/uicmoc/uicmoc3-native-3.3.5/64bit-cleanup.patch
@@ -0,0 +1,147 @@
+--- qt-embedded-free-3.3.5/src/embedded/qgfxlinuxfb_qws.cpp~64bit 2005-12-14 15:51:23.000000000 +0000
++++ qt-embedded-free-3.3.5/src/embedded/qgfxlinuxfb_qws.cpp 2005-12-14 15:52:29.000000000 +0000
+@@ -176,7 +176,7 @@
+ MAP_SHARED, fd, 0);
+ data += dataoffset;
+
+- if ((int)data == -1) {
++ if ((intptr_t)data == -1) {
+ perror("mapping /dev/fb0");
+ qWarning("Error: failed to map framebuffer device to memory.");
+ return FALSE;
+@@ -737,7 +737,7 @@
+ psize += 8; // for alignment
+ psize &= ~0x7; // align
+
+- unsigned int pos=(unsigned int)data;
++ uintptr_t pos=(uintptr_t)data;
+ pos += psize;
+ entryp = ((int *)pos);
+ lowest = ((unsigned int *)pos)+1;
+--- qt-embedded-free-3.3.5/src/kernel/qsharedmemory_p.cpp~64bit 2005-12-14 15:34:43.000000000 +0000
++++ qt-embedded-free-3.3.5/src/kernel/qsharedmemory_p.cpp 2005-12-14 15:35:26.000000000 +0000
+@@ -31,6 +31,7 @@
+ **********************************************************************/
+
+ #include "qsharedmemory_p.h"
++#include <stdint.h>
+
+ #if !defined(QT_QWS_NO_SHM)
+
+@@ -132,7 +133,7 @@
+ shmId = shmget (key, shmSize, 0);
+
+ shmBase = shmat (shmId, 0, 0);
+- if ((int) shmBase == -1 || shmBase == 0)
++ if ((intptr_t) shmBase == -1 || shmBase == 0)
+ return FALSE;
+ else
+ return TRUE;
+--- qt-embedded-free-3.3.5/src/kernel/qapplication_qws.cpp~64bit 2005-12-14 15:27:14.000000000 +0000
++++ qt-embedded-free-3.3.5/src/kernel/qapplication_qws.cpp 2005-12-14 15:28:37.000000000 +0000
+@@ -107,6 +107,7 @@
+ #include <locale.h>
+ #include <errno.h>
+ #include <sys/time.h>
++#include <stdint.h>
+
+ #if defined(Q_OS_QNX)
+ #include <sys/select.h>
+@@ -1879,7 +1880,7 @@
+ w = widgetAt(*qt_last_x, *qt_last_y, FALSE);
+ if ( !w )
+ w = desktop();
+- QPaintDevice::qwsDisplay()->selectCursor(w, (int)app_cursor->handle());
++ QPaintDevice::qwsDisplay()->selectCursor(w, (intptr_t)app_cursor->handle());
+ }
+
+ void QApplication::restoreOverrideCursor()
+@@ -1898,11 +1899,11 @@
+ cursorStack = 0;
+ qws_overrideCursor = FALSE;
+ if ( w->testWState(WState_OwnCursor) )
+- QPaintDevice::qwsDisplay()->selectCursor(w, (int)w->cursor().handle());
++ QPaintDevice::qwsDisplay()->selectCursor(w, (intptr_t)w->cursor().handle());
+ else
+ QPaintDevice::qwsDisplay()->selectCursor(w, ArrowCursor);
+ } else {
+- QPaintDevice::qwsDisplay()->selectCursor(w, (int)app_cursor->handle());
++ QPaintDevice::qwsDisplay()->selectCursor(w, (intptr_t)app_cursor->handle());
+ }
+ }
+ #endif// QT_NO_CURSOR
+@@ -2130,7 +2131,7 @@
+ }
+ if ( !qws_overrideCursor ) {
+ if (curs)
+- QPaintDevice::qwsDisplay()->selectCursor(widget, (int)curs->handle());
++ QPaintDevice::qwsDisplay()->selectCursor(widget, (intptr_t)curs->handle());
+ else
+ QPaintDevice::qwsDisplay()->selectCursor(widget, ArrowCursor);
+ }
+--- qt-embedded-free-3.3.5/src/kernel/qfont_qws.cpp~64bit 2005-12-14 15:29:17.000000000 +0000
++++ qt-embedded-free-3.3.5/src/kernel/qfont_qws.cpp 2005-12-14 15:29:54.000000000 +0000
+@@ -49,6 +49,7 @@
+ #include "qgfx_qws.h"
+ #include "qtextengine_p.h"
+ #include "qfontengine_p.h"
++#include <stdint.h>
+
+ QFont::Script QFontPrivate::defaultScript = QFont::UnknownScript;
+
+@@ -133,7 +134,7 @@
+ req.pointSize = req.pixelSize*10;
+
+ if ( ! engineData ) {
+- QFontCache::Key key( req, QFont::NoScript, (int)paintdevice );
++ QFontCache::Key key( req, QFont::NoScript, (intptr_t)paintdevice );
+
+ // look for the requested font in the engine data cache
+ engineData = QFontCache::instance->findEngineData( key );
+--- qt-embedded-free-3.3.5/src/kernel/qwsregionmanager_qws.cpp~64bit 2005-12-14 15:32:12.000000000 +0000
++++ qt-embedded-free-3.3.5/src/kernel/qwsregionmanager_qws.cpp 2005-12-14 15:32:52.000000000 +0000
+@@ -32,6 +32,7 @@
+ #include "qwsdisplay_qws.h"
+ #include "qwsregionmanager_qws.h"
+ #include <stdlib.h>
++#include <stdint.h>
+
+ #ifndef QT_NO_QWS_MULTIPROCESS
+ #include <sys/types.h>
+@@ -288,7 +289,7 @@
+ data = (unsigned char *)shmat( shmId, 0, 0 );
+ }
+
+- return ( shmId != -1 && (int)data != -1 );
++ return ( shmId != -1 && (intptr_t)data != -1 );
+ #else
+ int dataSize = sizeof(QWSRegionHeader) // header
+ + sizeof(QWSRegionIndex) * QT_MAX_REGIONS // + index
+--- qt-embedded-free-3.3.5/src/kernel/qwidget_qws.cpp~64bit 2005-12-14 15:30:36.000000000 +0000
++++ qt-embedded-free-3.3.5/src/kernel/qwidget_qws.cpp 2005-12-14 15:31:37.000000000 +0000
+@@ -53,6 +53,7 @@
+ #include "qwsmanager_qws.h"
+ #include "qwsregionmanager_qws.h"
+ #include "qinputcontext_p.h"
++#include <stdint.h>
+
+ void qt_insert_sip( QWidget*, int, int ); // defined in qapplication_x11.cpp
+ int qt_sip_count( QWidget* ); // --- "" ---
+@@ -631,7 +632,7 @@
+ qt_mouseGrb->releaseMouse();
+
+ qwsDisplay()->grabMouse(this,TRUE);
+- qwsDisplay()->selectCursor(this, (unsigned int)cursor.handle());
++ qwsDisplay()->selectCursor(this, (uintptr_t)cursor.handle());
+ qt_mouseGrb = this;
+ qt_pressGrab = 0;
+ }
+@@ -1845,7 +1846,7 @@
+ QSize s( qt_screen->width(), qt_screen->height() );
+ QPoint pos = qt_screen->mapToDevice(QPoint(*qt_last_x, *qt_last_y), s);
+ if ( r.contains(pos) )
+- qwsDisplay()->selectCursor((QWidget*)this, (unsigned int)cursor().handle());
++ qwsDisplay()->selectCursor((QWidget*)this, (uintptr_t)cursor().handle());
+ }
+ }
+ #endif
diff --git a/packages/uicmoc/uicmoc3-native_3.3.5.bb b/packages/uicmoc/uicmoc3-native_3.3.5.bb
index 6354377bcf..142b3997e0 100644
--- a/packages/uicmoc/uicmoc3-native_3.3.5.bb
+++ b/packages/uicmoc/uicmoc3-native_3.3.5.bb
@@ -1,11 +1,14 @@
DESCRIPTION = "User Interface Generator and Meta Object Compiler (moc) for Qt(E) 3.x"
+HOMEPAGE = "http://www.trolltech.com"
SECTION = "devel"
PRIORITY = "optional"
+MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
LICENSE = "GPL QPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-embedded-free-${PV}.tar.bz2 \
- file://no-examples.patch;patch=1"
+ file://no-examples.patch;patch=1 \
+ file://64bit-cleanup.patch;patch=1"
S = "${WORKDIR}/qt-embedded-free-${PV}"
diff --git a/packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty b/packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uicmoc/uicmoc4-native-4.1.1/.mtn2git_empty
diff --git a/packages/uicmoc/uicmoc4-native-4.0.1/fix-mkspecs.patch b/packages/uicmoc/uicmoc4-native-4.1.1/fix-mkspecs.patch
index 491edde370..491edde370 100644
--- a/packages/uicmoc/uicmoc4-native-4.0.1/fix-mkspecs.patch
+++ b/packages/uicmoc/uicmoc4-native-4.1.1/fix-mkspecs.patch
diff --git a/packages/uicmoc/uicmoc4-native_4.0.1.bb b/packages/uicmoc/uicmoc4-native_4.1.1.bb
index 399215c0eb..59bdd1bc40 100644
--- a/packages/uicmoc/uicmoc4-native_4.0.1.bb
+++ b/packages/uicmoc/uicmoc4-native_4.1.1.bb
@@ -2,10 +2,10 @@ DESCRIPTION = "User-Interface-, Meta-Object-, and Resource Compiler for Qt/[X11|
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL QPL"
-PR = "r1"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz"
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \
- file://fix-mkspecs.patch;patch=1 "
S = "${WORKDIR}/qt-x11-opensource-src-${PV}"
inherit native
diff --git a/packages/upnp/.mtn2git_empty b/packages/upnp/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/upnp/.mtn2git_empty
diff --git a/packages/upnp/libupnp_1.3.1.bb b/packages/upnp/libupnp_1.3.1.bb
new file mode 100644
index 0000000000..80f0999dd6
--- /dev/null
+++ b/packages/upnp/libupnp_1.3.1.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "The Linux* SDK for UPnP* Devices (libupnp) provides developers with an API and open source code for building control points, devices, and bridges that are compliant with Version 1.0 of the Universal Plug and Play Device Architecture Specification."
+HOMEPAGE = "http://upnp.sourceforge.net/"
+MAINTAINER = "Koen Kooi <koen@dominion.kabel.utwente.nl>"
+LICENSE = "BSD"
+
+LEAD_SONAME = "libupnp"
+SRC_URI = "${SOURCEFORGE_MIRROR}/upnp/${P}.tar.gz"
+inherit autotools pkgconfig
+
+
+
+do_stage() {
+autotools_stage_all
+}
+
+
diff --git a/packages/vnc/tightvnc/Makefile b/packages/vnc/tightvnc/Makefile
index 0367fbc702..a684e9c987 100644
--- a/packages/vnc/tightvnc/Makefile
+++ b/packages/vnc/tightvnc/Makefile
@@ -18,6 +18,5 @@ vncviewer.c \
../libvncauth/d3des.c
tightvncviewer : $(SOURCES)
- #/home/dp/zaurus/build-gcc/tmp/cross/bin/arm-linux-gcc -I../include -I/home/dp/zaurus/build-gcc/tmp/staging/arm-linux/include/ -I. -L/home/dp/zaurus/build-gcc/tmp/staging/arm-linux/lib/ -lX11 -lXaw -o vncviewer $(SOURCES)
$(CC) $(CFLAGS) $(LDFLAGS) -I. -I../include -I../libvncauth/ -lX11 -lXaw -ljpeg -lz -o tightvncviewer $(SOURCES)
diff --git a/packages/web/.mtn2git_empty b/packages/web/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/web/.mtn2git_empty
diff --git a/packages/web/web_svn.bb b/packages/web/web_svn.bb
new file mode 100644
index 0000000000..1c8d447c11
--- /dev/null
+++ b/packages/web/web_svn.bb
@@ -0,0 +1,11 @@
+LICENSE = "GPL"
+SECTION = "x11"
+DEPENDS = "libxml2 glib-2.0 gtk+ libglade gtkhtml2 curl gconf js"
+MAINTAINER = "Chris Lord <chris@openedhand.com>"
+DESCRIPTION = "Web is a multi-platform web browsing application."
+
+SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http"
+S = "${WORKDIR}/trunk"
+
+inherit autotools pkgconfig
+
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/might-sleep.patch b/packages/wlan-ng/files/might-sleep.patch
index a156229331..a156229331 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/might-sleep.patch
+++ b/packages/wlan-ng/files/might-sleep.patch
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/more-compat.patch b/packages/wlan-ng/files/more-compat.patch
index 4ce8173f93..4ce8173f93 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/more-compat.patch
+++ b/packages/wlan-ng/files/more-compat.patch
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/msleep-vs-mdelay.patch b/packages/wlan-ng/files/msleep-vs-mdelay.patch
index d98116b07c..d98116b07c 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/msleep-vs-mdelay.patch
+++ b/packages/wlan-ng/files/msleep-vs-mdelay.patch
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/no-compat.patch b/packages/wlan-ng/files/no-compat.patch
index 4f59f0fa5d..4f59f0fa5d 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/no-compat.patch
+++ b/packages/wlan-ng/files/no-compat.patch
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.3/.mtn2git_empty b/packages/wlan-ng/wlan-ng-modules-0.2.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/config.in b/packages/wlan-ng/wlan-ng-modules-0.2.3/config.in
index 69f8ac1db2..c78bef10b6 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/config.in
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/config.in
@@ -1,6 +1,6 @@
WLAN_VERSION=0
WLAN_PATCHLEVEL=2
-WLAN_SUBLEVEL=2
+WLAN_SUBLEVEL=3
WLAN_EXTRAVERSION=
#LINUX_SRC=$(KERNEL_SOURCE)
PCMCIA_SRC=
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/module_param_array.patch b/packages/wlan-ng/wlan-ng-modules-0.2.3/module_param_array.patch
index a22d39dca2..93d0c01bdd 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/module_param_array.patch
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/module_param_array.patch
@@ -1,11 +1,13 @@
---- linux-wlan-ng-0.2.2/src/prism2/driver/prism2_cs.c~ 2005-07-20 19:16:55.000000000 +0200
-+++ linux-wlan-ng-0.2.2/src/prism2/driver/prism2_cs.c 2005-09-01 19:02:59.099563318 +0200
+Index: linux-wlan-ng-0.2.3/src/prism2/driver/prism2_cs.c
+===================================================================
+--- linux-wlan-ng-0.2.3.orig/src/prism2/driver/prism2_cs.c 2005-09-30 18:19:26.000000000 +0200
++++ linux-wlan-ng-0.2.3/src/prism2/driver/prism2_cs.c 2006-02-06 20:23:23.902133136 +0100
@@ -22,12 +22,16 @@
* says.
*/
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) )
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
- #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,5))
+ #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,8))
static int numlist = 4;
module_param_array(irq_list, int, numlist, 0444);
#else
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.2/only-the-modules.patch b/packages/wlan-ng/wlan-ng-modules-0.2.3/only-the-modules.patch
index a119460a1d..a119460a1d 100644
--- a/packages/wlan-ng/wlan-ng-modules-0.2.2/only-the-modules.patch
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/only-the-modules.patch
diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.3/prism2sta_commsqual_defer.patch b/packages/wlan-ng/wlan-ng-modules-0.2.3/prism2sta_commsqual_defer.patch
new file mode 100644
index 0000000000..65e34a326b
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/prism2sta_commsqual_defer.patch
@@ -0,0 +1,17 @@
+Index: linux-wlan-ng-0.2.3/src/prism2/driver/prism2sta.c
+===================================================================
+--- linux-wlan-ng-0.2.3.orig/src/prism2/driver/prism2sta.c 2005-10-07 23:32:44.000000000 +0200
++++ linux-wlan-ng-0.2.3/src/prism2/driver/prism2sta.c 2006-02-21 09:02:21.338239744 +0100
+@@ -2427,11 +2427,7 @@
+ hfa384x2host_16(hw->qual.ANL_currFC));
+
+ /* Reschedule timer */
+- //if (!hw->timer_running) {
+- hw->commsqual_timer.expires = jiffies + HZ;
+- add_timer(&hw->commsqual_timer);
+- hw->timer_running = 1;
+- //}
++ mod_timer(&hw->commsqual_timer, jiffies + HZ);
+
+ done:
+ DBFEXIT;
diff --git a/packages/wlan-ng/wlan-ng-modules_0.2.2.bb b/packages/wlan-ng/wlan-ng-modules.inc
index 177eb41fd6..8be211d4c9 100644
--- a/packages/wlan-ng/wlan-ng-modules_0.2.2.bb
+++ b/packages/wlan-ng/wlan-ng-modules.inc
@@ -4,21 +4,17 @@ SECTION = "kernel/modules"
DEPENDS = "virtual/kernel"
RRECOMMENDS = "wlan-ng-utils"
LICENSE = "GPL"
-PR = "r1"
-# 0.2.1-pre works with the tosa internal wlan chipset, while 0.2.2 does not :/
-DEFAULT_PREFERENCE_tosa = "-1"
-
-SRC_URI = "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \
- file://no-compat.patch;patch=1 \
+SRC_URI = "file://no-compat.patch;patch=1 \
file://msleep-vs-mdelay.patch;patch=1 \
file://might-sleep.patch;patch=1 \
file://only-the-modules.patch;patch=1 \
- file://module_param_array.patch;patch=1 \
+# file://module_param_array.patch;patch=1 \
file://scripts-makefile-hostcc.patch;patch=1 \
file://pcmciasrc.patch;patch=1 \
+ file://usb-owner.patch;patch=1 \
+ file://pcmcia-driver.patch;patch=1 \
file://config.in"
-S = "${WORKDIR}/linux-wlan-ng-${PV}"
inherit module
@@ -29,10 +25,10 @@ do_configure() {
install -m 0655 ${WORKDIR}/config.in ${S}/config.in
oe_runmake LINUX_SRC=${KERNEL_SOURCE} auto_config
- if grep CONFIG_PCMCIA=[ym] ${STAGING_KERNEL_DIR}/kernel-config; then
- echo "PRISM2_PCMCIA=y" >> config.mk
- echo "WLAN_KERN_PCMCIA=y" >> config.mk
- fi
+# if grep CONFIG_PCMCIA=[ym] ${STAGING_KERNEL_DIR}/kernel-config; then
+# echo "PRISM2_PCMCIA=y" >> config.mk
+# echo "WLAN_KERN_PCMCIA=y" >> config.mk
+# fi
echo "TARGET_ROOT_ON_HOST=${D}/" >> config.mk
echo "TARGET_MODDIR=${D}/lib/modules/${KERNEL_VERSION}/wlan-ng" >> config.mk
echo "CC=${KERNEL_CC}" >> config.mk
@@ -62,4 +58,12 @@ do_install() {
rm -f ${KERNEL_SOURCE}/../../config.mk
}
-FILES_${PN} = "/lib"
+PACKAGES = "wlan-ng-modules-usb wlan-ng-modules-cs wlan-ng-modules-pci wlan-ng-modules-p80211"
+FILES_wlan-ng-modules-p80211 = "/lib/modules/${KERNEL_VERSION}/wlan-ng/p80211${KERNEL_OBJECT_SUFFIX}"
+FILES_wlan-ng-modules-usb = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_usb${KERNEL_OBJECT_SUFFIX}"
+FILES_wlan-ng-modules-cs = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_cs${KERNEL_OBJECT_SUFFIX}"
+FILES_wlan-ng-modules-pci = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_pci${KERNEL_OBJECT_SUFFIX} \
+ /lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_plx${KERNEL_OBJECT_SUFFIX}"
+RDEPENDS_wlan-ng-modules-usb = "wlan-ng-modules-p80211"
+RDEPENDS_wlan-ng-modules-cs = "wlan-ng-modules-p80211"
+RDEPENDS_wlan-ng-modules-pci = "wlan-ng-modules-p80211"
diff --git a/packages/wlan-ng/wlan-ng-modules/.mtn2git_empty b/packages/wlan-ng/wlan-ng-modules/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-modules/config.in b/packages/wlan-ng/wlan-ng-modules/config.in
new file mode 100644
index 0000000000..a2b245e967
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules/config.in
@@ -0,0 +1,21 @@
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=2
+WLAN_SUBLEVEL=3
+WLAN_EXTRAVERSION=svn
+#LINUX_SRC=$(KERNEL_SOURCE)
+PCMCIA_SRC=
+PREFIX=
+INST_EXEDIR=/sbin
+#TARGET_ROOT_ON_HOST=
+#RC_DIR=/etc/init.d
+PCMCIA_DIR=/etc/pcmcia
+SYSV_INIT=y
+INSTALL_DEPMOD=
+WLAN_DEBUG=n
+CROSS_COMPILE_ENABLED=n
+CROSS_COMPILE=
+HOST_COMPILE=
+PRISM2_PLX=n
+PRISM2_PCMCIA=n
+PRISM2_PCI=n
+PRISM2_USB=y
diff --git a/packages/wlan-ng/wlan-ng-modules/only-the-modules.patch b/packages/wlan-ng/wlan-ng-modules/only-the-modules.patch
new file mode 100644
index 0000000000..16d2bf3a6c
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules/only-the-modules.patch
@@ -0,0 +1,31 @@
+Index: linux-wlan-ng-devel/src/Makefile
+===================================================================
+--- linux-wlan-ng-devel.orig/src/Makefile 2006-02-21 11:41:23.000000000 +0100
++++ linux-wlan-ng-devel/src/Makefile 2006-02-21 12:58:05.796955176 +0100
+@@ -44,10 +44,9 @@
+
+ -include ../config.mk
+
+-DIRS=p80211 prism2 shared wlanctl nwepgen \
+- mkmeta wlancfg
+-ALL_DIRS=mkmeta p80211 prism2 shared wlanctl \
+- nwepgen wlancfg
++
++DIRS=p80211 prism2 shared mkmeta
++ALL_DIRS=mkmeta p80211 prism2 shared
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
+Index: linux-wlan-ng-devel/src/prism2/Makefile
+===================================================================
+--- linux-wlan-ng-devel.orig/src/prism2/Makefile 2006-02-21 11:41:23.000000000 +0100
++++ linux-wlan-ng-devel/src/prism2/Makefile 2006-02-21 12:57:28.660600760 +0100
+@@ -44,7 +44,7 @@
+
+ -include ../../config.mk
+
+-DIRS=driver ridlist download
++DIRS=driver ridlist
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
diff --git a/packages/wlan-ng/wlan-ng-modules/pcmcia-driver.patch b/packages/wlan-ng/wlan-ng-modules/pcmcia-driver.patch
new file mode 100644
index 0000000000..429452f715
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules/pcmcia-driver.patch
@@ -0,0 +1,84 @@
+Index: trunk/src/prism2/driver/prism2_cs.c
+===================================================================
+--- trunk.orig/src/prism2/driver/prism2_cs.c 2006-03-23 08:45:02.000000000 +0100
++++ trunk/src/prism2/driver/prism2_cs.c 2006-03-23 09:14:21.777552944 +0100
+@@ -45,6 +45,8 @@
+ static void prism2sta_config(dev_link_t *link);
+ static void prism2sta_release(u_long arg);
+ static int prism2sta_event (event_t event, int priority, event_callback_args_t *args);
++static int prism2sta_suspend1(struct pcmcia_device *dev);
++static int prism2sta_resume1(struct pcmcia_device *dev);
+
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68))
+ /*----------------------------------------------------------------
+@@ -140,13 +142,23 @@
+ .drv = {
+ .name = "prism2_cs",
+ },
+- .attach = prism2sta_attach,
+- .detach = prism2sta_detach,
+- .owner = THIS_MODULE,
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15))
++ .probe = prism2sta_attach,
++ .remove = prism2sta_detach,
++ .suspend= prism2sta_suspend1,
++ .resume = prism2sta_resume1,
++#else
++ .attach = prism2sta_attach,
++ .detach = prism2sta_detach,
++#endif
++ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13))
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15))
++ .event = prism2sta_event,
++#endif
+ .id_table = prism2_cs_ids,
+- .event = prism2sta_event,
+ #endif
++
+ };
+ #endif /* kernel_version */
+
+@@ -361,7 +373,41 @@
+ return;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15))
++static int prism2sta_suspend1(struct pcmcia_device *dev)
++{
++ dev_link_t *link = dev_to_instance(dev);
++ wlandevice_t *wlandev = (wlandevice_t*)link->priv;
++
++ DBFENTER;
++
++ link->state |= DEV_SUSPEND;
++ if (link->state & DEV_CONFIG) {
++ prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
++ pcmcia_release_configuration(link->handle);
++ }
++
++ DBFEXIT;
++ return 0;
++}
+
++static int prism2sta_resume1(struct pcmcia_device *dev)
++{
++ dev_link_t *link = dev_to_instance(dev);
++ wlandevice_t *wlandev = (wlandevice_t*)link->priv;
++
++ DBFENTER;
++
++ link->state &= ~DEV_SUSPEND;
++ if (link->state & DEV_CONFIG) {
++ pcmcia_request_configuration(link->handle, &link->conf);
++ }
++
++ DBFEXIT;
++ return 0;
++}
++#endif
++
+ /*----------------------------------------------------------------
+ * prism2sta_config
+ *
diff --git a/packages/wlan-ng/wlan-ng-modules/usb-owner.patch b/packages/wlan-ng/wlan-ng-modules/usb-owner.patch
new file mode 100644
index 0000000000..06a305548e
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules/usb-owner.patch
@@ -0,0 +1,13 @@
+Index: trunk/src/prism2/driver/prism2_usb.c
+===================================================================
+--- trunk.orig/src/prism2/driver/prism2_usb.c 2006-04-02 11:06:32.045530320 +0200
++++ trunk/src/prism2/driver/prism2_usb.c 2006-04-02 11:09:31.080312896 +0200
+@@ -313,7 +313,7 @@
+
+
+ struct usb_driver prism2_usb_driver = {
+-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,19) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16))
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,19) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)))
+ .owner = THIS_MODULE,
+ #endif
+ .name = "prism2_usb",
diff --git a/packages/wlan-ng/wlan-ng-modules_0.2.3.bb b/packages/wlan-ng/wlan-ng-modules_0.2.3.bb
new file mode 100644
index 0000000000..b702dc7c76
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules_0.2.3.bb
@@ -0,0 +1,7 @@
+include wlan-ng-modules.inc
+PR = "r1"
+
+SRC_URI += "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \
+ file://prism2sta_commsqual_defer.patch;patch=1"
+S = "${WORKDIR}/linux-wlan-ng-${PV}"
+
diff --git a/packages/wlan-ng/wlan-ng-modules_svn.bb b/packages/wlan-ng/wlan-ng-modules_svn.bb
new file mode 100644
index 0000000000..4fa16c4de8
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-modules_svn.bb
@@ -0,0 +1,7 @@
+include wlan-ng-modules.inc
+PR = "r0"
+PV = "0.2.3+svn${SRCDATE}"
+
+SRC_URI += "svn://svn.shaftnet.org/linux-wlan-ng;module=trunk "
+S = "${WORKDIR}/trunk"
+
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.3/.mtn2git_empty b/packages/wlan-ng/wlan-ng-utils-0.2.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.3/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.3/config.in b/packages/wlan-ng/wlan-ng-utils-0.2.3/config.in
new file mode 100644
index 0000000000..be01488a92
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.3/config.in
@@ -0,0 +1,21 @@
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=2
+WLAN_SUBLEVEL=3
+WLAN_EXTRAVERSION=
+#LINUX_SRC=$(KERNEL_SOURCE)
+PCMCIA_SRC=.
+PREFIX=
+INST_EXEDIR=/sbin
+#TARGET_ROOT_ON_HOST=
+#RC_DIR=/etc/init.d
+PCMCIA_DIR=/etc/pcmcia
+SYSV_INIT=y
+INSTALL_DEPMOD=
+WLAN_DEBUG=n
+CROSS_COMPILE_ENABLED=n
+CROSS_COMPILE=
+HOST_COMPILE=
+PRISM2_PLX=y
+PRISM2_PCMCIA=y
+PRISM2_PCI=y
+PRISM2_USB=y
diff --git a/packages/wlan-ng/wlan-ng-utils-0.2.3/only-the-utils.patch b/packages/wlan-ng/wlan-ng-utils-0.2.3/only-the-utils.patch
new file mode 100644
index 0000000000..2a4369b931
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils-0.2.3/only-the-utils.patch
@@ -0,0 +1,30 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- linux-wlan-ng-0.2.2/src/Makefile~only-the-utils
++++ linux-wlan-ng-0.2.2/src/Makefile
+@@ -44,9 +44,9 @@
+
+ -include ../config.mk
+
+-DIRS=p80211 prism2 shared wlanctl wland nwepgen \
++DIRS=prism2 shared wlanctl wland nwepgen \
+ mkmeta wlancfg
+-ALL_DIRS=mkmeta p80211 prism2 shared wlanctl wland \
++ALL_DIRS=mkmeta prism2 shared wlanctl wland \
+ nwepgen wlancfg
+
+ ifneq ($(wildcard *.addon),)
+--- linux-wlan-ng-0.2.2/src/prism2/Makefile~only-the-utils
++++ linux-wlan-ng-0.2.2/src/prism2/Makefile
+@@ -44,7 +44,7 @@
+
+ -include ../../config.mk
+
+-DIRS=driver ridlist download
++DIRS=ridlist download
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
diff --git a/packages/wlan-ng/wlan-ng-utils/.mtn2git_empty b/packages/wlan-ng/wlan-ng-utils/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils/.mtn2git_empty
diff --git a/packages/wlan-ng/wlan-ng-utils/config.in b/packages/wlan-ng/wlan-ng-utils/config.in
new file mode 100644
index 0000000000..cac5576f34
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils/config.in
@@ -0,0 +1,21 @@
+WLAN_VERSION=0
+WLAN_PATCHLEVEL=2
+WLAN_SUBLEVEL=3
+WLAN_EXTRAVERSION=svn
+#LINUX_SRC=$(KERNEL_SOURCE)
+PCMCIA_SRC=.
+PREFIX=
+INST_EXEDIR=/sbin
+#TARGET_ROOT_ON_HOST=
+#RC_DIR=/etc/init.d
+PCMCIA_DIR=/etc/pcmcia
+SYSV_INIT=y
+INSTALL_DEPMOD=
+WLAN_DEBUG=n
+CROSS_COMPILE_ENABLED=n
+CROSS_COMPILE=
+HOST_COMPILE=
+PRISM2_PLX=y
+PRISM2_PCMCIA=y
+PRISM2_PCI=y
+PRISM2_USB=y
diff --git a/packages/wlan-ng/wlan-ng-utils/only-the-utils.patch b/packages/wlan-ng/wlan-ng-utils/only-the-utils.patch
new file mode 100644
index 0000000000..5e0eb46cef
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils/only-the-utils.patch
@@ -0,0 +1,33 @@
+Index: linux-wlan-ng-devel/src/Makefile
+===================================================================
+--- linux-wlan-ng-devel.orig/src/Makefile 2006-02-21 11:41:23.000000000 +0100
++++ linux-wlan-ng-devel/src/Makefile 2006-02-21 13:15:30.836085080 +0100
+@@ -44,10 +44,11 @@
+
+ -include ../config.mk
+
+-DIRS=p80211 prism2 shared wlanctl nwepgen \
+- mkmeta wlancfg
+-ALL_DIRS=mkmeta p80211 prism2 shared wlanctl \
+- nwepgen wlancfg
++
++DIRS=prism2 shared wlanctl nwepgen \
++ mkmeta wlancfg
++ALL_DIRS=mkmeta prism2 shared wlanctl \
++ nwepgen wlancfg
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
+Index: linux-wlan-ng-devel/src/prism2/Makefile
+===================================================================
+--- linux-wlan-ng-devel.orig/src/prism2/Makefile 2006-02-21 11:41:23.000000000 +0100
++++ linux-wlan-ng-devel/src/prism2/Makefile 2006-02-21 13:14:43.248319520 +0100
+@@ -44,7 +44,7 @@
+
+ -include ../../config.mk
+
+-DIRS=driver ridlist download
++DIRS=ridlist download
+
+ ifneq ($(wildcard *.addon),)
+ DIRS+=`cat *.addon`
diff --git a/packages/wlan-ng/wlan-ng-utils/wlan.agent b/packages/wlan-ng/wlan-ng-utils/wlan.agent
new file mode 100644
index 0000000000..d7124f3816
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils/wlan.agent
@@ -0,0 +1,105 @@
+#!/bin/sh
+#
+# p80211/wlan hotplug policy agent.
+#
+# wlan hotplug params include:
+#
+# ACTION=%s [register|remove|shutdown|startup|suspend|resume]
+# INTERFACE=%s
+# NSDNAME=%s
+#
+
+cd /etc/hotplug
+# must have ./ here or busybox shell barfs
+. ./hotplug.functions
+
+#DEBUG=yes export DEBUG
+
+if [ "$INTERFACE" = "" ]; then
+ mesg Bad WLAN invocation: \$INTERFACE is not set
+ exit 1
+fi
+
+if [ "$NSDNAME" = "" ]; then
+ mesg Bad WLAN invocation: \$NSDNAME is not set
+ exit 1
+fi
+
+debug_mesg WLAN $ACTION on $INTERFACE \($NSDNAME\)
+
+if [ "$NSDNAME" = "prism2_cs" ] ; then
+ mesg "WLAN Hotplug bypassed for pcmcia"
+ exit 0
+fi
+
+# load up the shared scripts
+if [ ! -f /etc/wlan/shared ] ; then
+ mesg "/etc/wlan/shared not present, aborting"
+ exit 1
+fi
+
+ECHO=mesg
+. /etc/wlan/shared
+
+case $ACTION in
+'register'|'resume')
+ eval 'WLAN_ENABLE=$ENABLE_'$INTERFACE
+ if ! is_true $WLAN_ENABLE ; then
+ mesg "WLAN $ACTION - interface $INTERFACE not enabled, aborting"
+ exit 1
+ fi
+ debug_mesg WLAN $INTERFACE registered.
+ wlan_bring_it_up $INTERFACE
+ if [ $? = 0 ] ; then
+ mesg WLAN $INTERFACE brought up successfully.
+ if [ -x /etc/wlan/network ] ; then
+ mesg "WLAN bringing up layer 3+ with /etc/wlan/network"
+ /etc/wlan/network start $INTERFACE
+ elif [ -x /etc/wlan/pre-ifup ] ; then
+ # pre-ifup is presumed to call ifup if it
+ # wants to...it may choose to skip it.
+ mesg "WLAN bringing up layer 3+ with /etc/wlan/pre-ifup"
+ /etc/wlan/pre-ifup $INTERFACE
+ else
+ mesg "WLAN bringing up layer 3+ with /sbin/ifup"
+ /sbin/ifup $INTERFACE
+ fi
+ else
+ mesg WLAN Could not bring up $INTERFACE
+ exit 1
+ fi
+ # eventually invoke net.agent on $INTERFACE w/ REGISTER
+;;
+'remove'|'suspend')
+ debug_mesg WLAN $INTERFACE removed.
+ eval 'WLAN_ENABLE=$ENABLE_'$INTERFACE
+ if ! is_true $WLAN_ENABLE ; then
+ mesg "WLAN $ACTION - interface $INTERFACE not enabled, aborting"
+ exit 1
+ fi
+ if [ -x /etc/wlan/network ] ; then
+ mesg "WLAN taking down layer 3+ with /etc/wlan/network"
+ /etc/wlan/network stop $INTERFACE
+ elif [ -x /etc/wlan/post-ifdown ] ; then
+ # post-ifdown is presumed to call ifdown if it
+ # wants to...it may choose to skip it.
+ mesg "WLAN taking down layer 3+ with /etc/wlan/post-ifdown"
+ /etc/wlan/post-ifdown $INTERFACE
+ else
+ mesg "WLAN taking down layer 3+ with /sbin/ifdown"
+ /sbin/ifdown $INTERFACE
+ fi
+ wlan_disable $INTERFACE
+;;
+'startup')
+ # kick off wland.
+ debug_mesg WLAN p80211 starting!
+;;
+'shutdown')
+ debug_mesg WLAN p80211 shutting down!
+;;
+*)
+ debug_mesg WLAN $ACTION event not supported
+ exit 1 ;;
+
+esac
diff --git a/packages/wlan-ng/wlan-ng-utils_0.2.2.bb b/packages/wlan-ng/wlan-ng-utils_0.2.3.bb
index 17cf3cab83..17cf3cab83 100644
--- a/packages/wlan-ng/wlan-ng-utils_0.2.2.bb
+++ b/packages/wlan-ng/wlan-ng-utils_0.2.3.bb
diff --git a/packages/wlan-ng/wlan-ng-utils_svn.bb b/packages/wlan-ng/wlan-ng-utils_svn.bb
new file mode 100644
index 0000000000..a5762e32aa
--- /dev/null
+++ b/packages/wlan-ng/wlan-ng-utils_svn.bb
@@ -0,0 +1,69 @@
+DESCRIPTION = "linux-wlan-ng userland utilities"
+HOMEPAGE = "http://www.linux-wlan.org"
+SECTION = "kernel/userland"
+DEPENDS = "virtual/kernel"
+LICENSE = "GPL"
+PR = "r0"
+PV = "0.2.3+svn${SRCDATE}"
+
+SRC_URI = "svn://svn.shaftnet.org/linux-wlan-ng;module=trunk \
+ file://only-the-utils.patch;patch=1 \
+ file://scripts-makefile-hostcc.patch;patch=1 \
+ file://pcmciasrc.patch;patch=1 \
+ file://wlan-ng.modutils \
+ file://wlan.agent \
+ file://usbctl \
+ file://resume \
+ file://pre-up \
+ file://post-down \
+ file://config.in"
+S = "${WORKDIR}/trunk"
+
+# yeah, it's kind of backwards, but otherwise the config step will fail
+inherit module
+
+do_configure() {
+ install -m 0655 ${WORKDIR}/config.in ${S}/config.in
+ oe_runmake LINUX_SRC=${KERNEL_SOURCE} auto_config
+
+ if grep CONFIG_PCMCIA=[ym] ${STAGING_KERNEL_DIR}/kernel-config; then
+ echo "PRISM2_PCMCIA=y" >> config.mk
+ echo "WLAN_KERN_PCMCIA=y" >> config.mk
+ fi
+ echo "TARGET_ROOT_ON_HOST=${D}/" >> config.mk
+ echo "FIRMWARE_DIR=/etc/wlan" >> config.mk
+ echo "TARGET_MODDIR=${D}/lib/modules/${KERNEL_VERSION}/wlan-ng" >> config.mk
+ echo "TARGET_INST_EXEDIR=${D}/sbin" >> config.mk
+ echo "RC_DIR=${sysconfdir}/" >> config.mk
+ echo "CC=${CC}" >> config.mk
+ echo "LD=${LD}" >> config.mk
+
+ # Shut up, you broken buildsystem
+ install -m 0655 config.mk src/prism2/config.mk
+ install -d src/prism2/driver/include
+ ln -sf ${S}/src/include/wlan src/prism2/driver/include/wlan
+ ln -sf ${S}/src/prism2/include/prism2 src/prism2/driver/include/prism2
+}
+
+do_compile() {
+ oe_runmake all
+}
+
+do_install() {
+ oe_runmake install
+ mkdir -p ${D}${sysconfdir}/modutils/
+ mkdir -p ${D}${sysconfdir}/hotplug/
+ mkdir -p ${D}${base_sbindir}/
+ install -m 0644 ${WORKDIR}/wlan-ng.modutils ${D}${sysconfdir}/modutils/wlan-ng.conf
+ install -m 0755 ${WORKDIR}/wlan.agent ${D}${sysconfdir}/hotplug/wlan.agent
+ install -d ${D}${sysconfdir}/network/if-pre-up.d
+ install -m 0755 ${WORKDIR}/pre-up ${D}${sysconfdir}/network/if-pre-up.d/wlan-ng
+ install -d ${D}${sysconfdir}/network/if-post-down.d
+ install -m 0755 ${WORKDIR}/post-down ${D}${sysconfdir}/network/if-post-down.d/wlan-ng
+ install -d ${D}${sysconfdir}/apm/resume.d
+ install -m 0755 ${WORKDIR}/resume ${D}${sysconfdir}/apm/resume.d/wlan-ng
+ install -m 0755 ${WORKDIR}/usbctl ${D}${base_sbindir}/usbctl
+ install -d ${D}${mandir}
+}
+
+FILES_${PN} = "/etc /sbin"
diff --git a/packages/wxbase/.mtn2git_empty b/packages/wxbase/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/wxbase/.mtn2git_empty
diff --git a/packages/wxbase/wxbase_2.6.2.bb b/packages/wxbase/wxbase_2.6.2.bb
new file mode 100644
index 0000000000..2a41fdfa65
--- /dev/null
+++ b/packages/wxbase/wxbase_2.6.2.bb
@@ -0,0 +1,54 @@
+DESCRIPTION = "wxBase is a library for programming \
+non-GUI (console) applications using the base wxWidgets functionality."
+HOMEPAGE = "http://www.wxwidgets.org/"
+LICENSE = "GPL"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "jpeg libpng zlib"
+
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/wxwindows/wxBase-${PV}.tar.bz2"
+
+S = "${WORKDIR}/wxBase-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-largefile"
+
+LEAD_SONAME = "libwx_base-2.6.so*"
+
+do_configure() {
+ oe_runconf
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/wx-2.6/wx
+ cp -pr include/wx ${STAGING_INCDIR}/wx-2.6
+ cp -pr lib/libwx* ${STAGING_LIBDIR}
+ cp -pr lib/wx ${STAGING_LIBDIR}
+ cp -pr build/bakefiles/wxpresets/presets ${STAGING_DATADIR}/bakefile
+ cp -pr wxwin.m4 ${STAGING_DATADIR}/aclocal
+ ln -sf ${STAGING_LIBDIR}/wx/config/${TARGET_PREFIX}base-ansi-release-2.6 ${STAGING_BINDIR}/wx-config
+ sed -e s,'wxconfdir=".*"','wxconfigdir="${STAGING_LIBDIR}/wx/config"', \
+ -e s,'bindir=".*"','bindir="${STAGING_BINDIR}"', \
+ -e s,'libdir=".*"','libdir="${STAGING_LIBDIR}"', \
+ -e s,'includedir=".*"','includedir="${STAGING_INCDIR}"', \
+ -i ${STAGING_LIBDIR}/wx/config/${TARGET_PREFIX}base-ansi-release-2.6
+}
+
+FILES_${PN} += " \
+ ${libdir}/wx/config"
+
+FILES_${PN}-dev += " \
+ ${libdir}/wx/include \
+ ${datadir}/bakefile"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+ ln -sf ${libdir}/wx/config/${TARGET_PREFIX}base-ansi-release-2.6 ${D}${bindir}/wx-config
+ install -d ${D}${docdir}/${PN}-${PV}
+ install -m 644 -p CHANGES.txt ${D}${docdir}/${PN}-${PV}
+ install -m 644 -p COPYING.LIB ${D}${docdir}/${PN}-${PV}
+ install -m 644 -p LICENCE.txt ${D}${docdir}/${PN}-${PV}
+ install -m 644 -p README.txt ${D}${docdir}/${PN}-${PV}
+}
diff --git a/packages/wxbase/wxbase_2.7+cvs.bb b/packages/wxbase/wxbase_2.7+cvs.bb
new file mode 100644
index 0000000000..efc04b6f8c
--- /dev/null
+++ b/packages/wxbase/wxbase_2.7+cvs.bb
@@ -0,0 +1,53 @@
+DESCRIPTION = "wxBase is a library for programming \
+non-GUI (console) applications using the base wxWidgets functionality."
+HOMEPAGE = "http://www.wxwidgets.org/"
+LICENSE = "GPL"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "jpeg libpng zlib"
+
+
+SRC_URI = "http://biolpc22.york.ac.uk/pub/CVS_HEAD/wx-cvs-Gtk.tar.bz2"
+#SRC_URI = "${SOURCEFORGE_MIRROR}/wxwindows/wxBase-${PV}.tar.bz2"
+
+S = "${WORKDIR}/wxGTK"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gui --enable-largefile"
+
+LEAD_SONAME = "libwx_base-2.7*"
+
+do_configure() {
+ oe_runconf
+}
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/wx-2.7/wx
+ cp -pr include/wx ${STAGING_INCDIR}/wx-2.7
+ cp -pr lib/libwx* ${STAGING_LIBDIR}
+ cp -pr lib/wx ${STAGING_LIBDIR}
+ cp -pr build/bakefiles/wxpresets/presets ${STAGING_DATADIR}/bakefile
+ cp -pr wxwin.m4 ${STAGING_DATADIR}/aclocal
+ ln -sf ${STAGING_LIBDIR}/wx/config/${TARGET_PREFIX}base-ansi-release-2.7 ${STAGING_BINDIR}/wx-config
+ sed -e s,'wxconfdir=".*"','wxconfigdir="${STAGING_LIBDIR}/wx/config"', \
+ -e s,'bindir=".*"','bindir="${STAGING_BINDIR}"', \
+ -e s,'libdir=".*"','libdir="${STAGING_LIBDIR}"', \
+ -e s,'includedir=".*"','includedir="${STAGING_INCDIR}"', \
+ -i ${STAGING_LIBDIR}/wx/config/${TARGET_PREFIX}base-ansi-release-2.7
+}
+
+FILES_${PN} += " \
+ ${libdir}/wx/config"
+
+FILES_${PN}-dev += " \
+ ${libdir}/wx/include \
+ ${datadir}/bakefile"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+ ln -sf ${libdir}/wx/config/${TARGET_PREFIX}base-ansi-release-2.7 ${D}${bindir}/wx-config
+ install -d ${D}${docdir}/${PN}-${PV}
+ install -m 644 -p docs/*.txt ${D}${docdir}/${PN}-${PV}
+ install -m 644 -p docs/*.htm ${D}${docdir}/${PN}-${PV}
+}
diff --git a/packages/xlibs/libx11-native_6.2.1.bb b/packages/xlibs/libx11-native_6.2.1.bb
index b1fd2aa0db..f27ab343a4 100644
--- a/packages/xlibs/libx11-native_6.2.1.bb
+++ b/packages/xlibs/libx11-native_6.2.1.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
include libx11_${PV}.bb
inherit native
-DEPENDS = "xproto-native xextensions-native xau-native xtrans-native libxdmcp-native"
+DEPENDS = "xproto-native xextensions-native libxau-native xtrans-native libxdmcp-native"
PROVIDES = ""
diff --git a/packages/xlibs/libx11-native_cvs.bb b/packages/xlibs/libx11-native_cvs.bb
index 161c070899..5b221122d3 100644
--- a/packages/xlibs/libx11-native_cvs.bb
+++ b/packages/xlibs/libx11-native_cvs.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
include libx11_cvs.bb
inherit native
-DEPENDS = "xproto-native xextensions-native xau-native xtrans-native libxdmcp-native"
+DEPENDS = "xproto-native xextensions-native libxau-native xtrans-native libxdmcp-native"
PROVIDES = ""
diff --git a/packages/xlibs/libxext-native_cvs.bb b/packages/xlibs/libxext-native_cvs.bb
index 296a741ebf..295bae2584 100644
--- a/packages/xlibs/libxext-native_cvs.bb
+++ b/packages/xlibs/libxext-native_cvs.bb
@@ -1,5 +1,5 @@
SECTION = "unknown"
include libxext_${PV}.bb
inherit native
-DEPENDS = "x11-native xextensions-native"
+DEPENDS = "libx11-native xextensions-native"
PROVIDES = ""
diff --git a/packages/zaurusd/files/.mtn2git_empty b/packages/zaurusd/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/zaurusd/files/.mtn2git_empty
diff --git a/packages/zaurusd/files/mbinputmgr-honor-user-prefs.patch b/packages/zaurusd/files/mbinputmgr-honor-user-prefs.patch
new file mode 100644
index 0000000000..e2d56874c9
--- /dev/null
+++ b/packages/zaurusd/files/mbinputmgr-honor-user-prefs.patch
@@ -0,0 +1,65 @@
+--- zaurusd/scripts/zaurus-hinge.in 2006-03-24 18:23:15.000000000 +0100
++++ zaurusd/scripts/zaurus-hinge 2006-03-24 18:33:24.480748696 +0100
+@@ -18,6 +18,10 @@
+ exit 1
+ fi
+
++panel_user="`ps aux|grep matchbox-panel|grep -v grep | awk '{print $2}'`"
++
++
++
+ STATE=$1
+
+ if [ $STATE = "3" ]; then
+@@ -29,8 +33,21 @@
+ fi
+
+ if [ $STATE = "0" ]; then
+- #echo "lanscape"
+- killproc @bindir@/mbinputmgr
++ #echo "landscape"
++
++ # As matchbox-panel updates its written configuration right after an applet dies / is killed, we can not be sure
++ # whether the user had gpe-panel in his preferences after rotating to portrait. And since there is a slim chance
++ # that a user changes his preferences from time to time, we renew that dumped configuration every now and then ;)
++
++ if ! test -e "/tmp/gpe-panel.session-$panel_user"
++ then
++ test -e /home/$panel_user/.matchbox/mbdock.session && cp /home/$panel_user/.matchbox/mbdock.session "/tmp/gpe-panel.session-$panel_user"
++ test -e "/tmp/gpe-panel.session-$panel_user" && cat "/tmp/gpe-panel.session-$panel_user" | grep -q panel || killproc @bindir@/mbinputmgr
++ else
++ cat "/tmp/gpe-panel.session-$panel_user" | grep -q panel || killproc @bindir@/mbinputmgr
++ rm "/tmp/gpe-panel.session-$panel_user"
++ fi
++
+ # urg mbinputmgr should kill below
+ killproc @bindir@/matchbox-keyboard
+ killproc @bindir@/matchbox-stroke
+@@ -47,8 +64,25 @@
+ fi
+ # just to be extra safe
+ sleep 1
+- if [ -x @bindir@/mbinputmgr ]; then
+- @bindir@/mbinputmgr &
++
++ echo "panel_user = [$panel_user]"
++
++ if ! test -e "/tmp/gpe-panel.session-$panel_user"
++ then
++ cp /home/$panel_user/.matchbox/mbdock.session "/tmp/gpe-panel.session-$panel_user"
++ else
++ rm "/tmp/gpe-panel.session-$panel_user"
+ fi
++
++ if test -n "$panel_user"
++ then
++ echo "Running panel as user [$panel_user]"
++ ps aux | grep "$panel_user" | grep -q "mbinputmgr " || su $panel_user -c @bindir@/mbinputmgr &
++ else
++ # A failsafe can't hurt
++ echo "Warning: Running mbinputmgr as root!"
++ ps aux | grep -q "mbinputmgr " || @bindir@/mbinputmgr &
++ fi
++
+ exit 0
+ fi
diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb
index d36fc1c118..52a7b353d3 100644
--- a/packages/zaurusd/zaurusd_svn.bb
+++ b/packages/zaurusd/zaurusd_svn.bb
@@ -3,10 +3,11 @@ SECTION = "base"
MAINTAINER = "Richard Purdie <rpurdie@openedhand.com>"
DESCRIPTION = "Daemon to handle device specifc features."
PV = "0.0+svn${SRCDATE}"
-PR = "r0"
+PR = "r2"
DEPENDS = "tslib"
-SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http"
+SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http \
+ file://mbinputmgr-honor-user-prefs.patch;patch=1"
S = "${WORKDIR}/${PN}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/packages/zbedic/libbedic_0.9.6.bb b/packages/zbedic/libbedic_0.9.6.bb
index 5118f5cd1f..05f52ef1f6 100644
--- a/packages/zbedic/libbedic_0.9.6.bb
+++ b/packages/zbedic/libbedic_0.9.6.bb
@@ -1,11 +1,11 @@
DESCRIPTION = "A dictionary application for Qt/E based Palmtop Environments"
SECTION = "opie/applications"
PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+MAINTAINER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
LICENSE = "GPL"
APPTYPE = "binary"
APPDESKTOP = "${WORKDIR}/zbedic/misc"
-PR = "r1"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/bedic/libbedic_${PV}-0.tgz"
S = "${WORKDIR}"
diff --git a/packages/zbedic/zbedic_0.9.6.bb b/packages/zbedic/zbedic_0.9.6.bb
index f66d4d1d0b..df811a7fcc 100644
--- a/packages/zbedic/zbedic_0.9.6.bb
+++ b/packages/zbedic/zbedic_0.9.6.bb
@@ -1,12 +1,12 @@
DESCRIPTION = "A dictionary application for Qt/E based Palmtop Environments"
SECTION = "opie/applications"
PRIORITY = "optional"
-MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
+MAINTAINER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
LICENSE = "GPL"
DEPENDS = "libbedic"
APPTYPE = "binary"
APPDESKTOP = "${WORKDIR}/misc"
-PR = "r1"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/bedic/zbedic_${PV}-0.tgz \
file://qtopia17.patch;patch=1;pnum=0 \
diff --git a/packages/zd1211/zd1211-20050822/access_ok.patch b/packages/zd1211/zd1211-20050822/access_ok.patch
deleted file mode 100644
index 95fbb592b0..0000000000
--- a/packages/zd1211/zd1211-20050822/access_ok.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- zd1211/src/zd1205.c.orig 2005-10-06 03:30:27.200837520 +0200
-+++ zd1211/src/zd1205.c 2005-10-06 03:29:37.176442384 +0200
-@@ -4434,7 +4434,7 @@
- { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" },
- };
-
-- err = verify_area(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab));
-+ err = access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab));
- if (err)
- break;
-
diff --git a/packages/zd1211/zd1211-20050822/iwconfig-rate.patch b/packages/zd1211/zd1211-20050822/iwconfig-rate.patch
deleted file mode 100644
index c1cb634b1a..0000000000
--- a/packages/zd1211/zd1211-20050822/iwconfig-rate.patch
+++ /dev/null
@@ -1,126 +0,0 @@
---- zd1211/src/zd1205.c 7 Jun 2005 21:45:21 -0000 1.17
-+++ zd1211/src/zd1205.c 24 Aug 2005 11:39:29 -0000
-@@ -3599,9 +3599,59 @@
-
- }
-
-+static const unsigned long zd1205_rates[] = {
-+ /* RATE_1M, 0 */
-+ 1000000,
-+ /* RATE_2M, 1 */
-+ 2000000,
-+ /* RATE_5M, 2 */
-+ 5500000,
-+ /* RATE_11M, 3 */
-+ 11000000,
-+ /* RATE_6M, 4 */
-+ 600000,
-+ /* RATE_9M, 5 */
-+ 9000000,
-+ /* RATE_12M, 6 */
-+ 12000000,
-+ /* RATE_18M, 7 */
-+ 18000000,
-+ /* RATE_24M, 8 */
-+ 24000000,
-+ /* RATE_36M, 9 */
-+ 36000000,
-+ /* RATE_48M, 10 */
-+ 48000000,
-+ /* RATE_54M, 11 */
-+ 54000000,
-+};
-+
-+#define ZD1205_NRATES ((sizeof(zd1205_rates))/(sizeof(unsigned long)))
-+
- static int zd1205_ioctl_setrate(struct net_device *dev, struct iw_param *frq)
- {
-- return 0;
-+ struct zd1205_private *macp = dev->priv;
-+ U8 rate;
-+ if(frq->value < 0) {
-+ /* Auto */
-+ macp->bFixedRate = 0;
-+ macp->AdapterMaxRate = RATE_54M;
-+ return 0;
-+ }
-+ for(rate = 0; rate < ZD1205_NRATES; rate++)
-+ if(zd1205_rates[rate] == frq->value) {
-+ zd1205_lock(macp);
-+ macp->bFixedRate = frq->fixed;
-+ if(frq->fixed)
-+ macp->cardSetting.FixedRate = rate;
-+ else {
-+ macp->AdapterMaxRate = rate;
-+ macp->cardSetting.TxRate = rate;
-+ }
-+ zd1205_unlock(macp);
-+ return 0;
-+ }
-+ return -EINVAL;
- }
-
- static int zd1205_ioctl_getrate(struct net_device *dev, struct iw_param *frq)
-@@ -3612,60 +3662,9 @@
- frq->disabled = 0;
- frq->value = 0;
-
-- switch(macp->cardSetting.CurrTxRate)
-- {
-- case RATE_1M:
-- frq->value = 1000000;
-- break;
--
-- case RATE_2M:
-- frq->value = 2000000;
-- break;
--
-- case RATE_5M:
-- frq->value = 5500000;
-- break;
--
-- case RATE_11M:
-- frq->value = 11000000;
-- break;
--
-- case RATE_6M:
-- frq->value = 600000;
-- break;
--
-- case RATE_9M:
-- frq->value = 9000000;
-- break;
--
-- case RATE_12M:
-- frq->value = 12000000;
-- break;
--
-- case RATE_18M:
-- frq->value = 18000000;
-- break;
--
-- case RATE_24M:
-- frq->value = 24000000;
-- break;
--
-- case RATE_36M:
-- frq->value = 36000000;
-- break;
--
-- case RATE_48M:
-- frq->value = 48000000;
-- break;
--
-- case RATE_54M:
-- frq->value = 54000000;
-- break;
--
-- default:
-+ if(macp->cardSetting.CurrTxRate > ZD1205_NRATES)
- return -EINVAL;
-- }
--
-+ frq->value = zd1205_rates[macp->cardSetting.CurrTxRate];
- return 0;
- }
-
diff --git a/packages/zd1211/zd1211-20050822/makefile.patch b/packages/zd1211/zd1211-20050822/makefile.patch
deleted file mode 100644
index 91f3192d4d..0000000000
--- a/packages/zd1211/zd1211-20050822/makefile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- zd1211/Makefile.orig 2005-04-15 12:34:32.000000000 -1000
-+++ zd1211/Makefile 2005-09-02 02:40:41.857339000 -1000
-@@ -90,7 +90,7 @@
- ifeq ($(KVER), 2.6) # we're on a 2.6.x kernel
- $(MAKE) V=0 -C $(KSRC) SUBDIRS=$(SUBDIRS) modules
- else
-- $(MAKE) -C $(KSRC) SUBDIRS=$(SUBDIRS) depend modules
-+ $(MAKE) -C $(KSRC) SUBDIRS=$(SUBDIRS) modules
- endif
-
- $(SRC_DIR)/zddevlist.h: $(SRC_DIR)/zddevlist
diff --git a/packages/zd1211/zd1211-20050822/urb-async.patch b/packages/zd1211/zd1211-20050822/urb-async.patch
deleted file mode 100644
index cd1149e766..0000000000
--- a/packages/zd1211/zd1211-20050822/urb-async.patch
+++ /dev/null
@@ -1,82 +0,0 @@
---- zd1211/src/zd1211.c.orig 2005-03-27 22:47:35.000000000 +0200
-+++ zd1211/src/zd1211.c 2005-10-06 02:53:23.380909536 +0200
-@@ -313,7 +313,6 @@
- } else {
- usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pBuffer, DataLen,zd1211_reg_cb, macp);
- }
-- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
-
- if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
- printk(KERN_ERR "zd1211: failed reg_urb\n");
-@@ -362,7 +361,6 @@
- } else {
- usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp);
- }
-- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
- if ((ret = SUBMIT_URB(macp->reg_urb, memflags))) {
- printk(KERN_ERR "zd1211: failed reg_urb\n");
- zd1211_DumpErrorCode(macp, ret);
-@@ -426,7 +424,6 @@
- } else {
- usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp);
- }
-- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
-
- if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
- printk(KERN_ERR "zd1211: failed reg_urb\n");
-@@ -569,7 +566,6 @@
- usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp);
- }
-
-- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
- if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
- printk(KERN_ERR "zd1211: failed reg_urb\n");
- zd1211_DumpErrorCode(macp, ret);
-@@ -1240,7 +1236,6 @@
- pRegBuffer, bufSize,
- zd1211_reg_cb, macp);
-
-- macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK;
-
- if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) {
- printk(KERN_ERR "zd1211: failed rf reg_urb\n");
-@@ -1311,7 +1306,6 @@
- return;
-
- printk("%s: Tx timed out.\n", dev->name);
-- macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK;
- USB_URB(macp->tx_urb);
- }
-
-@@ -1384,7 +1378,6 @@
- zd1211_intr_cb, macp);
- #endif
-
-- macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK;
-
- if ((res = SUBMIT_URB(macp->intr_urb, GFP_KERNEL))) {
- printk(KERN_ERR "zd1211: failed intr_urb\n");
-@@ -1822,7 +1815,6 @@
- macp->IntEPBuffer, MAX_EPINT_BUFFER,
- zd1211_intr_cb, macp);
-
-- macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK;
- status = SUBMIT_URB(macp->intr_urb, GFP_ATOMIC);
-
- if (status)
-@@ -1916,7 +1908,6 @@
- usb_rcvbulkpipe(macp->usb, EP_DATA_IN),
- rx_buff, bufLen, zd1211_rx_comp_cb, macp);
-
-- macp->rx_urb->transfer_flags |= URB_ASYNC_UNLINK;
- if ((res = SUBMIT_URB(macp->rx_urb, GFP_ATOMIC))) {
- printk(KERN_ERR "zd1211: failed rx_urb\n");
- zd1211_DumpErrorCode(macp, res);
-@@ -2024,7 +2015,6 @@
- macp->tx_buff, TotalLength,zd1211_tx_comp_cb, macp);
-
- macp->tx_urb->transfer_buffer_length = TotalLength;
-- macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK;
- res = SUBMIT_URB(macp->tx_urb, GFP_ATOMIC);
- if (res) {
- printk("error in tx submit urb: %d", res);
diff --git a/packages/zd1211/zd1211-r52/firmware.patch b/packages/zd1211/zd1211-r52/firmware.patch
deleted file mode 100644
index b7cd575c24..0000000000
--- a/packages/zd1211/zd1211-r52/firmware.patch
+++ /dev/null
@@ -1,327 +0,0 @@
-Index: branches/vendor/src/WS11UPhR.h
-===================================================================
---- zd1211-driver-r52/src/WS11UPhR.h (revision 8)
-+++ zd1211-driver-r52/Makefile/src/WS11UPhR.h (revision 53)
-@@ -166,164 +166,163 @@
- ={
- 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE,
-- 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x8E, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xEB, 0xF7, 0x02, 0x00, 0x1F, 0xEC,
-- 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA1, 0xEC, 0x00, 0x00, 0xBD, 0xF7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8,
-- 0x40, 0xF0, 0xCC, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x5F, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x09, 0xF1, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0,
-- 0x0E, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x0F, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xAE, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B,
-- 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3,
-- 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03,
-- 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98,
-- 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20,
-- 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE0, 0xEE, 0x11, 0x93, 0xEF, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA9, 0xEE, 0x40, 0xF1, 0x40, 0x92, 0x19, 0xD3, 0xEF, 0xF7, 0xC5, 0x92, 0x41, 0x92,
-- 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x94, 0xEE, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x94, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xEF, 0xF7,
-- 0x09, 0x93, 0xDE, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x72, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, 0x94, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA,
-- 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x09, 0x93, 0xDE, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0,
-- 0x72, 0xF2, 0x40, 0xF0, 0xFB, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xDE, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x04, 0xEC, 0x40, 0xF0, 0x4B, 0xF2, 0x88, 0x98, 0x90, 0x9A,
-- 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0xA7, 0xF7, 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xBF, 0xEE,
-- 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4,
-- 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x48, 0xEE, 0xD1, 0xD6, 0x0A, 0x95,
-- 0x49, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3,
-- 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04,
-- 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x13, 0x97, 0x95, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x99, 0xEC,
-- 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xBF, 0x11, 0xA3, 0x9A, 0xEC, 0xC2, 0xD2, 0x0A, 0x65,
-- 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA,
-- 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAF, 0xF0, 0x11, 0x93, 0x30, 0x9B, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E,
-- 0x0F, 0x9F, 0x78, 0xEF, 0x09, 0x93, 0x0C, 0x02, 0x19, 0xD3, 0x02, 0x80, 0x0F, 0x9F, 0xC9, 0xF0, 0x11, 0x93, 0x9F, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9F, 0xEC, 0x11, 0x93, 0xED, 0xF7, 0x40, 0x42,
-- 0x02, 0x4E, 0x0F, 0x9F, 0x8C, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xC9, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x02, 0xD2, 0x40, 0x42,
-- 0x02, 0x5E, 0x0F, 0x9F, 0xD8, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x19, 0xD3, 0x9F, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x95, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x99, 0xEC,
-- 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x9A, 0xEC, 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08,
-- 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xBC, 0xEF, 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x97, 0xEC,
-- 0x40, 0x98, 0x0B, 0x97, 0x9C, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x97, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xC3, 0xEF, 0x11, 0x93,
-- 0x97, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9B, 0xEC, 0x0F, 0x9F, 0xDB, 0xEF, 0x13, 0x97, 0x98, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42,
-- 0x02, 0x4E, 0x0F, 0x9F, 0xF1, 0xEF, 0x11, 0x93, 0xF3, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xF3, 0xF7, 0x11, 0x93, 0xF2, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xF2, 0xF7, 0x40, 0x98, 0x1C, 0xD9,
-- 0x9B, 0xEC, 0x12, 0x95, 0x9B, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x9E, 0xF0, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0F, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05,
-- 0xA9, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA1, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9B, 0xEC, 0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x1B, 0xF0, 0x0A, 0x05,
-- 0xFF, 0xFF, 0x0A, 0x03, 0xB1, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9B, 0xEC, 0xC5, 0x96, 0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x97, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93,
-- 0x97, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95, 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93,
-- 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4C, 0x02, 0x05, 0xD2,
-- 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2,
-- 0x12, 0x95, 0x97, 0xEC, 0x4D, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0xC2, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x4E, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0xC2, 0xD2,
-- 0x12, 0x95, 0x9B, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xF0, 0x12, 0x95, 0x97, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93,
-- 0x41, 0x02, 0x0F, 0x9F, 0x94, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x97, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4A, 0x02,
-- 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96,
-- 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x98, 0xEC, 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xC9, 0xF0, 0x09, 0x63, 0xFE, 0x7F,
-- 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xA5, 0x00, 0x04, 0xC1, 0xD4, 0x11, 0x93, 0x9F, 0xEC, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x9F, 0xEC, 0x40, 0xF0, 0x34, 0xEF, 0x0F, 0x9F, 0xC9, 0xF0, 0x11, 0x93,
-- 0x94, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBE, 0xF0, 0x40, 0xF0, 0x34, 0xEF, 0x11, 0x93, 0x95, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC9, 0xF0, 0x48, 0x98, 0x1C, 0xD9,
-- 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xC9, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93,
-- 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE0, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xBF, 0xEC,
-- 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF1, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0,
-- 0x08, 0xF4, 0x11, 0x93, 0xBF, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x07, 0xF1, 0x11, 0x93, 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0x07, 0xF1, 0x11, 0x93, 0x03, 0x82,
-- 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xBF, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0,
-- 0x5B, 0xF1, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6,
-- 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x58, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xF1, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F,
-- 0x58, 0xF1, 0x41, 0x98, 0x1C, 0xD9, 0xC0, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x69, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9,
-- 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3,
-- 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x56, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92,
-- 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x68, 0xF1, 0x40, 0xF0, 0x4C, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x71, 0xF1, 0x40, 0xF0,
-- 0x3A, 0xF6, 0xC5, 0x96, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7A, 0xF1, 0x40, 0xF0, 0x74, 0xF5, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F,
-- 0xDB, 0xF1, 0x13, 0x97, 0x21, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8C, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42,
-- 0x02, 0x4E, 0x0F, 0x9F, 0x95, 0xF1, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB5, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3,
-- 0xEC, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xEC, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F,
-- 0xBE, 0xF1, 0x40, 0xF0, 0x4B, 0xF2, 0x0F, 0x9F, 0xBE, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xBE, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3,
-- 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC7, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD2, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC,
-- 0x0F, 0x9F, 0xD8, 0xF1, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD8, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E,
-- 0x0F, 0x9F, 0x25, 0xF2, 0x13, 0x97, 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xED, 0xF1, 0x40, 0xF0, 0x2F, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00,
-- 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x00, 0xF2, 0x40, 0xF0, 0xBF, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x2E, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xEF, 0xF7,
-- 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x1C, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE,
-- 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0xEF, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42,
-- 0x02, 0x4E, 0x0F, 0x9F, 0x25, 0xF2, 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B,
-- 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3,
-- 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80,
-- 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2,
-- 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80,
-- 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x69, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0xC8, 0xD2, 0x09, 0x93,
-- 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x25, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x52, 0xF5, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x98, 0xF2,
-- 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0xA5, 0xF2, 0x40, 0xF0, 0xA7, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA5, 0xF2, 0xC8, 0xD2, 0x09, 0x93,
-- 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x25, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB6, 0xEC, 0x11, 0x93, 0xB4, 0xEC,
-- 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x96, 0xEC, 0x11, 0x93,
-- 0xB6, 0xEC, 0x19, 0xD3, 0x01, 0x80, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00,
-- 0x13, 0x97, 0xB4, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF3, 0x12, 0x95, 0x96, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x01, 0x00,
-- 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x96, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93,
-- 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xE8, 0xF2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05,
-- 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x15, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F,
-- 0x16, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, 0x0F, 0x9F, 0x16, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x96, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x13, 0x97, 0x96, 0xEC, 0x03, 0x93, 0xD1, 0x94, 0x7A, 0x95, 0x7A, 0x95,
-- 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0x05, 0x49, 0x06, 0xC3, 0x92, 0x7F, 0xB2, 0x01, 0x05, 0x1A, 0xD5, 0xB4, 0xEC, 0x0A, 0x03, 0xF2, 0xFF, 0x19, 0xD3, 0x92, 0xEC, 0x0A, 0x45, 0xD0, 0x07,
-- 0x02, 0x9E, 0x0F, 0x9F, 0x49, 0xF3, 0x11, 0x93, 0xF3, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xF3, 0xF7, 0x11, 0x93, 0xF2, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, 0xF2, 0xF7, 0x09, 0x63, 0x00, 0x80,
-- 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB5, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x0F, 0x9F, 0xAF, 0xF3, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB6, 0xEC, 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F,
-- 0x97, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x6A, 0xF3, 0x11, 0x93, 0xF3, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xF3, 0xF7, 0x11, 0x93, 0xF2, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, 0xF2, 0xF7, 0x09, 0x63,
-- 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB5, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x0F, 0x9F, 0xAF, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E,
-- 0x0F, 0x9F, 0x7C, 0xF3, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x7C, 0xF3, 0x40, 0xF0, 0xC3, 0xF3, 0x0F, 0x9F, 0xB1, 0xF3, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0x91, 0xEC,
-- 0xC8, 0xD4, 0x40, 0xF0, 0x25, 0xEF, 0x42, 0x00, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xC0, 0xEC, 0x0F, 0x9F, 0xB1, 0xF3, 0x0A, 0x65,
-- 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0xB1, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0xA9, 0xF3, 0x11, 0x93, 0xF3, 0xF7, 0x41, 0x02, 0x19, 0xD3,
-- 0xF3, 0xF7, 0x11, 0x93, 0xF2, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xF2, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3,
-- 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xC3, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x25, 0xEF,
-- 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xEE, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF3, 0x0A, 0x65, 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92,
-- 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE6, 0xF3, 0x11, 0x93, 0xF3, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xF3, 0xF7,
-- 0x11, 0x93, 0xF2, 0xF7, 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0xF2, 0xF7, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB4, 0xEC, 0x1A, 0xD5, 0x05, 0x80, 0x09, 0x63, 0x00, 0x80,
-- 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0xB5, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x96, 0x03,
-- 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0x82, 0xC5, 0xD2, 0x40, 0x94,
-- 0x01, 0xD4, 0x13, 0x97, 0xB8, 0xEC, 0x02, 0xD6, 0x03, 0x95, 0x0C, 0x99, 0xBB, 0xEC, 0x04, 0x05, 0x13, 0x97, 0x03, 0xEC, 0x01, 0x27, 0x02, 0x99, 0xC4, 0x92, 0x03, 0x03, 0xC2, 0xD2, 0x14, 0x99,
-- 0xBA, 0xEC, 0x03, 0x09, 0x1C, 0xD9, 0xBA, 0xEC, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x40, 0xF5, 0x01, 0x92, 0x03, 0xD2, 0x0A, 0xA3, 0x02, 0x00,
-- 0x19, 0xD3, 0x04, 0x82, 0x02, 0x96, 0x0B, 0x05, 0x01, 0x00, 0x1A, 0xD5, 0xB8, 0xEC, 0xC5, 0x92, 0x43, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x54, 0xF4, 0x42, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x54, 0xF4,
-- 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x54, 0xF4, 0x0C, 0x49, 0xD3, 0x08, 0x02, 0x8E, 0x0F, 0x9F, 0x54, 0xF4, 0x11, 0x63, 0x07, 0x82, 0x11, 0xA3, 0x07, 0x82, 0x71, 0x93,
-- 0x79, 0x93, 0x79, 0x93, 0x79, 0x93, 0x03, 0xD2, 0xC5, 0x94, 0x0A, 0xB5, 0xFC, 0xFF, 0x04, 0xD4, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x63, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42,
-- 0x02, 0x8E, 0x0F, 0x9F, 0x70, 0xF4, 0xC5, 0x98, 0x0C, 0x03, 0xFF, 0xFF, 0x42, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x97, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xF4,
-- 0x0A, 0x95, 0xBB, 0xEC, 0x42, 0x92, 0x19, 0xD3, 0xB9, 0xEC, 0xC5, 0x96, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x89, 0xF4, 0x0B, 0x07, 0xFC, 0xFF, 0xC5, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC,
-- 0xD2, 0x96, 0x1B, 0xD7, 0xCA, 0xBC, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x75, 0xF4, 0x19, 0xD3, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x95, 0xF4, 0x0A, 0x05,
-- 0xFE, 0xFF, 0xCA, 0xD2, 0xC2, 0xD2, 0x0F, 0x9F, 0x97, 0xF4, 0x1A, 0xD5, 0x93, 0xEC, 0x03, 0x98, 0x40, 0x48, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x9E,
-- 0x0F, 0x9F, 0xB9, 0xF4, 0x04, 0x92, 0x48, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF4, 0x41, 0x94, 0x01, 0xD4, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2,
-- 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0x11, 0xF5, 0xC5, 0x92, 0x43, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x11, 0xF5, 0x4F, 0x96, 0x41, 0xB2,
-- 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC5, 0xF4, 0x47, 0x96, 0x11, 0x93, 0xB7, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xED, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F,
-- 0xED, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x05, 0xD4, 0xC8, 0xD6, 0xC8, 0xD2, 0x40, 0xF0, 0x92, 0xF7, 0x42, 0x00, 0x05, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E,
-- 0x0F, 0x9F, 0xED, 0xF4, 0x06, 0x98, 0x50, 0x98, 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x92, 0x03, 0xD2, 0x0F, 0x9F, 0x16, 0xF5, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E,
-- 0x0F, 0x9F, 0xFA, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x16, 0xF5, 0x11, 0x93, 0xB8, 0xEC, 0x0C, 0x99, 0xBB, 0xEC, 0x04, 0x03, 0x04, 0x96,
-- 0x13, 0x25, 0x03, 0xEC, 0xC1, 0xD4, 0x11, 0x93, 0xBA, 0xEC, 0x19, 0x05, 0xBA, 0xEC, 0x1B, 0xD7, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x99, 0xC4, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x41, 0x92,
-- 0x01, 0xD2, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x2A, 0xF5, 0x11, 0x93, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x22, 0xF5, 0x19, 0xD3, 0xB8, 0xEC, 0x19, 0xD3, 0xBA, 0xEC,
-- 0x19, 0xD3, 0xBB, 0xEC, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x2A, 0xF5, 0x41, 0x98, 0x1C, 0xD9, 0xB7, 0xEC, 0x11, 0x93, 0xBF, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x3B, 0xF5,
-- 0x11, 0x93, 0x00, 0x82, 0x19, 0xD3, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x98, 0x1C, 0xD9, 0xBF, 0xEC, 0x0F, 0x9F, 0x43, 0xF5,
-- 0x01, 0x92, 0x19, 0xD3, 0xB7, 0xEC, 0x01, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x4F, 0xF5, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x47, 0x00,
-- 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6E, 0xF5, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46,
-- 0x02, 0x5E, 0x0F, 0x9F, 0x71, 0xF5, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x71, 0xF5, 0x41, 0x92, 0x0F, 0x9F,
-- 0x72, 0xF5, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x13, 0x97,
-- 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x9D, 0xF5, 0x09, 0x63, 0x08, 0x43, 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9B, 0xEC, 0xD2, 0x96, 0x1B, 0xD7,
-- 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0xDB, 0xF5, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9,
-- 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0xB5, 0xF5, 0x0A, 0x95, 0x6F, 0xEC, 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69,
-- 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, 0x11, 0x43, 0xC1, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xD8, 0xF5, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94,
-- 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xCA, 0xF5, 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0xB3, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00,
-- 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xC1, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0xBC, 0xF5, 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xC1, 0xEC,
-- 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A,
-- 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00,
-- 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x6E, 0xEC, 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA,
-- 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xF0, 0xF5, 0x41, 0x00, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x2A, 0xF6, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F,
-- 0x27, 0xF6, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xC0, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00,
-- 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC,
-- 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4C, 0xF6, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97,
-- 0x0F, 0x9F, 0x5B, 0xF6, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8, 0x14, 0x99, 0xFE, 0xBC, 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x52, 0xF6,
-- 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x74, 0xF6, 0x02, 0x8E, 0x0F, 0x9F, 0x6E, 0xF6, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x98, 0xF6, 0x0F, 0x9F, 0xC5, 0xF6, 0x63, 0x42, 0x02, 0x4E,
-- 0x0F, 0x9F, 0xBB, 0xF6, 0x0F, 0x9F, 0xC5, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x0C, 0x99, 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0x81, 0xF6, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96,
-- 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x7D, 0xF6, 0x1A, 0xD5, 0xC1, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65,
-- 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0xC5, 0xF6, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, 0x0F, 0x9F,
-- 0xC5, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92, 0x05, 0x03, 0x42, 0x02, 0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, 0x14, 0xF1,
-- 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94, 0x02, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0xA4, 0xF6, 0x0F, 0x9F, 0xC5, 0xF6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2,
-- 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0xC8, 0xF6, 0x43, 0x00, 0x63, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4,
-- 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3,
-- 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xFB, 0xF6, 0x01, 0x94, 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5,
-- 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xE6, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94,
-- 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x0B, 0xF7, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B,
-- 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x52, 0xF5, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x1F, 0xF7, 0x40, 0xF0, 0xA7, 0xF2, 0x0F, 0x9F, 0x2D, 0xF7, 0x40, 0x96,
-- 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x25, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA,
-- 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2,
-- 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63,
-- 0xEA, 0x43, 0x01, 0x97, 0xC3, 0x94, 0x44, 0xA4, 0xC1, 0xD4, 0x11, 0x93, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF7, 0x12, 0x95, 0x93, 0xEC, 0x0B, 0x67, 0x36, 0x43, 0xD2, 0x98,
-- 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x98, 0x03, 0x93, 0xC1, 0xD8, 0x11, 0x93, 0xB9, 0xEC, 0x09, 0x03, 0xFF, 0xFF, 0x19, 0xD3, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xF7, 0x19, 0xD3,
-- 0xB8, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xCA, 0xD2, 0xC2, 0xD2, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43,
-- 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0x0F, 0x9F, 0x8F, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2,
-- 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26,
-- 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B,
-- 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0xBA, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00,
-- 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00,
-- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xF2,
-- 0xE4, 0xF7, 0x00, 0x00, 0x87, 0xF2, 0xE4, 0xF7, 0x00, 0x00, 0xCC, 0xF2, 0xE1, 0xF7, 0xE8, 0xF7, 0x00, 0x00, 0xB4, 0xF3, 0xE4, 0xF7, 0x25, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xC6, 0xF7, 0x02, 0x00, 0x1F, 0xEC,
-+ 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA0, 0xEC, 0x00, 0x00, 0x98, 0xF7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8,
-+ 0x40, 0xF0, 0xB4, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF6, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0,
-+ 0xE9, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xE7, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF1, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0,
-+ 0x89, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86,
-+ 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A,
-+ 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A,
-+ 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2,
-+ 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xCA, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1,
-+ 0x40, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E,
-+ 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x09, 0x93, 0xB9, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F,
-+ 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82,
-+ 0x09, 0x93, 0xB9, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x40, 0xF0, 0xCD, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3,
-+ 0x04, 0xEC, 0x40, 0xF0, 0x38, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x82, 0xF7,
-+ 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97,
-+ 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE,
-+ 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F,
-+ 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96,
-+ 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x13, 0x97,
-+ 0x95, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x99, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3,
-+ 0xFF, 0xBF, 0x11, 0xA3, 0x9A, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3,
-+ 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xF0,
-+ 0x11, 0x93, 0x9F, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9F, 0xEC, 0x11, 0x93, 0xC8, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3,
-+ 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x19, 0xD3, 0x9F, 0xEC,
-+ 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x95, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x99, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x9A, 0xEC,
-+ 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF,
-+ 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x97, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x9C, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x97, 0xEC, 0x46, 0x02,
-+ 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x97, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9B, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF,
-+ 0x13, 0x97, 0x98, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xEF, 0x11, 0x93, 0xCE, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xCE, 0xF7,
-+ 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xCD, 0xF7, 0x40, 0x98, 0x1C, 0xD9, 0x9B, 0xEC, 0x12, 0x95, 0x9B, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF0, 0x0A, 0xB3,
-+ 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05, 0xA8, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA0, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9B, 0xEC,
-+ 0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x13, 0xF0, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0xB0, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9B, 0xEC, 0xC5, 0x96,
-+ 0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x97, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93, 0x97, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95,
-+ 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93,
-+ 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2,
-+ 0x12, 0x95, 0x97, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x9B, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF0,
-+ 0x12, 0x95, 0x97, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x7C, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x7D, 0xF0, 0x11, 0x93,
-+ 0x97, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92,
-+ 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x98, 0xEC,
-+ 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xB1, 0xF0, 0x09, 0x63, 0xFE, 0x7F, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xA5, 0x00, 0x04, 0xC1, 0xD4, 0x11, 0x93, 0x9F, 0xEC, 0x09, 0xA3,
-+ 0x00, 0x01, 0x19, 0xD3, 0x9F, 0xEC, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA6, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93,
-+ 0x95, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB1, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xB1, 0xF0, 0x88, 0xD4, 0x88, 0xDC,
-+ 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF0, 0x0A, 0x65, 0xFD, 0x7D,
-+ 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xBE, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E,
-+ 0x0F, 0x9F, 0xEF, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0xDA, 0xF3, 0x11, 0x93, 0xBE, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93,
-+ 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xBE, 0xEC, 0x88, 0x98,
-+ 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0x48, 0xF1, 0x41, 0x00, 0x88, 0x98,
-+ 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6, 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E,
-+ 0x0F, 0x9F, 0x45, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF1, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x45, 0xF1, 0x41, 0x98, 0x1C, 0xD9,
-+ 0xBF, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x56, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9,
-+ 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E,
-+ 0x0F, 0x9F, 0x43, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42,
-+ 0x02, 0x4E, 0x0F, 0x9F, 0x55, 0xF1, 0x40, 0xF0, 0x27, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5E, 0xF1, 0x40, 0xF0, 0x15, 0xF6, 0xC5, 0x96, 0x0B, 0xB3,
-+ 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x67, 0xF1, 0x40, 0xF0, 0x4C, 0xF5, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF1, 0x13, 0x97, 0x21, 0xBC,
-+ 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x79, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xF1,
-+ 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xC7, 0xF7, 0x11, 0x93, 0x03, 0xEC,
-+ 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x98, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xC7, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x38, 0xF2,
-+ 0x0F, 0x9F, 0xAB, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E,
-+ 0x0F, 0x9F, 0xB4, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xC5, 0xF1, 0x41, 0x42,
-+ 0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, 0x13, 0x97,
-+ 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDA, 0xF1, 0x40, 0xF0, 0x0A, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F,
-+ 0xED, 0xF1, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x1B, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00,
-+ 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x09, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95,
-+ 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2,
-+ 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40,
-+ 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65,
-+ 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65,
-+ 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97,
-+ 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA,
-+ 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x56, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0,
-+ 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x2A, 0xF5, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x85, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97,
-+ 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xF2, 0x40, 0xF0, 0x94, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0,
-+ 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB5, 0xEC, 0x11, 0x93, 0xB3, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F,
-+ 0xAC, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x96, 0xEC, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x01, 0x80,
-+ 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0xB3, 0xEC, 0x40, 0x46,
-+ 0x02, 0x5E, 0x0F, 0x9F, 0x1B, 0xF3, 0x12, 0x95, 0x96, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2,
-+ 0x11, 0x93, 0x96, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x96, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95,
-+ 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xD5, 0xF2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92,
-+ 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x02, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x03, 0xF3, 0x0A, 0x05, 0xFF, 0xFF,
-+ 0x0F, 0x9F, 0x03, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x96, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x13, 0x97, 0x96, 0xEC, 0x03, 0x93, 0xD1, 0x94, 0x7A, 0x95, 0x7A, 0x95, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93,
-+ 0x01, 0x05, 0x49, 0x06, 0xC3, 0x92, 0x7F, 0xB2, 0x01, 0x05, 0x1A, 0xD5, 0xB3, 0xEC, 0x0A, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB5, 0xEC, 0x02, 0x43,
-+ 0x02, 0x8E, 0x0F, 0x9F, 0x69, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x3C, 0xF3, 0x11, 0x93, 0xCE, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xCE, 0xF7, 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3,
-+ 0xCD, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB3, 0xEC, 0x0F, 0x9F, 0x81, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40,
-+ 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4E, 0xF3, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x4E, 0xF3, 0x40, 0xF0, 0x95, 0xF3, 0x0F, 0x9F, 0x83, 0xF3, 0x41, 0x92, 0xC8, 0xD2,
-+ 0x0A, 0x95, 0x91, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xBF, 0xEC, 0x0F, 0x9F,
-+ 0x83, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x83, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x7B, 0xF3, 0x11, 0x93, 0xCE, 0xF7,
-+ 0x41, 0x02, 0x19, 0xD3, 0xCE, 0xF7, 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xCD, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, 0x09, 0x63,
-+ 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x95, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2,
-+ 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xC9, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA5, 0xF3, 0x0A, 0x65, 0xBC, 0x69,
-+ 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xF3, 0x11, 0x93, 0xCE, 0xF7, 0x41, 0x02,
-+ 0x19, 0xD3, 0xCE, 0xF7, 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0xCD, 0xF7, 0x11, 0x93, 0xB4, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB3, 0xEC, 0x1A, 0xD5, 0x05, 0x80,
-+ 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB3, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00,
-+ 0x09, 0x93, 0x96, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0x82,
-+ 0xC5, 0xD2, 0x40, 0x94, 0x01, 0xD4, 0x13, 0x97, 0xB7, 0xEC, 0x02, 0xD6, 0x03, 0x95, 0x0C, 0x99, 0xBA, 0xEC, 0x04, 0x05, 0x13, 0x97, 0x03, 0xEC, 0x01, 0x27, 0x02, 0x99, 0xC4, 0x92, 0x03, 0x03,
-+ 0xC2, 0xD2, 0x14, 0x99, 0xB9, 0xEC, 0x03, 0x09, 0x1C, 0xD9, 0xB9, 0xEC, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x18, 0xF5, 0x01, 0x92, 0x03, 0xD2,
-+ 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x02, 0x96, 0x0B, 0x05, 0x01, 0x00, 0x1A, 0xD5, 0xB7, 0xEC, 0xC5, 0x92, 0x43, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x26, 0xF4, 0x42, 0x44, 0x02, 0x8E,
-+ 0x0F, 0x9F, 0x26, 0xF4, 0x11, 0x93, 0xBE, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x26, 0xF4, 0x0C, 0x49, 0xD3, 0x08, 0x02, 0x8E, 0x0F, 0x9F, 0x26, 0xF4, 0x11, 0x63, 0x07, 0x82, 0x11, 0xA3,
-+ 0x07, 0x82, 0x71, 0x93, 0x79, 0x93, 0x79, 0x93, 0x79, 0x93, 0x03, 0xD2, 0xC5, 0x94, 0x0A, 0xB5, 0xFC, 0xFF, 0x04, 0xD4, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x35, 0xF4, 0x11, 0x93,
-+ 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xF4, 0xC5, 0x98, 0x0C, 0x03, 0xFF, 0xFF, 0x42, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x63, 0xF4, 0x0A, 0x95, 0xBA, 0xEC, 0x42, 0x92, 0x19, 0xD3,
-+ 0xB8, 0xEC, 0xC5, 0x96, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x55, 0xF4, 0x0B, 0x07, 0xFC, 0xFF, 0xC5, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x96, 0x1B, 0xD7, 0xCA, 0xBC, 0x09, 0x03,
-+ 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x41, 0xF4, 0x19, 0xD3, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x61, 0xF4, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xC2, 0xD2, 0x0F, 0x9F,
-+ 0x63, 0xF4, 0x1A, 0xD5, 0x93, 0xEC, 0x03, 0x98, 0x40, 0x48, 0x02, 0x5E, 0x0F, 0x9F, 0x90, 0xF4, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x73, 0xF4, 0x04, 0x94, 0x48, 0x44,
-+ 0x02, 0x4E, 0x0F, 0x9F, 0x7E, 0xF4, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x90, 0xF4, 0x11, 0x93, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x90, 0xF4, 0x41, 0x96, 0x01, 0xD6,
-+ 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0xE9, 0xF4,
-+ 0xC5, 0x98, 0x43, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xE9, 0xF4, 0x4F, 0x96, 0x0C, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9D, 0xF4, 0x47, 0x96, 0x11, 0x93, 0xB6, 0xEC, 0x40, 0x42,
-+ 0x02, 0x4E, 0x0F, 0x9F, 0xC5, 0xF4, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x05, 0xD4, 0xC8, 0xD6, 0xC8, 0xD2,
-+ 0x40, 0xF0, 0x6D, 0xF7, 0x42, 0x00, 0x05, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xC5, 0xF4, 0x06, 0x98, 0x50, 0x98, 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x98, 0x1C, 0xD9,
-+ 0xA2, 0xBC, 0x40, 0x92, 0x03, 0xD2, 0x0F, 0x9F, 0xEE, 0xF4, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xD2, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2,
-+ 0x0F, 0x9F, 0xEE, 0xF4, 0x11, 0x93, 0xB7, 0xEC, 0x0C, 0x99, 0xBA, 0xEC, 0x04, 0x03, 0x04, 0x96, 0x13, 0x25, 0x03, 0xEC, 0xC1, 0xD4, 0x11, 0x93, 0xB9, 0xEC, 0x19, 0x05, 0xB9, 0xEC, 0x1B, 0xD7,
-+ 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x99, 0xC4, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x01, 0xD2, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x02, 0xF5, 0x11, 0x93, 0xB8, 0xEC,
-+ 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xFA, 0xF4, 0x19, 0xD3, 0xB7, 0xEC, 0x19, 0xD3, 0xB9, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x02, 0xF5, 0x41, 0x98,
-+ 0x1C, 0xD9, 0xB6, 0xEC, 0x11, 0x93, 0xBE, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x13, 0xF5, 0x11, 0x93, 0x00, 0x82, 0x19, 0xD3, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92,
-+ 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x98, 0x1C, 0xD9, 0xBE, 0xEC, 0x0F, 0x9F, 0x1B, 0xF5, 0x01, 0x92, 0x19, 0xD3, 0xB6, 0xEC, 0x01, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x27, 0xF5,
-+ 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3,
-+ 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x46, 0xF5, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF5, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF,
-+ 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF5, 0x41, 0x92, 0x0F, 0x9F, 0x4A, 0xF5, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00,
-+ 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x13, 0x97, 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x75, 0xF5, 0x09, 0x63, 0x08, 0x43,
-+ 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9B, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6,
-+ 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0xB3, 0xF5, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9, 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x8D, 0xF5, 0x0A, 0x95, 0x6F, 0xEC,
-+ 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69, 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, 0x11, 0x43,
-+ 0xC0, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xB0, 0xF5, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF5,
-+ 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x8E, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xC0, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x94, 0xF5,
-+ 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xC0, 0xEC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43,
-+ 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A,
-+ 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x6E, 0xEC,
-+ 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0x96, 0xC8, 0xD6, 0x40, 0xF0,
-+ 0xC8, 0xF5, 0x41, 0x00, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x05, 0xF6, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x02, 0xF6, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92,
-+ 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xBF, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92,
-+ 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC,
-+ 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x27, 0xF6, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97, 0x0F, 0x9F, 0x36, 0xF6, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8,
-+ 0x14, 0x99, 0xFE, 0xBC, 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x2D, 0xF6, 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4F, 0xF6,
-+ 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF6, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xF6, 0x0F, 0x9F, 0xA0, 0xF6, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x96, 0xF6, 0x0F, 0x9F, 0xA0, 0xF6, 0x0D, 0x03,
-+ 0x01, 0x00, 0x0C, 0x99, 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0x5C, 0xF6, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F,
-+ 0x58, 0xF6, 0x1A, 0xD5, 0xC0, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF,
-+ 0xC2, 0xD2, 0x0F, 0x9F, 0xA0, 0xF6, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, 0x0F, 0x9F, 0xA0, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92,
-+ 0x05, 0x03, 0x42, 0x02, 0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, 0x01, 0xF1, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94,
-+ 0x02, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x7F, 0xF6, 0x0F, 0x9F, 0xA0, 0xF6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2, 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0xA3, 0xF6, 0x43, 0x00,
-+ 0x63, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02,
-+ 0xC1, 0x92, 0x01, 0xD2, 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F,
-+ 0xD6, 0xF6, 0x01, 0x94, 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93,
-+ 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xC1, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E,
-+ 0x0F, 0x9F, 0xE6, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD,
-+ 0x40, 0xF0, 0x2A, 0xF5, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xFA, 0xF6, 0x40, 0xF0, 0x94, 0xF2, 0x0F, 0x9F, 0x08, 0xF7, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0,
-+ 0x2A, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97,
-+ 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43,
-+ 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0xEA, 0x43, 0x01, 0x97, 0xC3, 0x94, 0x44, 0xA4, 0xC1, 0xD4,
-+ 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF7, 0x12, 0x95, 0x93, 0xEC, 0x0B, 0x67, 0x36, 0x43, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x98, 0x03, 0x93, 0xC1, 0xD8,
-+ 0x11, 0x93, 0xB8, 0xEC, 0x09, 0x03, 0xFF, 0xFF, 0x19, 0xD3, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x3A, 0xF7, 0x19, 0xD3, 0xB7, 0xEC, 0x19, 0xD3, 0xB9, 0xEC, 0x0A, 0x05, 0xFE, 0xFF,
-+ 0xCA, 0xD2, 0xCA, 0xD2, 0xC2, 0xD2, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0x0F, 0x9F,
-+ 0x6A, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00,
-+ 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E,
-+ 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B,
-+ 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0x95, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00,
-+ 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF2, 0xBF, 0xF7, 0x00, 0x00, 0x74, 0xF2, 0xBF, 0xF7, 0x00, 0x00,
-+ 0xB9, 0xF2, 0xBC, 0xF7, 0xC3, 0xF7, 0x00, 0x00, 0x86, 0xF3, 0xBF, 0xF7, 0x21, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
--
- #endif
diff --git a/packages/zd1211/zd1211-r52/makefile.patch b/packages/zd1211/zd1211-r52/makefile.patch
deleted file mode 100644
index 9ec821daa1..0000000000
--- a/packages/zd1211/zd1211-r52/makefile.patch
+++ /dev/null
@@ -1,57 +0,0 @@
---- zd1211-driver-r52/Makefile.orig 2006-01-22 11:32:24.000000000 +0100
-+++ zd1211-driver-r52/Makefile 2006-01-22 12:37:17.000000000 +0100
-@@ -4,17 +4,17 @@
- #
- #
-
--CC=gcc
--CPP=g++
--LD=ld
--rM=rm -f -r
-+#CC=gcc
-+#CPP=g++
-+#LD=ld
-+#RM=rm -f -r
-
--MODPATH := /lib/modules/$(shell uname -r)
-+#MODPATH := /lib/modules/$(shell uname -r)
-
- # if the kernel is 2.6.x, turn on this
- KERN_26=y
-
--KERNEL_SOURCE=$(MODPATH)/source
-+#KERNEL_SOURCE=$(MODPATH)/source
- #KERNEL_SOURCE=/usr/src/linux
-
- # set to 1 for zd1211b
-@@ -46,7 +46,7 @@
- EXTRA_CFLAGS += -D__SMP__ -DSMP
- endif
-
--KDIR := $(MODPATH)/build
-+#KDIR := $(MODPATH)/build
- PWD := $(shell pwd)
-
- WLAN_SRC=$(PWD)
-@@ -219,15 +219,15 @@
-
-
- install: all
-- mkdir -p $(MODPATH)/net
-+# mkdir -p $(MODPATH)/net
- # mkdir -p /etc/zd1211
-- cp $(MODULE) $(MODPATH)/net
-- depmod -a
-+# cp $(MODULE) $(MODPATH)/net
-+# depmod -a
-
- #for apdbg
-- gcc -o apdbg apdbg.c
-- chmod +x apdbg
-- cp ./apdbg /sbin/apdbg
-+# gcc -o apdbg apdbg.c
-+# chmod +x apdbg
-+# cp ./apdbg /sbin/apdbg
-
- clean:
- rm -rf .tmp_versions .*.cmd *.ko *.mod.c *.mod.o *.o $(SRC_DIR)/*.o $(SRC_DIR)/.*.o.cmd
diff --git a/packages/zd1211/zd1211-r52/transmitkey.index.fix.diff b/packages/zd1211/zd1211-r52/transmitkey.index.fix.diff
deleted file mode 100644
index a225d37698..0000000000
--- a/packages/zd1211/zd1211-r52/transmitkey.index.fix.diff
+++ /dev/null
@@ -1,16 +0,0 @@
---- zd1211-driver-r52/src/zd1205.c.orig 2006-02-10 10:02:56.000000000 +0100
-+++ zd1211-driver-r52/src/zd1205.c 2006-02-10 10:02:56.000000000 +0100
-@@ -5693,7 +5693,12 @@
- /* Check if the key is not marked as invalid */
- if (!(erq->flags & IW_ENCODE_NOKEY)) { // for command: key xxxxxxxxxx [n]
- // ZD1211DEBUG(0, "Set contents of key %d\n", index+1);
-- pSetting->EncryKeyId = index;
-+ /* We change the transmit key only if we are
-+ * transitioning from a no-encrypt state. This
-+ * behavior is deduced from the iwconfig man page */
-+ if (pSetting->EncryOnOff == 0) {
-+ pSetting->EncryKeyId = index;
-+ }
- memcpy(&pSetting->keyVector[index][0], key, pSetting->WepKeyLen);
- zd1205_config_wep_keys(macp);
- } else { // For command: key on
diff --git a/packages/zd1211/zd1211-r52/zd1205.c.diff b/packages/zd1211/zd1211-r52/zd1205.c.diff
deleted file mode 100644
index 946df139df..0000000000
--- a/packages/zd1211/zd1211-r52/zd1205.c.diff
+++ /dev/null
@@ -1,10 +0,0 @@
---- zd1211-driver-r52/src/zd1205.c.orig 2006-02-09 02:45:12.000000000 +0100
-+++ zd1211-driver-r52/src/zd1205.c 2006-02-09 02:46:53.000000000 +0100
-@@ -8512,6 +8512,7 @@
- printk(KERN_ERR "STA_DEAUTHED\n");
- printk(KERN_ERR "mac addr = %02x:%02x:%02x:%02x:%02x:%02x\n",
- StaAddr[0], StaAddr[1], StaAddr[2], StaAddr[3], StaAddr[4], StaAddr[5]);
-+ memset(&macp->BSSID[0], 0, 6);
- break;
-
- default:
diff --git a/packages/zd1211/zd1211-r52/zdhci.c.diff b/packages/zd1211/zd1211-r52/zdhci.c.diff
deleted file mode 100644
index ad6568685c..0000000000
--- a/packages/zd1211/zd1211-r52/zdhci.c.diff
+++ /dev/null
@@ -1,10 +0,0 @@
---- zd1211-driver-r52/src/zdhci.c.orig 2006-02-09 02:47:21.000000000 +0100
-+++ zd1211-driver-r52/src/zdhci.c 2006-02-09 02:48:27.000000000 +0100
-@@ -892,6 +892,7 @@
- //check capability ...
- if (cap & CAP_PRIVACY) {
- if (!mPrivacyInvoked)
-+ if (!mPrivacyInvoked && !mProbeWithSsid)
- continue;
- } else {
- if (mPrivacyInvoked)
diff --git a/packages/zd1211/zd1211-r67/.mtn2git_empty b/packages/zd1211/zd1211-r67/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/zd1211/zd1211-r67/.mtn2git_empty
diff --git a/packages/zd1211/zd1211-r67/makefile-unslung.patch b/packages/zd1211/zd1211-r67/makefile-unslung.patch
new file mode 100644
index 0000000000..3ad1e24424
--- /dev/null
+++ b/packages/zd1211/zd1211-r67/makefile-unslung.patch
@@ -0,0 +1,48 @@
+--- zd1211-driver-r59/Makefile.orig 2006-02-25 16:04:26.000000000 +0100
++++ zd1211-driver-r59/Makefile 2006-02-25 17:11:27.000000000 +0100
+@@ -4,24 +4,23 @@
+ #
+ #
+
+-CC=gcc
+-CPP=g++
+-LD=ld
+-rM=rm -f -r
++CC ?= gcc
++CPP ?= g++
++LD ?= ld
+
+-MODPATH := /lib/modules/$(shell uname -r)
++MODPATH ?= /lib/modules/$(shell uname -r)
+
+ # if the kernel is 2.6.x, turn on this
+-KERN_26=y
++#KERN_26=y
+
+-KERNEL_SOURCE=$(MODPATH)/source
++KERNEL_SOURCE ?= $(MODPATH)/source
+ #KERNEL_SOURCE=/usr/src/linux
+
+ # set to 1 for zd1211b
+ ZD1211REV_B=0
+
+-SRC_DIR=src
+-DEFINES=-D__KERNEL__ -DMODULE=1
++SRC_DIR=src
++DEFINES ?=-D__KERNEL__ -DMODULE=1
+
+
+
+@@ -227,9 +226,9 @@
+ depmod -a
+
+ #for apdbg
+- gcc -o apdbg apdbg.c
+- chmod +x apdbg
+- cp ./apdbg /sbin/apdbg
++# gcc -o apdbg apdbg.c
++# chmod +x apdbg
++# cp ./apdbg /sbin/apdbg
+
+ clean:
+ rm -rf .tmp_versions .*.cmd *.ko *.mod.c *.mod.o *.o $(SRC_DIR)/*.o $(SRC_DIR)/.*.o.cmd
diff --git a/packages/zd1211/zd1211-r67/makefile.patch b/packages/zd1211/zd1211-r67/makefile.patch
new file mode 100644
index 0000000000..5c575faece
--- /dev/null
+++ b/packages/zd1211/zd1211-r67/makefile.patch
@@ -0,0 +1,47 @@
+--- zd1211-driver-r59/Makefile.orig 2006-02-25 16:04:26.000000000 +0100
++++ zd1211-driver-r59/Makefile 2006-02-25 17:11:27.000000000 +0100
+@@ -4,24 +4,23 @@
+ #
+ #
+
+-CC=gcc
+-CPP=g++
+-LD=ld
+-rM=rm -f -r
++CC ?= gcc
++CPP ?= g++
++LD ?= ld
+
+-MODPATH := /lib/modules/$(shell uname -r)
++MODPATH ?= /lib/modules/$(shell uname -r)
+
+ # if the kernel is 2.6.x, turn on this
+ KERN_26=y
+
+-KERNEL_SOURCE=$(MODPATH)/source
++KERNEL_SOURCE ?= $(MODPATH)/source
+ #KERNEL_SOURCE=/usr/src/linux
+
+ # set to 1 for zd1211b
+ ZD1211REV_B=0
+
+-SRC_DIR=src
+-DEFINES=-D__KERNEL__ -DMODULE=1
++SRC_DIR=src
++DEFINES ?=-D__KERNEL__ -DMODULE=1
+
+
+
+@@ -227,9 +226,9 @@
+ depmod -a
+
+ #for apdbg
+- gcc -o apdbg apdbg.c
+- chmod +x apdbg
+- cp ./apdbg /sbin/apdbg
++# gcc -o apdbg apdbg.c
++# chmod +x apdbg
++# cp ./apdbg /sbin/apdbg
+
+ clean:
+ rm -rf .tmp_versions .*.cmd *.ko *.mod.c *.mod.o *.o $(SRC_DIR)/*.o $(SRC_DIR)/.*.o.cmd
diff --git a/packages/zd1211/zd1211_20050822.bb b/packages/zd1211/zd1211_20050822.bb
deleted file mode 100644
index dbd2c905f4..0000000000
--- a/packages/zd1211/zd1211_20050822.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-DESCRIPTION = "Driver for zd1211 family of wireless USB Dongles"
-PRIORITY = "optional"
-SECTION = "kernel/modules"
-MAINTAINER = "dyoung <dyoung8888@yahoo.com>"
-LICENSE = "GPL"
-PR = "r5"
-RDEPENDS = "wireless-tools"
-
-SRC_URI = "http://download.sourceforge.net/zd1211/sf_zd1211_${PV}_src.tar.gz \
- file://makefile.patch;patch=1 \
- file://iwconfig-rate.patch;patch=1 \
- file://access_ok.patch;patch=1 \
- file://urb-async.patch;patch=1"
-
-S = "${WORKDIR}/zd1211"
-
-inherit module
-
-#do_compile_prepend() {
-# cp -f ${WORKDIR}/Makefile ${S}/
-#}
-
-do_compile () {
- unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
- oe_runmake 'KSRC=${STAGING_KERNEL_DIR}' \
- 'KDIR=${STAGING_KERNEL_DIR}' \
- 'KERNRELEASE=${KERNEL_VERSION}' \
- 'CC="${KERNEL_CC}"' \
- 'LD="${KERNEL_LD}"'
-}
-
-do_install() {
- install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
- install -m 0644 ${S}/src/modules-${KERNEL_VERSION}/*${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
-}
-
diff --git a/packages/zd1211/zd1211_r52.bb b/packages/zd1211/zd1211_r67.bb
index 21982ad64f..af03e7657f 100644
--- a/packages/zd1211/zd1211_r52.bb
+++ b/packages/zd1211/zd1211_r67.bb
@@ -3,17 +3,17 @@ PRIORITY = "optional"
SECTION = "kernel/modules"
MAINTAINER = "Oyvind Repvik <nail@nslu2-linux.org>"
LICENSE = "GPL"
-PR = "r4"
+PR = "r2"
RDEPENDS = "wireless-tools"
SRC_URI = "http://zd1211.ath.cx/download/zd1211-driver-${PV}.tgz \
file://makefile.patch;patch=1 \
- file://firmware.patch;patch=1 \
- file://zd1205.c.diff;patch=1 \
- file://zdhci.c.diff;patch=1 \
- file://transmitkey.index.fix.diff;patch=1 \
"
+SRC_URI_unslung = "http://zd1211.ath.cx/download/zd1211-driver-${PV}.tgz \
+ file://makefile-unslung.patch;patch=1 \
+ "
+
S = "${WORKDIR}/zd1211-driver-${PV}"
inherit module
@@ -23,10 +23,9 @@ do_compile () {
oe_runmake 'MODPATH={D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net' \
'KERNEL_SOURCE=${STAGING_KERNEL_DIR}' \
'KDIR=${STAGING_KERNEL_DIR}' \
- 'SRC_DIR=${S}/src' \
- 'KERNE_VERSION=${KERNEL_VERSION}' \
- 'CC="${KERNEL_CC}"' \
- 'LD="${KERNEL_LD}"'
+ 'KERNEL_VERSION=${KERNEL_VERSION}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}'
}
do_install() {
diff --git a/site/arm-linux b/site/arm-linux
index e3e9968725..dbed723cc0 100644
--- a/site/arm-linux
+++ b/site/arm-linux
@@ -362,3 +362,7 @@ with_broken_putenv=${with_broken_putenv=no}
# xffm
jm_cv_func_working_readdir=yes
+
+# dpkg
+dpkg_cv_va_copy=${ac_cv_va_copy=no}
+dpkg_cv___va_copy=${ac_cv___va_copy=yes}