summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/base.bbclass8
-rw-r--r--classes/kernel.bbclass18
-rw-r--r--classes/tinderclient.bbclass30
-rw-r--r--classes/xlibs.bbclass2
-rw-r--r--conf/bitbake.conf3
-rw-r--r--conf/distro/angstrom-2006.9.conf55
-rw-r--r--conf/distro/angstrom.conf13
-rw-r--r--conf/distro/slugos-packages.conf2
-rw-r--r--conf/distro/slugos.conf2
-rw-r--r--conf/distro/unslung.conf2
-rw-r--r--conf/machine/ep93xx.conf5
-rw-r--r--conf/machine/ipaq-pxa270.conf22
-rw-r--r--conf/machine/qemuarm.conf46
-rw-r--r--files/device_table-unslung.txt1
-rw-r--r--packages/altboot/altboot.bb98
-rw-r--r--packages/altboot/altboot_0.0.0.bb118
-rw-r--r--packages/altboot/altboot_0.0.5.bb152
-rw-r--r--packages/altboot/files/akita/altboot-2.6.cfg3
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick1
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/35-kexec62
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/40-bootNFS2
-rw-r--r--packages/altboot/files/altboot-menu/Advanced/70-install-tgz40
-rw-r--r--packages/altboot/files/altboot.func24
-rw-r--r--packages/altboot/files/altboot.rc/loadkeymap.sh5
-rw-r--r--packages/altboot/files/borzoi/.mtn2git_empty (renamed from packages/ice/.mtn2git_empty)0
-rw-r--r--packages/altboot/files/borzoi/altboot-2.4.cfg27
-rw-r--r--packages/altboot/files/borzoi/altboot-2.6.cfg30
-rw-r--r--packages/altboot/files/c7x0/.mtn2git_empty (renamed from packages/ice/files/.mtn2git_empty)0
-rw-r--r--packages/altboot/files/c7x0/altboot-2.4.cfg26
-rw-r--r--packages/altboot/files/c7x0/altboot-2.6.cfg26
-rw-r--r--packages/altboot/files/init.altboot4
-rw-r--r--packages/antlr/antlr-native_2.7.5.bb1
-rw-r--r--packages/autoconf/autoconf-native_2.59.bb3
-rw-r--r--packages/automake/automake-native.inc1
-rw-r--r--packages/automake/automake-native_1.8.2.bb1
-rw-r--r--packages/automake/automake-native_1.8.4.bb1
-rw-r--r--packages/automake/automake_1.7.7.bb2
-rw-r--r--packages/avahi/avahi_0.6.8.bb (renamed from packages/avahi/avahi_0.6.7.bb)1
-rw-r--r--packages/btsco/btsco-module-0.41/makefile.patch4
-rw-r--r--packages/btsco/btsco-module_0.41.bb1
-rw-r--r--packages/btsco/btsco_0.41.bb2
-rw-r--r--packages/busybox/busybox-1.01/slugos/defconfig2
-rw-r--r--packages/busybox/busybox-1.01/slugos/sysctl.conf32
-rw-r--r--packages/busybox/busybox_1.01.bb7
-rw-r--r--packages/bzflag/bzflag_1.10.6.20040515.bb2
-rw-r--r--packages/cairo/cairo_0.5.0.bb4
-rw-r--r--packages/cairo/cairo_0.5.2.bb4
-rw-r--r--packages/cairo/cairo_0.9.2.bb2
-rw-r--r--packages/cairo/cairo_1.0.0.bb2
-rw-r--r--packages/cairo/cairo_1.0.2.bb2
-rw-r--r--packages/cairo/cairo_cvs.bb4
-rw-r--r--packages/classpath/classpath_0.14.bb2
-rw-r--r--packages/classpath/classpath_0.15.bb2
-rw-r--r--packages/classpath/classpath_0.17.bb2
-rw-r--r--packages/classpath/classpath_0.18.bb2
-rw-r--r--packages/classpath/classpath_0.19.bb2
-rw-r--r--packages/classpath/classpath_0.20.bb2
-rw-r--r--packages/classpath/classpath_cvs.bb2
-rw-r--r--packages/compositeext/compositeext_cvs.bb2
-rw-r--r--packages/damageext/damageext_cvs.bb2
-rw-r--r--packages/dasher/dasher-gpe_0.0cvs20040828.bb2
-rw-r--r--packages/dbus/dbus-0.61/.mtn2git_empty (renamed from packages/libsm/.mtn2git_empty)0
-rw-r--r--packages/dbus/dbus-0.61/dbus-1.init86
-rw-r--r--packages/dbus/dbus-0.61/no-bindings.patch12
-rw-r--r--packages/dbus/dbus-0.61/no-introspect.patch14
-rw-r--r--packages/dbus/dbus-native_0.61.bb19
-rw-r--r--packages/dbus/dbus_0.61.bb13
-rw-r--r--packages/dbus/dbus_0.61.inc64
-rw-r--r--packages/detect-stylus/detect-stylus_0.10.bb2
-rw-r--r--packages/detect-stylus/detect-stylus_0.13.bb2
-rw-r--r--packages/dia/.mtn2git_empty (renamed from packages/libsm/files/.mtn2git_empty)0
-rw-r--r--packages/dia/dia_0.94+0.95pre3.bb14
-rw-r--r--packages/dri/drm-kernel_cvs.bb2
-rw-r--r--packages/dri/drm_cvs.bb2
-rw-r--r--packages/eds/eds-dbus_svn.bb19
-rw-r--r--packages/efl/evas-x11_0.9.9.023.bb2
-rw-r--r--packages/efl/evas-x11_20060113.bb2
-rw-r--r--packages/efl/imlib2-x11_1.2.1.010.bb2
-rw-r--r--packages/efl/imlib2-x11_20060128.bb2
-rw-r--r--packages/fbpanel/.mtn2git_empty (renamed from packages/libxcursor/.mtn2git_empty)0
-rw-r--r--packages/fbpanel/fbpanel-4.3/.mtn2git_empty (renamed from packages/libxcursor/files/.mtn2git_empty)0
-rw-r--r--packages/fbpanel/fbpanel-4.3/makefile.common.patch13
-rw-r--r--packages/fbpanel/fbpanel_4.3.bb31
-rw-r--r--packages/fdclock/fdclock_cvs.bb2
-rw-r--r--packages/feh/feh_1.2.6.bb2
-rw-r--r--packages/feh/feh_1.2.7.bb2
-rw-r--r--packages/fixesext/fixesext_cvs.bb2
-rw-r--r--packages/fontconfig/fontconfig_2.2.95.bb2
-rw-r--r--packages/fs/fs_cvs.bb4
-rw-r--r--packages/gaim/files/gevolution-eds-dbus.patch53
-rw-r--r--packages/gaim/gaim.inc9
-rw-r--r--packages/gaim/gaim_cvs.bb1
-rw-r--r--packages/gcc/gcc3-build-cross.inc6
-rw-r--r--packages/gkrellm/gkrellm_2.2.7.bb2
-rw-r--r--packages/glibmm/glibmm_2.8.4.bb24
-rw-r--r--packages/gnokii/gnokii_0.6.4.bb2
-rw-r--r--packages/gnome/libwnck_2.12.1.bb1
-rw-r--r--packages/gnuplot/gnuplot_4.0.0.bb2
-rw-r--r--packages/gnutls/gnutls_1.2.10.bb27
-rw-r--r--packages/gnutls/gnutls_1.3.4.bb27
-rw-r--r--packages/gpe-autostarter/gpe-autostarter_0.11.bb2
-rw-r--r--packages/gpe-autostarter/gpe-autostarter_0.7.bb2
-rw-r--r--packages/gpe-bootsplash/files/speed.patch51
-rw-r--r--packages/gpe-bootsplash/gpe-bootsplash_1.15.bb5
-rw-r--r--packages/gpe-conf/files/fixsegfault.patch44
-rw-r--r--packages/gpe-conf/gpe-conf_0.1.30.bb6
-rw-r--r--packages/gpe-soundserver/gpe-soundserver_0.4-1.bb2
-rw-r--r--packages/gpe-what/gpe-what_0.30.bb2
-rw-r--r--packages/gpe-what/gpe-what_0.31.bb2
-rw-r--r--packages/gpe-what/gpe-what_0.33.bb2
-rw-r--r--packages/gpe-what/gpe-what_0.41.bb2
-rw-r--r--packages/gpe-what/gpe-what_0.42.bb2
-rw-r--r--packages/gpe-what/gpe-what_cvs.bb2
-rw-r--r--packages/gtk+/gtk+-1.2_1.2.10.bb2
-rw-r--r--packages/gtk+/gtk+-native-1.2_1.2.10.bb2
-rw-r--r--packages/gtk+/gtk+_2.2.4.bb2
-rw-r--r--packages/gtk+/gtk+_2.4.13.bb2
-rw-r--r--packages/gtk+/gtk+_2.4.4.bb2
-rw-r--r--packages/gtk+/gtk+_2.6.10.bb2
-rw-r--r--packages/gtk+/gtk+_2.6.3.bb2
-rw-r--r--packages/gtk+/gtk+_2.6.4-1.osso7.bb2
-rw-r--r--packages/gtk+/gtk+_2.6.7.bb2
-rw-r--r--packages/gtk+/gtk+_2.8.9.bb8
-rw-r--r--packages/gtk-webcore/osb-browser_20060212.bb2
-rw-r--r--packages/gtk-webcore/osb-jscore_20060212.bb2
-rw-r--r--packages/gtk-webcore/osb-nrcit_20060212.bb2
-rw-r--r--packages/gtk-webcore/osb-nrcore_20060212.bb2
-rw-r--r--packages/gtkmm/gtkmm_2.8.3.bb23
-rw-r--r--packages/hal/hal_0.5.4.bb4
-rw-r--r--packages/hal/hal_0.5.7.bb47
-rw-r--r--packages/icewm/icewm_1.2.20.bb2
-rw-r--r--packages/ion/ion3_0.0+ds20041104.bb2
-rw-r--r--packages/ipaq-sleep/ipaq-sleep_0.7-9.bb2
-rw-r--r--packages/ipaq-sleep/ipaq-sleep_0.8.bb2
-rw-r--r--packages/ipaq-sleep/ipaq-sleep_0.9.bb2
-rw-r--r--packages/ipkg/ipkg_0.99.159.bb1
-rw-r--r--packages/ixp425-eth/ixp400-eth_1.5.bb2
-rw-r--r--packages/ixp4xx/ixp-osal_2.1.bb2
-rw-r--r--packages/ixp4xx/ixp4xx-csr_2.1.bb2
-rw-r--r--packages/kaffe/kaffe-gtk_1.1.5.bb2
-rw-r--r--packages/kaffe/kaffe-gtk_cvs.bb2
-rw-r--r--packages/keylaunch/keylaunch_2.0.7.bb2
-rw-r--r--packages/libfakekey/libfakekey_svn.bb2
-rw-r--r--packages/libgcrypt/libgcrypt_1.2.2.bb28
-rw-r--r--packages/libgpepimc/libgpepimc_0.6.bb1
-rw-r--r--packages/libgpevtype/libgpevtype_0.16.bb25
-rw-r--r--packages/libgpewidget/libgpewidget_0.110.bb26
-rw-r--r--packages/libmatchbox/files/svn-autofu-xsettings.patch132
-rw-r--r--packages/libmatchbox/files/svn-code-misc-xsettings.patch101
-rw-r--r--packages/libmatchbox/files/svn-explicit-types.patch363
-rw-r--r--packages/libmatchbox/libmatchbox.inc2
-rw-r--r--packages/libmatchbox/libmatchbox_1.7.bb4
-rw-r--r--packages/libpixman/libpixman_0.1.5.bb2
-rw-r--r--packages/libpixman/libpixman_0.1.6.bb2
-rw-r--r--packages/libpixman/libpixman_cvs.bb2
-rw-r--r--packages/libsdl/libsdl-x11_1.2.7.bb2
-rw-r--r--packages/libtool/libtool-native_1.5.10.bb1
-rw-r--r--packages/libvncserver/x11vnc_0.7.1.bb2
-rw-r--r--packages/libxine/libxine-x11_1.0.bb2
-rw-r--r--packages/libxine/libxine_1.1.0.bb2
-rw-r--r--packages/libxsettings-client/libxsettings-client_0.12.bb2
-rw-r--r--packages/libxsettings-client/libxsettings-client_0.13.bb2
-rw-r--r--packages/libxsettings-client/libxsettings-client_0.14.bb2
-rw-r--r--packages/libxsettings-client/libxsettings-client_0.16.bb2
-rw-r--r--packages/libxsettings/libxsettings_0.11.bb2
-rw-r--r--packages/lineak/lineak_0.8.3.bb2
-rw-r--r--packages/links/links-x11_2.1pre20.bb2
-rw-r--r--packages/linux/LAB-kernel-2.6.13-hh2/.mtn2git_empty (renamed from packages/libxcursor/libxcursor-1.1.2/.mtn2git_empty)0
-rw-r--r--packages/linux/LAB-kernel-2.6.13-hh2/defconfig1092
-rw-r--r--packages/linux/LAB-kernel-2.6.13-hh2/labrun.patch (renamed from packages/linux/LAB-kernel/h2200/labrun.patch)0
-rw-r--r--packages/linux/LAB-kernel/h2200/defconfig135
-rw-r--r--packages/linux/LAB-kernel/initramfs_list32
-rw-r--r--packages/linux/LAB-kernel_2.6.13-hh2.bb4
-rw-r--r--packages/linux/LAB-kernel_cvs.bb25
-rw-r--r--packages/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--packages/linux/devkitidp-pxa255-kernel_2.6.11.bb4
-rw-r--r--packages/linux/ep93xx-kernel/derevo6.diff4434
-rw-r--r--packages/linux/ep93xx-kernel_2.6.15.bb8
-rw-r--r--packages/linux/handhelds-pxa-2.6/block-pio.patch146
-rw-r--r--packages/linux/handhelds-pxa-2.6/h2200/defconfig10
-rw-r--r--packages/linux/handhelds-pxa-2.6_2.6.15-hh0.bb5
-rw-r--r--packages/linux/handhelds-pxa-2.6_cvs.bb6
-rw-r--r--packages/linux/ixp4xx-kernel.inc20
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.15/defconfig2
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/06-remove-extraversion.patch2
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/10-nslu2-fix-flash.patch14
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/40-rtc-class.patch2076
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/50-hwmon-ad741x.patch378
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/50-i2c-bus-ixp4xx-hwmon.patch14
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/61-ixp4xx-beeper-irq.patch13
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/61-nslu2-beeper.patch30
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/70-artop-latency.patch27
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/75-dsmg600.patch353
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/80-nas100d-fix-i2c.patch16
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/81-nslu2-power.patch15
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/85-timer.patch24
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/91-maclist.patch404
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/92-nslu2-maclist.patch10
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/93-loft-maclist.patch96
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/94-loft-setup.patch81
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/94-nas100d-setup.patch2
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/94-nslu2-setup.patch6
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/950-leds-timer.patch151
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/951-ixp4xx-leds-cpu-activity.patch57
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/96-loft-leds.patch62
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/96-nas100d-leds.patch17
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/96-nslu2-leds.patch10
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/96-pata-ixp4xx.patch299
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-buttons.patch122
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-doc.patch43
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-includes.patch134
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-misc.patch27
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-pci.patch15
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-power.patch75
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/97-ds101-setup.patch394
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/defconfig42
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch1835
-rw-r--r--packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc4-ide2 (renamed from packages/linux/ixp4xx-kernel/2.6.16/05-patch-2.6.16-rc2-ide2)2831
-rw-r--r--packages/linux/ixp4xx-kernel_2.6.16-rc4-git9.bb (renamed from packages/linux/ixp4xx-kernel_2.6.16-rc2.bb)40
-rw-r--r--packages/linux/linux-jlime-sh3_2.6.11.bb2
-rw-r--r--packages/linux/linux-mtx-1_2.4.27.bb8
-rw-r--r--packages/linux/linux-omap-2.6_2.6.9-omap1.bb4
-rw-r--r--packages/linux/linux-omap1_2.6.12-rc2.bb4
-rw-r--r--packages/linux/linux-openzaurus-2.6.15/defconfig-qemuarm935
-rw-r--r--packages/linux/linux-openzaurus.inc4
-rw-r--r--packages/linux/linux-openzaurus_2.6.15.bb13
-rw-r--r--packages/linux/linux-sun4cdm_2.4.26.bb4
-rw-r--r--packages/linux/linux-wrt_2.4.20.bb4
-rw-r--r--packages/linux/linux-wrt_2.4.30.bb4
-rw-r--r--packages/linux/linux-xxs1500_2.4.21.bb4
-rw-r--r--packages/linux/mainstone-kernel_2.6.11.bb4
-rw-r--r--packages/linux/nslu2-kernel.inc4
-rw-r--r--packages/linux/nslu2-linksys-kernel_2.4.22.bb4
-rw-r--r--packages/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb4
-rw-r--r--packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc4
-rw-r--r--packages/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb4
-rw-r--r--packages/linux/triton-kernel_2.6.11.bb4
-rw-r--r--packages/linux/unslung-kernel/defconfig13
-rw-r--r--packages/linux/unslung-kernel/netconsole.patch383
-rw-r--r--packages/linux/unslung-kernel_2.4.22.l2.3r63.bb3
-rw-r--r--packages/lirc/lirc_0.7.1.bb2
-rw-r--r--packages/lirc/lirc_0.8.0.bb2
-rw-r--r--packages/maemo/hildon-fm_0.9.1-2.bb2
-rw-r--r--packages/maemo/hildon-lgpl_0.9.14-2.bb2
-rw-r--r--packages/maemo/osso-af-utils_0.4.bb2
-rw-r--r--packages/maemo/xpext_1.0-5.bb2
-rw-r--r--packages/maemo/xsp_1.0.0-8.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel.inc3
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.8.1.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.8.3.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.8.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.9.1.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.9.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.8.3.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.8.4.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.2.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.3.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.4.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.5.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_0.9.bb2
-rw-r--r--packages/matchbox-wm/matchbox-wm_svn.bb2
-rw-r--r--packages/meta/meta-sdk.bb5
-rw-r--r--packages/meta/task-sdk.bb8
-rw-r--r--packages/meta/unslung-image.bb20
-rw-r--r--packages/miniclipboard/miniclipboard_0.3.bb2
-rw-r--r--packages/minipredict/minipredict.bb2
-rw-r--r--packages/mrxvt/mrxvt_0.4.1.bb2
-rw-r--r--packages/mtd/mtd-utils-native_20060223.bb12
-rw-r--r--packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-20060131.patch100
-rw-r--r--packages/mtd/mtd-utils/fix-ignoreerrors-20060131.patch20
-rw-r--r--packages/mtd/mtd-utils_20060223.bb36
-rw-r--r--packages/mythtv/mythtv_0.18.1.bb2
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs-2.3r63/NOTES40
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs-2.3r63/README142
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs-2.3r63/ipkg-fl2
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs-2.3r63/rc.sysinit-clean_var.patch22
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs-2.3r63/remount-noatime.patch51
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs-2.3r63/telnet.htm32
-rwxr-xr-xpackages/nslu2-binary-only/unslung-rootfs-2.3r63/unsling41
-rw-r--r--packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb9
-rw-r--r--packages/pango/pango_1.10.0.bb2
-rw-r--r--packages/pango/pango_1.10.2.bb2
-rw-r--r--packages/pango/pango_1.2.5.bb2
-rw-r--r--packages/pango/pango_1.4.0.bb2
-rw-r--r--packages/pango/pango_1.4.1.bb2
-rw-r--r--packages/pango/pango_1.8.0.bb2
-rw-r--r--packages/pango/pango_1.8.1.bb2
-rw-r--r--packages/pango/pango_1.8.2.bb2
-rw-r--r--packages/pango/pango_1.9.1.bb2
-rw-r--r--packages/panoramixext/panoramixext_cvs.bb2
-rw-r--r--packages/python/python-2.4.2-manifest.inc13
-rw-r--r--packages/python/python-imdbpy_2.4.bb (renamed from packages/python/python-imdbpy_2.0.bb)2
-rw-r--r--packages/python/python_2.4.2.bb2
-rw-r--r--packages/qemu/files/.mtn2git_empty (renamed from packages/libxfixes/.mtn2git_empty)0
-rw-r--r--packages/qemu/files/configure.patch13
-rw-r--r--packages/qemu/qemu-native_cvs.bb4
-rw-r--r--packages/qemu/qemu_cvs.bb10
-rw-r--r--packages/qpf-fonts/qpf-dejavu.inc2
-rw-r--r--packages/qpf-fonts/qpf-freemono_1.0.bb2
-rw-r--r--packages/qpf-fonts/qpf-freeserif_1.0.bb2
-rw-r--r--packages/qpf-fonts/qpf-helvetica_1.0.bb2
-rw-r--r--packages/qpf-fonts/qpf-hunkysans_0.3.0.bb2
-rw-r--r--packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb2
-rw-r--r--packages/qpf-fonts/qpf-utopia_1.0.bb2
-rw-r--r--packages/qt/qt-x11-free_3.3.5.bb2
-rw-r--r--packages/qt/qt-x11-free_4.0.1.bb2
-rw-r--r--packages/quilt/quilt-native_0.39.bb2
-rw-r--r--packages/quilt/quilt-native_0.42.bb2
-rw-r--r--packages/randrext/randrext_cvs.bb2
-rw-r--r--packages/rdesktop/rdesktop_1.3.1.bb2
-rw-r--r--packages/rdesktop/rdesktop_1.4.1.bb2
-rw-r--r--packages/rdesktop/rdesktop_cvs.bb2
-rw-r--r--packages/recordext/recordext_cvs.bb2
-rw-r--r--packages/renderext/renderext_cvs.bb2
-rw-r--r--packages/resourceext/resourceext_cvs.bb2
-rw-r--r--packages/rosetta/rosetta_cvs.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_4.8.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_4.9.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_5.2.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_5.3.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_5.4.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_5.6.bb2
-rw-r--r--packages/rxvt-unicode/rxvt-unicode_cvs.bb2
-rw-r--r--packages/rxvt/rxvt_2.7.9.bb2
-rw-r--r--packages/sablevm/sablevm-classpath_1.1.9.bb2
-rw-r--r--packages/sablevm/sablevm-classpath_1.11.3.bb2
-rw-r--r--packages/sablevm/sablevm-classpath_1.12.bb2
-rw-r--r--packages/skippy/skippy-xd_0.5.0.bb2
-rw-r--r--packages/spca5xx/spca5xx-20060202/.mtn2git_empty (renamed from packages/libxfixes/files/.mtn2git_empty)0
-rw-r--r--packages/spca5xx/spca5xx-20060202/Makefile.patch19
-rw-r--r--packages/spca5xx/spca5xx_20060202.bb27
-rw-r--r--packages/startup-monitor/startup-monitor_0.18-2.bb2
-rw-r--r--packages/startup-notification/startup-notification_0.5.bb2
-rw-r--r--packages/startup-notification/startup-notification_0.8.bb2
-rw-r--r--packages/synergy/synergy_1.2.7.bb2
-rw-r--r--packages/tcltk/tk_8.4.11.bb2
-rw-r--r--packages/tetex/tetex_3.0.bb2
-rw-r--r--packages/tickypip/tickypip-levels_1.1.bb2
-rw-r--r--packages/tinymail/.mtn2git_empty (renamed from packages/libxft/.mtn2git_empty)0
-rw-r--r--packages/tinymail/files/.mtn2git_empty (renamed from packages/libxft/files/.mtn2git_empty)0
-rw-r--r--packages/tinymail/files/gtk-doc.m453
-rw-r--r--packages/tinymail/files/gtk-doc.make148
-rw-r--r--packages/tinymail/tinymail_svn.bb22
-rw-r--r--packages/tslib/tslib_cvs.bb2
-rw-r--r--packages/v4l2apps/v4l2apps_20020317.bb2
-rw-r--r--packages/vnc/.mtn2git_empty (renamed from packages/libxi/.mtn2git_empty)0
-rw-r--r--packages/vnc/tightvnc/.mtn2git_empty (renamed from packages/libxi/files/.mtn2git_empty)0
-rw-r--r--packages/vnc/tightvnc/Makefile23
-rw-r--r--packages/vnc/tightvnc_1.3dev7.bb24
-rw-r--r--packages/vnc/vnc_3.3.7.bb21
-rw-r--r--packages/waimea/waimea_cvs.bb2
-rw-r--r--packages/wpa-supplicant/files/defconfig-gnutls176
-rw-r--r--packages/wpa-supplicant/files/wpa_supplicant.conf-gnutls502
-rw-r--r--packages/wpa-supplicant/wpa-supplicant_0.5.1.bb33
-rw-r--r--packages/xauth/xauth_cvs.bb4
-rw-r--r--packages/xawtv/xawtv_3.93.bb2
-rw-r--r--packages/xcalibrate/xcalibrate_cvs.bb4
-rw-r--r--packages/xcalibrateext/xcalibrateext_cvs.bb2
-rw-r--r--packages/xchat/xchat_2.6.1.bb9
-rw-r--r--packages/xcompmgr/xcompmgr_cvs.bb4
-rw-r--r--packages/xdemineur/xdemineur_2.1.1.bb2
-rw-r--r--packages/xdmcp/files/.mtn2git_empty0
-rw-r--r--packages/xdpyinfo/xdpyinfo_cvs.bb4
-rw-r--r--packages/xev/xev_cvs.bb4
-rw-r--r--packages/xext/.mtn2git_empty0
-rw-r--r--packages/xext/files/.mtn2git_empty0
-rw-r--r--packages/xextensions/xextensions_20050610.bb2
-rw-r--r--packages/xextensions/xextensions_cvs.bb2
-rw-r--r--packages/xfcalendar/xfcalendar_4.2.0.bb2
-rw-r--r--packages/xfdesktop/xfdesktop_4.2.0.bb2
-rw-r--r--packages/xfont/.mtn2git_empty0
-rw-r--r--packages/xfont/files/.mtn2git_empty0
-rw-r--r--packages/xfonts/xfonts-xorg_6.8.bb2
-rw-r--r--packages/xfwm4/xfwm4_4.2.0.bb2
-rw-r--r--packages/xhost/xhost_20040413.bb4
-rw-r--r--packages/xinerama/.mtn2git_empty0
-rw-r--r--packages/xkbd/xkbd_0.8.15.bb2
-rw-r--r--packages/xlibs/.mtn2git_empty (renamed from packages/libxkbfile/.mtn2git_empty)0
-rw-r--r--packages/xlibs/diet-x11_20050226.bb (renamed from packages/x11/diet-x11_20050226.bb)2
-rw-r--r--packages/xlibs/diet-x11_6.2.1.bb (renamed from packages/x11/diet-x11_6.2.1.bb)2
-rw-r--r--packages/xlibs/diet-x11_cvs.bb (renamed from packages/x11/diet-x11_cvs.bb)2
-rw-r--r--packages/xlibs/libice/.mtn2git_empty (renamed from packages/libxp/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libice/autofoo.patch (renamed from packages/ice/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libice_6.3.3.bb (renamed from packages/ice/ice_6.3.3.bb)3
-rw-r--r--packages/xlibs/libice_cvs.bb (renamed from packages/ice/ice_cvs.bb)6
-rw-r--r--packages/xlibs/libsm/.mtn2git_empty (renamed from packages/libxrandr/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libsm/autofoo.patch (renamed from packages/libsm/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libsm_6.0.3.bb (renamed from packages/libsm/libsm_6.0.3.bb)2
-rw-r--r--packages/xlibs/libsm_cvs.bb (renamed from packages/libsm/libsm_cvs.bb)4
-rw-r--r--packages/xlibs/libx11-native_6.2.1.bb (renamed from packages/x11/x11-native_6.2.1.bb)2
-rw-r--r--packages/xlibs/libx11-native_cvs.bb (renamed from packages/x11/x11-native_cvs.bb)2
-rw-r--r--packages/xlibs/libx11/.mtn2git_empty (renamed from packages/libxrandr/files/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libx11/autofoo.patch (renamed from packages/x11/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libx11/errordb-keysymdb-path-fix.patch (renamed from packages/x11/files/errordb-keysymdb-path-fix.patch)0
-rw-r--r--packages/xlibs/libx11/fix-utf8-wrong-define.patch (renamed from packages/x11/files/fix-utf8-wrong-define.patch)0
-rw-r--r--packages/xlibs/libx11/xim.patch (renamed from packages/x11/files/xim.patch)0
-rw-r--r--packages/xlibs/libx11_20050226.bb (renamed from packages/x11/x11_20050226.bb)2
-rw-r--r--packages/xlibs/libx11_6.2.1.bb (renamed from packages/x11/x11_6.2.1.bb)5
-rw-r--r--packages/xlibs/libx11_cvs.bb (renamed from packages/x11/x11_cvs.bb)7
-rw-r--r--packages/xlibs/libxau-native_0.1.1.bb (renamed from packages/xau/xau-native_0.1.1.bb)2
-rw-r--r--packages/xlibs/libxau-native_cvs.bb (renamed from packages/xau/xau-native_cvs.bb)2
-rw-r--r--packages/xlibs/libxau/.mtn2git_empty (renamed from packages/libxrandr/libxrandr-1.0.2/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxau/autofoo.patch (renamed from packages/xau/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxau_0.1.1.bb (renamed from packages/xau/xau_0.1.1.bb)1
-rw-r--r--packages/xlibs/libxau_cvs.bb (renamed from packages/xau/xau_cvs.bb)3
-rw-r--r--packages/xlibs/libxaw/.mtn2git_empty (renamed from packages/libxrender/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxaw/auxdir.patch (renamed from packages/xaw/files/auxdir.patch)0
-rw-r--r--packages/xlibs/libxaw_7.0.2.bb (renamed from packages/xaw/xaw_7.0.2.bb)3
-rw-r--r--packages/xlibs/libxaw_cvs.bb (renamed from packages/xaw/xaw_cvs.bb)6
-rw-r--r--packages/xlibs/libxcomposite-1.0.1/.mtn2git_empty (renamed from packages/libxrender/files/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxcomposite-1.0.1/autofoo.patch (renamed from packages/xcomposite/xcomposite-1.0.1/autofoo.patch)0
-rw-r--r--packages/xlibs/libxcomposite_1.0.1.bb (renamed from packages/xcomposite/xcomposite_1.0.1.bb)3
-rw-r--r--packages/xlibs/libxcomposite_cvs.bb (renamed from packages/xcomposite/xcomposite_cvs.bb)5
-rw-r--r--packages/xlibs/libxcursor-1.1.2/.mtn2git_empty (renamed from packages/libxss/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxcursor-1.1.2/autofoo.patch (renamed from packages/libxcursor/libxcursor-1.1.2/autofoo.patch)0
-rw-r--r--packages/xlibs/libxcursor/.mtn2git_empty (renamed from packages/libxv/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxcursor/autofoo.patch (renamed from packages/libxcursor/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxcursor_1.1.2.bb (renamed from packages/libxcursor/libxcursor_1.1.2.bb)0
-rw-r--r--packages/xlibs/libxcursor_cvs.bb (renamed from packages/libxcursor/libxcursor_cvs.bb)2
-rw-r--r--packages/xlibs/libxdamage-1.0.1/.mtn2git_empty (renamed from packages/libxvmc/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxdamage-1.0.1/autofoo.patch (renamed from packages/xdamage/xdamage-1.0.1/autofoo.patch)0
-rw-r--r--packages/xlibs/libxdamage/.mtn2git_empty (renamed from packages/libxvmc/files/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxdamage/m4.patch (renamed from packages/xdamage/xdamage/m4.patch)0
-rw-r--r--packages/xlibs/libxdamage_1.0.1.bb (renamed from packages/xdamage/xdamage_1.0.1.bb)3
-rw-r--r--packages/xlibs/libxdamage_cvs.bb (renamed from packages/xdamage/xdamage_cvs.bb)5
-rw-r--r--packages/xlibs/libxdmcp-native_0.1.1.bb (renamed from packages/xdmcp/libxdmcp-native_0.1.1.bb)0
-rw-r--r--packages/xlibs/libxdmcp-native_0.1.3.bb (renamed from packages/xdmcp/libxdmcp-native_0.1.3.bb)0
-rw-r--r--packages/xlibs/libxdmcp/.mtn2git_empty (renamed from packages/libxxf86dga/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxdmcp/autofoo.patch (renamed from packages/xdmcp/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxdmcp_0.1.1.bb (renamed from packages/xdmcp/libxdmcp_0.1.1.bb)0
-rw-r--r--packages/xlibs/libxdmcp_0.1.3.bb (renamed from packages/xdmcp/libxdmcp_0.1.3.bb)0
-rw-r--r--packages/xlibs/libxdmcp_cvs.bb (renamed from packages/xdmcp/libxdmcp_cvs.bb)2
-rw-r--r--packages/xlibs/libxext-native_cvs.bb (renamed from packages/xext/xext-native_cvs.bb)2
-rw-r--r--packages/xlibs/libxext/.mtn2git_empty (renamed from packages/libxxf86vm/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxext/autofoo.patch (renamed from packages/xext/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxext_cvs.bb (renamed from packages/xext/xext_cvs.bb)5
-rw-r--r--packages/xlibs/libxfixes/.mtn2git_empty (renamed from packages/x11/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxfixes/autofoo.patch (renamed from packages/libxfixes/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxfixes_2.0.1.bb (renamed from packages/libxfixes/libxfixes_2.0.1.bb)2
-rw-r--r--packages/xlibs/libxfixes_cvs.bb (renamed from packages/libxfixes/libxfixes_cvs.bb)4
-rw-r--r--packages/xlibs/libxfont/.mtn2git_empty (renamed from packages/x11/files/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxfont/autofoo.patch (renamed from packages/xfont/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxfont/scalable.patch (renamed from packages/xfont/files/scalable.patch)0
-rw-r--r--packages/xlibs/libxfont_1.4.2.bb (renamed from packages/xfont/xfont_1.4.2.bb)1
-rw-r--r--packages/xlibs/libxfont_cvs.bb (renamed from packages/xfont/xfont_cvs.bb)3
-rw-r--r--packages/xlibs/libxft/.mtn2git_empty (renamed from packages/xau/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxft/autofoo.patch (renamed from packages/libxft/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxft_2.1.6.bb (renamed from packages/libxft/libxft_2.1.6.bb)2
-rw-r--r--packages/xlibs/libxft_cvs.bb (renamed from packages/libxft/libxft_cvs.bb)4
-rw-r--r--packages/xlibs/libxi/.mtn2git_empty (renamed from packages/xau/files/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxi/autofoo.patch (renamed from packages/libxi/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxi_6.0.1.bb (renamed from packages/libxi/libxi_6.0.1.bb)2
-rw-r--r--packages/xlibs/libxi_cvs.bb (renamed from packages/libxi/libxi_cvs.bb)4
-rw-r--r--packages/xlibs/libxinerama_1.0.2+cvs20050505.bb (renamed from packages/xinerama/xinerama_1.0.2+cvs20050505.bb)5
-rw-r--r--packages/xlibs/libxinerama_1.0.2.bb (renamed from packages/xinerama/xinerama_1.0.2.bb)3
-rw-r--r--packages/xlibs/libxinerama_cvs.bb (renamed from packages/xinerama/xinerama_cvs.bb)5
-rw-r--r--packages/xlibs/libxkbfile_cvs.bb (renamed from packages/libxkbfile/libxkbfile_cvs.bb)4
-rw-r--r--packages/xlibs/libxmu_cvs.bb (renamed from packages/xmu/xmu_cvs.bb)5
-rw-r--r--packages/xlibs/libxp_cvs.bb (renamed from packages/libxp/libxp_cvs.bb)4
-rw-r--r--packages/xlibs/libxpm/.mtn2git_empty (renamed from packages/xaw/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxpm/autofoo.patch (renamed from packages/xpm/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxpm_3.5.1.bb (renamed from packages/xpm/xpm_3.5.1.bb)3
-rw-r--r--packages/xlibs/libxpm_cvs.bb (renamed from packages/xpm/xpm_cvs.bb)5
-rw-r--r--packages/xlibs/libxrandr-1.0.2/.mtn2git_empty (renamed from packages/xaw/files/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxrandr-1.0.2/autofoo.patch (renamed from packages/libxrandr/libxrandr-1.0.2/autofoo.patch)0
-rw-r--r--packages/xlibs/libxrandr/.mtn2git_empty (renamed from packages/xcomposite/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxrandr/autofoo.patch (renamed from packages/libxrandr/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxrandr_1.0.2.bb (renamed from packages/libxrandr/libxrandr_1.0.2.bb)2
-rw-r--r--packages/xlibs/libxrandr_cvs.bb (renamed from packages/libxrandr/libxrandr_cvs.bb)4
-rw-r--r--packages/xlibs/libxrender/.mtn2git_empty (renamed from packages/xcomposite/xcomposite-1.0.1/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxrender/autofoo.patch (renamed from packages/libxrender/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxrender_0.8.4.bb (renamed from packages/libxrender/libxrender_0.8.4.bb)2
-rw-r--r--packages/xlibs/libxrender_cvs.bb (renamed from packages/libxrender/libxrender_cvs.bb)4
-rw-r--r--packages/xlibs/libxres_1.0.1.bb (renamed from packages/xres/xres_1.0.1.bb)3
-rw-r--r--packages/xlibs/libxres_cvs.bb (renamed from packages/xres/xres_cvs.bb)5
-rw-r--r--packages/xlibs/libxss_cvs.bb (renamed from packages/libxss/libxss_cvs.bb)4
-rw-r--r--packages/xlibs/libxt/.mtn2git_empty (renamed from packages/xdamage/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxt/autofoo.patch (renamed from packages/xt/files/autofoo.patch)0
-rw-r--r--packages/xlibs/libxt_0.1.5.bb (renamed from packages/xt/xt_0.1.5.bb)3
-rw-r--r--packages/xlibs/libxt_cvs.bb (renamed from packages/xt/xt_cvs.bb)6
-rw-r--r--packages/xlibs/libxtst_cvs.bb (renamed from packages/xtst/xtst_cvs.bb)5
-rw-r--r--packages/xlibs/libxv_2.2.2+cvs20040918.bb (renamed from packages/libxv/libxv_2.2.2+cvs20040918.bb)4
-rw-r--r--packages/xlibs/libxv_2.2.2.bb (renamed from packages/libxv/libxv_2.2.2.bb)2
-rw-r--r--packages/xlibs/libxvmc/.mtn2git_empty (renamed from packages/xdamage/xdamage-1.0.1/.mtn2git_empty)0
-rw-r--r--packages/xlibs/libxvmc/drm.patch (renamed from packages/libxvmc/files/drm.patch)0
-rw-r--r--packages/xlibs/libxvmc/true.patch (renamed from packages/libxvmc/files/true.patch)0
-rw-r--r--packages/xlibs/libxvmc/via.patch (renamed from packages/libxvmc/files/via.patch)0
-rw-r--r--packages/xlibs/libxvmc_20040919.bb (renamed from packages/libxvmc/libxvmc_20040919.bb)4
-rw-r--r--packages/xlibs/libxvmc_20041025.bb (renamed from packages/libxvmc/libxvmc_20041025.bb)4
-rw-r--r--packages/xlibs/libxvmc_20050612.bb (renamed from packages/libxvmc/libxvmc_20050612.bb)6
-rw-r--r--packages/xlibs/libxxf86dga_cvs.bb (renamed from packages/libxxf86dga/libxxf86dga_cvs.bb)4
-rw-r--r--packages/xlibs/libxxf86vm_cvs.bb (renamed from packages/libxxf86vm/libxxf86vm_cvs.bb)4
-rw-r--r--packages/xlibs/xtrans-native_0.1.bb (renamed from packages/xtrans/xtrans-native_0.1.bb)0
-rw-r--r--packages/xlibs/xtrans_0.1.bb (renamed from packages/xtrans/xtrans_0.1.bb)0
-rw-r--r--packages/xlibs/xtrans_cvs.bb (renamed from packages/xtrans/xtrans_cvs.bb)2
-rw-r--r--packages/xmodmap/xmodmap_cvs.bb4
-rw-r--r--packages/xmonobut/xmonobut_0.4.1.bb2
-rw-r--r--packages/xmonobut/xmonobut_0.4.bb2
-rw-r--r--packages/xmu/.mtn2git_empty0
-rw-r--r--packages/xpm/.mtn2git_empty0
-rw-r--r--packages/xpm/files/.mtn2git_empty0
-rw-r--r--packages/xprop/xprop_cvs.bb4
-rw-r--r--packages/xproto/xproto_6.6.2+cvs20050226.bb2
-rw-r--r--packages/xproto/xproto_cvs.bb2
-rw-r--r--packages/xqt/xqt_0.0.9.bb2
-rw-r--r--packages/xrandr/xrandr_cvs.bb4
-rw-r--r--packages/xrdb/xrdb_cvs.bb4
-rw-r--r--packages/xres/.mtn2git_empty0
-rw-r--r--packages/xscreensaver/xscreensaver_4.16.bb2
-rw-r--r--packages/xscreensaver/xscreensaver_4.22.bb2
-rw-r--r--packages/xserver/xserver-kdrive-omap_6.6.3.bb2
-rw-r--r--packages/xserver/xserver-kdrive_20050207.bb6
-rw-r--r--packages/xserver/xserver-kdrive_20050624.bb4
-rw-r--r--packages/xserver/xserver-kdrive_cvs.bb4
-rw-r--r--packages/xserver/xserver-xorg_6.8.99.10.bb4
-rw-r--r--packages/xserver/xserver-xorg_6.8.99.11.bb4
-rw-r--r--packages/xserver/xserver-xorg_cvs.bb4
-rw-r--r--packages/xset/xset_20040817.bb4
-rw-r--r--packages/xstroke/xstroke_0.6.bb2
-rw-r--r--packages/xstroke/xstroke_cvs.bb2
-rw-r--r--packages/xt/.mtn2git_empty0
-rw-r--r--packages/xt/files/.mtn2git_empty0
-rw-r--r--packages/xtrans/.mtn2git_empty0
-rw-r--r--packages/xtscal/xtscal_0.4.bb2
-rw-r--r--packages/xtscal/xtscal_0.5.1.bb2
-rw-r--r--packages/xtscal/xtscal_0.5.bb2
-rw-r--r--packages/xtscal/xtscal_0.6.3.bb2
-rw-r--r--packages/xtst/.mtn2git_empty0
-rw-r--r--packages/xxf86dgaext/xxf86dgaext_cvs.bb2
-rw-r--r--packages/xxf86vmext/xxf86vmext_cvs.bb2
-rw-r--r--packages/zaurusd/.mtn2git_empty (renamed from packages/xdamage/xdamage/.mtn2git_empty)0
-rw-r--r--packages/zaurusd/zaurusd_svn.bb18
-rw-r--r--packages/zd1211/zd1211-r59/.mtn2git_empty (renamed from packages/xdmcp/.mtn2git_empty)0
-rw-r--r--packages/zd1211/zd1211-r59/makefile.patch47
-rw-r--r--packages/zd1211/zd1211_r59.bb31
-rw-r--r--site/mipsel-linux12
536 files changed, 19059 insertions, 2589 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 9b87828594..21feaab6e6 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -371,7 +371,11 @@ def oe_unpack_file(file, data, url = None):
elif file.endswith('.bz2'):
cmd = 'bzip2 -dc %s > %s' % (file, efile)
elif file.endswith('.zip'):
- cmd = 'unzip -q %s' % file
+ cmd = 'unzip -q'
+ (type, host, path, user, pswd, parm) = bb.decodeurl(url)
+ if 'dos' in parm:
+ cmd = '%s -a' % cmd
+ cmd = '%s %s' % (cmd, file)
elif os.path.isdir(file):
filesdir = os.path.realpath(bb.data.getVar("FILESDIR", data, 1))
destdir = "."
@@ -449,7 +453,7 @@ python base_do_patch() {
if not "patch" in parm:
continue
- bb.fetch.init([url], d)
+ bb.fetch.init([url],d)
url = bb.encodeurl((type, host, path, user, pswd, []))
local = os.path.join('/', bb.fetch.localpath(url, d))
diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass
index c913a5c38d..471acd4a61 100644
--- a/classes/kernel.bbclass
+++ b/classes/kernel.bbclass
@@ -391,9 +391,16 @@ python populate_packages_prepend () {
v = bb.data.getVar("PARALLEL_INSTALL_MODULES", d, 1) or "0"
if v == "1":
kv = bb.data.getVar("KERNEL_MAJOR_VERSION", d, 1)
- packages = bb.data.getVar("PACKAGES", d, 1)
+ packages = bb.data.getVar("PACKAGES", d, 1).split()
module_re = re.compile("^kernel-module-")
- for p in packages.split():
+
+ newmetapkg = "kernel-modules-%s" % kv
+ bb.data.setVar('ALLOW_EMPTY_' + newmetapkg, "1", d)
+ bb.data.setVar('FILES_' + newmetapkg, "", d)
+
+ newmetapkg_rdepends = []
+
+ for p in packages:
if not module_re.match(p):
continue
pkg = bb.data.getVar("PKG_%s" % p, d, 1) or p
@@ -405,4 +412,11 @@ python populate_packages_prepend () {
else:
rprovides = pkg
bb.data.setVar("RPROVIDES_%s" % p, rprovides, d)
+ newmetapkg_rdepends.append(newpkg)
+
+ bb.data.setVar('RDEPENDS_' + newmetapkg, ' '.join(newmetapkg_rdepends), d)
+ bb.data.setVar('DESCRIPTION_' + newmetapkg, 'Kernel modules meta package', d)
+ packages.append(newmetapkg)
+ bb.data.setVar('PACKAGES', ' '.join(packages), d)
+
}
diff --git a/classes/tinderclient.bbclass b/classes/tinderclient.bbclass
index d01bce1fcf..1c6a6c497f 100644
--- a/classes/tinderclient.bbclass
+++ b/classes/tinderclient.bbclass
@@ -84,7 +84,7 @@ def tinder_build_start(d):
selector = url + "/xml/build_start.pl"
- print "selector %s and url %s" % (selector, url)
+ #print "selector %s and url %s" % (selector, url)
# now post it
h = httplib.HTTP(server)
@@ -94,7 +94,7 @@ def tinder_build_start(d):
h.endheaders()
h.send(body)
errcode, errmsg, headers = h.getreply()
- print errcode, errmsg, headers
+ #print errcode, errmsg, headers
report = h.file.read()
# now let us find the machine id that was assigned to us
@@ -134,8 +134,8 @@ def tinder_send_http(d, status, log):
h.endheaders()
h.send(body)
errcode, errmsg, headers = h.getreply()
- print errcode, errmsg, headers
- print h.file.read()
+ #print errcode, errmsg, headers
+ #print h.file.read()
def tinder_print_info(d):
@@ -161,6 +161,7 @@ def tinder_print_info(d):
bbfiles = data.getVar( 'BBFILES', d, True )
tarch = data.getVar( 'TARGET_ARCH', d, True )
fpu = data.getVar( 'TARGET_FPU', d, True )
+ oerev = data.getVar( 'OE_REVISION', d, True ) or "unknown"
# there is a bug with tipple quoted strings
# i will work around but will fix the original
@@ -184,6 +185,7 @@ def tinder_print_info(d):
output.append("MACHINE = '%(machine)s'" )
output.append("DISTRO = '%(distro)s'" )
output.append("BBFILES = '%(bbfiles)s'" )
+ output.append("OEREV = '%(oerev)s'" )
output.append("== End Tinderbox Client Info" )
# now create the real output
@@ -219,14 +221,15 @@ def tinder_tinder_start(d):
time_start = tinder_time_string()
config = tinder_print_info(d)
- env = tinder_print_env()
+ #env = tinder_print_env()
time_end = tinder_time_string()
output = []
output.append( "---> TINDERBOX PRINTING CONFIGURATION %(time_start)s" )
output.append( config )
- output.append( env )
+ #output.append( env )
output.append( "<--- TINDERBOX FINISHED PRINTING CONFIGURATION %(time_end)s" )
+ output.append( "" )
return "\n".join(output) % vars()
def tinder_do_tinder_report(event):
@@ -270,23 +273,24 @@ def tinder_do_tinder_report(event):
if len(log_file) != 0:
to_file = data.getVar('TINDER_LOG', event.data, True)
- log = open(log_file[0], 'r').readlines()
+ log += "".join(open(log_file[0], 'r').readlines())
# set the right 'HEADER'/Summary for the TinderBox
if name == "TaskStarted":
- log += "--> TINDERBOX Task %s started" % event.task
+ log += "---> TINDERBOX Task %s started\n" % event.task
elif name == "TaskSucceeded":
- log += "<-- TINDERBOX Task %s done (SUCCESS)" % event.task
+ log += "<--- TINDERBOX Task %s done (SUCCESS)\n" % event.task
elif name == "TaskFailed":
- log += "<-- TINDERBOX Task %s failed (FAILURE)" % event.task
+ log += "<--- TINDERBOX Task %s failed (FAILURE)\n" % event.task
elif name == "PkgStarted":
- log += "--> TINDERBOX Package %s started" % data.getVar('P', event.data, True)
+ log += "---> TINDERBOX Package %s started\n" % data.getVar('P', event.data, True)
elif name == "PkgSucceeded":
- log += "<-- TINDERBOX Package %s done (SUCCESS)" % data.getVar('P', event.data, True)
+ log += "<--- TINDERBOX Package %s done (SUCCESS)\n" % data.getVar('P', event.data, True)
elif name == "PkgFailed":
- log += "<-- TINDERBOX Package %s failed (FAILURE)" % data.getVar('P', event.data, True)
+ log += "<--- TINDERBOX Package %s failed (FAILURE)\n" % data.getVar('P', event.data, True)
status = 200
elif name == "BuildCompleted":
+ log += "Build Completed\n"
status = 100
# now post the log
diff --git a/classes/xlibs.bbclass b/classes/xlibs.bbclass
index f9a1195663..e797748770 100644
--- a/classes/xlibs.bbclass
+++ b/classes/xlibs.bbclass
@@ -1,7 +1,7 @@
LICENSE= "BSD-X"
SECTION = "x11/libs"
-XLIBS_CVS = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs"
+XLIBS_CVS = "${FREEDESKTOP_CVS}/xlibs"
inherit autotools pkgconfig
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index c28e3a7e22..71dc101f0f 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -72,7 +72,7 @@ DATETIME = "${DATE}${TIME}"
# python-native should be here but python relies on building
# its own in staging
-ASSUME_PROVIDED = "cvs-native svn-native"
+ASSUME_PROVIDED = "cvs-native svn-native bzip2-native diffstat-native patch-native python-native-runtime perl-native-runtime"
##################################################################
# Package default variables.
@@ -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"
+FREEDESKTOP_CVS = "cvs://anoncvs:anoncvs@anoncvs.freedesktop.org/cvs"
GENTOO_MIRROR = "http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles"
# You can use the mirror of your country to get faster downloads by putting
diff --git a/conf/distro/angstrom-2006.9.conf b/conf/distro/angstrom-2006.9.conf
index cb4ba04876..4bb27afa51 100644
--- a/conf/distro/angstrom-2006.9.conf
+++ b/conf/distro/angstrom-2006.9.conf
@@ -10,12 +10,31 @@ DISTRO_TYPE = "debug"
FEED_URIS += " \
- base##http:///${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/base \
- ${MACHINE}##http://${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/${MACHINE} \
- updates##http://${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/updates"
+ base##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/base \
+ ${MACHINE}##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/${MACHINE} \
+ updates##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/updates"
#CVSDATE = 20050331
+
+# Opie
+include conf/distro/preferred-opie-versions.inc
+
+# GPE
+include conf/distro/preferred-gpe-versions-2.8.inc
+
+# E
+include conf/distro/preferred-e-versions.inc
+
+PREFERRED_PROVIDERS += " virtual/libqpe:libqpe-opie"
+PREFERRED_VERSION_qte = "2.3.10"
+
+
+PREFERRED_PROVIDERS += "virtual/xserver:xserver-kdrive"
+PREFERRED_PROVIDERS += "virtual/gconf:gconf-dbus"
+#PREFERRED_PROVIDER_libx11 = "diet-x11"
+
+
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc:gcc-cross"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross"
@@ -25,8 +44,11 @@ PREFERRED_PROVIDER_virtual/libintl = "glibc"
#EABI stuff
#PREFERRED_PROVIDER_virtual/arm-none-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
+PREFERRED_VERSION_gcc ?= "4.0.2"
+PREFERRED_VERSION_gcc-cross ?= "4.0.2"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.0.2"
+
-PREFERRED_PROVIDER_x11=diet-x11
#use EABI toolchain
#PREFERRED_VERSION_gcc ?= "3.4.4+csl-arm-20051214"
@@ -37,29 +59,8 @@ PREFERRED_PROVIDER_x11=diet-x11
#PREFERRED_VERSION_glibc ?= "2.3.5+cvs20051214"
#PREFERRED_VERSION_glibc-intermediate ?= "2.3.5+cvs20051214"
-#
-# Opie
-#
-PREFERRED_PROVIDERS += " virtual/libqpe:libqpe-opie"
-PREFERRED_VERSION_qte = "2.3.10"
-
-OPIE_VERSION = "1.2.1"
-include conf/distro/preferred-opie-versions.inc
-
-#
-# GPE
-#
+PREFERRED_VERSION_orinoco-modules_h3600 = "0.13e"
+PREFERRED_VERSION_orinoco-modules_h3900 = "0.13e"
-PREFERRED_PROVIDERS += "virtual/xserver:xserver-kdrive"
-PREFERRED_PROVIDERS += "virtual/gconf:gconf-dbus"
-PREFERRED_PROVIDER_x11 = "diet-x11"
-
-include conf/distro/preferred-gpe-versions-2.8.inc
-
-#
-# E
-#
-
-include conf/distro/preferred-e-versions.inc
diff --git a/conf/distro/angstrom.conf b/conf/distro/angstrom.conf
index eaf3fb61e7..a68adaae42 100644
--- a/conf/distro/angstrom.conf
+++ b/conf/distro/angstrom.conf
@@ -14,10 +14,21 @@ MAINTAINER ?= "Angstrom Developers <angstrom-dev@handhelds.org>"
#use ipkg package format with debian style naming
INHERIT += "package_ipk debian"
+#use multimachine buildrules
+include conf/distro/include/multimachine.conf
+
#EABI isn't working yet, so we'll use TARGET_OS = linux in the meantime
#TARGET_OS = "none-linux-gnueabi"
TARGET_OS = "linux"
+#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
+FULL_OPTIMIZATION = "-fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os"
+BUILD_OPTIMIZATION = "-Os"
+
+#eabi is softfloat by default, but let's make sure :)
+TARGET_FPU = "soft"
+
PARALLEL_INSTALL_MODULES = "1"
BOOTSTRAP_EXTRA_DEPENDS += "angstrom-version"
@@ -25,6 +36,6 @@ BOOTSTRAP_EXTRA_RDEPENDS += "angstrom-version"
#Name the generated images in a sane way
IMAGE_NAME = "${DISTRO_NAME}-${IMAGE_BASENAME}-${DISTRO_VERSION}-${MACHINE}"
-
+DEPLOY_DIR_IMAGE = ${DEPLOY_DIR}/images/${MACHINE}
DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION if you really want to build an unversioned distro')}"
diff --git a/conf/distro/slugos-packages.conf b/conf/distro/slugos-packages.conf
index b9ac309a60..f05dd23e81 100644
--- a/conf/distro/slugos-packages.conf
+++ b/conf/distro/slugos-packages.conf
@@ -16,6 +16,7 @@ ${PKGDIR}/packages/bluez/*.bb \
${PKGDIR}/packages/bogofilter/*.bb \
${PKGDIR}/packages/boost/*.bb \
${PKGDIR}/packages/bridge-utils/*.bb \
+${PKGDIR}/packages/btsco/*.bb \
${PKGDIR}/packages/busybox/*.bb \
${PKGDIR}/packages/bwmon/*.bb \
${PKGDIR}/packages/bzip2/*.bb \
@@ -198,6 +199,7 @@ ${PKGDIR}/packages/setserial/*.bb \
${PKGDIR}/packages/sgml-common/*.bb \
${PKGDIR}/packages/slugimage/*.bb \
${PKGDIR}/packages/slugos-init/*.bb \
+${PKGDIR}/packages/spca5xx/*.bb \
${PKGDIR}/packages/ssmtp/*.bb \
${PKGDIR}/packages/strace/*.bb \
${PKGDIR}/packages/streamripper/*.bb \
diff --git a/conf/distro/slugos.conf b/conf/distro/slugos.conf
index 3b094d769d..cf2cb078c5 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.15.2"
+PREFERRED_VERSION_ixp4xx-kernel ?= "2.6.16-rc4-git9"
# Built-in ethernet modules
PREFERRED_PROVIDER_virtual/ixp-eth ?= "ixp400-eth"
diff --git a/conf/distro/unslung.conf b/conf/distro/unslung.conf
index 11445846b2..e130ae09cf 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.5-alpha"
+DISTRO_VERSION = "6.7-alpha"
DISTRO_TYPE = "beta"
FEED_URIS = "cross##http://ipkg.nslu2-linux.org/feeds/optware/nslu2/cross/stable"
diff --git a/conf/machine/ep93xx.conf b/conf/machine/ep93xx.conf
index f68e3dd36c..1289fb4505 100644
--- a/conf/machine/ep93xx.conf
+++ b/conf/machine/ep93xx.conf
@@ -18,9 +18,12 @@ BOOTSTRAP_EXTRA_RDEPENDS_append = " udev module-init-tools"
# used by sysvinit_2
-SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLE = "57600 ttyAM0"
# used by some images
ROOT_FLASH_SIZE = "8"
+#tune for ep93xx cpus
+#can be used for crunch support later on
+#include conf/machine/tune-ep9312.conf
diff --git a/conf/machine/ipaq-pxa270.conf b/conf/machine/ipaq-pxa270.conf
index 0c432ad674..c6f4804d5f 100644
--- a/conf/machine/ipaq-pxa270.conf
+++ b/conf/machine/ipaq-pxa270.conf
@@ -4,19 +4,30 @@
TARGET_ARCH = "arm"
IPKG_ARCHS = "all arm armv4 armv5te ipaqpxa hx4700"
+#use this for a hx47xx ipaq
PREFERRED_PROVIDER_virtual/kernel = "handhelds-pxa-2.6"
+
+#use this for a hx2xxx ipaq
+#PREFERRED_PROVIDER_virtual/kernel = "linux-openzaurus"
+
PREFERRED_VERSIONS_handhelds-pxa-2.6 = "2.6.12-hh3"
PREFERRED_VERSION_orinoco-modules = "0.15rc1"
ROOT_FLASH_SIZE = "80"
-BOOTSTRAP_EXTRA_RDEPENDS = "kernel ipaq-boot-params ${@linux_module_packages('${PXA270_MODULES}', d)}"
+EXTRA_IMAGECMD_jffs2 = "; sumtool -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs-summary.jffs2 \
+ -e 256KiB -p"
+
+MODUTILS = "26"
+BOOTSTRAP_EXTRA_RDEPENDS = "kernel ipaq-boot-params "
+BOOTSTRAP_EXTRA_RRECOMMENDS += "${@linux_module_packages('${PXA270_MODULES}', d)}"
BOOTSTRAP_EXTRA_RDEPENDS_append = " udev module-init-tools"
PXA270_MODULES = "g_ether g_file_storage g_serial gadgetfs pxa27x_udc \
snd_pcm_oss snd_mixer_oss evdev mmc_block pcmcia hidp \
- nls_cp437 nls_iso8859-1 nls_utf8"
+ nls_cp437 nls_iso8859-1 nls_utf8 af_key"
SERIAL_CONSOLE = "115200 ttyS0"
@@ -29,10 +40,15 @@ GPE_EXTRA_INSTALL += "gaim"
# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
include conf/machine/include/tune-xscale.conf
-BOOTSTRAP_EXTRA_RDEPENDS += "${@linux_module_packages('${HX4700_MODULES}', d)}"
+# Uncomment this to use iwmmxt optimizations. Remove the above xscale stuff first
+#include conf/machine/include/tune-iwmmxt.conf
+
+BOOTSTRAP_EXTRA_RRECOMMENDS += "${@linux_module_packages('${HX4700_MODULES}', d)}"
HX4700_MODULES = "i2c-pxa asic3_mmc hx4700_bt hx4700_leds hx4700_navpt hx4700_pcmcia \
hx4700_ts hx4700_wlan snd_hx4700_audio hx4700_power"
+
+
module_autoload_hx4700_power = "hx4700_power"
module_autoload_pcmcia = "pcmcia"
module_autoload_hx4700_pcmcia = "hx4700_pcmcia"
diff --git a/conf/machine/qemuarm.conf b/conf/machine/qemuarm.conf
new file mode 100644
index 0000000000..2238f6673e
--- /dev/null
+++ b/conf/machine/qemuarm.conf
@@ -0,0 +1,46 @@
+#@TYPE: Machine
+#@NAME: qemu ARM Emulator setup
+#@DESCRIPTION: Machine configuration for running an ARM system under qemu emulation
+
+KERNEL_VERSION ?= "2.6"
+
+TARGET_ARCH = "arm"
+IPKG_ARCHS = "all arm armv4 armv5te qemuarm"
+
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+GUI_MACHINE_CLASS = "bigscreen"
+GPE_EXTRA_INSTALL += "gaim sylpheed"
+
+include conf/machine/include/handheld-common.conf
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-openzaurus"
+
+BOOTSTRAP_EXTRA_RDEPENDS += "kernel udev sysfsutils spectrum-fw \
+pcmciautils 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"
+
+# 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-irda kernel-module-ircomm \
+# kernel-module-ircomm-tty kernel-module-irlan kernel-module-irnet kernel-module-ir-usb"
+
+IMAGE_FSTYPES = "ext2"
+
+ROOT_FLASH_SIZE = "100"
+# actually that should really read ROOTFS_SIZE = "100", because with modern kernels,
+# we boot from the built-in harddisk in C3000. ROOT_FLASH_SIZE is really 5 MegaByte
diff --git a/files/device_table-unslung.txt b/files/device_table-unslung.txt
index 7fdd4df68b..ef81494ee4 100644
--- a/files/device_table-unslung.txt
+++ b/files/device_table-unslung.txt
@@ -15,6 +15,7 @@
/dev/kmem c 640 0 0 1 2 - - -
/dev/ledman c 644 0 0 126 0 - - -
/dev/md b 644 0 0 9 0 0 1 4
+/dev/loop b 664 0 0 7 0 0 1 2
/dev/lp c 664 0 0 180 0 0 1 4
/dev/mem c 640 0 0 1 1 - - -
/dev/mtd c 664 0 0 90 0 0 2 8
diff --git a/packages/altboot/altboot.bb b/packages/altboot/altboot.bb
deleted file mode 100644
index ce586f6f4b..0000000000
--- a/packages/altboot/altboot.bb
+++ /dev/null
@@ -1,98 +0,0 @@
-DESCRIPTION = "A text-based bootmanager allowing a Zaurus to boot from SD, CF, USB-Storage and NFS. \
-Tested machines: Collie, Poodle, Akita, Spitz"
-SECTION = "base"
-PRIORITY = "optional"
-MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
-LICENSE = "GPL"
-IGNORE_STRIP_ERRORS = "1"
-
-PR = "r20"
-
-
-SRC_URI = "file://altboot-menu \
- file://altboot.rc \
- file://altboot.func \
- file://init.altboot \
- file://altboot*.cfg"
-
-# S = "${WORKDIR}/files"
-
-do_install() {
- install -d ${D}/sbin
- install -d ${D}/etc/altboot-menu
- install -d ${D}/etc/altboot-menu/Advanced
- install -d ${D}/etc/altboot.rc
- install -d ${D}/usr/share/doc/altboot
-
- install -m 0644 ${WORKDIR}/altboot*.cfg ${D}/etc
- install -m 0644 ${WORKDIR}/altboot.func ${D}/etc
-# install -m 0644 ${WORKDIR}/docs/altboot/*.txt ${D}/usr/share/doc/altboot
- install -m 0755 ${WORKDIR}/init.altboot ${D}/sbin
- install -m 0755 ${WORKDIR}/altboot-menu/*-* ${D}/etc/altboot-menu
- install -m 0755 ${WORKDIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
- install -m 0755 ${WORKDIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
- install -m 0644 ${WORKDIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
-}
-
-
-
-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*)
-
- # /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
-}
-
-pkg_postrm() {
- update-alternatives --remove init /sbin/init.altboot
-}
-
-pkg_postrm_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
- 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
-}
diff --git a/packages/altboot/altboot_0.0.0.bb b/packages/altboot/altboot_0.0.0.bb
new file mode 100644
index 0000000000..7d56cbd3a6
--- /dev/null
+++ b/packages/altboot/altboot_0.0.0.bb
@@ -0,0 +1,118 @@
+DESCRIPTION = "A text-based bootmanager allowing a Zaurus to boot from SD, CF, USB-Storage and NFS. \
+Tested machines: Collie, Poodle, Akita, Spitz"
+SECTION = "base"
+PRIORITY = "optional"
+MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>"
+LICENSE = "GPL"
+IGNORE_STRIP_ERRORS = "1"
+
+PR = "r26"
+
+
+SRC_URI = "file://altboot-menu \
+ file://altboot.rc \
+ file://altboot.func \
+ file://init.altboot \
+ file://altboot*.cfg"
+
+# S = "${WORKDIR}/files"
+
+do_install() {
+ install -d ${D}/sbin
+ install -d ${D}/etc/altboot-menu
+ install -d ${D}/etc/altboot-menu/Advanced
+ install -d ${D}/etc/altboot.rc
+ install -d ${D}/usr/share/doc/altboot
+
+ install -m 0644 ${WORKDIR}/altboot*.cfg ${D}/etc
+ install -m 0644 ${WORKDIR}/altboot.func ${D}/etc
+# install -m 0644 ${WORKDIR}/docs/altboot/*.txt ${D}/usr/share/doc/altboot
+ install -m 0755 ${WORKDIR}/init.altboot ${D}/sbin
+ install -m 0755 ${WORKDIR}/altboot-menu/*-* ${D}/etc/altboot-menu
+ install -m 0755 ${WORKDIR}/altboot-menu/Advanced/*-* ${D}/etc/altboot-menu/Advanced
+ install -m 0755 ${WORKDIR}/altboot.rc/*.sh ${D}/etc/altboot.rc
+ install -m 0644 ${WORKDIR}/altboot.rc/*.txt ${D}/etc/altboot.rc
+}
+
+do_configure() {
+ cat ${WORKDIR}/init.altboot | sed "s/^VERSION=.*/VERSION=\"0.0.0 Developer Snapshot (${DATE})\"/" > ${WORKDIR}/init.altboot_
+ mv ${WORKDIR}/init.altboot_ ${WORKDIR}/init.altboot
+}
+
+
+pkg_postinst() {
+ 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_0.0.5.bb b/packages/altboot/altboot_0.0.5.bb
new file mode 100644
index 0000000000..1cb51a3639
--- /dev/null
+++ b/packages/altboot/altboot_0.0.5.bb
@@ -0,0 +1,152 @@
+#! /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_0.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"
+
+######################################################################################
+
+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_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/files/akita/altboot-2.6.cfg b/packages/altboot/files/akita/altboot-2.6.cfg
index 42f0968134..69f7c8351b 100644
--- a/packages/altboot/files/akita/altboot-2.6.cfg
+++ b/packages/altboot/files/akita/altboot-2.6.cfg
@@ -18,6 +18,9 @@ USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
USB_STORAGE_PARTITION="/dev/sda1"
USB_STORAGE_WAIT="4"
+KEXEC_KERNEL_DIR="/boot"
+KEXEC_BIN="/usr/sbin/kexec"
+
INIT_RUNLEVEL="5"
NO_GUI_RL="2"
MASTER_PASSWORD=""
diff --git a/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick b/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
index c5222800e5..3cf8c506b0 100644
--- a/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
+++ b/packages/altboot/files/altboot-menu/Advanced/30-bootUSB-Stick
@@ -8,6 +8,7 @@
M_TITLE="Boot USB Storage"
test "$USB_HOST_AVAILABLE" = "yes" || exit 0
+
die() {
echo "ERROR: $1" >/dev/tty0
exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
diff --git a/packages/altboot/files/altboot-menu/Advanced/35-kexec b/packages/altboot/files/altboot-menu/Advanced/35-kexec
new file mode 100644
index 0000000000..41b193a379
--- /dev/null
+++ b/packages/altboot/files/altboot-menu/Advanced/35-kexec
@@ -0,0 +1,62 @@
+# !/bin/sh
+M_TITLE="init=/bin/sh"
+
+exit 0
+
+# Only kernel 2.6 offers kexec support
+uname -r | grep -q "^2.6" || exit 0
+
+run_module() {
+
+ test -e /etc/altboot.func && . /etc/altboot.func || die "ERROR: /etc/altboot.func not found. Check your installation!"
+
+ test -z "$KEXEC_KERNEL_DIR" && KEXEC_KERNEL_DIR="/boot"
+ test -x "$KEXEC_BIN" || die "kexec-tools not found [$KEXEC_BIN]"
+
+ # Mount /proc, etc
+ init_rootfs
+
+ if test "`find "$KEXEC_KERNEL_DIR" -type f -name "*zImage*" | wc -l | tr -d " "`" -gt 1
+ then
+ echo "Please choose a kernel to boot:"
+ cd "$KEXEC_KERNEL_DIR"
+
+ cnt=1
+ for f in `ls -1 "$KEXEC_KERNEL_DIR"`
+ do
+ echo "[$cnt] $f"
+ let cnt=$cnt+1
+ done
+
+ while true
+ do
+ echo -n "Boot kernel: "
+ read junk
+
+ if test -n "$junk"
+ then
+ cnt=1
+ for f in `ls -1 "$KEXEC_KERNEL_DIR"`
+ do
+ if test "$cnt" = "$junk"
+ then
+ KEXEC_KERNEL="$f"
+ break
+ fi
+ let cnt=$cnt+1
+ done
+ fi
+ done
+
+ echo "kernel dir:[$KEXEC_KERNEL_DIR]"
+ echo "Using kernel: [$KEXEC_KERNEL]"
+
+
+ for
+}
+
+case "$1" in
+title) echo "$M_TITLE";;
+run) run_module;;
+esac
+
diff --git a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
index cf1d1da8e6..3a41fccf79 100644
--- a/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
+++ b/packages/altboot/files/altboot-menu/Advanced/40-bootNFS
@@ -116,7 +116,7 @@ run_module() {
# Use configured resolv.conf in the pivoted rootfs
echo -n "Copying resolv.conf..."
- cp /etc/resolv.conf /media/nfsroot/etc && echo ok || echo "FAILED"
+ #cp /etc/resolv.conf /media/nfsroot/etc && echo ok || echo "FAILED"
check_target "/media/nfsroot"
diff --git a/packages/altboot/files/altboot-menu/Advanced/70-install-tgz b/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
index 2ff380418d..cdfa052747 100644
--- a/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
+++ b/packages/altboot/files/altboot-menu/Advanced/70-install-tgz
@@ -51,8 +51,18 @@ run_module(){
read junk
case "$junk" in
- 1) rootfs_target="/media/card"; break ;;
- 2) rootfs_target="/media/cf" ; break ;;
+ 1) if (mount | grep -q "/media/card ")
+ then
+ rootfs_target="/media/card"; break
+ else
+ echo -e "\nInstallation target [/media/card] not mounted\n"
+ fi ;;
+ 2) if (mount | grep -q "/media/cf ")
+ then
+ rootfs_target="/media/cf"; break
+ else
+ echo -e "\nInstallation target [/media/cf] not mounted\n"
+ fi ;;
esac
done
@@ -68,7 +78,13 @@ run_module(){
read junk
case "$junk" in
- 1) rootfs_type="image"; break ;;
+ 1) if test -x /sbin/mkfs.ext2
+ then
+ rootfs_type="image"
+ break
+ else
+ echo -e "\nNOTE: mkfs.ext2 (from e2fsprogs-mke2fs) not found, loop-images not supported\n"
+ fi ;;
2) rootfs_type="direct" ; break ;;
esac
done
@@ -86,8 +102,11 @@ clear_directories(){
for d in bin dev media proc sys usr boot etc lib mnt sbin tmp var
do
- echo "Removing [$1/$d]..."
- rm -rf "$1/$d"
+ if test -d "$1/$d"
+ then
+ echo "Removing [$1/$d]..."
+ rm -rf "$1/$d"
+ fi
done
}
@@ -95,6 +114,8 @@ clear_directories(){
install_rootfs_direct(){
+ mount | grep -q "$1 " || die "Installation target [$1] not mounted"
+
echo -e "Do you want to remove existing directories from [$1]\n before installing the new rootfs?"
echo ""
@@ -110,8 +131,7 @@ install_rootfs_direct(){
echo "Please press <ENTER> to begin the installation"
read junk </dev/tty0 >/dev/tty0 2>&1
-
- mount | grep -q "$1 " || die "Installation target [$1] not mounted"
+
test -d "$1" || die "Directory [$1] not found"
echo -n "Installing rootfs, please wait..."
@@ -121,7 +141,7 @@ install_rootfs_direct(){
sync
echo "done"
- umount "$1"
+# umount "$1"
echo "Press <ENTER> to bring up the altboot menu"
read junk </dev/tty0 >/dev/tty0 2>&1
@@ -152,7 +172,7 @@ install_rootfs_image(){
while true
do
- echo -n "Overwrite? [N|y] "
+ echo -n "Overwrite? [y|N] "
read junk2
case "$junk2" in
@@ -190,7 +210,7 @@ install_rootfs_image(){
if test -n "$junk"
then
- if test "$junk" -gt 1
+ if test "$junk" -gt 29
then
echo -n "Is [${junk}Mb] correct? [Y|n] "
read junk2
diff --git a/packages/altboot/files/altboot.func b/packages/altboot/files/altboot.func
index 6dfad21374..c6af50a008 100644
--- a/packages/altboot/files/altboot.func
+++ b/packages/altboot/files/altboot.func
@@ -65,7 +65,7 @@ pivot_realfs() {
test -z "$2" && RL="5" || RL="$2"
mkdir -p $1/media/ROM || die "mkdir -p $1/media/ROM failed"
- mount -o remount,ro /
+ mount -o remount,ro / >/dev/null 2>&1
do_pivot "$1" "$RL"
}
@@ -119,19 +119,17 @@ pivot_image() {
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
-
- losetup -d /dev/loop0
+
echo -e "\n* * * Booting 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 -o loop -t $IMAGE_TYPE $1/$IMAGE_PATH/$IMAGE_NAME /media/image >/dev/null 2>&1 || die "mount -t $IMAGE_TYPE /dev/loop0 /media/image failed!"
+ # 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"
@@ -280,7 +278,7 @@ check_fs() {
elif [ -e /sbin/e2fsck ]; then
FSCK="/sbin/e2fsck"
fi
- FSCK="$FSCK -p"
+ test -n "$FSCK" && FSCK="$FSCK -p"
;;
vfat)
if [ -e /sbin/dosfsck ]; then
@@ -310,11 +308,11 @@ init_rootfs(){
fi
echo -n "Generating device files..." >/dev/tty0
- /etc/init.d/devices start && echo ok >/dev/tty0|| die "FAILED"
+ /etc/init.d/devices start && echo ok >/dev/tty0 || die "FAILED"
}
mount_sd(){
- if mount | grep -q "/media/card "
+ if mount | grep -q "/media/card"
then
echo "Note: /media/card is already mounted"
else
@@ -353,13 +351,15 @@ mount_cf(){
if mount | grep -q "/media/cf "
then
echo "Note: /media/cf is already mounted"
- else
- /etc/init.d/pcmcia start || die "/etc/init.d/pcmcia/start failed!"
+ else
+ /etc/init.d/pcmcia status | grep -q running || /etc/init.d/pcmcia start && echo "Note: cardmgr is already active"
echo ""
# Give the SD and CF mounting some time. This is a must for SD
sleep 2
+
+ mount | grep -q "/media/cf " || mount /media/cf
fi
}
@@ -369,7 +369,7 @@ mount_home(){
echo "Note: /home is already mounted"
else
- if ( grep -q "/home " /etc/fstab )
+ if ( cat /etc/fstab | grep -v "^#" | grep "/home " )
then
echo "Mounting /home"
home_fstab="`grep "/home " /etc/fstab`"
diff --git a/packages/altboot/files/altboot.rc/loadkeymap.sh b/packages/altboot/files/altboot.rc/loadkeymap.sh
index f9a7774549..97cff13dbb 100644
--- a/packages/altboot/files/altboot.rc/loadkeymap.sh
+++ b/packages/altboot/files/altboot.rc/loadkeymap.sh
@@ -1,5 +1,8 @@
#!/bin/sh
# Note: With kernel 2.6 the standard keymap is unusable
-test -x /etc/init.d/keymap && /etc/init.d/keymap start >/dev/null 2>&1
+test -x /etc/init.d/keymap && /etc/init.d/keymap start >/dev/null 2>&1
+
+# Do not exit w/ errorcode when the if above fails
+/bin/true
diff --git a/packages/ice/.mtn2git_empty b/packages/altboot/files/borzoi/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ice/.mtn2git_empty
+++ b/packages/altboot/files/borzoi/.mtn2git_empty
diff --git a/packages/altboot/files/borzoi/altboot-2.4.cfg b/packages/altboot/files/borzoi/altboot-2.4.cfg
new file mode 100644
index 0000000000..8c404d4768
--- /dev/null
+++ b/packages/altboot/files/borzoi/altboot-2.4.cfg
@@ -0,0 +1,27 @@
+# Handled by /sbin/init.altboot
+# Allow booting images from SD or CF instead of booting
+# the ROM.
+ENABLE_ALTBOOT="yes"
+TIMEOUT="4"
+REAL_INIT="/sbin/init.sysvinit"
+SH_SHELL="/bin/sh"
+
+IMAGE_PATH="boot-images"
+IMAGE_TYPE="ext2"
+FSCK_IMAGES="yes"
+
+SD_DEVICE="/dev/mmcda1"
+SD_KERNEL_MODULE="/lib/modules/2.4.20/kernel/drivers/block/sharp_mmcsd_m.o"
+
+USB_HOST_AVAILABLE="yes"
+USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
+USB_STORAGE_PARTITION="/dev/sda1"
+USB_STORAGE_WAIT="4"
+
+INIT_RUNLEVEL="5"
+NO_GUI_RL="2"
+MASTER_PASSWORD=""
+ASK_PW_ON_BOOT="no"
+
+SD_MOUNTPOINT="/media/card"
+CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/borzoi/altboot-2.6.cfg b/packages/altboot/files/borzoi/altboot-2.6.cfg
new file mode 100644
index 0000000000..69f7c8351b
--- /dev/null
+++ b/packages/altboot/files/borzoi/altboot-2.6.cfg
@@ -0,0 +1,30 @@
+# Handled by /sbin/init.altboot
+# Allow booting images from SD or CF instead of booting
+# the ROM.
+ENABLE_ALTBOOT="yes"
+TIMEOUT="4"
+REAL_INIT="/sbin/init.sysvinit"
+SH_SHELL="/bin/sh"
+
+IMAGE_PATH="boot-images"
+IMAGE_TYPE="ext2"
+FSCK_IMAGES="yes"
+
+SD_DEVICE="/dev/mmcblk0p1"
+SD_KERNEL_MODULE=""
+
+USB_HOST_AVAILABLE="no"
+USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
+USB_STORAGE_PARTITION="/dev/sda1"
+USB_STORAGE_WAIT="4"
+
+KEXEC_KERNEL_DIR="/boot"
+KEXEC_BIN="/usr/sbin/kexec"
+
+INIT_RUNLEVEL="5"
+NO_GUI_RL="2"
+MASTER_PASSWORD=""
+ASK_PW_ON_BOOT="no"
+
+SD_MOUNTPOINT="/media/card"
+CF_MOUNTPOINT="/media/cf"
diff --git a/packages/ice/files/.mtn2git_empty b/packages/altboot/files/c7x0/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ice/files/.mtn2git_empty
+++ b/packages/altboot/files/c7x0/.mtn2git_empty
diff --git a/packages/altboot/files/c7x0/altboot-2.4.cfg b/packages/altboot/files/c7x0/altboot-2.4.cfg
new file mode 100644
index 0000000000..32956e7f71
--- /dev/null
+++ b/packages/altboot/files/c7x0/altboot-2.4.cfg
@@ -0,0 +1,26 @@
+# Handled by /sbin/init.altboot
+# Allow booting images from SD or CF instead of booting
+# the ROM.
+ENABLE_ALTBOOT="yes"
+TIMEOUT="4"
+REAL_INIT="/sbin/init.sysvinit"
+SH_SHELL="/bin/sh"
+
+IMAGE_PATH="boot-images"
+IMAGE_TYPE="ext2"
+FSCK_IMAGES="yes"
+
+SD_DEVICE="/dev/mmcda1"
+SD_KERNEL_MODULE="/lib/modules/2.4.28/kernel/drivers/block/sharp_mmcsd_m.o"
+
+USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
+USB_STORAGE_PARTITION="/dev/sda1"
+USB_STORAGE_WAIT="4"
+
+INIT_RUNLEVEL="5"
+NO_GUI_RL="2"
+MASTER_PASSWORD=""
+ASK_PW_ON_BOOT="no"
+
+SD_MOUNTPOINT="/media/card"
+CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/c7x0/altboot-2.6.cfg b/packages/altboot/files/c7x0/altboot-2.6.cfg
new file mode 100644
index 0000000000..ad15f7169e
--- /dev/null
+++ b/packages/altboot/files/c7x0/altboot-2.6.cfg
@@ -0,0 +1,26 @@
+# Handled by /sbin/init.altboot
+# Allow booting images from SD or CF instead of booting
+# the ROM.
+ENABLE_ALTBOOT="yes"
+TIMEOUT="4"
+REAL_INIT="/sbin/init.sysvinit"
+SH_SHELL="/bin/sh"
+
+IMAGE_PATH="boot-images"
+IMAGE_TYPE="ext2"
+FSCK_IMAGES="yes"
+
+SD_DEVICE="/dev/mmcblk0p1"
+SD_KERNEL_MODULE=""
+
+USB_STORAGE_MODULES="usb_ohci_pxa27x usb-storage"
+USB_STORAGE_PARTITION="/dev/sda1"
+USB_STORAGE_WAIT="4"
+
+INIT_RUNLEVEL="5"
+NO_GUI_RL="2"
+MASTER_PASSWORD=""
+ASK_PW_ON_BOOT="no"
+
+SD_MOUNTPOINT="/media/card"
+CF_MOUNTPOINT="/media/cf"
diff --git a/packages/altboot/files/init.altboot b/packages/altboot/files/init.altboot
index 2ba6f654b5..850912f20c 100644
--- a/packages/altboot/files/init.altboot
+++ b/packages/altboot/files/init.altboot
@@ -255,8 +255,7 @@ wait_for_input() {
# Don't remount rw if the drive is already mounted rw
# Only helpful for testing / debugging
if test "`mount|sed -n "/\/dev\/root/s/.*(\(.*\))/\1/p"`" != "rw"
- then
-
+ then
mount -o remount,rw / >/dev/null 2>&1
echo "$junk" > /etc/altboot.conf
mount -o remount,ro / >/dev/null 2>&1
@@ -278,6 +277,7 @@ if test "`runlevel`" != "unknown" -a "$1" != "-force"
then
echo "altboot: Using real init [$REAL_INIT] [$*] *" >/dev/tty1
exec $REAL_INIT $*
+# exec $SH_SHELL </dev/tty0 >/dev/tty0 2>&1
exit 0
else
# Boot original init if altboot is turned off
diff --git a/packages/antlr/antlr-native_2.7.5.bb b/packages/antlr/antlr-native_2.7.5.bb
index 9eebeb8485..cd6ce7a76b 100644
--- a/packages/antlr/antlr-native_2.7.5.bb
+++ b/packages/antlr/antlr-native_2.7.5.bb
@@ -4,4 +4,5 @@ inherit native
# A native antlr would need a native java virtual machine..
# eww. -CL
DEPENDS = "virtual/java-native"
+RDEPENDS= "virtual/java-native"
BROKEN = "1"
diff --git a/packages/autoconf/autoconf-native_2.59.bb b/packages/autoconf/autoconf-native_2.59.bb
index 846a447a81..21a2002453 100644
--- a/packages/autoconf/autoconf-native_2.59.bb
+++ b/packages/autoconf/autoconf-native_2.59.bb
@@ -1,6 +1,9 @@
SECTION = "devel"
include autoconf_${PV}.bb
DEPENDS = "m4-native gnu-config-native"
+RDEPENDS_${PN} = "m4-native gnu-config-native"
+RRECOMMENDS_${PN} = "automake-native"
+
S = "${WORKDIR}/autoconf-${PV}"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/autoconf-${PV}"
diff --git a/packages/automake/automake-native.inc b/packages/automake/automake-native.inc
index 172752f3aa..9e89ac8621 100644
--- a/packages/automake/automake-native.inc
+++ b/packages/automake/automake-native.inc
@@ -1,6 +1,7 @@
SECTION = "devel"
include automake_${PV}.bb
DEPENDS = "autoconf-native"
+RDEPENDS_${PN} = "autoconf-native perl-native-runtime"
inherit native
diff --git a/packages/automake/automake-native_1.8.2.bb b/packages/automake/automake-native_1.8.2.bb
index 7969426a63..6e36766445 100644
--- a/packages/automake/automake-native_1.8.2.bb
+++ b/packages/automake/automake-native_1.8.2.bb
@@ -2,6 +2,7 @@ SECTION = "devel"
include automake_${PV}.bb
S = "${WORKDIR}/automake-${PV}"
DEPENDS = "autoconf-native"
+RDEPENDS_${PN} = "autoconf-native perl-native-runtime"
inherit native
diff --git a/packages/automake/automake-native_1.8.4.bb b/packages/automake/automake-native_1.8.4.bb
index 7969426a63..6e36766445 100644
--- a/packages/automake/automake-native_1.8.4.bb
+++ b/packages/automake/automake-native_1.8.4.bb
@@ -2,6 +2,7 @@ SECTION = "devel"
include automake_${PV}.bb
S = "${WORKDIR}/automake-${PV}"
DEPENDS = "autoconf-native"
+RDEPENDS_${PN} = "autoconf-native perl-native-runtime"
inherit native
diff --git a/packages/automake/automake_1.7.7.bb b/packages/automake/automake_1.7.7.bb
index d8405c00d2..619361bcfd 100644
--- a/packages/automake/automake_1.7.7.bb
+++ b/packages/automake/automake_1.7.7.bb
@@ -7,7 +7,7 @@ PR = "r7"
inherit autotools
FILES_${PN} += "${datadir}/automake* ${datadir}/aclocal*"
-RDEPENDS_${PN} += "autoconf perl"
+RDEPENDS_${PN} += "autoconf-native perl-native"
do_install () {
oe_runmake 'DESTDIR=${D}' install
diff --git a/packages/avahi/avahi_0.6.7.bb b/packages/avahi/avahi_0.6.8.bb
index f41b22017a..95c930d8e8 100644
--- a/packages/avahi/avahi_0.6.7.bb
+++ b/packages/avahi/avahi_0.6.8.bb
@@ -17,6 +17,7 @@ FILES_libavahi-common = "${libdir}/libavahi-common.so.*"
FILES_libavahi-core= "${libdir}/libavahi-core.so.*"
FILES_avahi-daemon = "${sbindir}/avahi-daemon \
${sysconfdir}/avahi/avahi-daemon.conf \
+ ${sysconfdir}/avahi/hosts \
${sysconfdir}/avahi/services \
${sysconfdir}/dbus-1 \
${sysconfdir}/init.d/avahi-daemon \
diff --git a/packages/btsco/btsco-module-0.41/makefile.patch b/packages/btsco/btsco-module-0.41/makefile.patch
index cf57b59475..a7beb54761 100644
--- a/packages/btsco/btsco-module-0.41/makefile.patch
+++ b/packages/btsco/btsco-module-0.41/makefile.patch
@@ -1,5 +1,5 @@
---- btsco-0.41/kernel/Makefile.orig 2006-01-13 00:32:58.000000000 +0100
-+++ btsco-0.41/kernel/Makefile 2006-01-13 00:33:35.000000000 +0100
+--- kernel/Makefile.orig 2006-01-13 00:32:58.000000000 +0100
++++ kernel/Makefile 2006-01-13 00:33:35.000000000 +0100
@@ -10,10 +10,10 @@
diff --git a/packages/btsco/btsco-module_0.41.bb b/packages/btsco/btsco-module_0.41.bb
index c4997cf5bd..4122bf86c4 100644
--- a/packages/btsco/btsco-module_0.41.bb
+++ b/packages/btsco/btsco-module_0.41.bb
@@ -3,6 +3,7 @@ SECTION = "kernel/modules"
HOMEPAGE = "http://bluetooth-alsa.sourceforge.net/"
LICENSE = "GPL"
DEPENDS = "alsa-lib bluez-libs"
+PR = "r1"
inherit module
diff --git a/packages/btsco/btsco_0.41.bb b/packages/btsco/btsco_0.41.bb
index dae5877483..a80d44dccb 100644
--- a/packages/btsco/btsco_0.41.bb
+++ b/packages/btsco/btsco_0.41.bb
@@ -2,7 +2,9 @@ DESCRIPTION = "Bluetooth-alsa headset tool"
HOMEPAGE = "http://bluetooth-alsa.sourceforge.net/"
LICENSE = "GPL"
MAINTAINER = "Robert Woerle <robert@linuxdevelopment.de>"
+RDEPENDS = "alsa-lib bluez-libs"
DEPENDS = "alsa-lib bluez-libs"
+PR = "r1"
inherit autotools pkgconfig
diff --git a/packages/busybox/busybox-1.01/slugos/defconfig b/packages/busybox/busybox-1.01/slugos/defconfig
index 7eca339d2d..55aa5f3b5e 100644
--- a/packages/busybox/busybox-1.01/slugos/defconfig
+++ b/packages/busybox/busybox-1.01/slugos/defconfig
@@ -353,7 +353,7 @@ CONFIG_RENICE=y
CONFIG_TOP=y
FEATURE_CPU_USAGE_PERCENTAGE=y
CONFIG_UPTIME=y
-# CONFIG_SYSCTL is not set
+CONFIG_SYSCTL=y
#
# Another Bourne-like Shell
diff --git a/packages/busybox/busybox-1.01/slugos/sysctl.conf b/packages/busybox/busybox-1.01/slugos/sysctl.conf
new file mode 100644
index 0000000000..20d573c124
--- /dev/null
+++ b/packages/busybox/busybox-1.01/slugos/sysctl.conf
@@ -0,0 +1,32 @@
+#
+# /etc/sysctl.conf - Configuration file for setting system variables
+# See sysctl.conf (5) for information.
+#
+
+#kernel.domainname = example.com
+
+# This flag allows the machine to respond to broadcast pings.
+# Very useful on embedded machines
+net/ipv4/icmp_echo_ignore_broadcasts=0
+
+# Uncomment the following to stop low-level messages on console
+#kernel/printk = 4 4 1 7
+
+##############################################################3
+# Functions previously found in netbase
+#
+
+# Uncomment the next line to enable Spoof protection (reverse-path filter)
+#net/ipv4/conf/all/rp_filter=1
+
+# Uncomment the next line to enable TCP/IP SYN cookies
+#net/ipv4/tcp_syncookies=1
+
+# Uncomment the next line to enable packet forwarding for IPv4
+#net/ipv4/ip_forward=1
+
+# Uncomment the next line to enable packet forwarding for IPv6
+#net/ipv6/ip_forward=1
+
+# This sets the app to run on a hotplug event
+sys/kernel/hotplug=/sbin/udevsend
diff --git a/packages/busybox/busybox_1.01.bb b/packages/busybox/busybox_1.01.bb
index 3173294398..2ef3068f6e 100644
--- a/packages/busybox/busybox_1.01.bb
+++ b/packages/busybox/busybox_1.01.bb
@@ -10,7 +10,7 @@ HOMEPAGE = "http://www.busybox.net"
LICENSE = "GPL"
SECTION = "base"
PRIORITY = "required"
-PR = "r7"
+PR = "r9"
SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
file://udhcppidfile.patch;patch=1 \
@@ -39,6 +39,7 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
file://syslog.conf \
file://mount.busybox \
file://umount.busybox"
+SRC_URI_append_slugos += " file://sysctl.conf "
S = "${WORKDIR}/busybox-${PV}"
@@ -130,6 +131,10 @@ do_install () {
install -m 0644 ${S}/busybox.links ${D}${sysconfdir}
}
+do_install_append_slugos() {
+ install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}
+}
+
pkg_postinst_${PN} () {
# If we are not making an image we create links for the utilities that doesn't exist
# so the update-alternatives script will get the utilities it needs
diff --git a/packages/bzflag/bzflag_1.10.6.20040515.bb b/packages/bzflag/bzflag_1.10.6.20040515.bb
index 5976fa0903..145b70bf95 100644
--- a/packages/bzflag/bzflag_1.10.6.20040515.bb
+++ b/packages/bzflag/bzflag_1.10.6.20040515.bb
@@ -1,4 +1,4 @@
-DEPENDS = "adns ncurses x11"
+DEPENDS = "adns ncurses libx11"
SECTION = "x11/games"
LICENSE = "LGPL"
SRC_URI = "${SOURCEFORGE_MIRROR}/bzflag/bzflag-${PV}.tar.bz2"
diff --git a/packages/cairo/cairo_0.5.0.bb b/packages/cairo/cairo_0.5.0.bb
index 260541c39f..733aed045a 100644
--- a/packages/cairo/cairo_0.5.0.bb
+++ b/packages/cairo/cairo_0.5.0.bb
@@ -1,8 +1,8 @@
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-# DEPENDS = "x11 libpixman libpng fontconfig libxrender xcb glitz"
-DEPENDS = "x11 libpixman libpng fontconfig libxrender"
+# DEPENDS = "libx11 libpixman libpng fontconfig libxrender xcb glitz"
+DEPENDS = "libx11 libpixman libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
PR = "r0"
diff --git a/packages/cairo/cairo_0.5.2.bb b/packages/cairo/cairo_0.5.2.bb
index 260541c39f..733aed045a 100644
--- a/packages/cairo/cairo_0.5.2.bb
+++ b/packages/cairo/cairo_0.5.2.bb
@@ -1,8 +1,8 @@
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-# DEPENDS = "x11 libpixman libpng fontconfig libxrender xcb glitz"
-DEPENDS = "x11 libpixman libpng fontconfig libxrender"
+# DEPENDS = "libx11 libpixman libpng fontconfig libxrender xcb glitz"
+DEPENDS = "libx11 libpixman libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
PR = "r0"
diff --git a/packages/cairo/cairo_0.9.2.bb b/packages/cairo/cairo_0.9.2.bb
index 1e61594ba3..7d258cfb81 100644
--- a/packages/cairo/cairo_0.9.2.bb
+++ b/packages/cairo/cairo_0.9.2.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-DEPENDS = "x11 libpng fontconfig libxrender"
+DEPENDS = "libx11 libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
PR = "r1"
diff --git a/packages/cairo/cairo_1.0.0.bb b/packages/cairo/cairo_1.0.0.bb
index 84cb581174..10603e3f2f 100644
--- a/packages/cairo/cairo_1.0.0.bb
+++ b/packages/cairo/cairo_1.0.0.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-DEPENDS = "x11 libpng fontconfig libxrender"
+DEPENDS = "libx11 libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
PR = "r1"
diff --git a/packages/cairo/cairo_1.0.2.bb b/packages/cairo/cairo_1.0.2.bb
index 5db0dd127d..51116b3757 100644
--- a/packages/cairo/cairo_1.0.2.bb
+++ b/packages/cairo/cairo_1.0.2.bb
@@ -1,6 +1,6 @@
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "x11 libpng fontconfig libxrender"
+DEPENDS = "libx11 libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
PR = "r0"
diff --git a/packages/cairo/cairo_cvs.bb b/packages/cairo/cairo_cvs.bb
index 1a53d5a03a..c4908dafe6 100644
--- a/packages/cairo/cairo_cvs.bb
+++ b/packages/cairo/cairo_cvs.bb
@@ -2,8 +2,8 @@ PV = "0.0+cvs${SRCDATE}"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-# DEPENDS = "x11 libpixman libpng fontconfig libxrender xcb glitz"
-DEPENDS = "x11 libpixman libpng fontconfig libxrender"
+# DEPENDS = "libx11 libpixman libpng fontconfig libxrender xcb glitz"
+DEPENDS = "libx11 libpixman libpng fontconfig libxrender"
DESCRIPTION = "Cairo graphics library"
LICENSE = "MPL LGPL"
PR = "r2"
diff --git a/packages/classpath/classpath_0.14.bb b/packages/classpath/classpath_0.14.bb
index c1c266c994..97a4272201 100644
--- a/packages/classpath/classpath_0.14.bb
+++ b/packages/classpath/classpath_0.14.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
PR = "r1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/classpath/classpath_0.15.bb b/packages/classpath/classpath_0.15.bb
index c1c266c994..97a4272201 100644
--- a/packages/classpath/classpath_0.15.bb
+++ b/packages/classpath/classpath_0.15.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
PR = "r1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/classpath/classpath_0.17.bb b/packages/classpath/classpath_0.17.bb
index fb41d7e9d8..f17292a6fb 100644
--- a/packages/classpath/classpath_0.17.bb
+++ b/packages/classpath/classpath_0.17.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
PR = "r1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/classpath/classpath_0.18.bb b/packages/classpath/classpath_0.18.bb
index 028e16185c..e08e69501d 100644
--- a/packages/classpath/classpath_0.18.bb
+++ b/packages/classpath/classpath_0.18.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/classpath/classpath_0.19.bb b/packages/classpath/classpath_0.19.bb
index 028e16185c..e08e69501d 100644
--- a/packages/classpath/classpath_0.19.bb
+++ b/packages/classpath/classpath_0.19.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/classpath/classpath_0.20.bb b/packages/classpath/classpath_0.20.bb
index 028e16185c..e08e69501d 100644
--- a/packages/classpath/classpath_0.20.bb
+++ b/packages/classpath/classpath_0.20.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
SRC_URI = "${GNU_MIRROR}/${PN}/${P}.tar.gz \
diff --git a/packages/classpath/classpath_cvs.bb b/packages/classpath/classpath_cvs.bb
index d40dc12a9f..061fa4df90 100644
--- a/packages/classpath/classpath_cvs.bb
+++ b/packages/classpath/classpath_cvs.bb
@@ -8,7 +8,7 @@ PV = "0.20+cvs${SRCDATE}"
DEFAULT_PREFERENCE = "-1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
SRC_URI = "cvs://anoncvs@cvs.gnu.org/cvsroot/classpath;method=pserver;rsh=ssh;module=classpath \
diff --git a/packages/compositeext/compositeext_cvs.bb b/packages/compositeext/compositeext_cvs.bb
index 75317fabcd..94160746e6 100644
--- a/packages/compositeext/compositeext_cvs.bb
+++ b/packages/compositeext/compositeext_cvs.bb
@@ -6,7 +6,7 @@ DEPENDS = "xextensions fixesext"
DESCRIPTION = "X Composite extension headers and specification"
DEFAULT_PREFERENCE = "1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=CompositeExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=CompositeExt"
S = "${WORKDIR}/CompositeExt"
inherit autotools pkgconfig
diff --git a/packages/damageext/damageext_cvs.bb b/packages/damageext/damageext_cvs.bb
index 1489e5355b..86a6032b29 100644
--- a/packages/damageext/damageext_cvs.bb
+++ b/packages/damageext/damageext_cvs.bb
@@ -6,7 +6,7 @@ DEPENDS = "xextensions fixesext"
DESCRIPTION = "X Damage extension headers and specification"
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=DamageExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=DamageExt"
S = "${WORKDIR}/DamageExt"
inherit autotools pkgconfig
diff --git a/packages/dasher/dasher-gpe_0.0cvs20040828.bb b/packages/dasher/dasher-gpe_0.0cvs20040828.bb
index ceb9425e29..7e515feae7 100644
--- a/packages/dasher/dasher-gpe_0.0cvs20040828.bb
+++ b/packages/dasher/dasher-gpe_0.0cvs20040828.bb
@@ -1,7 +1,7 @@
LICENSE="GPL"
PR = "r1"
-DEPENDS = "libxsettings-client libglade xtst gconf gtk+"
+DEPENDS = "libxsettings-client libglade libxtst gconf gtk+"
SECTION = "gpe"
SRC_URI = "cvs://anonymous@anoncvs.gnome.org/cvs/gnome;module=dasher;date=20040828 \
file://configure-lossage.patch;patch=1"
diff --git a/packages/libsm/.mtn2git_empty b/packages/dbus/dbus-0.61/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libsm/.mtn2git_empty
+++ b/packages/dbus/dbus-0.61/.mtn2git_empty
diff --git a/packages/dbus/dbus-0.61/dbus-1.init b/packages/dbus/dbus-0.61/dbus-1.init
new file mode 100644
index 0000000000..60440b7223
--- /dev/null
+++ b/packages/dbus/dbus-0.61/dbus-1.init
@@ -0,0 +1,86 @@
+#! /bin/sh
+# -*- coding: utf-8 -*-
+# Debian init.d script for D-BUS
+# Copyright © 2003 Colin Walters <walters@debian.org>
+
+set -e
+
+DAEMON=/usr/bin/dbus-daemon
+NAME=dbus-1
+DAEMONUSER=messagebus
+PIDDIR=/var/run/dbus
+PIDFILE=$PIDDIR/pid
+DESC="system message bus"
+EVENTDIR=/etc/dbus-1/event.d
+
+test -x $DAEMON || exit 0
+
+# Source defaults file; edit that file to configure this script.
+ENABLED=1
+PARAMS=""
+if [ -e /etc/default/dbus-1 ]; then
+ . /etc/default/dbus-1
+fi
+
+test "$ENABLED" != "0" || exit 0
+
+start_it_up()
+{
+ if [ ! -d $PIDDIR ]; then
+ mkdir -p $PIDDIR
+ chown $DAEMONUSER $PIDDIR
+ chgrp $DAEMONUSER $PIDDIR
+ fi
+ if [ -e $PIDFILE ]; then
+ PIDDIR=/proc/$(cat $PIDFILE)
+ if [ -d ${PIDDIR} -a "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
+ echo "$DESC already started; not starting."
+ else
+ echo "Removing stale PID file $PIDFILE."
+ rm -f $PIDFILE
+ fi
+ fi
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ if [ -d $EVENTDIR ]; then
+ run-parts --arg=start $EVENTDIR
+ fi
+}
+
+shut_it_down()
+{
+ if [ -d $EVENTDIR ]; then
+ run-parts --reverse --arg=stop $EVENTDIR
+ fi
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --user $DAEMONUSER
+ # We no longer include these arguments so that start-stop-daemon
+ # can do its job even given that we may have been upgraded.
+ # We rely on the pidfile being sanely managed
+ # --exec $DAEMON -- --system $PARAMS
+ echo "$NAME."
+ rm -f $PIDFILE
+}
+
+case "$1" in
+ start)
+ start_it_up
+ ;;
+ stop)
+ shut_it_down
+ ;;
+ restart|force-reload)
+ shut_it_down
+ sleep 1
+ start_it_up
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/dbus/dbus-0.61/no-bindings.patch b/packages/dbus/dbus-0.61/no-bindings.patch
new file mode 100644
index 0000000000..ccfc3f88b2
--- /dev/null
+++ b/packages/dbus/dbus-0.61/no-bindings.patch
@@ -0,0 +1,12 @@
+--- dbus-0.50/tools/Makefile.am.orig 2005-09-07 10:05:38 +0200
++++ dbus-0.50/tools/Makefile.am 2005-09-07 10:06:30 +0200
+@@ -6,9 +6,6 @@
+ nodist_libdbus_glib_HEADERS = dbus-glib-bindings.h
+ libdbus_glibdir = $(includedir)/dbus-1.0/dbus
+
+-dbus-glib-bindings.h: dbus-bus-introspect.xml $(top_builddir)/glib/dbus-binding-tool$(EXEEXT)
+- $(top_builddir)/glib/dbus-binding-tool --mode=glib-client --output=dbus-glib-bindings.h dbus-bus-introspect.xml
+-
+ BUILT_SOURCES = dbus-glib-bindings.h dbus-bus-introspect.xml
+
+ else
diff --git a/packages/dbus/dbus-0.61/no-introspect.patch b/packages/dbus/dbus-0.61/no-introspect.patch
new file mode 100644
index 0000000000..1e43dd121b
--- /dev/null
+++ b/packages/dbus/dbus-0.61/no-introspect.patch
@@ -0,0 +1,14 @@
+--- dbus-0.50/tools/Makefile.am.orig 2005-09-07 10:03:49 +0200
++++ dbus-0.50/tools/Makefile.am 2005-09-07 10:04:28 +0200
+@@ -21,11 +21,6 @@
+ GTK_TOOLS=
+ endif
+
+-if HAVE_GLIB
+-dbus-bus-introspect.xml: $(top_builddir)/bus/dbus-daemon$(EXEEXT) dbus-launch$(EXEEXT) dbus-send$(EXEEXT) $(top_builddir)/bus/dbus-daemon$(EXEEXT) Makefile
+- DBUS_TOP_BUILDDIR=$(top_builddir) $(srcdir)/run-with-tmp-session-bus.sh ./dbus-send --print-reply=literal --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.Introspectable.Introspect > dbus-bus-introspect.xml.tmp && mv dbus-bus-introspect.xml.tmp dbus-bus-introspect.xml
+-endif
+-
+ bin_PROGRAMS=dbus-send $(GLIB_TOOLS) dbus-launch dbus-cleanup-sockets $(GTK_TOOLS)
+
+ dbus_send_SOURCES= \
diff --git a/packages/dbus/dbus-native_0.61.bb b/packages/dbus/dbus-native_0.61.bb
new file mode 100644
index 0000000000..9e661dbccf
--- /dev/null
+++ b/packages/dbus/dbus-native_0.61.bb
@@ -0,0 +1,19 @@
+include dbus_${PV}.inc
+
+SRC_URI_EXTRA=""
+
+inherit native
+
+S = "${WORKDIR}/dbus-${PV}"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus"
+DEPENDS = "glib-2.0-native"
+
+PR = "r1"
+
+do_stage() {
+ oe_runmake install
+ install -d ${STAGING_DATADIR}/dbus
+ install -m 0644 tools/dbus-bus-introspect.xml ${STAGING_DATADIR}/dbus
+ install -m 0644 tools/dbus-glib-bindings.h ${STAGING_DATADIR}/dbus
+}
+
diff --git a/packages/dbus/dbus_0.61.bb b/packages/dbus/dbus_0.61.bb
new file mode 100644
index 0000000000..e827457371
--- /dev/null
+++ b/packages/dbus/dbus_0.61.bb
@@ -0,0 +1,13 @@
+include dbus_${PV}.inc
+
+
+DEPENDS = "expat glib-2.0 virtual/libintl dbus-native"
+SRC_URI_EXTRA = "file://no-introspect.patch;patch=1 file://no-bindings.patch;patch=1"
+
+FILES_${PN} += "${bindir}/dbus-daemon"
+FILES_${PN}-dev += "${bindir}/dbus-binding-tool"
+
+do_configure_prepend() {
+ install -m 0644 ${STAGING_DIR}/${BUILD_SYS}/share/dbus/dbus-bus-introspect.xml ${S}/tools/
+ install -m 0644 ${STAGING_DIR}/${BUILD_SYS}/share/dbus/dbus-glib-bindings.h ${S}/tools/
+}
diff --git a/packages/dbus/dbus_0.61.inc b/packages/dbus/dbus_0.61.inc
new file mode 100644
index 0000000000..70546ed5b1
--- /dev/null
+++ b/packages/dbus/dbus_0.61.inc
@@ -0,0 +1,64 @@
+SECTION = "base"
+PR = "r0"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+DESCRIPTION = "message bus system for applications to talk to one another"
+LICENSE = "GPL"
+DEPENDS = "expat glib-2.0 virtual/libintl"
+
+SRC_URI = "http://freedesktop.org/software/dbus/releases/dbus-${PV}.tar.gz \
+ file://cross.patch;patch=1 \
+ file://tmpdir.patch;patch=1 \
+ file://dbus-1.init \
+ file://no-examples.patch;patch=1 \
+ ${SRC_URI_EXTRA}"
+
+inherit autotools pkgconfig update-rc.d gettext
+
+INITSCRIPT_NAME = "dbus-1"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+
+FILES_${PN} = "${bindir}/dbus-daemon ${bindir}/dbus-launch ${bindir}/dbus-cleanup-sockets ${bindir}/dbus-send ${bindir}/dbus-monitor ${sysconfdir} ${datadir}/dbus-1/services ${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+
+pkg_postinst_dbus() {
+#!/bin/sh
+
+# can't do adduser stuff offline
+if [ "x$D" != "x" ]; then
+ exit 1
+fi
+
+MESSAGEUSER=messagebus
+MESSAGEHOME=/var/run/dbus
+
+mkdir -p $MESSAGEHOME || true
+chgrp "$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || addgroup "$MESSAGEUSER"
+chown "$MESSAGEUSER"."$MESSAGEUSER" "$MESSAGEHOME" 2>/dev/null || adduser --system --home "$MESSAGEHOME" --no-create-home --disabled-password --ingroup "$MESSAGEUSER" "$MESSAGEUSER"
+}
+
+EXTRA_OECONF = "--disable-qt --disable-gtk --disable-tests \
+ --disable-checks --disable-xml-docs --disable-doxygen-docs \
+ --with-xml=expat --without-x"
+
+
+do_stage () {
+ oe_libinstall -so -C dbus libdbus-1 ${STAGING_LIBDIR}
+ oe_libinstall -so -C glib libdbus-glib-1 ${STAGING_LIBDIR}
+
+ autotools_stage_includes
+
+ mkdir -p ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+ install -m 0644 dbus/dbus-arch-deps.h ${STAGING_LIBDIR}/dbus-1.0/include/dbus/
+}
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1
+}
+
+python populate_packages_prepend () {
+ if (bb.data.getVar('DEBIAN_NAMES', d, 1)):
+ bb.data.setVar('PKG_dbus', 'dbus-1', d)
+}
diff --git a/packages/detect-stylus/detect-stylus_0.10.bb b/packages/detect-stylus/detect-stylus_0.10.bb
index d4cec0efd7..bc7103cb24 100644
--- a/packages/detect-stylus/detect-stylus_0.10.bb
+++ b/packages/detect-stylus/detect-stylus_0.10.bb
@@ -3,7 +3,7 @@ LICENSE = "GPL"
PR = "r2"
-DEPENDS = "x11 xrdb xcursor-transparent-theme"
+DEPENDS = "libx11 xrdb xcursor-transparent-theme"
RDEPENDS = "xrdb xcursor-transparent-theme"
SECTION = "gpe"
diff --git a/packages/detect-stylus/detect-stylus_0.13.bb b/packages/detect-stylus/detect-stylus_0.13.bb
index c0ece8754e..793cbef849 100644
--- a/packages/detect-stylus/detect-stylus_0.13.bb
+++ b/packages/detect-stylus/detect-stylus_0.13.bb
@@ -3,7 +3,7 @@ LICENSE = "GPL"
PR = "r2"
-DEPENDS = "x11 xcursor-transparent-theme xrdb"
+DEPENDS = "libx11 xcursor-transparent-theme xrdb"
SECTION = "gpe"
RDEPENDS = "xrdb"
diff --git a/packages/libsm/files/.mtn2git_empty b/packages/dia/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libsm/files/.mtn2git_empty
+++ b/packages/dia/.mtn2git_empty
diff --git a/packages/dia/dia_0.94+0.95pre3.bb b/packages/dia/dia_0.94+0.95pre3.bb
new file mode 100644
index 0000000000..922ab8cc23
--- /dev/null
+++ b/packages/dia/dia_0.94+0.95pre3.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Dia is a gtk+ based diagram creation program released under the GPL license."
+LICENSE = "GPL"
+DEPENDS = "libpng cairo zlib gtk+ libxml2"
+MAINTAINER = "Koen Kooi <koen@handhelds.org>"
+
+
+inherit autotools pkgconfig
+
+SRC_URI = "ftp://ftp.gnome.org/pub/gnome/sources/dia/0.95/dia-0.95-pre3.tar.gz"
+
+S = "${WORKDIR}/${PN}-0.95-pre3"
+LDFLAGS += "-lxml2 -lgthread-2.0 -lglib-2.0"
+
+
diff --git a/packages/dri/drm-kernel_cvs.bb b/packages/dri/drm-kernel_cvs.bb
index a454617fc8..7e0bddfcdc 100644
--- a/packages/dri/drm-kernel_cvs.bb
+++ b/packages/dri/drm-kernel_cvs.bb
@@ -2,7 +2,7 @@ SECTION = "x11/base"
PR = "r3"
LICENSE = "MIT"
-SRC_URI = "cvs://anoncvs@dri.freedesktop.org/cvs/dri;module=drm;method=pserver \
+SRC_URI = "${FREEDESKTOP_CVS}/dri;module=drm;method=pserver \
file://make.patch;patch=1"
inherit module-base
diff --git a/packages/dri/drm_cvs.bb b/packages/dri/drm_cvs.bb
index c7eaba02b9..2b105eb1fe 100644
--- a/packages/dri/drm_cvs.bb
+++ b/packages/dri/drm_cvs.bb
@@ -1,6 +1,6 @@
SECTION = "x11/base"
LICENSE = "MIT"
-SRC_URI = "cvs://anoncvs@dri.freedesktop.org/cvs/dri;module=drm;method=pserver"
+SRC_URI = "${FREEDESKTOP_CVS}/dri;module=drm;method=pserver"
PV = "0.0+cvs${SRCDATE}"
PR = "r2"
diff --git a/packages/eds/eds-dbus_svn.bb b/packages/eds/eds-dbus_svn.bb
index 1b427604a8..2f2485d23a 100644
--- a/packages/eds/eds-dbus_svn.bb
+++ b/packages/eds/eds-dbus_svn.bb
@@ -1,10 +1,13 @@
LICENSE = "LGPL"
DEPENDS = "glib-2.0 gtk+ gconf dbus db gnome-common libglade libiconv"
-RDEPENDS = "gconf dbus db libiconv"
MAINTAINER = "Richard Purdie <richard@openedhand.com>"
DESCRIPTION = "Evolution database backend server"
+
+SRCDATE = "20060126"
+
PV = "1.4.0+svn${SRCDATE}"
-PR = "r14"
+#PV = "1.4.0+svn20060126"
+PR = "r16"
SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
file://no_libdb.patch;patch=1 \
@@ -17,7 +20,8 @@ S = "${WORKDIR}/trunk"
inherit autotools pkgconfig
-EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-soup --with-libdb41=${STAGING_DIR}/${HOST_SYS} --disable-smime --disable-nss --disable-camel --disable-nntp --disable-gtk-doc"
+#EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-soup --with-libdb=${STAGING_DIR}/${HOST_SYS} --disable-smime --disable-nss --disable-camel --disable-nntp --disable-gtk-doc"
+EXTRA_OECONF = "--without-openldap --with-dbus --without-bug-buddy --without-soup --with-libdb=${STAGING_DIR}/${HOST_SYS} --disable-smime --disable-nss --disable-nntp --disable-gtk-doc"
acpaths = " -I ${STAGING_DATADIR}/aclocal/gnome-macros "
@@ -40,14 +44,19 @@ do_stage () {
oe_libinstall -so -C calendar/libecal-dbus libecal-1.2 ${STAGING_LIBDIR}
oe_libinstall -so -C calendar/libedata-cal-dbus libedata-cal-1.2 ${STAGING_LIBDIR}
oe_libinstall -so -C libedataserver libedataserver-1.2 ${STAGING_LIBDIR}
+ oe_libinstall -so -C camel libcamel-1.2 ${STAGING_LIBDIR}
+ oe_libinstall -so -C camel libcamel-provider-1.2 ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/camel ${STAGING_INCDIR}/libebook \
+ install -d ${STAGING_INCDIR}/camel-1.2 ${STAGING_INCDIR}/libebook \
${STAGING_INCDIR}/libecal ${STAGING_INCDIR}/libedataserver \
${STAGING_INCDIR}/libical
- install -m 0644 ${S}/camel/*.h ${STAGING_INCDIR}/camel
+ install -m 0644 ${S}/camel/*.h ${STAGING_INCDIR}/camel-1.2
+ install -m 0644 ${S}/camel/*.def ${STAGING_INCDIR}/camel-1.2
+ ln -sf ${STAGING_INCDIR}/camel-1.2 ${STAGING_INCDIR}/camel
install -m 0644 ${S}/addressbook/libebook-dbus/*.h ${STAGING_INCDIR}/libebook
install -m 0644 ${S}/calendar/libecal-dbus/*.h ${STAGING_INCDIR}/libecal
install -m 0644 ${S}/libedataserver/*.h ${STAGING_INCDIR}/libedataserver
install -m 0644 ${S}/calendar/libical/src/libical/*.h ${STAGING_INCDIR}/libical
}
+
diff --git a/packages/efl/evas-x11_0.9.9.023.bb b/packages/efl/evas-x11_0.9.9.023.bb
index ba8b74aae2..4b833d8d9c 100644
--- a/packages/efl/evas-x11_0.9.9.023.bb
+++ b/packages/efl/evas-x11_0.9.9.023.bb
@@ -1,5 +1,5 @@
include evas.inc
-DEPENDS += "x11 xext freetype"
+DEPENDS += "libx11 libxext freetype"
PR = "r4"
EXTRA_OECONF = "--x-includes=${STAGING_INCDIR}/X11 \
diff --git a/packages/efl/evas-x11_20060113.bb b/packages/efl/evas-x11_20060113.bb
index 06111c467c..dab078a9bc 100644
--- a/packages/efl/evas-x11_20060113.bb
+++ b/packages/efl/evas-x11_20060113.bb
@@ -1,5 +1,5 @@
include evas.inc
-DEPENDS += "x11 xext freetype"
+DEPENDS += "libx11 libxext freetype"
PR = "r4"
SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/evas;date=${PV}"
diff --git a/packages/efl/imlib2-x11_1.2.1.010.bb b/packages/efl/imlib2-x11_1.2.1.010.bb
index d13d24165a..fec8b32205 100644
--- a/packages/efl/imlib2-x11_1.2.1.010.bb
+++ b/packages/efl/imlib2-x11_1.2.1.010.bb
@@ -1,5 +1,5 @@
include imlib2.inc
-DEPENDS += "x11 xext"
+DEPENDS += "libx11 libxext"
PR = "r1"
EXTRA_OECONF = "--disable-mmx \
diff --git a/packages/efl/imlib2-x11_20060128.bb b/packages/efl/imlib2-x11_20060128.bb
index 1fab5cb292..f77fa6498c 100644
--- a/packages/efl/imlib2-x11_20060128.bb
+++ b/packages/efl/imlib2-x11_20060128.bb
@@ -3,7 +3,7 @@ include imlib2.inc
SRC_URI = "cvs://anonymous@thinktux.net/root;module=e17/libs/imlib2;date=${PV}"
S = "${WORKDIR}/imlib2"
-DEPENDS += "x11 xext"
+DEPENDS += "libx11 libxext"
EXTRA_OECONF = "--disable-mmx \
--with-x \
diff --git a/packages/libxcursor/.mtn2git_empty b/packages/fbpanel/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxcursor/.mtn2git_empty
+++ b/packages/fbpanel/.mtn2git_empty
diff --git a/packages/libxcursor/files/.mtn2git_empty b/packages/fbpanel/fbpanel-4.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxcursor/files/.mtn2git_empty
+++ b/packages/fbpanel/fbpanel-4.3/.mtn2git_empty
diff --git a/packages/fbpanel/fbpanel-4.3/makefile.common.patch b/packages/fbpanel/fbpanel-4.3/makefile.common.patch
new file mode 100644
index 0000000000..13807b063a
--- /dev/null
+++ b/packages/fbpanel/fbpanel-4.3/makefile.common.patch
@@ -0,0 +1,13 @@
+--- fbpanel-4.3/Makefile.common.orig 2006-02-27 15:01:37.000000000 +0000
++++ fbpanel-4.3/Makefile.common 2006-02-27 15:02:04.000000000 +0000
+@@ -83,8 +83,8 @@
+ # compile flags
+
+ RM = rm -f
+-CC = gcc
+-AR = ar
++#CC = gcc
++#AR = ar
+ LIBS = $(shell pkg-config --libs gtk+-2.0 gdk-pixbuf-2.0 gdk-pixbuf-xlib-2.0) -L/usr/X11R6/lib -lXmu
+ INCS2 = $(shell pkg-config --cflags gtk+-2.0 gdk-pixbuf-2.0 gdk-pixbuf-xlib-2.0)
+ INCS := $(INCS2:-I%=-isystem %)
diff --git a/packages/fbpanel/fbpanel_4.3.bb b/packages/fbpanel/fbpanel_4.3.bb
new file mode 100644
index 0000000000..c237172ac8
--- /dev/null
+++ b/packages/fbpanel/fbpanel_4.3.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "A gtk based panel application"
+SECTION = "x11"
+LICENSE = "GPL"
+DEPENDS = "gtk+"
+HOMEPAGE = "http://fbpanel.sourceforge.net/"
+MAINTAINER = "Graeme Gregory <dp@xora.org.uk>"
+SRC_URI = "${SOURCEFORGE_MIRROR}/fbpanel/fbpanel-${PV}.tgz \
+ file://makefile.common.patch;patch=1 "
+
+PR = "r0"
+
+do_configure () {
+ ./configure --prefix=/usr --cpu=on
+}
+
+do_compile () {
+ oe_runmake CHATTY=1 STATIC_PLUGINS=1
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 0755 fbpanel ${D}${bindir}
+ install -d ${D}${datadir}/fbpanel/
+ #install -d ${D}${datadir}/fbpanel/plugins
+ #install -m 644 plugins/*.so ${D}${datadir}/fbpanel/plugins
+ #install -m 644 systray/tray.so ${D}${datadir}/fbpanel/plugins
+ install -m 644 config/default ${D}${datadir}/fbpanel/default
+ install -d ${D}${datadir}/fbpanel/images
+ install -m 644 config/images/* ${D}${datadir}/fbpanel/images
+}
+
diff --git a/packages/fdclock/fdclock_cvs.bb b/packages/fdclock/fdclock_cvs.bb
index 2c37fb67b0..8684a8fe73 100644
--- a/packages/fdclock/fdclock_cvs.bb
+++ b/packages/fdclock/fdclock_cvs.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Phil Blundell <pb@handhelds.org>"
DEPENDS = "cairo"
DESCRIPTION = "The freedesktop.org clock"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xapps;module=fdclock"
+SRC_URI = "${FREEDESKTOP_CVS}/xapps;module=fdclock"
S = "${WORKDIR}/fdclock"
inherit autotools
diff --git a/packages/feh/feh_1.2.6.bb b/packages/feh/feh_1.2.6.bb
index 372c2d3d2a..1d2fcaaf07 100644
--- a/packages/feh/feh_1.2.6.bb
+++ b/packages/feh/feh_1.2.6.bb
@@ -2,7 +2,7 @@ SECTION = "x11/utils"
DESCRIPTION = "feh is a fast, lightweight image viewer which uses imlib2."
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
LICENSE = "MIT"
-DEPENDS = "imlib2 giblib jpeg x11 xext xt"
+DEPENDS = "imlib2 giblib jpeg libx11 libxext libxt"
SRC_URI = "http://linuxbrit.co.uk/downloads/feh-${PV}.tar.gz \
file://cross.patch;patch=1"
diff --git a/packages/feh/feh_1.2.7.bb b/packages/feh/feh_1.2.7.bb
index 372c2d3d2a..1d2fcaaf07 100644
--- a/packages/feh/feh_1.2.7.bb
+++ b/packages/feh/feh_1.2.7.bb
@@ -2,7 +2,7 @@ SECTION = "x11/utils"
DESCRIPTION = "feh is a fast, lightweight image viewer which uses imlib2."
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
LICENSE = "MIT"
-DEPENDS = "imlib2 giblib jpeg x11 xext xt"
+DEPENDS = "imlib2 giblib jpeg libx11 libxext libxt"
SRC_URI = "http://linuxbrit.co.uk/downloads/feh-${PV}.tar.gz \
file://cross.patch;patch=1"
diff --git a/packages/fixesext/fixesext_cvs.bb b/packages/fixesext/fixesext_cvs.bb
index c279256fa2..30b9460138 100644
--- a/packages/fixesext/fixesext_cvs.bb
+++ b/packages/fixesext/fixesext_cvs.bb
@@ -6,7 +6,7 @@ DEPENDS = "xextensions"
DESCRIPTION = "X Fixes extension headers and specification."
DEFAULT_PREFERENCE = "1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=FixesExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=FixesExt"
S = "${WORKDIR}/FixesExt"
inherit autotools pkgconfig
diff --git a/packages/fontconfig/fontconfig_2.2.95.bb b/packages/fontconfig/fontconfig_2.2.95.bb
index 5fdf825fc5..8034f533ad 100644
--- a/packages/fontconfig/fontconfig_2.2.95.bb
+++ b/packages/fontconfig/fontconfig_2.2.95.bb
@@ -3,7 +3,7 @@ LICENSE = "BSD"
DESCRIPTION = "A library for configuring and customizing font access."
DEPENDS = "expat freetype freetype-native zlib fontconfig-native"
-SRC_URI = "http://pdx.freedesktop.org/fontconfig/release/fontconfig-${PV}.tar.gz \
+SRC_URI = "http://freedesktop.org/fontconfig/release/fontconfig-${PV}.tar.gz \
file://fc-glyphname.patch;patch=1 \
file://fc-lang.patch;patch=1"
PR = "r5"
diff --git a/packages/fs/fs_cvs.bb b/packages/fs/fs_cvs.bb
index 282a96cbcd..2a6722c422 100644
--- a/packages/fs/fs_cvs.bb
+++ b/packages/fs/fs_cvs.bb
@@ -2,9 +2,9 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE = "BSD-X"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "xfont xtrans"
+DEPENDS = "libxfont xtrans"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=FS"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=FS"
S = "${WORKDIR}/FS"
inherit autotools pkgconfig
diff --git a/packages/gaim/files/gevolution-eds-dbus.patch b/packages/gaim/files/gevolution-eds-dbus.patch
new file mode 100644
index 0000000000..0b7479d4f7
--- /dev/null
+++ b/packages/gaim/files/gevolution-eds-dbus.patch
@@ -0,0 +1,53 @@
+--- gaim/plugins/gevolution/gevolution.c.orig 2006-02-23 23:30:25.000000000 +0100
++++ gaim/plugins/gevolution/gevolution.c 2006-02-23 23:31:42.000000000 +0100
+@@ -38,17 +38,12 @@
+
+-#include <libedata-book/Evolution-DataServer-Addressbook.h>
+
+-#include <libebook/e-book-listener.h>
+-#include <libedata-book/e-data-book-factory.h>
+-#include <bonobo/bonobo-main.h>
++#include <libebook/e-book-view-listener.h>
++#include <libebook/e-data-book-factory-bindings.h>
+
+ #include <glib.h>
+
+ #define GEVOLUTION_PLUGIN_ID "gtk-x11-gevolution"
+
+-#define E_DATA_BOOK_FACTORY_OAF_ID \
+- "OAFIID:GNOME_Evolution_DataServer_BookFactory"
+-
+ enum
+ {
+ COLUMN_AUTOADD,
+@@ -324,8 +320,6 @@
+ static gboolean
+ plugin_load(GaimPlugin *plugin)
+ {
+- bonobo_activate();
+-
+ backup_blist_ui_ops = gaim_blist_get_ui_ops();
+
+ blist_ui_ops = g_memdup(backup_blist_ui_ops, sizeof(GaimBlistUiOps));
+@@ -370,7 +364,6 @@
+ static void
+ plugin_destroy(GaimPlugin *plugin)
+ {
+- bonobo_debug_shutdown();
+ }
+
+ static void
+@@ -563,13 +556,6 @@
+ * So, in conclusion, this is an evil hack, but it doesn't harm anything
+ * and it works.
+ */
+- g_module_make_resident(plugin->handle);
+-
+- if (!bonobo_init_full(NULL, NULL, bonobo_activation_orb_get(),
+- CORBA_OBJECT_NIL, CORBA_OBJECT_NIL))
+- {
+- gaim_debug_error("evolution", "Unable to initialize bonobo.\n");
+- }
+ }
+
+ GAIM_INIT_PLUGIN(gevolution, init_plugin, info)
diff --git a/packages/gaim/gaim.inc b/packages/gaim/gaim.inc
index 4fdcb4431b..b00dc8f9ca 100644
--- a/packages/gaim/gaim.inc
+++ b/packages/gaim/gaim.inc
@@ -4,7 +4,7 @@ MAINTAINER = "Mads Chr. Olesen <gaim@shiyee.dk>"
LICENSE = "GPL"
DEPENDS = "gtk+ gnutls virtual/libintl"
-RRECOMMENDS_${PN} = "gaim-protocol-irc gaim-protocol-jabber"
+RRECOMMENDS_${PN} = "gaim-protocol-irc gaim-protocol-jabber gaim-plugin-docklet"
EXTRA_OECONF = "--disable-audio --disable-perl --disable-tcl --disable-deprecated"
@@ -18,11 +18,16 @@ FILES_${PN}-dev += "${libdir}/gaim/*.la"
inherit autotools gettext
-PACKAGES_DYNAMIC = "gaim-protocol-*"
+PACKAGES_DYNAMIC = "gaim-protocol-* gaim-plugin-*"
python populate_packages_prepend () {
root = bb.data.expand('${libdir}/gaim', d)
+ do_split_packages(d, root, '^([^l][^i][^b].*)\.so$',
+ output_pattern='gaim-plugin-%s',
+ description='GAIM plugin %s',
+ prepend=True)
+
do_split_packages(d, root, '^lib(.*)\.so$',
output_pattern='gaim-protocol-%s',
description='GAIM protocol plugin for %s',
diff --git a/packages/gaim/gaim_cvs.bb b/packages/gaim/gaim_cvs.bb
index faf707a867..921fb7c261 100644
--- a/packages/gaim/gaim_cvs.bb
+++ b/packages/gaim/gaim_cvs.bb
@@ -5,6 +5,7 @@ PV = "2.0+cvs-${SRCDATE}"
SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gaim;module=gaim \
file://no-superimposed-version-on-logo.patch;patch=1 \
file://gtk-deprecated-2.0.0.patch;patch=1 \
+ file://gevolution-eds-dbus.patch;patch=1 \
"
include gaim.inc
diff --git a/packages/gcc/gcc3-build-cross.inc b/packages/gcc/gcc3-build-cross.inc
index a41ae11d64..384886c76e 100644
--- a/packages/gcc/gcc3-build-cross.inc
+++ b/packages/gcc/gcc3-build-cross.inc
@@ -39,5 +39,9 @@ do_stage_append () {
rmdir ${CROSS_DIR}/include || :
# We don't really need to keep this around
- rm -rf ${CROSS_DIR}/share
+ # rm -rf ${CROSS_DIR}/share but leave java there
+ for d in share/man share/info;
+ do
+ rm -rf ${CROSS_DIR}/$d
+ done
}
diff --git a/packages/gkrellm/gkrellm_2.2.7.bb b/packages/gkrellm/gkrellm_2.2.7.bb
index 01f68482ef..c2bf9ab10a 100644
--- a/packages/gkrellm/gkrellm_2.2.7.bb
+++ b/packages/gkrellm/gkrellm_2.2.7.bb
@@ -2,7 +2,7 @@ SECTION = "x11/utils"
DESCRIPTION = "GKrellM is a GTK-based stacked monitor program."
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
LICENSE = "GPL"
-DEPENDS = "gtk+ glib-2.0 libsm ice"
+DEPENDS = "gtk+ glib-2.0 libsm libice"
SRC_URI = "http://members.dslextreme.com/users/billw/gkrellm/gkrellm-${PV}.tar.bz2"
diff --git a/packages/glibmm/glibmm_2.8.4.bb b/packages/glibmm/glibmm_2.8.4.bb
new file mode 100644
index 0000000000..bb0bbdcf6d
--- /dev/null
+++ b/packages/glibmm/glibmm_2.8.4.bb
@@ -0,0 +1,24 @@
+DEFAULT_PREFERENCE = "-1"
+DESCRIPTION = "C++ bindings for the glib library."
+HOMEPAGE = "http://www.gtkmm.org/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ libsigc++-2.0"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.8/glibmm-${PV}.tar.bz2"
+
+inherit autotools pkgconfig flow-lossage
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+
+LIBV = "2.4.0"
+
+do_stage () {
+ autotools_stage_all
+
+ install -m 0644 glib/glibmmconfig.h ${STAGING_INCDIR}/glibmm-2.4
+
+ install -m 0644 scripts/glibmm_check_perl.m4 ${STAGING_DATADIR}/aclocal/
+}
diff --git a/packages/gnokii/gnokii_0.6.4.bb b/packages/gnokii/gnokii_0.6.4.bb
index 4a62ffc2d5..f04086a758 100644
--- a/packages/gnokii/gnokii_0.6.4.bb
+++ b/packages/gnokii/gnokii_0.6.4.bb
@@ -4,7 +4,7 @@ SRC_URI = "http://www.gnokii.org/download/gnokii/0.6.x/gnokii-${PV}.tar.bz2 \
file://configure.patch;patch=1"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "xpm"
+DEPENDS = "libxpm"
inherit autotools pkgconfig
diff --git a/packages/gnome/libwnck_2.12.1.bb b/packages/gnome/libwnck_2.12.1.bb
index b07bc09b86..46d5a868a5 100644
--- a/packages/gnome/libwnck_2.12.1.bb
+++ b/packages/gnome/libwnck_2.12.1.bb
@@ -1,4 +1,5 @@
LICENSE = "LGPL"
+DEPENDS = "gtk+"
DESCRIPTION = "Window navigation construction toolkit"
HOMEPAGE = ""
diff --git a/packages/gnuplot/gnuplot_4.0.0.bb b/packages/gnuplot/gnuplot_4.0.0.bb
index 0fead5ff4c..f5bc5fc740 100644
--- a/packages/gnuplot/gnuplot_4.0.0.bb
+++ b/packages/gnuplot/gnuplot_4.0.0.bb
@@ -4,7 +4,7 @@ SECTION = "console/scientific"
LICENSE = "BSD-4"
PRIORITY = "optional"
MAINTAINER = "Philip Frampton"
-DEPENDS = "x11 libpng gd readline"
+DEPENDS = "libx11 libpng gd readline"
PR = "r3"
SRC_URI = "ftp://ftp.gnuplot.info/pub/gnuplot/gnuplot-${PV}.tar.gz \
diff --git a/packages/gnutls/gnutls_1.2.10.bb b/packages/gnutls/gnutls_1.2.10.bb
new file mode 100644
index 0000000000..7227dfdcae
--- /dev/null
+++ b/packages/gnutls/gnutls_1.2.10.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "GNU Transport Layer Security Library"
+DEPENDS = "zlib libgcrypt lzo"
+
+LICENSE = "LGPL"
+
+SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2"
+
+inherit autotools
+inherit binconfig
+
+PACKAGES =+ "${PN}-openssl ${PN}-extra ${PN}-bin"
+FILES_${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
+FILES_${PN}-extra = "${libdir}/libgnutls-extra.so.*"
+FILES_${PN} = "${libdir}/libgnutls.so.*"
+FILES_${PN}-bin = "${bindir}/gnutls-serv ${bindir}/gnutls-cli \
+ ${bindir}/srptool ${bindir}/certtool ${bindir}/gnutls-srpcrypt"
+FILES_${PN}-dev += "${bindir}/*-config ${bindir}/gnutls-cli-debug"
+
+EXTRA_OECONF="--with-included-opencdk --with-included-libtasn1"
+
+do_stage() {
+ oe_libinstall -C lib/.libs -so -a libgnutls ${STAGING_LIBDIR}
+ oe_libinstall -C libextra/.libs -so -a libgnutls-extra ${STAGING_LIBDIR}
+ oe_libinstall -C libextra/.libs -so -a libgnutls-openssl ${STAGING_LIBDIR}
+ autotools_stage_includes
+}
+
diff --git a/packages/gnutls/gnutls_1.3.4.bb b/packages/gnutls/gnutls_1.3.4.bb
new file mode 100644
index 0000000000..0c02f4bd0f
--- /dev/null
+++ b/packages/gnutls/gnutls_1.3.4.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "GNU Transport Layer Security Library"
+DEPENDS = "zlib libgcrypt lzo"
+
+LICENSE = "LGPL"
+
+SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/devel/gnutls-${PV}.tar.bz2"
+
+inherit autotools
+inherit binconfig
+
+PACKAGES =+ "${PN}-openssl ${PN}-extra ${PN}-bin"
+FILES_${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
+FILES_${PN}-extra = "${libdir}/libgnutls-extra.so.*"
+FILES_${PN} = "${libdir}/libgnutls.so.*"
+FILES_${PN}-bin = "${bindir}/gnutls-serv ${bindir}/gnutls-cli \
+ ${bindir}/srptool ${bindir}/certtool ${bindir}/gnutls-srpcrypt"
+FILES_${PN}-dev += "${bindir}/*-config ${bindir}/gnutls-cli-debug"
+
+EXTRA_OECONF="--with-included-opencdk --with-included-libtasn1"
+
+do_stage() {
+ oe_libinstall -C lib/.libs -so -a libgnutls ${STAGING_LIBDIR}
+ oe_libinstall -C libextra/.libs -so -a libgnutls-extra ${STAGING_LIBDIR}
+ oe_libinstall -C libextra/.libs -so -a libgnutls-openssl ${STAGING_LIBDIR}
+ autotools_stage_includes
+}
+
diff --git a/packages/gpe-autostarter/gpe-autostarter_0.11.bb b/packages/gpe-autostarter/gpe-autostarter_0.11.bb
index e670c168d3..0921ec25a4 100644
--- a/packages/gpe-autostarter/gpe-autostarter_0.11.bb
+++ b/packages/gpe-autostarter/gpe-autostarter_0.11.bb
@@ -1,5 +1,5 @@
SECTION = "gpe"
-DEPENDS = "glib-2.0 dbus hotplug-dbus x11"
+DEPENDS = "glib-2.0 dbus hotplug-dbus libx11"
RDEPENDS = "hotplug-dbus"
LICENSE = "GPL"
diff --git a/packages/gpe-autostarter/gpe-autostarter_0.7.bb b/packages/gpe-autostarter/gpe-autostarter_0.7.bb
index 8b003b405a..847e961cce 100644
--- a/packages/gpe-autostarter/gpe-autostarter_0.7.bb
+++ b/packages/gpe-autostarter/gpe-autostarter_0.7.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
SECTION = "gpe"
-DEPENDS = "glib-2.0 dbus hotplug-dbus x11"
+DEPENDS = "glib-2.0 dbus hotplug-dbus libx11"
RDEPENDS = "hotplug-dbus"
inherit gpe
diff --git a/packages/gpe-bootsplash/files/speed.patch b/packages/gpe-bootsplash/files/speed.patch
new file mode 100644
index 0000000000..32d0432a87
--- /dev/null
+++ b/packages/gpe-bootsplash/files/speed.patch
@@ -0,0 +1,51 @@
+--- gpe-bootsplash-1.15/gpe-bootsplash.init.orig 2006-02-19 14:34:22.404426869 +0100
++++ gpe-bootsplash-1.15/gpe-bootsplash.init 2006-02-19 14:29:35.044269116 +0100
+@@ -32,14 +32,46 @@
+ esac
+ echo "0" > /proc/sys/kernel/printk
+
+- # Clear tty2
++ # Clear tty2
+ echo -e "\033c" > /dev/tty2
++
+ chvt 2
+
+ echo -e "\nLoading bootsplash..." > /dev/tty2
+ echo "Use Fn-LeftArrow to see the boot messages." > /dev/tty2
+
+- /usr/bin/gpe-bootsplash $ARGS || chvt 1
++ # Catch when the user has changed the symlinks manually (normally it doesn't matter which link we check
++ # as themes always update both of them
++ echo "$ARGS" | grep -q -- "--force-landscape" && source_link="splash-l.svg" || source_link="splash-p.svg"
++
++ # echo "[`cat /etc/bootsplash.name`] = [`readlink /usr/share/gpe/$source_link`]"
++
++ # bootsplash takes quite some time to load external images into an svg file.
++ # We speed things up by dumping the content of fb0, and catting it back (which works instantly)
++ if test -e /etc/bootsplash.raw.gz -a "`cat /etc/bootsplash.name`" = "`readlink /usr/share/gpe/$source_link`"
++ then
++ echo -e "\nUsing /etc/bootsplash.raw.gz...." > /dev/tty2
++ sleep 1
++
++ # Turn off the cursor on tty2
++ echo -e "\033[?25l\000" > /dev/tty2
++
++ zcat /etc/bootsplash.raw.gz > /dev/fb0
++ else
++ rm -f /etc/bootsplash.*
++ # Store the symlinks name as an indication which theme is used at the time we dump the image
++ if (/usr/bin/gpe-bootsplash $ARGS)
++ then
++ readlink /usr/share/gpe/$source_link > /etc/bootsplash.name
++
++ cat /dev/fb0 > /etc/bootsplash.raw ; gzip /etc/bootsplash.raw
++ else
++ echo -e "\nNOTE: gpe-bootsplash failed to start" >/dev/tty2
++ sleep 3
++ chvt 1
++ fi
++
++ fi
+ ;;
+ 'stop')
+ ;;
diff --git a/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb b/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
index fd17846103..ca48c6086b 100644
--- a/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
+++ b/packages/gpe-bootsplash/gpe-bootsplash_1.15.bb
@@ -5,11 +5,12 @@ MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "gpe"
PRIORITY = "optional"
LICENSE = "GPL"
-PR = "r2"
+PR = "r3"
SRC_URI += "file://splash-p.svg \
file://splash-l.svg \
- file://tty2-message.patch;patch=1"
+ file://tty2-message.patch;patch=1 \
+ file://speed.patch;patch=1"
FILES_${PN} += "${datadir}/gpe"
diff --git a/packages/gpe-conf/files/fixsegfault.patch b/packages/gpe-conf/files/fixsegfault.patch
new file mode 100644
index 0000000000..7f1ccbe432
--- /dev/null
+++ b/packages/gpe-conf/files/fixsegfault.patch
@@ -0,0 +1,44 @@
+Index: network.c
+===================================================================
+RCS file: /cvs/gpe/base/gpe-conf/network.c,v
+retrieving revision 1.55.2.2
+retrieving revision 1.55.2.3
+diff -u -r1.55.2.2 -r1.55.2.3
+--- network.c 16 Feb 2006 22:32:30 -0000 1.55.2.2
++++ network.c 20 Feb 2006 01:34:44 -0000 1.55.2.3
+@@ -289,19 +289,23 @@
+ i = iflen-1;
+
+ fd = fopen(_PATH_PROCNET_WIRELESS, "r");
+- fgets(buffer, 256, fd); // chuck first two lines;
+- fgets(buffer, 256, fd);
+- while (!feof(fd)) {
+- if (fgets(buffer, 256, fd) == NULL)
+- break;
+- name = buffer;
+- sep = strrchr(buffer, ':');
+- if (sep) *sep = 0;
+- while(*name == ' ') name++;
+- if (!strcmp(name, ifname))
+- iflist[iflen - 1].iswireless = TRUE;
+- }
++ if (fd != NULL)
++ {
++ fgets(buffer, 256, fd); // chuck first two lines;
++ fgets(buffer, 256, fd);
++ while (!feof(fd))
++ {
++ if (fgets(buffer, 256, fd) == NULL)
++ break;
++ name = buffer;
++ sep = strrchr(buffer, ':');
++ if (sep) *sep = 0;
++ while(*name == ' ') name++;
++ if (!strcmp(name, ifname))
++ iflist[iflen - 1].iswireless = TRUE;
++ }
+ fclose(fd);
++ }
+ }
+ else
+ i = existing;
diff --git a/packages/gpe-conf/gpe-conf_0.1.30.bb b/packages/gpe-conf/gpe-conf_0.1.30.bb
index 8eb1360e92..c0ee7e2ea0 100644
--- a/packages/gpe-conf/gpe-conf_0.1.30.bb
+++ b/packages/gpe-conf/gpe-conf_0.1.30.bb
@@ -3,9 +3,11 @@ LICENSE = "GPL"
SECTION = "gpe"
PRIORITY = "optional"
MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>"
+PR="r1"
inherit gpe
-PR="r0"
+
+SRC_URI += " file://fixsegfault.patch;patch=1;pnum=0"
DEPENDS = "gtk+ libgpewidget libxsettings libxsettings-client pcmcia-cs xst xset ipaq-sleep ntp gpe-login gpe-icons"
RDEPENDS_${PN} = "xst xset ipaq-sleep ntpdate gpe-login gpe-icons"
@@ -23,5 +25,3 @@ do_compile () {
do_install () {
oe_runmake MACHINE=${MACHINE} PREFIX=${prefix} DESTDIR=${D} install-program
}
-
-
diff --git a/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb b/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb
index 859166b576..253eda0502 100644
--- a/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb
+++ b/packages/gpe-soundserver/gpe-soundserver_0.4-1.bb
@@ -2,7 +2,7 @@ LICENSE = "GPL"
SECTION = "gpe"
inherit gpe
-DEPENDS = "x11 esound-gpe"
+DEPENDS = "libx11 esound-gpe"
RDEPENDS_${PN} = "esd"
SRC_URI += "file://makefile-breakage.patch;patch=1"
diff --git a/packages/gpe-what/gpe-what_0.30.bb b/packages/gpe-what/gpe-what_0.30.bb
index c5d4ed8b42..4bd9e5e779 100644
--- a/packages/gpe-what/gpe-what_0.30.bb
+++ b/packages/gpe-what/gpe-what_0.30.bb
@@ -3,7 +3,7 @@ SECTION = "gpe"
inherit gpe
DESCRIPTION = "GPE modal help"
-DEPENDS = "x11"
+DEPENDS = "libx11"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
do_compile_prepend() {
diff --git a/packages/gpe-what/gpe-what_0.31.bb b/packages/gpe-what/gpe-what_0.31.bb
index 5268c2cded..e660eea21b 100644
--- a/packages/gpe-what/gpe-what_0.31.bb
+++ b/packages/gpe-what/gpe-what_0.31.bb
@@ -3,5 +3,5 @@ SECTION = "gpe"
inherit gpe
DESCRIPTION = "GPE modal help"
-DEPENDS = "x11 xpm libmatchbox"
+DEPENDS = "libx11 libxpm libmatchbox"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
diff --git a/packages/gpe-what/gpe-what_0.33.bb b/packages/gpe-what/gpe-what_0.33.bb
index 062a7c6db1..98710f551f 100644
--- a/packages/gpe-what/gpe-what_0.33.bb
+++ b/packages/gpe-what/gpe-what_0.33.bb
@@ -5,5 +5,5 @@ inherit gpe
SRC_URI += "file://makefile-fix.patch;patch=1"
DESCRIPTION = "GPE modal help"
-DEPENDS = "x11 xpm libmatchbox"
+DEPENDS = "libx11 libxpm libmatchbox"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
diff --git a/packages/gpe-what/gpe-what_0.41.bb b/packages/gpe-what/gpe-what_0.41.bb
index b7f8d17201..383e31995f 100644
--- a/packages/gpe-what/gpe-what_0.41.bb
+++ b/packages/gpe-what/gpe-what_0.41.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
DESCRIPTION = "GPE modal help"
-DEPENDS = "x11 gtk+"
+DEPENDS = "libx11 gtk+"
GPE_TARBALL_SUFFIX= "bz2"
diff --git a/packages/gpe-what/gpe-what_0.42.bb b/packages/gpe-what/gpe-what_0.42.bb
index b7f8d17201..383e31995f 100644
--- a/packages/gpe-what/gpe-what_0.42.bb
+++ b/packages/gpe-what/gpe-what_0.42.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
DESCRIPTION = "GPE modal help"
-DEPENDS = "x11 gtk+"
+DEPENDS = "libx11 gtk+"
GPE_TARBALL_SUFFIX= "bz2"
diff --git a/packages/gpe-what/gpe-what_cvs.bb b/packages/gpe-what/gpe-what_cvs.bb
index 0cc7c96016..3da6662afb 100644
--- a/packages/gpe-what/gpe-what_cvs.bb
+++ b/packages/gpe-what/gpe-what_cvs.bb
@@ -10,4 +10,4 @@ inherit autotools gpe
SRC_URI = "${HANDHELDS_CVS};module=gpe/base/${PN}"
DESCRIPTION = "GPE modal help"
-DEPENDS = "x11 gtk+"
+DEPENDS = "libx11 gtk+"
diff --git a/packages/gtk+/gtk+-1.2_1.2.10.bb b/packages/gtk+/gtk+-1.2_1.2.10.bb
index 2056567cc8..f54980f03f 100644
--- a/packages/gtk+/gtk+-1.2_1.2.10.bb
+++ b/packages/gtk+/gtk+-1.2_1.2.10.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Rob Taylor <robtaylor@fastmail.fm>"
-DEPENDS = "glib-1.2 jpeg libpng xext"
+DEPENDS = "glib-1.2 jpeg libpng libxext"
PR = "r2"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-${PV}.tar.gz \
diff --git a/packages/gtk+/gtk+-native-1.2_1.2.10.bb b/packages/gtk+/gtk+-native-1.2_1.2.10.bb
index cd6e496a31..bf776494c6 100644
--- a/packages/gtk+/gtk+-native-1.2_1.2.10.bb
+++ b/packages/gtk+/gtk+-native-1.2_1.2.10.bb
@@ -4,7 +4,7 @@ SECTION = "libs"
LICENSE = "LGPL"
PRIORITY = "optional"
MAINTAINER = "Rob Taylor <robtaylor@fastmail.fm>"
-DEPENDS = "glib-1.2 jpeg libpng xext"
+DEPENDS = "glib-1.2 jpeg libpng libxext"
PR = "r0"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-${PV}.tar.gz \
diff --git a/packages/gtk+/gtk+_2.2.4.bb b/packages/gtk+/gtk+_2.2.4.bb
index 962eb55895..f54db4cdcf 100644
--- a/packages/gtk+/gtk+_2.2.4.bb
+++ b/packages/gtk+/gtk+_2.2.4.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "pango atk jpeg libpng xext"
+DEPENDS = "pango atk jpeg libpng libxext"
SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/2.2/gtk+-${PV}.tar.bz2 \
http://handhelds.org/packages/gtk-2.0/gtk+-2.2.4.diff.bz2;patch=1;pnum=1 \
diff --git a/packages/gtk+/gtk+_2.4.13.bb b/packages/gtk+/gtk+_2.4.13.bb
index 3ea34fe702..e32bb93a64 100644
--- a/packages/gtk+/gtk+_2.4.13.bb
+++ b/packages/gtk+/gtk+_2.4.13.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor"
PR = "r6"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.4/gtk+-${PV}.tar.bz2 \
diff --git a/packages/gtk+/gtk+_2.4.4.bb b/packages/gtk+/gtk+_2.4.4.bb
index dfd8b8922a..7e358a16f5 100644
--- a/packages/gtk+/gtk+_2.4.4.bb
+++ b/packages/gtk+/gtk+_2.4.4.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor"
PR = "r7"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.4/gtk+-${PV}.tar.bz2 \
diff --git a/packages/gtk+/gtk+_2.6.10.bb b/packages/gtk+/gtk+_2.6.10.bb
index 374dba0a31..e9e6db921b 100644
--- a/packages/gtk+/gtk+_2.6.10.bb
+++ b/packages/gtk+/gtk+_2.6.10.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor gtk-doc libgcrypt"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt"
PR = "r2"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \
diff --git a/packages/gtk+/gtk+_2.6.3.bb b/packages/gtk+/gtk+_2.6.3.bb
index 32e3fba5e1..38263836b9 100644
--- a/packages/gtk+/gtk+_2.6.3.bb
+++ b/packages/gtk+/gtk+_2.6.3.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor gtk-doc libgcrypt"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt"
PR = "r1"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \
diff --git a/packages/gtk+/gtk+_2.6.4-1.osso7.bb b/packages/gtk+/gtk+_2.6.4-1.osso7.bb
index fbebed2e45..e2065b3faa 100644
--- a/packages/gtk+/gtk+_2.6.4-1.osso7.bb
+++ b/packages/gtk+/gtk+_2.6.4-1.osso7.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor gtk-doc libgcrypt"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt"
PR = "r1"
S = "${WORKDIR}/gtk+2.0-2.6.4/upstream/tarballs/gtk+-2.6.4/"
diff --git a/packages/gtk+/gtk+_2.6.7.bb b/packages/gtk+/gtk+_2.6.7.bb
index 65f1402fa7..4f43fdfecf 100644
--- a/packages/gtk+/gtk+_2.6.7.bb
+++ b/packages/gtk+/gtk+_2.6.7.bb
@@ -4,7 +4,7 @@ set of widgets, GTK+ is suitable for projects ranging from small one-off project
HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor gtk-doc libgcrypt"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt"
PR = "r1"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.6/gtk+-${PV}.tar.bz2 \
diff --git a/packages/gtk+/gtk+_2.8.9.bb b/packages/gtk+/gtk+_2.8.9.bb
index 7ece5ca519..3cdb610538 100644
--- a/packages/gtk+/gtk+_2.8.9.bb
+++ b/packages/gtk+/gtk+_2.8.9.bb
@@ -4,8 +4,8 @@ set of widgets, GTK+ is suitable for projects ranging from small one-off project
HOMEPAGE = "http://www.gtk.org"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "glib-2.0 pango atk jpeg libpng xext libxcursor gtk-doc libgcrypt cairo"
-PR = "r0"
+DEPENDS = "glib-2.0 pango atk jpeg libpng libxext libxcursor gtk-doc libgcrypt cairo"
+PR = "r1"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.8/gtk+-${PV}.tar.bz2 \
file://no-xwc.patch;patch=1 \
@@ -29,7 +29,9 @@ FILES_${PN} = "${bindir}/gdk-pixbuf-query-loaders \
${bindir}/gtk-query-immodules-2.0 \
${libdir}/lib*.so.* \
${datadir}/themes ${sysconfdir} \
- ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so"
+ ${libdir}/gtk-2.0/${LIBV}/engines/libpixmap.so \
+ ${bindir}/gtk-update-icon-cache"
+
FILES_${PN}-dev += "${datadir}/gtk-2.0/include ${libdir}/gtk-2.0/include ${bindir}/gdk-pixbuf-csource"
RRECOMMENDS_${PN} = "glibc-gconv-iso8859-1"
diff --git a/packages/gtk-webcore/osb-browser_20060212.bb b/packages/gtk-webcore/osb-browser_20060212.bb
index d45319cb8a..de7c12d95c 100644
--- a/packages/gtk-webcore/osb-browser_20060212.bb
+++ b/packages/gtk-webcore/osb-browser_20060212.bb
@@ -16,6 +16,6 @@ SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gtk-webcore;module=osb-br
file://no-pedantic.patch;patch=1"
S = "${WORKDIR}/osb-browser"
-DEFAULT_PREFERENCE = "${@['-1', '1'][bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
+DEFAULT_PREFERENCE = "${@['-1', '1'][not bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1) or bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
inherit autotools
diff --git a/packages/gtk-webcore/osb-jscore_20060212.bb b/packages/gtk-webcore/osb-jscore_20060212.bb
index d8e3a9b8f8..c2f078b60c 100644
--- a/packages/gtk-webcore/osb-jscore_20060212.bb
+++ b/packages/gtk-webcore/osb-jscore_20060212.bb
@@ -13,7 +13,7 @@ SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gtk-webcore;module=JavaSc
file://gcc4-fno-threadsafe-statics-JavaScriptCore.patch;patch=1"
S = "${WORKDIR}/JavaScriptCore"
-DEFAULT_PREFERENCE = "${@['-1', '1'][bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
+DEFAULT_PREFERENCE = "${@['-1', '1'][not bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1) or bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
inherit autotools pkgconfig
diff --git a/packages/gtk-webcore/osb-nrcit_20060212.bb b/packages/gtk-webcore/osb-nrcit_20060212.bb
index 7530bb5719..2d4f69a86d 100644
--- a/packages/gtk-webcore/osb-nrcit_20060212.bb
+++ b/packages/gtk-webcore/osb-nrcit_20060212.bb
@@ -16,7 +16,7 @@ SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gtk-webcore;module=NRCit;
file://gcc4-fno-threadsafe-statics-NRCit.patch;patch=1"
S = "${WORKDIR}/NRCit"
-DEFAULT_PREFERENCE = "${@['-1', '1'][bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
+DEFAULT_PREFERENCE = "${@['-1', '1'][not bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1) or bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
inherit autotools pkgconfig
diff --git a/packages/gtk-webcore/osb-nrcore_20060212.bb b/packages/gtk-webcore/osb-nrcore_20060212.bb
index 4ab4275071..d3dbf0ca95 100644
--- a/packages/gtk-webcore/osb-nrcore_20060212.bb
+++ b/packages/gtk-webcore/osb-nrcore_20060212.bb
@@ -16,7 +16,7 @@ SRC_URI = "cvs://anonymous@cvs.sourceforge.net/cvsroot/gtk-webcore;module=NRCore
file://gcc4-fno-threadsafe-statics-NRCore.patch;patch=1"
S = "${WORKDIR}/NRCore"
-DEFAULT_PREFERENCE = "${@['-1', '1'][bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
+DEFAULT_PREFERENCE = "${@['-1', '1'][not bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1) or bb.data.getVar('PREFERRED_VERSION_gcc-cross', d, 1).split('.')[0] == '4']}"
LEAD_SONAME = "libnrcore.so"
diff --git a/packages/gtkmm/gtkmm_2.8.3.bb b/packages/gtkmm/gtkmm_2.8.3.bb
new file mode 100644
index 0000000000..678013aaed
--- /dev/null
+++ b/packages/gtkmm/gtkmm_2.8.3.bb
@@ -0,0 +1,23 @@
+LICENSE = "LGPL"
+DESCRIPTION = "C++ bindings for the GTK+ toolkit."
+HOMEPAGE = "http://www.gtkmm.org/"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "glibmm"
+PR = "r0"
+
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.8/gtkmm-${PV}.tar.bz2"
+
+inherit autotools pkgconfig flow-lossage
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+
+
+LIBV = "2.8.0"
+
+do_stage () {
+ autotools_stage_all
+
+ install -m 0644 gdk/gdkmmconfig.h ${STAGING_INCDIR}/gtkmm-2.8
+ install -m 0644 gtk/gtkmmconfig.h ${STAGING_INCDIR}/gtkmm-2.8
+}
diff --git a/packages/hal/hal_0.5.4.bb b/packages/hal/hal_0.5.4.bb
index 3db5753996..3d439b79d9 100644
--- a/packages/hal/hal_0.5.4.bb
+++ b/packages/hal/hal_0.5.4.bb
@@ -7,6 +7,7 @@ RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
HOMEPAGE = "http://freedesktop.org/Software/hal"
LICENSE = "GPL LGPL AFL"
+PR = "r1"
SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
S = "${WORKDIR}/hal-${PV}"
@@ -16,7 +17,8 @@ inherit autotools pkgconfig
EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
--with-expat=${STAGING_LIBDIR}/.. \
--with-dbus-sys=${sysconfdir}/dbus-1/system.d \
- --with-hotplug=${sysconfdir}/hotplug.d"
+ --with-hotplug=${sysconfdir}/hotplug.d \
+ --disable-docbook-docs"
do_stage() {
autotools_stage_includes
diff --git a/packages/hal/hal_0.5.7.bb b/packages/hal/hal_0.5.7.bb
new file mode 100644
index 0000000000..c333aebb4f
--- /dev/null
+++ b/packages/hal/hal_0.5.7.bb
@@ -0,0 +1,47 @@
+SECTION = "unknown"
+DESCRIPTION = "Hardware Abstraction Layer"
+MAINTAINER = "Koen Kooi <koen@handhelds.org>"
+DEPENDS = "dbus expat libusb"
+RDEPENDS += "hotplug"
+RDEPENDS_hal-device-manager = "python hal python-pygnome"
+RRECOMMENDS = "udev-utils"
+HOMEPAGE = "http://freedesktop.org/Software/hal"
+LICENSE = "GPL LGPL AFL"
+PR = "r0"
+
+SRC_URI = "http://freedesktop.org/~david/dist/hal-${PV}.tar.gz"
+S = "${WORKDIR}/hal-${PV}"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-hwdata=${datadir}/hwdata \
+ --with-expat=${STAGING_LIBDIR}/.. \
+ --with-dbus-sys=${sysconfdir}/dbus-1/system.d \
+ --with-hotplug=${sysconfdir}/hotplug.d \
+ --disable-docbook-docs"
+
+do_stage() {
+ autotools_stage_includes
+ install -d ${STAGING_LIBDIR}
+ install -m 755 libhal/.libs/libhal.so.1.0.0 ${STAGING_LIBDIR}/libhal.so
+ install -m 755 libhal-storage/.libs/libhal-storage.so.1.0.0 ${STAGING_LIBDIR}/libhal-storage.so
+}
+
+PACKAGES += "hal-device-manager"
+FILES_${PN} = "${sysconfdir} \
+ ${bindir}/lshal \
+ ${bindir}/hal-find-by-capability \
+ ${bindir}/hal-find-by-property \
+ ${bindir}/hal-device \
+ ${bindir}/hal-get-property \
+ ${bindir}/hal-set-property \
+ ${sbindir} \
+ ${libdir}/libhal.so* \
+ ${libdir}/libhal-storage.so* \
+ ${libexecdir} \
+ ${datadir}/hal/fdi \
+ ${datadir}/hal/scripts"
+FILES_hal-device-manager = " \
+ ${datadir}/hal/device-manager/ \
+ ${bindir}/hal-device-manager"
+
diff --git a/packages/icewm/icewm_1.2.20.bb b/packages/icewm/icewm_1.2.20.bb
index 3d6eba69f0..ff6434279b 100644
--- a/packages/icewm/icewm_1.2.20.bb
+++ b/packages/icewm/icewm_1.2.20.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "IceWM Window Manager"
LICENSE = "GPL"
-DEPENDS = "x11 xext xcomposite libxfixes xdamage libxrender xinerama xpm xrandr xft"
+DEPENDS = "libx11 libxext libxcomposite libxfixes libxdamage libxrender libxinerama libxpm xrandr xft"
PR = "r1"
SRC_URI = "${SOURCEFORGE_MIRROR}/icewm/icewm-${PV}.tar.gz \
diff --git a/packages/ion/ion3_0.0+ds20041104.bb b/packages/ion/ion3_0.0+ds20041104.bb
index 81af3169fd..1c80cdf2fa 100644
--- a/packages/ion/ion3_0.0+ds20041104.bb
+++ b/packages/ion/ion3_0.0+ds20041104.bb
@@ -1,7 +1,7 @@
BROKEN = "1"
# is unfetchable now - upstream updated to 20050728
-DEPENDS += "lua-native lua x11 xext"
+DEPENDS += "lua-native lua libx11 libxext"
DESCRIPTION = "Ion is a tiling tabbed window manager designed with keyboard \
users in mind."
HOMEPAGE = "http://modeemi.fi/~tuomov/ion/"
diff --git a/packages/ipaq-sleep/ipaq-sleep_0.7-9.bb b/packages/ipaq-sleep/ipaq-sleep_0.7-9.bb
index 6895fee058..bdf0295c98 100644
--- a/packages/ipaq-sleep/ipaq-sleep_0.7-9.bb
+++ b/packages/ipaq-sleep/ipaq-sleep_0.7-9.bb
@@ -4,7 +4,7 @@ PR = "r3"
inherit gpe pkgconfig
-DEPENDS = "apmd virtual/xserver xextensions x11 xau xscrnsaverh libxss"
+DEPENDS = "apmd virtual/xserver xextensions libx11 libxau xscrnsaverh libxss"
SECTION = "x11/base"
RDEPENDS = "apm"
diff --git a/packages/ipaq-sleep/ipaq-sleep_0.8.bb b/packages/ipaq-sleep/ipaq-sleep_0.8.bb
index 7bb4c7209f..a63ec83a7c 100644
--- a/packages/ipaq-sleep/ipaq-sleep_0.8.bb
+++ b/packages/ipaq-sleep/ipaq-sleep_0.8.bb
@@ -2,7 +2,7 @@
LICENSE = "GPL"
inherit gpe pkgconfig
-DEPENDS = "apmd virtual/xserver xextensions x11 xau xscrnsaverh libxss"
+DEPENDS = "apmd virtual/xserver xextensions libx11 libxau xscrnsaverh libxss"
SECTION = "x11/base"
RDEPENDS = "apm"
diff --git a/packages/ipaq-sleep/ipaq-sleep_0.9.bb b/packages/ipaq-sleep/ipaq-sleep_0.9.bb
index 7bb4c7209f..a63ec83a7c 100644
--- a/packages/ipaq-sleep/ipaq-sleep_0.9.bb
+++ b/packages/ipaq-sleep/ipaq-sleep_0.9.bb
@@ -2,7 +2,7 @@
LICENSE = "GPL"
inherit gpe pkgconfig
-DEPENDS = "apmd virtual/xserver xextensions x11 xau xscrnsaverh libxss"
+DEPENDS = "apmd virtual/xserver xextensions libx11 libxau xscrnsaverh libxss"
SECTION = "x11/base"
RDEPENDS = "apm"
diff --git a/packages/ipkg/ipkg_0.99.159.bb b/packages/ipkg/ipkg_0.99.159.bb
new file mode 100644
index 0000000000..1898c6656e
--- /dev/null
+++ b/packages/ipkg/ipkg_0.99.159.bb
@@ -0,0 +1 @@
+include ipkg.inc
diff --git a/packages/ixp425-eth/ixp400-eth_1.5.bb b/packages/ixp425-eth/ixp400-eth_1.5.bb
index 986d5ddf37..99851a8c12 100644
--- a/packages/ixp425-eth/ixp400-eth_1.5.bb
+++ b/packages/ixp425-eth/ixp400-eth_1.5.bb
@@ -4,7 +4,7 @@
MAINTAINER = "NSLU2 Linux <nslu2-linux@yahoogroups.com>"
HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm"
LICENSE = "GPL"
-PR = "r8"
+PR = "r9"
DEPENDS = "ixp4xx-csr"
RDEPENDS = "ixp4xx-csr"
diff --git a/packages/ixp4xx/ixp-osal_2.1.bb b/packages/ixp4xx/ixp-osal_2.1.bb
index 7a27e2848e..717c217dc5 100644
--- a/packages/ixp4xx/ixp-osal_2.1.bb
+++ b/packages/ixp4xx/ixp-osal_2.1.bb
@@ -31,7 +31,7 @@ SRC_URI += "file://le.patch;patch=1"
SRC_URI += "file://assert.patch;patch=1"
S = "${WORKDIR}/ixp_osal"
-PR = "r4"
+PR = "r5"
COMPATIBLE_HOST = "^arm.*-linux.*"
diff --git a/packages/ixp4xx/ixp4xx-csr_2.1.bb b/packages/ixp4xx/ixp4xx-csr_2.1.bb
index a91cc25cc1..53cd2ba8fb 100644
--- a/packages/ixp4xx/ixp4xx-csr_2.1.bb
+++ b/packages/ixp4xx/ixp4xx-csr_2.1.bb
@@ -38,7 +38,7 @@ SRC_URI += "file://oe-makefile.patch;patch=1"
DEPENDS = "ixp-osal"
S = "${WORKDIR}/ixp400_xscale_sw"
-PR = "r8"
+PR = "r9"
COMPATIBLE_HOST = "^arm.*-linux.*"
diff --git a/packages/kaffe/kaffe-gtk_1.1.5.bb b/packages/kaffe/kaffe-gtk_1.1.5.bb
index d4c2be9f5c..2bcec9a929 100644
--- a/packages/kaffe/kaffe-gtk_1.1.5.bb
+++ b/packages/kaffe/kaffe-gtk_1.1.5.bb
@@ -5,6 +5,6 @@ S = "${WORKDIR}/kaffe-${PV}"
include kaffe.inc
-DEPENDS += "glib-2.0 gmp gtk+ libart-lgpl pango zlib xtst kaffeh-native"
+DEPENDS += "glib-2.0 gmp gtk+ libart-lgpl pango zlib libxtst kaffeh-native"
EXTRA_OECONF += ""
diff --git a/packages/kaffe/kaffe-gtk_cvs.bb b/packages/kaffe/kaffe-gtk_cvs.bb
index 07d26b75ce..c8ff718396 100644
--- a/packages/kaffe/kaffe-gtk_cvs.bb
+++ b/packages/kaffe/kaffe-gtk_cvs.bb
@@ -8,6 +8,6 @@ S = "${WORKDIR}/kaffe"
include kaffe.inc
-DEPENDS += "glib-2.0 gmp gtk+ libart-lgpl pango zlib xtst kaffeh-native"
+DEPENDS += "glib-2.0 gmp gtk+ libart-lgpl pango zlib libxtst kaffeh-native"
EXTRA_OECONF += ""
diff --git a/packages/keylaunch/keylaunch_2.0.7.bb b/packages/keylaunch/keylaunch_2.0.7.bb
index 5f05f140c3..37b1dbcf46 100644
--- a/packages/keylaunch/keylaunch_2.0.7.bb
+++ b/packages/keylaunch/keylaunch_2.0.7.bb
@@ -1,6 +1,6 @@
inherit gpe
-DEPENDS = "virtual/xserver xtst xau xpm"
+DEPENDS = "virtual/xserver libxtst libxau libxpm"
SECTION = "gpe"
LICENSE = "GPL"
DESCRIPTION = "A small utility for binding commands to a hot key.\
diff --git a/packages/libfakekey/libfakekey_svn.bb b/packages/libfakekey/libfakekey_svn.bb
index 7cdd557463..eec4d6506d 100644
--- a/packages/libfakekey/libfakekey_svn.bb
+++ b/packages/libfakekey/libfakekey_svn.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Matchbox keyboard"
LICENSE = "GPL"
-DEPENDS = "xtst"
+DEPENDS = "libxtst"
SECTION = "x11/wm"
PR="r1"
PV = "0.0+svn${SRCDATE}"
diff --git a/packages/libgcrypt/libgcrypt_1.2.2.bb b/packages/libgcrypt/libgcrypt_1.2.2.bb
new file mode 100644
index 0000000000..e797ee75c7
--- /dev/null
+++ b/packages/libgcrypt/libgcrypt_1.2.2.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "A general purpose cryptographic library based on the code from GnuPG"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL LGPL FDL"
+DEPENDS = "libgpg-error"
+
+# move libgcrypt-config into -dev package
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}"
+
+SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-${PV}.tar.gz"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--without-pth --disable-asm --with-capabilities"
+
+do_stage() {
+ oe_libinstall -so -C src libgcrypt ${STAGING_LIBDIR}
+ oe_libinstall -so -C src libgcrypt-pthread ${STAGING_LIBDIR}
+ install -m 0755 src/libgcrypt-config ${STAGING_BINDIR}/
+
+ install -d ${STAGING_INCDIR}/
+ for X in gcrypt.h gcrypt-module.h
+ do
+ install -m 0644 src/${X} ${STAGING_INCDIR}/${X}
+ done
+
+}
diff --git a/packages/libgpepimc/libgpepimc_0.6.bb b/packages/libgpepimc/libgpepimc_0.6.bb
new file mode 100644
index 0000000000..9fb9d9ab2f
--- /dev/null
+++ b/packages/libgpepimc/libgpepimc_0.6.bb
@@ -0,0 +1 @@
+include libgpepimc.inc
diff --git a/packages/libgpevtype/libgpevtype_0.16.bb b/packages/libgpevtype/libgpevtype_0.16.bb
new file mode 100644
index 0000000000..a2639f448c
--- /dev/null
+++ b/packages/libgpevtype/libgpevtype_0.16.bb
@@ -0,0 +1,25 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Data interchange library for GPE"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "libmimedir libeventdb"
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>
+PR = "r0"
+
+inherit pkgconfig gpe autotools
+
+SRC_URI = "${GPE_MIRROR}/${PN}-${PV}.tar.bz2"
+
+headers = "tag-db.h vcard.h vevent.h vtodo.h"
+
+
+do_stage () {
+ oe_libinstall -so libgpevtype ${STAGING_LIBDIR}
+
+ mkdir -p ${STAGING_INCDIR}/gpe
+ for h in ${headers}; do
+ install -m 0644 ${S}/gpe/$h ${STAGING_INCDIR}/gpe/${h}
+ done
+}
+
+
diff --git a/packages/libgpewidget/libgpewidget_0.110.bb b/packages/libgpewidget/libgpewidget_0.110.bb
new file mode 100644
index 0000000000..780d1e920b
--- /dev/null
+++ b/packages/libgpewidget/libgpewidget_0.110.bb
@@ -0,0 +1,26 @@
+LICENSE = "LGPL"
+DESCRIPTION = "libgpewidget contains a collection of widgets and other common code shared by many GPE applications."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ cairo libxrender gtk-doc"
+MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>"
+PR = "r0"
+
+GPE_TARBALL_SUFFIX = "bz2"
+inherit gpe pkgconfig autotools
+
+SRC_URI += "file://pkgconfig.patch;patch=1;pnum=0"
+
+PACKAGES =+ "libgpewidget-bin"
+FILES_libgpewidget-bin = "${bindir}"
+
+EXTRA_OECONF = "--enable-cairo"
+
+PARALLEL_MAKE = ""
+
+LDFLAGS += " -L${STAGING_LIBDIR}"
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/libmatchbox/files/svn-autofu-xsettings.patch b/packages/libmatchbox/files/svn-autofu-xsettings.patch
new file mode 100644
index 0000000000..a5df4301ff
--- /dev/null
+++ b/packages/libmatchbox/files/svn-autofu-xsettings.patch
@@ -0,0 +1,132 @@
+diff -urpN libmatchbox-1.7~orig/configure.ac libmatchbox-1.7/configure.ac
+--- libmatchbox-1.7~orig/configure.ac 2005-04-08 08:53:20.000000000 -0500
++++ libmatchbox-1.7/configure.ac 2006-02-23 00:08:20.000000000 -0600
+@@ -87,9 +87,13 @@ if test $have_libx11pc = yes; then
+ fi
+ # XXX : xau is missing from x11.pc - workaround is too add here
+ PKG_CHECK_MODULES(XLIBS, x11 xext $xft_pkg)
++ XLIBS_REQUIRED="x11 xext"
+ else
+
+ AC_PATH_XTRA
++if test x"$no_x" = x"yes"; then
++ AC_MSG_ERROR([*** Required X11 Headers and libraries not found.***])
++fi
+
+ XFT_LIBS=
+ XFT_CFLAGS=
+@@ -125,8 +129,12 @@ fi
+ XLIBS_CFLAGS="$XLIBS_CLAGS $XFT_CFLAGS"
+ XLIBS_LIBS="$X_LIBS $XFT_LIBS -lX11 -lXext"
+
++MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XLIBS_LIBS"
++
+ fi
+
++# do this here for freetype include
++MB_EXTRA_CFLAGS="$MB_EXTRA_CFLAGS $XLIBS_CFLAGS"
+
+ dnl ------ Check for Pango ---------------------------------------------------
+
+@@ -135,6 +143,7 @@ if test x$enable_pango != xno; then
+ if test x$have_pango=xyes; then
+ AC_DEFINE(USE_PANGO, [1], [Use Pango])
+ SUPPORTS_PANGO=1
++ PANGO_REQUIRED="pango pangoxft"
+ else
+ AC_MSG_WARN([*** Cannot find pango, disabling support])
+ enable_pango=no
+@@ -152,6 +161,7 @@ if test x$enable_png != xno; then
+ PNG_CFLAGS=`$PKG_CONFIG --cflags libpng12`
+ AC_DEFINE(USE_PNG, [1], [Use Png])
+ SUPPORTS_PNG=1
++ PNG_REQUIRED="libpng12"
+ else
+ AC_MSG_RESULT(no)
+ # AC_CHECK_HEADERS(png.h, [ have_png_h="yes" ], [ have_png_h="no" ] )
+@@ -161,6 +171,7 @@ if test x$enable_png != xno; then
+ AC_DEFINE(USE_PNG, [1], [Use Png])
+ SUPPORTS_PNG=1
+ PNG_LIBS="-lpng -lz"
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XLIBS_LIBS $PNG_LIBS"
+ else
+ AC_MSG_WARN([*** Cannot find PNG, disabling support])
+ enable_png=no
+@@ -179,6 +190,7 @@ if test x$enable_jpeg != xno; then
+ AC_DEFINE(USE_JPG, [1], [Use JPEG])
+ SUPPORTS_JPEG=1
+ JPEG_LIBS="-ljpeg"
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS -ljpeg"
+ else
+ AC_MSG_WARN([*** Cannot find libjpeg, disabling support])
+ enable_jpeg=no
+@@ -231,6 +243,9 @@ if test x$enable_xsettings != xno; then
+ CPPFLAGS="$saved_CPPFLAGS"
+ LIBS="$saved_LIBS"
+
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XSET_LIBS"
++ MB_EXTRA_CFLAGS="$MB_EXTRA_CFLAGS $XSET_CFLAGS"
++
+ AC_DEFINE(USE_XSETTINGS, [1], [Use XSettings Client])
+
+ AC_MSG_RESULT([yes])
+@@ -319,6 +334,12 @@ AC_SUBST(GCC_WARNINGS)
+ AC_SUBST(XSET_LIBS)
+ AC_SUBST(XSET_CFLAGS)
+
++AC_SUBST(MB_EXTRA_LIBS)
++AC_SUBST(MB_EXTRA_CFLAGS)
++AC_SUBST(XLIBS_REQUIRED)
++AC_SUBST(PANGO_REQUIRED)
++AC_SUBST(PNG_REQUIRED)
++
+ dnl ------ Below used for mbconfig.h ----------------------------------------
+
+ AC_SUBST(SUPPORTS_PNG)
+diff -urpN libmatchbox-1.7~orig/libmb/Makefile.am libmatchbox-1.7/libmb/Makefile.am
+--- libmatchbox-1.7~orig/libmb/Makefile.am 2005-04-08 08:53:11.000000000 -0500
++++ libmatchbox-1.7/libmb/Makefile.am 2006-02-23 00:01:54.000000000 -0600
+@@ -18,11 +18,11 @@ source_c = mbmenu.c \
+
+ DATADIR=$(datadir)
+
+-AM_CFLAGS = @GCC_WARNINGS@ @XLIBS_CFLAGS@ @PANGO_CFLAGS@ @PNG_CFLAGS@ -DDATADIR=\"$(datadir)\"
++AM_CFLAGS = @GCC_WARNINGS@ @XLIBS_CFLAGS@ @PANGO_CFLAGS@ @PNG_CFLAGS@ @XSET_LIBS@ -DDATADIR=\"$(datadir)\"
+
+ lib_LTLIBRARIES = libmb.la
+ libmb_la_SOURCES = $(source_c) $(source_h)
+-libmb_la_LIBADD = @XLIBS_LIBS@ @PANGO_LIBS@ @JPEG_LIBS@ @PNG_LIBS@
++libmb_la_LIBADD = @XLIBS_LIBS@ @PANGO_LIBS@ @JPEG_LIBS@ @PNG_LIBS@ @XSET_CFLAGS@
+
+ # http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91
+ # current : revision : age
+diff -urpN libmatchbox-1.7~orig/libmb/mbtray.c libmatchbox-1.7/libmb/mbtray.c
+--- libmatchbox-1.7~orig/libmb/mbtray.c 2006-02-23 00:01:07.000000000 -0600
++++ libmatchbox-1.7/libmb/mbtray.c 2006-02-23 00:09:45.000000000 -0600
+@@ -26,7 +26,13 @@
+
+ */
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
++#endif
+
+ #include "mbtray.h"
+
+diff -urpN libmatchbox-1.7~orig/libmb.pc.in libmatchbox-1.7/libmb.pc.in
+--- libmatchbox-1.7~orig/libmb.pc.in 2005-03-20 11:43:26.000000000 -0600
++++ libmatchbox-1.7/libmb.pc.in 2006-02-23 00:11:18.000000000 -0600
+@@ -6,5 +6,7 @@ includedir=@includedir@
+ Name: libmb
+ Description: Utility Library used by Matchbox utilities.
+ Version: @VERSION@
+-Libs: -L${libdir} -lmb @XLIBS_LIBS@ @PANGO_LIBS@ @JPEG_LIBS@ @PNG_LIBS@ @XSET_LIBS@
+-Cflags: -I${includedir} @XLIBS_CFLAGS@ @PANGO_CFLAGS@ @PNG_CFLAGS@ @XSET_CFLAGS@
++
++Requires: @XLIBS_REQUIRED@ @PANGO_REQUIRED@ @PNG_REQUIRED@
++Libs: -L${libdir} -lmb @MB_EXTRA_LIBS@
++Cflags: -I${includedir} @MB_EXTRA_CFLAGS@
diff --git a/packages/libmatchbox/files/svn-code-misc-xsettings.patch b/packages/libmatchbox/files/svn-code-misc-xsettings.patch
new file mode 100644
index 0000000000..52b1507505
--- /dev/null
+++ b/packages/libmatchbox/files/svn-code-misc-xsettings.patch
@@ -0,0 +1,101 @@
+diff -uprN libmatchbox-1.7~orig/libmb/mbexp.c libmatchbox-1.7/libmb/mbexp.c
+--- libmatchbox-1.7~orig/libmb/mbexp.c 2006-02-23 00:33:19.000000000 -0600
++++ libmatchbox-1.7/libmb/mbexp.c 2006-02-23 00:40:06.000000000 -0600
+@@ -406,6 +406,10 @@ mb_font_new(Display *dpy,
+ #endif
+
+ font = malloc(sizeof(MBFont));
++
++ if (font == NULL)
++ return NULL;
++
+ memset(font, 0, sizeof(MBFont));
+
+ if (family != NULL)
+@@ -425,9 +429,12 @@ mb_font_new(Display *dpy,
+ font->pgo_fontmap = pango_xft_get_font_map (font->dpy, DefaultScreen(dpy));
+ font->fontdes = pango_font_description_new ();
+
+- /* -- Needed ?
+- pango_context_set_language (w->pgo, pango_language_from_string ("ar_AE"));
+- */
++ /* If Pango is mis-setup the above will fail */
++ if (font->pgo_context == NULL || font->pgo_fontmap == NULL || font->fontdes == NULL)
++ {
++ free(font);
++ return NULL;
++ }
+
+ #elif defined (USE_XFT)
+
+@@ -581,8 +588,11 @@ MBFont*
+ mb_font_new_from_string(Display *dpy, char *spec)
+ {
+ MBFont *font = mb_font_new(dpy, NULL);
+- mb_font_set_from_string(font, spec);
+- return font;
++
++ if (font)
++ return mb_font_set_from_string(font, spec);
++
++ return NULL;
+ }
+
+ MBFont*
+@@ -1091,7 +1101,13 @@ mb_font_render_simple (MBFont *
+ if (!len) { free(str); return 0; }
+
+ if ((opts & MB_FONT_RENDER_OPTS_CLIP_TRAIL) && len > 3)
++ {
++ /* Avoid having a space before the elipsis */
++ while (len-1 >= 0 && str[len-1] == ' ')
++ len--;
++
+ want_dots = True;
++ }
+ }
+ else
+ {
+diff -uprN libmatchbox-1.7~orig/libmb/mbmenu.c libmatchbox-1.7/libmb/mbmenu.c
+--- libmatchbox-1.7~orig/libmb/mbmenu.c 2006-02-23 00:33:19.000000000 -0600
++++ libmatchbox-1.7/libmb/mbmenu.c 2006-02-23 00:42:23.000000000 -0600
+@@ -19,6 +19,10 @@
+
+ #define _GNU_SOURCE
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include "mbmenu.h"
+
+ #define MBMAX(x,y) ((x>y)?(x):(y))
+@@ -664,7 +668,7 @@ mb_menu_check_scroll_button(MBMenu *mb,M
+ return WANT_SCROLL_DOWN;
+ }
+
+- /*
++#if 0
+ for(tmpi = m->too_big_start_item;
+ tmpi != NULL;
+ tmpi = tmpi->next_item)
+@@ -679,7 +683,7 @@ mb_menu_check_scroll_button(MBMenu *mb,M
+ MENUDBG("%s() retruning want scroll up\n", __func__);
+ return WANT_SCROLL_UP;
+ }
+- */
++#endif /* #if 0 */
+
+ if (m->too_big_end_item
+ && y_pos > (m->too_big_end_item->y+m->too_big_end_item->h))
+diff -uprN libmatchbox-1.7~orig/libmb/mbpixbuf.c libmatchbox-1.7/libmb/mbpixbuf.c
+--- libmatchbox-1.7~orig/libmb/mbpixbuf.c 2006-02-23 00:33:19.000000000 -0600
++++ libmatchbox-1.7/libmb/mbpixbuf.c 2006-02-23 00:43:02.000000000 -0600
+@@ -907,6 +907,7 @@ mb_pixbuf_new_extended(Display *dpy,
+ fprintf(stderr, "mbpixbuf: unable to use XShm. DISPLAY remote?\n");
+ pb->have_shm = False;
+ }
++ else XShmDetach(pb->dpy, &shminfo);
+
+ shmdt(shminfo.shmaddr);
+ shmctl(shminfo.shmid, IPC_RMID, 0);
diff --git a/packages/libmatchbox/files/svn-explicit-types.patch b/packages/libmatchbox/files/svn-explicit-types.patch
new file mode 100644
index 0000000000..3ec1295a6b
--- /dev/null
+++ b/packages/libmatchbox/files/svn-explicit-types.patch
@@ -0,0 +1,363 @@
+diff -bur libmatchbox-1.7~orig/libmb/hash.c libmatchbox-1.7/libmb/hash.c
+--- libmatchbox-1.7~orig/libmb/hash.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/hash.c 2006-02-19 14:40:43.000000000 -0600
+@@ -68,7 +68,7 @@
+ } else {
+ free((void *) np->value);
+ }
+- if ((np->value = strdup(val)) == NULL)
++ if ((np->value = (unsigned char*)strdup(val)) == NULL)
+ return NULL;
+ return np;
+ }
+diff -bur libmatchbox-1.7~orig/libmb/mbdotdesktop.c libmatchbox-1.7/libmb/mbdotdesktop.c
+--- libmatchbox-1.7~orig/libmb/mbdotdesktop.c 2005-03-28 16:56:35.000000000 -0600
++++ libmatchbox-1.7/libmb/mbdotdesktop.c 2006-02-19 14:44:05.000000000 -0600
+@@ -200,7 +200,7 @@
+ /* Source iterator, destination iterator */
+ char *s, *d;
+
+- s = source = mb_dotdesktop_get (dd, "Exec");
++ s = source = (char*)mb_dotdesktop_get (dd, "Exec");
+ if (source == NULL)
+ return NULL;
+
+@@ -348,7 +348,7 @@
+ {
+ theme_name_cur = NULL;
+ strncpy(theme_name_cur,
+- mb_dotdesktop_get(dd, "Inherits"), 512);
++ (char*)mb_dotdesktop_get(dd, "Inherits"), 512);
+ i = 2;
+ }
+ mb_dotdesktop_free(dd);
+@@ -450,13 +450,13 @@
+ }
+ memset(entry_cur, 0, sizeof(MBDotDesktopFolderEntry));
+
+- entry_cur->name = strdup(mb_dotdesktop_get(dd, "Name"));
+- entry_cur->match = strdup(mb_dotdesktop_get(dd, "Match"));
++ entry_cur->name = (unsigned char*)strdup((char*)mb_dotdesktop_get(dd, "Name"));
++ entry_cur->match = (unsigned char*)strdup((char*)mb_dotdesktop_get(dd, "Match"));
+
+ if (mb_dotdesktop_get(dd, "Icon"))
+ {
+ entry_cur->icon
+- = strdup(mb_dotdesktop_get(dd, "Icon"));
++ = (unsigned char*)strdup((char*)mb_dotdesktop_get(dd, "Icon"));
+ }
+
+ folders->n_entries++;
+diff -bur libmatchbox-1.7~orig/libmb/mbexp.c libmatchbox-1.7/libmb/mbexp.c
+--- libmatchbox-1.7~orig/libmb/mbexp.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbexp.c 2006-02-19 14:50:42.000000000 -0600
+@@ -894,7 +894,7 @@
+ int encoding,
+ int opts)
+ {
+- int len = strlen(txt);
++ int len = strlen((char*)txt);
+
+ /* we cant clip single char string */
+ if (len < 2) return 0;
+@@ -907,7 +907,7 @@
+ memset(str, 0, len+5);
+
+ /* len += 2; */
+- strcpy(str, txt);
++ strcpy((char*)str, (char*)txt);
+
+ do {
+ /* go back a glyth */
+@@ -1066,12 +1066,12 @@
+ if (!_mb_font_is_font_object_fresh (font))
+ _mb_font_load(font);
+
+- orig_len = len = strlen(text);
++ orig_len = len = strlen((char*)text);
+
+ str = malloc(len+3);
+ memset(str, 0, len+3);
+
+- strcpy(str, text);
++ strcpy((char*)str, (char*)text);
+
+ render_w = mb_font_get_txt_width(font, str, len, encoding);
+
+@@ -1147,12 +1147,12 @@
+ if (!_mb_font_is_font_object_fresh (font))
+ _mb_font_load(font);
+
+- orig_len = len = strlen(text);
++ orig_len = len = strlen((char*)text);
+
+ str = malloc(len+3);
+ memset(str, 0, len+3);
+
+- strcpy(str, text);
++ strcpy((char*)str, (char*)text);
+
+ render_w = mb_font_get_txt_width(font, str, len, encoding);
+
+@@ -1257,7 +1257,7 @@
+ {
+ if (layout->txt) free(layout->txt);
+
+- layout->txt = strdup(text);
++ layout->txt = (unsigned char*)strdup((char*)text);
+ layout->txt_encoding = encoding;
+ }
+
+@@ -1304,7 +1304,7 @@
+ MBFontRenderOpts opts,
+ Bool do_render)
+ {
+- unsigned char *orig_p, *p = strdup(layout->txt);
++ unsigned char *orig_p, *p = (unsigned char*)strdup((char*)layout->txt);
+ unsigned char *q = p;
+ unsigned char *backtrack = NULL;
+ int v_offset = 0;
+@@ -1326,7 +1326,7 @@
+
+ /* XXX q should be current_line_start */
+
+- cur_width = mb_font_get_txt_width(layout->font, q, strlen(q),
++ cur_width = mb_font_get_txt_width(layout->font, q, strlen((char*)q),
+ layout->txt_encoding) ;
+
+ if (cur_width > layout->width )
+@@ -1405,7 +1405,7 @@
+
+ if (layout->_have_autocalc_size) /* Easy case */
+ {
+- unsigned char *str = strdup(layout->txt), *start = NULL, *orig = NULL;
++ char *str = strdup((char*)layout->txt), *start = NULL, *orig = NULL;
+
+ orig = str;
+
+@@ -1426,7 +1426,7 @@
+ x,
+ y,
+ layout->width,
+- start,
++ (unsigned char*)start,
+ layout->txt_encoding,
+ 0 );
+
+diff -bur libmatchbox-1.7~orig/libmb/mbexp.h libmatchbox-1.7/libmb/mbexp.h
+--- libmatchbox-1.7~orig/libmb/mbexp.h 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbexp.h 2006-02-19 14:51:20.000000000 -0600
+@@ -92,7 +92,7 @@
+ typedef struct MBFont
+ {
+ Display *dpy;
+- unsigned char *family;
++ char *family;
+ int weight;
+ int slant;
+ int pt_size;
+diff -bur libmatchbox-1.7~orig/libmb/mbmenu.c libmatchbox-1.7/libmb/mbmenu.c
+--- libmatchbox-1.7~orig/libmb/mbmenu.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbmenu.c 2006-02-19 14:53:33.000000000 -0600
+@@ -726,25 +726,25 @@
+ if (mb_dotdesktop_get(theme, "MenuBgColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_BG_COL,
+- mb_dotdesktop_get(theme, "MenuBgColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuBgColor"));
+ }
+
+ if (mb_dotdesktop_get(theme, "MenuFont"))
+ {
+ mb_menu_set_font (mb,
+- mb_dotdesktop_get(theme, "MenuFont"));
++ (char*)mb_dotdesktop_get(theme, "MenuFont"));
+ }
+
+ if (mb_dotdesktop_get(theme, "MenuFgColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_FG_COL,
+- mb_dotdesktop_get(theme, "MenuFgColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuFgColor"));
+ }
+
+ if (mb_dotdesktop_get(theme, "MenuHlColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_HL_COL,
+- mb_dotdesktop_get(theme, "MenuHlColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuHlColor"));
+ mb->have_highlight_col = True;
+ }
+ else mb->have_highlight_col = False;
+@@ -752,7 +752,7 @@
+ if (mb_dotdesktop_get(theme, "MenuBdColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_BD_COL,
+- mb_dotdesktop_get(theme, "MenuBdColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuBdColor"));
+ }
+
+ /* xxx currently broke xxx
+diff -bur libmatchbox-1.7~orig/libmb/mbpixbuf.c libmatchbox-1.7/libmb/mbpixbuf.c
+--- libmatchbox-1.7~orig/libmb/mbpixbuf.c 2005-03-30 06:21:26.000000000 -0600
++++ libmatchbox-1.7/libmb/mbpixbuf.c 2006-02-19 14:55:39.000000000 -0600
+@@ -418,7 +418,7 @@
+ col[0] = 0;
+ s[0] = 0;
+ len = strlen(line);
+- strncpy(cmap[j].str, line, cpp);
++ strncpy((char*)cmap[j].str, line, cpp);
+ cmap[j].str[cpp] = 0;
+ cmap[j].r = -1;
+ cmap[j].transp = 0;
+@@ -537,7 +537,7 @@
+ i--;
+ for (j = 0; j < ncolors; j++)
+ {
+- if (!strcmp(col, cmap[j].str))
++ if (!strcmp(col, (char*)cmap[j].str))
+ {
+ if (transp && cmap[j].transp)
+ {
+@@ -1086,7 +1086,8 @@
+ int num_of_cols = 1 << pb->depth;
+
+ Window chld;
+- unsigned int rx, rw, rh, rb, rdepth;
++ int rx;
++ unsigned int rw, rh, rb, rdepth;
+
+ XShmSegmentInfo shminfo;
+
+diff -bur libmatchbox-1.7~orig/libmb/mbtray.c libmatchbox-1.7/libmb/mbtray.c
+--- libmatchbox-1.7~orig/libmb/mbtray.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbtray.c 2006-02-19 14:59:20.000000000 -0600
+@@ -204,7 +204,7 @@
+ {
+ XEvent xevent;
+ Atom timestamp_atom = XInternAtom(dpy, "_MB_DOCK_TIMESTAMP", False);
+- char c = 'a';
++ unsigned char c = 'a';
+
+ XChangeProperty (dpy, RootWindow(dpy, DefaultScreen(dpy)),
+ timestamp_atom, timestamp_atom,
+@@ -615,7 +615,7 @@
+
+ mb->tray_id = 0;
+
+- mb->app_name = app_name ? strdup(app_name) : strdup("unnamed");
++ mb->app_name = (unsigned char*)(app_name ? strdup((char*)app_name) : strdup("unnamed"));
+
+ mb->have_cached_bg = False;
+ mb->cached_bg = NULL;
+@@ -638,7 +638,7 @@
+ unsigned char *name)
+ {
+ if (mb->app_name) free(mb->app_name);
+- mb->app_name = strdup(name);
++ mb->app_name = (unsigned char*)strdup((char*)name);
+ }
+
+ void
+@@ -649,7 +649,7 @@
+
+ if (mb->context_info) free(mb->context_info);
+
+- mb->context_info = strdup(info);
++ mb->context_info = (unsigned char*)strdup((char*)info);
+
+ if (mb->win) _set_win_context_hint(mb);
+
+@@ -1055,7 +1055,7 @@
+ mb->atoms[ATOM_NET_WM_NAME],
+ mb->atoms[ATOM_UTF8_STRING],
+ 8,
+- PropModeReplace, mb->app_name, strlen(mb->app_name));
++ PropModeReplace, mb->app_name, strlen((char*)mb->app_name));
+ }
+
+ static void
+@@ -1068,7 +1068,7 @@
+ mb->atoms[ATOM_UTF8_STRING],
+ 8,
+ PropModeReplace,
+- mb->context_info, strlen(mb->context_info));
++ mb->context_info, strlen((char*)mb->context_info));
+ }
+ }
+
+@@ -1170,7 +1170,7 @@
+
+ TRAYDBG("%s() set w: %i, h: %i\n", __func__, mb->w, mb->h);
+
+- XSetStandardProperties(mb->dpy, mb->win, mb->app_name,
++ XSetStandardProperties(mb->dpy, mb->win, (char*)mb->app_name,
+ NULL, 0, NULL, 0, &size_hints);
+
+ _set_win_utf8_name(mb);
+@@ -1186,7 +1186,7 @@
+ mb_tray_app_tray_send_message(MBTrayApp *mb, unsigned char* msg, int timeout)
+ {
+ unsigned char buf[20];
+- int msg_len = strlen(msg);
++ int msg_len = strlen((char*)msg);
+ int id = 12345; /* TODO id should unique */
+ int bytes_sent = 0;
+
+diff -bur libmatchbox-1.7~orig/libmb/mbutil.c libmatchbox-1.7/libmb/mbutil.c
+--- libmatchbox-1.7~orig/libmb/mbutil.c 2005-03-28 17:08:38.000000000 -0600
++++ libmatchbox-1.7/libmb/mbutil.c 2006-02-19 15:02:19.000000000 -0600
+@@ -111,9 +111,8 @@
+
+ Atom type;
+ int format;
+- long bytes_after;
+ unsigned char *data = NULL;
+- long n_items;
++ unsigned long n_items, bytes_after;
+ int result;
+
+ unsigned char *p, *key = NULL, *value = NULL;
+@@ -153,9 +152,9 @@
+
+ *p = '\0';
+
+- if (!strcmp(key, bin_name))
++ if (!strcmp((char*)key, (char*)bin_name))
+ {
+- win_found = atoi(value); /* XXX should check window ID
++ win_found = atoi((char*)value); /* XXX should check window ID
+ actually exists */
+ XFree (data);
+ return ( (win_found > 0) ? win_found : None );
+@@ -175,9 +174,8 @@
+
+ Atom type;
+ int format;
+- long bytes_after;
+ unsigned char *data = NULL;
+- long n_items;
++ unsigned long n_items, bytes_after;
+ int result;
+
+ result = XGetWindowProperty (dpy, RootWindow(dpy, DefaultScreen(dpy)),
+@@ -195,7 +193,7 @@
+
+
+
+- if (strstr(data, bin_name) != NULL)
++ if (strstr((char*)data, (char*)bin_name) != NULL)
+ {
+ XFree(data);
+ return True;
+@@ -282,9 +280,8 @@
+
+ Atom type;
+ int format;
+- long bytes_after;
+ Pixmap *data = NULL;
+- long n_items;
++ unsigned long n_items, bytes_after;
+ int result;
+
+ result = XGetWindowProperty (dpy, RootWindow(dpy, DefaultScreen(dpy)),
diff --git a/packages/libmatchbox/libmatchbox.inc b/packages/libmatchbox/libmatchbox.inc
index 44d2efde71..cd6625687d 100644
--- a/packages/libmatchbox/libmatchbox.inc
+++ b/packages/libmatchbox/libmatchbox.inc
@@ -1,7 +1,7 @@
SECTION = "x11/libs"
DESCRIPTION = "Matchbox window manager core library"
LICENSE = "GPL"
-DEPENDS = "x11 xext expat libxft pango jpeg libpng zlib libxsettings-client"
+DEPENDS = "libx11 libxext expat libxft pango jpeg libpng zlib libxsettings-client"
PR="r1"
inherit autotools pkgconfig
diff --git a/packages/libmatchbox/libmatchbox_1.7.bb b/packages/libmatchbox/libmatchbox_1.7.bb
index afcf058663..c3fef81f0d 100644
--- a/packages/libmatchbox/libmatchbox_1.7.bb
+++ b/packages/libmatchbox/libmatchbox_1.7.bb
@@ -1,6 +1,10 @@
include libmatchbox.inc
+PR = "r2"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/${PV}/${PN}-${PV}.tar.gz \
+ file://svn-explicit-types.patch;patch=1 \
+ file://svn-autofu-xsettings.patch;patch=1 \
+ file://svn-code-misc-xsettings.patch;patch=1 \
file://check.m4"
do_configure_prepend () {
diff --git a/packages/libpixman/libpixman_0.1.5.bb b/packages/libpixman/libpixman_0.1.5.bb
index 2d69d14381..5427c90864 100644
--- a/packages/libpixman/libpixman_0.1.5.bb
+++ b/packages/libpixman/libpixman_0.1.5.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
DESCRIPTION = "Cairo support library"
LICENSE = "X11"
SRC_URI = "http://cairographics.org/snapshots/libpixman-${PV}.tar.gz"
diff --git a/packages/libpixman/libpixman_0.1.6.bb b/packages/libpixman/libpixman_0.1.6.bb
index 2d69d14381..5427c90864 100644
--- a/packages/libpixman/libpixman_0.1.6.bb
+++ b/packages/libpixman/libpixman_0.1.6.bb
@@ -1,7 +1,7 @@
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
DESCRIPTION = "Cairo support library"
LICENSE = "X11"
SRC_URI = "http://cairographics.org/snapshots/libpixman-${PV}.tar.gz"
diff --git a/packages/libpixman/libpixman_cvs.bb b/packages/libpixman/libpixman_cvs.bb
index 549c149fad..1f04e51fad 100644
--- a/packages/libpixman/libpixman_cvs.bb
+++ b/packages/libpixman/libpixman_cvs.bb
@@ -2,7 +2,7 @@ PV = "0.0+cvs${SRCDATE}"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@debian.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
DESCRIPTION = "Cairo support library"
LICENSE = "X11"
SRC_URI = "cvs://anoncvs:anoncvs@cvs.cairographics.org/cvs/cairo;module=libpixman"
diff --git a/packages/libsdl/libsdl-x11_1.2.7.bb b/packages/libsdl/libsdl-x11_1.2.7.bb
index e65fe4fba3..b2060cd0fd 100644
--- a/packages/libsdl/libsdl-x11_1.2.7.bb
+++ b/packages/libsdl/libsdl-x11_1.2.7.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Simple DirectMedia Layer - X11 Edition"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 xext"
+DEPENDS = "libx11 libxext"
PROVIDES = "virtual/libsdl"
LICENSE = "LGPL"
diff --git a/packages/libtool/libtool-native_1.5.10.bb b/packages/libtool/libtool-native_1.5.10.bb
index 834691cd3d..fa2a6f4c8a 100644
--- a/packages/libtool/libtool-native_1.5.10.bb
+++ b/packages/libtool/libtool-native_1.5.10.bb
@@ -1,6 +1,5 @@
SECTION = "devel"
include libtool_${PV}.bb
-DEPENDS += "autoconf-native"
PR = "r3"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
diff --git a/packages/libvncserver/x11vnc_0.7.1.bb b/packages/libvncserver/x11vnc_0.7.1.bb
index 735cfaed08..61647eb571 100644
--- a/packages/libvncserver/x11vnc_0.7.1.bb
+++ b/packages/libvncserver/x11vnc_0.7.1.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "X11 VNC server"
SECTION = "x11"
PRIORITY = "optional"
-DEPENDS = "zlib jpeg x11"
+DEPENDS = "zlib jpeg libx11"
LICENSE = "GPL"
SRC_URI = "${SOURCEFORGE_MIRROR}/libvncserver/LibVNCServer-${PV}.tar.gz"
diff --git a/packages/libxine/libxine-x11_1.0.bb b/packages/libxine/libxine-x11_1.0.bb
index b8f22e7dc4..ea70778517 100644
--- a/packages/libxine/libxine-x11_1.0.bb
+++ b/packages/libxine/libxine-x11_1.0.bb
@@ -3,7 +3,7 @@ This version is configued for the usage with X11"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound-gpe x11 xext"
+DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound-gpe libx11 libxext"
PROVIDES = "virtual/libxine"
PR = "r0"
diff --git a/packages/libxine/libxine_1.1.0.bb b/packages/libxine/libxine_1.1.0.bb
index af5561d68a..824c381a92 100644
--- a/packages/libxine/libxine_1.1.0.bb
+++ b/packages/libxine/libxine_1.1.0.bb
@@ -3,7 +3,7 @@ This version is configued for the usage with X11"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
-DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound-gpe x11 xext"
+DEPENDS = "zlib libogg libvorbis tremor libmad libmodplug esound-gpe libx11 libxext"
PROVIDES = "virtual/libxine"
PR = "r0"
diff --git a/packages/libxsettings-client/libxsettings-client_0.12.bb b/packages/libxsettings-client/libxsettings-client_0.12.bb
index efef97dfb1..3c3103722b 100644
--- a/packages/libxsettings-client/libxsettings-client_0.12.bb
+++ b/packages/libxsettings-client/libxsettings-client_0.12.bb
@@ -1,7 +1,7 @@
SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
-DEPENDS = "libgpewidget libxsettings x11"
+DEPENDS = "libgpewidget libxsettings libx11"
inherit pkgconfig gpe
diff --git a/packages/libxsettings-client/libxsettings-client_0.13.bb b/packages/libxsettings-client/libxsettings-client_0.13.bb
index 10659e384b..1eed6f7db1 100644
--- a/packages/libxsettings-client/libxsettings-client_0.13.bb
+++ b/packages/libxsettings-client/libxsettings-client_0.13.bb
@@ -1,7 +1,7 @@
SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
-DEPENDS = "libgpewidget libxsettings x11"
+DEPENDS = "libgpewidget libxsettings libx11"
inherit pkgconfig gpe
diff --git a/packages/libxsettings-client/libxsettings-client_0.14.bb b/packages/libxsettings-client/libxsettings-client_0.14.bb
index 11d0d3497b..0e8ff6d1cb 100644
--- a/packages/libxsettings-client/libxsettings-client_0.14.bb
+++ b/packages/libxsettings-client/libxsettings-client_0.14.bb
@@ -1,7 +1,7 @@
SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
-DEPENDS = "libxsettings x11"
+DEPENDS = "libxsettings libx11"
inherit autotools pkgconfig gpe
diff --git a/packages/libxsettings-client/libxsettings-client_0.16.bb b/packages/libxsettings-client/libxsettings-client_0.16.bb
index 0e54f6088b..c668971de8 100644
--- a/packages/libxsettings-client/libxsettings-client_0.16.bb
+++ b/packages/libxsettings-client/libxsettings-client_0.16.bb
@@ -1,7 +1,7 @@
SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
-DEPENDS = "libxsettings x11"
+DEPENDS = "libxsettings libx11"
MAINTAINER = "Florian Boor <florian@kernelconcepts.de>"
PR="r1"
diff --git a/packages/libxsettings/libxsettings_0.11.bb b/packages/libxsettings/libxsettings_0.11.bb
index 6ff786e3bd..caf2bc67ae 100644
--- a/packages/libxsettings/libxsettings_0.11.bb
+++ b/packages/libxsettings/libxsettings_0.11.bb
@@ -3,7 +3,7 @@ SECTION = "gpe/libs"
LICENSE = "BSD-X"
PRIORITY = "optional"
MAINTAINER = "Philip Blundell <pb@handhelds.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
inherit gpe
diff --git a/packages/lineak/lineak_0.8.3.bb b/packages/lineak/lineak_0.8.3.bb
index fe6778179c..111708d732 100644
--- a/packages/lineak/lineak_0.8.3.bb
+++ b/packages/lineak/lineak_0.8.3.bb
@@ -3,7 +3,7 @@ SECTION = "gpe/multimedia"
HOMEPAGE = "http://lineak.sourceforge.net"
LICENSE = "GPLv2"
MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
-DEPENDS = "x11 xext"
+DEPENDS = "libx11 libxext"
PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/lineak/lineakd-${PV}.tar.gz \
diff --git a/packages/links/links-x11_2.1pre20.bb b/packages/links/links-x11_2.1pre20.bb
index ab2b71cd12..f763df7f60 100644
--- a/packages/links/links-x11_2.1pre20.bb
+++ b/packages/links/links-x11_2.1pre20.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
SECTION = "console/network"
-DEPENDS = "jpeg libpng flex openssl zlib x11"
+DEPENDS = "jpeg libpng flex openssl zlib libx11"
DESCRIPTION = "Links is graphics and text mode WWW \
browser, similar to Lynx."
RCONFLICTS = "links"
diff --git a/packages/libxcursor/libxcursor-1.1.2/.mtn2git_empty b/packages/linux/LAB-kernel-2.6.13-hh2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxcursor/libxcursor-1.1.2/.mtn2git_empty
+++ b/packages/linux/LAB-kernel-2.6.13-hh2/.mtn2git_empty
diff --git a/packages/linux/LAB-kernel-2.6.13-hh2/defconfig b/packages/linux/LAB-kernel-2.6.13-hh2/defconfig
new file mode 100644
index 0000000000..466c2072f5
--- /dev/null
+++ b/packages/linux/LAB-kernel-2.6.13-hh2/defconfig
@@ -0,0 +1,1092 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.13-hh1
+# Thu Feb 16 14:58:20 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_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_MINIMAL_OOPS 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_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_SHMEM is not set
+CONFIG_USELIB=y
+CONFIG_CORE_DUMP=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_TINY_SHMEM=y
+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
+
+#
+# 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_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_ARCH_ESERIES is not set
+# CONFIG_MACH_A620 is not set
+# CONFIG_MACH_A716 is not set
+# CONFIG_ARCH_H1900 is not set
+CONFIG_ARCH_H2200=y
+CONFIG_H2200_PM=y
+# CONFIG_ARCH_H3900 is not set
+# CONFIG_MACH_H4000 is not set
+# CONFIG_MACH_H4700 is not set
+# CONFIG_MACH_HX2750 is not set
+# CONFIG_ARCH_H5400 is not set
+# CONFIG_MACH_HIMALAYA is not set
+# CONFIG_ARCH_AXIMX5 is not set
+# CONFIG_ARCH_AXIMX3 is not set
+# CONFIG_ARCH_ROVERP1 is not set
+# CONFIG_ARCH_ROVERP5P is not set
+# CONFIG_MACH_XSCALE_PALMLD is not set
+# CONFIG_MACH_T3XSCALE is not set
+# CONFIG_PXA_SHARPSL is not set
+CONFIG_PXA25x=y
+CONFIG_PXA_KEYS=y
+# CONFIG_SA1100_H3100 is not set
+# CONFIG_SA1100_H3600 is not set
+# CONFIG_SA1100_H3800 is not set
+
+#
+# Linux As Bootloader
+#
+CONFIG_LAB=y
+# CONFIG_LAB_BOOTSTRAP is not set
+
+#
+# LAB modules
+#
+CONFIG_LAB_BOOTLOGO=y
+CONFIG_LAB_DUMMY=y
+CONFIG_LAB_PM=y
+CONFIG_LAB_DMESG=y
+CONFIG_LAB_DEBUGLOG=y
+CONFIG_LAB_DEVMEM=y
+CONFIG_LAB_CRC=y
+CONFIG_LAB_XMODEM=y
+CONFIG_LAB_YMODEM=y
+CONFIG_LAB_MTD=y
+CONFIG_LAB_ERASEMTD=y
+CONFIG_LAB_COPY=y
+CONFIG_LAB_COPY_YMODEM=y
+CONFIG_LAB_COPY_XMODEM=y
+CONFIG_LAB_COPY_FLASH=y
+CONFIG_LAB_COPY_NAND=y
+CONFIG_LAB_COPY_FS=y
+CONFIG_LAB_COPY_BUF=y
+# CONFIG_LAB_COPY_DUMMY is not set
+CONFIG_LAB_COPY_WRAPPER=y
+CONFIG_LAB_INSMOD=y
+CONFIG_LAB_RMMOD=y
+CONFIG_LAB_MOUNT=y
+CONFIG_LAB_MKDIR=y
+CONFIG_ARMBOOT=y
+CONFIG_ARMBOOT_LBL_SYSCALL=y
+CONFIG_LAB_ARMBOOT=y
+CONFIG_LAB_NANDDUMP=y
+CONFIG_LAB_NANDCHECK=y
+CONFIG_LAB_RUN=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+# CONFIG_CPU_XSCALE_PXA250 is not set
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_FASTCALL is not set
+CONFIG_ARM_THUMB=y
+CONFIG_XSCALE_PMU=y
+
+#
+# Compaq/iPAQ Platforms
+#
+CONFIG_PXA_IPAQ=y
+
+#
+# XScale-based iPAQ
+#
+CONFIG_IPAQ_HANDHELD=y
+
+#
+# Compaq/iPAQ Drivers
+#
+
+#
+# Compaq/HP iPAQ Drivers
+#
+CONFIG_IPAQ_CLOCKS=y
+# CONFIG_IPAQ_SLEEVE is not set
+# CONFIG_IPAQ_SAMCOP is not set
+CONFIG_IPAQ_HAMCOP=y
+CONFIG_IPAQ_SAMCOP_TOUCHSCREEN=y
+CONFIG_IPAQ_SAMCOP_DMA=y
+CONFIG_DMABOUNCE=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_TCIC is not set
+CONFIG_PCMCIA_PXA2XX=y
+CONFIG_PCMCIA_H2200=y
+
+#
+# Kernel Features
+#
+CONFIG_PREEMPT=y
+# 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_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=ttyS0,115200n8 mem=64M"
+# 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_APM=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_IP_TCPDIAG=y
+# CONFIG_IP_TCPDIAG_IPV6 is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# IP: Netfilter Configuration
+#
+# CONFIG_IP_NF_CONNTRACK is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_QUEUE is not set
+# CONFIG_IP_NF_IPTABLES is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+
+#
+# Device Drivers
+#
+
+#
+# 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=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 is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_SHARP_SL is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_RAMTD 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_HAMCOP=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_SHARPSL is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_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_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+# CONFIG_HOSTAP is not set
+
+#
+# PCMCIA network device support
+#
+# CONFIG_NET_PCMCIA is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_KEYBOARD_H2200=y
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=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_PXA=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_PXA_COUNT=4
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELV is not set
+CONFIG_I2C_PXA=y
+# CONFIG_I2C_PXA_SLAVE is not set
+# CONFIG_I2C_ISA is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+# CONFIG_I2C_SENSOR 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_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# L3 serial bus support
+#
+# CONFIG_L3 is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_SA1100_RTC is not set
+# CONFIG_S3C2410_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
+#
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+
+#
+# SoC drivers
+#
+CONFIG_SOC_MQ11XX=y
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_SOC_TSC2101 is not set
+
+#
+# Misc devices
+#
+CONFIG_BATTERY_MONITOR=y
+CONFIG_H2200_BATTERY=y
+
+#
+# Multimedia Capabilities Port drivers
+#
+# CONFIG_MCP is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_SOFT_CURSOR=y
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_PXA is not set
+CONFIG_FB_MQ1100=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 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_H2200=y
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# Dallas's 1-wire bus
+#
+CONFIG_W1=y
+# CONFIG_W1_THERM is not set
+# CONFIG_W1_SMEM is not set
+CONFIG_W1_SAMCOP=y
+CONFIG_W1_SAMCOP_ONE_DEVICE=y
+CONFIG_W1_DS2760=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+# CONFIG_USB is not set
+
+#
+# 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=y
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_CHAR is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+# CONFIG_MMC_PXA is not set
+# CONFIG_MMC_WBSD is not set
+# CONFIG_MMC_TMIO is not set
+CONFIG_MMC_SAMCOP=y
+# CONFIG_MMC_ASIC3 is not set
+
+#
+# LED devices
+#
+# CONFIG_CLASS_LEDS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+# CONFIG_EXT3_FS is not set
+# CONFIG_JBD is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+
+#
+# XFS support
+#
+# 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
+
+#
+# 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_DEVFS_FS=y
+CONFIG_DEVFS_MOUNT=y
+# CONFIG_DEVFS_DEBUG is not set
+# CONFIG_DEVPTS_FS_XATTR is not set
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# 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=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_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_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_WAITQ is not set
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/LAB-kernel/h2200/labrun.patch b/packages/linux/LAB-kernel-2.6.13-hh2/labrun.patch
index 29ff10eda2..29ff10eda2 100644
--- a/packages/linux/LAB-kernel/h2200/labrun.patch
+++ b/packages/linux/LAB-kernel-2.6.13-hh2/labrun.patch
diff --git a/packages/linux/LAB-kernel/h2200/defconfig b/packages/linux/LAB-kernel/h2200/defconfig
index 466c2072f5..b7f924e44d 100644
--- a/packages/linux/LAB-kernel/h2200/defconfig
+++ b/packages/linux/LAB-kernel/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.13-hh1
-# Thu Feb 16 14:58:20 2006
+# Linux kernel version: 2.6.15-hh1
+# Wed Feb 22 17:27:41 2006
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -22,6 +22,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
# General setup
#
CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
@@ -32,6 +33,10 @@ CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set
# CONFIG_MINIMAL_OOPS is not set
+CONFIG_INITRAMFS_SOURCE="initramfs_list"
+CONFIG_INITRAMFS_ROOT_UID=0
+CONFIG_INITRAMFS_ROOT_GID=0
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
@@ -41,7 +46,6 @@ CONFIG_BUG=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
# CONFIG_SHMEM is not set
CONFIG_USELIB=y
CONFIG_CORE_DUMP=y
@@ -64,6 +68,23 @@ CONFIG_OBSOLETE_MODPARM=y
CONFIG_KMOD=y
#
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+
+#
# System Type
#
# CONFIG_ARCH_CLPS7500 is not set
@@ -85,6 +106,7 @@ CONFIG_ARCH_PXA=y
# 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
@@ -115,10 +137,10 @@ CONFIG_H2200_PM=y
# CONFIG_MACH_T3XSCALE is not set
# CONFIG_PXA_SHARPSL is not set
CONFIG_PXA25x=y
-CONFIG_PXA_KEYS=y
# CONFIG_SA1100_H3100 is not set
# CONFIG_SA1100_H3600 is not set
# CONFIG_SA1100_H3800 is not set
+CONFIG_GPIO_KEYS=y
#
# Linux As Bootloader
@@ -165,7 +187,6 @@ CONFIG_LAB_RUN=y
#
CONFIG_CPU_32=y
CONFIG_CPU_XSCALE=y
-# CONFIG_CPU_XSCALE_PXA250 is not set
CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5T=y
CONFIG_CPU_CACHE_VIVT=y
@@ -174,7 +195,6 @@ CONFIG_CPU_TLB_V4WBI=y
#
# Processor Features
#
-# CONFIG_ARM_FASTCALL is not set
CONFIG_ARM_THUMB=y
CONFIG_XSCALE_PMU=y
@@ -220,7 +240,6 @@ CONFIG_PCMCIA_IOCTL=y
#
# PC-card bridges
#
-# CONFIG_TCIC is not set
CONFIG_PCMCIA_PXA2XX=y
CONFIG_PCMCIA_H2200=y
@@ -236,6 +255,8 @@ CONFIG_FLATMEM_MANUAL=y
# 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
#
@@ -247,11 +268,6 @@ CONFIG_CMDLINE="console=ttyS0,115200n8 mem=64M"
# CONFIG_XIP_KERNEL is not set
#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
# Floating point emulation
#
@@ -274,6 +290,8 @@ CONFIG_BINFMT_ELF=y
# Power management options
#
CONFIG_PM=y
+CONFIG_PM_LEGACY=y
+# CONFIG_PM_DEBUG is not set
CONFIG_APM=y
#
@@ -304,8 +322,8 @@ CONFIG_IP_PNP=y
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
-CONFIG_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
@@ -318,15 +336,25 @@ CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
+# Core Netfilter Configuration
+#
+# CONFIG_NETFILTER_NETLINK is not set
+# CONFIG_NF_CONNTRACK is not set
+
+#
# IP: Netfilter Configuration
#
# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
# CONFIG_IP_NF_QUEUE is not set
# CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
@@ -342,8 +370,11 @@ CONFIG_NETFILTER=y
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
# CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
@@ -352,6 +383,7 @@ CONFIG_NETFILTER=y
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
#
# Device Drivers
@@ -366,6 +398,11 @@ 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
@@ -418,7 +455,6 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_PHRAM is not set
# CONFIG_MTD_MTDRAM is not set
-# CONFIG_RAMTD is not set
# CONFIG_MTD_BLKMTD is not set
# CONFIG_MTD_BLOCK2MTD is not set
@@ -442,6 +478,11 @@ CONFIG_MTD_NAND_HAMCOP=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
@@ -458,16 +499,7 @@ CONFIG_MTD_NAND_HAMCOP=y
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CDROM_PKTCDVD is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
# CONFIG_ATA_OVER_ETH is not set
#
@@ -500,6 +532,7 @@ CONFIG_IDE_GENERIC=y
#
# SCSI device support
#
+# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
#
@@ -530,6 +563,10 @@ CONFIG_NETDEVICES=y
# CONFIG_TUN is not set
#
+# PHY device support
+#
+
+#
# Ethernet (10 or 100Mbit)
#
# CONFIG_NET_ETHERNET is not set
@@ -550,7 +587,6 @@ CONFIG_NETDEVICES=y
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
-# CONFIG_HOSTAP is not set
#
# PCMCIA network device support
@@ -654,11 +690,9 @@ CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_ELV is not set
CONFIG_I2C_PXA=y
# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_ISA is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_PCA_ISA is not set
-# CONFIG_I2C_SENSOR is not set
#
# Miscellaneous I2C Chip support
@@ -668,9 +702,11 @@ CONFIG_I2C_PXA=y
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCA9535 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_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
@@ -697,7 +733,6 @@ CONFIG_I2C_PXA=y
# CONFIG_WATCHDOG is not set
# CONFIG_NVRAM is not set
# CONFIG_SA1100_RTC is not set
-# CONFIG_S3C2410_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
@@ -709,16 +744,21 @@ CONFIG_I2C_PXA=y
# 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
#
# Hardware Monitoring support
#
# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
#
# SoC drivers
@@ -743,6 +783,10 @@ CONFIG_H2200_BATTERY=y
# CONFIG_MCP is not set
#
+# Multimedia Capabilities Port drivers
+#
+
+#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
@@ -759,14 +803,13 @@ CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_SOFT_CURSOR=y
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_IMAGEON is not set
+# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_PXA is not set
CONFIG_FB_MQ1100=y
-# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set
#
@@ -798,8 +841,8 @@ CONFIG_BACKLIGHT_H2200=y
CONFIG_W1=y
# CONFIG_W1_THERM is not set
# CONFIG_W1_SMEM is not set
+# CONFIG_W1_DS2433 is not set
CONFIG_W1_SAMCOP=y
-CONFIG_W1_SAMCOP_ONE_DEVICE=y
CONFIG_W1_DS2760=y
#
@@ -810,6 +853,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB is not set
#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
# USB Gadget Support
#
CONFIG_USB_GADGET=y
@@ -827,12 +874,11 @@ CONFIG_USB_PXA2XX_SMALL=y
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
+# CONFIG_USB_ETH is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
-# CONFIG_USB_G_CHAR is not set
+CONFIG_USB_G_CHAR=y
#
# MMC/SD Card support
@@ -862,10 +908,6 @@ CONFIG_EXT2_FS=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
-
-#
-# XFS support
-#
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
@@ -874,6 +916,7 @@ CONFIG_INOTIFY=y
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
@@ -896,14 +939,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
#
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
-CONFIG_DEVFS_FS=y
-CONFIG_DEVFS_MOUNT=y
-# CONFIG_DEVFS_DEBUG is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
-# CONFIG_TMPFS_XATTR is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
+# CONFIG_RELAYFS_FS is not set
#
# Miscellaneous filesystems
@@ -919,6 +958,7 @@ CONFIG_RAMFS=y
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
@@ -951,6 +991,7 @@ CONFIG_SUNRPC=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
#
# Partition Types
@@ -1028,6 +1069,7 @@ CONFIG_NLS_UTF8=y
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
@@ -1037,7 +1079,9 @@ CONFIG_DEBUG_PREEMPT=y
# 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
@@ -1086,6 +1130,7 @@ CONFIG_CRYPTO_DEFLATE=y
# Library routines
#
CONFIG_CRC_CCITT=y
+# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
diff --git a/packages/linux/LAB-kernel/initramfs_list b/packages/linux/LAB-kernel/initramfs_list
new file mode 100644
index 0000000000..665d0baad5
--- /dev/null
+++ b/packages/linux/LAB-kernel/initramfs_list
@@ -0,0 +1,32 @@
+# Populate the rootfs with enough nodes for LAB to operate.
+
+dir /dev 0755 0 0
+nod /dev/console 0600 0 0 c 5 1
+nod /dev/mem 0600 0 0 c 1 1
+nod /dev/kmem 0600 0 0 c 1 2
+nod /dev/fb0 0600 0 0 c 29 0
+nod /dev/ttyS0 0600 0 0 c 4 64
+nod /dev/mtdblock0 0600 0 0 b 31 0
+nod /dev/mtdblock1 0600 0 0 b 31 1
+nod /dev/mtdblock2 0600 0 0 b 31 2
+nod /dev/mtdblock3 0600 0 0 b 31 3
+nod /dev/mmcblk0 0600 0 0 b 254 0
+nod /dev/mmcblk0p1 0600 0 0 b 254 1
+nod /dev/mmcblk0p2 0600 0 0 b 254 2
+nod /dev/mmcblk0p3 0600 0 0 b 254 3
+nod /dev/mmcblk0p4 0600 0 0 b 254 4
+nod /dev/mmcblk0p5 0600 0 0 b 254 5
+nod /dev/mmcblk0p6 0600 0 0 b 254 6
+nod /dev/mmcblk0p7 0600 0 0 b 254 7
+nod /dev/hda 0600 0 0 b 3 0
+nod /dev/hda1 0600 0 0 b 3 1
+nod /dev/hda2 0600 0 0 b 3 2
+nod /dev/hda3 0600 0 0 b 3 3
+nod /dev/hda4 0600 0 0 b 3 4
+nod /dev/hda5 0600 0 0 b 3 5
+nod /dev/hda6 0600 0 0 b 3 6
+nod /dev/hda7 0600 0 0 b 3 7
+dir /root 0700 0 0
+dir /proc 755 0 0
+dir /sys 755 0 0
+dir /mnt 755 0 0
diff --git a/packages/linux/LAB-kernel_2.6.13-hh2.bb b/packages/linux/LAB-kernel_2.6.13-hh2.bb
index f50baf64ad..eb5e97cc70 100644
--- a/packages/linux/LAB-kernel_2.6.13-hh2.bb
+++ b/packages/linux/LAB-kernel_2.6.13-hh2.bb
@@ -28,8 +28,8 @@ do_configure() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/LAB-image-${MACHINE}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/LAB-image-${MACHINE}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/LAB-kernel_cvs.bb b/packages/linux/LAB-kernel_cvs.bb
index 25241cec1e..22128880ed 100644
--- a/packages/linux/LAB-kernel_cvs.bb
+++ b/packages/linux/LAB-kernel_cvs.bb
@@ -15,33 +15,42 @@ 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://labrun.patch;patch=1 \
+ file://initramfs_list \
file://defconfig"
S = "${WORKDIR}/kernel26"
inherit kernel
+FILES_kernel-image_h2200 = ""
+ALLOW_EMPTY_kernel-image_h2200 = 1
+
K_MAJOR = "2"
K_MINOR = "6"
-K_MICRO = "13"
-HHV = "2"
+K_MICRO = "15"
+HHV = "0"
#
KERNEL_PRIORITY = "${@'%d' % (int(bb.data.getVar('K_MAJOR',d,1)) * 100000000 + int(bb.data.getVar('K_MINOR',d,1)) * 1000000 + int(bb.data.getVar('K_MICRO',d,1)) * 10000 + float(bb.data.getVar('HHV',d,1)))}"
do_configure() {
- install -m 0644 ${WORKDIR}/defconfig ${S}/.config || die "No default configuration for ${MACHINE} available."
+ # Substitute our uid/gid so the initramfs gets the right ownership.
+ MY_UID=`id -u`
+ MY_GID=`id -g`
+ sed -e "s/^CONFIG_INITRAMFS_ROOT_UID.*$/CONFIG_INITRAMFS_ROOT_UID=$MY_UID/" \
+ -e "s/^CONFIG_INITRAMFS_ROOT_GID.*$/CONFIG_INITRAMFS_ROOT_GID=$MY_GID/" \
+ ${WORKDIR}/defconfig > ${S}/.config
+
+ install -m 0644 ${WORKDIR}/initramfs_list ${S}/initramfs_list
+
yes '' | oe_runmake oldconfig
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/LAB-image-${MACHINE}
-#add the bootshim?
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/LAB-image-${MACHINE}
}
do_stage() {
-#do nothing
}
diff --git a/packages/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb b/packages/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb
index 5b594a959b..8f42d6b383 100644
--- a/packages/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ b/packages/linux/collie-kernel-58-6-debug_2.4.18-rmk7-pxa3-embedix20030509.bb
@@ -5,7 +5,7 @@ KERNEL_CONSOLE = "tty0"
include ../linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
do_deploy() {
- install -d ${DEPLOY_DIR}/images
+ install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
- ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-DEBUG-${DATETIME}.bin
+ ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-DEBUG-${DATETIME}.bin
}
diff --git a/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb b/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb
index a0571bedb7..0b8b6ab63a 100644
--- a/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb
+++ b/packages/linux/devkitidp-pxa255-kernel_2.6.11.bb
@@ -31,8 +31,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/ep93xx-kernel/derevo6.diff b/packages/linux/ep93xx-kernel/derevo6.diff
new file mode 100644
index 0000000000..fc7f609056
--- /dev/null
+++ b/packages/linux/ep93xx-kernel/derevo6.diff
@@ -0,0 +1,4434 @@
+diff -urN linux-2.6.15.commit/arch/arm/common/Kconfig linux-2.6.15.snap/arch/arm/common/Kconfig
+--- linux-2.6.15.commit/arch/arm/common/Kconfig 2006-02-12 10:22:18.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/common/Kconfig 2006-02-20 13:56:04.000000000 +0100
+@@ -1,7 +1,10 @@
+-config ICST525
++config ARM_GIC
+ bool
+
+-config ARM_GIC
++config ARM_VIC
++ bool
++
++config ICST525
+ bool
+
+ config ICST307
+diff -urN linux-2.6.15.commit/arch/arm/common/Makefile linux-2.6.15.snap/arch/arm/common/Makefile
+--- linux-2.6.15.commit/arch/arm/common/Makefile 2006-02-12 10:22:18.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/common/Makefile 2006-02-20 13:56:32.000000000 +0100
+@@ -5,6 +5,7 @@
+ obj-y += rtctime.o
+ obj-$(CONFIG_ARM_AMBA) += amba.o
+ obj-$(CONFIG_ARM_GIC) += gic.o
++obj-$(CONFIG_ARM_VIC) += vic.o
+ obj-$(CONFIG_ICST525) += icst525.o
+ obj-$(CONFIG_ICST307) += icst307.o
+ obj-$(CONFIG_SA1111) += sa1111.o
+diff -urN linux-2.6.15.commit/arch/arm/common/vic.c linux-2.6.15.snap/arch/arm/common/vic.c
+--- linux-2.6.15.commit/arch/arm/common/vic.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/common/vic.c 2006-02-20 18:38:41.000000000 +0100
+@@ -0,0 +1,91 @@
++/*
++ * linux/arch/arm/common/vic.c
++ *
++ * Copyright (C) 1999 - 2003 ARM Limited
++ * Copyright (C) 2000 Deep Blue Solutions Ltd
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#include <linux/init.h>
++#include <linux/list.h>
++
++#include <asm/io.h>
++#include <asm/irq.h>
++#include <asm/mach/irq.h>
++#include <asm/hardware/vic.h>
++
++static void vic_mask_irq(unsigned int irq)
++{
++ void __iomem *base = get_irq_chipdata(irq);
++ irq &= 31;
++ writel(1 << irq, base + VIC_INT_ENABLE_CLEAR);
++}
++
++static void vic_unmask_irq(unsigned int irq)
++{
++ void __iomem *base = get_irq_chipdata(irq);
++ irq &= 31;
++ writel(1 << irq, base + VIC_INT_ENABLE);
++}
++
++static struct irqchip vic_chip = {
++ .ack = vic_mask_irq,
++ .mask = vic_mask_irq,
++ .unmask = vic_unmask_irq,
++};
++
++void __init vic_init(void __iomem *base, unsigned int irq_start,
++ u32 vic_sources)
++{
++ unsigned int i;
++
++ /* Disable all interrupts initially. */
++
++ writel(0, base + VIC_INT_SELECT);
++ writel(~0, base + VIC_INT_ENABLE_CLEAR);
++ writel(0, base + VIC_ITCR);
++ writel(~0, base + VIC_INT_SOFT_CLEAR);
++
++ /*
++ * Make sure we clear all existing interrupts
++ */
++ writel(0, base + VIC_VECT_ADDR);
++ for (i = 0; i < 19; i++) {
++ unsigned int value;
++
++ value = readl(base + VIC_VECT_ADDR);
++ writel(value, base + VIC_VECT_ADDR);
++ }
++
++ for (i = 0; i < 16; i++) {
++ void __iomem *reg = base + VIC_VECT_CNTL0 + (i * 4);
++// writel(VIC_VECT_CNTL_ENABLE | i, reg);
++ writel(0, reg);
++ }
++
++ writel(32, base + VIC_DEF_VECT_ADDR);
++
++ for (i = 0; i < 32; i++) {
++ unsigned int irq = irq_start + i;
++
++ set_irq_chip(irq, &vic_chip);
++ set_irq_chipdata(irq, base);
++
++ if (vic_sources & (1 << i)) {
++ set_irq_handler(irq, do_level_IRQ);
++ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
++ }
++ }
++}
+diff -urN linux-2.6.15.commit/arch/arm/configs/ep93xx_defconfig linux-2.6.15.snap/arch/arm/configs/ep93xx_defconfig
+--- linux-2.6.15.commit/arch/arm/configs/ep93xx_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/configs/ep93xx_defconfig 2006-02-20 21:11:41.000000000 +0100
+@@ -0,0 +1,850 @@
++#
++# Automatically generated make config: don't edit
++# Linux kernel version: 2.6.15
++# Mon Feb 20 13:59: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_INIT_ENV_ARG_LIMIT=32
++
++#
++# General setup
++#
++CONFIG_LOCALVERSION=""
++CONFIG_LOCALVERSION_AUTO=y
++# CONFIG_SWAP is not set
++CONFIG_SYSVIPC=y
++# CONFIG_POSIX_MQUEUE is not set
++# CONFIG_BSD_PROCESS_ACCT is not set
++CONFIG_SYSCTL=y
++# CONFIG_AUDIT is not set
++CONFIG_HOTPLUG=y
++CONFIG_KOBJECT_UEVENT=y
++CONFIG_IKCONFIG=y
++CONFIG_IKCONFIG_PROC=y
++CONFIG_INITRAMFS_SOURCE=""
++CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++CONFIG_EMBEDDED=y
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_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 is not set
++CONFIG_IOSCHED_DEADLINE=y
++# CONFIG_IOSCHED_CFQ is not set
++# CONFIG_DEFAULT_AS is not set
++CONFIG_DEFAULT_DEADLINE=y
++# CONFIG_DEFAULT_CFQ is not set
++# CONFIG_DEFAULT_NOOP is not set
++CONFIG_DEFAULT_IOSCHED="deadline"
++
++#
++# System Type
++#
++# CONFIG_ARCH_CLPS7500 is not set
++# CONFIG_ARCH_CLPS711X is not set
++# CONFIG_ARCH_CO285 is not set
++# CONFIG_ARCH_EBSA110 is not set
++CONFIG_ARCH_EP93XX=y
++# CONFIG_ARCH_CAMELOT is not set
++# CONFIG_ARCH_FOOTBRIDGE is not set
++# CONFIG_ARCH_INTEGRATOR is not set
++# CONFIG_ARCH_IOP3XX is not set
++# CONFIG_ARCH_IXP4XX is not set
++# CONFIG_ARCH_IXP2000 is not set
++# CONFIG_ARCH_L7200 is not set
++# CONFIG_ARCH_PXA is not set
++# CONFIG_ARCH_RPC is not set
++# CONFIG_ARCH_SA1100 is not set
++# CONFIG_ARCH_S3C2410 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
++
++#
++# Cirrus EP93xx Implementation Options
++#
++
++#
++# EP93xx Platforms
++#
++CONFIG_MACH_GESBC9312=y
++CONFIG_MACH_TS72XX=y
++
++#
++# Processor Type
++#
++CONFIG_CPU_32=y
++CONFIG_CPU_ARM920T=y
++CONFIG_CPU_32v4=y
++CONFIG_CPU_ABRT_EV4T=y
++CONFIG_CPU_CACHE_V4WT=y
++CONFIG_CPU_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_ARM_VIC=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_ALIGNMENT_TRAP=y
++
++#
++# Boot options
++#
++CONFIG_ZBOOT_ROM_TEXT=0x0
++CONFIG_ZBOOT_ROM_BSS=0x0
++CONFIG_CMDLINE="console=ttyAM0,115200 root=/dev/nfs ip=bootp"
++# CONFIG_XIP_KERNEL is not set
++
++#
++# Floating point emulation
++#
++
++#
++# At least one emulation must be selected
++#
++CONFIG_FPE_NWFPE=y
++CONFIG_FPE_NWFPE_XP=y
++# CONFIG_FPE_FASTFPE is not set
++
++#
++# Userspace binary formats
++#
++CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
++# CONFIG_ARTHUR is not set
++
++#
++# Power management options
++#
++# CONFIG_PM is not set
++
++#
++# Networking
++#
++CONFIG_NET=y
++
++#
++# Networking options
++#
++CONFIG_PACKET=y
++CONFIG_PACKET_MMAP=y
++CONFIG_UNIX=y
++CONFIG_XFRM=y
++# CONFIG_XFRM_USER is not set
++CONFIG_NET_KEY=y
++CONFIG_INET=y
++# CONFIG_IP_MULTICAST is not set
++# CONFIG_IP_ADVANCED_ROUTER is not set
++CONFIG_IP_FIB_HASH=y
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++CONFIG_IP_PNP_BOOTP=y
++# CONFIG_IP_PNP_RARP is not set
++# CONFIG_NET_IPIP is not set
++# CONFIG_NET_IPGRE is not set
++# CONFIG_ARPD is not set
++CONFIG_SYN_COOKIES=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 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=y
++CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
++# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
++# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
++# CONFIG_MTD_CMDLINE_PARTS is not set
++# CONFIG_MTD_AFS_PARTS is not set
++
++#
++# User Modules And Translation Layers
++#
++CONFIG_MTD_CHAR=y
++CONFIG_MTD_BLOCK=y
++# CONFIG_FTL is not set
++# CONFIG_NFTL is not set
++# CONFIG_INFTL is not set
++# CONFIG_RFD_FTL is not set
++
++#
++# RAM/ROM/Flash chip drivers
++#
++# CONFIG_MTD_CFI 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 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 is not set
++# CONFIG_BLK_DEV_NBD 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
++
++#
++# SCSI device support
++#
++# CONFIG_RAID_ATTRS is not set
++# CONFIG_SCSI is not set
++
++#
++# Multi-device support (RAID and LVM)
++#
++# CONFIG_MD is not set
++
++#
++# Fusion MPT device support
++#
++# CONFIG_FUSION is not set
++
++#
++# IEEE 1394 (FireWire) support
++#
++
++#
++# I2O device support
++#
++
++#
++# Network device support
++#
++CONFIG_NETDEVICES=y
++# CONFIG_DUMMY is not set
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++# CONFIG_TUN is not set
++
++#
++# PHY device support
++#
++# CONFIG_PHYLIB is not set
++
++#
++# Ethernet (10 or 100Mbit)
++#
++CONFIG_NET_ETHERNET=y
++CONFIG_MII=y
++CONFIG_EP93XX_ETHERNET=y
++# CONFIG_SMC91X is not set
++# CONFIG_DM9000 is not set
++
++#
++# Ethernet (1000 Mbit)
++#
++
++#
++# Ethernet (10000 Mbit)
++#
++
++#
++# Token Ring devices
++#
++
++#
++# Wireless LAN (non-hamradio)
++#
++# CONFIG_NET_RADIO is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
++# CONFIG_PPP is not set
++# CONFIG_SLIP is not set
++# CONFIG_SHAPER is not set
++# CONFIG_NETCONSOLE is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++
++#
++# ISDN subsystem
++#
++# CONFIG_ISDN is not set
++
++#
++# Input device support
++#
++# CONFIG_INPUT is not set
++
++#
++# Hardware I/O ports
++#
++# CONFIG_SERIO is not set
++# CONFIG_GAMEPORT is not set
++
++#
++# Character devices
++#
++# CONFIG_VT is not set
++# CONFIG_SERIAL_NONSTANDARD is not set
++
++#
++# Serial drivers
++#
++# CONFIG_SERIAL_8250 is not set
++
++#
++# Non-8250 serial port support
++#
++CONFIG_SERIAL_AMBA_PL010=y
++CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
++# CONFIG_SERIAL_AMBA_PL011 is not set
++CONFIG_SERIAL_CORE=y
++CONFIG_SERIAL_CORE_CONSOLE=y
++CONFIG_UNIX98_PTYS=y
++# CONFIG_LEGACY_PTYS is not set
++
++#
++# IPMI
++#
++# CONFIG_IPMI_HANDLER is not set
++
++#
++# Watchdog Cards
++#
++# CONFIG_WATCHDOG is not set
++# CONFIG_NVRAM is not set
++# CONFIG_RTC is not set
++# CONFIG_DTLK is not set
++# CONFIG_R3964 is not set
++
++#
++# Ftape, the floppy tape device driver
++#
++# CONFIG_RAW_DRIVER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++# CONFIG_TELCLOCK is not set
++
++#
++# I2C support
++#
++CONFIG_I2C=y
++CONFIG_I2C_CHARDEV=y
++
++#
++# I2C Algorithms
++#
++CONFIG_I2C_ALGOBIT=y
++# CONFIG_I2C_ALGOPCF is not set
++# CONFIG_I2C_ALGOPCA is not set
++
++#
++# I2C Hardware Bus support
++#
++# CONFIG_I2C_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=y
++CONFIG_I2C_DEBUG_ALGO=y
++CONFIG_I2C_DEBUG_BUS=y
++CONFIG_I2C_DEBUG_CHIP=y
++
++#
++# Hardware Monitoring support
++#
++CONFIG_HWMON=y
++# CONFIG_HWMON_VID is not set
++# CONFIG_SENSORS_ADM1021 is not set
++# CONFIG_SENSORS_ADM1025 is not set
++# CONFIG_SENSORS_ADM1026 is not set
++# CONFIG_SENSORS_ADM1031 is not set
++# CONFIG_SENSORS_ADM9240 is not set
++# CONFIG_SENSORS_ASB100 is not set
++# CONFIG_SENSORS_ATXP1 is not set
++# CONFIG_SENSORS_DS1621 is not set
++# CONFIG_SENSORS_FSCHER is not set
++# CONFIG_SENSORS_FSCPOS is not set
++# CONFIG_SENSORS_GL518SM is not set
++# CONFIG_SENSORS_GL520SM is not set
++# CONFIG_SENSORS_IT87 is not set
++# CONFIG_SENSORS_LM63 is not set
++# CONFIG_SENSORS_LM75 is not set
++# CONFIG_SENSORS_LM77 is not set
++# CONFIG_SENSORS_LM78 is not set
++# CONFIG_SENSORS_LM80 is not set
++# CONFIG_SENSORS_LM83 is not set
++# CONFIG_SENSORS_LM85 is not set
++# CONFIG_SENSORS_LM87 is not set
++# CONFIG_SENSORS_LM90 is not set
++# CONFIG_SENSORS_LM92 is not set
++# CONFIG_SENSORS_MAX1619 is not set
++# CONFIG_SENSORS_PC87360 is not set
++# CONFIG_SENSORS_SMSC47M1 is not set
++# CONFIG_SENSORS_SMSC47B397 is not set
++# CONFIG_SENSORS_W83781D is not set
++# CONFIG_SENSORS_W83792D is not set
++# CONFIG_SENSORS_W83L785TS is not set
++# CONFIG_SENSORS_W83627HF is not set
++# CONFIG_SENSORS_W83627EHF is not set
++# CONFIG_HWMON_DEBUG_CHIP is not set
++
++#
++# Misc devices
++#
++
++#
++# Multimedia Capabilities Port drivers
++#
++
++#
++# Multimedia devices
++#
++# CONFIG_VIDEO_DEV is not set
++
++#
++# Digital Video Broadcasting Devices
++#
++# CONFIG_DVB is not set
++
++#
++# Graphics support
++#
++# CONFIG_FB 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
++
++#
++# File systems
++#
++# CONFIG_EXT2_FS is not set
++# CONFIG_EXT3_FS is not set
++# CONFIG_JBD is not set
++# CONFIG_REISERFS_FS is not set
++# CONFIG_JFS_FS is not set
++# CONFIG_FS_POSIX_ACL is not set
++# CONFIG_XFS_FS is not set
++# CONFIG_MINIX_FS is not set
++# CONFIG_ROMFS_FS is not set
++CONFIG_INOTIFY=y
++# CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
++# CONFIG_AUTOFS_FS is not set
++# CONFIG_AUTOFS4_FS is not set
++# CONFIG_FUSE_FS is not set
++
++#
++# CD-ROM/DVD Filesystems
++#
++# CONFIG_ISO9660_FS is not set
++# CONFIG_UDF_FS is not set
++
++#
++# DOS/FAT/NT Filesystems
++#
++CONFIG_FAT_FS=y
++# CONFIG_MSDOS_FS is not set
++CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
++# CONFIG_NTFS_FS is not set
++
++#
++# Pseudo filesystems
++#
++CONFIG_PROC_FS=y
++CONFIG_SYSFS=y
++CONFIG_TMPFS=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 is not set
++# CONFIG_CRAMFS is not set
++# CONFIG_VXFS_FS is not set
++# CONFIG_HPFS_FS is not set
++# CONFIG_QNX4FS_FS is not set
++# CONFIG_SYSV_FS is not set
++# CONFIG_UFS_FS is not set
++
++#
++# Network File Systems
++#
++CONFIG_NFS_FS=y
++CONFIG_NFS_V3=y
++# CONFIG_NFS_V3_ACL is not set
++# CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
++# CONFIG_NFSD is not set
++CONFIG_ROOT_NFS=y
++CONFIG_LOCKD=y
++CONFIG_LOCKD_V4=y
++CONFIG_NFS_COMMON=y
++CONFIG_SUNRPC=y
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
++# CONFIG_SMB_FS is not set
++# CONFIG_CIFS is not set
++# CONFIG_NCP_FS is not set
++# CONFIG_CODA_FS is not set
++# CONFIG_AFS_FS is not set
++# CONFIG_9P_FS is not set
++
++#
++# Partition Types
++#
++CONFIG_PARTITION_ADVANCED=y
++# CONFIG_ACORN_PARTITION is not set
++# CONFIG_OSF_PARTITION is not set
++# CONFIG_AMIGA_PARTITION is not set
++# CONFIG_ATARI_PARTITION is not set
++# CONFIG_MAC_PARTITION is not set
++CONFIG_MSDOS_PARTITION=y
++# CONFIG_BSD_DISKLABEL is not set
++# CONFIG_MINIX_SUBPARTITION is not set
++# CONFIG_SOLARIS_X86_PARTITION is not set
++# CONFIG_UNIXWARE_DISKLABEL is not set
++# CONFIG_LDM_PARTITION is not set
++# CONFIG_SGI_PARTITION is not set
++# CONFIG_ULTRIX_PARTITION is not set
++# CONFIG_SUN_PARTITION is not set
++# CONFIG_EFI_PARTITION is not set
++
++#
++# Native Language Support
++#
++CONFIG_NLS=y
++CONFIG_NLS_DEFAULT="iso8859-1"
++CONFIG_NLS_CODEPAGE_437=y
++# CONFIG_NLS_CODEPAGE_737 is not set
++# CONFIG_NLS_CODEPAGE_775 is not set
++# CONFIG_NLS_CODEPAGE_850 is not set
++# CONFIG_NLS_CODEPAGE_852 is not set
++# CONFIG_NLS_CODEPAGE_855 is not set
++# CONFIG_NLS_CODEPAGE_857 is not set
++# CONFIG_NLS_CODEPAGE_860 is not set
++# CONFIG_NLS_CODEPAGE_861 is not set
++# CONFIG_NLS_CODEPAGE_862 is not set
++# CONFIG_NLS_CODEPAGE_863 is not set
++# CONFIG_NLS_CODEPAGE_864 is not set
++# CONFIG_NLS_CODEPAGE_865 is not set
++# CONFIG_NLS_CODEPAGE_866 is not set
++# CONFIG_NLS_CODEPAGE_869 is not set
++# CONFIG_NLS_CODEPAGE_936 is not set
++# CONFIG_NLS_CODEPAGE_950 is not set
++# CONFIG_NLS_CODEPAGE_932 is not set
++# CONFIG_NLS_CODEPAGE_949 is not set
++# CONFIG_NLS_CODEPAGE_874 is not set
++# CONFIG_NLS_ISO8859_8 is not set
++# CONFIG_NLS_CODEPAGE_1250 is not set
++# CONFIG_NLS_CODEPAGE_1251 is not set
++# CONFIG_NLS_ASCII is not set
++CONFIG_NLS_ISO8859_1=y
++# CONFIG_NLS_ISO8859_2 is not set
++# CONFIG_NLS_ISO8859_3 is not set
++# CONFIG_NLS_ISO8859_4 is not set
++# CONFIG_NLS_ISO8859_5 is not set
++# CONFIG_NLS_ISO8859_6 is not set
++# CONFIG_NLS_ISO8859_7 is not set
++# CONFIG_NLS_ISO8859_9 is not set
++# CONFIG_NLS_ISO8859_13 is not set
++# CONFIG_NLS_ISO8859_14 is not set
++# CONFIG_NLS_ISO8859_15 is not set
++# CONFIG_NLS_KOI8_R is not set
++# CONFIG_NLS_KOI8_U is not set
++# CONFIG_NLS_UTF8 is not set
++
++#
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
++# Kernel hacking
++#
++# CONFIG_PRINTK_TIME is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_MAGIC_SYSRQ=y
++CONFIG_LOG_BUF_SHIFT=14
++CONFIG_DETECT_SOFTLOCKUP=y
++# CONFIG_SCHEDSTATS is not set
++CONFIG_DEBUG_SLAB=y
++CONFIG_DEBUG_SPINLOCK=y
++# 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=y
++CONFIG_DEBUG_WAITQ=y
++CONFIG_DEBUG_ERRORS=y
++CONFIG_DEBUG_LL=y
++# CONFIG_DEBUG_ICEDCC is not set
++
++#
++# Security options
++#
++# CONFIG_KEYS is not set
++# CONFIG_SECURITY is not set
++
++#
++# Cryptographic options
++#
++# CONFIG_CRYPTO is not set
++
++#
++# Hardware crypto devices
++#
++
++#
++# Library routines
++#
++# CONFIG_CRC_CCITT is not set
++# CONFIG_CRC16 is not set
++CONFIG_CRC32=y
++CONFIG_LIBCRC32C=y
+diff -urN linux-2.6.15.commit/arch/arm/Kconfig linux-2.6.15.snap/arch/arm/Kconfig
+--- linux-2.6.15.commit/arch/arm/Kconfig 2006-02-12 10:22:17.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/Kconfig 2006-02-20 13:56:20.000000000 +0100
+@@ -103,6 +103,13 @@
+ Ethernet interface, two PCMCIA sockets, two serial ports and a
+ parallel port.
+
++config ARCH_EP93XX
++ bool "EP93xx-based"
++ select ARM_AMBA
++ select ARM_VIC
++ help
++ This enables support for the Cirrus EP93xx series of CPUs.
++
+ config ARCH_CAMELOT
+ bool "Epxa10db"
+ help
+@@ -219,6 +226,8 @@
+
+ source "arch/arm/mach-clps711x/Kconfig"
+
++source "arch/arm/mach-ep93xx/Kconfig"
++
+ source "arch/arm/mach-epxa10db/Kconfig"
+
+ source "arch/arm/mach-footbridge/Kconfig"
+diff -urN linux-2.6.15.commit/arch/arm/mach-ep93xx/core.c linux-2.6.15.snap/arch/arm/mach-ep93xx/core.c
+--- linux-2.6.15.commit/arch/arm/mach-ep93xx/core.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mach-ep93xx/core.c 2006-02-28 01:41:25.000000000 +0100
+@@ -0,0 +1,223 @@
++/*
++ * arch/arm/mach-ep93xx/core.c
++ * Core routines for Cirrus EP93xx chips.
++ *
++ * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * Thanks go to Michael Burian and Ray Lehtiniemi for their key
++ * role in the ep93xx linux community.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/spinlock.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/serial.h>
++#include <linux/tty.h>
++#include <linux/bitops.h>
++#include <linux/serial.h>
++#include <linux/serial_8250.h>
++#include <linux/serial_core.h>
++#include <linux/device.h>
++#include <linux/mm.h>
++#include <linux/time.h>
++#include <linux/timex.h>
++#include <linux/delay.h>
++
++#include <asm/types.h>
++#include <asm/setup.h>
++#include <asm/memory.h>
++#include <asm/hardware.h>
++#include <asm/irq.h>
++#include <asm/system.h>
++#include <asm/tlbflush.h>
++#include <asm/pgtable.h>
++#include <asm/io.h>
++
++#include <asm/mach/map.h>
++#include <asm/mach/time.h>
++#include <asm/mach/irq.h>
++
++#include <asm/hardware/amba.h>
++#include <asm/hardware/vic.h>
++
++
++/*************************************************************************
++ * Static I/O mappings that are needed for all EP93xx platforms
++ *************************************************************************/
++static struct map_desc ep93xx_io_desc[] __initdata = {
++ {
++ .virtual = EP93XX_AHB_VIRT_BASE,
++ .pfn = __phys_to_pfn(EP93XX_AHB_PHYS_BASE),
++ .length = EP93XX_AHB_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = EP93XX_APB_VIRT_BASE,
++ .pfn = __phys_to_pfn(EP93XX_APB_PHYS_BASE),
++ .length = EP93XX_APB_SIZE,
++ .type = MT_DEVICE,
++ },
++};
++
++void __init ep93xx_map_io(void)
++{
++ iotable_init(ep93xx_io_desc, ARRAY_SIZE(ep93xx_io_desc));
++}
++
++
++/*************************************************************************
++ * Timer handling for EP93xx
++ *************************************************************************
++ * The ep93xx has four internal timers. Timers 1, 2 (both 16 bit) and
++ * 3 (32 bit) count down at 508 kHz, are self-reloading, and can generate
++ * an interrupt on underflow. Timer 4 (40 bit) counts down at 983.04 kHz,
++ * is free-running, and can't generate interrupts.
++ *
++ * The 508 kHz timers are ideal for use for the timer interrupt, as the
++ * most common values of HZ divide 508 kHz nicely. We pick one of the 16
++ * bit timers (timer 1) since we don't need more than 16 bits of reload
++ * value as long as HZ >= 8.
++ *
++ * The higher clock rate of timer 4 makes it a better choice than the
++ * other timers for use in gettimeoffset(), while the fact that it can't
++ * generate interrupts means we don't have to worry about not being able
++ * to use this timer for something else. We also use timer 4 for keeping
++ * track of lost jiffies.
++ */
++static unsigned int last_jiffy_time;
++
++#define TIMER4_TICKS_PER_JIFFY ((983040 + (HZ/2)) / HZ)
++
++static int ep93xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ write_seqlock(&xtime_lock);
++
++ __raw_writel(1, EP93XX_TIMER1_CLEAR);
++ while (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time
++ >= TIMER4_TICKS_PER_JIFFY) {
++ last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
++ timer_tick(regs);
++ }
++
++ write_sequnlock(&xtime_lock);
++
++ return IRQ_HANDLED;
++}
++
++static struct irqaction ep93xx_timer_irq = {
++ .name = "ep93xx timer",
++ .flags = SA_INTERRUPT | SA_TIMER,
++ .handler = ep93xx_timer_interrupt,
++};
++
++static void __init ep93xx_timer_init(void)
++{
++ /* Enable periodic HZ timer. */
++ __raw_writel(0x48, EP93XX_TIMER1_CONTROL);
++ __raw_writel((CLOCK_TICK_RATE / HZ) - 1, EP93XX_TIMER1_LOAD);
++ __raw_writel(0xc8, EP93XX_TIMER1_CONTROL);
++
++ /* Enable lost jiffy timer. */
++ __raw_writel(0x100, EP93XX_TIMER4_VALUE_HIGH);
++
++ setup_irq(IRQ_EP93XX_TIMER1, &ep93xx_timer_irq);
++}
++
++static unsigned long ep93xx_gettimeoffset(void)
++{
++ int offset;
++
++ offset = __raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time;
++
++ /* Calculate (1000000 / 983040) * offset. */
++ return offset + (53 * offset / 3072);
++}
++
++struct sys_timer ep93xx_timer = {
++ .init = ep93xx_timer_init,
++ .offset = ep93xx_gettimeoffset,
++};
++
++
++/*************************************************************************
++ * EP93xx IRQ handling
++ *************************************************************************/
++void __init ep93xx_init_irq(void)
++{
++ vic_init((void *)EP93XX_VIC1_BASE, 0, EP93XX_VIC1_VALID_IRQ_MASK);
++ vic_init((void *)EP93XX_VIC2_BASE, 32, EP93XX_VIC2_VALID_IRQ_MASK);
++}
++
++
++/*************************************************************************
++ * EP93xx peripheral handling
++ *************************************************************************/
++static struct amba_device uart1_device = {
++ .dev = {
++ .bus_id = "apb:uart1",
++ },
++ .res = {
++ .start = EP93XX_UART1_BASE,
++ .end = EP93XX_UART1_BASE + 0xfff,
++ .flags = IORESOURCE_MEM,
++ },
++ .irq = { IRQ_EP93XX_UART1, NO_IRQ },
++ .periphid = 0x0041010,
++};
++
++static struct amba_device uart2_device = {
++ .dev = {
++ .bus_id = "apb:uart2",
++ },
++ .res = {
++ .start = EP93XX_UART2_BASE,
++ .end = EP93XX_UART2_BASE + 0xfff,
++ .flags = IORESOURCE_MEM,
++ },
++ .irq = { IRQ_EP93XX_UART2, NO_IRQ },
++ .periphid = 0x0041010,
++};
++
++static struct resource ep93xx_ohci_resources[] = {
++ [0] = {
++ .start = EP93XX_USB_BASE,
++ .end = EP93XX_USB_BASE + 0xffff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = IRQ_EP93XX_USB,
++ .end = IRQ_EP93XX_USB,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++static struct platform_device ep93xx_ohci_device = {
++ .name = "ep93xx-ohci",
++ .id = -1,
++ .dev = {
++ .dma_mask = (void *)0xffffffff,
++ .coherent_dma_mask = 0xffffffff,
++ },
++ .num_resources = ARRAY_SIZE(ep93xx_ohci_resources),
++ .resource = ep93xx_ohci_resources,
++};
++
++void __init ep93xx_init_devices(void)
++{
++#if 0
++ __raw_writel(__raw_readl(EP93XX_SYSCON_CLOCK_CONTROL) |
++ EP93XX_SYSCON_CLOCK_UARTBAUD,
++ EP93XX_SYSCON_CLOCK_CONTROL);
++#endif
++
++ amba_device_register(&uart1_device, &iomem_resource);
++ amba_device_register(&uart2_device, &iomem_resource);
++ platform_device_register(&ep93xx_ohci_device);
++}
+diff -urN linux-2.6.15.commit/arch/arm/mach-ep93xx/gesbc9312.c linux-2.6.15.snap/arch/arm/mach-ep93xx/gesbc9312.c
+--- linux-2.6.15.commit/arch/arm/mach-ep93xx/gesbc9312.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mach-ep93xx/gesbc9312.c 2006-02-20 22:30:19.000000000 +0100
+@@ -0,0 +1,40 @@
++/*
++ * arch/arm/mach-ep93xx/gesbc9312.c
++ * Glomation GESBC-9312-sx support.
++ *
++ * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/mtd/physmap.h>
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++
++static void __init gesbc9312_init_machine(void)
++{
++ ep93xx_init_devices();
++ physmap_configure(0x60000000, 0x02000000, 1, NULL);
++}
++
++MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
++ /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
++ .phys_io = EP93XX_APB_PHYS_BASE,
++ .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
++ .boot_params = 0x00000100,
++ .map_io = ep93xx_map_io,
++ .init_irq = ep93xx_init_irq,
++ .timer = &ep93xx_timer,
++ .init_machine = gesbc9312_init_machine,
++MACHINE_END
+diff -urN linux-2.6.15.commit/arch/arm/mach-ep93xx/Kconfig linux-2.6.15.snap/arch/arm/mach-ep93xx/Kconfig
+--- linux-2.6.15.commit/arch/arm/mach-ep93xx/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mach-ep93xx/Kconfig 2006-02-19 18:09:49.000000000 +0100
+@@ -0,0 +1,21 @@
++if ARCH_EP93XX
++
++menu "Cirrus EP93xx Implementation Options"
++
++comment "EP93xx Platforms"
++
++config MACH_GESBC9312
++ bool "Support Glomation GESBC-9312-sx"
++ help
++ Say 'Y' here if you want your kernel to support the Glomation
++ GESBC-9312-sx board.
++
++config MACH_TS72XX
++ bool "Support Technologic Systems TS-72xx SBC"
++ help
++ Say 'Y' here if you want your kernel to support the TS-72xx
++ board.
++
++endmenu
++
++endif
+diff -urN linux-2.6.15.commit/arch/arm/mach-ep93xx/Makefile linux-2.6.15.snap/arch/arm/mach-ep93xx/Makefile
+--- linux-2.6.15.commit/arch/arm/mach-ep93xx/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mach-ep93xx/Makefile 2006-02-19 17:47:43.000000000 +0100
+@@ -0,0 +1,10 @@
++#
++# Makefile for the linux kernel.
++#
++obj-y := core.o
++obj-m :=
++obj-n :=
++obj- :=
++
++obj-$(CONFIG_MACH_GESBC9312) += gesbc9312.o
++obj-$(CONFIG_MACH_TS72XX) += ts72xx.o
+diff -urN linux-2.6.15.commit/arch/arm/mach-ep93xx/Makefile.boot linux-2.6.15.snap/arch/arm/mach-ep93xx/Makefile.boot
+--- linux-2.6.15.commit/arch/arm/mach-ep93xx/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mach-ep93xx/Makefile.boot 2006-02-19 22:04:54.000000000 +0100
+@@ -0,0 +1,2 @@
++ zreladdr-y := 0x00008000
++params_phys-y := 0x00000100
+diff -urN linux-2.6.15.commit/arch/arm/mach-ep93xx/ts72xx.c linux-2.6.15.snap/arch/arm/mach-ep93xx/ts72xx.c
+--- linux-2.6.15.commit/arch/arm/mach-ep93xx/ts72xx.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mach-ep93xx/ts72xx.c 2006-02-22 17:01:43.000000000 +0100
+@@ -0,0 +1,118 @@
++/*
++ * arch/arm/mach-ep93xx/ts72xx.c
++ * Technologic Systems TS72xx SBC support.
++ *
++ * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/mm.h>
++#include <linux/sched.h>
++#include <linux/interrupt.h>
++#include <linux/mtd/physmap.h>
++#include <asm/io.h>
++#include <asm/hardware.h>
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/map.h>
++
++static struct map_desc ts72xx_io_desc[] __initdata = {
++ {
++ .virtual = TS72XX_MODEL_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_MODEL_PHYS_BASE),
++ .length = TS72XX_MODEL_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = TS72XX_OPTIONS_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_OPTIONS_PHYS_BASE),
++ .length = TS72XX_OPTIONS_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = TS72XX_OPTIONS2_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_OPTIONS2_PHYS_BASE),
++ .length = TS72XX_OPTIONS2_SIZE,
++ .type = MT_DEVICE,
++ }
++};
++
++static struct map_desc ts72xx_nand_io_desc[] __initdata = {
++ {
++ .virtual = TS72XX_NAND_DATA_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_NAND1_DATA_PHYS_BASE),
++ .length = TS72XX_NAND_DATA_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = TS72XX_NAND_CONTROL_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_NAND1_CONTROL_PHYS_BASE),
++ .length = TS72XX_NAND_CONTROL_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = TS72XX_NAND_BUSY_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_NAND1_BUSY_PHYS_BASE),
++ .length = TS72XX_NAND_BUSY_SIZE,
++ .type = MT_DEVICE,
++ }
++};
++
++static struct map_desc ts72xx_alternate_nand_io_desc[] __initdata = {
++ {
++ .virtual = TS72XX_NAND_DATA_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_NAND2_DATA_PHYS_BASE),
++ .length = TS72XX_NAND_DATA_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = TS72XX_NAND_CONTROL_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_NAND2_CONTROL_PHYS_BASE),
++ .length = TS72XX_NAND_CONTROL_SIZE,
++ .type = MT_DEVICE,
++ }, {
++ .virtual = TS72XX_NAND_BUSY_VIRT_BASE,
++ .pfn = __phys_to_pfn(TS72XX_NAND2_BUSY_PHYS_BASE),
++ .length = TS72XX_NAND_BUSY_SIZE,
++ .type = MT_DEVICE,
++ }
++};
++
++static void __init ts72xx_map_io(void)
++{
++ ep93xx_map_io();
++ iotable_init(ts72xx_io_desc, ARRAY_SIZE(ts72xx_io_desc));
++
++ /*
++ * The TS-7200 has NOR flash, the other models have NAND flash.
++ */
++ if (board_is_ts7200()) {
++ physmap_configure(TS72XX_NOR_PHYS_BASE, 0x01000000, 1, NULL);
++ } else {
++ if (is_ts9420_installed()) {
++ iotable_init(ts72xx_alternate_nand_io_desc,
++ ARRAY_SIZE(ts72xx_alternate_nand_io_desc));
++ } else {
++ iotable_init(ts72xx_nand_io_desc,
++ ARRAY_SIZE(ts72xx_nand_io_desc));
++ }
++ }
++}
++
++static void __init ts72xx_init_machine(void)
++{
++ ep93xx_init_devices();
++}
++
++MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
++ /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
++ .phys_io = EP93XX_APB_PHYS_BASE,
++ .io_pg_offst = ((EP93XX_APB_VIRT_BASE) >> 18) & 0xfffc,
++ .boot_params = 0x00000100,
++ .map_io = ts72xx_map_io,
++ .init_irq = ep93xx_init_irq,
++ .timer = &ep93xx_timer,
++ .init_machine = ts72xx_init_machine,
++MACHINE_END
+diff -urN linux-2.6.15.commit/arch/arm/Makefile linux-2.6.15.snap/arch/arm/Makefile
+--- linux-2.6.15.commit/arch/arm/Makefile 2006-02-12 10:22:18.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/Makefile 2006-02-19 17:29:10.000000000 +0100
+@@ -102,6 +102,7 @@
+ machine-$(CONFIG_ARCH_H720X) := h720x
+ machine-$(CONFIG_ARCH_AAEC2000) := aaec2000
+ machine-$(CONFIG_ARCH_REALVIEW) := realview
++ machine-$(CONFIG_ARCH_EP93XX) := ep93xx
+
+ ifeq ($(CONFIG_ARCH_EBSA110),y)
+ # This is what happens if you forget the IOCS16 line.
+diff -urN linux-2.6.15.commit/arch/arm/mm/Kconfig linux-2.6.15.snap/arch/arm/mm/Kconfig
+--- linux-2.6.15.commit/arch/arm/mm/Kconfig 2006-02-12 10:22:18.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/mm/Kconfig 2006-02-19 19:14:48.000000000 +0100
+@@ -62,7 +62,7 @@
+ # ARM920T
+ config CPU_ARM920T
+ bool "Support ARM920T processor" if !ARCH_S3C2410
+- depends on ARCH_INTEGRATOR || ARCH_S3C2410 || ARCH_IMX || ARCH_AAEC2000
++ depends on ARCH_EP93XX || ARCH_INTEGRATOR || ARCH_S3C2410 || ARCH_IMX || ARCH_AAEC2000
+ default y if ARCH_S3C2410
+ select CPU_32v4
+ select CPU_ABRT_EV4T
+diff -urN linux-2.6.15.commit/arch/arm/tools/mach-types linux-2.6.15.snap/arch/arm/tools/mach-types
+--- linux-2.6.15.commit/arch/arm/tools/mach-types 2006-02-12 10:22:18.000000000 +0100
++++ linux-2.6.15.snap/arch/arm/tools/mach-types 2006-02-19 19:49:29.000000000 +0100
+@@ -910,3 +910,4 @@
+ nadia2vb MACH_NADIA2VB NADIA2VB 897
+ r1000 MACH_R1000 R1000 898
+ hw90250 MACH_HW90250 HW90250 899
++gesbc9312 MACH_GESBC9312 GESBC9312 958
+diff -urN linux-2.6.15.commit/drivers/mtd/maps/physmap.c linux-2.6.15.snap/drivers/mtd/maps/physmap.c
+--- linux-2.6.15.commit/drivers/mtd/maps/physmap.c 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/mtd/maps/physmap.c 2006-02-20 21:14:23.000000000 +0100
+@@ -51,6 +51,9 @@
+ static const char *rom_probe_types[] = { "cfi_probe", "jedec_probe", "map_rom", NULL };
+ const char **type;
+
++ if (!physmap_map.size)
++ return -EIO;
++
+ printk(KERN_NOTICE "physmap flash device: %lx at %lx\n", physmap_map.size, physmap_map.phys);
+ physmap_map.virt = ioremap(physmap_map.phys, physmap_map.size);
+
+diff -urN linux-2.6.15.commit/drivers/mtd/nand/Kconfig linux-2.6.15.snap/drivers/mtd/nand/Kconfig
+--- linux-2.6.15.commit/drivers/mtd/nand/Kconfig 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/mtd/nand/Kconfig 2006-02-20 21:20:41.000000000 +0100
+@@ -55,6 +55,12 @@
+ help
+ Support for NAND flash on Texas Instruments Toto platform.
+
++config MTD_NAND_TS7250
++ tristate "NAND Flash device on TS-7250 board"
++ depends on MACH_TS72XX && MTD_NAND
++ help
++ Support for NAND flash on Technologic Systems TS-7250 platform.
++
+ config MTD_NAND_IDS
+ tristate
+
+diff -urN linux-2.6.15.commit/drivers/mtd/nand/Makefile linux-2.6.15.snap/drivers/mtd/nand/Makefile
+--- linux-2.6.15.commit/drivers/mtd/nand/Makefile 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/mtd/nand/Makefile 2006-02-20 21:19:38.000000000 +0100
+@@ -17,6 +17,7 @@
+ obj-$(CONFIG_MTD_NAND_H1900) += h1910.o
+ obj-$(CONFIG_MTD_NAND_RTC_FROM4) += rtc_from4.o
+ obj-$(CONFIG_MTD_NAND_SHARPSL) += sharpsl.o
++obj-$(CONFIG_MTD_NAND_TS7250) += ts7250.o
+ obj-$(CONFIG_MTD_NAND_NANDSIM) += nandsim.o
+
+ nand-objs = nand_base.o nand_bbt.o
+diff -urN linux-2.6.15.commit/drivers/mtd/nand/ts7250.c linux-2.6.15.snap/drivers/mtd/nand/ts7250.c
+--- linux-2.6.15.commit/drivers/mtd/nand/ts7250.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/drivers/mtd/nand/ts7250.c 2006-02-22 17:07:53.000000000 +0100
+@@ -0,0 +1,212 @@
++/*
++ * drivers/mtd/nand/ts7250.c
++ *
++ * Copyright (C) 2004 Technologic Systems (support@embeddedARM.com)
++ *
++ * Derived from drivers/mtd/nand/edb7312.c
++ * Copyright (C) 2004 Marius Gröger (mag@sysgo.de)
++ *
++ * Derived from drivers/mtd/nand/autcpu12.c
++ * Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de)
++ *
++ * $Id: ts7250.c,v 1.4 2004/12/30 22:02:07 joff Exp $
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * Overview:
++ * This is a device driver for the NAND flash device found on the
++ * TS-7250 board which utilizes a Samsung 32 Mbyte part.
++ */
++
++#include <linux/slab.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/nand.h>
++#include <linux/mtd/partitions.h>
++#include <asm/io.h>
++#include <asm/arch/hardware.h>
++#include <asm/sizes.h>
++
++/*
++ * MTD structure for TS7250 board
++ */
++static struct mtd_info *ts7250_mtd = NULL;
++
++
++/*
++ * Module stuff
++ */
++static void *ts7250_nandctrl = (void *)TS72XX_NAND_CONTROL_VIRT_BASE;
++static void *ts7250_nandbusy = (void *)TS72XX_NAND_BUSY_VIRT_BASE;
++
++#ifdef CONFIG_MTD_PARTITIONS
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info32[] = {
++ {
++ .name = "TS-BOOTROM",
++ .offset = 0x00000000,
++ .size = 0x00004000,
++ }, {
++ .name = "Linux",
++ .offset = 0x00004000,
++ .size = 0x01d00000,
++ }, {
++ .name = "RedBoot",
++ .offset = 0x01d04000,
++ .size = 0x002fc000,
++ },
++};
++
++/*
++ * Define static partitions for flash device
++ */
++static struct mtd_partition partition_info128[] = {
++ {
++ .name = "TS-BOOTROM",
++ .offset = 0x00000000,
++ .size = 0x00004000,
++ }, {
++ .name = "Linux",
++ .offset = 0x00004000,
++ .size = 0x07d00000,
++ }, {
++ .name = "RedBoot",
++ .offset = 0x07d04000,
++ .size = 0x002fc000,
++ },
++};
++
++#define NUM_PARTITIONS 3
++
++extern int parse_cmdline_partitions(struct mtd_info *master,
++ struct mtd_partition **pparts, const char *mtd_id);
++#endif
++
++
++/*
++ * hardware specific access to control-lines
++ */
++static void ts7250_hwcontrol(struct mtd_info *mtd, int cmd)
++{
++ switch(cmd) {
++ case NAND_CTL_SETCLE:
++ writeb(readb(ts7250_nandctrl) | 0x2, ts7250_nandctrl);
++ break;
++ case NAND_CTL_CLRCLE:
++ writeb(readb(ts7250_nandctrl) & ~0x2, ts7250_nandctrl);
++ break;
++ case NAND_CTL_SETALE:
++ writeb(readb(ts7250_nandctrl) | 0x1, ts7250_nandctrl);
++ break;
++ case NAND_CTL_CLRALE:
++ writeb(readb(ts7250_nandctrl) & ~0x1, ts7250_nandctrl);
++ break;
++ case NAND_CTL_SETNCE:
++ writeb(readb(ts7250_nandctrl) | 0x4, ts7250_nandctrl);
++ break;
++ case NAND_CTL_CLRNCE:
++ writeb(readb(ts7250_nandctrl) & ~0x4, ts7250_nandctrl);
++ break;
++ }
++}
++
++/*
++ * read device ready pin
++ */
++static int ts7250_device_ready(struct mtd_info *mtd)
++{
++ return readb(ts7250_nandbusy) & 0x20;
++}
++
++/*
++ * Main initialization routine
++ */
++static int __init ts7250_init (void)
++{
++ struct nand_chip *this;
++ const char *part_type = 0;
++ int mtd_parts_nb = 0;
++ struct mtd_partition *mtd_parts = 0;
++
++ if (board_is_ts7200())
++ return -ENXIO;
++
++ /* Allocate memory for MTD device structure and private data */
++ ts7250_mtd = kmalloc(sizeof(struct mtd_info) +
++ sizeof(struct nand_chip), GFP_KERNEL);
++ if (!ts7250_mtd) {
++ printk("Unable to allocate TS7250 NAND MTD device structure.\n");
++ return -ENOMEM;
++ }
++
++ /* Get pointer to private data */
++ this = (struct nand_chip *) (&ts7250_mtd[1]);
++
++ /* Initialize structures */
++ memset(ts7250_mtd, 0, sizeof(struct mtd_info));
++ memset(this, 0, sizeof(struct nand_chip));
++
++ /* Link the private data with the MTD structure */
++ ts7250_mtd->priv = this;
++
++ /* insert callbacks */
++ this->IO_ADDR_R = (void *)TS72XX_NAND_DATA_VIRT_BASE;
++ this->IO_ADDR_W = (void *)TS72XX_NAND_DATA_VIRT_BASE;
++ this->hwcontrol = ts7250_hwcontrol;
++ this->dev_ready = ts7250_device_ready;
++ this->chip_delay = 15;
++ this->eccmode = NAND_ECC_SOFT;
++
++ printk("Searching for NAND flash...\n");
++ /* Scan to find existence of the device */
++ if (nand_scan (ts7250_mtd, 1)) {
++ kfree (ts7250_mtd);
++ return -ENXIO;
++ }
++
++#ifdef CONFIG_MTD_CMDLINE_PARTS
++ mtd_parts_nb = parse_cmdline_partitions(ts7250_mtd, &mtd_parts,
++ "ts7250-nand");
++ if (mtd_parts_nb > 0)
++ part_type = "command line";
++ else
++ mtd_parts_nb = 0;
++#endif
++ if (mtd_parts_nb == 0) {
++ mtd_parts = partition_info32;
++ if (ts7250_mtd->size >= (128 * 0x100000))
++ mtd_parts = partition_info128;
++ mtd_parts_nb = NUM_PARTITIONS;
++ part_type = "static";
++ }
++
++ /* Register the partitions */
++ printk(KERN_NOTICE "Using %s partition definition\n", part_type);
++ add_mtd_partitions(ts7250_mtd, mtd_parts, mtd_parts_nb);
++
++ /* Return happy */
++ return 0;
++}
++module_init(ts7250_init);
++
++/*
++ * Clean up routine
++ */
++static void __exit ts7250_cleanup (void)
++{
++ /* Unregister the device */
++ del_mtd_device (ts7250_mtd);
++
++ /* Free the MTD device structure */
++ kfree (ts7250_mtd);
++}
++module_exit(ts7250_cleanup);
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Jesse Off <joff@embeddedARM.com>");
++MODULE_DESCRIPTION("MTD map driver for Technologic Systems TS-7250 board");
+diff -urN linux-2.6.15.commit/drivers/net/arm/ep93xx_eth_need_rewrite.c linux-2.6.15.snap/drivers/net/arm/ep93xx_eth_need_rewrite.c
+--- linux-2.6.15.commit/drivers/net/arm/ep93xx_eth_need_rewrite.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/drivers/net/arm/ep93xx_eth_need_rewrite.c 2006-02-22 15:54:07.000000000 +0100
+@@ -0,0 +1,1417 @@
++/*
++ * ep93xx_eth.c
++ * Ethernet Device Driver for Cirrus Logic EP93xx.
++ *
++ * Copyright (C) 2003 by Cirrus Logic www.cirrus.com
++ * This software may be used and distributed according to the terms
++ * of the GNU Public License.
++ *
++ * This driver was written based on skeleton.c by Donald Becker and
++ * smc9194.c by Erik Stahlman.
++ *
++ * Getting a MAC address:
++ *
++ * Former versions of this driver got their MAC from I2C EEPROM or even used
++ * hardcoded ones. Unfortunately I had to remove the board dependant I2C stuff,
++ * and use a random generated MAC instead of the hardcoded one. Good news is
++ * the there is support for setting the MAC from userspace now. (see below)
++ *
++ * first consider some potential problems if you use this random generated MAC:
++ *
++ * you can no longer count on it to be really unique
++ * identifying a particular board over network will be difficult
++ * DHCP servers can no longer use the MAC for assigning static IPs
++ * DHCP servers with long leasetimes quickly run out of leases
++ * ...
++ *
++ * So how can you set a valid MAC from userspace then?
++ *
++ * Let's say you've just bought your OUI from IEEE and it's "aa:bb:cc"
++ * Now you'd like to assign the MAC for your EP93xx board with serial #5
++ * MAC = OUI<<24 + serial number = aa:bb:cc:00:00:05
++ *
++ * ifconfig eth0 hw ether aa:bb:cc:00:00:05 # first set the MAC
++ * ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up # then set the IP
++ *
++ * Apart from hardcoding this lines in your startup scripts you could also use
++ * some userspace utility to read (and set) the MAC from eeprom, flash, ...
++ *
++ * History:
++ * 07/19/01 0.1 Sungwook Kim initial release
++ * 10/16/01 0.2 Sungwook Kim add workaround for ignorance of Tx request
++ * while sending frame
++ * add some error stuations handling
++ *
++ * 03/25/03 Melody Lee Modified for EP93xx
++ *
++ * 2004/2005 Michael Burian porting to linux-2.6
++ * 2005-10-12 Michael Burian fix problems when setting MAC with ifconfig
++ * 2005-10-30 Michael Burian cleanups, ethtool support
++ */
++
++/* TODO:
++ * 1. try if it's possible to use skbuff directly for RX/TX (avoid memcpy)
++ * 2. use kzalloc instead of kmalloc+memset
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/types.h>
++#include <linux/fcntl.h>
++#include <linux/interrupt.h>
++#include <linux/ioport.h>
++#include <linux/in.h>
++#include <linux/delay.h>
++#include <linux/slab.h>
++#include <linux/string.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/skbuff.h>
++#include <linux/dma-mapping.h>
++#include <linux/mii.h>
++#include <linux/crc32.h>
++#include <linux/random.h>
++#include <linux/ethtool.h>
++
++#include <asm/system.h>
++#include <asm/bitops.h>
++#include <asm/io.h>
++#include <asm/dma.h>
++#include <asm/irq.h>
++#include <asm/arch/hardware.h>
++
++#include "ep93xx_eth_need_rewrite.h"
++
++#define DRV_NAME "ep93xx_eth"
++#define DRV_VERSION "2.8"
++#define DRV_DATE "2005-11-08"
++
++static const char *version = DRV_NAME ": version " DRV_VERSION " " DRV_DATE \
++ " Cirrus Logic\n";
++
++/* total number of device instance, 0 means the 1st instance. */
++static int num_of_instance;
++static struct net_device * ep93xx_etherdev;
++
++/*
++ * A List of default device port configuration for auto probing.
++ * At this time, the CPU has only one Ethernet device,
++ * but better to support multiple device configuration.
++ * Keep in mind that the array must end in zero.
++ */
++
++/* We get the MAC_BASE from include/asm-arm/arch-ep93xx/regmap.h */
++static struct {
++ unsigned int base_addr; /* base address, (0:end mark) */
++ int irq; /* IRQ number, (0:auto detect) */
++} port_list[] __initdata = {
++ { EP93XX_ETHERNET_BASE, IRQ_EP93XX_ETHERNET },
++ { 0 /* end mark */ , 0 },
++};
++
++/*
++ * Some definitions belong to the operation of this driver.
++ * You should understand how it affect to driver before any modification.
++ */
++
++/* Interrupt Sources in Use */
++#define DEF_INT_SRC (IntEn_TxSQIE|IntEn_RxEOFIE|IntEn_RxEOBIE|IntEn_RxHDRIE)
++
++/*
++ * Length of Device Queue in number of entries
++ * (must be less than or equal to 255)
++ */
++
++/* length of Rx Descriptor Queue (4 or bigger) Must be power of 2. */
++#define LQRXD 64
++#define LQRXS LQRXD /* length of Rx Status Queue */
++
++/* length of Tx Descriptor Queue (4 or bigger) Must be power of 2. */
++#define LQTXD 8
++#define LQTXS LQTXD /* length of Tx Status Queue */
++
++/* Tx Queue fill-up level control */
++#define LVL_TXSTOP LQTXD - 2 /* level to ask the stack to stop Tx */
++#define LVL_TXRESUME 2 /* level to ask the stack to resume Tx */
++
++/* Rx Buffer length in byte */
++#define LRXB (1518+2+16) /* length of Rx buf, must be 4-byte aligned */
++#define LTXB LRXB
++
++#define EP93XX_DEF_MSG (NETIF_MSG_DRV | \
++ NETIF_MSG_PROBE | \
++ NETIF_MSG_LINK | \
++ NETIF_MSG_RX_ERR | \
++ NETIF_MSG_TX_ERR | \
++ NETIF_MSG_HW)
++
++#define DBG(lvl,msg,args...) do { printk(lvl"%s:%d: %s(): " msg, __FILE__, \
++ __LINE__, __FUNCTION__, ## args); } while (0)
++
++/*
++ * Custom Data Structures
++ */
++
++/*
++ * the information about the buffer passed to device.
++ * there are matching bufdsc informations
++ * for each Tx/Rx Descriptor Queue entry to trace
++ * the buffer within those queues.
++ */
++struct bufdsc {
++ /* virtual address representing the buffer passed to device */
++ void *vaddr;
++ /* free routine */
++ int (*free_rout) (void *buf);
++};
++
++/* device private information */
++struct ep93xx_priv {
++ /* static device information */
++ int id; /* device instance ID */
++ /* pointers to various queues (virtual address) */
++ struct rx_dsc *rdq; /* Rx Descriptor Queue */
++ struct rx_sts *rsq; /* Rx Status Queue */
++ struct tx_dsc *tdq; /* Tx Descriptor Queue */
++ struct tx_sts *tsq; /* Tx Status Queue */
++ unsigned char *rxbuf; /* base of Rx Buffer pool */
++ unsigned char *txbuf; /* base of Tx Buffer pool */
++ struct bufdsc *rxbd; /* Rx Buffers info */
++ struct bufdsc *txbd; /* Tx Buffers info */
++ /* physical addresses of the same queues */
++ dma_addr_t p_qbase; /* base */
++ dma_addr_t p_rdq; /* Rx Descriptor Queue */
++ dma_addr_t p_rsq; /* Rx Status Queue */
++ dma_addr_t p_tdq; /* Tx Descriptor Queue */
++ dma_addr_t p_tsq; /* Tx Status Queue */
++ dma_addr_t p_rxbuf; /* Rx Buffer pool */
++ dma_addr_t p_txbuf; /* Tx Buffer pool */
++ /* MII Bus ID of Ethernet PHY */
++ struct mii_if_info mii;
++ /* lock for mii when using ioctls */
++ spinlock_t mii_lock;
++ /* dynamic information, subject to clear when device open */
++ struct net_device_stats stats; /* statistic data */
++ /* next processing index of device queues */
++ int idx_rdq;
++ int idx_rsq;
++ int idx_tdqhead;
++ int idx_tdqtail;
++ int idx_tsq;
++ void __iomem *base_addr; /* base address */
++ u32 msg_enable;
++ int regs_len;
++};
++
++/*
++ * Internal Routines
++ */
++
++static inline unsigned int next_index(unsigned int idx_cur, unsigned int len)
++{
++ return (idx_cur + 1) % len; /* next array index */
++}
++
++static inline u32 _rdl(struct net_device *dev, u32 reg)
++{
++ return readl(((struct ep93xx_priv *)(netdev_priv(dev)))->base_addr + reg);
++}
++
++static inline void _wrl(struct net_device *dev, u32 val, u32 reg)
++{
++ writel(val, ((struct ep93xx_priv *)(netdev_priv(dev)))->base_addr + reg);
++}
++
++static inline void _wrw(struct net_device *dev, u16 val, u32 reg)
++{
++ writew(val, ((struct ep93xx_priv *)(netdev_priv(dev)))->base_addr + reg);
++}
++
++static inline void _wrb(struct net_device *dev, u8 val, u32 reg)
++{
++ writeb(val, ((struct ep93xx_priv *)(netdev_priv(dev)))->base_addr + reg);
++}
++
++/**
++ * wait_on_reg()
++ */
++static int wait_on_reg(struct net_device *dev, int reg, unsigned long mask, unsigned long expect)
++{
++ int i, dt;
++
++ for (i = 0; i < 10000; i++) {
++ dt = _rdl(dev, reg);
++ dt = (dt ^ expect) & mask;
++ if (0 == dt)
++ break;
++ }
++ return dt;
++}
++
++/**
++ * mdio_write()
++ */
++static void mdio_write(struct net_device *dev, int idPhy, int reg, int dt)
++{
++ wait_on_reg(dev, REG_MIISts, MIISts_Busy, ~MIISts_Busy);
++ _wrl(dev, dt, REG_MIIData);
++ _wrl(dev, MIICmd_OP_WR | ((idPhy & 0x1f) << 5) | ((reg & 0x1f) << 0), REG_MIICmd);
++}
++
++/**
++ * mdio_read()
++ */
++static int mdio_read(struct net_device *dev, int idPhy, int reg)
++{
++ int dt;
++
++ wait_on_reg(dev, REG_MIISts, MIISts_Busy, ~MIISts_Busy);
++ _wrl(dev, MIICmd_OP_RD | ((idPhy & 0x1f) << 5) | ((reg & 0x1f) << 0), REG_MIICmd);
++
++ wait_on_reg(dev, REG_MIISts, MIISts_Busy, ~MIISts_Busy);
++ dt = _rdl(dev, REG_MIIData);
++
++ return dt & 0xffff;
++}
++
++/**
++ * phy_init()
++ */
++static void phy_init(struct net_device *dev)
++{
++
++ u32 oldval;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ oldval = _rdl(dev, REG_SelfCTL);
++
++#if 0
++ /* Set MDC clock to be divided by 8 and disable PreambleSuppress bit */
++ _wrl(dev, 0x0e00, REG_SelfCTL);
++#else
++ /* Set MDC clock to be divided by 32 and disable PreambleSuppress bit */
++ _wrl(dev, 0x6200, REG_SelfCTL);
++#endif
++
++ if (mii_link_ok(&(priv->mii)))
++ mii_check_media(&(priv->mii), netif_msg_link(priv), 1);
++
++ /* restore the old value */
++ _wrl(dev, oldval, REG_SelfCTL);
++}
++
++/**
++ * devQue_start()
++ *
++ * make descriptor queues active
++ * allocate queue entries if needed
++ * and set device registers up to make it operational
++ * assume device has been initialized
++ */
++static int devQue_start(struct net_device *dev)
++{
++ int err;
++ int i;
++ void *buf;
++ u32 phy_addr;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* turn off device bus mastering */
++ _wrl(dev, BMCtl_RxDis | BMCtl_TxDis | _rdl(dev, REG_BMCtl), REG_BMCtl);
++ err = wait_on_reg(dev, REG_BMSts, BMSts_TxAct, ~BMSts_TxAct);
++ err |= wait_on_reg(dev, REG_BMSts, BMSts_RxAct, ~BMSts_RxAct);
++ if (err && netif_msg_hw(priv))
++ DBG(KERN_ERR, "%s: BM does not stop\n", dev->name);
++
++ /* Tx Status Queue */
++ memset(priv->tsq, 0, sizeof(priv->tsq[0]) * LQTXS);
++ priv->idx_tsq = 0;
++ _wrl(dev, priv->p_tsq, REG_TxSBA);
++ _wrl(dev, priv->p_tsq, REG_TxSCA);
++ _wrw(dev, sizeof(priv->tsq[0]) * LQTXS, REG_TxSBL);
++ _wrw(dev, sizeof(priv->tsq[0]) * LQTXS, REG_TxSCL);
++
++ /* Tx Descriptor Queue */
++ memset(priv->tdq, 0, sizeof(priv->tdq[0]) * LQTXD);
++ priv->idx_tdqhead = priv->idx_tdqtail = 0;
++ _wrl(dev, priv->p_tdq, REG_TxDBA);
++ _wrl(dev, priv->p_tdq, REG_TxDCA);
++ _wrw(dev, sizeof(priv->tdq[0]) * LQTXD, REG_TxDBL);
++ _wrw(dev, sizeof(priv->tdq[0]) * LQTXD, REG_TxDCL);
++
++ /* Rx Status Queue */
++ memset(priv->rsq, 0, sizeof(priv->rsq[0]) * LQRXS);
++ priv->idx_rsq = 0;
++ _wrl(dev, priv->p_rsq, REG_RxSBA);
++ _wrl(dev, priv->p_rsq, REG_RxSCA);
++ _wrw(dev, sizeof(priv->rsq[0]) * LQRXS, REG_RxSBL);
++ _wrw(dev, sizeof(priv->rsq[0]) * LQRXS, REG_RxSCL);
++
++ /* Rx Descriptor Queue */
++ memset(priv->rdq, 0, sizeof(priv->rdq[0]) * LQRXD);
++ phy_addr = priv->p_rxbuf;
++ for (i = 0; i < LQRXD; i++) {
++ priv->rdq[i].bi = i; /* index */
++ priv->rdq[i].ba = phy_addr; /* physical address */
++ priv->rdq[i].bl = LRXB; /* length */
++ phy_addr += LRXB;
++ }
++ priv->idx_rdq = 0;
++ _wrl(dev, priv->p_rdq, REG_RxDBA);
++ _wrl(dev, priv->p_rdq, REG_RxDCA);
++ _wrw(dev, sizeof(priv->rdq[0]) * LQRXD, REG_RxDBL);
++ _wrw(dev, sizeof(priv->rdq[0]) * LQRXD, REG_RxDCL);
++
++ /* init Rx Buffer Descriptors */
++ buf = priv->rxbuf;
++ for (i = 0; i < LQRXD; i++) {
++ priv->rxbd[i].vaddr = buf;
++ priv->rxbd[i].free_rout = NULL;
++ buf += LRXB;
++ }
++
++ /* init Tx Buffer Descriptors */
++ memset(priv->txbd, 0x0, sizeof(*priv->txbd) * LQTXD);
++
++ buf = priv->txbuf;
++ for (i = 0; i < LQTXD; i++) {
++ priv->txbd[i].vaddr = buf;
++ priv->txbd[i].free_rout = NULL;
++ buf += LTXB;
++ }
++
++ /* turn on device bus mastering */
++ _wrl(dev, BMCtl_TxEn | BMCtl_RxEn | _rdl(dev, REG_BMCtl), REG_BMCtl);
++ err = wait_on_reg(dev, REG_BMSts, BMSts_TxAct | BMSts_TxAct, BMSts_TxAct | BMSts_TxAct);
++ if (err && netif_msg_hw(priv))
++ DBG(KERN_ERR, "%s: BM does not start\n", dev->name);
++
++ /* Enqueue whole entries; this must be done after BM activation */
++ _wrl(dev, LQRXS, REG_RxSEQ); /* Rx Status Queue */
++ _wrl(dev, LQRXD, REG_RxDEQ); /* Rx Desc. queue */
++
++ return 0;
++}
++
++/**
++ * devQue_init()
++ * init device descriptor queues at system level
++ * device access is not recommended at this point
++ *
++ */
++static int devQue_init(struct net_device *dev)
++{
++ void *buf;
++ void *tmp;
++ int size, size2;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* verify device Tx/Rx Descriptor/Status Queue data size */
++ if (8 != sizeof(struct rx_dsc)) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "sizeof rx_dsc != 8 bytes!\n");
++ return -ENOMEM;
++ } else if (8 != sizeof(struct rx_sts)) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "sizeof rx_sts != 8 bytes!\n");
++ return -ENOMEM;
++ } else if (8 != sizeof(struct tx_dsc)) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "sizeof tx_dsc != 8 bytes!\n");
++ return -ENOMEM;
++ } else if (4 != sizeof(struct tx_sts)) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "sizeof tx_sts != 4 bytes!\n");
++ return -ENOMEM;
++ }
++
++ /*
++ allocate kernel memory for whole queues
++ best if non-cached memory block due to DMA access by the device
++ if CPU doesn't have bus snooping
++ */
++ size = sizeof(struct rx_dsc) * (LQRXD + 1) +
++ sizeof(struct rx_sts) * (LQRXS + 1) +
++ sizeof(struct tx_dsc) * (LQTXD + 1) +
++ sizeof(struct tx_sts) * (LQTXS + 1) + sizeof(unsigned long) * 4;
++
++ buf = tmp = dma_alloc_coherent(NULL, size, &priv->p_qbase, GFP_KERNEL | GFP_DMA);
++ if (!buf) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "no memory for queue\n");
++ return -ENOMEM;
++ }
++
++ /*
++ * assign memory to each queue
++ */
++ priv->rdq = buf;
++ buf = buf + sizeof(struct rx_dsc) * (LQRXD + 1);
++ priv->rsq = buf;
++ buf = buf + sizeof(struct rx_sts) * (LQRXS + 1);
++ priv->tdq = buf;
++ buf = buf + sizeof(struct tx_dsc) * (LQTXD + 1);
++ priv->tsq = buf;
++ buf = buf + sizeof(struct tx_sts) * (LQTXS + 1);
++
++ /*
++ * store physical address of each queue
++ */
++ priv->p_rdq = priv->p_qbase;
++ priv->p_rsq = priv->p_rdq + ((u32) priv->rsq - (u32) priv->rdq);
++ priv->p_tdq = priv->p_rdq + ((u32) priv->tdq - (u32) priv->rdq);
++ priv->p_tsq = priv->p_rdq + ((u32) priv->tsq - (u32) priv->rdq);
++
++ /*
++ * init queue entries
++ */
++ memset(priv->rdq, 0, sizeof(struct rx_dsc) * LQRXD);
++ memset(priv->rsq, 0, sizeof(struct rx_sts) * LQRXS);
++ memset(priv->tdq, 0, sizeof(struct tx_dsc) * LQTXD);
++ memset(priv->tsq, 0, sizeof(struct tx_sts) * LQTXS);
++
++ /* Allocate Rx Buffer
++ (We might need to copy from Rx buf to skbuff in whatever case,
++ because device bus master requires 32bit aligned Rx buffer address
++ but Linux network stack requires odd 16bit aligned Rx buf address) */
++ priv->rxbuf = dma_alloc_coherent(NULL, LRXB * LQRXD, &priv->p_rxbuf, GFP_KERNEL | GFP_DMA);
++
++ if (!priv->rxbuf) {
++ priv->rxbuf = NULL;
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "no memory for RxBuf\n");
++ goto err_free_qbase_1;
++ }
++
++ /* Allocate Tx Buffer */
++ priv->txbuf = dma_alloc_coherent(NULL, LTXB * LQTXD, &priv->p_txbuf, GFP_KERNEL | GFP_DMA);
++
++ if (!priv->txbuf) {
++ priv->txbuf = NULL;
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "no memory for TxBuf\n");
++ goto err_free_rxbuf_2;
++ }
++
++ /*
++ * allocate kernel memory for buffer descriptors
++ */
++ size2 = sizeof(struct bufdsc) * (LQRXD + LQTXD);
++ buf = kmalloc(size2, GFP_KERNEL);
++ if (!buf) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "no memory for buf desc\n");
++ goto err_free_txbuf_3;
++ }
++ memset(buf, 0x0, size2); /* clear with 0 */
++ priv->rxbd = buf;
++ priv->txbd = buf + sizeof(struct bufdsc) * LQRXD;
++
++ return 0;
++
++err_free_txbuf_3:
++ dma_free_coherent(NULL, LTXB * LQTXD, priv->txbuf, priv->p_txbuf);
++err_free_rxbuf_2:
++ dma_free_coherent(NULL, LRXB * LQRXD, priv->rxbuf, priv->p_rxbuf);
++err_free_qbase_1:
++ dma_free_coherent(NULL, size, tmp, priv->p_qbase);
++ return -ENOMEM;
++}
++
++/**
++ * devQue_cleanup()
++ * Release queue, Tx buffers and Rx buffers memory
++ * Only call after unregister_netdev
++ */
++static void devQue_cleanup(struct net_device *dev)
++{
++ int size;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* descriptor queues size */
++ size = sizeof(struct rx_dsc) * (LQRXD + 1) +
++ sizeof(struct rx_sts) * (LQRXS + 1) +
++ sizeof(struct tx_dsc) * (LQTXD + 1) +
++ sizeof(struct tx_sts) * (LQTXS + 1) + sizeof(unsigned long) * 4;
++
++ dma_free_coherent(NULL, size, priv->rdq, priv->p_qbase);
++ dma_free_coherent(NULL, LTXB * LQTXD, priv->txbuf, priv->p_txbuf);
++ dma_free_coherent(NULL, LRXB * LQRXD, priv->rxbuf, priv->p_rxbuf);
++ kfree(priv->rxbd);
++
++}
++
++/**
++ * set_multicast_tbl()
++ */
++static void set_multicast_tbl(struct net_device *dev, u8 *buf)
++{
++ int i;
++ unsigned char position;
++ struct dev_mc_list *cur_addr;
++
++ memset(buf, 0x00, 8);
++
++ cur_addr = dev->mc_list;
++ for (i = 0; i < dev->mc_count; i++, cur_addr = cur_addr->next) {
++
++ if (!cur_addr)
++ break;
++ if (!(*cur_addr->dmi_addr & 1))
++ continue; /* make sure multicast addr */
++ position = ether_crc_le(6, cur_addr->dmi_addr) >> 26;
++ buf[position >> 3] |= 1 << (position & 0x07);
++ }
++}
++
++/**
++ * ind_addr_wr()
++ */
++static int ind_addr_wr(struct net_device *dev, int afp, char *buf)
++{
++ u32 rxctl;
++ int i, len;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ afp &= 0x07;
++ if (4 == afp || 5 == afp) {
++ if (netif_msg_hw(priv))
++ DBG(KERN_ERR, "invalid afp value\n");
++ return -1;
++ }
++ len = (AFP_AFP_HASH == afp) ? 8 : 6;
++
++ rxctl = _rdl(dev, REG_RxCTL); /* turn Rx off */
++ _wrl(dev, ~RxCTL_SRxON & rxctl, REG_RxCTL);
++ _wrl(dev, afp, REG_AFP); /* load new address pattern */
++ for (i = 0; i < len; i++)
++ _wrb(dev, buf[i], REG_IndAD + i);
++ _wrl(dev, rxctl, REG_RxCTL); /* turn Rx back */
++
++ return 0;
++}
++
++/**
++ * rx_ctl()
++ */
++static int rx_ctl(struct net_device *dev, int sw)
++{
++ unsigned long tmp = _rdl(dev, REG_RxCTL);
++
++ /*
++ * Workaround for MAC lost 60-byte-long frames:
++ * must enable Runt_CRC_Accept bit
++ */
++ if (sw)
++ _wrl(dev, tmp | RxCTL_SRxON | RxCTL_RCRCA, REG_RxCTL);
++ else
++ _wrl(dev, tmp & ~RxCTL_SRxON, REG_RxCTL);
++
++ return 0;
++}
++
++/**
++ * chk_tx_lvl()
++ */
++static void chk_tx_lvl(struct net_device *dev)
++{
++ int filled;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* check Tx Descriptor Queue fill-up level */
++ filled = priv->idx_tdqhead - priv->idx_tdqtail;
++ if (filled < 0)
++ filled += LQTXD;
++
++ if (filled <= (LVL_TXRESUME + 1))
++ netif_wake_queue(dev);
++}
++
++/**
++ * cleanup_tx()
++ */
++static void cleanup_tx(struct net_device *dev)
++{
++ struct tx_sts *txsts;
++ int idxsts, bi;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /*
++ * process Tx Status Queue (no need to limit processing of TxStatus
++ * Queue because each queue entry consist of 1 dword)
++ */
++ while (priv->tsq[priv->idx_tsq].flags & TXSTS_TXFP) {
++ idxsts = priv->idx_tsq;
++ priv->idx_tsq = next_index(priv->idx_tsq, LQTXS);
++ txsts = &priv->tsq[idxsts];
++ if (!(txsts->flags & TXSTS_TXFP)) { /* empty? */
++ if (netif_msg_tx_err(priv))
++ DBG(KERN_ERR, "QueTxSts is empty\n");
++ return;
++ }
++ txsts->flags &= ~TXSTS_TXFP; /* mark processed */
++
++ bi = txsts->bi & TXSTS_BI; /* buffer index */
++
++ /* statistics collection */
++ if (txsts->flags & TXSTS_TXWE) { /* Sent without error */
++ priv->stats.tx_packets++;
++ priv->stats.tx_bytes += ((struct tx_dsc *)(priv->txbd[bi].vaddr))->bl_af & TXDSC_BL;
++ } else { /* Tx failed due to error */
++ if (netif_msg_tx_err(priv))
++ DBG(KERN_ERR, "Tx failed QueTxSts");
++ priv->stats.tx_errors++;
++ if (txsts->flags & TXSTS_LCRS)
++ priv->stats.tx_carrier_errors++;
++ if (txsts->flags & TXSTS_TXU)
++ priv->stats.tx_fifo_errors++;
++ if (txsts->flags & TXSTS_ECOLL)
++ priv->stats.collisions++;
++ }
++
++ /* free Tx buffer */
++ if (priv->txbd[bi].free_rout) {
++ (*priv->txbd[bi].free_rout)(priv->txbd[bi].vaddr);
++ priv->txbd[bi].free_rout = NULL;
++ }
++
++ /* ahead Tx Descriptor Queue tail index */
++ priv->idx_tdqtail = next_index(priv->idx_tdqtail, LQTXD);
++ }
++}
++
++/**
++ * restart_tx()
++ */
++static int restart_tx(struct net_device *dev)
++{
++ int i;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* disable int */
++
++ /* turn off master INT control */
++ _wrl(dev, _rdl(dev, REG_GIntMsk) & ~GIntMsk_IntEn, REG_GIntMsk);
++
++ /* stop Tx and disable Tx DMA */
++ _wrl(dev, _rdl(dev, REG_TxCTL) & ~TxCTL_STxON, REG_TxCTL);
++ _wrl(dev, _rdl(dev, REG_BMCtl) | BMCtl_TxDis, REG_BMCtl);
++
++ /* reset Tx DMA */
++ _wrl(dev, BMCtl_TxChR | _rdl(dev, REG_BMCtl), REG_BMCtl);
++
++ /* release Tx buffers */
++ for (i = 0; i < LQTXD; i++) {
++ if (priv->txbd[i].free_rout) {
++ priv->txbd[i].free_rout(priv->txbd[i].vaddr);
++ priv->txbd[i].free_rout = NULL;
++ }
++ priv->stats.tx_dropped++;
++ }
++
++ /* init Tx Queues and flush cache */
++ memset(priv->tsq, 0, sizeof(priv->tsq[0]) * LQTXS);
++
++ /* init variables */
++ priv->idx_tsq = priv->idx_tdqhead = priv->idx_tdqtail = 0;
++
++ /* init registers */
++ wait_on_reg(dev, REG_BMSts, BMCtl_TxChR, ~BMCtl_TxChR);
++ _wrl(dev, priv->p_tsq, REG_TxSBA);
++ _wrl(dev, priv->p_tsq, REG_TxSCA);
++ _wrw(dev, sizeof(priv->tsq[0]) * LQTXS, REG_TxSBL);
++ _wrw(dev, sizeof(priv->tsq[0]) * LQTXS, REG_TxSCL);
++ _wrl(dev, priv->p_tdq, REG_TxDBA);
++ _wrl(dev, priv->p_tdq, REG_TxDCA);
++ _wrw(dev, sizeof(priv->tdq[0]) * LQTXD, REG_TxDBL);
++ _wrw(dev, sizeof(priv->tdq[0]) * LQTXD, REG_TxDCL);
++
++ /* start Tx and enable Tx DMA */
++ _wrl(dev, _rdl(dev, REG_TxCTL) | TxCTL_STxON, REG_TxCTL);
++ _wrl(dev, _rdl(dev, REG_BMCtl) | BMCtl_TxEn, REG_BMCtl);
++
++ /* enable int again */
++ _wrl(dev, _rdl(dev, REG_GIntMsk) | GIntMsk_IntEn, REG_GIntMsk);
++
++ return 0;
++}
++
++/**
++ * reset()
++ */
++static void reset(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ /* soft reset command */
++ _wrb(dev, SelfCTL_RESET, REG_SelfCTL);
++ if (wait_on_reg(dev, REG_SelfCTL, SelfCTL_RESET, ~SelfCTL_RESET))
++ if (netif_msg_drv(priv))
++ DBG(KERN_WARNING, "Soft Reset does not self-clear\n");
++}
++
++/**
++ * eth_shutdown()- closes down the Ethernet module
++ *
++ * Make sure to:
++ * 1. disable all interrupt mask
++ * 2. disable Rx
++ * 3. disable Tx
++ *
++ * TODO:
++ * (1) maybe utilize power down mode.
++ * Why not yet? Because while the chip will go into power down mode,
++ * the manual says that it will wake up in response to any I/O requests
++ * in the register space. Empirical results do not show this working.
++ */
++static int eth_shutdown(struct net_device *dev)
++{
++ reset(dev);
++ return 0;
++}
++
++/**
++ * eth_init() - Reset and initialize the device.
++ *
++ * Device should be initialized enough to function in polling mode.
++ * Tx and Rx must be disabled and no INT generation.
++ */
++static int eth_init(struct net_device *dev)
++{
++ /* reset device */
++ reset(dev);
++
++ /* init PHY */
++ phy_init(dev);
++
++ /* init MAC */
++
++ /*i Set MDC clock to be divided by 8 and enable PreambleSuppress bit */
++ _wrl(dev, 0x0f00, REG_SelfCTL);
++ /* mask Interrupt */
++ _wrl(dev, 0x00, REG_GIntMsk);
++ /* no Rx on at this point */
++ _wrl(dev, RxCTL_BA | RxCTL_IA0, REG_RxCTL);
++ _wrl(dev, 0x00, REG_TxCTL);
++ _wrl(dev, 0x00, REG_GT);
++ _wrl(dev, 0x00, REG_BMCtl);
++ /* Buffer Threshold */
++ _wrl(dev, (0x80 << 16) | (0x40 << 0), REG_RxBTH);
++ _wrl(dev, (0x80 << 16) | (0x40 << 0), REG_TxBTH);
++ /* Status Threshold */
++ _wrl(dev, (4 << 16) | (2 << 0), REG_RxSTH);
++ _wrl(dev, (4 << 16) | (2 << 0), REG_TxSTH);
++ /* Descriptor Threshold */
++ _wrl(dev, (4 << 16) | (2 << 0), REG_RxDTH);
++ _wrl(dev, (4 << 16) | (2 << 0), REG_TxDTH);
++ /* Max Frame Length & Tx Start Threshold */
++ _wrl(dev, ((1518 + 1) << 16) | (944 << 0), REG_MaxFL);
++
++ _rdl(dev, REG_TxCollCnt); /* clear Tx Collision Count */
++ _rdl(dev, REG_RxMissCnt); /* clear Rx Miss Counter */
++ _rdl(dev, REG_RxRntCnt); /* clear Rx Runt Counter */
++
++ /* clear Pending INT */
++ _rdl(dev, REG_IntStsC);
++ /* Tx on */
++ _wrl(dev, TxCTL_STxON | _rdl(dev, REG_TxCTL), REG_TxCTL);
++
++ /* Set MAC address */
++ ind_addr_wr(dev, AFP_AFP_IA0, &dev->dev_addr[0]);
++
++ /* init queue */
++ devQue_start(dev);
++
++ return 0;
++}
++
++/**
++ * rx_isr() - Receive Interrupt Service Routine
++ */
++static void rx_isr(struct net_device *dev)
++{
++ struct rx_sts *rxsts;
++ /* index of Rx Status Queue Head from device (next put point) */
++ int idx_rsqhead;
++ int idxsts;
++ int cnt_sts_processed, cnt_desc_processed;
++ char *dest;
++ struct sk_buff *skb;
++ int len;
++ unsigned int dt;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* get Current Rx Status Queue pointer */
++ dt = _rdl(dev, REG_RxSCA);
++
++ /* convert to array index */
++ idx_rsqhead = (dt - priv->p_rsq) / sizeof(priv->rsq[0]);
++ if (!(0 <= idx_rsqhead && idx_rsqhead < LQRXS)) {
++ if (netif_msg_rx_err(priv))
++ DBG(KERN_ERR, " invalid REG_RxSCA\n");
++ return;
++ }
++
++ /* process Rx (limit to idx_rsqhead due to cache) */
++ cnt_sts_processed = cnt_desc_processed = 0;
++ while (idx_rsqhead != priv->idx_rsq) {
++ idxsts = priv->idx_rsq;
++ priv->idx_rsq = next_index(priv->idx_rsq, LQRXS);
++ rxsts = &priv->rsq[idxsts];
++ if (!(rxsts->w1 & RXSTS_RFP)) { /* empty? */
++ if (netif_msg_rx_err(priv))
++ DBG(KERN_ERR, "QueRxSts empty\n");
++ return;
++ }
++ rxsts->w1 &= ~RXSTS_RFP; /* mark processed */
++
++ cnt_sts_processed++;
++
++ if (!(rxsts->w1 & RXSTS_EOB)) /* buffer has no data */
++ continue;
++
++ if ((rxsts->bi & RXSTS_BI) != priv->idx_rdq) {
++ if (netif_msg_rx_err(priv))
++ DBG(KERN_ERR, "unmatching idx_rdq\n");
++ continue;
++ }
++ priv->idx_rdq = next_index(priv->idx_rdq, LQRXD);
++ cnt_desc_processed++;
++
++ /* received a frame with error */
++ if (!((rxsts->w1 & RXSTS_EOF) && (rxsts->w1 & RXSTS_RWE))) {
++ if (netif_msg_rx_err(priv))
++ DBG(KERN_WARNING, "Rx error RxSts\n");
++ priv->stats.rx_errors++;
++ if (rxsts->w1 & RXSTS_OE)
++ priv->stats.rx_fifo_errors++;
++ if (rxsts->w1 & RXSTS_FE)
++ priv->stats.rx_frame_errors++;
++ if ((rxsts->w1 & RXSTS_RUNT) || (rxsts->w1 & RXSTS_EDATA))
++ priv->stats.rx_length_errors++;
++ if (rxsts->w1 & RXSTS_CRCE)
++ priv->stats.rx_crc_errors++;
++ continue;
++ }
++
++ len = rxsts->fl;
++
++ /* alloc buffer for protocal stack */
++ skb = dev_alloc_skb(len + 5);
++ if (NULL == skb) {
++ if (netif_msg_rx_err(priv))
++ DBG(KERN_ERR, "Low Memory, Rx dropped\n");
++ priv->stats.rx_dropped++;
++ continue;
++ }
++
++ /* odd 16 bit alignment to make protocal stack happy */
++ skb_reserve(skb, 2);
++ skb->dev = dev;
++ dest = skb_put(skb, len);
++ memcpy(dest, priv->rxbd[(rxsts->bi & RXSTS_BI)].vaddr, len);
++ skb->protocol = eth_type_trans(skb, dev);
++ /* pass Rx packet to system */
++ netif_rx(skb);
++ dev->last_rx = jiffies;
++ priv->stats.rx_packets++;
++ priv->stats.rx_bytes += len;
++ if (RXSTS_AM == (rxsts->w1 & RXSTS_AM))
++ priv->stats.multicast++;
++ }
++
++ /* enqueue */
++ _wrl(dev, cnt_sts_processed, REG_RxSEQ);
++ _wrl(dev, cnt_desc_processed, REG_RxDEQ);
++}
++
++/**
++ * tx_isr() - Transmit Interrupt Service Routine
++ */
++static int tx_isr(struct net_device *dev)
++{
++ cleanup_tx(dev);
++ chk_tx_lvl(dev); /* resume Tx if it was stopped */
++ return 0;
++}
++
++/**
++ * ep93xx_isr()
++ */
++static irqreturn_t ep93xx_isr(int irq, void *dev_id, struct pt_regs *pRegs)
++{
++ struct net_device *dev = dev_id;
++ int lpCnt;
++ u32 intS;
++
++ lpCnt = 0;
++ do {
++ /* get INT status and then clear */
++ intS = _rdl(dev, REG_IntStsC);
++
++ if (!intS)
++ break; /* no INT */
++ if (IntSts_RxSQ & intS)
++ rx_isr(dev); /* Rx INT */
++ if (IntSts_TxSQ & intS)
++ tx_isr(dev); /* Tx INT */
++ } while (lpCnt++ < 64); /* limit loop to serve other interrupts too */
++ return IRQ_HANDLED;
++}
++
++/* Exposed Driver Routines to the Outside World */
++
++/**
++ * ep93xx_get_stats()
++ */
++static struct net_device_stats *ep93xx_get_stats(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ return &priv->stats;
++}
++
++/**
++ * ep93xx_set_multicast_list()
++ */
++static void ep93xx_set_multicast_list(struct net_device *dev)
++{
++ u8 tbl[8 + 1];
++
++ if (IFF_PROMISC & dev->flags) {
++ _wrl(dev, RxCTL_PA | _rdl(dev, REG_RxCTL), REG_RxCTL);
++
++ } else if (IFF_ALLMULTI & dev->flags) { /* receive all multicast addr */
++ _wrl(dev, RxCTL_MA | (~RxCTL_PA & _rdl(dev, REG_RxCTL)), REG_RxCTL);
++ memset(tbl, 0xff, 8);
++ ind_addr_wr(dev, AFP_AFP_HASH, &tbl[0]);
++
++ } else if (dev->mc_count) { /* set H/W multicasting filter */
++ _wrl(dev, RxCTL_MA | (~RxCTL_PA & _rdl(dev, REG_RxCTL)), REG_RxCTL);
++ set_multicast_tbl(dev, &tbl[0]);
++ ind_addr_wr(dev, AFP_AFP_HASH, &tbl[0]);
++
++ } else { /* no multicasting */
++ _wrl(dev, ~(RxCTL_PA | RxCTL_MA) & _rdl(dev, REG_RxCTL), REG_RxCTL);
++ }
++}
++
++/**
++ * ep93xx_tx_timeout()
++ */
++static void ep93xx_tx_timeout(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ /* If we get here, some higher level has decided we are broken.
++ There should really be a "kick me" function call instead. */
++ if (netif_msg_tx_err(priv))
++ DBG(KERN_WARNING, "transmit timed out\n");
++
++ phy_init(dev);
++
++ /* kick Tx engine */
++ restart_tx(dev);
++
++ /* ask the Network Stack to resume Tx if there is room available */
++ chk_tx_lvl(dev);
++}
++
++/**
++ * ep93xx_start_xmit()
++ */
++static int ep93xx_start_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++/* @swk check H/W defect of Tx Underrun Error caused by certain frame length */
++ struct tx_dsc *txdsc;
++ int idx_tdqhd;
++ int filled;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ idx_tdqhd = priv->idx_tdqhead;
++ txdsc = &priv->tdq[idx_tdqhd];
++
++ /* check Tx Descriptor Queue fill-up level */
++ filled = idx_tdqhd - priv->idx_tdqtail;
++ if (filled < 0)
++ filled += LQTXD;
++ filled += 1;
++
++ /* check Queue level */
++ if (LVL_TXSTOP <= filled) {
++ netif_stop_queue(dev); /* no more Tx allowed */
++ if (netif_msg_tx_err(priv))
++ DBG(KERN_INFO, "%s: Tx STOP requested\n", dev->name);
++ if (LVL_TXSTOP < filled) {
++ /* this situation can not be happen */
++ if (netif_msg_tx_err(priv))
++ DBG(KERN_ERR, "%s: Tx Request while stopped\n", dev->name);
++ return NETDEV_TX_BUSY;
++ }
++ }
++
++ /* fill up Tx Descriptor Queue entry */
++ if (skb->len < ETH_ZLEN) {
++ txdsc->bl_af = ETH_ZLEN & TXDSC_BL; /* also clears AF! */
++ skb = skb_padto(skb, ETH_ZLEN);
++ if (skb == NULL)
++ return NETDEV_TX_OK;
++ } else {
++ txdsc->bl_af = skb->len & TXDSC_BL; /* also clears AF! */
++ }
++ txdsc->ba = priv->p_txbuf + (idx_tdqhd * LTXB);
++ txdsc->bi_eof = (idx_tdqhd & TXDSC_BI) | TXDSC_EOF;
++
++ dev->trans_start = jiffies;
++
++ /* copy data to Tx buffer */
++ memcpy(priv->txbd[idx_tdqhd].vaddr, skb->data, skb->len);
++ priv->txbd[idx_tdqhd].free_rout = NULL;
++
++ /* Free the data buffer passed by upper layer */
++ dev_kfree_skb_any(skb);
++
++ /* ahead Tx Desc Queue */
++ priv->idx_tdqhead = next_index(priv->idx_tdqhead, LQTXD);
++ wmb();
++
++ /* Enqueue a Tx Descriptor to the device */
++ _wrl(dev, 1, REG_TxDEQ);
++
++ if (netif_msg_tx_queued(priv))
++ DBG(KERN_DEBUG, "%s: Tx packet queued\n", dev->name);
++
++ return NETDEV_TX_OK;
++}
++
++/**
++ * ep93xx_close()
++ *
++ * this makes the board clean up everything that it can
++ * and not talk to the outside world. Caused by
++ *. an 'ifconfig ethX down'
++ */
++static int ep93xx_close(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ free_irq(dev->irq, dev);
++
++ netif_stop_queue(dev);
++ eth_shutdown(dev);
++
++ if (netif_msg_ifdown(priv))
++ DBG(KERN_INFO, "%s: ep93xx_close()\n", dev->name);
++
++ return 0;
++}
++
++/**
++ * ep93xx_open() - Open and Initialize the board
++ *
++ * Set up everything, reset the card, etc ..
++ */
++static int ep93xx_open(struct net_device *dev)
++{
++ int status;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ /* clear dynamic device info */
++ memset(&priv->stats, 0, sizeof(priv->stats));
++ priv->idx_rdq = 0;
++ priv->idx_rsq = 0;
++ priv->idx_tdqhead = 0;
++ priv->idx_tdqtail = 0;
++ priv->idx_tsq = 0;
++
++ /* reset/init device */
++ status = eth_init(dev);
++ if (status != 0) {
++ return -EAGAIN;
++ }
++
++ /* turn on INT, turn on Rx */
++ status = request_irq(dev->irq, &ep93xx_isr, 0, DRV_NAME, dev);
++ if (status) {
++ if (netif_msg_ifup(priv))
++ DBG(KERN_ERR, "%s: unable to get IRQ\n", dev->name);
++ return status;
++ }
++
++ /* Enable interrupt driven operation. Also turn on Rx but no Tx. */
++ /* setup Interrupt sources */
++ _wrl(dev, DEF_INT_SRC, REG_IntEn);
++ /* turn on INT */
++ _wrl(dev, GIntMsk_IntEn, REG_GIntMsk);
++ /* turn on Rx */
++ rx_ctl(dev, 1);
++
++ /* link to upper layer */
++ netif_start_queue(dev);
++
++ if (netif_msg_ifup(priv))
++ DBG(KERN_INFO, "%s: irq=%d\n", dev->name, dev->irq);
++
++ return 0;
++}
++
++static int ep93xx_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ int rc;
++
++ if (!netif_running(dev))
++ return -EINVAL;
++
++ spin_lock_irq(&priv->mii_lock);
++ rc = generic_mii_ioctl(&priv->mii, if_mii(rq), cmd, NULL);
++ spin_unlock_irq(&priv->mii_lock);
++
++ return rc;
++}
++
++/*
++ * Ethtool support
++ */
++
++static void ep93xx_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
++{
++ strcpy(info->driver, DRV_NAME);
++ strcpy(info->version, DRV_VERSION);
++}
++
++static int ep93xx_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ spin_lock_irq(&priv->mii_lock);
++ mii_ethtool_gset(&priv->mii, cmd);
++ spin_unlock_irq(&priv->mii_lock);
++ return 0;
++}
++
++static int ep93xx_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ int rc;
++ spin_lock_irq(&priv->mii_lock);
++ rc = mii_ethtool_sset(&priv->mii, cmd);
++ spin_unlock_irq(&priv->mii_lock);
++ return rc;
++}
++
++static int ep93xx_nway_reset(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ return mii_nway_restart(&priv->mii);
++}
++
++static u32 ep93xx_get_link(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ return mii_link_ok(&priv->mii);
++}
++
++static u32 ep93xx_get_msglevel(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ return priv->msg_enable;
++}
++
++static void ep93xx_set_msglevel(struct net_device *dev, u32 datum)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ priv->msg_enable = datum;
++}
++
++static void ep93xx_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *regbuf)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ spin_lock_irq(&priv->mii_lock);
++ memcpy_fromio(regbuf, priv->base_addr, regs->len);
++ spin_unlock_irq(&priv->mii_lock);
++}
++
++static int ep93xx_get_regs_len(struct net_device *dev)
++{
++ struct ep93xx_priv *priv = netdev_priv(dev);
++ return priv->regs_len;
++}
++
++static struct ethtool_ops ep93xx_ethtool_ops = {
++ .get_drvinfo = ep93xx_get_drvinfo,
++ .get_settings = ep93xx_get_settings,
++ .set_settings = ep93xx_set_settings,
++ .get_regs = ep93xx_get_regs,
++ .get_regs_len = ep93xx_get_regs_len,
++ .nway_reset = ep93xx_nway_reset,
++ .get_link = ep93xx_get_link,
++ .get_msglevel = ep93xx_get_msglevel,
++ .set_msglevel = ep93xx_set_msglevel,
++};
++
++/**
++ * driver_init() - Logical driver initialization for an individual device
++ *
++ * Minimum device H/W access at this point
++ *
++ * Task:
++ * Initialize the structure if needed
++ * print out my vanity message if not done so already
++ * print out what type of hardware is detected
++ * print out the ethernet address
++ * find the IRQ
++ * set up my private data
++ * configure the dev structure with my subroutines
++ * actually GRAB the irq.
++ * GRAB the region
++ *
++ */
++static int __init driver_init(struct net_device *dev, u32 baseA, int irq)
++{
++ int i;
++ struct resource *res;
++ struct sockaddr sa;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ if (0 == num_of_instance)
++ printk("%s", version);
++
++ /* skip probing for a second one, we _know_ that it does not exist */
++ if (1 == num_of_instance)
++ return -ENODEV;
++
++ memset(dev->priv, 0x00, sizeof(struct ep93xx_priv));
++
++ /* device instance ID */
++ priv->id = num_of_instance;
++
++ /* mii stuff */
++ spin_lock_init(&priv->mii_lock);
++ priv->mii.dev = dev;
++ priv->mii.mdio_read = mdio_read;
++ priv->mii.mdio_write = mdio_write;
++ priv->mii.phy_id_mask = 0x1f;
++ priv->mii.reg_num_mask = 0x1f;
++ priv->msg_enable = EP93XX_DEF_MSG;
++ priv->regs_len = DEV_REG_SPACE;
++
++ priv->base_addr = (void *)(baseA);
++
++ dev->irq = irq;
++
++ res = request_mem_region(baseA, DEV_REG_SPACE, DRV_NAME);
++ if (res == NULL) {
++ if (netif_msg_probe(priv))
++ DBG(KERN_ERR, "request_mem_region failed!\n");
++ goto err_free_priv_1;
++ }
++
++ dev->open = &ep93xx_open;
++ dev->stop = &ep93xx_close;
++ dev->do_ioctl = &ep93xx_ioctl;
++ dev->hard_start_xmit = &ep93xx_start_xmit;
++ dev->tx_timeout = &ep93xx_tx_timeout;
++ dev->watchdog_timeo = HZ * 5;
++ dev->get_stats = &ep93xx_get_stats;
++ dev->set_multicast_list = &ep93xx_set_multicast_list;
++ dev->ethtool_ops = &ep93xx_ethtool_ops;
++
++ ether_setup(dev);
++
++ if (devQue_init(dev))
++ goto err_free_bd_memregion_irq_2;
++
++ reset(dev);
++
++ /*
++ * use a random MAC for now -
++ * don't forget to set a valid MAC later on with ifconfig
++ */
++ sa.sa_family = AF_INET;
++// random_ether_addr(sa.sa_data);
++ memcpy(sa.sa_data, "\x00\xd0\x69\x40\x2b\x13", 6);
++ dev->set_mac_address(dev, &sa);
++
++ if (netif_msg_probe(priv)) {
++ printk(KERN_INFO DRV_NAME ": #%d at 0x%p IRQ:%d\n", priv->id, priv->base_addr, dev->irq);
++ printk(KERN_INFO DRV_NAME ": using random number");
++ for (i = 0; i < 6; i++)
++ printk("%c%02x", i ? ':' : ' ', dev->dev_addr[i]);
++
++ printk(" as MAC, don't forget to assign a valid MAC later!\n");
++ }
++ num_of_instance++;
++ return 0;
++
++err_free_bd_memregion_irq_2:
++ kfree(priv->rxbd);
++ disable_irq(dev->irq);
++ free_irq(dev->irq, dev);
++ release_mem_region((u32)priv->base_addr, DEV_REG_SPACE);
++err_free_priv_1:
++ kfree(dev->priv);
++ return -EAGAIN;
++}
++
++/**
++ * ep93xx_probe - probe for ep93xx device
++ *
++ * Probe for the one (and only) ethernet device found on
++ * EP93xx SOC CPU.
++ */
++static int __init ep93xx_probe(void)
++{
++ int err;
++ struct ep93xx_priv *priv;
++ struct net_device *dev = alloc_etherdev(sizeof(struct ep93xx_priv));
++
++ if (!dev)
++ return -ENODEV;
++
++ priv = netdev_priv(dev);
++
++ SET_MODULE_OWNER(dev);
++
++ sprintf(dev->name, "eth0");
++
++ priv->base_addr = (void *)(port_list[0].base_addr);
++
++ dev->irq = port_list[0].irq;
++
++ err = driver_init(dev, (u32)priv->base_addr, dev->irq);
++ if (err)
++ goto err_free_netdev;
++
++ err = register_netdev(dev);
++ if (err)
++ goto err_free_memregion_irq_1;
++
++ ep93xx_etherdev = dev;
++ disable_irq(dev->irq);
++ return 0;
++
++err_free_memregion_irq_1:
++ kfree(priv->rxbd);
++ disable_irq(dev->irq);
++ free_irq(dev->irq, dev);
++ release_mem_region((u32)priv->base_addr, DEV_REG_SPACE);
++err_free_netdev:
++ free_netdev(dev);
++ return err;
++}
++
++static void __exit ep93xx_exit(void)
++{
++ struct net_device *dev = ep93xx_etherdev;
++ struct ep93xx_priv *priv = netdev_priv(dev);
++
++ if (dev) {
++ unregister_netdev(dev);
++ devQue_cleanup(dev);
++ free_irq(dev->irq, dev);
++ release_mem_region((u32)priv->base_addr, DEV_REG_SPACE);
++ free_netdev(dev);
++ }
++}
++
++module_init(ep93xx_probe);
++module_exit(ep93xx_exit);
++MODULE_LICENSE("GPL");
+diff -urN linux-2.6.15.commit/drivers/net/arm/ep93xx_eth_need_rewrite.h linux-2.6.15.snap/drivers/net/arm/ep93xx_eth_need_rewrite.h
+--- linux-2.6.15.commit/drivers/net/arm/ep93xx_eth_need_rewrite.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/drivers/net/arm/ep93xx_eth_need_rewrite.h 2006-02-20 00:09:48.000000000 +0100
+@@ -0,0 +1,355 @@
++/*
++ * ep93xx_eth.h
++ * : header file of Ethernet Device Driver for Cirrus Logic EP93xx.
++ *
++ * Copyright (C) 2003 by Cirrus Logic www.cirrus.com
++ * This software may be used and distributed according to the terms
++ * of the GNU Public License.
++ *
++ * This file contains device related information like register info
++ * and register access method macros for the Ethernet device
++ * embedded within Cirrus Logic's EP93xx SOC chip.
++ *
++ * Information contained in this file was obtained from
++ * the EP9312 Manual Revision 0.12 and 0.14 from Cirrus Logic.
++ *
++ * History
++ * 05/18/01 Sungwook Kim Initial release
++ * 03/25/2003 Melody Modified for EP92xx
++ */
++
++#ifndef _EP93xx_ETH_H_
++#define _EP93xx_ETH_H_
++
++/*
++ * Definition of the registers.
++ * For details, refer to the datasheet .
++ *
++ * Basically, most registers are 32 bits width register.
++ * But some are 16 bits and some are 6 or 8 bytes long.
++ */
++
++#define REG_RxCTL 0x0000 /*offset to Receiver Control Reg */
++#define RxCTL_PauseA (1<<20)
++#define RxCTL_RxFCE1 (1<<19)
++#define RxCTL_RxFCE0 (1<<18)
++#define RxCTL_BCRC (1<<17)
++#define RxCTL_SRxON (1<<16)
++#define RxCTL_RCRCA (1<<13)
++#define RxCTL_RA (1<<12)
++#define RxCTL_PA (1<<11)
++#define RxCTL_BA (1<<10)
++#define RxCTL_MA (1<<9)
++#define RxCTL_IAHA (1<<8)
++#define RxCTL_IA3 (1<<3)
++#define RxCTL_IA2 (1<<2)
++#define RxCTL_IA1 (1<<1)
++#define RxCTL_IA0 (1<<0)
++
++#define REG_TxCTL 0x0004 /*offset to Transmit Control Reg */
++#define TxCTL_DefDis (1<<7)
++#define TxCTL_MBE (1<<6)
++#define TxCTL_ICRC (1<<5)
++#define TxCTL_TxPD (1<<5)
++#define TxCTL_OColl (1<<3)
++#define TxCTL_SP (1<<2)
++#define TxCTL_PB (1<<1)
++#define TxCTL_STxON (1<<0)
++
++#define REG_TestCTL 0x0008 /*Test Control Reg, R/W */
++#define TestCTL_MACF (1<<7)
++#define TestCTL_MFDX (1<<6)
++#define TestCTL_DB (1<<5)
++#define TestCTL_MIIF (1<<4)
++
++#define REG_MIICmd 0x0010 /*offset to MII Command Reg, R/W */
++#define MIICmd_OP (0x03<<14)
++#define MIICmd_OP_RD (2<<14)
++#define MIICmd_OP_WR (1<<14)
++#define MIICmd_PHYAD (0x1f<<5)
++#define MIICmd_REGAD (0x1f<<0)
++
++#define REG_MIIData 0x0014 /*offset to MII Data Reg, R/W */
++#define MIIData_MIIData (0xffff<<0)
++
++#define REG_MIISts 0x0018 /*offset to MII Status Reg, R */
++#define MIISts_Busy (1<<0)
++
++#define REG_SelfCTL 0x0020 /*offset to Self Control Reg */
++#define SelfCTL_RWP (1<<7) /*Remote Wake Pin */
++#define SelfCTL_GPO0 (1<<5)
++#define SelfCTL_PUWE (1<<4)
++#define SelfCTL_PDWE (1<<3)
++#define SelfCTL_MIIL (1<<2)
++#define SelfCTL_RESET (1<<0)
++
++#define REG_IntEn 0x0024 /*Interrupt Enable Reg, R/W */
++#define IntEn_RWIE (1<<30)
++#define IntEn_RxMIE (1<<29)
++#define IntEn_RxBIE (1<<28)
++#define IntEn_RxSQIE (1<<27)
++#define IntEn_TxLEIE (1<<26)
++#define IntEn_ECIE (1<<25)
++#define IntEn_TxUHIE (1<<24)
++#define IntEn_MOIE (1<<18)
++#define IntEn_TxCOIE (1<<17)
++#define IntEn_RxROIE (1<<16)
++#define IntEn_MIIIE (1<<12)
++#define IntEn_PHYSIE (1<<11)
++#define IntEn_TIE (1<<10)
++#define IntEn_SWIE (1<<8)
++#define IntEn_TxSQIE (1<<3)
++#define IntEn_RxEOFIE (1<<2)
++#define IntEn_RxEOBIE (1<<1)
++#define IntEn_RxHDRIE (1<<0)
++
++#define REG_IntStsP 0x0028 /*offset to Interrupt Status Preserve Reg, R/W */
++#define REG_IntStsC 0x002c /*offset to Interrupt Status Clear Reg, R */
++#define IntSts_RWI (1<<30)
++#define IntSts_RxMI (1<<29)
++#define IntSts_RxBI (1<<28)
++#define IntSts_RxSQI (1<<27)
++#define IntSts_TxLEI (1<<26)
++#define IntSts_ECI (1<<25)
++#define IntSts_TxUHI (1<<24)
++#define IntSts_MOI (1<<18)
++#define IntSts_TxCOI (1<<17)
++#define IntSts_RxROI (1<<16)
++#define IntSts_MIII (1<<12)
++#define IntSts_PHYSI (1<<11)
++#define IntSts_TI (1<<10)
++#define IntSts_AHBE (1<<9)
++#define IntSts_SWI (1<<8)
++#define IntSts_OTHER (1<<4)
++#define IntSts_TxSQ (1<<3)
++#define IntSts_RxSQ (1<<2)
++
++#define REG_GT 0x0040 /*offset to General Timer Reg */
++#define GT_GTC (0xffff<<16)
++#define GT_GTP (0xffff<<0)
++
++#define REG_FCT 0x0044 /*offset to Flow Control Timer Reg */
++#define FCT_FCT (0x00ffffff<<0)
++
++#define REG_FCF 0x0048 /*offset to Flow Control Format Reg */
++#define FCF_MACCT (0xffff<<16)
++#define FCF_TPT (0xffff<<0)
++
++#define REG_AFP 0x004c /*offset to Address Filter Pointer Reg */
++#define AFP_AFP (0x07<<0) /*Address Filter Pointer
++ (bank control for REG_IndAD) */
++#define AFP_AFP_IA0 0 /*Primary Individual Address (MAC Addr) */
++#define AFP_AFP_IA1 1 /*Individual Address 1 */
++#define AFP_AFP_IA2 2 /*Individual Address 2 */
++#define AFP_AFP_IA3 3 /*Individual Address 3 */
++#define AFP_AFP_DTxP 6 /*Destination Address of Tx Pause Frame */
++#define AFP_AFP_HASH 7 /*Hash Table */
++
++#define REG_IndAD 0x0050 /*offset to Individual Address Reg,
++ n bytes, R/W */
++
++#define REG_GIntSts 0x0060 /*offset to Global Interrupt
++ Status Reg (writing 1 will clear) */
++#define REG_GIntROS 0x0068 /*offset to Global Interrupt
++ Status Read Only Reg */
++#define GIntSts_INT (1<<15) /*Global Interrupt Request Status */
++
++#define REG_GIntMsk 0x0064 /*offset to Global Interrupt Mask Reg */
++#define GIntMsk_IntEn (1<<15) /*Global Interrupt Enable */
++
++#define REG_GIntFrc 0x006c /*offset to Global Interrupt Force Reg */
++#define GIntFrc_INT (1<<15) /*Force to set GIntSts */
++
++#define REG_TxCollCnt 0x0070 /*Transmit Collision Count Reg, R */
++#define REG_RxMissCnt 0x0074 /*Receive Miss Count Reg, R */
++#define REG_RxRntCnt 0x0078 /*Receive Runt Count Reg, R */
++
++#define REG_BMCtl 0x0080 /*offset to Bus Master Control Reg, R/W */
++#define BMCtl_MT (1<<13)
++#define BMCtl_TT (1<<12)
++#define BMCtl_UnH (1<<11)
++#define BMCtl_TxChR (1<<10)
++#define BMCtl_TxDis (1<<9)
++#define BMCtl_TxEn (1<<8)
++#define BMCtl_EH2 (1<<6)
++#define BMCtl_EH1 (1<<5)
++#define BMCtl_EEOB (1<<4)
++#define BMCtl_RxChR (1<<2)
++#define BMCtl_RxDis (1<<1)
++#define BMCtl_RxEn (1<<0)
++
++#define REG_BMSts 0x0084 /*offset to Bus Master Status Reg, R */
++#define BMSts_TxAct (1<<7)
++#define BMSts_TP (1<<4)
++#define BMSts_RxAct (1<<3)
++#define BMSts_QID (0x07<<0)
++#define BMSts_QID_RxDt (0<<0)
++#define BMSts_QID_TxDt (1<<0)
++#define BMSts_QID_RxSts (2<<0)
++#define BMSts_QID_TxSts (3<<0)
++#define BMSts_QID_RxDesc (4<<0)
++#define BMSts_QID_TxDesc (5<<0)
++
++#define REG_RBCA 0x0088 /*offset to Receive Buffer
++ Current Address Reg, R */
++#define REG_TBCA 0x008c /*offset to Transmit Buffer
++ Current Address Reg, R */
++
++#define REG_RxDBA 0x0090 /*offset to Receive Descriptor Queue
++ Base Address Reg, R/W */
++#define REG_RxDBL 0x0094 /*offset to Receive Descriptor Queue
++ Base Length Reg, R/W, 16bits */
++#define REG_RxDCL 0x0096 /*offset to Receive Descriptor Queue
++ Current Length Reg, R/W, 16bits */
++#define REG_RxDCA 0x0098 /*offset to Receive Descriptor Queue
++ Current Address Reg, R/W */
++
++#define REG_RxDEQ 0x009c /*offset to Receive Descriptor
++ Enqueue Reg, R/W */
++#define RxDEQ_RDV (0xffff<<16) /*R 16bit; Receive Descriptor Value */
++#define RxDEQ_RDI (0xff<<0) /*W 8bit; Receive Descriptor Increment */
++
++#define REG_RxSBA 0x00a0 /*offset to Receive Status Queue
++ Base Address Reg, R/W */
++#define REG_RxSBL 0x00a4 /*offset to Receive Status Queue
++ Base Length Reg, R/W, 16bits */
++#define REG_RxSCL 0x00a6 /*offset to Receive Status Queue
++ Current Length Reg, R/W, 16bits */
++#define REG_RxSCA 0x00a8 /*offset to Receive Status Queue
++ Current Address Reg, R/W */
++
++#define REG_RxSEQ 0x00ac /*offset to Receive Status Queue
++ Current Address Reg, R/W */
++#define RxSEQ_RSV (0xffff<<16)
++#define RxSEQ_RSI (0xff<<0)
++
++#define REG_TxDBA 0x00b0 /*offset to Transmit Descriptor Queue
++ Base Address Reg, R/W */
++#define REG_TxDBL 0x00b4 /*offset to Transmit Descriptor Queue
++ Base Length Reg, R/W, 16bits */
++#define REG_TxDCL 0x00b6 /*offset to Transmit Descriptor Queue
++ Current Length Reg, R/W, 16bits */
++#define REG_TxDCA 0x00b8 /*offset to Transmit Descriptor Queue
++ Current Address Reg, R/W */
++
++#define REG_TxDEQ 0x00bc /*offset to Transmit Descriptor Queue
++ Current Address Reg, R/W */
++#define TxDEQ_TDV (0xffff<<16)
++#define TxDEQ_TDI (0xff<<0)
++
++#define REG_TxSBA 0x00c0 /*offset to Transmit Status Queue
++ Base Address Reg, R/W */
++#define REG_TxSBL 0x00c4 /*offset to Transmit Status Queue
++ Base Length Reg, R/W, 16bits */
++#define REG_TxSCL 0x00c6 /*offset to Transmit Status Queue
++ Current Length Reg, R/W, 16bits */
++#define REG_TxSCA 0x00c8 /*offset to Transmit Status Queue
++ Current Address Reg, R/W */
++
++#define REG_RxBTH 0x00d0 /*offset to Receive Buffer
++ Threshold Reg, R/W */
++#define RxBTH_RDHT (0x03ff<<16)
++#define RxBTH_RDST (0x03ff<<0)
++
++#define REG_TxBTH 0x00d4 /*offset to Transmit Buffer
++ Threshold Reg, R/W */
++#define TxBTH_TDHT (0x03ff<<16)
++#define TxBTH_TDST (0x03ff<<0)
++
++#define REG_RxSTH 0x00d8 /*offset to Receive Status
++ Threshold Reg, R/W */
++#define RxSTH_RSHT (0x003f<<16)
++#define RxSTH_RSST (0x003f<<0)
++
++#define REG_TxSTH 0x00dc /*offset to Transmit Status
++ Threshold Reg, R/W */
++#define TxSTH_TSHT (0x003f<<16)
++#define TxSTH_TSST (0x003f<<0)
++
++#define REG_RxDTH 0x00e0 /*offset to Receive Descriptor
++ Threshold Reg, R/W */
++#define RxDTH_RDHT (0x003f<<16)
++#define RxDTH_RDST (0x003f<<0)
++
++#define REG_TxDTH 0x00e4 /*offset to Transmit Descriptor
++ Threshold Reg, R/W */
++#define TxDTH_TDHT (0x003f<<16)
++#define TxDTH_TDST (0x003f<<0)
++
++#define REG_MaxFL 0x00e8 /*offset to Max Frame Length Reg, R/W */
++#define MaxFL_MFL (0x07ff<<16)
++#define MaxFL_TST (0x07ff<<0)
++
++#define REG_RxHL 0x00ec /*offset to Receive Header Length Reg, R/W */
++#define RxHL_RHL2 (0x07ff<<16)
++#define RxHL_RHL1 (0x03ff<<0)
++
++#define REG_MACCFG0 0x0100 /*offset to Test Reg #0, R/W */
++#define MACCFG0_DbgSel (1<<7)
++#define MACCFG0_LCKEN (1<<6)
++#define MACCFG0_LRATE (1<<5)
++#define MACCFG0_RXERR (1<<4)
++#define MACCFG0_BIT33 (1<<2)
++#define MACCFG0_PMEEN (1<<1)
++#define MACCFG0_PMEST (1<<0)
++
++#define REG_MACCFG1 0x0104 /*offset to Test Reg #1, R/W */
++#define REG_MACCFG2 0x0108 /*offset to Test Reg #2, R */
++#define REG_MACCFG3 0x010c /*offset to Test Reg #3, R */
++
++/*---------------------------------------------------------------
++ * Definition of Descriptor/Status Queue Entry
++ *-------------------------------------------------------------*/
++struct rx_dsc {
++ __be32 ba;
++ __be16 bl;
++ __be16 bi; /* let nsof flag be part of bi */
++};
++
++#define RXSTS_RFP 0x80000000
++#define RXSTS_RWE 0x40000000
++#define RXSTS_EOF 0x20000000
++#define RXSTS_EOB 0x10000000
++#define RXSTS_AM 0x00C00000
++#define RXSTS_OE 0x00100000
++#define RXSTS_FE 0x00080000
++#define RXSTS_RUNT 0x00040000
++#define RXSTS_EDATA 0x00020000
++#define RXSTS_CRCE 0x00010000
++
++#define RXSTS_BI 0x7FFF
++struct rx_sts { /* Receive Status Queue Entry */
++ __be32 w1;
++ __be16 fl;
++ __be16 bi; /* bi and rfp2 */
++};
++
++#define TXDSC_BL 0x0FFF
++#define TXDSC_AF 0x8000
++#define TXDSC_BI 0x7FFF
++#define TXDSC_EOF 0x8000
++struct tx_dsc { /* Transmit Descriptor Queue Entry */
++ __be32 ba; /*b31-0: physical Buffer Address */
++ __be16 bl_af; /* Buffer Length, Abort Frame */
++ __be16 bi_eof; /* Buffer Index, End Of Frame */
++};
++
++#define TXSTS_BI 0x7fff
++#define TXSTS_TXFP 0x80
++#define TXSTS_TXWE 0x40
++#define TXSTS_LCRS 0x10
++#define TXSTS_TXU 0x02
++#define TXSTS_ECOLL 0x01
++
++struct tx_sts {
++ __be16 bi;
++ u8 ncoll;
++ u8 flags;
++};
++
++/*
++ * Size of device registers occupied in memory/IO address map
++ */
++#define DEV_REG_SPACE 0x00010000
++
++#endif /* _EP93xx_ETH_H_ */
+diff -urN linux-2.6.15.commit/drivers/net/arm/Kconfig linux-2.6.15.snap/drivers/net/arm/Kconfig
+--- linux-2.6.15.commit/drivers/net/arm/Kconfig 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/net/arm/Kconfig 2006-02-20 00:10:36.000000000 +0100
+@@ -44,3 +44,12 @@
+ will generate a suitable hw address based on the board serial
+ number (MTD support is required for this). Otherwise you will
+ need to set a suitable hw address using ifconfig.
++
++config EP93XX_ETHERNET
++ tristate "EP93xx Ethernet support"
++ depends on NET_ETHERNET && ARM && ARCH_EP93XX
++ select CRC32
++ select MII
++ help
++ This is a driver for the ethernet hardware included in EP93xx CPUs.
++ Say Y if you are building a kernel for EP93xx based devices.
+diff -urN linux-2.6.15.commit/drivers/net/arm/Makefile linux-2.6.15.snap/drivers/net/arm/Makefile
+--- linux-2.6.15.commit/drivers/net/arm/Makefile 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/net/arm/Makefile 2006-02-20 00:12:09.000000000 +0100
+@@ -8,3 +8,4 @@
+ obj-$(CONFIG_ARM_ETHERH) += etherh.o
+ obj-$(CONFIG_ARM_ETHER3) += ether3.o
+ obj-$(CONFIG_ARM_ETHER1) += ether1.o
++obj-$(CONFIG_EP93XX_ETHERNET) += ep93xx_eth_need_rewrite.o
+diff -urN linux-2.6.15.commit/drivers/serial/amba-pl010.c linux-2.6.15.snap/drivers/serial/amba-pl010.c
+--- linux-2.6.15.commit/drivers/serial/amba-pl010.c 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/serial/amba-pl010.c 2006-02-20 00:08:56.000000000 +0100
+@@ -93,8 +93,8 @@
+ * UART0 7 6
+ * UART1 5 4
+ */
+-#define SC_CTRLC (IO_ADDRESS(INTEGRATOR_SC_BASE) + INTEGRATOR_SC_CTRLC_OFFSET)
+-#define SC_CTRLS (IO_ADDRESS(INTEGRATOR_SC_BASE) + INTEGRATOR_SC_CTRLS_OFFSET)
++//#define SC_CTRLC (IO_ADDRESS(INTEGRATOR_SC_BASE) + INTEGRATOR_SC_CTRLC_OFFSET)
++//#define SC_CTRLS (IO_ADDRESS(INTEGRATOR_SC_BASE) + INTEGRATOR_SC_CTRLS_OFFSET)
+
+ /*
+ * We wrap our port structure around the generic uart_port.
+@@ -339,8 +339,8 @@
+ else
+ ctrls |= uap->dtr_mask;
+
+- __raw_writel(ctrls, SC_CTRLS);
+- __raw_writel(ctrlc, SC_CTRLC);
++// __raw_writel(ctrls, SC_CTRLS);
++// __raw_writel(ctrlc, SC_CTRLC);
+ }
+
+ static void pl010_break_ctl(struct uart_port *port, int break_state)
+@@ -568,11 +568,12 @@
+ static struct uart_amba_port amba_ports[UART_NR] = {
+ {
+ .port = {
+- .membase = (void *)IO_ADDRESS(INTEGRATOR_UART0_BASE),
+- .mapbase = INTEGRATOR_UART0_BASE,
++ .membase = (void *)(EP93XX_APB_VIRT_BASE + 0x000c0000),
++ .mapbase = EP93XX_APB_PHYS_BASE + 0x000c0000,
+ .iotype = SERIAL_IO_MEM,
+- .irq = IRQ_UARTINT0,
+- .uartclk = 14745600,
++ .irq = IRQ_EP93XX_UART1,
++// .uartclk = 14745600,
++ .uartclk = 7372800,
+ .fifosize = 16,
+ .ops = &amba_pl010_pops,
+ .flags = ASYNC_BOOT_AUTOCONF,
+@@ -583,11 +584,12 @@
+ },
+ {
+ .port = {
+- .membase = (void *)IO_ADDRESS(INTEGRATOR_UART1_BASE),
+- .mapbase = INTEGRATOR_UART1_BASE,
++ .membase = (void *)(EP93XX_APB_VIRT_BASE + 0x000d0000),
++ .mapbase = EP93XX_APB_PHYS_BASE + 0x000d0000,
+ .iotype = SERIAL_IO_MEM,
+- .irq = IRQ_UARTINT1,
+- .uartclk = 14745600,
++ .irq = IRQ_EP93XX_UART2,
++// .uartclk = 14745600,
++ .uartclk = 7372800,
+ .fifosize = 16,
+ .ops = &amba_pl010_pops,
+ .flags = ASYNC_BOOT_AUTOCONF,
+diff -urN linux-2.6.15.commit/drivers/usb/host/ohci-ep93xx.c linux-2.6.15.snap/drivers/usb/host/ohci-ep93xx.c
+--- linux-2.6.15.commit/drivers/usb/host/ohci-ep93xx.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/drivers/usb/host/ohci-ep93xx.c 2006-02-28 02:18:54.000000000 +0100
+@@ -0,0 +1,170 @@
++/*
++ * OHCI HCD (Host Controller Driver) for USB.
++ *
++ * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
++ * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net>
++ * (C) Copyright 2002 Hewlett-Packard Company
++ *
++ * Bus Glue for ep93xx.
++ *
++ * Written by Christopher Hoover <ch@hpl.hp.com>
++ * Based on fragments of previous driver by Russell King et al.
++ *
++ * Modified for LH7A404 from ohci-sa1111.c
++ * by Durgesh Pattamatta <pattamattad@sharpsec.com>
++ *
++ * Modified for pxa27x from ohci-lh7a404.c
++ * by Nick Bane <nick@cecomputing.co.uk> 26-8-2004
++ *
++ * Modified for ep93xx from ohci-pxa27x.c
++ * by Lennert Buytenhek <buytenh@wantstofly.org> 28-2-2006
++ * Based on an earlier driver by Ray Lehtiniemi
++ *
++ * This file is licenced under the GPL.
++ */
++
++#include <linux/device.h>
++#include <linux/signal.h>
++#include <linux/platform_device.h>
++
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++
++static void ep93xx_start_hc(struct platform_device *dev)
++{
++ unsigned int pwrcnt;
++
++ pwrcnt = __raw_readl(EP93XX_SYSCON_CLOCK_CONTROL);
++ pwrcnt |= EP93XX_SYSCON_CLOCK_USH_EN;
++ __raw_writel(pwrcnt, EP93XX_SYSCON_CLOCK_CONTROL);
++}
++
++static void ep93xx_stop_hc(struct platform_device *dev)
++{
++ unsigned int pwrcnt;
++
++ pwrcnt = __raw_readl(EP93XX_SYSCON_CLOCK_CONTROL);
++ pwrcnt &= ~EP93XX_SYSCON_CLOCK_USH_EN;
++ __raw_writel(pwrcnt, EP93XX_SYSCON_CLOCK_CONTROL);
++}
++
++int usb_hcd_ep93xx_probe(const struct hc_driver *driver,
++ struct platform_device *dev)
++{
++ int retval;
++ struct usb_hcd *hcd;
++
++ hcd = usb_create_hcd(driver, &dev->dev, "ep93xx");
++ if (hcd == NULL)
++ return -ENOMEM;
++
++ hcd->rsrc_start = dev->resource[0].start;
++ hcd->rsrc_len = dev->resource[0].end - dev->resource[0].start + 1;
++ if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
++ usb_put_hcd(hcd);
++ retval = -EBUSY;
++ goto err1;
++ }
++
++ hcd->regs = (void __iomem *)dev->resource[0].start;
++
++ ep93xx_start_hc(dev);
++
++ ohci_hcd_init(hcd_to_ohci(hcd));
++
++ retval = usb_add_hcd(hcd, dev->resource[1].start, SA_INTERRUPT);
++ if (retval == 0)
++ return retval;
++
++ ep93xx_stop_hc(dev);
++ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
++err1:
++ usb_put_hcd(hcd);
++
++ return retval;
++}
++
++void usb_hcd_ep93xx_remove(struct usb_hcd *hcd, struct platform_device *dev)
++{
++ usb_remove_hcd(hcd);
++ ep93xx_stop_hc(dev);
++ release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
++ usb_put_hcd(hcd);
++}
++
++static int __devinit ohci_ep93xx_start(struct usb_hcd *hcd)
++{
++ struct ohci_hcd *ohci = hcd_to_ohci(hcd);
++ int ret;
++
++ if ((ret = ohci_init(ohci)) < 0)
++ return ret;
++
++ if ((ret = ohci_run(ohci)) < 0) {
++ err("can't start %s", hcd->self.bus_name);
++ ohci_stop(hcd);
++ return ret;
++ }
++
++ return 0;
++}
++
++static struct hc_driver ohci_ep93xx_hc_driver = {
++ .description = hcd_name,
++ .product_desc = "EP93xx OHCI",
++ .hcd_priv_size = sizeof(struct ohci_hcd),
++ .irq = ohci_irq,
++ .flags = HCD_USB11,
++ .start = ohci_ep93xx_start,
++ .stop = ohci_stop,
++ .urb_enqueue = ohci_urb_enqueue,
++ .urb_dequeue = ohci_urb_dequeue,
++ .endpoint_disable = ohci_endpoint_disable,
++ .get_frame_number = ohci_get_frame,
++ .hub_status_data = ohci_hub_status_data,
++ .hub_control = ohci_hub_control,
++};
++
++extern int usb_disabled(void);
++
++static int ohci_hcd_ep93xx_drv_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = -ENODEV;
++ if (!usb_disabled())
++ ret = usb_hcd_ep93xx_probe(&ohci_ep93xx_hc_driver, pdev);
++
++ return ret;
++ return -ENODEV;
++}
++
++static int ohci_hcd_ep93xx_drv_remove(struct platform_device *pdev)
++{
++ struct usb_hcd *hcd = platform_get_drvdata(pdev);
++
++ usb_hcd_ep93xx_remove(hcd, pdev);
++
++ return 0;
++}
++
++static struct platform_driver ohci_hcd_ep93xx_driver = {
++ .probe = ohci_hcd_ep93xx_drv_probe,
++ .remove = ohci_hcd_ep93xx_drv_remove,
++ .driver = {
++ .name = "ep93xx-ohci",
++ },
++};
++
++static int __init ohci_hcd_ep93xx_init(void)
++{
++ return platform_driver_register(&ohci_hcd_ep93xx_driver);
++}
++
++static void __exit ohci_hcd_ep93xx_cleanup(void)
++{
++ platform_driver_unregister(&ohci_hcd_ep93xx_driver);
++}
++
++module_init(ohci_hcd_ep93xx_init);
++module_exit(ohci_hcd_ep93xx_cleanup);
+diff -urN linux-2.6.15.commit/drivers/usb/host/ohci-hcd.c linux-2.6.15.snap/drivers/usb/host/ohci-hcd.c
+--- linux-2.6.15.commit/drivers/usb/host/ohci-hcd.c 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/usb/host/ohci-hcd.c 2006-02-28 01:30:21.000000000 +0100
+@@ -909,6 +909,10 @@
+ #include "ohci-pxa27x.c"
+ #endif
+
++#ifdef CONFIG_ARCH_EP93XX
++#include "ohci-ep93xx.c"
++#endif
++
+ #ifdef CONFIG_SOC_AU1X00
+ #include "ohci-au1xxx.c"
+ #endif
+@@ -923,6 +927,7 @@
+ || defined(CONFIG_ARCH_OMAP) \
+ || defined (CONFIG_ARCH_LH7A404) \
+ || defined (CONFIG_PXA27x) \
++ || defined (CONFIG_ARCH_EP93XX) \
+ || defined (CONFIG_SOC_AU1X00) \
+ || defined (CONFIG_USB_OHCI_HCD_PPC_SOC) \
+ )
+diff -urN linux-2.6.15.commit/drivers/usb/Kconfig linux-2.6.15.snap/drivers/usb/Kconfig
+--- linux-2.6.15.commit/drivers/usb/Kconfig 2006-02-12 10:22:16.000000000 +0100
++++ linux-2.6.15.snap/drivers/usb/Kconfig 2006-02-20 22:56:03.000000000 +0100
+@@ -22,6 +22,7 @@
+ default y if ARCH_LH7A404
+ default y if ARCH_S3C2410
+ default y if PXA27x
++ default y if ARCH_EP93XX
+ # PPC:
+ default y if STB03xxx
+ default y if PPC_MPC52xx
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/debug-macro.S linux-2.6.15.snap/include/asm-arm/arch-ep93xx/debug-macro.S
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/debug-macro.S 2006-02-19 18:59:06.000000000 +0100
+@@ -0,0 +1,35 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/debug-macro.S
++ * Debugging macro include header
++ *
++ * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ */
++
++ .macro addruart,rx
++ mrc p15, 0, \rx, c1, c0
++ tst \rx, #1 @ MMU enabled?
++ ldreq \rx, =EP93XX_APB_PHYS_BASE @ Physical base
++ ldrne \rx, =EP93XX_APB_VIRT_BASE @ virtual base
++ orr \rx, \rx, #0x000c0000
++ .endm
++
++ .macro senduart,rd,rx
++ strb \rd, [\rx]
++ .endm
++
++ .macro busyuart,rd,rx
++1001: ldrb \rd, [\rx, #0x18]
++ tst \rd, #0x08
++ bne 1001b
++ .endm
++
++ .macro waituart,rd,rx
++ nop
++ nop
++ nop
++ .endm
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/dma.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/dma.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/dma.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/dma.h 2006-02-19 19:28:06.000000000 +0100
+@@ -0,0 +1,6 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/dma.h
++ */
++
++#define MAX_DMA_ADDRESS 0xffffffff
++#define MAX_DMA_CHANNELS 0
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/entry-macro.S linux-2.6.15.snap/include/asm-arm/arch-ep93xx/entry-macro.S
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/entry-macro.S 2006-02-20 19:04:14.000000000 +0100
+@@ -0,0 +1,52 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/entry-macro.S
++ * IRQ demultiplexing for EP93xx
++ *
++ * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ */
++
++ .macro disable_fiq
++ .endm
++
++ .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
++ ldr \base, =(EP93XX_AHB_VIRT_BASE)
++ orr \base, \base, #0x000b0000
++ mov \irqnr, #0
++ ldr \irqstat, [\base] @ lower 32 interrupts
++ cmp \irqstat, #0
++ bne 1001f
++
++ eor \base, \base, #0x00070000
++ ldr \irqstat, [\base] @ upper 32 interrupts
++ cmp \irqstat, #0
++ beq 1002f
++ mov \irqnr, #0x20
++
++1001:
++ movs \tmp, \irqstat, lsl #16
++ movne \irqstat, \tmp
++ addeq \irqnr, \irqnr, #16
++
++ movs \tmp, \irqstat, lsl #8
++ movne \irqstat, \tmp
++ addeq \irqnr, \irqnr, #8
++
++ movs \tmp, \irqstat, lsl #4
++ movne \irqstat, \tmp
++ addeq \irqnr, \irqnr, #4
++
++ movs \tmp, \irqstat, lsl #2
++ movne \irqstat, \tmp
++ addeq \irqnr, \irqnr, #2
++
++ movs \tmp, \irqstat, lsl #1
++ addeq \irqnr, \irqnr, #1
++ orrs \base, \base, #1
++
++1002:
++ .endm
+Binary files linux-2.6.15.commit/include/asm-arm/arch-ep93xx/.entry-macro.S.swp and linux-2.6.15.snap/include/asm-arm/arch-ep93xx/.entry-macro.S.swp differ
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/ep93xx-regs.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/ep93xx-regs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2006-02-28 01:32:57.000000000 +0100
+@@ -0,0 +1,118 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/ep93xx-regs.h
++ */
++
++#ifndef __ARCH_EP93XX_REGS_H
++#define __ARCH_EP93XX_REGS_H
++
++/*
++ * EP93xx linux memory map:
++ *
++ * virt phys size
++ * fe800000 5M per-platform mappings
++ * fed00000 80800000 2M APB
++ * fef00000 80000000 1M AHB
++ */
++
++#define EP93XX_AHB_PHYS_BASE 0x80000000
++#define EP93XX_AHB_VIRT_BASE 0xfef00000
++#define EP93XX_AHB_SIZE 0x00100000
++
++#define EP93XX_APB_PHYS_BASE 0x80800000
++#define EP93XX_APB_VIRT_BASE 0xfed00000
++#define EP93XX_APB_SIZE 0x00200000
++
++
++/* AHB peripherals */
++#define EP93XX_DMA_BASE (EP93XX_AHB_VIRT_BASE + 0x00000000)
++
++#define EP93XX_ETHERNET_BASE (EP93XX_AHB_VIRT_BASE + 0x00010000)
++
++#define EP93XX_USB_BASE (EP93XX_AHB_VIRT_BASE + 0x00020000)
++
++#define EP93XX_RASTER_BASE (EP93XX_AHB_VIRT_BASE + 0x00030000)
++
++#define EP93XX_SDRAM_CONTROLLER_BASE (EP93XX_AHB_VIRT_BASE + 0x00060000)
++
++#define EP93XX_PCMCIA_CONTROLLER_BASE (EP93XX_AHB_VIRT_BASE + 0x00080000)
++
++#define EP93XX_BOOT_ROM_BASE (EP93XX_AHB_VIRT_BASE + 0x00090000)
++
++#define EP93XX_IDE_BASE (EP93XX_AHB_VIRT_BASE + 0x000a0000)
++
++#define EP93XX_VIC1_BASE (EP93XX_AHB_VIRT_BASE + 0x000b0000)
++#define EP93XX_VIC1_REG(x) (EP93XX_VIC1_BASE + (x))
++#define EP93XX_VIC1_IRQ_STATUS EP93XX_VIC1_REG(0x0000)
++#define EP93XX_VIC1_SELECT EP93XX_VIC1_REG(0x000c)
++#define EP93XX_VIC1_ENABLE EP93XX_VIC1_REG(0x0010)
++#define EP93XX_VIC1_ENABLE_CLEAR EP93XX_VIC1_REG(0x0014)
++#define EP93XX_VIC1_VECT_CNTRL EP93XX_VIC1_REG(0x0200)
++
++#define EP93XX_VIC2_BASE (EP93XX_AHB_VIRT_BASE + 0x000c0000)
++#define EP93XX_VIC2_REG(x) (EP93XX_VIC2_BASE + (x))
++#define EP93XX_VIC2_IRQ_STATUS EP93XX_VIC2_REG(0x0000)
++#define EP93XX_VIC2_SELECT EP93XX_VIC2_REG(0x000c)
++#define EP93XX_VIC2_ENABLE EP93XX_VIC2_REG(0x0010)
++#define EP93XX_VIC2_ENABLE_CLEAR EP93XX_VIC2_REG(0x0014)
++#define EP93XX_VIC2_VECT_CNTRL EP93XX_VIC2_REG(0x0200)
++
++
++/* APB peripherals */
++#define EP93XX_TIMER_BASE (EP93XX_APB_VIRT_BASE + 0x00010000)
++#define EP93XX_TIMER_REG(x) (EP93XX_TIMER_BASE + (x))
++#define EP93XX_TIMER1_LOAD EP93XX_TIMER_REG(0x00)
++#define EP93XX_TIMER1_VALUE EP93XX_TIMER_REG(0x04)
++#define EP93XX_TIMER1_CONTROL EP93XX_TIMER_REG(0x08)
++#define EP93XX_TIMER1_CLEAR EP93XX_TIMER_REG(0x0c)
++#define EP93XX_TIMER2_LOAD EP93XX_TIMER_REG(0x20)
++#define EP93XX_TIMER2_VALUE EP93XX_TIMER_REG(0x24)
++#define EP93XX_TIMER2_CONTROL EP93XX_TIMER_REG(0x28)
++#define EP93XX_TIMER2_CLEAR EP93XX_TIMER_REG(0x2c)
++#define EP93XX_TIMER4_VALUE_LOW EP93XX_TIMER_REG(0x60)
++#define EP93XX_TIMER4_VALUE_HIGH EP93XX_TIMER_REG(0x64)
++#define EP93XX_TIMER3_LOAD EP93XX_TIMER_REG(0x80)
++#define EP93XX_TIMER3_VALUE EP93XX_TIMER_REG(0x84)
++#define EP93XX_TIMER3_CONTROL EP93XX_TIMER_REG(0x88)
++#define EP93XX_TIMER3_CLEAR EP93XX_TIMER_REG(0x8c)
++
++#define EP93XX_I2S_BASE (EP93XX_APB_VIRT_BASE + 0x00020000)
++
++#define EP93XX_SECURITY_BASE (EP93XX_APB_VIRT_BASE + 0x00030000)
++
++#define EP93XX_GPIO_BASE (EP93XX_APB_VIRT_BASE + 0x00040000)
++
++#define EP93XX_AAC_BASE (EP93XX_APB_VIRT_BASE + 0x00080000)
++
++#define EP93XX_SPI_BASE (EP93XX_APB_VIRT_BASE + 0x000a0000)
++
++#define EP93XX_IRDA_BASE (EP93XX_APB_VIRT_BASE + 0x000b0000)
++
++#define EP93XX_UART1_BASE (EP93XX_APB_VIRT_BASE + 0x000c0000)
++
++#define EP93XX_UART2_BASE (EP93XX_APB_VIRT_BASE + 0x000d0000)
++
++#define EP93XX_UART3_BASE (EP93XX_APB_VIRT_BASE + 0x000e0000)
++
++#define EP93XX_KEY_MATRIX_BASE (EP93XX_APB_VIRT_BASE + 0x000f0000)
++
++#define EP93XX_TOUCHSCREEN_BASE (EP93XX_APB_VIRT_BASE + 0x00100000)
++
++#define EP93XX_PWM_BASE (EP93XX_APB_VIRT_BASE + 0x00110000)
++
++#define EP93XX_RTC_BASE (EP93XX_APB_VIRT_BASE + 0x00120000)
++
++#define EP93XX_SYSCON_BASE (EP93XX_APB_VIRT_BASE + 0x00130000)
++#define EP93XX_SYSCON_REG(x) (EP93XX_SYSCON_BASE + (x))
++#define EP93XX_SYSCON_POWER_STATE EP93XX_SYSCON_REG(0x00)
++#define EP93XX_SYSCON_CLOCK_CONTROL EP93XX_SYSCON_REG(0x04)
++#define EP93XX_SYSCON_CLOCK_UARTBAUD 0x20000000
++#define EP93XX_SYSCON_CLOCK_USH_EN 0x10000000
++#define EP93XX_SYSCON_HALT EP93XX_SYSCON_REG(0x08)
++#define EP93XX_SYSCON_STANDBY EP93XX_SYSCON_REG(0x0c)
++#define EP93XX_SYSCON_DEVICE_CONFIG EP93XX_SYSCON_REG(0x80)
++#define EP93XX_SYSCON_SWLOCK EP93XX_SYSCON_REG(0xc0)
++
++#define EP93XX_WATCHDOG_BASE (EP93XX_APB_VIRT_BASE + 0x00140000)
++
++
++#endif
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/gesbc9312.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/gesbc9312.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/gesbc9312.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/gesbc9312.h 2006-02-19 19:30:10.000000000 +0100
+@@ -0,0 +1,3 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/gesbc9312.h
++ */
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/hardware.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/hardware.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/hardware.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/hardware.h 2006-02-19 20:15:12.000000000 +0100
+@@ -0,0 +1,12 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/hardware.h
++ */
++
++#include "ep93xx-regs.h"
++
++#define pcibios_assign_all_busses() 0
++
++#include "platform.h"
++
++#include "gesbc9312.h"
++#include "ts72xx.h"
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/io.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/io.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/io.h 2006-02-19 20:03:57.000000000 +0100
+@@ -0,0 +1,8 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/io.h
++ */
++
++#define IO_SPACE_LIMIT 0xffffffff
++
++#define __io(p) ((void __iomem *)(p))
++#define __mem_pci(p) (p)
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/irqs.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/irqs.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/irqs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/irqs.h 2006-02-19 21:29:37.000000000 +0100
+@@ -0,0 +1,78 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/irqs.h
++ */
++
++#ifndef _IRQS_H
++#define _IRQS_H
++
++#define IRQ_EP93XX_COMMRX 2
++#define IRQ_EP93XX_COMMTX 3
++#define IRQ_EP93XX_TIMER1 4
++#define IRQ_EP93XX_TIMER2 5
++#define IRQ_EP93XX_AACINTR 6
++#define IRQ_EP93XX_DMAM2P0 7
++#define IRQ_EP93XX_DMAM2P1 8
++#define IRQ_EP93XX_DMAM2P2 9
++#define IRQ_EP93XX_DMAM2P3 10
++#define IRQ_EP93XX_DMAM2P4 11
++#define IRQ_EP93XX_DMAM2P5 12
++#define IRQ_EP93XX_DMAM2P6 13
++#define IRQ_EP93XX_DMAM2P7 14
++#define IRQ_EP93XX_DMAM2P8 15
++#define IRQ_EP93XX_DMAM2P9 16
++#define IRQ_EP93XX_DMAM2M0 17
++#define IRQ_EP93XX_DMAM2M1 18
++#define IRQ_EP93XX_GPIO0MUX 20
++#define IRQ_EP93XX_GPIO1MUX 21
++#define IRQ_EP93XX_GPIO2MUX 22
++#define IRQ_EP93XX_GPIO3MUX 22
++#define IRQ_EP93XX_UART1RX 23
++#define IRQ_EP93XX_UART1TX 24
++#define IRQ_EP93XX_UART2RX 25
++#define IRQ_EP93XX_UART2TX 26
++#define IRQ_EP93XX_UART3RX 27
++#define IRQ_EP93XX_UART3TX 28
++#define IRQ_EP93XX_KEY 29
++#define IRQ_EP93XX_TOUCH 30
++#define EP93XX_VIC1_VALID_IRQ_MASK 0x7ffffffc
++
++#define IRQ_EP93XX_EXT0 32
++#define IRQ_EP93XX_EXT1 33
++#define IRQ_EP93XX_EXT2 34
++#define IRQ_EP93XX_64HZ 35
++#define IRQ_EP93XX_WATCHDOG 36
++#define IRQ_EP93XX_RTC 37
++#define IRQ_EP93XX_IRDA 38
++#define IRQ_EP93XX_ETHERNET 39
++#define IRQ_EP93XX_EXT3 40
++#define IRQ_EP93XX_PROG 41
++#define IRQ_EP93XX_1HZ 42
++#define IRQ_EP93XX_VSYNC 43
++#define IRQ_EP93XX_VIDEO_FIFO 44
++#define IRQ_EP93XX_SSP1RX 45
++#define IRQ_EP93XX_SSP1TX 46
++#define IRQ_EP93XX_GPIO4MUX 47
++#define IRQ_EP93XX_GPIO5MUX 48
++#define IRQ_EP93XX_GPIO6MUX 49
++#define IRQ_EP93XX_GPIO7MUX 50
++#define IRQ_EP93XX_TIMER3 51
++#define IRQ_EP93XX_UART1 52
++#define IRQ_EP93XX_SSP 53
++#define IRQ_EP93XX_UART2 54
++#define IRQ_EP93XX_UART3 55
++#define IRQ_EP93XX_USB 56
++#define IRQ_EP93XX_ETHERNET_PME 57
++#define IRQ_EP93XX_DSP 58
++#define IRQ_EP93XX_GPIO 59
++#define IRQ_EP93XX_SAI 60
++#define EP93XX_VIC2_VALID_IRQ_MASK 0x1fffffff
++
++#define NR_EP93XX_IRQS 64
++
++#define EP93XX_BOARD_IRQ(x) (NR_EP93XX_IRQS + (x))
++#define EP93XX_BOARD_IRQS 32
++
++#define NR_IRQS (NR_EP93XX_IRQS + EP93XX_BOARD_IRQS)
++
++
++#endif
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/memory.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/memory.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/memory.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/memory.h 2006-02-22 02:05:51.000000000 +0100
+@@ -0,0 +1,14 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/memory.h
++ */
++
++#ifndef __ASM_ARCH_MEMORY_H
++#define __ASM_ARCH_MEMORY_H
++
++#define PHYS_OFFSET UL(0x00000000)
++
++#define __bus_to_virt(x) __phys_to_virt(x)
++#define __virt_to_bus(x) __virt_to_phys(x)
++
++
++#endif
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/param.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/param.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/param.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/param.h 2006-02-22 02:05:20.000000000 +0100
+@@ -0,0 +1,3 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/param.h
++ */
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/platform.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/platform.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/platform.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/platform.h 2006-02-20 14:26:36.000000000 +0100
+@@ -0,0 +1,14 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/platform.h
++ */
++
++#ifndef __ASSEMBLY__
++
++void ep93xx_map_io(void);
++void ep93xx_init_irq(void);
++void ep93xx_init_time(unsigned long);
++void ep93xx_init_devices(void);
++extern struct sys_timer ep93xx_timer;
++
++
++#endif
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/system.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/system.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/system.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/system.h 2006-02-20 21:28:04.000000000 +0100
+@@ -0,0 +1,26 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/system.h
++ */
++
++#include <asm/hardware.h>
++
++static inline void arch_idle(void)
++{
++ cpu_do_idle();
++}
++
++static inline void arch_reset(char mode)
++{
++ u32 devicecfg;
++
++ local_irq_disable();
++
++ devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++
++ while (1)
++ ;
++}
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/timex.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/timex.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/timex.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/timex.h 2006-02-19 19:16:38.000000000 +0100
+@@ -0,0 +1,5 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/timex.h
++ */
++
++#define CLOCK_TICK_RATE 508000
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/ts72xx.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/ts72xx.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/ts72xx.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/ts72xx.h 2006-02-22 17:01:02.000000000 +0100
+@@ -0,0 +1,90 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/ts72xx.h
++ */
++
++/*
++ * TS72xx memory map:
++ *
++ * virt phys size
++ * febff000 22000000 4K model number register
++ * febfe000 22400000 4K options register
++ * febfd000 22800000 4K options register #2
++ * febfc000 [67]0000000 4K NAND data register
++ * febfb000 [67]0400000 4K NAND control register
++ * febfa000 [67]0800000 4K NAND busy register
++ */
++
++#define TS72XX_MODEL_PHYS_BASE 0x22000000
++#define TS72XX_MODEL_VIRT_BASE 0xfebff000
++#define TS72XX_MODEL_SIZE 0x00001000
++
++#define TS72XX_MODEL_TS7200 0x00
++#define TS72XX_MODEL_TS7250 0x01
++#define TS72XX_MODEL_TS7260 0x02
++
++
++#define TS72XX_OPTIONS_PHYS_BASE 0x22400000
++#define TS72XX_OPTIONS_VIRT_BASE 0xfebfe000
++#define TS72XX_OPTIONS_SIZE 0x00001000
++
++#define TS72XX_OPTIONS_COM2_RS485 0x02
++#define TS72XX_OPTIONS_MAX197 0x01
++
++
++#define TS72XX_OPTIONS2_PHYS_BASE 0x22800000
++#define TS72XX_OPTIONS2_VIRT_BASE 0xfebfd000
++#define TS72XX_OPTIONS2_SIZE 0x00001000
++
++#define TS72XX_OPTIONS2_TS9420 0x04
++#define TS72XX_OPTIONS2_TS9420_BOOT 0x02
++
++
++#define TS72XX_NOR_PHYS_BASE 0x60000000
++#define TS72XX_NOR2_PHYS_BASE 0x62000000
++
++#define TS72XX_NAND1_DATA_PHYS_BASE 0x60000000
++#define TS72XX_NAND2_DATA_PHYS_BASE 0x70000000
++#define TS72XX_NAND_DATA_VIRT_BASE 0xfebfc000
++#define TS72XX_NAND_DATA_SIZE 0x00001000
++
++#define TS72XX_NAND1_CONTROL_PHYS_BASE 0x60400000
++#define TS72XX_NAND2_CONTROL_PHYS_BASE 0x70400000
++#define TS72XX_NAND_CONTROL_VIRT_BASE 0xfebfb000
++#define TS72XX_NAND_CONTROL_SIZE 0x00001000
++
++#define TS72XX_NAND1_BUSY_PHYS_BASE 0x60800000
++#define TS72XX_NAND2_BUSY_PHYS_BASE 0x70800000
++#define TS72XX_NAND_BUSY_VIRT_BASE 0xfebfa000
++#define TS72XX_NAND_BUSY_SIZE 0x00001000
++
++
++#ifndef __ASSEMBLY__
++#include <asm/io.h>
++
++static inline int board_is_ts7200(void)
++{
++ return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7200;
++}
++
++static inline int board_is_ts7250(void)
++{
++ return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7250;
++}
++
++static inline int board_is_ts7260(void)
++{
++ return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7260;
++}
++
++static inline int is_max197_installed(void)
++{
++ return !!(__raw_readb(TS72XX_OPTIONS_VIRT_BASE) &
++ TS72XX_OPTIONS_MAX197);
++}
++
++static inline int is_ts9420_installed(void)
++{
++ return !!(__raw_readb(TS72XX_OPTIONS2_VIRT_BASE) &
++ TS72XX_OPTIONS2_TS9420);
++}
++#endif
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/uncompress.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/uncompress.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/uncompress.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/uncompress.h 2006-02-22 02:20:49.000000000 +0100
+@@ -0,0 +1,42 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/uncompress.h
++ *
++ * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or (at
++ * your option) any later version.
++ */
++
++#include <asm/arch/ep93xx-regs.h>
++
++#define PHYS_UART1_DATA ((unsigned long *)0x808c0000)
++#define PHYS_UART1_FLAG ((unsigned long *)0x808c0018)
++#define UART1_FLAG_TXFF 0x20
++
++static __inline__ void putc(char c)
++{
++ int i;
++
++ for (i = 0; i < 1000; i++) {
++ /* Transmit fifo not full? */
++ if (!(*PHYS_UART1_FLAG & UART1_FLAG_TXFF))
++ break;
++ }
++
++ *PHYS_UART1_DATA = c;
++}
++
++static void putstr(const char *s)
++{
++ while (*s) {
++ putc(*s);
++ if (*s == '\n')
++ putc('\r');
++ s++;
++ }
++}
++
++#define arch_decomp_setup()
++#define arch_decomp_wdog()
+diff -urN linux-2.6.15.commit/include/asm-arm/arch-ep93xx/vmalloc.h linux-2.6.15.snap/include/asm-arm/arch-ep93xx/vmalloc.h
+--- linux-2.6.15.commit/include/asm-arm/arch-ep93xx/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/arch-ep93xx/vmalloc.h 2006-02-19 22:05:22.000000000 +0100
+@@ -0,0 +1,5 @@
++/*
++ * linux/include/asm-arm/arch-ep93xx/vmalloc.h
++ */
++
++#define VMALLOC_END 0xfe800000
+diff -urN linux-2.6.15.commit/include/asm-arm/hardware/vic.h linux-2.6.15.snap/include/asm-arm/hardware/vic.h
+--- linux-2.6.15.commit/include/asm-arm/hardware/vic.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/hardware/vic.h 2006-02-20 13:57:02.000000000 +0100
+@@ -0,0 +1,45 @@
++/*
++ * linux/include/asm-arm/hardware/vic.h
++ *
++ * Copyright (c) ARM Limited 2003. All rights reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++#ifndef __ASM_ARM_HARDWARE_VIC_H
++#define __ASM_ARM_HARDWARE_VIC_H
++
++#define VIC_IRQ_STATUS 0x00
++#define VIC_FIQ_STATUS 0x04
++#define VIC_RAW_STATUS 0x08
++#define VIC_INT_SELECT 0x0c /* 1 = FIQ, 0 = IRQ */
++#define VIC_INT_ENABLE 0x10 /* 1 = enable, 0 = disable */
++#define VIC_INT_ENABLE_CLEAR 0x14
++#define VIC_INT_SOFT 0x18
++#define VIC_INT_SOFT_CLEAR 0x1c
++#define VIC_PROTECT 0x20
++#define VIC_VECT_ADDR 0x30
++#define VIC_DEF_VECT_ADDR 0x34
++
++#define VIC_VECT_ADDR0 0x100 /* 0 to 15 */
++#define VIC_VECT_CNTL0 0x200 /* 0 to 15 */
++#define VIC_ITCR 0x300 /* VIC test control register */
++
++#define VIC_VECT_CNTL_ENABLE (1 << 5)
++
++#ifndef __ASSEMBLY__
++void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources);
++#endif
++
++#endif
+diff -urN linux-2.6.15.commit/include/asm-arm/mach/irq.h linux-2.6.15.snap/include/asm-arm/mach/irq.h
+--- linux-2.6.15.commit/include/asm-arm/mach/irq.h 2006-02-12 10:22:19.000000000 +0100
++++ linux-2.6.15.snap/include/asm-arm/mach/irq.h 2006-02-20 13:57:02.000000000 +0100
+@@ -61,7 +61,7 @@
+ struct irqchip *chip;
+ struct irqaction *action;
+ struct list_head pend;
+- void *chipdata;
++ void __iomem *chipdata;
+ void *data;
+ unsigned int disable_depth;
+
diff --git a/packages/linux/ep93xx-kernel_2.6.15.bb b/packages/linux/ep93xx-kernel_2.6.15.bb
index 500cae5fee..46cb819d7d 100644
--- a/packages/linux/ep93xx-kernel_2.6.15.bb
+++ b/packages/linux/ep93xx-kernel_2.6.15.bb
@@ -1,10 +1,10 @@
DESCRIPTION = "Linux Kernel for Cirrus Logic ep39xx compatible machines"
SECTION = "kernel"
LICENSE = "GPL"
-PR = "r3"
+PR = "r6"
SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
- http://wantstofly.org/~buytenh/ep93xx/derevo2.diff;patch=1 \
+ file://derevo6.diff;patch=1 \
"
S = "${WORKDIR}/linux-${PV}"
@@ -18,8 +18,8 @@ do_configure() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/handhelds-pxa-2.6/block-pio.patch b/packages/linux/handhelds-pxa-2.6/block-pio.patch
new file mode 100644
index 0000000000..294140b6e8
--- /dev/null
+++ b/packages/linux/handhelds-pxa-2.6/block-pio.patch
@@ -0,0 +1,146 @@
+On architectures where highmem isn't used, arguments to kmap/unmap are
+simply thrown away without being evaluated. This is fine until a
+wrapper function is written. Even though it got ignored in the end,
+the arguments are evaulated. As asm/highmem.h is not included by
+linux/highmem.h when CONFIG_HIGHMEM is off, none of KM_* constants get
+defined which results in error if those are evaluated.
+
+This patch makes linux/highmem.h include asm/kmap_types.h regardless
+of CONFIG_HIGHMEM. To deal with the same problem, crypto subsystem
+used to include asm/kmap_types.h directly. This patch kills it.
+
+Signed-off-by: Tejun Heo <htejun@gmail.com>
+
+---
+
+ crypto/internal.h | 1 -
+ include/linux/highmem.h | 1 +
+ 2 files changed, 1 insertions(+), 1 deletions(-)
+
+4e0462fa09e87da901867f37b2c7311ef714c3e7
+diff --git a/crypto/internal.h b/crypto/internal.h
+index 959e602..4188672 100644
+--- a/crypto/internal.h
++++ b/crypto/internal.h
+@@ -21,7 +21,6 @@
+ #include <linux/kernel.h>
+ #include <linux/rwsem.h>
+ #include <linux/slab.h>
+-#include <asm/kmap_types.h>
+
+ extern struct list_head crypto_alg_list;
+ extern struct rw_semaphore crypto_alg_sem;
+diff --git a/include/linux/highmem.h b/include/linux/highmem.h
+index 6bece92..c605f01 100644
+--- a/include/linux/highmem.h
++++ b/include/linux/highmem.h
+@@ -6,6 +6,7 @@
+ #include <linux/mm.h>
+
+ #include <asm/cacheflush.h>
++#include <asm/kmap_types.h>
+
+ #ifdef CONFIG_HIGHMEM
+
+
+When block requests are handled via DMA dma mapping functions take
+care of cache coherency. Unfortunately, cache coherencly was left
+unhandled until now for block PIOs, resulting in data corruption
+issues on architectures with aliasing caches.
+
+All block PIO operations use kmap/unmap to access target memory area
+and the mapping/unmapping points are the perfect places for cache
+flushing. kmap/unmap are to PIO'ing cpus what dma_map/unmap are to
+DMAing devices.
+
+This patch implements blk kmap helpers which additionally take
+@direction argument and deal with cache coherency.
+
+Signed-off-by: Tejun Heo <htejun@gmail.com>
+
+diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
+index 02a585f..1040029 100644
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -17,6 +17,10 @@
+
+ #include <asm/scatterlist.h>
+
++/* for PIO kmap helpers */
++#include <linux/highmem.h>
++#include <linux/dma-mapping.h>
++
+ struct request_queue;
+ typedef struct request_queue request_queue_t;
+ struct elevator_queue;
+@@ -812,6 +816,40 @@ static inline void put_dev_sector(Sector
+ page_cache_release(p.v);
+ }
+
++/*
++ * PIO kmap helpers.
++ *
++ * Block PIO requires cache flushes on architectures with aliasing
++ * caches. If a driver wants to perform PIO on a user-mappable page
++ * (page cache page), it MUST use one of the following kmap/unmap
++ * helpers unless it handles cache coherency itself.
++ */
++static inline void * blk_kmap_atomic(struct page *page, enum km_type type,
++ enum dma_data_direction dir)
++{
++ return kmap_atomic(page, type);
++}
++
++static inline void blk_kunmap_atomic(void *addr, enum km_type type,
++ enum dma_data_direction dir)
++{
++ if (dir == DMA_BIDIRECTIONAL || dir == DMA_FROM_DEVICE)
++ flush_dcache_page(kmap_atomic_to_page(addr));
++ kunmap_atomic(addr, type);
++}
++
++static inline void * blk_kmap(struct page *page, enum dma_data_direction dir)
++{
++ return kmap(page);
++}
++
++static inline void blk_kunmap(struct page *page, enum dma_data_direction dir)
++{
++ if (dir == DMA_BIDIRECTIONAL || dir == DMA_FROM_DEVICE)
++ flush_dcache_page(page);
++ kunmap(page);
++}
++
+ struct work_struct;
+ int kblockd_schedule_work(struct work_struct *work);
+ void kblockd_flush(void);
+diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
+index 62ebefd..24d5e56 100644
+--- a/drivers/ide/ide-taskfile.c
++++ b/drivers/ide/ide-taskfile.c
+@@ -260,6 +260,7 @@ static void ide_pio_sector(ide_drive_t *
+ {
+ ide_hwif_t *hwif = drive->hwif;
+ struct scatterlist *sg = hwif->sg_table;
++ enum dma_data_direction dir = write ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
+ struct page *page;
+ #ifdef CONFIG_HIGHMEM
+ unsigned long flags;
+@@ -277,7 +278,7 @@ static void ide_pio_sector(ide_drive_t *
+ #ifdef CONFIG_HIGHMEM
+ local_irq_save(flags);
+ #endif
+- buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset;
++ buf = blk_kmap_atomic(page, KM_BIO_SRC_IRQ, dir) + offset;
+
+ hwif->nleft--;
+ hwif->cursg_ofs++;
+@@ -293,7 +294,7 @@ static void ide_pio_sector(ide_drive_t *
+ else
+ taskfile_input_data(drive, buf, SECTOR_WORDS);
+
+- kunmap_atomic(buf, KM_BIO_SRC_IRQ);
++ blk_kunmap_atomic(buf, KM_BIO_SRC_IRQ, dir);
+ #ifdef CONFIG_HIGHMEM
+ local_irq_restore(flags);
+ #endif
diff --git a/packages/linux/handhelds-pxa-2.6/h2200/defconfig b/packages/linux/handhelds-pxa-2.6/h2200/defconfig
index d1790dfe27..adb05cd8e3 100644
--- a/packages/linux/handhelds-pxa-2.6/h2200/defconfig
+++ b/packages/linux/handhelds-pxa-2.6/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.15-hh0
-# Fri Feb 10 12:28:28 2006
+# Linux kernel version: 2.6.15-hh1
+# Wed Feb 22 16:24:24 2006
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -642,7 +642,7 @@ CONFIG_MTD_NAND_HAMCOP=y
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
@@ -992,7 +992,7 @@ CONFIG_SA1100_WATCHDOG=m
#
# CONFIG_USBPCWATCHDOG is not set
# CONFIG_NVRAM is not set
-CONFIG_SA1100_RTC=m
+CONFIG_SA1100_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
@@ -1444,7 +1444,7 @@ CONFIG_RAMFS=y
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_SUMMARY=y
diff --git a/packages/linux/handhelds-pxa-2.6_2.6.15-hh0.bb b/packages/linux/handhelds-pxa-2.6_2.6.15-hh0.bb
index f0fe6f32e9..6c69b548d0 100644
--- a/packages/linux/handhelds-pxa-2.6_2.6.15-hh0.bb
+++ b/packages/linux/handhelds-pxa-2.6_2.6.15-hh0.bb
@@ -9,6 +9,7 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/handhelds-pxa-${PV}"
SRC_URI = "${HANDHELDS_CVS};module=linux/kernel26;tag=${@'K' + bb.data.getVar('PV',d,1).replace('.', '-')} \
file://ide_not_removable-r0.patch;patch=1 \
+ file://block-pio.patch;patch=1 \
file://defconfig"
S = "${WORKDIR}/kernel26"
@@ -27,8 +28,8 @@ do_configure() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/handhelds-pxa-2.6_cvs.bb b/packages/linux/handhelds-pxa-2.6_cvs.bb
index 28b21328b2..122bb33efc 100644
--- a/packages/linux/handhelds-pxa-2.6_cvs.bb
+++ b/packages/linux/handhelds-pxa-2.6_cvs.bb
@@ -10,6 +10,8 @@ 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"
@@ -32,8 +34,8 @@ do_configure() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/ixp4xx-kernel.inc b/packages/linux/ixp4xx-kernel.inc
index 2ddb7cbb61..52f216438a 100644
--- a/packages/linux/ixp4xx-kernel.inc
+++ b/packages/linux/ixp4xx-kernel.inc
@@ -297,6 +297,20 @@ pkg_postrm_kernel-image-nas100d () {
update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-nas100d${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
}
+# The correct settings for the DSMG600 board:
+dsmg600_MACHID = "964"
+PACKAGES += "kernel-image-dsmg600"
+PKG_kernel-image-dsmg600 = "kernel-image-${KERNEL_VERSION}"
+PACKAGE_ARCH_kernel-image-dsmg600 = "dsmg600${ARCH_BYTE_SEX}"
+DESCRIPTION_kernel-image-dsmg600 = "Linux kernel for the D-Link DSM-G600"
+FILES_kernel-image-dsmg600 = "/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${ARCH_BYTE_SEX}-${KERNEL_RELEASE}"
+pkg_postinst_kernel-image-dsmg600 () {
+ update-alternatives --install /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${ARCH_BYTE_SEX}-${KERNEL_RELEASE} ${KERNEL_PRIORITY} || true
+}
+pkg_postrm_kernel-image-dsmg600 () {
+ update-alternatives --remove ${KERNEL_IMAGETYPE} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-dsmg600${ARCH_BYTE_SEX}-${KERNEL_RELEASE} || true
+}
+
#FIXUP: the correct instructions to copy the kernel prepended with the le fixup
#FIXME: do a fixup for BE too...
FIXUP_armeb = "cp$"
@@ -345,16 +359,17 @@ do_install_append() {
install_image 'ds101${ARCH_BYTE_SEX}' '${ds101_MACHID}'
install_image 'loft${ARCH_BYTE_SEX}' '${loft_MACHID}'
install_image 'nas100d${ARCH_BYTE_SEX}' '${nas100d_MACHID}'
+ install_image 'dsmg600${ARCH_BYTE_SEX}' '${dsmg600_MACHID}'
}
do_deploy[dirs] = "${S}"
deploy_image() {
- copy_image '${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-'"$1" "$2"
+ copy_image '${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-'"$1" "$2"
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
+ install -d ${DEPLOY_DIR_IMAGE}
deploy_image '${IXP4XX_SUFFIX}'
# And the machine specific images
@@ -362,6 +377,7 @@ do_deploy() {
deploy_image 'ds101${ARCH_BYTE_SEX}' '${ds101_MACHID}'
deploy_image 'loft${ARCH_BYTE_SEX}' '${loft_MACHID}'
deploy_image 'nas100d${ARCH_BYTE_SEX}' '${nas100d_MACHID}'
+ deploy_image 'dsmg600${ARCH_BYTE_SEX}' '${dsmg600_MACHID}'
}
addtask deploy before do_build after do_compile
diff --git a/packages/linux/ixp4xx-kernel/2.6.15/defconfig b/packages/linux/ixp4xx-kernel/2.6.15/defconfig
index 8279471c78..597d406940 100644
--- a/packages/linux/ixp4xx-kernel/2.6.15/defconfig
+++ b/packages/linux/ixp4xx-kernel/2.6.15/defconfig
@@ -1561,7 +1561,7 @@ CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
+CONFIG_CODA_FS=m
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/06-remove-extraversion.patch b/packages/linux/ixp4xx-kernel/2.6.16/06-remove-extraversion.patch
index 65aba13703..eca681b0aa 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/06-remove-extraversion.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/06-remove-extraversion.patch
@@ -4,7 +4,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 16
--EXTRAVERSION =-rc2
+-EXTRAVERSION = -rc4-git9
+EXTRAVERSION =
NAME=Sliding Snow Leopard
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/10-nslu2-fix-flash.patch b/packages/linux/ixp4xx-kernel/2.6.16/10-nslu2-fix-flash.patch
deleted file mode 100644
index ab37b099b1..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/10-nslu2-fix-flash.patch
+++ /dev/null
@@ -1,14 +0,0 @@
- arch/arm/mach-ixp4xx/nslu2-setup.c | 2 --
- 1 file changed, 2 deletions(-)
-
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 21:49:41.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 21:59:55.000000000 +0100
-@@ -27,8 +27,6 @@ static struct flash_platform_data nslu2_
- };
-
- static struct resource nslu2_flash_resource = {
-- .start = NSLU2_FLASH_BASE,
-- .end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE,
- .flags = IORESOURCE_MEM,
- };
-
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/40-rtc-class.patch b/packages/linux/ixp4xx-kernel/2.6.16/40-rtc-class.patch
index 38359a1bc0..3cc84b2a9b 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/40-rtc-class.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/40-rtc-class.patch
@@ -1,6 +1,6 @@
---- linux-nslu2.orig/include/linux/rtc.h 2006-02-06 20:37:43.000000000 +0100
-+++ linux-nslu2/include/linux/rtc.h 2006-02-06 21:41:39.000000000 +0100
-@@ -93,8 +93,91 @@ struct rtc_pll_info {
+--- linux-rtc.orig/include/linux/rtc.h 2006-02-19 23:33:10.000000000 +0100
++++ linux-rtc/include/linux/rtc.h 2006-02-19 23:33:15.000000000 +0100
+@@ -93,8 +93,97 @@ struct rtc_pll_info {
#define RTC_PLL_GET _IOR('p', 0x11, struct rtc_pll_info) /* Get PLL correction */
#define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info) /* Set PLL correction */
@@ -16,6 +16,7 @@
+#include <linux/seq_file.h>
+#include <linux/cdev.h>
+#include <linux/poll.h>
++#include <linux/mutex.h>
+
+struct rtc_class_ops {
+ int (*open)(struct device *);
@@ -29,6 +30,7 @@
+ int (*set_mmss)(struct device *, unsigned long secs);
+ int (*irq_set_state)(struct device *, int enabled);
+ int (*irq_set_freq)(struct device *, int freq);
++ int (*read_callback)(struct device *, int data);
+};
+
+#define RTC_DEVICE_NAME_SIZE 20
@@ -36,23 +38,25 @@
+
+struct rtc_device
+{
-+ int id;
-+ struct module *owner;
+ struct class_device class_dev;
-+ struct semaphore ops_lock;
-+ struct rtc_class_ops *ops;
++ struct module *owner;
++
++ int id;
+ char name[RTC_DEVICE_NAME_SIZE];
+
++ struct rtc_class_ops *ops;
++ struct mutex ops_lock;
++
+ struct cdev char_dev;
-+ struct semaphore char_sem;
++ struct mutex char_lock;
+
+ unsigned long irq_data;
+ spinlock_t irq_lock;
+ wait_queue_head_t irq_queue;
+ struct fasync_struct *async_queue;
+
-+ spinlock_t irq_task_lock;
+ struct rtc_task *irq_task;
++ spinlock_t irq_task_lock;
+ int irq_freq;
+};
+#define to_rtc_device(d) container_of(d, struct rtc_device, class_dev)
@@ -71,15 +75,17 @@
+
+extern int rtc_read_time(struct class_device *class_dev, struct rtc_time *tm);
+extern int rtc_set_time(struct class_device *class_dev, struct rtc_time *tm);
++extern int rtc_set_mmss(struct class_device *class_dev, unsigned long secs);
+extern int rtc_read_alarm(struct class_device *class_dev,
-+ struct rtc_wkalrm *alrm);
++ struct rtc_wkalrm *alrm);
+extern int rtc_set_alarm(struct class_device *class_dev,
+ struct rtc_wkalrm *alrm);
+extern void rtc_update_irq(struct class_device *class_dev,
+ unsigned long num, unsigned long events);
+
-+extern struct class_device *rtc_open(char *name);
-+extern void rtc_close(struct class_device *class_dev);
++extern struct class_device *rtc_class_open(char *name);
++extern void rtc_class_close(struct class_device *class_dev);
++
+extern int rtc_irq_register(struct class_device *class_dev,
+ struct rtc_task *task);
+extern void rtc_irq_unregister(struct class_device *class_dev,
@@ -92,8 +98,8 @@
typedef struct rtc_task {
void (*func)(void *private_data);
void *private_data;
---- linux-nslu2.orig/drivers/Kconfig 2006-02-06 20:37:14.000000000 +0100
-+++ linux-nslu2/drivers/Kconfig 2006-02-06 21:11:33.000000000 +0100
+--- linux-rtc.orig/drivers/Kconfig 2006-02-19 23:33:10.000000000 +0100
++++ linux-rtc/drivers/Kconfig 2006-02-19 23:33:15.000000000 +0100
@@ -70,4 +70,6 @@ source "drivers/sn/Kconfig"
source "drivers/edac/Kconfig"
@@ -101,8 +107,8 @@
+source "drivers/rtc/Kconfig"
+
endmenu
---- linux-nslu2.orig/drivers/Makefile 2006-02-06 20:37:14.000000000 +0100
-+++ linux-nslu2/drivers/Makefile 2006-02-06 21:11:33.000000000 +0100
+--- linux-rtc.orig/drivers/Makefile 2006-02-19 23:33:10.000000000 +0100
++++ linux-rtc/drivers/Makefile 2006-02-19 23:33:15.000000000 +0100
@@ -56,6 +56,7 @@ obj-$(CONFIG_USB_GADGET) += usb/gadget/
obj-$(CONFIG_GAMEPORT) += input/gameport/
obj-$(CONFIG_INPUT) += input/
@@ -112,7 +118,7 @@
obj-$(CONFIG_W1) += w1/
obj-$(CONFIG_HWMON) += hwmon/
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/class.c 2006-02-06 21:41:25.000000000 +0100
++++ linux-rtc/drivers/rtc/class.c 2006-02-19 23:33:15.000000000 +0100
@@ -0,0 +1,143 @@
+/*
+ * RTC subsystem, base class
@@ -133,15 +139,15 @@
+#include <linux/idr.h>
+
+static DEFINE_IDR(rtc_idr);
-+static DECLARE_MUTEX(idr_lock);
++static DEFINE_MUTEX(idr_lock);
+struct class *rtc_class;
+
+static void rtc_device_release(struct class_device *class_dev)
+{
+ struct rtc_device *rtc = to_rtc_device(class_dev);
-+ down(&idr_lock);
++ mutex_lock(&idr_lock);
+ idr_remove(&rtc_idr, rtc->id);
-+ up(&idr_lock);
++ mutex_unlock(&idr_lock);
+ kfree(rtc);
+}
+
@@ -167,9 +173,9 @@
+ }
+
+
-+ down(&idr_lock);
++ mutex_lock(&idr_lock);
+ err = idr_get_new(&rtc_idr, NULL, &id);
-+ up(&idr_lock);
++ mutex_unlock(&idr_lock);
+
+ if (err < 0)
+ goto exit;
@@ -188,7 +194,7 @@
+ rtc->class_dev.class = rtc_class;
+ rtc->class_dev.release = rtc_device_release;
+
-+ init_MUTEX(&rtc->ops_lock);
++ mutex_init(&rtc->ops_lock);
+ spin_lock_init(&rtc->irq_lock);
+ spin_lock_init(&rtc->irq_task_lock);
+
@@ -222,9 +228,9 @@
+ */
+void rtc_device_unregister(struct rtc_device *rtc)
+{
-+ down(&rtc->ops_lock);
++ mutex_lock(&rtc->ops_lock);
+ rtc->ops = NULL;
-+ up(&rtc->ops_lock);
++ mutex_unlock(&rtc->ops_lock);
+ class_device_unregister(&rtc->class_dev);
+}
+EXPORT_SYMBOL_GPL(rtc_device_unregister);
@@ -258,8 +264,8 @@
+MODULE_DESCRIPTION("RTC class support");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/Kconfig 2006-02-06 23:58:32.000000000 +0100
-@@ -0,0 +1,121 @@
++++ linux-rtc/drivers/rtc/Kconfig 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,131 @@
+#
+# RTC class/drivers configuration
+#
@@ -365,6 +371,16 @@
+ This driver can also be built as a module. If so, the module
+ will be called rtc-pcf8563.
+
++config RTC_DRV_RS5C372
++ tristate "Ricoh RS5C372A/B"
++ depends on RTC_CLASS && I2C
++ help
++ If you say yes here you get support for the
++ Ricoh RS5C372A and RS5C372B RTC chips.
++
++ This driver can also be built as a module. If so, the module
++ will be called rtc-rs5c372.
++
+config RTC_DRV_TEST
+ tristate "Test driver/device"
+ depends on RTC_CLASS
@@ -382,8 +398,8 @@
+
+endmenu
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/Makefile 2006-02-06 23:58:32.000000000 +0100
-@@ -0,0 +1,17 @@
++++ linux-rtc/drivers/rtc/Makefile 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,18 @@
+#
+# Makefile for RTC class/drivers.
+#
@@ -400,10 +416,11 @@
+obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o
+obj-$(CONFIG_RTC_DRV_DS1672) += rtc-ds1672.o
+obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
++obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o
+
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/interface.c 2006-02-07 01:32:10.000000000 +0100
-@@ -0,0 +1,232 @@
++++ linux-rtc/drivers/rtc/interface.c 2006-02-19 23:33:15.000000000 +0100
+@@ -0,0 +1,274 @@
+/*
+ * RTC subsystem, interface functions
+ *
@@ -426,7 +443,7 @@
+ int err;
+ struct rtc_device *rtc = to_rtc_device(class_dev);
+
-+ if ((err = down_interruptible(&rtc->ops_lock)))
++ if ((err = mutex_lock_interruptible(&rtc->ops_lock)))
+ return err;
+
+ if (!rtc->ops)
@@ -438,7 +455,7 @@
+ err = rtc->ops->read_time(class_dev->dev, tm);
+ }
+
-+ up(&rtc->ops_lock);
++ mutex_unlock(&rtc->ops_lock);
+ return err;
+}
+EXPORT_SYMBOL(rtc_read_time);
@@ -451,7 +468,7 @@
+ if ((err = rtc_valid_tm(tm)) != 0)
+ return err;
+
-+ if ((err = down_interruptible(&rtc->ops_lock)))
++ if ((err = mutex_lock_interruptible(&rtc->ops_lock)))
+ return err;
+
+ if (!rtc->ops)
@@ -461,17 +478,59 @@
+ else
+ err = rtc->ops->set_time(class_dev->dev, tm);
+
-+ up(&rtc->ops_lock);
++ mutex_unlock(&rtc->ops_lock);
+ return err;
+}
+EXPORT_SYMBOL(rtc_set_time);
+
++int rtc_set_mmss(struct class_device *class_dev, unsigned long secs)
++{
++ int err;
++ struct rtc_device *rtc = to_rtc_device(class_dev);
++
++ if ((err = mutex_lock_interruptible(&rtc->ops_lock)))
++ return err;
++
++ if (!rtc->ops)
++ err = -ENODEV;
++ else if (!rtc->ops->set_mmss) {
++ if (rtc->ops->read_time && rtc->ops->set_time) {
++ struct rtc_time new, old;
++
++ new.tm_sec = secs % 60;
++ secs /= 60;
++ new.tm_min = secs % 60;
++ secs /= 60;
++ new.tm_hour = secs % 24;
++
++ /*
++ * avoid writing when we're going to change the day
++ * of the month. We will retry in the next minute.
++ * This basically means that if the RTC must not drift
++ * by more than 1 minute in 11 minutes.
++ */
++ if (!((old.tm_hour == 23 && old.tm_min == 59) ||
++ (new.tm_hour == 23 && new.tm_min == 59)))
++ err = rtc->ops->set_time(class_dev->dev, &new);
++ }
++ else
++ err = -EINVAL;
++ }
++ else
++ err = rtc->ops->set_mmss(class_dev->dev, secs);
++
++ mutex_unlock(&rtc->ops_lock);
++
++ return err;
++}
++EXPORT_SYMBOL(rtc_set_mmss);
++
+int rtc_read_alarm(struct class_device *class_dev, struct rtc_wkalrm *alarm)
+{
+ int err;
+ struct rtc_device *rtc = to_rtc_device(class_dev);
+
-+ if ((err = down_interruptible(&rtc->ops_lock)))
++ if ((err = mutex_lock_interruptible(&rtc->ops_lock)))
+ return err;
+
+ if (rtc->ops == NULL)
@@ -483,7 +542,7 @@
+ err = rtc->ops->read_alarm(class_dev->dev, alarm);
+ }
+
-+ up(&rtc->ops_lock);
++ mutex_unlock(&rtc->ops_lock);
+ return err;
+}
+EXPORT_SYMBOL(rtc_read_alarm);
@@ -493,7 +552,7 @@
+ int err;
+ struct rtc_device *rtc = to_rtc_device(class_dev);
+
-+ if ((err = down_interruptible(&rtc->ops_lock)))
++ if ((err = mutex_lock_interruptible(&rtc->ops_lock)))
+ return err;
+
+ if (!rtc->ops)
@@ -503,7 +562,7 @@
+ else
+ err = rtc->ops->set_alarm(class_dev->dev, alarm);
+
-+ up(&rtc->ops_lock);
++ mutex_unlock(&rtc->ops_lock);
+ return err;
+}
+EXPORT_SYMBOL(rtc_set_alarm);
@@ -527,7 +586,7 @@
+}
+EXPORT_SYMBOL(rtc_update_irq);
+
-+struct class_device *rtc_open(char *name)
++struct class_device *rtc_class_open(char *name)
+{
+ struct class_device *class_dev = NULL,
+ *class_dev_tmp;
@@ -548,13 +607,13 @@
+
+ return class_dev;
+}
-+EXPORT_SYMBOL(rtc_open);
++EXPORT_SYMBOL(rtc_class_open);
+
-+void rtc_close(struct class_device *class_dev)
++void rtc_class_close(struct class_device *class_dev)
+{
+ module_put(to_rtc_device(class_dev)->owner);
+}
-+EXPORT_SYMBOL(rtc_close);
++EXPORT_SYMBOL(rtc_class_close);
+
+int rtc_irq_register(struct class_device *class_dev, struct rtc_task *task)
+{
@@ -637,7 +696,7 @@
+
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/utils.c 2006-02-06 21:11:33.000000000 +0100
++++ linux-rtc/drivers/rtc/utils.c 2006-02-19 23:33:15.000000000 +0100
@@ -0,0 +1,97 @@
+/*
+ * RTC subsystem, utility functions
@@ -737,8 +796,8 @@
+}
+EXPORT_SYMBOL(rtc_tm_to_time);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/hctosys.c 2006-02-06 21:11:33.000000000 +0100
-@@ -0,0 +1,62 @@
++++ linux-rtc/drivers/rtc/hctosys.c 2006-02-21 00:34:57.000000000 +0100
+@@ -0,0 +1,67 @@
+/*
+ * RTC subsystem, initialize system time on startup
+ *
@@ -766,12 +825,17 @@
+static int __init rtc_hctosys(void)
+{
+ int err;
-+ struct class_device *class_dev = rtc_open(CONFIG_RTC_HCTOSYS_DEVICE);
++ struct rtc_time tm;
++ struct class_device *class_dev = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
+
-+ if (class_dev) {
-+ struct rtc_time tm;
++ if (class_dev == NULL) {
++ printk("%s: unable to open rtc device (%s)\n",
++ __FILE__, CONFIG_RTC_HCTOSYS_DEVICE);
++ return -ENODEV;
++ }
+
-+ if ((err = rtc_read_time(class_dev, &tm)) == 0) {
++ if ((err = rtc_read_time(class_dev, &tm)) == 0) {
++ if (rtc_valid_tm(&tm) == 0) {
+ struct timespec tv;
+
+ tv.tv_nsec = NSEC_PER_SEC >> 1;
@@ -789,21 +853,21 @@
+ }
+ else
+ dev_err(class_dev->dev,
-+ "unable to set the system clock\n");
-+
-+ rtc_close(class_dev);
++ "hctosys: invalid date/time\n");
+ }
+ else
-+ printk("%s: unable to open rtc device (%s)\n",
-+ __FILE__, CONFIG_RTC_HCTOSYS_DEVICE);
++ dev_err(class_dev->dev,
++ "hctosys: unable to read the hardware clock\n");
++
++ rtc_class_close(class_dev);
+
+ return 0;
+}
+
+late_initcall(rtc_hctosys);
---- linux-nslu2.orig/arch/arm/Kconfig 2006-02-06 23:52:28.000000000 +0100
-+++ linux-nslu2/arch/arm/Kconfig 2006-02-06 23:53:25.000000000 +0100
-@@ -784,6 +784,8 @@ source "drivers/usb/Kconfig"
+--- linux-rtc.orig/arch/arm/Kconfig 2006-02-21 00:34:27.000000000 +0100
++++ linux-rtc/arch/arm/Kconfig 2006-02-21 00:36:42.000000000 +0100
+@@ -817,6 +817,8 @@ source "drivers/usb/Kconfig"
source "drivers/mmc/Kconfig"
@@ -812,8 +876,8 @@
endmenu
source "fs/Kconfig"
---- linux-nslu2.orig/arch/arm/common/rtctime.c 2006-02-06 23:52:28.000000000 +0100
-+++ linux-nslu2/arch/arm/common/rtctime.c 2006-02-06 23:53:25.000000000 +0100
+--- linux-rtc.orig/arch/arm/common/rtctime.c 2006-02-21 00:34:27.000000000 +0100
++++ linux-rtc/arch/arm/common/rtctime.c 2006-02-21 00:36:42.000000000 +0100
@@ -42,89 +42,6 @@ static struct rtc_ops *rtc_ops;
#define rtc_epoch 1900UL
@@ -984,24 +1048,6 @@
if (ret)
break;
ret = copy_to_user(uarg, &alrm, sizeof(alrm));
-@@ -353,7 +270,7 @@ static int rtc_ioctl(struct inode *inode
- return ret;
- }
-
--static int rtc_open(struct inode *inode, struct file *file)
-+static int rtc_arm_open(struct inode *inode, struct file *file)
- {
- int ret;
-
-@@ -408,7 +325,7 @@ static struct file_operations rtc_fops =
- .read = rtc_read,
- .poll = rtc_poll,
- .ioctl = rtc_ioctl,
-- .open = rtc_open,
-+ .open = rtc_arm_open,
- .release = rtc_release,
- .fasync = rtc_fasync,
- };
@@ -427,7 +344,7 @@ static int rtc_read_proc(char *page, cha
struct rtc_time tm;
char *p = page;
@@ -1020,8 +1066,8 @@
p += sprintf(p, "alrm_time\t: ");
if ((unsigned int)alrm.time.tm_hour <= 24)
p += sprintf(p, "%02d:", alrm.time.tm_hour);
---- linux-nslu2.orig/include/asm-arm/rtc.h 2006-02-06 23:52:28.000000000 +0100
-+++ linux-nslu2/include/asm-arm/rtc.h 2006-02-06 23:53:25.000000000 +0100
+--- linux-rtc.orig/include/asm-arm/rtc.h 2006-02-21 00:34:27.000000000 +0100
++++ linux-rtc/include/asm-arm/rtc.h 2006-02-21 00:36:42.000000000 +0100
@@ -25,9 +25,6 @@ struct rtc_ops {
int (*proc)(char *buf);
};
@@ -1032,9 +1078,1269 @@
void rtc_next_alarm_time(struct rtc_time *, struct rtc_time *, struct rtc_time *);
void rtc_update(unsigned long, unsigned long);
int register_rtc(struct rtc_ops *);
+--- linux-rtc.orig/drivers/char/Kconfig 2006-02-21 00:34:27.000000000 +0100
++++ linux-rtc/drivers/char/Kconfig 2006-02-21 00:36:42.000000000 +0100
+@@ -695,7 +695,7 @@ config NVRAM
+
+ config RTC
+ tristate "Enhanced Real Time Clock Support"
+- depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI) && !FRV
++ depends on !PPC32 && !PARISC && !IA64 && !M68K && (!SPARC || PCI) && !FRV && !ARM
+ ---help---
+ If you say Y here and create a character special file /dev/rtc with
+ major number 10 and minor number 135 using mknod ("man mknod"), you
+--- linux-rtc.orig/drivers/i2c/chips/x1205.c 2006-02-21 00:34:27.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,698 +0,0 @@
+-/*
+- * x1205.c - An i2c driver for the Xicor X1205 RTC
+- * Copyright 2004 Karen Spearel
+- * Copyright 2005 Alessandro Zummo
+- *
+- * please send all reports to:
+- * kas11 at tampabay dot rr dot com
+- * a dot zummo at towertech dot it
+- *
+- * based on the other drivers in this same directory.
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- */
+-
+-#include <linux/module.h>
+-#include <linux/init.h>
+-#include <linux/slab.h>
+-#include <linux/i2c.h>
+-#include <linux/string.h>
+-#include <linux/bcd.h>
+-#include <linux/rtc.h>
+-#include <linux/list.h>
+-
+-#include <linux/x1205.h>
+-
+-#define DRV_VERSION "0.9.9"
+-
+-/* Addresses to scan: none. This chip is located at
+- * 0x6f and uses a two bytes register addressing.
+- * Two bytes need to be written to read a single register,
+- * while most other chips just require one and take the second
+- * one as the data to be written. To prevent corrupting
+- * unknown chips, the user must explicitely set the probe parameter.
+- */
+-
+-static unsigned short normal_i2c[] = { I2C_CLIENT_END };
+-
+-/* Insmod parameters */
+-I2C_CLIENT_INSMOD;
+-I2C_CLIENT_MODULE_PARM(hctosys,
+- "Set the system time from the hardware clock upon initialization");
+-
+-/* offsets into CCR area */
+-
+-#define CCR_SEC 0
+-#define CCR_MIN 1
+-#define CCR_HOUR 2
+-#define CCR_MDAY 3
+-#define CCR_MONTH 4
+-#define CCR_YEAR 5
+-#define CCR_WDAY 6
+-#define CCR_Y2K 7
+-
+-#define X1205_REG_SR 0x3F /* status register */
+-#define X1205_REG_Y2K 0x37
+-#define X1205_REG_DW 0x36
+-#define X1205_REG_YR 0x35
+-#define X1205_REG_MO 0x34
+-#define X1205_REG_DT 0x33
+-#define X1205_REG_HR 0x32
+-#define X1205_REG_MN 0x31
+-#define X1205_REG_SC 0x30
+-#define X1205_REG_DTR 0x13
+-#define X1205_REG_ATR 0x12
+-#define X1205_REG_INT 0x11
+-#define X1205_REG_0 0x10
+-#define X1205_REG_Y2K1 0x0F
+-#define X1205_REG_DWA1 0x0E
+-#define X1205_REG_YRA1 0x0D
+-#define X1205_REG_MOA1 0x0C
+-#define X1205_REG_DTA1 0x0B
+-#define X1205_REG_HRA1 0x0A
+-#define X1205_REG_MNA1 0x09
+-#define X1205_REG_SCA1 0x08
+-#define X1205_REG_Y2K0 0x07
+-#define X1205_REG_DWA0 0x06
+-#define X1205_REG_YRA0 0x05
+-#define X1205_REG_MOA0 0x04
+-#define X1205_REG_DTA0 0x03
+-#define X1205_REG_HRA0 0x02
+-#define X1205_REG_MNA0 0x01
+-#define X1205_REG_SCA0 0x00
+-
+-#define X1205_CCR_BASE 0x30 /* Base address of CCR */
+-#define X1205_ALM0_BASE 0x00 /* Base address of ALARM0 */
+-
+-#define X1205_SR_RTCF 0x01 /* Clock failure */
+-#define X1205_SR_WEL 0x02 /* Write Enable Latch */
+-#define X1205_SR_RWEL 0x04 /* Register Write Enable */
+-
+-#define X1205_DTR_DTR0 0x01
+-#define X1205_DTR_DTR1 0x02
+-#define X1205_DTR_DTR2 0x04
+-
+-#define X1205_HR_MIL 0x80 /* Set in ccr.hour for 24 hr mode */
+-
+-/* Prototypes */
+-static int x1205_attach(struct i2c_adapter *adapter);
+-static int x1205_detach(struct i2c_client *client);
+-static int x1205_probe(struct i2c_adapter *adapter, int address, int kind);
+-static int x1205_command(struct i2c_client *client, unsigned int cmd,
+- void *arg);
+-
+-static struct i2c_driver x1205_driver = {
+- .driver = {
+- .name = "x1205",
+- },
+- .attach_adapter = &x1205_attach,
+- .detach_client = &x1205_detach,
+-};
+-
+-struct x1205_data {
+- struct i2c_client client;
+- struct list_head list;
+- unsigned int epoch;
+-};
+-
+-static const unsigned char days_in_mo[] =
+- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+-
+-static LIST_HEAD(x1205_clients);
+-
+-/* Workaround until the I2C subsytem will allow to send
+- * commands to a specific client. This function will send the command
+- * to the first client.
+- */
+-int x1205_do_command(unsigned int cmd, void *arg)
+-{
+- struct list_head *walk;
+- struct list_head *tmp;
+- struct x1205_data *data;
+-
+- list_for_each_safe(walk, tmp, &x1205_clients) {
+- data = list_entry(walk, struct x1205_data, list);
+- return x1205_command(&data->client, cmd, arg);
+- }
+-
+- return -ENODEV;
+-}
+-
+-#define is_leap(year) \
+- ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+-
+-/* make sure the rtc_time values are in bounds */
+-static int x1205_validate_tm(struct rtc_time *tm)
+-{
+- int year = tm->tm_year + 1900;
+-
+- if ((tm->tm_year < 70) || (tm->tm_year > 255))
+- return -EINVAL;
+-
+- if ((tm->tm_mon > 11) || (tm->tm_mday == 0))
+- return -EINVAL;
+-
+- if (tm->tm_mday > days_in_mo[tm->tm_mon]
+- + ((tm->tm_mon == 1) && is_leap(year)))
+- return -EINVAL;
+-
+- if ((tm->tm_hour >= 24) || (tm->tm_min >= 60) || (tm->tm_sec >= 60))
+- return -EINVAL;
+-
+- return 0;
+-}
+-
+-/*
+- * In the routines that deal directly with the x1205 hardware, we use
+- * rtc_time -- month 0-11, hour 0-23, yr = calendar year-epoch
+- * Epoch is initialized as 2000. Time is set to UTC.
+- */
+-static int x1205_get_datetime(struct i2c_client *client, struct rtc_time *tm,
+- u8 reg_base)
+-{
+- unsigned char dt_addr[2] = { 0, reg_base };
+- static unsigned char sr_addr[2] = { 0, X1205_REG_SR };
+-
+- unsigned char buf[8], sr;
+-
+- struct i2c_msg msgs[] = {
+- { client->addr, 0, 2, sr_addr }, /* setup read ptr */
+- { client->addr, I2C_M_RD, 1, &sr }, /* read status */
+- { client->addr, 0, 2, dt_addr }, /* setup read ptr */
+- { client->addr, I2C_M_RD, 8, buf }, /* read date */
+- };
+-
+- struct x1205_data *data = i2c_get_clientdata(client);
+-
+- /* read status register */
+- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
+- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
+- return -EIO;
+- }
+-
+- /* check for battery failure */
+- if (sr & X1205_SR_RTCF) {
+- dev_warn(&client->dev,
+- "Clock had a power failure, you must set the date.\n");
+- return -EINVAL;
+- }
+-
+- /* read date registers */
+- if ((i2c_transfer(client->adapter, &msgs[2], 2)) != 2) {
+- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
+- return -EIO;
+- }
+-
+- dev_dbg(&client->dev,
+- "%s: raw read data - sec=%02x, min=%02x, hr=%02x, "
+- "mday=%02x, mon=%02x, year=%02x, wday=%02x, y2k=%02x\n",
+- __FUNCTION__,
+- buf[0], buf[1], buf[2], buf[3],
+- buf[4], buf[5], buf[6], buf[7]);
+-
+- tm->tm_sec = BCD2BIN(buf[CCR_SEC]);
+- tm->tm_min = BCD2BIN(buf[CCR_MIN]);
+- tm->tm_hour = BCD2BIN(buf[CCR_HOUR] & 0x3F); /* hr is 0-23 */
+- tm->tm_mday = BCD2BIN(buf[CCR_MDAY]);
+- tm->tm_mon = BCD2BIN(buf[CCR_MONTH]);
+- data->epoch = BCD2BIN(buf[CCR_Y2K]) * 100;
+- tm->tm_year = BCD2BIN(buf[CCR_YEAR]) + data->epoch - 1900;
+- tm->tm_wday = buf[CCR_WDAY];
+-
+- dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
+- "mday=%d, mon=%d, year=%d, wday=%d\n",
+- __FUNCTION__,
+- tm->tm_sec, tm->tm_min, tm->tm_hour,
+- tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
+-
+- return 0;
+-}
+-
+-static int x1205_set_datetime(struct i2c_client *client, struct rtc_time *tm,
+- int datetoo, u8 reg_base)
+-{
+- int i, err, xfer;
+-
+- unsigned char buf[8];
+-
+- static const unsigned char wel[3] = { 0, X1205_REG_SR,
+- X1205_SR_WEL };
+-
+- static const unsigned char rwel[3] = { 0, X1205_REG_SR,
+- X1205_SR_WEL | X1205_SR_RWEL };
+-
+- static const unsigned char diswe[3] = { 0, X1205_REG_SR, 0 };
+-
+- struct x1205_data *data = i2c_get_clientdata(client);
+-
+- /* check if all values in the tm struct are correct */
+- if ((err = x1205_validate_tm(tm)) < 0)
+- return err;
+-
+- dev_dbg(&client->dev, "%s: secs=%d, mins=%d, hours=%d, "
+- "mday=%d, mon=%d, year=%d, wday=%d\n",
+- __FUNCTION__,
+- tm->tm_sec, tm->tm_min, tm->tm_hour,
+- tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
+-
+- buf[CCR_SEC] = BIN2BCD(tm->tm_sec);
+- buf[CCR_MIN] = BIN2BCD(tm->tm_min);
+-
+- /* set hour and 24hr bit */
+- buf[CCR_HOUR] = BIN2BCD(tm->tm_hour) | X1205_HR_MIL;
+-
+- /* should we also set the date? */
+- if (datetoo) {
+- buf[CCR_MDAY] = BIN2BCD(tm->tm_mday);
+-
+- /* month, 0 - 11 */
+- buf[CCR_MONTH] = BIN2BCD(tm->tm_mon);
+-
+- /* year, since 1900 */
+- buf[CCR_YEAR] = BIN2BCD(tm->tm_year + 1900 - data->epoch);
+- buf[CCR_WDAY] = tm->tm_wday & 0x07;
+- buf[CCR_Y2K] = BIN2BCD(data->epoch / 100);
+- }
+-
+- /* this sequence is required to unlock the chip */
+- xfer = i2c_master_send(client, wel, 3);
+- if (xfer != 3) {
+- dev_err(&client->dev, "%s: wel - %d\n", __FUNCTION__, xfer);
+- return -EIO;
+- }
+-
+- xfer = i2c_master_send(client, rwel, 3);
+- if (xfer != 3) {
+- dev_err(&client->dev, "%s: rwel - %d\n", __FUNCTION__, xfer);
+- return -EIO;
+- }
+-
+- /* write register's data */
+- for (i = 0; i < (datetoo ? 8 : 3); i++) {
+- unsigned char rdata[3] = { 0, reg_base + i, buf[i] };
+-
+- xfer = i2c_master_send(client, rdata, 3);
+- if (xfer != 3) {
+- dev_err(&client->dev,
+- "%s: xfer=%d addr=%02x, data=%02x\n",
+- __FUNCTION__,
+- xfer, rdata[1], rdata[2]);
+- return -EIO;
+- }
+- };
+-
+- /* disable further writes */
+- xfer = i2c_master_send(client, diswe, 3);
+- if (xfer != 3) {
+- dev_err(&client->dev, "%s: diswe - %d\n", __FUNCTION__, xfer);
+- return -EIO;
+- }
+-
+- return 0;
+-}
+-
+-static int x1205_get_dtrim(struct i2c_client *client, int *trim)
+-{
+- unsigned char dtr;
+- static unsigned char dtr_addr[2] = { 0, X1205_REG_DTR };
+-
+- struct i2c_msg msgs[] = {
+- { client->addr, 0, 2, dtr_addr }, /* setup read ptr */
+- { client->addr, I2C_M_RD, 1, &dtr }, /* read dtr */
+- };
+-
+- /* read dtr register */
+- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
+- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
+- return -EIO;
+- }
+-
+- dev_dbg(&client->dev, "%s: raw dtr=%x\n", __FUNCTION__, dtr);
+-
+- *trim = 0;
+-
+- if (dtr & X1205_DTR_DTR0)
+- *trim += 20;
+-
+- if (dtr & X1205_DTR_DTR1)
+- *trim += 10;
+-
+- if (dtr & X1205_DTR_DTR2)
+- *trim = -*trim;
+-
+- return 0;
+-}
+-
+-static int x1205_get_atrim(struct i2c_client *client, int *trim)
+-{
+- s8 atr;
+- static unsigned char atr_addr[2] = { 0, X1205_REG_ATR };
+-
+- struct i2c_msg msgs[] = {
+- { client->addr, 0, 2, atr_addr }, /* setup read ptr */
+- { client->addr, I2C_M_RD, 1, &atr }, /* read atr */
+- };
+-
+- /* read atr register */
+- if ((i2c_transfer(client->adapter, &msgs[0], 2)) != 2) {
+- dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
+- return -EIO;
+- }
+-
+- dev_dbg(&client->dev, "%s: raw atr=%x\n", __FUNCTION__, atr);
+-
+- /* atr is a two's complement value on 6 bits,
+- * perform sign extension. The formula is
+- * Catr = (atr * 0.25pF) + 11.00pF.
+- */
+- if (atr & 0x20)
+- atr |= 0xC0;
+-
+- dev_dbg(&client->dev, "%s: raw atr=%x (%d)\n", __FUNCTION__, atr, atr);
+-
+- *trim = (atr * 250) + 11000;
+-
+- dev_dbg(&client->dev, "%s: real=%d\n", __FUNCTION__, *trim);
+-
+- return 0;
+-}
+-
+-static int x1205_hctosys(struct i2c_client *client)
+-{
+- int err;
+-
+- struct rtc_time tm;
+- struct timespec tv;
+-
+- err = x1205_command(client, X1205_CMD_GETDATETIME, &tm);
+-
+- if (err) {
+- dev_err(&client->dev,
+- "Unable to set the system clock\n");
+- return err;
+- }
+-
+- /* IMPORTANT: the RTC only stores whole seconds. It is arbitrary
+- * whether it stores the most close value or the value with partial
+- * seconds truncated. However, it is important that we use it to store
+- * the truncated value. This is because otherwise it is necessary,
+- * in an rtc sync function, to read both xtime.tv_sec and
+- * xtime.tv_nsec. On some processors (i.e. ARM), an atomic read
+- * of >32bits is not possible. So storing the most close value would
+- * slow down the sync API. So here we have the truncated value and
+- * the best guess is to add 0.5s.
+- */
+-
+- tv.tv_nsec = NSEC_PER_SEC >> 1;
+-
+- /* WARNING: this is not the C library 'mktime' call, it is a built in
+- * inline function from include/linux/time.h. It expects (requires)
+- * the month to be in the range 1-12
+- */
+-
+- tv.tv_sec = mktime(tm.tm_year + 1900, tm.tm_mon + 1,
+- tm.tm_mday, tm.tm_hour,
+- tm.tm_min, tm.tm_sec);
+-
+- do_settimeofday(&tv);
+-
+- dev_info(&client->dev,
+- "setting the system clock to %d-%d-%d %d:%d:%d\n",
+- tm.tm_year + 1900, tm.tm_mon + 1,
+- tm.tm_mday, tm.tm_hour, tm.tm_min,
+- tm.tm_sec);
+-
+- return 0;
+-}
+-
+-struct x1205_limit
+-{
+- unsigned char reg;
+- unsigned char mask;
+- unsigned char min;
+- unsigned char max;
+-};
+-
+-static int x1205_validate_client(struct i2c_client *client)
+-{
+- int i, xfer;
+-
+- /* Probe array. We will read the register at the specified
+- * address and check if the given bits are zero.
+- */
+- static const unsigned char probe_zero_pattern[] = {
+- /* register, mask */
+- X1205_REG_SR, 0x18,
+- X1205_REG_DTR, 0xF8,
+- X1205_REG_ATR, 0xC0,
+- X1205_REG_INT, 0x18,
+- X1205_REG_0, 0xFF,
+- };
+-
+- static const struct x1205_limit probe_limits_pattern[] = {
+- /* register, mask, min, max */
+- { X1205_REG_Y2K, 0xFF, 19, 20 },
+- { X1205_REG_DW, 0xFF, 0, 6 },
+- { X1205_REG_YR, 0xFF, 0, 99 },
+- { X1205_REG_MO, 0xFF, 0, 12 },
+- { X1205_REG_DT, 0xFF, 0, 31 },
+- { X1205_REG_HR, 0x7F, 0, 23 },
+- { X1205_REG_MN, 0xFF, 0, 59 },
+- { X1205_REG_SC, 0xFF, 0, 59 },
+- { X1205_REG_Y2K1, 0xFF, 19, 20 },
+- { X1205_REG_Y2K0, 0xFF, 19, 20 },
+- };
+-
+- /* check that registers have bits a 0 where expected */
+- for (i = 0; i < ARRAY_SIZE(probe_zero_pattern); i += 2) {
+- unsigned char buf;
+-
+- unsigned char addr[2] = { 0, probe_zero_pattern[i] };
+-
+- struct i2c_msg msgs[2] = {
+- { client->addr, 0, 2, addr },
+- { client->addr, I2C_M_RD, 1, &buf },
+- };
+-
+- xfer = i2c_transfer(client->adapter, msgs, 2);
+- if (xfer != 2) {
+- dev_err(&client->adapter->dev,
+- "%s: could not read register %x\n",
+- __FUNCTION__, addr[1]);
+-
+- return -EIO;
+- }
+-
+- if ((buf & probe_zero_pattern[i+1]) != 0) {
+- dev_err(&client->adapter->dev,
+- "%s: register=%02x, zero pattern=%d, value=%x\n",
+- __FUNCTION__, addr[1], i, buf);
+-
+- return -ENODEV;
+- }
+- }
+-
+- /* check limits (only registers with bcd values) */
+- for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) {
+- unsigned char reg, value;
+-
+- unsigned char addr[2] = { 0, probe_limits_pattern[i].reg };
+-
+- struct i2c_msg msgs[2] = {
+- { client->addr, 0, 2, addr },
+- { client->addr, I2C_M_RD, 1, &reg },
+- };
+-
+- xfer = i2c_transfer(client->adapter, msgs, 2);
+-
+- if (xfer != 2) {
+- dev_err(&client->adapter->dev,
+- "%s: could not read register %x\n",
+- __FUNCTION__, addr[1]);
+-
+- return -EIO;
+- }
+-
+- value = BCD2BIN(reg & probe_limits_pattern[i].mask);
+-
+- if (value > probe_limits_pattern[i].max ||
+- value < probe_limits_pattern[i].min) {
+- dev_dbg(&client->adapter->dev,
+- "%s: register=%x, lim pattern=%d, value=%d\n",
+- __FUNCTION__, addr[1], i, value);
+-
+- return -ENODEV;
+- }
+- }
+-
+- return 0;
+-}
+-
+-static int x1205_attach(struct i2c_adapter *adapter)
+-{
+- dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
+-
+- return i2c_probe(adapter, &addr_data, x1205_probe);
+-}
+-
+-int x1205_direct_attach(int adapter_id,
+- struct i2c_client_address_data *address_data)
+-{
+- int err;
+- struct i2c_adapter *adapter = i2c_get_adapter(adapter_id);
+-
+- if (adapter) {
+- err = i2c_probe(adapter,
+- address_data, x1205_probe);
+-
+- i2c_put_adapter(adapter);
+-
+- return err;
+- }
+-
+- return -ENODEV;
+-}
+-
+-static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
+-{
+- struct i2c_client *client;
+- struct x1205_data *data;
+-
+- int err = 0;
+-
+- dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
+-
+- if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
+- err = -ENODEV;
+- goto exit;
+- }
+-
+- if (!(data = kzalloc(sizeof(struct x1205_data), GFP_KERNEL))) {
+- err = -ENOMEM;
+- goto exit;
+- }
+-
+- /* Initialize our structures */
+- data->epoch = 2000;
+-
+- client = &data->client;
+- client->addr = address;
+- client->driver = &x1205_driver;
+- client->adapter = adapter;
+-
+- strlcpy(client->name, "x1205", I2C_NAME_SIZE);
+-
+- i2c_set_clientdata(client, data);
+-
+- /* Verify the chip is really an X1205 */
+- if (kind < 0) {
+- if (x1205_validate_client(client) < 0) {
+- err = -ENODEV;
+- goto exit_kfree;
+- }
+- }
+-
+- /* Inform the i2c layer */
+- if ((err = i2c_attach_client(client)))
+- goto exit_kfree;
+-
+- list_add(&data->list, &x1205_clients);
+-
+- dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
+-
+- /* If requested, set the system time */
+- if (hctosys)
+- x1205_hctosys(client);
+-
+- return 0;
+-
+-exit_kfree:
+- kfree(data);
+-
+-exit:
+- return err;
+-}
+-
+-static int x1205_detach(struct i2c_client *client)
+-{
+- int err;
+- struct x1205_data *data = i2c_get_clientdata(client);
+-
+- dev_dbg(&client->dev, "%s\n", __FUNCTION__);
+-
+- if ((err = i2c_detach_client(client)))
+- return err;
+-
+- list_del(&data->list);
+-
+- kfree(data);
+-
+- return 0;
+-}
+-
+-static int x1205_command(struct i2c_client *client, unsigned int cmd,
+- void *param)
+-{
+- if (param == NULL)
+- return -EINVAL;
+-
+- if (!capable(CAP_SYS_TIME))
+- return -EACCES;
+-
+- dev_dbg(&client->dev, "%s: cmd=%d\n", __FUNCTION__, cmd);
+-
+- switch (cmd) {
+- case X1205_CMD_GETDATETIME:
+- return x1205_get_datetime(client, param, X1205_CCR_BASE);
+-
+- case X1205_CMD_SETTIME:
+- return x1205_set_datetime(client, param, 0,
+- X1205_CCR_BASE);
+-
+- case X1205_CMD_SETDATETIME:
+- return x1205_set_datetime(client, param, 1,
+- X1205_CCR_BASE);
+-
+- case X1205_CMD_GETALARM:
+- return x1205_get_datetime(client, param, X1205_ALM0_BASE);
+-
+- case X1205_CMD_SETALARM:
+- return x1205_set_datetime(client, param, 1,
+- X1205_ALM0_BASE);
+-
+- case X1205_CMD_GETDTRIM:
+- return x1205_get_dtrim(client, param);
+-
+- case X1205_CMD_GETATRIM:
+- return x1205_get_atrim(client, param);
+-
+- default:
+- return -EINVAL;
+- }
+-}
+-
+-static int __init x1205_init(void)
+-{
+- return i2c_add_driver(&x1205_driver);
+-}
+-
+-static void __exit x1205_exit(void)
+-{
+- i2c_del_driver(&x1205_driver);
+-}
+-
+-MODULE_AUTHOR(
+- "Karen Spearel <kas11@tampabay.rr.com>, "
+- "Alessandro Zummo <a.zummo@towertech.it>");
+-MODULE_DESCRIPTION("Xicor X1205 RTC driver");
+-MODULE_LICENSE("GPL");
+-MODULE_VERSION(DRV_VERSION);
+-
+-EXPORT_SYMBOL_GPL(x1205_do_command);
+-EXPORT_SYMBOL_GPL(x1205_direct_attach);
+-
+-module_init(x1205_init);
+-module_exit(x1205_exit);
+--- linux-rtc.orig/drivers/i2c/chips/Makefile 2006-02-21 00:34:27.000000000 +0100
++++ linux-rtc/drivers/i2c/chips/Makefile 2006-02-21 00:36:43.000000000 +0100
+@@ -10,10 +10,8 @@ obj-$(CONFIG_SENSORS_M41T00) += m41t00.o
+ obj-$(CONFIG_SENSORS_PCA9539) += pca9539.o
+ obj-$(CONFIG_SENSORS_PCF8574) += pcf8574.o
+ obj-$(CONFIG_SENSORS_PCF8591) += pcf8591.o
+-obj-$(CONFIG_SENSORS_RTC8564) += rtc8564.o
+ obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o
+ obj-$(CONFIG_TPS65010) += tps65010.o
+-obj-$(CONFIG_RTC_X1205_I2C) += x1205.o
+
+ ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
+ EXTRA_CFLAGS += -DDEBUG
+--- linux-rtc.orig/drivers/i2c/chips/rtc8564.c 2006-02-21 00:34:27.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,385 +0,0 @@
+-/*
+- * linux/drivers/i2c/chips/rtc8564.c
+- *
+- * Copyright (C) 2002-2004 Stefan Eletzhofer
+- *
+- * based on linux/drivers/acron/char/pcf8583.c
+- * Copyright (C) 2000 Russell King
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License version 2 as
+- * published by the Free Software Foundation.
+- *
+- * Driver for system3's EPSON RTC 8564 chip
+- */
+-#include <linux/module.h>
+-#include <linux/kernel.h>
+-#include <linux/bcd.h>
+-#include <linux/i2c.h>
+-#include <linux/slab.h>
+-#include <linux/string.h>
+-#include <linux/rtc.h> /* get the user-level API */
+-#include <linux/init.h>
+-
+-#include "rtc8564.h"
+-
+-#ifdef DEBUG
+-# define _DBG(x, fmt, args...) do{ if (debug>=x) printk(KERN_DEBUG"%s: " fmt "\n", __FUNCTION__, ##args); } while(0);
+-#else
+-# define _DBG(x, fmt, args...) do { } while(0);
+-#endif
+-
+-#define _DBGRTCTM(x, rtctm) if (debug>=x) printk("%s: secs=%d, mins=%d, hours=%d, mday=%d, " \
+- "mon=%d, year=%d, wday=%d VL=%d\n", __FUNCTION__, \
+- (rtctm).secs, (rtctm).mins, (rtctm).hours, (rtctm).mday, \
+- (rtctm).mon, (rtctm).year, (rtctm).wday, (rtctm).vl);
+-
+-struct rtc8564_data {
+- struct i2c_client client;
+- u16 ctrl;
+-};
+-
+-static inline u8 _rtc8564_ctrl1(struct i2c_client *client)
+-{
+- struct rtc8564_data *data = i2c_get_clientdata(client);
+- return data->ctrl & 0xff;
+-}
+-static inline u8 _rtc8564_ctrl2(struct i2c_client *client)
+-{
+- struct rtc8564_data *data = i2c_get_clientdata(client);
+- return (data->ctrl & 0xff00) >> 8;
+-}
+-
+-#define CTRL1(c) _rtc8564_ctrl1(c)
+-#define CTRL2(c) _rtc8564_ctrl2(c)
+-
+-static int debug;;
+-module_param(debug, int, S_IRUGO | S_IWUSR);
+-
+-static struct i2c_driver rtc8564_driver;
+-
+-static unsigned short ignore[] = { I2C_CLIENT_END };
+-static unsigned short normal_addr[] = { 0x51, I2C_CLIENT_END };
+-
+-static struct i2c_client_address_data addr_data = {
+- .normal_i2c = normal_addr,
+- .probe = ignore,
+- .ignore = ignore,
+-};
+-
+-static int rtc8564_read_mem(struct i2c_client *client, struct mem *mem);
+-static int rtc8564_write_mem(struct i2c_client *client, struct mem *mem);
+-
+-static int rtc8564_read(struct i2c_client *client, unsigned char adr,
+- unsigned char *buf, unsigned char len)
+-{
+- int ret = -EIO;
+- unsigned char addr[1] = { adr };
+- struct i2c_msg msgs[2] = {
+- {client->addr, 0, 1, addr},
+- {client->addr, I2C_M_RD, len, buf}
+- };
+-
+- _DBG(1, "client=%p, adr=%d, buf=%p, len=%d", client, adr, buf, len);
+-
+- if (!buf) {
+- ret = -EINVAL;
+- goto done;
+- }
+-
+- ret = i2c_transfer(client->adapter, msgs, 2);
+- if (ret == 2) {
+- ret = 0;
+- }
+-
+-done:
+- return ret;
+-}
+-
+-static int rtc8564_write(struct i2c_client *client, unsigned char adr,
+- unsigned char *data, unsigned char len)
+-{
+- int ret = 0;
+- unsigned char _data[16];
+- struct i2c_msg wr;
+- int i;
+-
+- if (!data || len > 15) {
+- ret = -EINVAL;
+- goto done;
+- }
+-
+- _DBG(1, "client=%p, adr=%d, buf=%p, len=%d", client, adr, data, len);
+-
+- _data[0] = adr;
+- for (i = 0; i < len; i++) {
+- _data[i + 1] = data[i];
+- _DBG(5, "data[%d] = 0x%02x (%d)", i, data[i], data[i]);
+- }
+-
+- wr.addr = client->addr;
+- wr.flags = 0;
+- wr.len = len + 1;
+- wr.buf = _data;
+-
+- ret = i2c_transfer(client->adapter, &wr, 1);
+- if (ret == 1) {
+- ret = 0;
+- }
+-
+-done:
+- return ret;
+-}
+-
+-static int rtc8564_attach(struct i2c_adapter *adap, int addr, int kind)
+-{
+- int ret;
+- struct i2c_client *new_client;
+- struct rtc8564_data *d;
+- unsigned char data[10];
+- unsigned char ad[1] = { 0 };
+- struct i2c_msg ctrl_wr[1] = {
+- {addr, 0, 2, data}
+- };
+- struct i2c_msg ctrl_rd[2] = {
+- {addr, 0, 1, ad},
+- {addr, I2C_M_RD, 2, data}
+- };
+-
+- d = kzalloc(sizeof(struct rtc8564_data), GFP_KERNEL);
+- if (!d) {
+- ret = -ENOMEM;
+- goto done;
+- }
+- new_client = &d->client;
+-
+- strlcpy(new_client->name, "RTC8564", I2C_NAME_SIZE);
+- i2c_set_clientdata(new_client, d);
+- new_client->addr = addr;
+- new_client->adapter = adap;
+- new_client->driver = &rtc8564_driver;
+-
+- _DBG(1, "client=%p", new_client);
+-
+- /* init ctrl1 reg */
+- data[0] = 0;
+- data[1] = 0;
+- ret = i2c_transfer(new_client->adapter, ctrl_wr, 1);
+- if (ret != 1) {
+- printk(KERN_INFO "rtc8564: cant init ctrl1\n");
+- ret = -ENODEV;
+- goto done;
+- }
+-
+- /* read back ctrl1 and ctrl2 */
+- ret = i2c_transfer(new_client->adapter, ctrl_rd, 2);
+- if (ret != 2) {
+- printk(KERN_INFO "rtc8564: cant read ctrl\n");
+- ret = -ENODEV;
+- goto done;
+- }
+-
+- d->ctrl = data[0] | (data[1] << 8);
+-
+- _DBG(1, "RTC8564_REG_CTRL1=%02x, RTC8564_REG_CTRL2=%02x",
+- data[0], data[1]);
+-
+- ret = i2c_attach_client(new_client);
+-done:
+- if (ret) {
+- kfree(d);
+- }
+- return ret;
+-}
+-
+-static int rtc8564_probe(struct i2c_adapter *adap)
+-{
+- return i2c_probe(adap, &addr_data, rtc8564_attach);
+-}
+-
+-static int rtc8564_detach(struct i2c_client *client)
+-{
+- i2c_detach_client(client);
+- kfree(i2c_get_clientdata(client));
+- return 0;
+-}
+-
+-static int rtc8564_get_datetime(struct i2c_client *client, struct rtc_tm *dt)
+-{
+- int ret = -EIO;
+- unsigned char buf[15];
+-
+- _DBG(1, "client=%p, dt=%p", client, dt);
+-
+- if (!dt)
+- return -EINVAL;
+-
+- memset(buf, 0, sizeof(buf));
+-
+- ret = rtc8564_read(client, 0, buf, 15);
+- if (ret)
+- return ret;
+-
+- /* century stored in minute alarm reg */
+- dt->year = BCD2BIN(buf[RTC8564_REG_YEAR]);
+- dt->year += 100 * BCD2BIN(buf[RTC8564_REG_AL_MIN] & 0x3f);
+- dt->mday = BCD2BIN(buf[RTC8564_REG_DAY] & 0x3f);
+- dt->wday = BCD2BIN(buf[RTC8564_REG_WDAY] & 7);
+- dt->mon = BCD2BIN(buf[RTC8564_REG_MON_CENT] & 0x1f);
+-
+- dt->secs = BCD2BIN(buf[RTC8564_REG_SEC] & 0x7f);
+- dt->vl = (buf[RTC8564_REG_SEC] & 0x80) == 0x80;
+- dt->mins = BCD2BIN(buf[RTC8564_REG_MIN] & 0x7f);
+- dt->hours = BCD2BIN(buf[RTC8564_REG_HR] & 0x3f);
+-
+- _DBGRTCTM(2, *dt);
+-
+- return 0;
+-}
+-
+-static int
+-rtc8564_set_datetime(struct i2c_client *client, struct rtc_tm *dt, int datetoo)
+-{
+- int ret, len = 5;
+- unsigned char buf[15];
+-
+- _DBG(1, "client=%p, dt=%p", client, dt);
+-
+- if (!dt)
+- return -EINVAL;
+-
+- _DBGRTCTM(2, *dt);
+-
+- buf[RTC8564_REG_CTRL1] = CTRL1(client) | RTC8564_CTRL1_STOP;
+- buf[RTC8564_REG_CTRL2] = CTRL2(client);
+- buf[RTC8564_REG_SEC] = BIN2BCD(dt->secs);
+- buf[RTC8564_REG_MIN] = BIN2BCD(dt->mins);
+- buf[RTC8564_REG_HR] = BIN2BCD(dt->hours);
+-
+- if (datetoo) {
+- len += 5;
+- buf[RTC8564_REG_DAY] = BIN2BCD(dt->mday);
+- buf[RTC8564_REG_WDAY] = BIN2BCD(dt->wday);
+- buf[RTC8564_REG_MON_CENT] = BIN2BCD(dt->mon) & 0x1f;
+- /* century stored in minute alarm reg */
+- buf[RTC8564_REG_YEAR] = BIN2BCD(dt->year % 100);
+- buf[RTC8564_REG_AL_MIN] = BIN2BCD(dt->year / 100);
+- }
+-
+- ret = rtc8564_write(client, 0, buf, len);
+- if (ret) {
+- _DBG(1, "error writing data! %d", ret);
+- }
+-
+- buf[RTC8564_REG_CTRL1] = CTRL1(client);
+- ret = rtc8564_write(client, 0, buf, 1);
+- if (ret) {
+- _DBG(1, "error writing data! %d", ret);
+- }
+-
+- return ret;
+-}
+-
+-static int rtc8564_get_ctrl(struct i2c_client *client, unsigned int *ctrl)
+-{
+- struct rtc8564_data *data = i2c_get_clientdata(client);
+-
+- if (!ctrl)
+- return -1;
+-
+- *ctrl = data->ctrl;
+- return 0;
+-}
+-
+-static int rtc8564_set_ctrl(struct i2c_client *client, unsigned int *ctrl)
+-{
+- struct rtc8564_data *data = i2c_get_clientdata(client);
+- unsigned char buf[2];
+-
+- if (!ctrl)
+- return -1;
+-
+- buf[0] = *ctrl & 0xff;
+- buf[1] = (*ctrl & 0xff00) >> 8;
+- data->ctrl = *ctrl;
+-
+- return rtc8564_write(client, 0, buf, 2);
+-}
+-
+-static int rtc8564_read_mem(struct i2c_client *client, struct mem *mem)
+-{
+-
+- if (!mem)
+- return -EINVAL;
+-
+- return rtc8564_read(client, mem->loc, mem->data, mem->nr);
+-}
+-
+-static int rtc8564_write_mem(struct i2c_client *client, struct mem *mem)
+-{
+-
+- if (!mem)
+- return -EINVAL;
+-
+- return rtc8564_write(client, mem->loc, mem->data, mem->nr);
+-}
+-
+-static int
+-rtc8564_command(struct i2c_client *client, unsigned int cmd, void *arg)
+-{
+-
+- _DBG(1, "cmd=%d", cmd);
+-
+- switch (cmd) {
+- case RTC_GETDATETIME:
+- return rtc8564_get_datetime(client, arg);
+-
+- case RTC_SETTIME:
+- return rtc8564_set_datetime(client, arg, 0);
+-
+- case RTC_SETDATETIME:
+- return rtc8564_set_datetime(client, arg, 1);
+-
+- case RTC_GETCTRL:
+- return rtc8564_get_ctrl(client, arg);
+-
+- case RTC_SETCTRL:
+- return rtc8564_set_ctrl(client, arg);
+-
+- case MEM_READ:
+- return rtc8564_read_mem(client, arg);
+-
+- case MEM_WRITE:
+- return rtc8564_write_mem(client, arg);
+-
+- default:
+- return -EINVAL;
+- }
+-}
+-
+-static struct i2c_driver rtc8564_driver = {
+- .driver = {
+- .name = "RTC8564",
+- },
+- .id = I2C_DRIVERID_RTC8564,
+- .attach_adapter = rtc8564_probe,
+- .detach_client = rtc8564_detach,
+- .command = rtc8564_command
+-};
+-
+-static __init int rtc8564_init(void)
+-{
+- return i2c_add_driver(&rtc8564_driver);
+-}
+-
+-static __exit void rtc8564_exit(void)
+-{
+- i2c_del_driver(&rtc8564_driver);
+-}
+-
+-MODULE_AUTHOR("Stefan Eletzhofer <Stefan.Eletzhofer@eletztrick.de>");
+-MODULE_DESCRIPTION("EPSON RTC8564 Driver");
+-MODULE_LICENSE("GPL");
+-
+-module_init(rtc8564_init);
+-module_exit(rtc8564_exit);
+--- linux-rtc.orig/drivers/i2c/chips/rtc8564.h 2006-02-21 00:34:27.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,78 +0,0 @@
+-/*
+- * linux/drivers/i2c/chips/rtc8564.h
+- *
+- * Copyright (C) 2002-2004 Stefan Eletzhofer
+- *
+- * based on linux/drivers/acron/char/pcf8583.h
+- * Copyright (C) 2000 Russell King
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License version 2 as
+- * published by the Free Software Foundation.
+- */
+-struct rtc_tm {
+- unsigned char secs;
+- unsigned char mins;
+- unsigned char hours;
+- unsigned char mday;
+- unsigned char mon;
+- unsigned short year; /* xxxx 4 digits :) */
+- unsigned char wday;
+- unsigned char vl;
+-};
+-
+-struct mem {
+- unsigned int loc;
+- unsigned int nr;
+- unsigned char *data;
+-};
+-
+-#define RTC_GETDATETIME 0
+-#define RTC_SETTIME 1
+-#define RTC_SETDATETIME 2
+-#define RTC_GETCTRL 3
+-#define RTC_SETCTRL 4
+-#define MEM_READ 5
+-#define MEM_WRITE 6
+-
+-#define RTC8564_REG_CTRL1 0x0 /* T 0 S 0 | T 0 0 0 */
+-#define RTC8564_REG_CTRL2 0x1 /* 0 0 0 TI/TP | AF TF AIE TIE */
+-#define RTC8564_REG_SEC 0x2 /* VL 4 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_MIN 0x3 /* x 4 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_HR 0x4 /* x x 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_DAY 0x5 /* x x 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_WDAY 0x6 /* x x x x | x 4 2 1 */
+-#define RTC8564_REG_MON_CENT 0x7 /* C x x 1 | 8 4 2 1 */
+-#define RTC8564_REG_YEAR 0x8 /* 8 4 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_AL_MIN 0x9 /* AE 4 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_AL_HR 0xa /* AE 4 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_AL_DAY 0xb /* AE x 2 1 | 8 4 2 1 */
+-#define RTC8564_REG_AL_WDAY 0xc /* AE x x x | x 4 2 1 */
+-#define RTC8564_REG_CLKOUT 0xd /* FE x x x | x x FD1 FD0 */
+-#define RTC8564_REG_TCTL 0xe /* TE x x x | x x FD1 FD0 */
+-#define RTC8564_REG_TIMER 0xf /* 8 bit binary */
+-
+-/* Control reg */
+-#define RTC8564_CTRL1_TEST1 (1<<3)
+-#define RTC8564_CTRL1_STOP (1<<5)
+-#define RTC8564_CTRL1_TEST2 (1<<7)
+-
+-#define RTC8564_CTRL2_TIE (1<<0)
+-#define RTC8564_CTRL2_AIE (1<<1)
+-#define RTC8564_CTRL2_TF (1<<2)
+-#define RTC8564_CTRL2_AF (1<<3)
+-#define RTC8564_CTRL2_TI_TP (1<<4)
+-
+-/* CLKOUT frequencies */
+-#define RTC8564_FD_32768HZ (0x0)
+-#define RTC8564_FD_1024HZ (0x1)
+-#define RTC8564_FD_32 (0x2)
+-#define RTC8564_FD_1HZ (0x3)
+-
+-/* Timer CTRL */
+-#define RTC8564_TD_4096HZ (0x0)
+-#define RTC8564_TD_64HZ (0x1)
+-#define RTC8564_TD_1HZ (0x2)
+-#define RTC8564_TD_1_60HZ (0x3)
+-
+-#define I2C_DRIVERID_RTC8564 0xf000
+--- linux-rtc.orig/include/linux/x1205.h 2006-02-21 00:34:27.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,31 +0,0 @@
+-/*
+- * x1205.h - defines for drivers/i2c/chips/x1205.c
+- * Copyright 2004 Karen Spearel
+- * Copyright 2005 Alessandro Zummo
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- */
+-
+-#ifndef __LINUX_X1205_H__
+-#define __LINUX_X1205_H__
+-
+-/* commands */
+-
+-#define X1205_CMD_GETDATETIME 0
+-#define X1205_CMD_SETTIME 1
+-#define X1205_CMD_SETDATETIME 2
+-#define X1205_CMD_GETALARM 3
+-#define X1205_CMD_SETALARM 4
+-#define X1205_CMD_GETDTRIM 5
+-#define X1205_CMD_SETDTRIM 6
+-#define X1205_CMD_GETATRIM 7
+-#define X1205_CMD_SETATRIM 8
+-
+-extern int x1205_do_command(unsigned int cmd, void *arg);
+-extern int x1205_direct_attach(int adapter_id,
+- struct i2c_client_address_data *address_data);
+-
+-#endif /* __LINUX_X1205_H__ */
+--- linux-rtc.orig/drivers/i2c/chips/Kconfig 2006-02-21 00:34:27.000000000 +0100
++++ linux-rtc/drivers/i2c/chips/Kconfig 2006-02-21 00:36:43.000000000 +0100
+@@ -65,15 +65,6 @@ config SENSORS_PCF8591
+ This driver can also be built as a module. If so, the module
+ will be called pcf8591.
+
+-config SENSORS_RTC8564
+- tristate "Epson 8564 RTC chip"
+- depends on I2C && EXPERIMENTAL
+- help
+- If you say yes here you get support for the Epson 8564 RTC chip.
+-
+- This driver can also be built as a module. If so, the module
+- will be called i2c-rtc8564.
+-
+ config ISP1301_OMAP
+ tristate "Philips ISP1301 with OMAP OTG"
+ depends on I2C && ARCH_OMAP_OTG
+@@ -126,13 +117,4 @@ config SENSORS_MAX6875
+ This driver can also be built as a module. If so, the module
+ will be called max6875.
+
+-config RTC_X1205_I2C
+- tristate "Xicor X1205 RTC chip"
+- depends on I2C && EXPERIMENTAL
+- help
+- If you say yes here you get support for the Xicor X1205 RTC chip.
+-
+- This driver can also be built as a module. If so, the module
+- will be called x1205.
+-
+ endmenu
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-sysfs.c 2006-02-06 23:56:37.000000000 +0100
-@@ -0,0 +1,113 @@
++++ linux-rtc/drivers/rtc/rtc-sysfs.c 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,120 @@
+/*
+ * RTC subsystem, sysfs interface
+ *
@@ -1059,8 +2365,7 @@
+
+static ssize_t rtc_sysfs_show_date(struct class_device *dev, char *buf)
+{
-+ ssize_t retval = -ENODEV;
-+ struct rtc_device *rtc = to_rtc_device(dev);
++ ssize_t retval;
+ struct rtc_time tm;
+
+ if ((retval = rtc_read_time(dev, &tm)) == 0) {
@@ -1074,8 +2379,7 @@
+
+static ssize_t rtc_sysfs_show_time(struct class_device *dev, char *buf)
+{
-+ ssize_t retval = -ENODEV;
-+ struct rtc_device *rtc = to_rtc_device(dev);
++ ssize_t retval;
+ struct rtc_time tm;
+
+ if ((retval = rtc_read_time(dev, &tm)) == 0) {
@@ -1089,8 +2393,7 @@
+
+static ssize_t rtc_sysfs_show_since_epoch(struct class_device *dev, char *buf)
+{
-+ ssize_t retval = -ENODEV;
-+ struct rtc_device *rtc = to_rtc_device(dev);
++ ssize_t retval;
+ struct rtc_time tm;
+
+ if ((retval = rtc_read_time(dev, &tm)) == 0) {
@@ -1103,26 +2406,36 @@
+}
+static CLASS_DEVICE_ATTR(since_epoch, S_IRUGO, rtc_sysfs_show_since_epoch, NULL);
+
-+/* insertion/removal hooks */
++static struct attribute *rtc_attrs[] = {
++ &class_device_attr_name.attr,
++ &class_device_attr_date.attr,
++ &class_device_attr_time.attr,
++ &class_device_attr_since_epoch.attr,
++ NULL,
++};
++
++static struct attribute_group rtc_attr_group = {
++ .attrs = rtc_attrs,
++};
+
+static int __devinit rtc_sysfs_add_device(struct class_device *class_dev,
+ struct class_interface *class_intf)
+{
-+ class_device_create_file(class_dev, &class_device_attr_name);
-+ class_device_create_file(class_dev, &class_device_attr_date);
-+ class_device_create_file(class_dev, &class_device_attr_time);
-+ class_device_create_file(class_dev, &class_device_attr_since_epoch);
++ int err;
++
+ dev_info(class_dev->dev, "rtc intf: sysfs\n");
-+ return 0;
++
++ if ((err = sysfs_create_group(&class_dev->kobj, &rtc_attr_group)) != 0)
++ dev_err(class_dev->dev,
++ "failed to create sysfs attributes\n");
++
++ return err;
+}
+
+static void rtc_sysfs_remove_device(struct class_device *class_dev,
+ struct class_interface *class_intf)
+{
-+ class_device_remove_file(class_dev, &class_device_attr_name);
-+ class_device_remove_file(class_dev, &class_device_attr_date);
-+ class_device_remove_file(class_dev, &class_device_attr_time);
-+ class_device_remove_file(class_dev, &class_device_attr_since_epoch);
++ sysfs_remove_group(&class_dev->kobj, &rtc_attr_group);
+}
+
+/* interface registration */
@@ -1149,7 +2462,7 @@
+MODULE_DESCRIPTION("RTC class sysfs interface");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-proc.c 2006-02-06 23:58:32.000000000 +0100
++++ linux-rtc/drivers/rtc/rtc-proc.c 2006-02-21 00:36:43.000000000 +0100
@@ -0,0 +1,158 @@
+/*
+ * RTC subsystem, proc interface
@@ -1170,7 +2483,7 @@
+#include <linux/seq_file.h>
+
+static struct class_device *rtc_dev = NULL;
-+static DECLARE_MUTEX(rtc_sem);
++static DEFINE_MUTEX(rtc_lock);
+
+static int rtc_proc_show(struct seq_file *seq, void *offset)
+{
@@ -1254,7 +2567,7 @@
+static int rtc_proc_add_device(struct class_device *class_dev,
+ struct class_interface *class_intf)
+{
-+ down(&rtc_sem);
++ mutex_lock(&rtc_lock);
+ if (rtc_dev == NULL) {
+ struct proc_dir_entry *ent;
+
@@ -1272,7 +2585,7 @@
+ else
+ rtc_dev = NULL;
+ }
-+ up(&rtc_sem);
++ mutex_unlock(&rtc_lock);
+
+ return 0;
+}
@@ -1280,12 +2593,12 @@
+static void rtc_proc_remove_device(struct class_device *class_dev,
+ struct class_interface *class_intf)
+{
-+ down(&rtc_sem);
++ mutex_lock(&rtc_lock);
+ if (rtc_dev == class_dev) {
+ remove_proc_entry("driver/rtc", NULL);
+ rtc_dev = NULL;
+ }
-+ up(&rtc_sem);
++ mutex_unlock(&rtc_lock);
+}
+
+struct class_interface rtc_proc_interface = {
@@ -1310,8 +2623,8 @@
+MODULE_DESCRIPTION("RTC class proc interface");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-dev.c 2006-02-06 23:58:32.000000000 +0100
-@@ -0,0 +1,366 @@
++++ linux-rtc/drivers/rtc/rtc-dev.c 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,370 @@
+/*
+ * RTC subsystem, dev interface
+ *
@@ -1342,7 +2655,7 @@
+ /* We keep the lock as long as the device is in use
+ * and return immediately if busy
+ */
-+ if (down_trylock(&rtc->char_sem))
++ if (!(mutex_trylock(&rtc->char_lock)))
+ return -EBUSY;
+
+ file->private_data = &rtc->class_dev;
@@ -1358,7 +2671,7 @@
+ }
+
+ /* something has gone wrong, release the lock */
-+ up(&rtc->char_sem);
++ mutex_unlock(&rtc->char_lock);
+ return err;
+}
+
@@ -1402,6 +2715,10 @@
+ remove_wait_queue(&rtc->irq_queue, &wait);
+
+ if (ret == 0) {
++ /* Check for any data updates */
++ if (rtc->ops->read_callback)
++ data = rtc->ops->read_callback(rtc->class_dev.dev, data);
++
+ ret = put_user(data, (unsigned long __user *)buf);
+ if (ret == 0)
+ ret = sizeof(unsigned long);
@@ -1549,7 +2866,7 @@
+ if (rtc->ops->release)
+ rtc->ops->release(rtc->class_dev.dev);
+
-+ up(&rtc->char_sem);
++ mutex_unlock(&rtc->char_lock);
+ return 0;
+}
+
@@ -1588,7 +2905,7 @@
+ return -EINVAL;
+ }
+
-+ init_MUTEX(&rtc->char_sem);
++ mutex_init(&rtc->char_lock);
+ spin_lock_init(&rtc->irq_lock);
+ init_waitqueue_head(&rtc->irq_queue);
+
@@ -1679,16 +2996,16 @@
+MODULE_DESCRIPTION("RTC class dev interface");
+MODULE_LICENSE("GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-x1205.c 2006-02-06 23:58:32.000000000 +0100
-@@ -0,0 +1,672 @@
++++ linux-rtc/drivers/rtc/rtc-x1205.c 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,619 @@
+/*
+ * An i2c driver for the Xicor/Intersil X1205 RTC
+ * Copyright 2004 Karen Spearel
+ * Copyright 2005 Alessandro Zummo
+ *
+ * please send all reports to:
-+ * kas11 at tampabay dot rr dot com
-+ * a dot zummo at towertech dot it
++ * Karen Spearel <kas111 at gmail dot com>
++ * Alessandro Zummo <a.zummo@towertech.it>
+ *
+ * based on a lot of other RTC drivers.
+ *
@@ -1698,17 +3015,12 @@
+ * (at your option) any later version.
+ */
+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/slab.h>
-+#include <linux/err.h>
+#include <linux/i2c.h>
-+#include <linux/string.h>
+#include <linux/bcd.h>
+#include <linux/rtc.h>
+#include <linux/delay.h>
+
-+#define DRV_VERSION "1.0.5"
++#define DRV_VERSION "1.0.6"
+
+/* Addresses to scan: none. This chip is located at
+ * 0x6f and uses a two bytes register addressing.
@@ -1900,14 +3212,12 @@
+ }
+
+ /* this sequence is required to unlock the chip */
-+ xfer = i2c_master_send(client, wel, 3);
-+ if (xfer != 3) {
++ if ((xfer = i2c_master_send(client, wel, 3)) != 3) {
+ dev_err(&client->dev, "%s: wel - %d\n", __FUNCTION__, xfer);
+ return -EIO;
+ }
+
-+ xfer = i2c_master_send(client, rwel, 3);
-+ if (xfer != 3) {
++ if ((xfer = i2c_master_send(client, rwel, 3)) != 3) {
+ dev_err(&client->dev, "%s: rwel - %d\n", __FUNCTION__, xfer);
+ return -EIO;
+ }
@@ -1927,8 +3237,7 @@
+ };
+
+ /* disable further writes */
-+ xfer = i2c_master_send(client, diswe, 3);
-+ if (xfer != 3) {
++ if ((xfer = i2c_master_send(client, diswe, 3)) != 3) {
+ dev_err(&client->dev, "%s: diswe - %d\n", __FUNCTION__, xfer);
+ return -EIO;
+ }
@@ -1941,13 +3250,11 @@
+ int err;
+ struct rtc_time tm;
+
-+ tm.tm_hour = 0;
-+ tm.tm_min = 0;
-+ tm.tm_sec = 0;
++ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+
+ if ((err = x1205_set_datetime(client, &tm, 0, X1205_CCR_BASE)) < 0)
+ dev_err(&client->dev,
-+ "unable to restart the clock\n");
++ "unable to restart the oscillator\n");
+
+ return err;
+}
@@ -2020,10 +3327,7 @@
+
+struct x1205_limit
+{
-+ unsigned char reg;
-+ unsigned char mask;
-+ unsigned char min;
-+ unsigned char max;
++ unsigned char reg, mask, min, max;
+};
+
+static int x1205_validate_client(struct i2c_client *client)
@@ -2067,11 +3371,10 @@
+ { client->addr, I2C_M_RD, 1, &buf },
+ };
+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
-+ if (xfer != 2) {
++ if ((xfer = i2c_transfer(client->adapter, msgs, 2)) != 2) {
+ dev_err(&client->adapter->dev,
+ "%s: could not read register %x\n",
-+ __FUNCTION__, addr[1]);
++ __FUNCTION__, probe_zero_pattern[i]);
+
+ return -EIO;
+ }
@@ -2079,7 +3382,7 @@
+ if ((buf & probe_zero_pattern[i+1]) != 0) {
+ dev_err(&client->adapter->dev,
+ "%s: register=%02x, zero pattern=%d, value=%x\n",
-+ __FUNCTION__, addr[1], i, buf);
++ __FUNCTION__, probe_zero_pattern[i], i, buf);
+
+ return -ENODEV;
+ }
@@ -2096,12 +3399,10 @@
+ { client->addr, I2C_M_RD, 1, &reg },
+ };
+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
-+
-+ if (xfer != 2) {
++ if ((xfer = i2c_transfer(client->adapter, msgs, 2)) != 2) {
+ dev_err(&client->adapter->dev,
+ "%s: could not read register %x\n",
-+ __FUNCTION__, addr[1]);
++ __FUNCTION__, probe_limits_pattern[i].reg);
+
+ return -EIO;
+ }
@@ -2112,7 +3413,8 @@
+ value < probe_limits_pattern[i].min) {
+ dev_dbg(&client->adapter->dev,
+ "%s: register=%x, lim pattern=%d, value=%d\n",
-+ __FUNCTION__, addr[1], i, value);
++ __FUNCTION__, probe_limits_pattern[i].reg,
++ i, value);
+
+ return -ENODEV;
+ }
@@ -2121,87 +3423,51 @@
+ return 0;
+}
+
-+static int x1205_rtc_read_alarm(struct device *dev,
-+ struct rtc_wkalrm *alrm)
++static int x1205_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
+{
+ return x1205_get_datetime(to_i2c_client(dev),
+ &alrm->time, X1205_ALM0_BASE);
+}
+
-+static int x1205_rtc_set_alarm(struct device *dev,
-+ struct rtc_wkalrm *alrm)
++static int x1205_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
+{
+ return x1205_set_datetime(to_i2c_client(dev),
+ &alrm->time, 1, X1205_ALM0_BASE);
+}
+
-+static int x1205_rtc_read_time(struct device *dev,
-+ struct rtc_time *tm)
++static int x1205_rtc_read_time(struct device *dev, struct rtc_time *tm)
+{
+ return x1205_get_datetime(to_i2c_client(dev),
+ tm, X1205_CCR_BASE);
+}
+
-+static int x1205_rtc_set_time(struct device *dev,
-+ struct rtc_time *tm)
++static int x1205_rtc_set_time(struct device *dev, struct rtc_time *tm)
+{
+ return x1205_set_datetime(to_i2c_client(dev),
+ tm, 1, X1205_CCR_BASE);
+}
+
-+static int x1205_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ int err;
-+
-+ struct rtc_time new_tm, old_tm;
-+
-+ if ((err = x1205_rtc_read_time(dev, &old_tm) == 0))
-+ return err;
-+
-+ /* FIXME xtime.tv_nsec = old_tm.tm_sec * 10000000; */
-+ new_tm.tm_sec = secs % 60;
-+ secs /= 60;
-+ new_tm.tm_min = secs % 60;
-+ secs /= 60;
-+ new_tm.tm_hour = secs % 24;
-+
-+ /*
-+ * avoid writing when we're going to change the day
-+ * of the month. We will retry in the next minute.
-+ * This basically means that if the RTC must not drift
-+ * by more than 1 minute in 11 minutes.
-+ */
-+ if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) ||
-+ (new_tm.tm_hour == 23 && new_tm.tm_min == 59))
-+ return 1;
-+
-+ return x1205_rtc_set_time(dev, &new_tm);
-+}
-+
+static int x1205_rtc_proc(struct device *dev, struct seq_file *seq)
+{
+ int err, dtrim, atrim;
+
+ seq_printf(seq, "24hr\t\t: yes\n");
+
-+ err = x1205_get_dtrim(to_i2c_client(dev), &dtrim);
-+ if (err == 0)
++ if ((err = x1205_get_dtrim(to_i2c_client(dev), &dtrim)) == 0)
+ seq_printf(seq, "digital_trim\t: %d ppm\n", dtrim);
+
-+ err = x1205_get_atrim(to_i2c_client(dev), &atrim);
-+ if (err == 0)
++ if ((err = x1205_get_atrim(to_i2c_client(dev), &atrim)) == 0)
+ seq_printf(seq, "analog_trim\t: %d.%02d pF\n",
+ atrim / 1000, atrim % 1000);
+ return 0;
+}
+
+static struct rtc_class_ops x1205_rtc_ops = {
-+ .proc = x1205_rtc_proc,
-+ .read_time = x1205_rtc_read_time,
-+ .set_time = x1205_rtc_set_time,
-+ .read_alarm = x1205_rtc_read_alarm,
-+ .set_alarm = x1205_rtc_set_alarm,
-+ .set_mmss = x1205_rtc_set_mmss,
++ .proc = x1205_rtc_proc,
++ .read_time = x1205_rtc_read_time,
++ .set_time = x1205_rtc_set_time,
++ .read_alarm = x1205_rtc_read_alarm,
++ .set_alarm = x1205_rtc_set_alarm,
+};
+
+static ssize_t x1205_sysfs_show_atrim(struct device *dev,
@@ -2209,10 +3475,10 @@
+{
+ int atrim;
+
-+ if (x1205_get_atrim(to_i2c_client(dev), &atrim) == 0) {
-+ return sprintf(buf, "%d.%02d pF\n",
-+ atrim / 1000, atrim % 1000); }
-+ return 0;
++ if (x1205_get_atrim(to_i2c_client(dev), &atrim) == 0)
++ return sprintf(buf, "%d.%02d pF\n",
++ atrim / 1000, atrim % 1000);
++ return 0;
+}
+static DEVICE_ATTR(atrim, S_IRUGO, x1205_sysfs_show_atrim, NULL);
+
@@ -2221,18 +3487,16 @@
+{
+ int dtrim;
+
-+ if (x1205_get_dtrim(to_i2c_client(dev), &dtrim) == 0) {
-+ return sprintf(buf, "%d ppm\n", dtrim);
-+ }
-+ return 0;
++ if (x1205_get_dtrim(to_i2c_client(dev), &dtrim) == 0)
++ return sprintf(buf, "%d ppm\n", dtrim);
++
++ return 0;
+}
+static DEVICE_ATTR(dtrim, S_IRUGO, x1205_sysfs_show_dtrim, NULL);
+
-+
+static int x1205_attach(struct i2c_adapter *adapter)
+{
+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
+ return i2c_probe(adapter, &addr_data, x1205_probe);
+}
+
@@ -2345,7 +3609,7 @@
+}
+
+MODULE_AUTHOR(
-+ "Karen Spearel <kas11@tampabay.rr.com>, "
++ "Karen Spearel <kas111 at gmail dot com>, "
+ "Alessandro Zummo <a.zummo@towertech.it>");
+MODULE_DESCRIPTION("Xicor/Intersil X1205 RTC driver");
+MODULE_LICENSE("GPL");
@@ -2354,7 +3618,7 @@
+module_init(x1205_init);
+module_exit(x1205_exit);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-test.c 2006-02-06 23:58:32.000000000 +0100
++++ linux-rtc/drivers/rtc/rtc-test.c 2006-02-21 00:36:43.000000000 +0100
@@ -0,0 +1,206 @@
+/*
+ * An RTC test device/driver
@@ -2563,8 +3827,8 @@
+module_init(test_init);
+module_exit(test_exit);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-ds1672.c 2006-02-06 23:58:32.000000000 +0100
-@@ -0,0 +1,234 @@
++++ linux-rtc/drivers/rtc/rtc-ds1672.c 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,233 @@
+/*
+ * An rtc/i2c driver for the Dallas DS1672
+ * Copyright 2005 Alessandro Zummo
@@ -2689,15 +3953,14 @@
+}
+
+static struct rtc_class_ops ds1672_rtc_ops = {
-+ .read_time = ds1672_rtc_read_time,
-+ .set_time = ds1672_rtc_set_time,
-+ .set_mmss = ds1672_rtc_set_mmss,
++ .read_time = ds1672_rtc_read_time,
++ .set_time = ds1672_rtc_set_time,
++ .set_mmss = ds1672_rtc_set_mmss,
+};
+
+static int ds1672_attach(struct i2c_adapter *adapter)
+{
+ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
-+
+ return i2c_probe(adapter, &addr_data, ds1672_probe);
+}
+
@@ -2800,8 +4063,8 @@
+module_init(ds1672_init);
+module_exit(ds1672_exit);
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/rtc/rtc-pcf8563.c 2006-02-06 23:58:32.000000000 +0100
-@@ -0,0 +1,384 @@
++++ linux-rtc/drivers/rtc/rtc-pcf8563.c 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,355 @@
+/*
+ * An I2C driver for the Philips PCF8563 RTC
+ * Copyright 2005-06 Tower Technologies
@@ -2819,15 +4082,18 @@
+ * (at your option) any later version.
+ */
+
-+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/bcd.h>
+#include <linux/rtc.h>
+
-+#define DRV_VERSION "0.4.0"
++#define DRV_VERSION "0.4.2"
+
-+/* Addresses to scan */
-+static unsigned short normal_i2c[] = { 0x51, I2C_CLIENT_END };
++/* Addresses to scan: none
++ * This chip cannot be reliably autodetected. An empty eeprom
++ * located at 0x51 will pass the validation routine due to
++ * the way the registers are implemented.
++ */
++static unsigned short normal_i2c[] = { I2C_CLIENT_END };
+
+/* Module parameters */
+I2C_CLIENT_INSMOD;
@@ -2874,11 +4140,10 @@
+ */
+static int pcf8563_get_datetime(struct i2c_client *client, struct rtc_time *tm)
+{
-+ unsigned char buf[13];
-+ unsigned char addr = PCF8563_REG_ST1;
++ unsigned char buf[13] = { PCF8563_REG_ST1 };
+
+ struct i2c_msg msgs[] = {
-+ { client->addr, 0, 1, &addr }, /* setup read ptr */
++ { client->addr, 0, 1, buf }, /* setup read ptr */
+ { client->addr, I2C_M_RD, 13, buf }, /* read status + date */
+ };
+
@@ -2980,46 +4245,48 @@
+
+static int pcf8563_validate_client(struct i2c_client *client)
+{
-+ int i, xfer;
++ int i;
+
-+ static const struct pcf8563_limit probe_limits_pattern[] = {
++ static const struct pcf8563_limit pattern[] = {
+ /* register, mask, min, max */
+ { PCF8563_REG_SC, 0x7F, 0, 59 },
+ { PCF8563_REG_MN, 0x7F, 0, 59 },
+ { PCF8563_REG_HR, 0x3F, 0, 23 },
+ { PCF8563_REG_DM, 0x3F, 0, 31 },
+ { PCF8563_REG_MO, 0x1F, 0, 12 },
-+ { PCF8563_REG_YR, 0xFF, 0, 99 },
+ };
+
+ /* check limits (only registers with bcd values) */
-+ for (i = 0; i < ARRAY_SIZE(probe_limits_pattern); i++) {
-+ unsigned char addr, buf, value;
++ for (i = 0; i < ARRAY_SIZE(pattern); i++) {
++ int xfer;
++ unsigned char value;
++ unsigned char buf = pattern[i].reg;
+
-+ addr = probe_limits_pattern[i].reg;
-+
-+ struct i2c_msg msgs[2] = {
-+ { client->addr, 0, 2, &addr },
++ struct i2c_msg msgs[] = {
++ { client->addr, 0, 1, &buf },
+ { client->addr, I2C_M_RD, 1, &buf },
+ };
+
-+ xfer = i2c_transfer(client->adapter, msgs, 2);
++ xfer = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+
-+ if (xfer != 2) {
++ if (xfer != ARRAY_SIZE(msgs)) {
+ dev_err(&client->adapter->dev,
-+ "%s: could not read register %x\n",
-+ __FUNCTION__, probe_limits_pattern[i].reg);
++ "%s: could not read register 0x%02X\n",
++ __FUNCTION__, pattern[i].reg);
+
+ return -EIO;
+ }
+
-+ value = BCD2BIN(buf & probe_limits_pattern[i].mask);
++ value = BCD2BIN(buf & pattern[i].mask);
+
-+ if (value > probe_limits_pattern[i].max ||
-+ value < probe_limits_pattern[i].min) {
++ if (value > pattern[i].max ||
++ value < pattern[i].min) {
+ dev_dbg(&client->adapter->dev,
-+ "%s: register=%x, lim pattern=%d, value=%d\n",
-+ __FUNCTION__, probe_limits_pattern[i].reg, i, value);
++ "%s: pattern=%d, reg=%x, mask=0x%02x, min=%d, "
++ "max=%d, value=%d, raw=0x%02X\n",
++ __FUNCTION__, i, pattern[i].reg, pattern[i].mask,
++ pattern[i].min, pattern[i].max,
++ value, buf);
+
+ return -ENODEV;
+ }
@@ -3028,47 +4295,16 @@
+ return 0;
+}
+
-+static int pcf8563_rtc_read_time(struct device *dev,
-+ struct rtc_time *tm)
++static int pcf8563_rtc_read_time(struct device *dev, struct rtc_time *tm)
+{
+ return pcf8563_get_datetime(to_i2c_client(dev), tm);
+}
+
-+static int pcf8563_rtc_set_time(struct device *dev,
-+ struct rtc_time *tm)
++static int pcf8563_rtc_set_time(struct device *dev, struct rtc_time *tm)
+{
+ return pcf8563_set_datetime(to_i2c_client(dev), tm);
+}
+
-+static int pcf8563_rtc_set_mmss(struct device *dev, unsigned long secs)
-+{
-+ int err;
-+
-+ struct rtc_time new_tm, old_tm;
-+
-+ if ((err = pcf8563_rtc_read_time(dev, &old_tm) == 0))
-+ return err;
-+
-+ /* FIXME xtime.tv_nsec = old_tm.tm_sec * 10000000; */
-+ new_tm.tm_sec = secs % 60;
-+ secs /= 60;
-+ new_tm.tm_min = secs % 60;
-+ secs /= 60;
-+ new_tm.tm_hour = secs % 24;
-+
-+ /*
-+ * avoid writing when we're going to change the day
-+ * of the month. We will retry in the next minute.
-+ * This basically means that if the RTC must not drift
-+ * by more than 1 minute in 11 minutes.
-+ */
-+ if ((old_tm.tm_hour == 23 && old_tm.tm_min == 59) ||
-+ (new_tm.tm_hour == 23 && new_tm.tm_min == 59))
-+ return 1;
-+
-+ return pcf8563_rtc_set_time(dev, &new_tm);
-+}
-+
+static int pcf8563_rtc_proc(struct device *dev, struct seq_file *seq)
+{
+ seq_printf(seq, "24hr\t\t: yes\n");
@@ -3076,10 +4312,9 @@
+}
+
+static struct rtc_class_ops pcf8563_rtc_ops = {
-+ .proc = pcf8563_rtc_proc,
-+ .read_time = pcf8563_rtc_read_time,
-+ .set_time = pcf8563_rtc_set_time,
-+ .set_mmss = pcf8563_rtc_set_mmss,
++ .proc = pcf8563_rtc_proc,
++ .read_time = pcf8563_rtc_read_time,
++ .set_time = pcf8563_rtc_set_time,
+};
+
+static int pcf8563_attach(struct i2c_adapter *adapter)
@@ -3185,4 +4420,301 @@
+
+module_init(pcf8563_init);
+module_exit(pcf8563_exit);
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-rtc/drivers/rtc/rtc-rs5c372.c 2006-02-21 00:36:43.000000000 +0100
+@@ -0,0 +1,295 @@
++/*
++ * An I2C driver for the Ricoh RS5C372 RTC
++ *
++ * Copyright (C) 2005 Pavel Mironchik pmironchik@optifacio.net
++ * Copyright (C) 2006 Tower Technologies
++ *
++ * 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/i2c.h>
++#include <linux/rtc.h>
++#include <linux/bcd.h>
++
++#define DRV_VERSION "0.2"
++
++/* Addresses to scan */
++static unsigned short normal_i2c[] = { /* 0x32,*/ I2C_CLIENT_END };
++
++/* Insmod parameters */
++I2C_CLIENT_INSMOD;
++
++#define RS5C372_REG_SECS 0
++#define RS5C372_REG_MINS 1
++#define RS5C372_REG_HOURS 2
++#define RS5C372_REG_WDAY 3
++#define RS5C372_REG_DAY 4
++#define RS5C372_REG_MONTH 5
++#define RS5C372_REG_YEAR 6
++#define RS5C372_REG_TRIM 7
++
++#define RS5C372_TRIM_XSL 0x80
++#define RS5C372_TRIM_MASK 0x7F
++
++#define RS5C372_REG_BASE 0
++
++static int rs5c372_attach(struct i2c_adapter *adapter);
++static int rs5c372_detach(struct i2c_client *client);
++static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind);
++
++static struct i2c_driver rs5c372_driver = {
++ .driver = {
++ .name = "rs5c372",
++ },
++ .attach_adapter = &rs5c372_attach,
++ .detach_client = &rs5c372_detach,
++};
++
++static int rs5c372_get_datetime(struct i2c_client *client, struct rtc_time *tm)
++{
++ unsigned char buf[7] = { RS5C372_REG_BASE };
++
++ /* this implements the 1st reading method, according
++ * to the datasheet. buf[0] is initialized with
++ * address ptr and transmission format register.
++ */
++ struct i2c_msg msgs[] = {
++ { client->addr, 0, 1, buf },
++ { client->addr, I2C_M_RD, 7, buf },
++ };
++
++ if ((i2c_transfer(client->adapter, msgs, 2)) != 2) {
++ dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
++ return -EIO;
++ }
++
++ tm->tm_sec = BCD2BIN(buf[RS5C372_REG_SECS] & 0x7f);
++ tm->tm_min = BCD2BIN(buf[RS5C372_REG_MINS] & 0x7f);
++ tm->tm_hour = BCD2BIN(buf[RS5C372_REG_HOURS] & 0x3f);
++ tm->tm_wday = BCD2BIN(buf[RS5C372_REG_WDAY] & 0x07);
++ tm->tm_mday = BCD2BIN(buf[RS5C372_REG_DAY] & 0x3f);
++
++ /* tm->tm_mon is zero-based */
++ tm->tm_mon = BCD2BIN(buf[RS5C372_REG_MONTH] & 0x1f) - 1;
++
++ /* year is 1900 + tm->tm_year */
++ tm->tm_year = BCD2BIN(buf[RS5C372_REG_YEAR]) + 100;
++
++ dev_dbg(&client->dev, "%s: tm is secs=%d, mins=%d, hours=%d, "
++ "mday=%d, mon=%d, year=%d, wday=%d\n",
++ __FUNCTION__,
++ tm->tm_sec, tm->tm_min, tm->tm_hour,
++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
++
++ return 0;
++}
++
++static int rs5c372_set_datetime(struct i2c_client *client, struct rtc_time *tm)
++{
++ unsigned char buf[8] = { RS5C372_REG_BASE };
++
++ dev_dbg(&client->dev,
++ "%s: secs=%d, mins=%d, hours=%d ",
++ "mday=%d, mon=%d, year=%d, wday=%d\n",
++ __FUNCTION__, tm->tm_sec, tm->tm_min, tm->tm_hour,
++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
++
++ buf[1] = BIN2BCD(tm->tm_sec);
++ buf[2] = BIN2BCD(tm->tm_min);
++ buf[3] = BIN2BCD(tm->tm_hour);
++ buf[4] = BIN2BCD(tm->tm_wday);
++ buf[5] = BIN2BCD(tm->tm_mday);
++ buf[6] = BIN2BCD(tm->tm_mon + 1);
++ buf[7] = BIN2BCD(tm->tm_year - 100);
++
++ if ((i2c_master_send(client, buf, 8)) != 8) {
++ dev_err(&client->dev, "%s: write error\n", __FUNCTION__);
++ return -EIO;
++ }
++
++ return 0;
++}
++
++static int rs5c372_get_trim(struct i2c_client *client, int *osc, int *trim)
++{
++ unsigned char buf = RS5C372_REG_TRIM;
++
++ struct i2c_msg msgs[] = {
++ { client->addr, 0, 1, &buf },
++ { client->addr, I2C_M_RD, 1, &buf },
++ };
++
++ if ((i2c_transfer(client->adapter, msgs, 2)) != 2) {
++ dev_err(&client->dev, "%s: read error\n", __FUNCTION__);
++ return -EIO;
++ }
++
++ dev_dbg(&client->dev, "%s: raw trim=%x\n", __FUNCTION__, trim);
++
++ if (osc)
++ *osc = (buf & RS5C372_TRIM_XSL) ? 32000 : 32768;
++
++ if (trim)
++ *trim = buf & RS5C372_TRIM_MASK;
++
++ return 0;
++}
++
++static int rs5c372_rtc_read_time(struct device *dev, struct rtc_time *tm)
++{
++ return rs5c372_get_datetime(to_i2c_client(dev), tm);
++}
++
++static int rs5c372_rtc_set_time(struct device *dev, struct rtc_time *tm)
++{
++ return rs5c372_set_datetime(to_i2c_client(dev), tm);
++}
++
++static int rs5c372_rtc_proc(struct device *dev, struct seq_file *seq)
++{
++ int err, osc, trim;
++
++ seq_printf(seq, "24hr\t\t: yes\n");
++
++ if ((err = rs5c372_get_trim(to_i2c_client(dev), &osc, &trim)) == 0) {
++ seq_printf(seq, "%d.%03d KHz\n", osc / 1000, osc % 1000);
++ seq_printf(seq, "trim\t: %d\n", trim);
++ }
++
++ return 0;
++}
++
++static struct rtc_class_ops rs5c372_rtc_ops = {
++ .proc = rs5c372_rtc_proc,
++ .read_time = rs5c372_rtc_read_time,
++ .set_time = rs5c372_rtc_set_time,
++};
++
++static ssize_t rs5c372_sysfs_show_trim(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ int trim;
++
++ if (rs5c372_get_trim(to_i2c_client(dev), NULL, &trim) == 0)
++ return sprintf(buf, "0x%2x\n", trim);
++
++ return 0;
++}
++static DEVICE_ATTR(trim, S_IRUGO, rs5c372_sysfs_show_trim, NULL);
++
++static ssize_t rs5c372_sysfs_show_osc(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ int osc;
++
++ if (rs5c372_get_trim(to_i2c_client(dev), &osc, NULL) == 0)
++ return sprintf(buf, "%d.%03d KHz\n", osc / 1000, osc % 1000);
++
++ return 0;
++}
++static DEVICE_ATTR(osc, S_IRUGO, rs5c372_sysfs_show_osc, NULL);
++
++static int rs5c372_attach(struct i2c_adapter *adapter)
++{
++ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
++ return i2c_probe(adapter, &addr_data, rs5c372_probe);
++}
++
++static int rs5c372_probe(struct i2c_adapter *adapter, int address, int kind)
++{
++ int err = 0;
++ struct i2c_client *client;
++ struct rtc_device *rtc;
++
++ dev_dbg(&adapter->dev, "%s\n", __FUNCTION__);
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
++ err = -ENODEV;
++ goto exit;
++ }
++
++ if (!(client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL))) {
++ err = -ENOMEM;
++ goto exit;
++ }
++
++ /* I2C client */
++ client->addr = address;
++ client->driver = &rs5c372_driver;
++ client->adapter = adapter;
++
++ strlcpy(client->name, rs5c372_driver.driver.name, I2C_NAME_SIZE);
++
++ /* Inform the i2c layer */
++ if ((err = i2c_attach_client(client)))
++ goto exit_kfree;
++
++ dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
++
++ rtc = rtc_device_register(rs5c372_driver.driver.name, &client->dev,
++ &rs5c372_rtc_ops, THIS_MODULE);
++
++ if (IS_ERR(rtc)) {
++ err = PTR_ERR(rtc);
++ dev_err(&client->dev,
++ "unable to register the class device\n");
++ goto exit_detach;
++ }
++
++ i2c_set_clientdata(client, rtc);
++
++ device_create_file(&client->dev, &dev_attr_trim);
++ device_create_file(&client->dev, &dev_attr_osc);
++
++ return 0;
++
++exit_detach:
++ i2c_detach_client(client);
++
++exit_kfree:
++ kfree(client);
++
++exit:
++ return err;
++}
++
++static int rs5c372_detach(struct i2c_client *client)
++{
++ int err;
++ struct rtc_device *rtc = i2c_get_clientdata(client);
++
++ dev_dbg(&client->dev, "%s\n", __FUNCTION__);
++
++ if (rtc)
++ rtc_device_unregister(rtc);
++
++ if ((err = i2c_detach_client(client)))
++ return err;
++
++ kfree(client);
++
++ return 0;
++}
++
++static __init int rs5c372_init(void)
++{
++ return i2c_add_driver(&rs5c372_driver);
++}
++
++static __exit void rs5c372_exit(void)
++{
++ i2c_del_driver(&rs5c372_driver);
++}
++
++module_init(rs5c372_init);
++module_exit(rs5c372_exit);
++
++MODULE_AUTHOR(
++ "Pavel Mironchik <pmironchik@optifacio.net>, "
++ "Alessandro Zummo <a.zummo@towertech.it>");
++MODULE_DESCRIPTION("Ricoh RS5C372 RTC driver");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/50-hwmon-ad741x.patch b/packages/linux/ixp4xx-kernel/2.6.16/50-hwmon-ad741x.patch
new file mode 100644
index 0000000000..9d0a35b3fa
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/50-hwmon-ad741x.patch
@@ -0,0 +1,378 @@
+---
+ drivers/hwmon/Kconfig | 10 +
+ drivers/hwmon/Makefile | 1
+ drivers/hwmon/ad741x.c | 340 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 351 insertions(+)
+
+--- linux-ixp4xx.orig/drivers/hwmon/Makefile 2006-02-19 17:45:45.000000000 +0100
++++ linux-ixp4xx/drivers/hwmon/Makefile 2006-02-19 17:46:12.000000000 +0100
+@@ -44,6 +44,7 @@ obj-$(CONFIG_SENSORS_VIA686A) += via686a
+ obj-$(CONFIG_SENSORS_VT8231) += vt8231.o
+ obj-$(CONFIG_SENSORS_W83627EHF) += w83627ehf.o
+ obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o
++obj-$(CONFIG_SENSORS_AD741X) += ad741x.o
+
+ ifeq ($(CONFIG_HWMON_DEBUG_CHIP),y)
+ EXTRA_CFLAGS += -DDEBUG
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/hwmon/ad741x.c 2006-02-19 17:45:59.000000000 +0100
+@@ -0,0 +1,340 @@
++/*
++ * An hwmon driver for the Analog Devices AD7417/18
++ * Copyright 2006 Tower Technologies
++ *
++ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ *
++ * Based on lm75.c
++ * Copyright 1998-99 Frodo Looijaard <frodol@dds.nl>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ */
++
++#include <linux/module.h>
++#include <linux/jiffies.h>
++#include <linux/i2c.h>
++#include <linux/hwmon.h>
++#include <linux/err.h>
++#include <linux/mutex.h>
++
++#define DRV_VERSION "0.1"
++
++/* straight from the datasheet */
++#define AD741X_TEMP_MIN (-55000)
++#define AD741X_TEMP_MAX 125000
++
++/* Addresses to scan */
++static unsigned short normal_i2c[] = { 0x28, 0x29, 0x2A, 0x2B, 0x2C,
++ 0x2D, 0x2E, 0x2F, I2C_CLIENT_END };
++
++/* Insmod parameters */
++I2C_CLIENT_INSMOD;
++
++/* AD741X registers */
++#define AD741X_REG_TEMP 0x00
++#define AD741X_REG_CONF 0x01
++#define AD741X_REG_TEMP_HYST 0x02
++#define AD741X_REG_TEMP_OS 0x03
++#define AD741X_REG_ADC 0x04
++#define AD741X_REG_CONF2 0x05
++
++#define AD741X_REG_ADC_CH(x) (x << 5)
++
++#define AD741X_CH_TEMP AD741X_REG_ADC_CH(0)
++#define AD741X_CH_AIN1 AD741X_REG_ADC_CH(1)
++#define AD741X_CH_AIN2 AD741X_REG_ADC_CH(2)
++#define AD741X_CH_AIN3 AD741X_REG_ADC_CH(3)
++#define AD741X_CH_AIN4 AD741X_REG_ADC_CH(4)
++
++struct ad741x_data {
++ struct i2c_client client;
++ struct class_device *class_dev;
++ struct mutex lock;
++ char valid; /* !=0 if following fields are valid */
++ unsigned long last_updated; /* In jiffies */
++ u16 temp_input; /* Register values */
++ u16 temp_max;
++ u16 temp_hyst;
++ u16 in1;
++ u16 in2;
++ u16 in3;
++ u16 in4;
++};
++
++static int ad741x_attach_adapter(struct i2c_adapter *adapter);
++static int ad741x_detect(struct i2c_adapter *adapter, int address, int kind);
++static int ad741x_detach_client(struct i2c_client *client);
++
++static struct i2c_driver ad741x_driver = {
++ .driver = {
++ .name = "ad741x",
++ },
++ .attach_adapter = ad741x_attach_adapter,
++ .detach_client = ad741x_detach_client,
++};
++
++/* TEMP: 0.001C/bit (-55C to +125C)
++ * REG: (0.5C/bit, two's complement) << 7
++ */
++static inline u16 AD741X_TEMP_TO_REG(int temp)
++{
++ int ntemp = SENSORS_LIMIT(temp, AD741X_TEMP_MIN, AD741X_TEMP_MAX);
++ ntemp += (ntemp < 0 ? -250 : 250);
++ return (u16)((ntemp / 500) << 7);
++}
++
++static inline int AD741X_TEMP_FROM_REG(u16 reg)
++{
++ /* use integer division instead of equivalent right shift to
++ * guarantee arithmetic shift and preserve the sign
++ */
++ return ((s16)reg / 128) * 500;
++}
++
++/* All registers are word-sized, except for the configuration registers.
++ * AD741X uses a high-byte first convention, which is exactly opposite to
++ * the usual practice.
++ */
++static int ad741x_read(struct i2c_client *client, u8 reg)
++{
++ if (reg == AD741X_REG_CONF || reg == AD741X_REG_CONF2)
++ return i2c_smbus_read_byte_data(client, reg);
++ else
++ return swab16(i2c_smbus_read_word_data(client, reg));
++}
++
++static int ad741x_write(struct i2c_client *client, u8 reg, u16 value)
++{
++ if (reg == AD741X_REG_CONF || reg == AD741X_REG_CONF2)
++ return i2c_smbus_write_byte_data(client, reg, value);
++ else
++ return i2c_smbus_write_word_data(client, reg, swab16(value));
++}
++
++static void ad741x_init_client(struct i2c_client *client)
++{
++ /* Enable if in shutdown mode */
++ int reg = ad741x_read(client, AD741X_REG_CONF);
++ if (reg >= 0 && (reg & 0x01))
++ ad741x_write(client, AD741X_REG_CONF, reg & 0xfe);
++}
++
++static struct ad741x_data *ad741x_update_device(struct device *dev)
++{
++ struct i2c_client *client = to_i2c_client(dev);
++ struct ad741x_data *data = i2c_get_clientdata(client);
++
++ mutex_lock(&data->lock);
++
++ if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
++ || !data->valid) {
++ u8 cfg;
++ dev_dbg(&client->dev, "starting ad741x update\n");
++
++ data->temp_input = ad741x_read(client, AD741X_REG_TEMP);
++ data->temp_max = ad741x_read(client, AD741X_REG_TEMP_OS);
++ data->temp_hyst = ad741x_read(client, AD741X_REG_TEMP_HYST);
++
++ /* read config register and clear channel bits */
++ cfg = ad741x_read(client, AD741X_REG_CONF);
++ cfg &= 0x1F;
++
++ ad741x_write(client, AD741X_REG_CONF, cfg | AD741X_CH_AIN1);
++ data->in1 = ad741x_read(client, AD741X_REG_ADC);
++
++ ad741x_write(client, AD741X_REG_CONF, cfg | AD741X_CH_AIN2);
++ data->in2 = ad741x_read(client, AD741X_REG_ADC);
++
++ ad741x_write(client, AD741X_REG_CONF, cfg | AD741X_CH_AIN3);
++ data->in3 = ad741x_read(client, AD741X_REG_ADC);
++
++ ad741x_write(client, AD741X_REG_CONF, cfg | AD741X_CH_AIN4);
++ data->in4 = ad741x_read(client, AD741X_REG_ADC);
++
++ /* restore old configuration value */
++ ad741x_write(client, AD741X_REG_CONF, cfg);
++
++ data->last_updated = jiffies;
++ data->valid = 1;
++ }
++
++ mutex_unlock(&data->lock);
++
++ return data;
++}
++
++#define show(value) \
++static ssize_t show_##value(struct device *dev, struct device_attribute *attr, char *buf) \
++{ \
++ struct ad741x_data *data = ad741x_update_device(dev); \
++ return sprintf(buf, "%d\n", AD741X_TEMP_FROM_REG(data->value)); \
++}
++show(temp_max);
++show(temp_hyst);
++show(temp_input);
++
++#define show_adc(value) \
++static ssize_t show_##value(struct device *dev, struct device_attribute *attr, char *buf) \
++{ \
++ struct ad741x_data *data = ad741x_update_device(dev); \
++ return sprintf(buf, "%d\n", data->value >> 6); \
++}
++
++show_adc(in1);
++show_adc(in2);
++show_adc(in3);
++show_adc(in4);
++
++#define set(value, reg) \
++static ssize_t set_##value(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) \
++{ \
++ struct i2c_client *client = to_i2c_client(dev); \
++ struct ad741x_data *data = i2c_get_clientdata(client); \
++ int temp = simple_strtoul(buf, NULL, 10); \
++ \
++ mutex_lock(&data->lock); \
++ data->value = AD741X_TEMP_TO_REG(temp); \
++ ad741x_write(client, reg, data->value); \
++ mutex_unlock(&data->lock); \
++ return count; \
++}
++set(temp_max, AD741X_REG_TEMP_OS);
++set(temp_hyst, AD741X_REG_TEMP_HYST);
++
++static DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_max, set_temp_max);
++static DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, show_temp_hyst, set_temp_hyst);
++static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL);
++
++static DEVICE_ATTR(in1, S_IRUGO, show_in1, NULL);
++static DEVICE_ATTR(in2, S_IRUGO, show_in2, NULL);
++static DEVICE_ATTR(in3, S_IRUGO, show_in3, NULL);
++static DEVICE_ATTR(in4, S_IRUGO, show_in4, NULL);
++
++static int ad741x_attach_adapter(struct i2c_adapter *adapter)
++{
++ if (!(adapter->class & I2C_CLASS_HWMON))
++ return 0;
++ return i2c_probe(adapter, &addr_data, ad741x_detect);
++}
++
++static int ad741x_detect(struct i2c_adapter *adapter, int address, int kind)
++{
++ struct i2c_client *client;
++ struct ad741x_data *data;
++ int err = 0;
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
++ I2C_FUNC_SMBUS_WORD_DATA))
++ goto exit;
++
++ if (!(data = kzalloc(sizeof(struct ad741x_data), GFP_KERNEL))) {
++ err = -ENOMEM;
++ goto exit;
++ }
++
++ client = &data->client;
++ client->addr = address;
++ client->adapter = adapter;
++ client->driver = &ad741x_driver;
++ client->flags = 0;
++
++ i2c_set_clientdata(client, data);
++
++ mutex_init(&data->lock);
++
++ /* AD7418 has a curious behaviour on registers 6 and 7. They
++ * both always read 0xC071 and are not documented on the datasheet.
++ * We use them to detect the chip.
++ */
++ if (kind < 0) {
++ int reg;
++
++ reg = i2c_smbus_read_word_data(client, 0x06);
++ if (reg != 0xC071) {
++ dev_dbg(&adapter->dev, "failed detection at %d: %x\n", 6, reg);
++ err = -ENODEV;
++ goto exit_free;
++ }
++
++ reg = i2c_smbus_read_word_data(client, 0x07);
++ if (reg != 0xC071) {
++ dev_dbg(&adapter->dev, "failed detection at %d: %x\n", 7, reg);
++ err = -ENODEV;
++ goto exit_free;
++ }
++
++ reg = i2c_smbus_read_byte_data(client, AD741X_REG_CONF2);
++
++ /* bits 0-5 must be at 0 */
++ if (reg & 0x3F) {
++ dev_dbg(&adapter->dev, "failed detection at %d: %x\n",
++ AD741X_REG_CONF2, reg);
++ err = -ENODEV;
++ goto exit_free;
++ }
++ }
++
++ strlcpy(client->name, ad741x_driver.driver.name, I2C_NAME_SIZE);
++
++ if ((err = i2c_attach_client(client)))
++ goto exit_free;
++
++ dev_info(&client->dev, "chip found, driver version " DRV_VERSION "\n");
++
++ /* Initialize the AD741X chip */
++ ad741x_init_client(client);
++
++ /* Register sysfs hooks */
++ data->class_dev = hwmon_device_register(&client->dev);
++ if (IS_ERR(data->class_dev)) {
++ err = PTR_ERR(data->class_dev);
++ goto exit_detach;
++ }
++
++ device_create_file(&client->dev, &dev_attr_temp1_max);
++ device_create_file(&client->dev, &dev_attr_temp1_max_hyst);
++ device_create_file(&client->dev, &dev_attr_temp1_input);
++ device_create_file(&client->dev, &dev_attr_in1);
++ device_create_file(&client->dev, &dev_attr_in2);
++ device_create_file(&client->dev, &dev_attr_in3);
++ device_create_file(&client->dev, &dev_attr_in4);
++
++ return 0;
++
++exit_detach:
++ i2c_detach_client(client);
++exit_free:
++ kfree(data);
++exit:
++ return err;
++}
++
++static int ad741x_detach_client(struct i2c_client *client)
++{
++ struct ad741x_data *data = i2c_get_clientdata(client);
++ hwmon_device_unregister(data->class_dev);
++ i2c_detach_client(client);
++ kfree(data);
++ return 0;
++}
++
++static int __init ad741x_init(void)
++{
++ return i2c_add_driver(&ad741x_driver);
++}
++
++static void __exit ad741x_exit(void)
++{
++ i2c_del_driver(&ad741x_driver);
++}
++
++MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
++MODULE_DESCRIPTION("AD741X driver");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++module_init(ad741x_init);
++module_exit(ad741x_exit);
+--- linux-ixp4xx.orig/drivers/hwmon/Kconfig 2006-02-19 17:45:45.000000000 +0100
++++ linux-ixp4xx/drivers/hwmon/Kconfig 2006-02-19 17:47:07.000000000 +0100
+@@ -433,6 +433,16 @@ config SENSORS_W83627EHF
+ This driver can also be built as a module. If so, the module
+ will be called w83627ehf.
+
++config SENSORS_AD741X
++ tristate "Analog Devices AD7417/18"
++ depends on HWMON && I2C && EXPERIMENTAL
++ help
++ If you say yes here you get support for the Analog Devices AD7417
++ and AD7418 chips.
++
++ This driver can also be built as a module. If so, the module
++ will be called ad741x.
++
+ config SENSORS_HDAPS
+ tristate "IBM Hard Drive Active Protection System (hdaps)"
+ depends on HWMON && INPUT && X86
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/50-i2c-bus-ixp4xx-hwmon.patch b/packages/linux/ixp4xx-kernel/2.6.16/50-i2c-bus-ixp4xx-hwmon.patch
new file mode 100644
index 0000000000..d7fb8e55dc
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/50-i2c-bus-ixp4xx-hwmon.patch
@@ -0,0 +1,14 @@
+---
+ drivers/i2c/busses/i2c-ixp4xx.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- linux-ixp4xx.orig/drivers/i2c/busses/i2c-ixp4xx.c 2006-02-11 15:18:29.000000000 +0100
++++ linux-ixp4xx/drivers/i2c/busses/i2c-ixp4xx.c 2006-02-18 16:20:12.000000000 +0100
+@@ -126,6 +126,7 @@ static int ixp4xx_i2c_probe(struct platf
+ drv_data->algo_data.timeout = 100;
+
+ drv_data->adapter.id = I2C_HW_B_IXP4XX;
++ drv_data->adapter.class = I2C_CLASS_HWMON;
+ strlcpy(drv_data->adapter.name, plat_dev->dev.driver->name,
+ I2C_NAME_SIZE);
+ drv_data->adapter.algo_data = &drv_data->algo_data;
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/61-ixp4xx-beeper-irq.patch b/packages/linux/ixp4xx-kernel/2.6.16/61-ixp4xx-beeper-irq.patch
deleted file mode 100644
index 4a97bf57a5..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/61-ixp4xx-beeper-irq.patch
+++ /dev/null
@@ -1,13 +0,0 @@
- drivers/input/misc/ixp4xx-beeper.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- linux-nslu2.orig/drivers/input/misc/ixp4xx-beeper.c 2006-02-06 20:37:19.000000000 +0100
-+++ linux-nslu2/drivers/input/misc/ixp4xx-beeper.c 2006-02-06 22:04:59.000000000 +0100
-@@ -19,6 +19,7 @@
- #include <linux/input.h>
- #include <linux/delay.h>
- #include <linux/platform_device.h>
-+#include <linux/interrupt.h>
- #include <asm/hardware.h>
-
- MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/61-nslu2-beeper.patch b/packages/linux/ixp4xx-kernel/2.6.16/61-nslu2-beeper.patch
deleted file mode 100644
index cc2e4ef69f..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/61-nslu2-beeper.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-NSLU2 beeper support.
-
-Signed-off-by: Alessandro Zummo <a.zummo@towertech.it>
-
- arch/arm/mach-ixp4xx/nslu2-setup.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 20:37:01.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:21:17.000000000 +0100
-@@ -52,6 +52,12 @@ static struct platform_device nslu2_i2c_
- .num_resources = 0,
- };
-
-+static struct platform_device nslu2_beeper = {
-+ .name = "ixp4xx-beeper",
-+ .id = NSLU2_GPIO_BUZZ,
-+ .num_resources = 0,
-+};
-+
- static struct resource nslu2_uart_resources[] = {
- {
- .start = IXP4XX_UART1_BASE_PHYS,
-@@ -99,6 +105,7 @@ static struct platform_device *nslu2_dev
- &nslu2_i2c_controller,
- &nslu2_flash,
- &nslu2_uart,
-+ &nslu2_beeper,
- };
-
- static void nslu2_power_off(void)
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/70-artop-latency.patch b/packages/linux/ixp4xx-kernel/2.6.16/70-artop-latency.patch
new file mode 100644
index 0000000000..ad3ad11999
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/70-artop-latency.patch
@@ -0,0 +1,27 @@
+On some controllers the pci latency timer
+default value does not allow burst mode.
+This patch fixes the latency value if it
+is <= 0x80.
+
+Signed-off-by: Alessandro Zummo <a.zummo@towertech.it>
+
+---
+ drivers/scsi/pata_artop.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- linux-ixp4xx.orig/drivers/scsi/pata_artop.c 2006-02-21 02:53:43.000000000 +0100
++++ linux-ixp4xx/drivers/scsi/pata_artop.c 2006-02-21 02:54:01.000000000 +0100
+@@ -450,6 +450,13 @@ static int artop_init_one (struct pci_de
+ 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);
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/75-dsmg600.patch b/packages/linux/ixp4xx-kernel/2.6.16/75-dsmg600.patch
new file mode 100644
index 0000000000..05d467d0be
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/75-dsmg600.patch
@@ -0,0 +1,353 @@
+---
+ arch/arm/mach-ixp4xx/Kconfig | 8 +
+ arch/arm/mach-ixp4xx/Makefile | 1
+ arch/arm/mach-ixp4xx/dsmg600-pci.c | 74 +++++++++++++++++
+ arch/arm/mach-ixp4xx/dsmg600-setup.c | 139 +++++++++++++++++++++++++++++++++
+ arch/arm/tools/mach-types | 1
+ include/asm-arm/arch-ixp4xx/dsmg600.h | 62 ++++++++++++++
+ include/asm-arm/arch-ixp4xx/hardware.h | 1
+ include/asm-arm/arch-ixp4xx/irqs.h | 10 ++
+ 8 files changed, 296 insertions(+)
+
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/Kconfig 2006-02-23 18:29:02.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/Kconfig 2006-02-23 18:29:11.000000000 +0100
+@@ -85,6 +85,14 @@ config MACH_NAS100D
+ NAS 100d device. For more information on this platform,
+ see http://www.nslu2-linux.org/wiki/NAS100d/HomePage
+
++config MACH_DSMG600
++ bool
++ prompt "D-Link DSM-G600"
++ help
++ Say 'Y' here if you want your kernel to support D-Link's
++ DSM-G600 device. For more information on this platform,
++ see http://www.nslu2-linux.org/
++
+ #
+ # Avila and IXDP share the same source for now. Will change in future
+ #
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/dsmg600-pci.c 2006-02-23 18:29:11.000000000 +0100
+@@ -0,0 +1,74 @@
++/*
++ * DSM-G600 board-level PCI initialization
++ *
++ * Copyright (c) 2006 Tower Technologies
++ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ *
++ * 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 dsmg600_pci_preinit(void)
++{
++ set_irq_type(IRQ_DSMG600_PCI_INTA, IRQT_LOW);
++ set_irq_type(IRQ_DSMG600_PCI_INTB, IRQT_LOW);
++ set_irq_type(IRQ_DSMG600_PCI_INTC, IRQT_LOW);
++ set_irq_type(IRQ_DSMG600_PCI_INTD, IRQT_LOW);
++ set_irq_type(IRQ_DSMG600_PCI_INTE, IRQT_LOW);
++ set_irq_type(IRQ_DSMG600_PCI_INTF, IRQT_LOW);
++
++ ixp4xx_pci_preinit();
++}
++
++static int __init dsmg600_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
++{
++ static int pci_irq_table[DSMG600_PCI_MAX_DEV][DSMG600_PCI_IRQ_LINES] =
++ {
++ { IRQ_DSMG600_PCI_INTE, -1, -1 },
++ { IRQ_DSMG600_PCI_INTA, -1, -1 },
++ { IRQ_DSMG600_PCI_INTB, IRQ_DSMG600_PCI_INTC, IRQ_DSMG600_PCI_INTD },
++ { IRQ_DSMG600_PCI_INTF, -1, -1 },
++ };
++
++ int irq = -1;
++
++ if (slot >= 1 && slot <= DSMG600_PCI_MAX_DEV &&
++ pin >= 1 && pin <= DSMG600_PCI_IRQ_LINES)
++ irq = pci_irq_table[slot-1][pin-1];
++
++ return irq;
++}
++
++struct hw_pci __initdata dsmg600_pci = {
++ .nr_controllers = 1,
++ .preinit = dsmg600_pci_preinit,
++ .swizzle = pci_std_swizzle,
++ .setup = ixp4xx_setup,
++ .scan = ixp4xx_scan_bus,
++ .map_irq = dsmg600_map_irq,
++};
++
++int __init dsmg600_pci_init(void)
++{
++ if (machine_is_dsmg600())
++ pci_common_init(&dsmg600_pci);
++
++ return 0;
++}
++
++subsys_initcall(dsmg600_pci_init);
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/dsmg600-setup.c 2006-02-23 18:29:11.000000000 +0100
+@@ -0,0 +1,139 @@
++/*
++ * DSM-G600 board-setup
++ *
++ * Copyright (c) 2006 Tower Technologies
++ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ *
++ * based ixdp425-setup.c:
++ * Copyright (C) 2003-2004 MontaVista Software, Inc.
++ *
++ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ * Maintainers: http://www.nslu2-linux.org/
++ */
++
++#include <linux/kernel.h>
++#include <linux/serial.h>
++#include <linux/serial_8250.h>
++
++#include <asm/mach-types.h>
++#include <asm/mach/arch.h>
++#include <asm/mach/flash.h>
++
++static struct flash_platform_data dsmg600_flash_data = {
++ .map_name = "cfi_probe",
++ .width = 2,
++};
++
++static struct resource dsmg600_flash_resource = {
++ .flags = IORESOURCE_MEM,
++};
++
++static struct platform_device dsmg600_flash = {
++ .name = "IXP4XX-Flash",
++ .id = 0,
++ .dev.platform_data = &dsmg600_flash_data,
++ .num_resources = 1,
++ .resource = &dsmg600_flash_resource,
++};
++
++static struct ixp4xx_i2c_pins dsmg600_i2c_gpio_pins = {
++ .sda_pin = DSMG600_SDA_PIN,
++ .scl_pin = DSMG600_SCL_PIN,
++};
++
++static struct platform_device dsmg600_i2c_controller = {
++ .name = "IXP4XX-I2C",
++ .id = 0,
++ .dev.platform_data = &dsmg600_i2c_gpio_pins,
++ .num_resources = 0,
++};
++
++static struct resource dsmg600_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 dsmg600_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 dsmg600_uart = {
++ .name = "serial8250",
++ .id = PLAT8250_DEV_PLATFORM,
++ .dev.platform_data = dsmg600_uart_data,
++ .num_resources = 2,
++ .resource = dsmg600_uart_resources,
++};
++
++static struct platform_device *dsmg600_devices[] __initdata = {
++ &dsmg600_i2c_controller,
++ &dsmg600_flash,
++ &dsmg600_uart,
++};
++
++static void dsmg600_power_off(void)
++{
++ /* enable the pwr cntl gpio */
++// gpio_line_config(DSMG600_GPIO_PWROFF, IXP4XX_GPIO_OUT);
++
++ /* poweroff */
++// gpio_line_set(DSMG600_GPIO_PWROFF, IXP4XX_GPIO_HIGH);
++}
++
++static void __init dsmg600_init(void)
++{
++ /* The DSM-G600 has a 33MHz crystal on board - 1.01% different
++ * from the typical value.
++ */
++
++#ifndef FREQ
++ ixp4xx_set_board_tick_rate(66000000);
++#endif
++
++ ixp4xx_sys_init();
++
++ dsmg600_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
++ dsmg600_flash_resource.end =
++ IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
++
++ pm_power_off = dsmg600_power_off;
++
++ platform_add_devices(dsmg600_devices, ARRAY_SIZE(dsmg600_devices));
++}
++
++MACHINE_START(DSMG600, "D-Link DSM-G600")
++ /* Maintainer: www.nslu2-linux.org */
++ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
++ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC,
++ .boot_params = 0x00000100,
++ .map_io = ixp4xx_map_io,
++ .init_irq = ixp4xx_init_irq,
++ .timer = &ixp4xx_timer,
++ .init_machine = dsmg600_init,
++MACHINE_END
+--- linux-ixp4xx.orig/arch/arm/tools/mach-types 2006-02-23 18:29:02.000000000 +0100
++++ linux-ixp4xx/arch/arm/tools/mach-types 2006-02-23 18:29:39.000000000 +0100
+@@ -969,3 +969,4 @@ mxc300_30ads MACH_MXC30030ADS MXC30030A
+ fujitsu_wimaxsoc MACH_FUJITSU_WIMAXSOC FUJITSU_WIMAXSOC 956
+ dualpcmodem MACH_DUALPCMODEM DUALPCMODEM 957
+ gesbc9312 MACH_GESBC9312 GESBC9312 958
++dsmg600 MACH_DSMG600 DSMG600 964
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/dsmg600.h 2006-02-23 18:29:11.000000000 +0100
+@@ -0,0 +1,62 @@
++/*
++ * DSM-G600 platform specific definitions
++ *
++ * Copyright (c) 2006 Tower Technologies
++ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ *
++ * 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 DSMG600_SDA_PIN 5
++#define DSMG600_SCL_PIN 4
++
++/*
++ * DSMG600 PCI IRQs
++ */
++#define DSMG600_PCI_MAX_DEV 4
++#define DSMG600_PCI_IRQ_LINES 3
++
++
++/* PCI controller GPIO to IRQ pin mappings */
++#define DSMG600_PCI_INTA_PIN 11
++#define DSMG600_PCI_INTB_PIN 10
++#define DSMG600_PCI_INTC_PIN 9
++#define DSMG600_PCI_INTD_PIN 8
++#define DSMG600_PCI_INTE_PIN 7
++#define DSMG600_PCI_INTF_PIN 6
++
++/* GPIO */
++
++#define DSMG600_GPIO0 0
++#define DSMG600_GPIO1 1
++#define DSMG600_GPIO2 2
++#define DSMG600_GPIO3 3
++#define DSMG600_GPIO4 4
++#define DSMG600_GPIO5 5
++#define DSMG600_GPIO6 6
++#define DSMG600_GPIO7 7
++#define DSMG600_GPIO8 8
++#define DSMG600_GPIO9 9
++#define DSMG600_GPIO10 10
++#define DSMG600_GPIO11 11
++#define DSMG600_GPIO12 12
++#define DSMG600_GPIO13 13
++#define DSMG600_GPIO14 14
++#define DSMG600_GPIO15 15
++
++#define DSMG600_GPIO_PWRBTN DSMG600_GPIO15 /* power */
++#define DSMG600_GPIO_RSTBTN DSMG600_GPIO3 /* reset */
++
++#define DSMG600_IRQ_PWRBTN IRQ_IXP4XX_GPIO15
++#define DSMG600_IRQ_RSTBTN IRQ_IXP4XX_GPIO3
++
++#define DSMG600_GPIO_PWROFF DSMG600_GPIO2 /* power off */
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/Makefile 2006-02-23 18:29:02.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/Makefile 2006-02-23 18:29:11.000000000 +0100
+@@ -10,4 +10,5 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-
+ obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
+ obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
+ obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o
++obj-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o dsmg600-setup.o
+
+--- linux-ixp4xx.orig/include/asm-arm/arch-ixp4xx/hardware.h 2006-02-23 18:29:02.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/hardware.h 2006-02-23 18:29:11.000000000 +0100
+@@ -46,5 +46,6 @@ extern unsigned int processor_id;
+ #include "prpmc1100.h"
+ #include "nslu2.h"
+ #include "nas100d.h"
++#include "dsmg600.h"
+
+ #endif /* _ASM_ARCH_HARDWARE_H */
+--- linux-ixp4xx.orig/include/asm-arm/arch-ixp4xx/irqs.h 2006-02-23 18:29:02.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/irqs.h 2006-02-23 18:29:11.000000000 +0100
+@@ -109,4 +109,14 @@
+ #define IRQ_NAS100D_PCI_INTD IRQ_IXP4XX_GPIO8
+ #define IRQ_NAS100D_PCI_INTE IRQ_IXP4XX_GPIO7
+
++/*
++ * D-Link DSM-G600 board IRQs
++ */
++#define IRQ_DSMG600_PCI_INTA IRQ_IXP4XX_GPIO11
++#define IRQ_DSMG600_PCI_INTB IRQ_IXP4XX_GPIO10
++#define IRQ_DSMG600_PCI_INTC IRQ_IXP4XX_GPIO9
++#define IRQ_DSMG600_PCI_INTD IRQ_IXP4XX_GPIO8
++#define IRQ_DSMG600_PCI_INTE IRQ_IXP4XX_GPIO7
++#define IRQ_DSMG600_PCI_INTF IRQ_IXP4XX_GPIO6
++
+ #endif
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/80-nas100d-fix-i2c.patch b/packages/linux/ixp4xx-kernel/2.6.16/80-nas100d-fix-i2c.patch
deleted file mode 100644
index 6610cc0872..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/80-nas100d-fix-i2c.patch
+++ /dev/null
@@ -1,16 +0,0 @@
- include/asm-arm/arch-ixp4xx/nas100d.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- linux-nslu2.orig/include/asm-arm/arch-ixp4xx/nas100d.h 2006-02-06 20:37:38.000000000 +0100
-+++ linux-nslu2/include/asm-arm/arch-ixp4xx/nas100d.h 2006-02-09 14:33:49.000000000 +0100
-@@ -19,8 +19,8 @@
- #error "Do not include this directly, instead #include <asm/hardware.h>"
- #endif
-
--#define NAS100D_SDA_PIN 6
--#define NAS100D_SCL_PIN 5
-+#define NAS100D_SDA_PIN 5
-+#define NAS100D_SCL_PIN 6
-
- /*
- * NAS100D PCI IRQs
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/81-nslu2-power.patch b/packages/linux/ixp4xx-kernel/2.6.16/81-nslu2-power.patch
deleted file mode 100644
index eaa490ee01..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/81-nslu2-power.patch
+++ /dev/null
@@ -1,15 +0,0 @@
- arch/arm/mach-ixp4xx/nslu2-power.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-power.c 2006-02-06 20:37:01.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-power.c 2006-02-06 22:34:46.000000000 +0100
-@@ -77,6 +77,9 @@ static int __init nslu2_power_init(void)
-
- static void __exit nslu2_power_exit(void)
- {
-+ if (!(machine_is_nslu2()))
-+ return;
-+
- free_irq(NSLU2_RB_IRQ, NULL);
- free_irq(NSLU2_PB_IRQ, NULL);
- }
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/85-timer.patch b/packages/linux/ixp4xx-kernel/2.6.16/85-timer.patch
index 3ee670f1e9..83951c2574 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/85-timer.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/85-timer.patch
@@ -4,9 +4,9 @@
include/asm-arm/arch-ixp4xx/timex.h | 23 +++--
4 files changed, 176 insertions(+), 22 deletions(-)
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/common.c 2006-02-06 20:37:01.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/common.c 2006-02-06 22:34:55.000000000 +0100
-@@ -241,36 +241,165 @@ void __init ixp4xx_init_irq(void)
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/common.c 2006-02-23 18:27:49.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/common.c 2006-02-23 18:30:49.000000000 +0100
+@@ -247,36 +247,165 @@ void __init ixp4xx_init_irq(void)
* IXP4xx timer tick
* We use OS timer1 on the CPU for the timer tick and the timestamp
* counter as a source of real clock ticks to account for missed jiffies.
@@ -181,7 +181,7 @@
write_sequnlock(&xtime_lock);
-@@ -283,17 +412,30 @@ static struct irqaction ixp4xx_timer_irq
+@@ -289,17 +418,30 @@ static struct irqaction ixp4xx_timer_irq
.handler = ixp4xx_timer_interrupt,
};
@@ -214,13 +214,13 @@
/* Connect the interrupt handler and enable the interrupt */
setup_irq(IRQ_IXP4XX_TIMER1, &ixp4xx_timer_irq);
-@@ -356,4 +498,3 @@ void __init ixp4xx_sys_init(void)
+@@ -362,4 +504,3 @@ void __init ixp4xx_sys_init(void)
printk("IXP4xx: Using %luMiB expansion bus window size\n",
ixp4xx_exp_bus_size >> 20);
}
-
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:31:04.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:34:55.000000000 +0100
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-23 18:27:49.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-23 18:30:49.000000000 +0100
@@ -119,6 +119,11 @@ static void nslu2_power_off(void)
static void __init nslu2_init(void)
@@ -232,9 +232,9 @@
+
ixp4xx_sys_init();
- pm_power_off = nslu2_power_off;
---- linux-nslu2.orig/include/asm-arm/arch-ixp4xx/nslu2.h 2006-02-06 20:37:38.000000000 +0100
-+++ linux-nslu2/include/asm-arm/arch-ixp4xx/nslu2.h 2006-02-06 22:34:55.000000000 +0100
+ nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
+--- linux-ixp4xx.orig/include/asm-arm/arch-ixp4xx/nslu2.h 2006-02-23 18:27:12.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/nslu2.h 2006-02-23 18:30:49.000000000 +0100
@@ -35,11 +35,6 @@
#define NSLU2_PCI_INTD_PIN 8
@@ -247,8 +247,8 @@
/* GPIO */
#define NSLU2_GPIO0 0
---- linux-nslu2.orig/include/asm-arm/arch-ixp4xx/timex.h 2006-01-25 19:12:27.000000000 +0100
-+++ linux-nslu2/include/asm-arm/arch-ixp4xx/timex.h 2006-02-06 22:34:55.000000000 +0100
+--- linux-ixp4xx.orig/include/asm-arm/arch-ixp4xx/timex.h 2006-02-23 18:27:12.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/timex.h 2006-02-23 18:30:49.000000000 +0100
@@ -6,10 +6,23 @@
#include <asm/hardware.h>
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/91-maclist.patch b/packages/linux/ixp4xx-kernel/2.6.16/91-maclist.patch
index 3915c50cb7..34579183d0 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/91-maclist.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/91-maclist.patch
@@ -1,38 +1,59 @@
- drivers/net/Kconfig | 15 ++
+Ethernet MAC repository.
+
+Some ethernet controllers have no built-in way of obtaining an
+appropriate Ethernet MAC address. Such controllers have to be
+initialised in a board-specific way, depending on how the allocated
+MAC is stored. The MAC repository provides a set of APIs and a
+proc entry (/proc/net/maclist) to store MAC values from the board
+so that such drivers can obtain a MAC address without board-specific
+code.
+
+Signed-off-by: John Bowler <jbowler@acm.org>
+
+---
+ drivers/net/Kconfig | 15 +
drivers/net/Makefile | 1
- drivers/net/maclist.c | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++
- include/net/maclist.h | 23 +++
- 4 files changed, 353 insertions(+)
+ drivers/net/maclist.c | 465 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ include/net/maclist.h | 49 +++++
+ 4 files changed, 530 insertions(+)
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/include/net/maclist.h 2006-02-06 22:35:23.000000000 +0100
-@@ -0,0 +1,23 @@
-+#ifndef _MACLIST_H
-+#define _MACLIST_H 1
-+/*
-+ * Interfaces to the MAC repository
-+ */
-+/*
-+ * Add a single entry, returns 0 on success else an error
-+ * code. Must *not* be called from an interrupt handler.
-+ */
-+extern int maclist_add(const u8 id_to_add[6]);
-+
-+/*
-+ * Return the current entry count (valid in any context).
-+ */
-+extern int maclist_count(void);
-+
-+/*
-+ * Return the ID from the n'th entry (valid in any context),
-+ * returns 0 on success, -EINVAL if 'n' is out of range.
-+ */
-+extern int maclist_read(u8 (*buffer_for_id)[6], int index_of_id_to_return);
+--- linux-ixp4xx.orig/drivers/net/Kconfig 2006-02-23 18:27:12.000000000 +0100
++++ linux-ixp4xx/drivers/net/Kconfig 2006-02-23 18:30:54.000000000 +0100
+@@ -177,6 +177,21 @@ config NET_ETHERNET
+ kernel: saying N will just cause the configurator to skip all
+ the questions about Ethernet network cards. If unsure, say N.
+
++config MACLIST
++ tristate "Ethernet MAC repository"
++ depends on NET_ETHERNET
++ help
++ Some ethernet controllers have no built-in way of obtaining an
++ appropriate Ethernet MAC address. Such controllers have to be
++ initialised in a board-specific way, depending on how the allocated
++ MAC is stored. The MAC repository provides a set of APIs and a
++ proc entry (/proc/net/maclist) to store MAC values from the board
++ so that such drivers can obtain a MAC address without board-specific
++ code. You do not need to enable this device - it will be selected
++ automatically by any device which requires it. It is only useful
++ to enable it manually when building a device driver independently
++ of the kernel build.
+
-+#endif /*_MACLIST_H*/
+ config MII
+ tristate "Generic Media Independent Interface device support"
+ depends on NET_ETHERNET
+--- linux-ixp4xx.orig/drivers/net/Makefile 2006-02-23 18:27:12.000000000 +0100
++++ linux-ixp4xx/drivers/net/Makefile 2006-02-23 18:30:54.000000000 +0100
+@@ -74,6 +74,7 @@ obj-$(CONFIG_RIONET) += rionet.o
+ # end link order section
+ #
+
++obj-$(CONFIG_MACLIST) += maclist.o
+ obj-$(CONFIG_MII) += mii.o
+ obj-$(CONFIG_PHYLIB) += phy/
+
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-nslu2/drivers/net/maclist.c 2006-02-06 22:35:23.000000000 +0100
-@@ -0,0 +1,314 @@
++++ linux-ixp4xx/drivers/net/maclist.c 2006-02-23 18:30:54.000000000 +0100
+@@ -0,0 +1,465 @@
+/*
+ * drivers/net/maclist.c
+ *
@@ -61,15 +82,70 @@
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
-+ *
++ */
++
++/*
+ * External interfaces:
+ * Interfaces to linux kernel (and modules)
-+ * maclist_add: add a single MAC
++ * maclist_add: add a single MAC, sequenced with a single
++ * writer lock (reads may happen simultaneously
++ * because of the way the list is built)
+ * maclist_count: total number of MACs stored
-+ * maclist_read: read a MAC 0..(maclist_count-1)
++ * maclist_read: read a MAC 0..(maclist_count-1). Call this
++ * to get a specific MAC. If the argument is
++ * a new key and all the allocaed MACs have been
++ * assigned a random but valid MAC will be return
++ * (and this will be stored for later retrieval
++ * under the given key.)
++ *
++ * Sequencing:
++ * The MAC ids must be added before any driver tries to use them
++ * (this is obvious isn't it?) This can be made to happen by
++ * sequencing the initcalls correctly. The module or kernel
++ * parameters have been handled before any init call happens.
++ * The important trick here is to ensure that the platform
++ * initialises any devices with MAC ids *before* any devices
++ * which might use them.
++ *
++ * When this code is a module any other module which adds a
++ * MAC should be modprobed before modules for ethernet
++ * devices.
++ *
++ * The failure case is 'soft' - the device will get a valid, but
++ * random, MAC and the real allocated MACs will never get used.
++ * This can be seen by looking at the list of ids in sysfs (there
++ * will be extra, random, ones after the allocated ones).
++ *
++ * Recommendations:
++ * For ethernet drivers which are known to be the sole driver on
++ * the board (without a built in MAC) and where the number of
++ * devices driven is known simply use an index 0..(n-1) as a
++ * key for each of the n devices.
++ *
++ * This is the common case, it works where one driver handles
++ * multiple devices so long as the total number of devices can
++ * be determined reliably. It is sufficient merely to maintain
++ * a global count of the number of devices initialised so far,
++ * just so long as the initialisation order is consistent.
++ *
++ * When the driver is generic and the board may be populated with
++ * other devices which allocate MACs from the maclist pool and
++ * use different drivers create a random key and compile this into
++ * the code. Use this as the base for all devices from the driver
++ * (using a global device count for this driver if necessary).
++ *
++ * With the second strategy the assignment of MACs will depend on
++ * the order of initialisation of the different drivers. To avoid
++ * this provide a kernel (or module) command line parameter to
++ * specify a base index and (optional) count for each driver or
++ * pass in a (struct resource) with the start and end of the keys
++ * to pass to maclist_read. Either method allows the higher levels
++ * (boot loader or machine description) to specify which MACs in
++ * the list to assign to each device.
+ */
+#include <linux/module.h>
+#include <linux/moduleparam.h>
++#include <linux/spinlock.h>
+#include <linux/etherdevice.h>
+#include <linux/proc_fs.h>
+#include <linux/errno.h>
@@ -84,22 +160,27 @@
+
+typedef struct maclist_entry {
+ struct maclist_entry *next; /* Linked list, first first */
++ u32 key; /* count or key for this entry */
++ u16 flags;
+ u8 id[6]; /* 6 byte Ethernet MAC */
+} maclist_entry_t;
+
-+/* Access to this list is possible at any time - entries in
-+ * the list are never destroyed. Modification of the list is
-+ * safe only from the init code (i.e. modification must be
-+ * single threaded), but read from an interrupt at the same
-+ * time is possible and safe.
++/*
++ * flag definitions
+ */
++#define MACLIST_ALLOCATED 1
++#define MACLIST_RANDOM 2
++
++/* Access to this list is protected by a standard rwlock_t. */
+static maclist_entry_t *maclist_list = 0;
+
++static DEFINE_RWLOCK(maclist_lock);
++
+/*
+ * External interfaces.
+ *
+ * Add a single entry, returns 0 on success else an error
-+ * code. Must be single threaded.
++ * code. Checks for invalid addresses.
+ */
+int maclist_add(const u8 new_id[6]) {
+ maclist_entry_t *new_entry, **tail;
@@ -111,21 +192,27 @@
+ new_entry = kmalloc(sizeof *new_entry, GFP_KERNEL);
+ if (new_entry == 0)
+ return -ENOMEM;
-+ new_entry->next = 0;
++ new_entry->next = 0;
++ new_entry->key = 0;
++ new_entry->flags = 0;
+ memcpy(new_entry->id, new_id, sizeof new_entry->id);
+
+ tail = &maclist_list;
++
++ write_lock(&maclist_lock);
+ while (*tail != 0)
+ tail = &(*tail)->next;
+ *tail = new_entry;
++ write_unlock(&maclist_lock);
++
+ return 0;
+}
+EXPORT_SYMBOL(maclist_add);
+
+/*
-+ * Return the current entry count (valid in any context).
++ * Return the current entry count.
+ */
-+int maclist_count(void) {
++static int maclist_count_unlocked(void) {
+ maclist_entry_t *tail = maclist_list;
+ int count = 0;
+
@@ -136,27 +223,73 @@
+
+ return count;
+}
++
++int maclist_count(void) {
++ int count;
++
++ read_lock(&maclist_lock);
++ count = maclist_count_unlocked();
++ read_unlock(&maclist_lock);
++
++ return count;
++}
+EXPORT_SYMBOL(maclist_count);
+
+/*
-+ * Return the ID from the n'th entry (valid in any context),
-+ * returns 0 on success, -EINVAL if 'n' is out of range.
++ * Return the ID with the given key (the key is allocated
++ * to an entry if not found).
+ */
-+int maclist_read(u8 (*id)[6], int n) {
-+ maclist_entry_t *entry = maclist_list;
-+
-+ while (n > 0 && entry != 0) {
-+ --n;
-+ entry = entry->next;
-+ }
++void maclist_read(u8 (*id)[6], u32 key) {
++ int count, index;
++ maclist_entry_t *entry, *entry_to_allocate;
++
++ /* Do this under a write lock to avoid the SMP race
++ * where we find the key isn't assigned, drop the lock,
++ * have another CPU assign it, then assign it on this
++ * CPU too - very bad...
++ */
++ write_lock(&maclist_lock);
++ count = maclist_count_unlocked();
++ index = key % count; /* index of entry to allocate */
++ entry_to_allocate = 0;
++
++ entry = maclist_list;
++ while (entry != 0) {
++ if ((entry->flags & MACLIST_ALLOCATED) != 0) {
++ if (entry->key == key) {
++ /* Found it, use this entry. */
++ entry_to_allocate = entry;
++ break;
++ }
++ } else if (entry_to_allocate == 0 || count <= index) {
++ /* The algorithm is to try for entry
++ * (key % count), but if this isn't possible
++ * return the prior unallocated entry.
++ */
++ entry_to_allocate = entry;
++ }
++
++ ++count;
++ entry = entry->next;
++ }
+
-+ if (n == 0 && entry != 0) {
-+ memcpy(id, entry->id, sizeof *id);
-+ return 0;
++ /* Use entry_to_allocate, allocating it if necessary. */
++ if (entry_to_allocate != 0) {
++ if ((entry_to_allocate->flags & MACLIST_ALLOCATED) == 0) {
++ entry_to_allocate->key = key;
++ entry_to_allocate->flags |= MACLIST_ALLOCATED;
++ }
++ memcpy(id, entry_to_allocate->id, sizeof *id);
++ }
++ write_unlock(&maclist_lock);
++
++ if (entry_to_allocate == 0) {
++ /* No unallocated entries. Make a new one and return it. */
++ printk(KERN_INFO MACLIST_NAME ": adding random MAC for key 0x%x\n", key);
++ random_ether_addr(*id);
++ if (maclist_add(*id) == 0)
++ maclist_read(id, key);
+ }
-+
-+ printk(KERN_ERR MACLIST_NAME ": id does not exist\n");
-+ return -EINVAL;
+}
+EXPORT_SYMBOL(maclist_read);
+
@@ -165,7 +298,7 @@
+ * addresses, comma separated. (The parsing really should
+ * be somewhere central...)
+ */
-+static int __init maclist_setup(char *param) {
++static int __init maclist_setup(const char *param) {
+ int bytes = 0, seen_a_digit = 0;
+ u8 id[6];
+
@@ -219,7 +352,7 @@
+
+ if (bytes >= 12) {
+ int rc = maclist_add(id);
-+ if (rc)
++ if (unlikely(rc))
+ return rc;
+ bytes = 0;
+ seen_a_digit = 0;
@@ -233,10 +366,7 @@
+ return 0;
+}
+
-+/*
-+ * procfs support, if compiled in.
-+ */
-+#ifdef CONFIG_PROC_FS
++#if (defined CONFIG_PROC_FS) || (defined MODULE)
+/*
+ * Character device read
+ */
@@ -264,8 +394,13 @@
+ default: return ':';
+ }
+}
++#endif
+
+/*
++ * procfs support, if compiled in.
++ */
++#ifdef CONFIG_PROC_FS
++/*
+ * The extensively undocumented proc_read_t callback is implemented here.
+ * Go look in fs/proc/generic.c:
+ *
@@ -306,6 +441,49 @@
+#endif
+
+/*
++ * set works once, at init time (the param is set to 0444 below),
++ * get works any time.
++ */
++static int param_set_maclist(const char *val, struct kernel_param *kp)
++{
++ if (maclist_list == 0)
++ return maclist_setup(val);
++
++ printk(KERN_ERR MACLIST_NAME ": call to set parameters too late\n");
++ return -EINVAL;
++}
++
++static int param_get_maclist(char *buffer, struct kernel_param *kp)
++{
++#ifdef MODULE
++ off_t offset = 0;
++
++ /* buffer is only 4k! */
++ while (offset < 4096) {
++ int ch = maclist_getchar(offset++);
++ if (ch < 0) {
++ *buffer = 0;
++ return 0;
++ }
++ *buffer++ = ch;
++ }
++
++ *--buffer = 0;
++ return -ENOMEM;
++#else
++ return -EINVAL;
++#endif
++}
++
++/*
++ * module: the argument is ids=mac,mac,mac
++ * kernel command line: maclist.ids=mac,mac,mac
++ */
++#define param_check_maclist(name, p) __param_check(name, p, maclist_entry_t*)
++module_param_named(ids, maclist_list, maclist, 0444);
++MODULE_PARM_DESC(ids, "comma separated list of MAC ids\n");
++
++/*
+ * Finally, the init/exit functions.
+ */
+static void __exit maclist_exit(void)
@@ -314,8 +492,10 @@
+
+ remove_proc_entry(MACLIST_NAME, proc_net);
+
-+ list = maclist_list;
-+ maclist_list = 0;
++ write_lock(&maclist_lock);
++ list = maclist_list;
++ maclist_list = 0;
++ write_unlock(&maclist_lock);
+
+ while (list != 0) {
+ maclist_entry_t *head = list;
@@ -324,14 +504,6 @@
+ }
+}
+
-+#ifdef MODULE
-+static char ids[256];
-+module_param_string(ids, ids, sizeof ids, 0);
-+MODULE_PARM_DESC(ids, "comma separated list of MAC ids\n");
-+#else
-+__setup("maclist_ids=", maclist_setup);
-+#endif
-+
+static int __init maclist_init(void)
+{
+# ifdef MODULE
@@ -347,37 +519,55 @@
+
+module_init(maclist_init);
+module_exit(maclist_exit);
---- linux-nslu2.orig/drivers/net/Makefile 2006-02-06 22:35:18.000000000 +0100
-+++ linux-nslu2/drivers/net/Makefile 2006-02-06 22:35:23.000000000 +0100
-@@ -74,6 +74,7 @@ obj-$(CONFIG_RIONET) += rionet.o
- # end link order section
- #
-
-+obj-$(CONFIG_MACLIST) += maclist.o
- obj-$(CONFIG_MII) += mii.o
- obj-$(CONFIG_PHYLIB) += phy/
-
---- linux-nslu2.orig/drivers/net/Kconfig 2006-02-06 22:35:18.000000000 +0100
-+++ linux-nslu2/drivers/net/Kconfig 2006-02-06 22:35:23.000000000 +0100
-@@ -180,6 +180,21 @@ config NET_ETHERNET
- kernel: saying N will just cause the configurator to skip all
- the questions about Ethernet network cards. If unsure, say N.
-
-+config MACLIST
-+ tristate "Ethernet MAC repository"
-+ depends on NET_ETHERNET
-+ help
-+ Some ethernet controllers have no built-in way of obtaining an
-+ appropriate Ethernet MAC address. Such controllers have to be
-+ initialised in a board-specific way, depending on how the allocated
-+ MAC is stored. The MAC repository provides a set of APIs and a
-+ proc entry (/proc/net/maclist) to store MAC values from the board
-+ so that such drivers can obtain a MAC address without board-specific
-+ code. You do not need to enable this device - it will be selected
-+ automatically by any device which requires it. It is only useful
-+ to enable it manually when building a device driver independently
-+ of the kernel build.
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/include/net/maclist.h 2006-02-23 18:30:54.000000000 +0100
+@@ -0,0 +1,49 @@
++#ifndef _MACLIST_H
++#define _MACLIST_H 1
++/*
++ * Interfaces to the MAC repository
++ *
++ * Copyright (C) 2005 John Bowler
++ * Author: John Bowler <jbowler@acm.org>
++ * Maintainers: http://www.nslu2-linux.org/
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ */
+
- config MII
- tristate "Generic Media Independent Interface device support"
- depends on NET_ETHERNET
++/*
++ * Add a single entry, returns 0 on success else an error
++ * code. Allocates memory, claims and releases a write
++ * lock.
++ */
++extern int maclist_add(const u8 id_to_add[6]);
++
++/*
++ * Return the current entry count, claims and releases a
++ * read lock.
++ */
++extern int maclist_count(void);
++
++/*
++ * Return the ID from the given entry. Always succeeds.
++ * Claims and releases a write lock.
++ *
++ * If any entry has not been allocated for this key one
++ * is allocated. If there are no remaining unallocated
++ * entries a new one is created.
++ *
++ * If the value of the key is less than maclist_count()
++ * the entry indexed by the key (i.e. for key 'n' the
++ * n'th entry starting at 0) will be returned if available.
++ * Otherwise the entry to be returned will be unpredictable
++ * but consistent for a given value of maclist_count().
++ */
++extern void maclist_read(u8 (*buffer_for_id)[6],
++ u32 key_of_entry_to_return);
++
++/*
++ * See the implementation in drivers/net/maclist.c for
++ * more information.
++ */
++#endif /*_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 f08efacb64..298a3d92bb 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
@@ -2,8 +2,8 @@
arch/arm/mach-ixp4xx/nslu2-setup.c | 39 +++++++++++++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 2 deletions(-)
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/Kconfig 2006-02-06 22:35:26.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/Kconfig 2006-02-06 22:35:31.000000000 +0100
+--- 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.
@@ -15,8 +15,8 @@
help
Say 'Y' here if you want your kernel to support Linksys's
NSLU2 NAS device. For more information on this platform,
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:34:55.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:35:31.000000000 +0100
+--- 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
@@ -16,11 +16,14 @@
#include <linux/kernel.h>
#include <linux/serial.h>
@@ -81,4 +81,4 @@
+
ixp4xx_sys_init();
- pm_power_off = nslu2_power_off;
+ nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/93-loft-maclist.patch b/packages/linux/ixp4xx-kernel/2.6.16/93-loft-maclist.patch
deleted file mode 100644
index ffda1136ef..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/93-loft-maclist.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-add loft support for setting the maclist from EEPROM
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-
---- linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-setup.c 1970-01-01 00:00:00.000000000 +0000
-@@ -14,6 +14,7 @@
- #include <linux/serial.h>
- #include <linux/tty.h>
- #include <linux/serial_8250.h>
-+#include <linux/eeprom.h>
-
- #include <asm/types.h>
- #include <asm/setup.h>
-@@ -24,6 +25,8 @@
- #include <asm/mach/arch.h>
- #include <asm/mach/flash.h>
-
-+#include <net/maclist.h>
-+
- static struct flash_platform_data ixdp425_flash_data = {
- .map_name = "cfi_probe",
- .width = 2,
-@@ -188,9 +191,62 @@ MACHINE_END
- /*
- * Loft is functionally equivalent to Avila except that it has a
- * different number for the maximum PCI devices. The MACHINE
-- * structure below is identical to Avila except for the comment.
-+ * structure below is identical to Avila except for the and
-+ * the use of a loft specific init.
-+ *
-+ * The loft init registers a notifier on the on-board EEPROM to
-+ * detect the MAC addresses.
-+ * NOTE: this probably works for all Gateworks Avila boards and
-+ * maybe the ixdp425 too.
- */
- #ifdef CONFIG_MACH_LOFT
-+/*
-+ * When the EEPROM is added the MAC address are read from it.
-+ */
-+static void loft_eeprom_add(int address, int kind, struct kobject *kobj,
-+ struct bin_attribute *eeprom_attr) {
-+ /* The MACs are the first 12 bytes in the eeprom at address 0x51 */
-+ if (address == 0x51) {
-+ ssize_t retlen;
-+ char data[12];
-+
-+ /* Two Macs, one at 0, the other at 6, maclist_add will
-+ * complain if the ID is not a valid MAC.
-+ */
-+ retlen = eeprom_attr->read(kobj, data, 0, sizeof data);
-+ if (retlen >= 6) {
-+ u8 mac[6];
-+ memcpy(mac, data+0, sizeof mac);
-+ printk(KERN_INFO "LOFT MAC[0]: %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
-+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
-+ maclist_add(mac);
-+ }
-+ if (retlen >= 12) {
-+ u8 mac[6];
-+ memcpy(mac, data+6, sizeof mac);
-+ printk(KERN_INFO "LOFT MAC[1]: %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
-+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
-+ maclist_add(mac);
-+ }
-+ }
-+}
-+
-+static struct eeprom_notifier loft_eeprom_notifier = {
-+ .add = loft_eeprom_add
-+};
-+
-+static void __init loft_init(void)
-+{
-+ /* The EEPROM has two ethernet MACs embedded in it which we need,
-+ * that is all this notifier does.
-+ */
-+ register_eeprom_user(&loft_eeprom_notifier);
-+
-+ ixp4xx_sys_init();
-+
-+ platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices));
-+}
-+
- MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
- /* Maintainer: Tom Billman <kernel@giantshoulderinc.com> */
- .phys_ram = PHYS_OFFSET,
-@@ -200,7 +256,7 @@ MACHINE_START(LOFT, "Giant Shoulder Inc
- .init_irq = ixp4xx_init_irq,
- .timer = &ixp4xx_timer,
- .boot_params = 0x0100,
-- .init_machine = ixdp425_init,
-+ .init_machine = loft_init,
- MACHINE_END
- #endif
-
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/94-loft-setup.patch b/packages/linux/ixp4xx-kernel/2.6.16/94-loft-setup.patch
index e84508b85b..62efa77495 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/94-loft-setup.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/94-loft-setup.patch
@@ -1,20 +1,27 @@
- arch/arm/mach-ixp4xx/ixdp425-setup.c | 115 ++++++++++++++++++++++++++++++++++-
- 1 file changed, 112 insertions(+), 3 deletions(-)
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/ixdp425-setup.c 2006-02-10 18:03:51.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/ixdp425-setup.c 2006-02-10 18:06:40.000000000 +0100
-@@ -15,6 +15,7 @@
+---
+ arch/arm/mach-ixp4xx/ixdp425-setup.c | 145 +++++++++++++++++++++++++++++++++--
+ 1 file changed, 140 insertions(+), 5 deletions(-)
+
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/ixdp425-setup.c 2006-02-22 18:53:29.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/ixdp425-setup.c 2006-02-22 18:57:00.000000000 +0100
+@@ -15,7 +15,7 @@
#include <linux/tty.h>
#include <linux/serial_8250.h>
#include <linux/slab.h>
+-
+#include <linux/eeprom.h>
-
#include <asm/types.h>
#include <asm/setup.h>
-@@ -25,6 +26,10 @@
+ #include <asm/memory.h>
+@@ -25,6 +25,14 @@
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
++#ifdef CONFIG_LEDS_CLASS
++#include <linux/leds.h>
++#endif
++
+#ifdef CONFIG_MACLIST
+#include <net/maclist.h>
+#endif
@@ -22,11 +29,29 @@
static struct flash_platform_data ixdp425_flash_data = {
.map_name = "cfi_probe",
.width = 2,
-@@ -176,17 +181,122 @@ MACHINE_START(AVILA, "Gateworks Avila Ne
+@@ -176,22 +184,149 @@ MACHINE_START(AVILA, "Gateworks Avila Ne
MACHINE_END
#endif
+#ifdef CONFIG_MACH_LOFT
++#ifdef CONFIG_LEDS_CLASS
++static struct resource loft_led_resources[] = {
++ {
++ .name = "ready", /* green led, also J8 pin 7 */
++ .start = 3, /* FIXME use #define */
++ .end = 3,
++ .flags = IXP4XX_GPIO_LOW,
++ },
++};
++
++static struct platform_device loft_leds = {
++ .name = "IXP4XX-GPIO-LED",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(loft_led_resources),
++ .resource = loft_led_resources,
++};
++#endif
++
/*
* Loft is functionally equivalent to Avila except that it has a
* different number for the maximum PCI devices. The MACHINE
@@ -77,6 +102,22 @@
+};
+#endif
+
++static void __init loft_init(void)
++{
++ ixdp425_init();
++
++#ifdef CONFIG_LEDS_CLASS
++ /* We don't care if this fails. */
++ (void)platform_device_register(&loft_leds);
++#endif
++ /* The EEPROM has two ethernet MACs embedded in it which we need,
++ * that is all this notifier does.
++ */
++#ifdef CONFIG_SENSORS_EEPROM
++ register_eeprom_user(&loft_eeprom_notifier);
++#endif
++}
++
+/*
+ * Loft bootstrap may pass in parameters, if these contain an
+ * ATAG_MEM and it appears valid (not the 16MByte one in the
@@ -87,23 +128,15 @@
+static void __init loft_fixup(struct machine_desc *desc,
+ struct tag *tags, char **cmdline, struct meminfo *mi)
+{
-+ char saved_command_line[COMMAND_LINE_SIZE];
-+
+ /* Put Loft specific known-required-for-certain stuff here, leave
+ * a trailing space!
+ */
+ static char loft_command_line[] =
+ "root=/dev/mtdblock2 rw rootfstype=jffs2 init=/linuxrc "
-+ "rtc-ds1672.probe=0,0x68 ";
-+ const int len = (sizeof loft_command_line) - 1;
-+ int memtag = 0;
++ "rtc-ds1672.probe=0,0x68 "
++ CONFIG_CMDLINE;
+
-+ /* The EEPROM has two ethernet MACs embedded in it which we need,
-+ * that is all this notifier does.
-+ */
-+#ifdef CONFIG_SENSORS_EEPROM
-+ register_eeprom_user(&loft_eeprom_notifier);
-+#endif
++ int memtag = 0;
+
+ /* The Loft typically has one bank of 64MByte memory.
+ * NOTE: setting nr_banks != 0 causes kernel/setup.c to remove
@@ -132,10 +165,7 @@
+ /* A command line in the ATAG list will override this one,
+ * as is intended.
+ */
-+ memcpy(saved_command_line, *cmdline, COMMAND_LINE_SIZE);
-+ memcpy(*cmdline, loft_command_line, len);
-+ memcpy(*cmdline + len, saved_command_line, COMMAND_LINE_SIZE - len);
-+ *cmdline[COMMAND_LINE_SIZE-1] = 0;
++ strlcpy(*cmdline, loft_command_line, COMMAND_LINE_SIZE);
+}
+
MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
@@ -147,8 +177,9 @@
.map_io = ixp4xx_map_io,
.init_irq = ixp4xx_init_irq,
.timer = &ixp4xx_timer,
-@@ -194,4 +304,3 @@ MACHINE_START(LOFT, "Giant Shoulder Inc
- .init_machine = ixdp425_init,
+ .boot_params = 0x0100,
+- .init_machine = ixdp425_init,
++ .init_machine = loft_init,
MACHINE_END
#endif
-
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/94-nas100d-setup.patch b/packages/linux/ixp4xx-kernel/2.6.16/94-nas100d-setup.patch
index 15ddc44584..cdca7d2766 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/94-nas100d-setup.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/94-nas100d-setup.patch
@@ -41,7 +41,7 @@ Signed-off-by: John Bowler <jbowler@acm.org>
+ */
+static char nas100d_command_line[] __initdata =
+ "root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc "
-+ "rtc-pcf8563.force=0,0x51 "
++ "rtc-pcf8563.probe=0,0x51 "
+ CONFIG_CMDLINE;
+
+static void __init nas100d_fixup(struct machine_desc *desc,
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/94-nslu2-setup.patch b/packages/linux/ixp4xx-kernel/2.6.16/94-nslu2-setup.patch
index 6a1c8b9783..3effbc7711 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/94-nslu2-setup.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/94-nslu2-setup.patch
@@ -7,8 +7,8 @@ Signed-off-by: John Bowler <jbowler@acm.org>
arch/arm/mach-ixp4xx/nslu2-setup.c | 45 ++++++++++++++++++++++++++++++++++++-
1 file changed, 44 insertions(+), 1 deletion(-)
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:35:31.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-06 22:43:44.000000000 +0100
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-23 18:31:00.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-23 18:31:04.000000000 +0100
@@ -18,6 +18,8 @@
#include <linux/serial_8250.h>
#include <linux/mtd/mtd.h>
@@ -18,7 +18,7 @@ Signed-off-by: John Bowler <jbowler@acm.org>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/flash.h>
-@@ -170,11 +172,52 @@ static void __init nslu2_init(void)
+@@ -174,11 +176,52 @@ static void __init nslu2_init(void)
platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices));
}
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/950-leds-timer.patch b/packages/linux/ixp4xx-kernel/2.6.16/950-leds-timer.patch
deleted file mode 100644
index c44ef62ee7..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/950-leds-timer.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-Fix for a bug in led-triggers.c plus an update to the
-timer trigger code to allow for fractional frequency
-values and to correct the evaluation of frequency so
-that it is the actual frequency.
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-
---- linux-2.6.15/drivers/leds/led-triggers.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/leds/led-triggers.c 1970-01-01 00:00:00.000000000 +0000
-@@ -98,7 +98,7 @@ void led_trigger_event(struct led_trigge
- if (!trigger)
- return;
-
-- read_lock(&trigger->led_devs);
-+ read_lock(&trigger->leddev_list_lock);
- list_for_each(entry, &trigger->led_devs) {
- struct led_device *led_dev;
-
-@@ -107,7 +107,7 @@ void led_trigger_event(struct led_trigge
- led_set_brightness(led_dev, brightness);
- write_unlock(&led_dev->lock);
- }
-- read_unlock(&trigger->led_devs);
-+ read_unlock(&trigger->leddev_list_lock);
- }
-
- /* Caller must ensure led_dev->lock held for write */
---- linux-2.6.15/drivers/leds/ledtrig-timer.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/leds/ledtrig-timer.c 1970-01-01 00:00:00.000000000 +0000
-@@ -12,6 +12,7 @@
- */
-
- #include <linux/config.h>
-+#include <linux/ctype.h>
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
-@@ -61,21 +62,19 @@ static void led_timer_function(unsigned
- static void led_timer_setdata(struct led_device *led_dev, unsigned long duty, unsigned long frequency)
- {
- struct timer_trig_data *timer_data = led_dev->trigger_data;
-- signed long duty1;
--
-- if (frequency > 500)
-- frequency = 500;
-
- if (duty > 100)
- duty = 100;
-
-- duty1 = duty - 50;
--
- timer_data->duty = duty;
- timer_data->frequency = frequency;
- if (frequency != 0) {
-- timer_data->delay_on = (50 - duty1) * 1000 / 50 / frequency;
-- timer_data->delay_off = (50 + duty1) * 1000 / 50 / frequency;
-+ timer_data->delay_on = duty * 10000U / frequency;
-+ if (timer_data->delay_on == 0)
-+ timer_data->delay_on = 1;
-+ timer_data->delay_off = (100U-duty) * 10000U / frequency;
-+ if (timer_data->delay_off == 0)
-+ timer_data->delay_off = 1;
- }
-
- mod_timer(&timer_data->timer, jiffies);
-@@ -100,8 +99,8 @@ static ssize_t led_duty_store(struct cla
- struct timer_trig_data *timer_data;
- int ret = -EINVAL;
- char *after;
--
- unsigned long state = simple_strtoul(buf, &after, 10);
-+
- if (after - buf > 0) {
- ret = after - buf;
- write_lock(&led_dev->lock);
-@@ -118,32 +117,63 @@ static ssize_t led_frequency_show(struct
- {
- struct led_device *led_dev = dev->class_data;
- struct timer_trig_data *timer_data;
-+ unsigned long freq000;
-
- read_lock(&led_dev->lock);
- timer_data = led_dev->trigger_data;
-- sprintf(buf, "%lu\n", timer_data->frequency);
-+ freq000 = timer_data->frequency;
- read_unlock(&led_dev->lock);
-
-+ if (freq000 % 1000)
-+ sprintf(buf, "%lu.%.3lu\n", freq000 / 1000, freq000 % 1000);
-+ else
-+ sprintf(buf, "%lu\n", freq000 / 1000);
-+
- return strlen(buf) + 1;
- }
-
- static ssize_t led_frequency_store(struct class_device *dev, const char *buf, size_t size)
- {
- struct led_device *led_dev = dev->class_data;
-- struct timer_trig_data *timer_data;
-- int ret = -EINVAL;
-- char *after;
-+ size_t rc = 0;
-+ unsigned long freq000 = 0;
-+ int have_digit = 0;
-+
-+ while (rc < size && isspace(buf[rc]))
-+ ++rc;
-+ if (rc >= size)
-+ return rc;
-+
-+ /* number before decimal point */
-+ while (rc < size && isdigit(buf[rc]))
-+ freq000 *= 10, freq000 += buf[rc++] - '0', have_digit = 1;
-+
-+ if (rc < size && (buf[rc] == '.' || buf[rc] == ',')) {
-+ int dp = 0;
-+ ++rc;
-+ while (rc < size && isdigit(buf[rc])) {
-+ if (++dp <= 3)
-+ freq000 *= 10, freq000 += buf[rc] - '0';
-+ ++rc;
-+ have_digit = 1;
-+ }
-+ while (++dp <= 3)
-+ freq000 *= 10;
-+ } else
-+ freq000 *= 1000;
-
-- unsigned long state = simple_strtoul(buf, &after, 10);
-- if (after - buf > 0) {
-- ret = after - buf;
-- write_lock(&led_dev->lock);
-- timer_data = led_dev->trigger_data;
-- led_timer_setdata(led_dev, timer_data->duty, state);
-- write_unlock(&led_dev->lock);
-+ if (!have_digit)
-+ return -EINVAL;
-+
-+ write_lock(&led_dev->lock);
-+ {
-+ struct timer_trig_data *timer_data = led_dev->trigger_data;
-+ led_timer_setdata(led_dev, timer_data->duty, freq000);
- }
-+ write_unlock(&led_dev->lock);
-
-- return ret;
-+
-+ return rc;
- }
-
- static CLASS_DEVICE_ATTR(duty, 0644, led_duty_show, led_duty_store);
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 b6b3897005..92b03836d4 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
@@ -6,18 +6,25 @@ are idle.
Signed-off-by: John Bowler <jbowler@acm.org>
-diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/arch/arm/kernel/process.c linux-2.6.15.2/arch/arm/kernel/process.c
---- linux-2.6.15/arch/arm/kernel/process.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/kernel/process.c 1970-01-01 00:00:00.000000000 +0000
+---
+ arch/arm/kernel/process.c | 11
+ drivers/leds/Kconfig | 9
+ drivers/leds/Makefile | 1
+ drivers/leds/ledtrig-cpu.c | 501 +++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/leds.h | 9
+ 5 files changed, 531 insertions(+)
+
+--- linux-ixp4xx.orig/arch/arm/kernel/process.c 2006-02-21 00:53:28.000000000 +0100
++++ linux-ixp4xx/arch/arm/kernel/process.c 2006-02-21 01:03:33.000000000 +0100
@@ -27,6 +27,7 @@
#include <linux/kallsyms.h>
#include <linux/init.h>
#include <linux/cpu.h>
+#include <linux/leds.h>
- #include <asm/system.h>
- #include <asm/io.h>
-@@ -81,6 +82,12 @@ void (*pm_power_off)(void);
+ #include <asm/leds.h>
+ #include <asm/processor.h>
+@@ -80,6 +81,12 @@ void (*pm_power_off)(void);
EXPORT_SYMBOL(pm_power_off);
/*
@@ -30,7 +37,7 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/arch/arm/kernel/
* This is our default idle handler. We need to disable
* interrupts here to ensure we don't miss a wakeup call.
*/
-@@ -121,8 +128,12 @@ void cpu_idle(void)
+@@ -120,8 +127,12 @@ void cpu_idle(void)
if (!idle)
idle = default_idle;
leds_event(led_idle_start);
@@ -43,9 +50,8 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/arch/arm/kernel/
leds_event(led_idle_end);
preempt_enable_no_resched();
schedule();
-diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/Kconfig linux-2.6.15.2/drivers/leds/Kconfig
---- linux-2.6.15/drivers/leds/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/leds/Kconfig 1970-01-01 00:00:00.000000000 +0000
+--- linux-ixp4xx.orig/drivers/leds/Kconfig 2006-02-21 00:58:36.000000000 +0100
++++ linux-ixp4xx/drivers/leds/Kconfig 2006-02-21 01:03:33.000000000 +0100
@@ -66,5 +66,14 @@ config LEDS_TRIGGER_TIMER
This allows LEDs to be controlled by a programmable timer
via sysfs. If unsure, say Y.
@@ -61,17 +67,15 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/Kco
+
endmenu
-diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/Makefile linux-2.6.15.2/drivers/leds/Makefile
---- linux-2.6.15/drivers/leds/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/leds/Makefile 1970-01-01 00:00:00.000000000 +0000
+--- linux-ixp4xx.orig/drivers/leds/Makefile 2006-02-21 00:58:36.000000000 +0100
++++ linux-ixp4xx/drivers/leds/Makefile 2006-02-21 01:03:33.000000000 +0100
@@ -13,3 +13,4 @@ obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o
# LED Triggers
obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+obj-$(CONFIG_LEDS_TRIGGER_CPU_ACTIVITY) += ledtrig-cpu.o
-diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/ledtrig-cpu.c linux-2.6.15.2/drivers/leds/ledtrig-cpu.c
---- linux-2.6.15/drivers/leds/ledtrig-cpu.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/leds/ledtrig-cpu.c 1970-01-01 00:00:00.000000000 +0000
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/leds/ledtrig-cpu.c 2006-02-21 01:08:57.000000000 +0100
@@ -0,0 +1,501 @@
+/*
+ * LEDs CPU activity trigger
@@ -182,7 +186,7 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+ * have changed. Returns true if the LED is blinking. The argument
+ * is the blink state - the brightness of the blinking LED.
+ */
-+static int leds_cpu_trigger_led_state_change(struct led_device *led,
++static int leds_cpu_trigger_led_state_change(struct led_classdev *led,
+ int is_active, enum led_brightness brightness)
+{
+ int is_blinking = 0;
@@ -218,7 +222,7 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+static ssize_t leds_cpu_trigger_show_prop(struct class_device *dev, char *buf,
+ size_t where)
+{
-+ struct led_device *led = dev->class_data;
++ struct led_classdev *led = dev->class_data;
+ cpu_trigger_led_state item = cpu_led_invalid, i;
+ char *next;
+
@@ -270,7 +274,7 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+{
+ size_t rc = 0;
+ cpu_trigger_led_state value = 0/*sic*/;
-+ struct led_device *led;
++ struct led_classdev *led;
+
+ /* ignore space characters before the value. */
+ while (rc < size && isspace(buf[rc]))
@@ -336,7 +340,7 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+ * Activate and deactivate are called on individual LEDs when the
+ * LED trigger property is changed. The LED write lock is held.
+ */
-+static void leds_cpu_trigger_activate(struct led_device *led)
++static void leds_cpu_trigger_activate(struct led_classdev *led)
+{
+ /*
+ * The initial setting of the trigger is simple CPU activity
@@ -358,7 +362,7 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+ led_set_brightness(led, LED_FULL);
+}
+
-+static void leds_cpu_trigger_deactivate(struct led_device *led)
++static void leds_cpu_trigger_deactivate(struct led_classdev *led)
+{
+ struct cpu_trigger_data *data = led->trigger_data;
+ if (likely(data != 0)) {
@@ -422,9 +426,9 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+ leds_cpu_trigger_mark(data, now) ? LED_FULL : LED_OFF;
+ struct list_head *entry;
+
-+ list_for_each(entry, &data->trigger.led_devs) {
-+ struct led_device *led =
-+ list_entry(entry, struct led_device, trig_list);
++ list_for_each(entry, &data->trigger.led_cdevs) {
++ struct led_classdev *led =
++ list_entry(entry, struct led_classdev, trig_list);
+
+ blinking |= leds_cpu_trigger_led_state_change(led,
+ active, brightness);
@@ -574,9 +578,8 @@ diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/drivers/leds/led
+MODULE_AUTHOR("John Bowler <jbowler@acm.org>");
+MODULE_DESCRIPTION("CPU activity LED trigger");
+MODULE_LICENSE("MIT");
-diff -rup linux-2.6.15.2/.pc/951-ixp4xx-leds-cpu-activity.patch/include/linux/leds.h linux-2.6.15.2/include/linux/leds.h
---- linux-2.6.15/include/linux/leds.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/include/linux/leds.h 1970-01-01 00:00:00.000000000 +0000
+--- 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
#define led_trigger_event(x, y) do {} while(0)
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/96-loft-leds.patch b/packages/linux/ixp4xx-kernel/2.6.16/96-loft-leds.patch
deleted file mode 100644
index 60fcf52cbb..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/96-loft-leds.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-NEW_LEDS support for the loft board
-
-Signed-off-by: John Bowler <jbowler@acm.org>
-
---- linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-setup.c 1970-01-01 00:00:00.000000000 +0000
-@@ -15,6 +15,7 @@
- #include <linux/tty.h>
- #include <linux/serial_8250.h>
- #include <linux/eeprom.h>
-+#include <linux/leds.h>
-
- #include <asm/types.h>
- #include <asm/setup.h>
-@@ -200,6 +201,29 @@ MACHINE_END
- * maybe the ixdp425 too.
- */
- #ifdef CONFIG_MACH_LOFT
-+#ifdef CONFIG_LEDS_CLASS
-+static struct resource loft_led_resources[] = {
-+ {
-+ .name = "ready", /* green led, also J8 pin 7 */
-+ .start = 3,
-+ .end = 3,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
-+};
-+
-+static struct platform_device loft_leds = {
-+ .name = "IXP4XX-GPIO-LED",
-+ .id = -1,
-+ .num_resources = ARRAY_SIZE(loft_led_resources),
-+ .resource = loft_led_resources,
-+};
-+#endif
-+
-+static struct platform_device *loft_devices[] __initdata = {
-+ &ixdp425_i2c_controller,
-+ &ixdp425_flash,
-+};
-+
- /*
- * When the EEPROM is added the MAC address are read from it.
- */
-@@ -244,7 +268,16 @@ static void __init loft_init(void)
-
- ixp4xx_sys_init();
-
-- platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices));
-+ /* Put the UART in first for debugging, don't care if it fails. */
-+ (void)platform_device_register(&ixdp425_uart);
-+
-+ /* These should work... */
-+ platform_add_devices(loft_devices, ARRAY_SIZE(loft_devices));
-+
-+#ifdef CONFIG_LEDS_CLASS
-+ /* We don't care if this fails. */
-+ (void)platform_device_register(&loft_leds);
-+#endif
- }
-
- MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/96-nas100d-leds.patch b/packages/linux/ixp4xx-kernel/2.6.16/96-nas100d-leds.patch
index 796ca87718..ceb4b8b2f8 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/96-nas100d-leds.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/96-nas100d-leds.patch
@@ -1,10 +1,13 @@
NEW_LEDS support for the IOMega NAS100D
Signed-off-by: John Bowler <jbowler@acm.org>
-Signed-off-by: Rod Whitby <rod@whitby.id.au>
---- linux-2.6.15/arch/arm/mach-ixp4xx/nas100d-setup.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/arch/arm/mach-ixp4xx/nas100d-setup.c 1970-01-01 00:00:00.000000000 +0000
+---
+ arch/arm/mach-ixp4xx/nas100d-setup.c | 43 ++++++++++++++++++++++++++++++++++-
+ 1 file changed, 42 insertions(+), 1 deletion(-)
+
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-02-21 01:40:40.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nas100d-setup.c 2006-02-21 01:53:48.000000000 +0100
@@ -16,6 +16,7 @@
#include <linux/serial.h>
#include <linux/serial_8250.h>
@@ -13,7 +16,7 @@ Signed-off-by: Rod Whitby <rod@whitby.id.au>
#include <asm/setup.h>
#include <asm/memory.h>
-@@ -44,6 +45,36 @@ static struct platform_device nas100d_fl
+@@ -42,6 +43,36 @@ static struct platform_device nas100d_fl
.resource = &nas100d_flash_resource,
};
@@ -32,7 +35,7 @@ Signed-off-by: Rod Whitby <rod@whitby.id.au>
+ .flags = IXP4XX_GPIO_LOW,
+ },
+ {
-+ .name = "disk", /* green flashing (off) and yellow (on) led */
++ .name = "disk-1", /* yellow led */
+ .start = 3,
+ .end = 3,
+ .flags = IXP4XX_GPIO_LOW,
@@ -50,7 +53,7 @@ Signed-off-by: Rod Whitby <rod@whitby.id.au>
static struct ixp4xx_i2c_pins nas100d_i2c_gpio_pins = {
.sda_pin = NAS100D_SDA_PIN,
.scl_pin = NAS100D_SCL_PIN,
-@@ -102,7 +133,6 @@ static struct platform_device nas100d_ua
+@@ -100,7 +131,6 @@ static struct platform_device nas100d_ua
static struct platform_device *nas100d_devices[] __initdata = {
&nas100d_i2c_controller,
&nas100d_flash,
@@ -58,7 +61,7 @@ Signed-off-by: Rod Whitby <rod@whitby.id.au>
};
static void nas100d_power_off(void)
-@@ -158,7 +188,18 @@ static void __init nas100d_init(void)
+@@ -160,7 +190,18 @@ static void __init nas100d_init(void)
pm_power_off = nas100d_power_off;
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/96-nslu2-leds.patch b/packages/linux/ixp4xx-kernel/2.6.16/96-nslu2-leds.patch
index 83043d9c2d..6b3b8d7d39 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/96-nslu2-leds.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/96-nslu2-leds.patch
@@ -5,8 +5,8 @@ Signed-off-by: John Bowler <jbowler@acm.org>
arch/arm/mach-ixp4xx/nslu2-setup.c | 51 ++++++++++++++++++++++++++++++++++++-
1 file changed, 50 insertions(+), 1 deletion(-)
---- linux-nslu2.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-01-23 02:13:58.000000000 +0100
-+++ linux-nslu2/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-01-23 02:14:51.000000000 +0100
+--- linux-ixp4xx.orig/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-21 02:54:05.000000000 +0100
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/nslu2-setup.c 2006-02-21 02:54:05.000000000 +0100
@@ -17,6 +17,9 @@
#include <linux/serial.h>
#include <linux/serial_8250.h>
@@ -17,7 +17,7 @@ Signed-off-by: John Bowler <jbowler@acm.org>
#include <asm/setup.h>
#include <asm/memory.h>
-@@ -50,6 +53,42 @@ static struct ixp4xx_i2c_pins nslu2_i2c_
+@@ -48,6 +51,42 @@ static struct ixp4xx_i2c_pins nslu2_i2c_
.scl_pin = NSLU2_SCL_PIN,
};
@@ -60,7 +60,7 @@ Signed-off-by: John Bowler <jbowler@acm.org>
static struct platform_device nslu2_i2c_controller = {
.name = "IXP4XX-I2C",
.id = 0,
-@@ -109,7 +148,6 @@ static struct platform_device nslu2_uart
+@@ -107,7 +146,6 @@ static struct platform_device nslu2_uart
static struct platform_device *nslu2_devices[] __initdata = {
&nslu2_i2c_controller,
&nslu2_flash,
@@ -68,7 +68,7 @@ Signed-off-by: John Bowler <jbowler@acm.org>
&nslu2_beeper,
};
-@@ -171,7 +209,18 @@ static void __init nslu2_init(void)
+@@ -173,7 +211,18 @@ static void __init nslu2_init(void)
pm_power_off = nslu2_power_off;
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/96-pata-ixp4xx.patch b/packages/linux/ixp4xx-kernel/2.6.16/96-pata-ixp4xx.patch
new file mode 100644
index 0000000000..1c08150c45
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/96-pata-ixp4xx.patch
@@ -0,0 +1,299 @@
+---
+ drivers/scsi/Kconfig | 11 +-
+ drivers/scsi/Makefile | 1
+ drivers/scsi/libata-core.c | 4
+ drivers/scsi/pata_ixp4xx.c | 242 +++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 255 insertions(+), 3 deletions(-)
+
+--- linux-ixp4xx.orig/drivers/scsi/Kconfig 2006-02-24 18:13:55.000000000 +0100
++++ linux-ixp4xx/drivers/scsi/Kconfig 2006-02-24 18:50:19.000000000 +0100
+@@ -903,11 +903,20 @@ 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
++ This option enables support for SL82C105 PATAll devices found in the
+ Netwinder and some other systems
+
+ If unsure, say N.
+
++config SCSI_PATA_IXP4XX
++ tristate "IXP4XX Compact FLash support"
++ depends on SCSI_SATA && PCI
++ help
++ This option enables support for a Compact Flash connected on
++ the ixp4xx expansion bus.
++
++ If unsure, say N.
++
+
+ config SCSI_BUSLOGIC
+ tristate "BusLogic SCSI support"
+--- linux-ixp4xx.orig/drivers/scsi/Makefile 2006-02-24 18:13:55.000000000 +0100
++++ linux-ixp4xx/drivers/scsi/Makefile 2006-02-24 18:16:46.000000000 +0100
+@@ -174,6 +174,7 @@ obj-$(CONFIG_SCSI_PATA_VIA) += libata.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_SCSI_PATA_IXP4XX) += libata.o pata_ixp4xx.o
+
+ obj-$(CONFIG_ARM) += arm/
+
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/scsi/pata_ixp4xx.c 2006-02-24 18:43:02.000000000 +0100
+@@ -0,0 +1,242 @@
++/*
++ * pata-ixp4xx.c - Legacy port PATA/SATA controller driver.
++ * Copyright (c) 2006 Tower Technologies
++ *
++ * An ATA driver to handle a Compact Flash connected
++ * to the ixp4xx expansion bus.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/libata.h>
++#include <scsi/scsi_host.h>
++
++#define DRV_NAME "ixp4xx"
++#define DRV_VERSION "0.0.2"
++
++/* XXX remove when converting to platform driver */
++#define IXP4XX_IDE_BASE IXP4XX_EXP_BUS_BASE(1)
++#define IXP4XX_IDE_IRQ IRQ_IXP4XX_GPIO12
++#define IXP4XX_IDE_CONTROL 0x1e
++#define IXP4XX_IDE_INT 12
++#define IXP4XX_IDE_CS1_BITS 0xbfff0043
++#define IXP4XX_IDE_PIO_MASK 0x1f
++
++#ifdef __ARMEB__
++#define ixp4xx_writew(data,addr) writew(data,addr)
++#define ixp4xx_readw(addr) readw(addr)
++#else
++#define ixp4xx_writew(data,addr) writew(le16_to_cpu(data),addr)
++#define ixp4xx_readw(addr) cpu_to_le16(readw(addr))
++#endif
++
++static struct ata_host_set *ixp4xx_host;
++
++static unsigned int ixp4xx_mode_filter(const struct ata_port *ap,
++ struct ata_device *adev, unsigned int mask, int shift)
++{
++ if (shift != ATA_SHIFT_PIO)
++ return 0;
++ return mask;
++}
++
++static void ixp4xx_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 void ixp4xx_phy_reset(struct ata_port *ap)
++{
++ ap->cbl = ATA_CBL_PATA40;
++ ata_port_probe(ap);
++ ata_bus_reset(ap);
++}
++
++void ixp4xx_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;
++ u16 *buf16 = (u16 *) buf;
++ void __iomem *mmio = (void __iomem *)ap->ioaddr.data_addr;
++
++ /* set the expansion bus in 16bit mode and restore
++ * 8 bit mode after the transaction.
++ */
++ *IXP4XX_EXP_CS1 &= ~(0x00000001);
++
++ /* Transfer multiple of 2 bytes */
++ if (write_data) {
++ for (i = 0; i < words; i++)
++ writew(buf16[i], mmio);
++ } else {
++ for (i = 0; i < words; i++)
++ buf16[i] = readw(mmio);
++ }
++
++ /* Transfer trailing 1 byte, if any. */
++ if (unlikely(buflen & 0x01)) {
++ u16 align_buf[1] = { 0 };
++ unsigned char *trailing_buf = buf + buflen - 1;
++
++ if (write_data) {
++ memcpy(align_buf, trailing_buf, 1);
++ writew(le16_to_cpu(align_buf[0]), mmio);
++ } else {
++ align_buf[0] = cpu_to_le16(readw(mmio));
++ memcpy(trailing_buf, align_buf, 1);
++ }
++ }
++
++ *IXP4XX_EXP_CS1 |= 0x00000001;
++}
++
++void ixp4xx_host_stop(struct ata_host_set *host_set)
++{
++ ata_host_stop(host_set);
++ release_region(IXP4XX_IDE_BASE, 0x1000);
++}
++
++static struct scsi_host_template ixp4xx_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 ixp4xx_port_ops = {
++ .set_mode = ixp4xx_set_mode,
++ .mode_filter = ixp4xx_mode_filter,
++
++ .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 = ixp4xx_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 = ixp4xx_host_stop,
++
++ .phy_reset = ixp4xx_phy_reset,
++};
++
++/* adjust the addresses to handle the address swizzling of the
++ * ixp4xx in little endian mode.
++ */
++#ifndef __ARMEB__
++void ixp4xx_fix_le_ports(struct ata_ioports *ioaddr)
++{
++ ioaddr->data_addr ^= 0x02;
++ ioaddr->cmd_addr ^= 0x03;
++ ioaddr->altstatus_addr ^= 0x03;
++ ioaddr->ctl_addr ^= 0x03;
++ ioaddr->error_addr ^= 0x03;
++ ioaddr->feature_addr ^= 0x03;
++ ioaddr->nsect_addr ^= 0x03;
++ ioaddr->lbal_addr ^= 0x03;
++ ioaddr->lbam_addr ^= 0x03;
++ ioaddr->lbah_addr ^= 0x03;
++ ioaddr->device_addr ^= 0x03;
++ ioaddr->status_addr ^= 0x03;
++ ioaddr->command_addr ^= 0x03;
++}
++#endif
++
++static __init int ixp4xx_init_one(unsigned long base, unsigned int irq)
++{
++ int ret;
++ struct ata_probe_ent ae;
++
++ memset(&ae, 0, sizeof(struct ata_probe_ent));
++ INIT_LIST_HEAD(&ae.node);
++
++ ae.mmio_base = ioremap(base, 0x1000);
++ if (ae.mmio_base == NULL)
++ return -ENOMEM;
++
++ if (request_region(base, 0x1000, "pata_ixp4xx") == NULL)
++ return -EBUSY;
++
++ ae.dev = NULL;
++ ae.port_ops = &ixp4xx_port_ops;
++ ae.sht = &ixp4xx_sht;
++ ae.n_ports = 1;
++ ae.pio_mask = IXP4XX_IDE_PIO_MASK;
++ ae.irq = irq;
++ ae.irq_flags = 0;
++ ae.host_flags = ATA_FLAG_IRQ_MASK | ATA_FLAG_MMIO;
++
++ ae.port[0].cmd_addr = (unsigned long) ae.mmio_base;
++ ae.port[0].altstatus_addr = (unsigned long) ae.mmio_base + IXP4XX_IDE_CONTROL;
++ ae.port[0].ctl_addr = (unsigned long) ae.mmio_base + IXP4XX_IDE_CONTROL;
++ ata_std_ports(&ae.port[0]);
++
++#ifndef __ARMEB__
++ ixp4xx_fix_le_ports(&ae.port[0]);
++#endif
++ ret = ata_device_add(&ae);
++ if (ret == 0)
++ return -ENODEV;
++
++ ixp4xx_host = ae.host_set;
++ return 0;
++}
++
++static __init int ixp4xx_init(void)
++{
++ gpio_line_config(IXP4XX_IDE_INT, IXP4XX_GPIO_IN | IXP4XX_GPIO_STYLE_ACTIVE_HIGH);
++
++ *IXP4XX_EXP_CS1 |= IXP4XX_IDE_CS1_BITS;
++
++ if (ixp4xx_init_one(IXP4XX_IDE_BASE, IXP4XX_IDE_INT) == 0)
++ return 0;
++
++ return -ENODEV;
++}
++
++static __exit void ixp4xx_exit(void)
++{
++ if (ixp4xx_host)
++ ata_host_set_remove(ixp4xx_host);
++}
++
++MODULE_AUTHOR("Alessandro Zummo");
++MODULE_DESCRIPTION("low-level driver for ixp4xx CF/ATA");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++module_init(ixp4xx_init);
++module_exit(ixp4xx_exit);
+--- linux-ixp4xx.orig/drivers/scsi/libata-core.c 2006-02-24 18:13:55.000000000 +0100
++++ linux-ixp4xx/drivers/scsi/libata-core.c 2006-02-24 18:16:46.000000000 +0100
+@@ -2513,8 +2513,8 @@ static void ata_dev_set_xfermode(struct
+ tf.nsect = dev->xfer_mode;
+
+ if (ata_exec_internal(ap, dev, &tf, DMA_NONE, NULL, 0)) {
+- printk(KERN_ERR "ata%u: failed to set xfermode, disabled\n",
+- ap->id);
++ printk(KERN_ERR "ata%u: failed to set xfermode (0x%02x), disabled\n",
++ ap->id, dev->xfer_mode);
+ ata_port_disable(ap);
+ }
+
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-buttons.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-buttons.patch
new file mode 100644
index 0000000000..09129ac56a
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-buttons.patch
@@ -0,0 +1,122 @@
+Index: linux-2.6.15/arch/arm/mach-ixp4xx/ds101-buttons.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.15/arch/arm/mach-ixp4xx/ds101-buttons.c 2006-02-23 08:40:28.000000000 +0100
+@@ -0,0 +1,117 @@
++/*
++ * arch/arm/mach-ixp4xx/ds101-buttons.c
++ *
++ * DS101 Button driver
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/reboot.h>
++#include <linux/interrupt.h>
++#include <asm/mach-types.h>
++
++extern void ctrl_alt_del(void);
++static int usbcopyb_irqcount = 0;
++static int resetb_irqcount = 0;
++static int powerb_irqcount = 0;
++
++static irqreturn_t ds101_usbcopy_handler(int irq, void *dev_id, struct pt_regs *regs)
++{
++ usbcopyb_irqcount++;
++ if (usbcopyb_irqcount > 1) /* Init creates one IRQ. Ignore it */
++ {
++ /* The GPIO line is shared between the button and the led.
++ * Make sure the GPIO is GPIO_OUT, so we don't recieve
++ * irqs from the led going on/off. Disable the irq just in
++ * case.
++ */
++ gpio_line_config(DS101_USBCOPYB_IRQ, DS101_GPIO_OUT);
++ disable_irq(DS101_USBCOPYB_IRQ);
++ printk(KERN_INFO "Usbcopy\n");
++ }
++ return IRQ_HANDLED;
++}
++
++static irqreturn_t ds101_power_handler(int irq, void *dev_id, struct pt_regs *regs)
++{
++ powerb_irqcount++;
++ if (powerb_irqcount > 1)
++ {
++ /* Make the power led flash */
++ gpio_line_set(DS101_POWER_LED, DS101_GPIO_HIGH);
++ ctrl_alt_del();
++ }
++ return IRQ_HANDLED;
++}
++
++static irqreturn_t ds101_reset_handler(int irq, void *dev_id, struct pt_regs *regs)
++{
++ resetb_irqcount++;
++ if (resetb_irqcount > 1)
++ {
++ machine_power_off();
++ }
++ return IRQ_HANDLED;
++}
++
++static int __init ds101_buttons_init(void)
++{
++ if (!(machine_is_ds101()))
++ return 0;
++ printk(KERN_INFO "DiskStation DS101 button driver v0.2\n");
++ gpio_line_config(DS101_POWERB_GPIO, (DS101_GPIO_IN|IRQT_FALLING));
++ gpio_line_config(DS101_RESETB_GPIO, (DS101_GPIO_IN|IRQT_FALLING));
++ gpio_line_config(DS101_USBCOPYB_GPIO, (DS101_GPIO_IN|IRQT_FALLING));
++ set_irq_type(DS101_USBCOPYB_IRQ, IRQT_FALLING);
++ set_irq_type(DS101_POWERB_IRQ, IRQT_FALLING);
++ set_irq_type(DS101_RESETB_IRQ, IRQT_FALLING);
++ if (request_irq(DS101_USBCOPYB_IRQ, &ds101_usbcopy_handler, SA_INTERRUPT,
++ "DS101 USBCopy button", NULL) < 0)
++ {
++ printk(KERN_DEBUG "Could not get USBCopy button IRQ (%d)\n",
++ DS101_USBCOPYB_IRQ);
++
++ return -EIO;
++ }
++
++ if (request_irq(DS101_POWERB_IRQ, &ds101_power_handler, SA_INTERRUPT,
++ "DS101 Powerbutton", NULL) < 0)
++ {
++ printk(KERN_DEBUG "Could not get powerbutton IRQ (%d)\n",
++ DS101_POWERB_IRQ);
++ return -EIO;
++ }
++
++ if (request_irq(DS101_RESETB_IRQ, &ds101_reset_handler, SA_INTERRUPT,
++ "DS101 Resetbutton", NULL) < 0)
++ {
++ printk(KERN_DEBUG "Could not get resetbutton IRQ (%d)\n",
++ DS101_RESETB_IRQ);
++ return -EIO;
++ }
++ return 0;
++}
++
++static void __exit ds101_buttons_exit(void)
++{
++ if (!(machine_is_ds101()))
++ return;
++
++ disable_irq(DS101_USBCOPYB_IRQ);
++ disable_irq(DS101_POWERB_IRQ);
++ disable_irq(DS101_RESETB_IRQ);
++ free_irq(DS101_USBCOPYB_IRQ, NULL);
++ free_irq(DS101_POWERB_IRQ, NULL);
++ free_irq(DS101_RESETB_IRQ, NULL);
++}
++
++module_init(ds101_buttons_init);
++module_exit(ds101_buttons_exit);
++
++MODULE_AUTHOR("OEyvind Repvik <nail@nslu2-linux.org>");
++MODULE_DESCRIPTION("DS101 Button driver");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-doc.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-doc.patch
new file mode 100644
index 0000000000..470c03ab56
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-doc.patch
@@ -0,0 +1,43 @@
+Index: linux-2.6.15/include/linux/mtd/doc2000.h
+===================================================================
+--- linux-2.6.15.orig/include/linux/mtd/doc2000.h 2006-02-24 11:46:50.000000000 +0100
++++ linux-2.6.15/include/linux/mtd/doc2000.h 2006-02-24 12:14:18.000000000 +0100
+@@ -73,14 +73,29 @@
+ #define DoC_Mplus_Toggle 0x1046
+ #define DoC_Mplus_DownloadStatus 0x1074
+ #define DoC_Mplus_CtrlConfirm 0x1076
++#ifdef CONFIG_MACH_DS101
++#define DoC_Mplus_Power 0x1ffe
++#else
+ #define DoC_Mplus_Power 0x1fff
++#endif
+
+ /* How to access the device?
+ * On ARM, it'll be mmap'd directly with 32-bit wide accesses.
+ * On PPC, it's mmap'd and 16-bit wide.
++ * On DS101 (an ARM device), some tricks are needed
+ * Others use readb/writeb
+ */
+-#if defined(__arm__)
++#ifdef CONFIG_MACH_DS101
++#ifndef __ARMEB__
++#define ReadDOC_(adr, reg) readw((unsigned long)(adr + reg) ^ 0x02)
++#define WriteDOC_(d, adr, reg) writew(d, (unsigned long)(adr + reg) ^ 0x02)
++#define DOC_IOREMAP_LEN 0x4000
++#else
++#define ReadDOC_(adr, reg) swab16(readw((void __iomem *)(adr) + (reg)))
++#define WriteDOC_(d, adr, reg) writew(swab16(d), (void __iomem *)(adr) + (reg))
++#define DOC_IOREMAP_LEN 0x4000
++#endif
++#elif defined(__arm__)
+ #define ReadDOC_(adr, reg) ((unsigned char)(*(volatile __u32 *)(((unsigned long)adr)+((reg)<<2))))
+ #define WriteDOC_(d, adr, reg) do{ *(volatile __u32 *)(((unsigned long)adr)+((reg)<<2)) = (__u32)d; wmb();} while(0)
+ #define DOC_IOREMAP_LEN 0x8000
+@@ -92,7 +107,6 @@
+ #define ReadDOC_(adr, reg) readb((void __iomem *)(adr) + (reg))
+ #define WriteDOC_(d, adr, reg) writeb(d, (void __iomem *)(adr) + (reg))
+ #define DOC_IOREMAP_LEN 0x2000
+-
+ #endif
+
+ #if defined(__i386__) || defined(__x86_64__)
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-includes.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-includes.patch
index d9a5f07494..3f94fab289 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-includes.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-includes.patch
@@ -1,41 +1,15 @@
-diff -ruN linux-2.6.15.orig/include/asm-arm/arch-ixp4xx/hardware.h linux-2.6.15.new/include/asm-arm/arch-ixp4xx/hardware.h
---- linux-2.6.15.orig/include/asm-arm/arch-ixp4xx/hardware.h 2006-02-11 02:58:47.000000000 +0100
-+++ linux-2.6.15.new/include/asm-arm/arch-ixp4xx/hardware.h 2006-02-10 22:26:54.000000000 +0100
-@@ -46,5 +46,6 @@
- #include "prpmc1100.h"
- #include "nslu2.h"
- #include "nas100d.h"
-+#include "ds101.h"
+ include/asm-arm/arch-ixp4xx/ds101.h | 87 +++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-ixp4xx/hardware.h | 1
+ include/asm-arm/arch-ixp4xx/irqs.h | 7 ++
+ 3 files changed, 95 insertions(+)
- #endif /* _ASM_ARCH_HARDWARE_H */
-diff -ruN linux-2.6.15.orig/include/asm-arm/arch-ixp4xx/irqs.h linux-2.6.15.new/include/asm-arm/arch-ixp4xx/irqs.h
---- linux-2.6.15.orig/include/asm-arm/arch-ixp4xx/irqs.h 2006-02-11 02:58:47.000000000 +0100
-+++ linux-2.6.15.new/include/asm-arm/arch-ixp4xx/irqs.h 2006-02-10 22:56:11.000000000 +0100
-@@ -108,5 +108,12 @@
- #define IRQ_NAS100D_PCI_INTC IRQ_IXP4XX_GPIO9
- #define IRQ_NAS100D_PCI_INTD IRQ_IXP4XX_GPIO8
- #define IRQ_NAS100D_PCI_INTE IRQ_IXP4XX_GPIO7
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/ds101.h 2006-02-23 18:09:24.000000000 +0100
+@@ -0,0 +1,87 @@
+/*
-+ * 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
-
- #endif
-diff -ruN linux-2.6.15.orig/include/asm-arm/arch/ds101.h linux-2.6.15.new/include/asm-arm/arch/ds101.h
---- linux-2.6.15.orig/include/asm-arm/arch-ixp4xx/ds101.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15.new/include/asm-arm/arch-ixp4xx/ds101.h 2006-02-10 22:16:24.000000000 +0100
-@@ -0,0 +1,72 @@
-+/*
-+ * include/asm-arm/arch-ixp4xx/ds101.h
-+ *
+ * DS101 platform specific definitions
+ *
-+ * Copyright (c) 2005 Tower Technologies
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
++ * Author: Øyvind Repvik <nail@nslu2-linux.org>
+ *
+ * based on ixdp425.h:
+ * Copyright 2004 (c) MontaVista, Software, Inc.
@@ -49,23 +23,37 @@ diff -ruN linux-2.6.15.orig/include/asm-arm/arch/ds101.h linux-2.6.15.new/includ
+#error "Do not include this directly, instead #include <asm/hardware.h>"
+#endif
+
-+#define DS101_SDA_PIN 1
-+#define DS101_SCL_PIN 0
++#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
++#define DS101_USBCOPY_SOLID_LED DS101_GPIO4 /* The led and button share GPIO */
++#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
+
-+/*
-+ * DS101 PCI IRQs
-+ */
-+#define DS101_PCI_MAX_DEV 3
-+#define DS101_PCI_IRQ_LINES 3
++#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
+
-+/* PCI controller GPIO to IRQ pin mappings */
-+#define DS101_PCI_INTA_PIN 11
-+#define DS101_PCI_INTB_PIN 10
-+#define DS101_PCI_INTC_PIN 9
-+// #define DS101_PCI_INTD_PIN 8
-+// #define DS101_PCI_INTE_PIN 7
++#define DS101_GPIO_IN IXP4XX_GPIO_IN
++#define DS101_GPIO_OUT IXP4XX_GPIO_OUT
++#define DS101_GPIO_HIGH 1
++#define DS101_GPIO_LOW 0
+
++#define DS101_GPIO_CLK0_ENABLE 0x100
++#define DS101_GPIO_CLK1_ENABLE 0x1000000
+/* GPIO */
+
+#define DS101_GPIO0 0
@@ -85,18 +73,48 @@ diff -ruN linux-2.6.15.orig/include/asm-arm/arch/ds101.h linux-2.6.15.new/includ
+#define DS101_GPIO14 14
+#define DS101_GPIO15 15
+
++/* Stuff needed to setup the IXP expansion
++ * bus on the DS101
++ */
+
-+/* Buttons */
-+
-+#define DS101_PB_GPIO DS101_GPIO8
-+#define DS101_RB_GPIO DS101_GPIO12
-+#define DS101_PO_GPIO DS101_GPIO7 /* power off */
++#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_PB_IRQ IRQ_IXP4XX_GPIO8
-+#define DS101_RB_IRQ IRQ_IXP4XX_GPIO12
++#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)
+
++#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-02-23 18:09:14.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/hardware.h 2006-02-23 18:09:48.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-02-23 18:09:14.000000000 +0100
++++ linux-ixp4xx/include/asm-arm/arch-ixp4xx/irqs.h 2006-02-23 18:09:24.000000000 +0100
+@@ -108,6 +108,13 @@
+ #define IRQ_NAS100D_PCI_INTC IRQ_IXP4XX_GPIO9
+ #define IRQ_NAS100D_PCI_INTD IRQ_IXP4XX_GPIO8
+ #define IRQ_NAS100D_PCI_INTE IRQ_IXP4XX_GPIO7
+/*
-+#define DS101_PB_BM (1L << DS101_PB_GPIO)
-+#define DS101_PO_BM (1L << DS101_PO_GPIO)
-+#define DS101_RB_BM (1L << DS101_RB_GPIO)
-+*/
++ * 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
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-misc.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-misc.patch
deleted file mode 100644
index ea5f91b45f..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-misc.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/Makefile linux-2.6.15.new/arch/arm/mach-ixp4xx/Makefile
---- linux-2.6.15.orig/arch/arm/mach-ixp4xx/Makefile 2006-02-11 02:57:58.000000000 +0100
-+++ linux-2.6.15.new/arch/arm/mach-ixp4xx/Makefile 2006-02-10 22:13:27.000000000 +0100
-@@ -10,4 +10,4 @@
- obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
- obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
- obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o
--
-+obj-$(CONFIG_MACH_DS101) += ds101-pci.o ds101-setup.o ds101-power.o
-diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/Kconfig linux-2.6.15.new/arch/arm/mach-ixp4xx/Kconfig
---- linux-2.6.15.orig/arch/arm/mach-ixp4xx/Kconfig 2006-02-11 03:00:07.000000000 +0100
-+++ linux-2.6.15.new/arch/arm/mach-ixp4xx/Kconfig 2006-02-10 22:21:09.000000000 +0100
-@@ -86,6 +86,14 @@
- NAS 100d device. For more information on this platform,
- see http://www.nslu2-linux.org/wiki/NAS100d/HomePage
-
-+config MACH_DS101
-+ bool
-+ prompt "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
- #
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-pci.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-pci.patch
index 8940bd63a6..48765e3017 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-pci.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-pci.patch
@@ -1,10 +1,10 @@
-diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-pci.c linux-2.6.15.new/arch/arm/mach-ixp4xx/ds101-pci.c
---- linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-pci.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15.new/arch/arm/mach-ixp4xx/ds101-pci.c 2006-02-10 22:31:00.000000000 +0100
-@@ -0,0 +1,69 @@
+ arch/arm/mach-ixp4xx/ds101-pci.c | 66 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/arch/arm/mach-ixp4xx/ds101-pci.c 2006-02-21 02:02:34.000000000 +0100
+@@ -0,0 +1,66 @@
+/*
-+ * arch/arm/mach-ixp4xx/ds101-pci.c
-+ *
+ * DS101 board-level PCI initialization
+ *
+ * based on ixdp425-pci.c:
@@ -40,8 +40,7 @@ diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-pci.c linux-2.6.15.new/ar
+ static int pci_irq_table[DS101_PCI_MAX_DEV][DS101_PCI_IRQ_LINES] =
+ {
+ { IRQ_DS101_PCI_INTA, -1, -1 },
-+ { IRQ_DS101_PCI_INTB, -1, -1 },
-+ { IRQ_DS101_PCI_INTC, -1, -1 },
++ { IRQ_DS101_PCI_INTB, IRQ_DS101_PCI_INTB, IRQ_DS101_PCI_INTC },
+ };
+
+ int irq = -1;
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-power.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-power.patch
deleted file mode 100644
index 3c309f3536..0000000000
--- a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-power.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-power.c linux-2.6.15.new/arch/arm/mach-ixp4xx/ds101-power.c
---- linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-power.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15.new/arch/arm/mach-ixp4xx/ds101-power.c 2006-02-10 23:54:40.000000000 +0100
-@@ -0,0 +1,71 @@
-+/*
-+ * arch/arm/mach-ixp4xx/ds101-power.c
-+ *
-+ * DS101 Power/Reset driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on ds101-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Author: OEyvind Repvik <oyvind@repvik.org>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/reboot.h>
-+#include <linux/interrupt.h>
-+
-+#include <asm/mach-types.h>
-+
-+extern void ctrl_alt_del(void);
-+
-+static irqreturn_t ds101_reset_handler(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* Signal init to do the ctrlaltdel action, this will bypass init if
-+ * it hasn't started and do a kernel_restart.
-+ */
-+ ctrl_alt_del();
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int __init ds101_power_init(void)
-+{
-+ if (!(machine_is_ds101()))
-+ return 0;
-+
-+ set_irq_type(DS101_RB_IRQ, IRQT_LOW);
-+
-+ if (request_irq(DS101_RB_IRQ, &ds101_reset_handler,
-+ SA_INTERRUPT, "DS101 reset button", NULL) < 0) {
-+
-+ printk(KERN_DEBUG "Reset Button IRQ %d not available\n",
-+ DS101_RB_IRQ);
-+
-+ return -EIO;
-+ }
-+
-+ return 0;
-+}
-+
-+static void __exit ds101_power_exit(void)
-+{
-+ if (!(machine_is_ds101()))
-+ return;
-+
-+ free_irq(DS101_RB_IRQ, NULL);
-+}
-+
-+module_init(ds101_power_init);
-+module_exit(ds101_power_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("DS101 Power/Reset driver");
-+MODULE_LICENSE("GPL");
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-setup.patch b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-setup.patch
index ac3f7d19c7..5c922d2934 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-setup.patch
+++ b/packages/linux/ixp4xx-kernel/2.6.16/97-ds101-setup.patch
@@ -1,11 +1,21 @@
-diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-setup.c linux-2.6.15.new/arch/arm/mach-ixp4xx/ds101-setup.c
---- linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-setup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.15.new/arch/arm/mach-ixp4xx/ds101-setup.c 2006-02-11 02:17:35.000000000 +0100
-@@ -0,0 +1,284 @@
+Board setup code for the Synology DS101 platform
+
+Signed-off-by: Alessandro Zummo <a.zummo@towertech.it>
+Signed-off-by: Rod Whitby <rod@whitby.id.au>
+Signed-off-by: OEyvind Repvik <oyvind@repvik.org>
+
+ arch/arm/mach-ixp4xx/Kconfig | 8 +
+ arch/arm/mach-ixp4xx/Makefile | 2
+ arch/arm/mach-ixp4xx/ds101-setup.c | 245 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 254 insertions(+), 1 deletion(-)
+
+Index: linux-2.6.15/arch/arm/mach-ixp4xx/ds101-setup.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.15/arch/arm/mach-ixp4xx/ds101-setup.c 2006-02-24 12:37:01.000000000 +0100
+@@ -0,0 +1,245 @@
+/*
-+ * arch/arm/mach-ixp4xx/ds101-setup.c
-+ *
-+ * DS 101 board-setup
++ * Synology DS101 board setup
+ *
+ * based ixdp425-setup.c:
+ * Copyright (C) 2003-2004 MontaVista Software, Inc.
@@ -20,8 +30,8 @@ diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-setup.c linux-2.6.15.new/
+#include <linux/kernel.h>
+#include <linux/serial.h>
+#include <linux/serial_8250.h>
-+#include <linux/mtd/mtd.h>
+#include <linux/leds.h>
++#include <linux/pci.h>
+
+#include <asm/setup.h>
+#include <asm/memory.h>
@@ -29,260 +39,252 @@ diff -ruN linux-2.6.15.orig/arch/arm/mach-ixp4xx/ds101-setup.c linux-2.6.15.new/
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+
++#ifdef CONFIG_MACLIST
+#include <net/maclist.h>
-+
-+static struct flash_platform_data ds101_flash_data = {
-+ .map_name = "cfi_probe",
-+ .width = 2,
-+};
-+
-+static struct resource ds101_flash_resource = {
-+ .flags = IORESOURCE_MEM,
-+};
-+
-+static struct platform_device ds101_flash = {
-+ .name = "IXP4XX-Flash",
-+ .id = 0,
-+ .dev.platform_data = &ds101_flash_data,
-+ .num_resources = 1,
-+ .resource = &ds101_flash_resource,
-+};
++#endif
+
+#ifdef CONFIG_LEDS_CLASS
+static struct resource ds101_led_resources[] = {
-+ {
-+ .name = "power", /* blue power led */
-+ .start = 3,
-+ .end = 3,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
-+ {
-+ .name = "status-1",
-+ .start = 14,
-+ .end = 14,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
-+ {
-+ .name = "status-2",
-+ .start = 15,
-+ .end = 15,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
-+ {
-+ .name = "usb-1", /* The usb-copy-button led */
-+ .start = 5,
-+ .end = 5,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
-+ {
-+ .name = "usb-2", /* also the usb-copy-button led */
-+ .start = 4,
-+ .end = 4,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
-+ {
-+ .name = "test",
-+ .start = 6,
-+ .end = 6,
-+ .flags = IXP4XX_GPIO_LOW,
-+ },
++ {
++ .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,
++ .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,
++ .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,
++ .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 = 2,
-+ .num_resources = 0,
++ .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,
-+ }
++ {
++ .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,
-+ },
-+ { }
++ {
++ .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,
++ .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_flash,
-+ &ds101_beeper,
++ &ds101_i2c_controller,
++ &ds101_beeper,
+};
+
+static void ds101_power_off(void)
+{
-+ /* This causes the box to drop the power and go dead. */
-+
-+ /* enable the pwr cntl gpio */
-+ gpio_line_config(DS101_PO_GPIO, IXP4XX_GPIO_OUT);
-+
-+ /* do the deed */
-+ gpio_line_set(DS101_PO_GPIO, IXP4XX_GPIO_HIGH);
++ /* Simple, but effective */
++ gpio_line_set(DS101_POWEROFF_GPIO, IXP4XX_GPIO_LOW);
+}
+
-+/*
-+ * When the RedBoot config partition is added the MAC address is read from
-+ * it.
-+ * FIXME: This isn't correct on the DS101!
-+ */
-+static void ds101_flash_add(struct mtd_info *mtd) {
-+ if (strcmp(mtd->name, "RedBoot config") == 0) {
-+ size_t retlen;
-+ u_char mac[6];
-+
-+ /* The MAC is at a known offset... */
-+ if (mtd->read(mtd, 0x0FD8, 6, &retlen, mac) == 0 && retlen == 6) {
-+ printk(KERN_INFO "DS101 MAC: %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
-+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
-+ maclist_add(mac);
-+ } else {
-+ printk(KERN_ERR "DS101 MAC: read failed\n");
-+ }
-+ }
-+}
-+
-+/*
-+ * Nothing to do on remove at present.
-+ */
-+static void ds101_flash_remove(struct mtd_info *mtd) {
-+}
++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) = ((*IXP4XX_GPIO_GPCLKR) & ~DS101_GPIO_CLK0_ENABLE);
++ (*IXP4XX_GPIO_GPCLKR) = ((*IXP4XX_GPIO_GPCLKR) & ~DS101_GPIO_CLK1_ENABLE);
++ 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 struct mtd_notifier ds101_flash_notifier = {
-+ .add = ds101_flash_add,
-+ .remove = ds101_flash_remove,
++static void ds101_cs0_setup(void)
++{
++ *IXP4XX_EXP_CS0 = DS101_EXP_CS0_INIT;
+};
+
+static void __init ds101_init(void)
+{
-+ /* The flash has an ethernet MAC embedded in it which we need,
-+ * that is all this notifier does.
-+ */
-+ register_mtd_user(&ds101_flash_notifier);
-+
-+ ixp4xx_sys_init();
++ ixp4xx_sys_init();
+
-+ ds101_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
-+ ds101_flash_resource.end =
-+ IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
++ ds101_cs0_setup(); /* Needed for DoC support */
++ ds101_gpio_setup();
++ pm_power_off = ds101_power_off;
+
-+ 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);
-+
-+ 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);
++ /* 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 (the box always has 64MByte at 0). The
-+ * passed in command line can override this default, we prepend
-+ * to the config'ed default.
++ * 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
++ * 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!)
++ * 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 char ds101_command_line[] __initdata =
-+ "root=/dev/sda1 rootfstype=ext3 init=/sbin/init "
-+ CONFIG_CMDLINE;
++ "root=/dev/sda2 rootfstype=ext3 init=/sbin/init "
++ "rtc-rs5c372.probe=0,0x32 "
++ CONFIG_CMDLINE;
+
+static void __init ds101_fixup(struct machine_desc *desc,
-+ struct tag *tags, char **cmdline, struct meminfo *mi)
++ 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);
-+
-+ /* A command line in the ATAG list will override this one,
-+ * as is intended.
-+ */
-+ strlcpy(*cmdline, ds101_command_line, COMMAND_LINE_SIZE);
++ /* 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);
++ /* A command line in the ATAG list will override this one,
++ * as is intended.
++ */
++ strlcpy(*cmdline, ds101_command_line, COMMAND_LINE_SIZE);
+}
+
+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,
++ /* 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
+Index: linux-2.6.15/arch/arm/mach-ixp4xx/Kconfig
+===================================================================
+--- linux-2.6.15.orig/arch/arm/mach-ixp4xx/Kconfig 2006-02-24 11:44:49.000000000 +0100
++++ linux-2.6.15/arch/arm/mach-ixp4xx/Kconfig 2006-02-24 11:44:49.000000000 +0100
+@@ -94,6 +94,14 @@
+ DSM-G600 device. For more information on this platform,
+ see http://www.nslu2-linux.org/
+
++config MACH_DS101
++ bool
++ prompt "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
+ #
+Index: linux-2.6.15/arch/arm/mach-ixp4xx/Makefile
+===================================================================
+--- linux-2.6.15.orig/arch/arm/mach-ixp4xx/Makefile 2006-02-24 11:44:48.000000000 +0100
++++ linux-2.6.15/arch/arm/mach-ixp4xx/Makefile 2006-02-24 11:44:49.000000000 +0100
+@@ -11,4 +11,4 @@
+ 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 ds101-buttons.o
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/defconfig b/packages/linux/ixp4xx-kernel/2.6.16/defconfig
index 0862199528..014ff73135 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-rc2
-# Thu Feb 9 23:00:47 2006
+# Linux kernel version: 2.6.16-rc4-git7
+# Fri Feb 24 22:40:39 2006
#
CONFIG_ARM=y
CONFIG_MMU=y
@@ -12,7 +12,6 @@ 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
@@ -37,7 +36,7 @@ CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
-# CONFIG_BASE_FULL is not set
+CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
@@ -47,7 +46,7 @@ CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
CONFIG_SLAB=y
# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=1
+CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
CONFIG_OBSOLETE_INTERMODULE=y
@@ -124,6 +123,7 @@ CONFIG_ARCH_IXDP425=y
CONFIG_ARCH_IXCDP1100=y
# CONFIG_ARCH_PRPMC1100 is not set
CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
CONFIG_MACH_DS101=y
CONFIG_ARCH_IXDP4XX=y
# CONFIG_MACH_GTWX5715 is not set
@@ -220,6 +220,7 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
@@ -470,7 +471,8 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
@@ -504,7 +506,6 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
-# CONFIG_MTD_XIP is not set
#
# Mapping drivers for chip access
@@ -540,8 +541,9 @@ CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_DISKONCHIP=y
-# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
-CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0x50000000
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH is not set
# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
# CONFIG_MTD_NAND_NANDSIM is not set
@@ -669,10 +671,12 @@ CONFIG_SCSI_PATA_ARTOP=y
# CONFIG_SCSI_PATA_LEGACY is not set
# CONFIG_SCSI_PATA_MPIIX is not set
# CONFIG_SCSI_PATA_NETCELL is not set
+# CONFIG_SCSI_PATA_NS87410 is not set
# CONFIG_SCSI_PATA_OLDPIIX is not set
# CONFIG_SCSI_PATA_OPTI is not set
-# CONFIG_SCSI_PATA_PCMCIA is not set
+# CONFIG_SCSI_PATA_PDC_OLD is not set
# CONFIG_SCSI_PATA_QDI is not set
+# CONFIG_SCSI_PATA_RADISYS is not set
# CONFIG_SCSI_PATA_RZ1000 is not set
# CONFIG_SCSI_PATA_SC1200 is not set
# CONFIG_SCSI_PATA_SERVERWORKS is not set
@@ -681,6 +685,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_DMX3191D is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
@@ -917,7 +922,7 @@ CONFIG_INPUT_IXP4XX_BEEPER=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=2
-CONFIG_SERIAL_8250_RUNTIME_UARTS=1
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
# CONFIG_SERIAL_8250_EXTENDED is not set
#
@@ -925,6 +930,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=1
#
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
@@ -957,7 +963,6 @@ CONFIG_IXP4XX_WATCHDOG=y
#
# CONFIG_USBPCWATCHDOG is not set
# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
@@ -1023,9 +1028,7 @@ CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_RTC_X1205_I2C is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
@@ -1040,7 +1043,7 @@ CONFIG_SENSORS_EEPROM=y
#
# Hardware Monitoring support
#
-CONFIG_HWMON=y
+CONFIG_HWMON=m
# CONFIG_HWMON_VID is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
@@ -1050,6 +1053,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_FSCHER is not set
# CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set
@@ -1077,6 +1081,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_SENSORS_AD741X=m
# CONFIG_HWMON_DEBUG_CHIP is not set
#
@@ -1135,7 +1140,7 @@ CONFIG_VIDEO_CX88_ALSA=m
# CONFIG_VIDEO_EM28XX is not set
CONFIG_VIDEO_OVCAMCHIP=m
# CONFIG_VIDEO_AUDIO_DECODER is not set
-# CONFIG_VIDEO_DECODER is not set
+CONFIG_VIDEO_DECODER=m
#
# Radio Adapters
@@ -1277,7 +1282,7 @@ CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_UHCI_HCD is not set
+CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
#
@@ -1469,6 +1474,7 @@ CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_DRV_X1205=y
CONFIG_RTC_DRV_DS1672=y
CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_RS5C372=y
# CONFIG_RTC_DRV_TEST is not set
#
@@ -1596,7 +1602,7 @@ CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_EXPERIMENTAL is not set
# CONFIG_NCP_FS is not set
-CONFIG_CODA_FS=m
+# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch b/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch
new file mode 100644
index 0000000000..4eaab3070e
--- /dev/null
+++ b/packages/linux/ixp4xx-kernel/2.6.16/leds-class.patch
@@ -0,0 +1,1835 @@
+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>
+
+---
+ arch/arm/Kconfig | 2
+ arch/arm/mach-pxa/corgi.c | 10 +
+ arch/arm/mach-pxa/spitz.c | 10 +
+ arch/arm/mach-pxa/tosa.c | 9 +
+ drivers/Kconfig | 2
+ drivers/Makefile | 1
+ drivers/ide/ide-disk.c | 17 ++
+ 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/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/mtd/nand/nand_base.c | 26 ++++
+ include/linux/leds.h | 97 ++++++++++++++++
+ 21 files changed, 1590 insertions(+), 3 deletions(-)
+
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-ixp4xx/drivers/leds/Kconfig 2006-02-23 18:17:40.000000000 +0100
+@@ -0,0 +1,70 @@
++
++menu "LED devices"
++
++config NEW_LEDS
++ bool "LED Support"
++ help
++ Say Y to enable Linux LED support. This is not related to standard
++ keyboard LEDs which are controlled via the input system.
++
++config LEDS_CLASS
++ tristate "LED Class Support"
++ depends NEW_LEDS
++ help
++ This option enables the led sysfs class in /sys/class/leds. You'll
++ need this to do anything useful with LEDs. If unsure, say N.
++
++config LEDS_TRIGGERS
++ bool "LED Trigger support"
++ depends NEW_LEDS
++ help
++ This option enables trigger support for the leds class.
++ These triggers allow kernel events to drive the LEDs and can
++ be configured via sysfs. If unsure, say Y.
++
++config LEDS_CORGI
++ tristate "LED Support for the Sharp SL-C7x0 series"
++ depends LEDS_CLASS && PXA_SHARP_C7xx
++ help
++ This option enables support for the LEDs on Sharp Zaurus
++ SL-C7x0 series (C700, C750, C760, C860).
++
++config LEDS_LOCOMO
++ tristate "LED Support for Locomo device"
++ depends LEDS_CLASS && SHARP_LOCOMO
++ help
++ This option enables support for the LEDs on Sharp Locomo.
++ Zaurus models SL-5500 and SL-5600.
++
++config LEDS_SPITZ
++ tristate "LED Support for the Sharp SL-Cxx00 series"
++ depends LEDS_CLASS && PXA_SHARP_Cxx00
++ help
++ This option enables support for the LEDs on Sharp Zaurus
++ SL-Cxx00 series (C1000, C3000, C3100).
++
++config LEDS_IXP4XX
++ tristate "LED Support for GPIO connected LEDs on IXP4XX processors"
++ depends LEDS_CLASS && ARCH_IXP4XX
++ help
++ This option enables support for the LEDs connected to GPIO
++ outputs of the Intel IXP4XX processors. To be useful the
++ particular board must have LEDs and they must be connected
++ to the GPIO lines. If unsure, say Y.
++
++config LEDS_TOSA
++ tristate "LED Support for the Sharp SL-6000 series"
++ depends LEDS_CLASS && PXA_SHARPSL
++ help
++ This option enables support for the LEDs on Sharp Zaurus
++ SL-6000 series.
++
++config LEDS_TRIGGER_TIMER
++ tristate "LED Timer Trigger"
++ depends LEDS_TRIGGERS
++ help
++ This allows LEDs to be controlled by a programmable timer
++ via sysfs. If unsure, say Y.
++
++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 @@
++/*
++ * LED Class Core
++ *
++ * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu>
++ * Copyright (C) 2005-2006 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.
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/list.h>
++#include <linux/spinlock.h>
++#include <linux/device.h>
++#include <linux/sysdev.h>
++#include <linux/timer.h>
++#include <linux/err.h>
++#include <linux/leds.h>
++#include "leds.h"
++
++static struct class *leds_class;
++
++static ssize_t led_brightness_show(struct class_device *dev, char *buf)
++{
++ struct led_classdev *led_cdev = dev->class_data;
++ ssize_t ret = 0;
++
++ /* no lock needed for this */
++ sprintf(buf, "%u\n", led_cdev->brightness);
++ ret = strlen(buf) + 1;
++
++ return ret;
++}
++
++static ssize_t led_brightness_store(struct class_device *dev, const char *buf, size_t size)
++{
++ struct led_classdev *led_cdev = dev->class_data;
++ 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);
++ led_set_brightness(led_cdev, state);
++ write_unlock(&led_cdev->lock);
++ }
++
++ return ret;
++}
++
++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
++
++/**
++ * led_classdev_suspend - suspend an led_classdev.
++ * @led_cdev: the led_classdev to suspend.
++ */
++void led_classdev_suspend(struct led_classdev *led_cdev)
++{
++ write_lock(&led_cdev->lock);
++ led_cdev->flags |= LED_SUSPENDED;
++ led_cdev->brightness_set(led_cdev, 0);
++ write_unlock(&led_cdev->lock);
++}
++
++/**
++ * led_classdev_resume - resume an led_classdev.
++ * @led_cdev: the led_classdev to resume.
++ */
++void led_classdev_resume(struct led_classdev *led_cdev)
++{
++ write_lock(&led_cdev->lock);
++ led_cdev->flags &= ~LED_SUSPENDED;
++ led_cdev->brightness_set(led_cdev, led_cdev->brightness);
++ write_unlock(&led_cdev->lock);
++}
++
++/**
++ * led_classdev_register - register a new object of led_classdev class.
++ * @dev: The device to register.
++ * @led_cdev: the led_classdev structure for this device.
++ */
++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);
++ 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;
++
++ /* 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
++
++ /* add to the list of leds */
++ write_lock(&leds_list_lock);
++ list_add_tail(&led_cdev->node, &leds_list);
++ write_unlock(&leds_list_lock);
++
++ led_trigger_set_default(led_cdev);
++
++ printk(KERN_INFO "Registered led device: %s\n", led_cdev->class_dev->class_id);
++
++ return 0;
++}
++
++/**
++ * led_classdev_unregister - unregisters a object of led_properties class.
++ * @led_cdev: the led device to unreigister
++ *
++ * Unregisters a previously registered via led_classdev_register object.
++ */
++void led_classdev_unregister(struct led_classdev *led_cdev)
++{
++ 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
++
++ if (led_cdev->trigger)
++ led_trigger_set(led_cdev, NULL);
++
++ class_device_unregister(led_cdev->class_dev);
++
++ write_lock(&leds_list_lock);
++ 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)
++{
++ leds_class = class_create(THIS_MODULE, "leds");
++ if (IS_ERR(leds_class))
++ return PTR_ERR(leds_class);
++ return 0;
++}
++
++static void __exit leds_exit(void)
++{
++ class_destroy(leds_class);
++}
++
++subsys_initcall(leds_init);
++module_exit(leds_exit);
++
++MODULE_AUTHOR("John Lenz, Richard Purdie");
++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 @@
++/*
++ * LED Class Core
++ *
++ * Copyright 2005-2006 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.
++ *
++ */
++
++#include <linux/kernel.h>
++#include <linux/list.h>
++#include <linux/module.h>
++#include <linux/spinlock.h>
++#include <linux/leds.h>
++#include "leds.h"
++
++rwlock_t leds_list_lock = RW_LOCK_UNLOCKED;
++LIST_HEAD(leds_list);
++
++EXPORT_SYMBOL_GPL(leds_list);
+--- /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 @@
++/*
++ * LED Triggers Core
++ *
++ * Copyright 2005-2006 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.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/list.h>
++#include <linux/spinlock.h>
++#include <linux/device.h>
++#include <linux/sysdev.h>
++#include <linux/timer.h>
++#include <linux/leds.h>
++#include "leds.h"
++
++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)
++{
++ struct led_classdev *led_cdev = dev->class_data;
++ char trigger_name[TRIG_NAME_MAX];
++ struct led_trigger *trig;
++ size_t len;
++
++ trigger_name[sizeof(trigger_name) - 1] = '\0';
++ strncpy(trigger_name, buf, sizeof(trigger_name) - 1);
++ len = strlen(trigger_name);
++
++ if (len && trigger_name[len - 1] == '\n')
++ trigger_name[len - 1] = '\0';
++
++ if (!strcmp(trigger_name, "none")) {
++ write_lock(&led_cdev->lock);
++ led_trigger_set(led_cdev, NULL);
++ write_unlock(&led_cdev->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);
++ led_trigger_set(led_cdev, trig);
++ write_unlock(&led_cdev->lock);
++
++ read_unlock(&triggers_list_lock);
++ return count;
++ }
++ }
++ read_unlock(&triggers_list_lock);
++
++ return -EINVAL;
++}
++
++
++ssize_t led_trigger_show(struct class_device *dev, char *buf)
++{
++ struct led_classdev *led_cdev = dev->class_data;
++ struct led_trigger *trig;
++ int len = 0;
++
++ read_lock(&led_cdev->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))
++ len += sprintf(buf+len, "[%s] ", trig->name);
++ else
++ len += sprintf(buf+len, "%s ", trig->name);
++ }
++ 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)
++{
++ struct list_head *entry;
++
++ if (!trigger)
++ return;
++
++ read_lock(&trigger->leddev_list_lock);
++ list_for_each(entry, &trigger->led_cdevs) {
++ struct led_classdev *led_cdev;
++
++ led_cdev = list_entry(entry, struct led_classdev, trig_list);
++ write_lock(&led_cdev->lock);
++ led_set_brightness(led_cdev, brightness);
++ write_unlock(&led_cdev->lock);
++ }
++ read_unlock(&trigger->leddev_list_lock);
++}
++
++/* Caller must ensure led_cdev->lock held for write */
++void led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trigger)
++{
++ /* Remove any existing trigger */
++ if (led_cdev->trigger) {
++ write_lock(&led_cdev->trigger->leddev_list_lock);
++ list_del(&led_cdev->trig_list);
++ 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);
++ list_add_tail(&led_cdev->trig_list, &trigger->led_cdevs);
++ write_unlock(&trigger->leddev_list_lock);
++ if (trigger->activate)
++ trigger->activate(led_cdev);
++ }
++ led_cdev->trigger = trigger;
++}
++
++void led_trigger_set_default(struct led_classdev *led_cdev)
++{
++ struct led_trigger *trig;
++
++ if (!led_cdev->default_trigger)
++ return;
++
++ write_lock(&led_cdev->lock);
++ read_lock(&triggers_list_lock);
++ list_for_each_entry(trig, &trigger_list, next_trig) {
++ if (!strcmp(led_cdev->default_trigger, trig->name))
++ led_trigger_set(led_cdev, trig);
++ }
++ read_unlock(&triggers_list_lock);
++ write_unlock(&led_cdev->lock);
++}
++
++int led_trigger_register(struct led_trigger *trigger)
++{
++ struct led_classdev *led_cdev;
++
++ rwlock_init(&trigger->leddev_list_lock);
++ INIT_LIST_HEAD(&trigger->led_cdevs);
++
++ /* Add to the list of led triggers */
++ write_lock(&triggers_list_lock);
++ 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);
++ list_for_each_entry(led_cdev, &leds_list, node) {
++ write_lock(&led_cdev->lock);
++ if (!led_cdev->trigger && led_cdev->default_trigger &&
++ !strcmp(led_cdev->default_trigger, trigger->name))
++ led_trigger_set(led_cdev, trigger);
++ write_unlock(&led_cdev->lock);
++ }
++ read_unlock(&leds_list);
++
++ return 0;
++}
++
++void led_trigger_register_simple(const char *name, struct led_trigger **tp)
++{
++ struct led_trigger *trigger;
++
++ trigger = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
++
++ if (trigger) {
++ trigger->name = name;
++ led_trigger_register(trigger);
++ }
++ *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);
++ write_unlock(&triggers_list_lock);
++
++ /* Remove anyone actively using this trigger */
++ read_lock(&leds_list);
++ list_for_each_entry(led_cdev, &leds_list, node) {
++ write_lock(&led_cdev->lock);
++ if (led_cdev->trigger == trigger)
++ led_trigger_set(led_cdev, NULL);
++ write_unlock(&led_cdev->lock);
++ }
++ read_unlock(&leds_list);
++}
++
++void led_trigger_unregister_simple(struct led_trigger *trigger)
++{
++ led_trigger_unregister(trigger);
++ kfree(trigger);
++}
++
++/* Used by LED Class */
++EXPORT_SYMBOL_GPL(led_trigger_set);
++EXPORT_SYMBOL_GPL(led_trigger_set_default);
++EXPORT_SYMBOL_GPL(led_trigger_show);
++EXPORT_SYMBOL_GPL(led_trigger_store);
++
++/* LED Trigger Interface */
++EXPORT_SYMBOL_GPL(led_trigger_register);
++EXPORT_SYMBOL_GPL(led_trigger_unregister);
++
++/* Simple LED Tigger Interface */
++EXPORT_SYMBOL_GPL(led_trigger_register_simple);
++EXPORT_SYMBOL_GPL(led_trigger_unregister_simple);
++EXPORT_SYMBOL_GPL(led_trigger_event);
++
++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 @@
++/*
++ * LED Kernel Timer Trigger
++ *
++ * Copyright 2005-2006 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.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/list.h>
++#include <linux/spinlock.h>
++#include <linux/device.h>
++#include <linux/sysdev.h>
++#include <linux/timer.h>
++#include <linux/leds.h>
++#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 */
++ struct timer_list timer;
++};
++
++static void led_timer_function(unsigned long data)
++{
++ struct led_classdev *led_cdev = (struct led_classdev *) data;
++ struct timer_trig_data *timer_data = led_cdev->trigger_data;
++ unsigned long brightness = LED_OFF;
++ unsigned long delay = timer_data->delay_off;
++
++ write_lock(&led_cdev->lock);
++
++ if (!timer_data->frequency) {
++ led_set_brightness(led_cdev, LED_OFF);
++ write_unlock(&led_cdev->lock);
++ return;
++ }
++
++ if (!led_cdev->brightness) {
++ brightness = LED_FULL;
++ delay = timer_data->delay_on;
++ }
++
++ led_set_brightness(led_cdev, brightness);
++
++ 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)
++{
++ 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);
++
++ return strlen(buf) + 1;
++}
++
++static ssize_t led_duty_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;
++ 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);
++ }
++
++ return ret;
++}
++
++
++static ssize_t led_frequency_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->frequency);
++ read_unlock(&led_cdev->lock);
++
++ return strlen(buf) + 1;
++}
++
++static ssize_t led_frequency_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;
++ 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);
++ }
++
++ 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 void timer_trig_activate(struct led_classdev *led_cdev)
++{
++ struct timer_trig_data *timer_data;
++
++ timer_data = kzalloc(sizeof(struct timer_trig_data), GFP_KERNEL);
++ if (!timer_data)
++ return;
++
++ led_cdev->trigger_data = timer_data;
++
++ init_timer(&timer_data->timer);
++ 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);
++}
++
++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);
++ del_timer_sync(&timer_data->timer);
++ kfree(timer_data);
++ }
++}
++
++static struct led_trigger timer_led_trigger = {
++ .name = "timer",
++ .activate = timer_trig_activate,
++ .deactivate = timer_trig_deactivate,
++};
++
++static int __init timer_trig_init(void)
++{
++ return led_trigger_register(&timer_led_trigger);
++}
++
++static void __exit timer_trig_exit (void)
++{
++ led_trigger_unregister(&timer_led_trigger);
++}
++
++module_init(timer_trig_init);
++module_exit(timer_trig_exit);
++
++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
+
+
+ /*
++ * Corgi LEDs
++ */
++static struct platform_device corgiled_device = {
++ .name = "corgi-led",
++ .id = -1,
++};
++
++
++/*
+ * Corgi Touch Screen Device
+ */
+ static struct resource corgits_resources[] = {
+@@ -298,6 +307,7 @@ static struct platform_device *devices[]
+ &corgikbd_device,
+ &corgibl_device,
+ &corgits_device,
++ &corgiled_device,
+ };
+
+ 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
+
+
+ /*
++ * Spitz LEDs
++ */
++static struct platform_device spitzled_device = {
++ .name = "spitz-led",
++ .id = -1,
++};
++
++
++/*
+ * Spitz Touch Screen Device
+ */
+ static struct resource spitzts_resources[] = {
+@@ -419,6 +428,7 @@ static struct platform_device *devices[]
+ &spitzkbd_device,
+ &spitzts_device,
+ &spitzbl_device,
++ &spitzled_device,
+ };
+
+ 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
+@@ -0,0 +1,121 @@
++/*
++ * LED Triggers Core
++ *
++ * Copyright 2005-2006 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.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/mach-types.h>
++#include <asm/arch/corgi.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/hardware/scoop.h>
++
++static void corgiled_amber_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ GPSR0 = GPIO_bit(CORGI_GPIO_LED_ORANGE);
++ else
++ GPCR0 = GPIO_bit(CORGI_GPIO_LED_ORANGE);
++}
++
++static void corgiled_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_LED_GREEN);
++ else
++ reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_LED_GREEN);
++}
++
++static struct led_classdev corgi_amber_led = {
++ .name = "corgi:amber",
++ .default_trigger = "sharpsl-charge",
++ .brightness_set = corgiled_amber_set,
++};
++
++static struct led_classdev corgi_green_led = {
++ .name = "corgi:green",
++ .default_trigger = "nand-disk",
++ .brightness_set = corgiled_green_set,
++};
++
++#ifdef CONFIG_PM
++static int corgiled_suspend(struct platform_device *dev, pm_message_t state)
++{
++#ifdef CONFIG_LEDS_TRIGGERS
++ if (corgi_amber_led.trigger && strcmp(corgi_amber_led.trigger->name, "sharpsl-charge"))
++#endif
++ led_classdev_suspend(&corgi_amber_led);
++ led_classdev_suspend(&corgi_green_led);
++ return 0;
++}
++
++static int corgiled_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&corgi_amber_led);
++ led_classdev_resume(&corgi_green_led);
++ return 0;
++}
++#endif
++
++static int corgiled_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &corgi_amber_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &corgi_green_led);
++ if (ret < 0)
++ led_classdev_unregister(&corgi_amber_led);
++
++ return ret;
++}
++
++static int corgiled_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&corgi_amber_led);
++ led_classdev_unregister(&corgi_green_led);
++ return 0;
++}
++
++static struct platform_driver corgiled_driver = {
++ .probe = corgiled_probe,
++ .remove = corgiled_remove,
++#ifdef CONFIG_PM
++ .suspend = corgiled_suspend,
++ .resume = corgiled_resume,
++#endif
++ .driver = {
++ .name = "corgi-led",
++ },
++};
++
++static int __devinit corgiled_init(void)
++{
++ return platform_driver_register(&corgiled_driver);
++}
++
++static void corgiled_exit(void)
++{
++ platform_driver_unregister(&corgiled_driver);
++}
++
++module_init(corgiled_init);
++module_exit(corgiled_exit);
++
++MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
++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
+@@ -0,0 +1,125 @@
++/*
++ * LED Triggers Core
++ *
++ * Copyright 2005-2006 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.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/hardware/scoop.h>
++#include <asm/mach-types.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/spitz.h>
++
++static void spitzled_amber_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_ORANGE);
++ else
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_ORANGE);
++}
++
++static void spitzled_green_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_GREEN);
++ else
++ reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_GREEN);
++}
++
++static struct led_classdev spitz_amber_led = {
++ .name = "spitz:amber",
++ .default_trigger = "sharpsl-charge",
++ .brightness_set = spitzled_amber_set,
++};
++
++static struct led_classdev spitz_green_led = {
++ .name = "spitz:green",
++ .default_trigger = "ide-disk",
++ .brightness_set = spitzled_green_set,
++};
++
++#ifdef CONFIG_PM
++static int spitzled_suspend(struct platform_device *dev, pm_message_t state)
++{
++#ifdef CONFIG_LEDS_TRIGGERS
++ if (spitz_amber_led.trigger && strcmp(spitz_amber_led.trigger->name, "sharpsl-charge"))
++#endif
++ led_classdev_suspend(&spitz_amber_led);
++ led_classdev_suspend(&spitz_green_led);
++ return 0;
++}
++
++static int spitzled_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&spitz_amber_led);
++ led_classdev_resume(&spitz_green_led);
++ return 0;
++}
++#endif
++
++static int spitzled_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ if (machine_is_akita())
++ spitz_green_led.default_trigger = "nand-disk";
++
++ ret = led_classdev_register(&pdev->dev, &spitz_amber_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &spitz_green_led);
++ if (ret < 0)
++ led_classdev_unregister(&spitz_amber_led);
++
++ return ret;
++}
++
++static int spitzled_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&spitz_amber_led);
++ led_classdev_unregister(&spitz_green_led);
++
++ return 0;
++}
++
++static struct platform_driver spitzled_driver = {
++ .probe = spitzled_probe,
++ .remove = spitzled_remove,
++#ifdef CONFIG_PM
++ .suspend = spitzled_suspend,
++ .resume = spitzled_resume,
++#endif
++ .driver = {
++ .name = "spitz-led",
++ },
++};
++
++static int __devinit spitzled_init(void)
++{
++ return platform_driver_register(&spitzled_driver);
++}
++
++static void spitzled_exit(void)
++{
++ platform_driver_unregister(&spitzled_driver);
++}
++
++module_init(spitzled_init);
++module_exit(spitzled_exit);
++
++MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>");
++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/drivers/leds/locomo.c
++ *
++ * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu>
++ *
++ * 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/kernel.h>
++#include <linux/init.h>
++#include <linux/device.h>
++#include <linux/leds.h>
++
++#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)
++{
++ struct locomo_dev *locomo_dev = LOCOMO_DEV(led_cdev->class_dev->dev);
++ unsigned long flags;
++
++ local_irq_save(flags);
++ if (value)
++ locomo_writel(LOCOMO_LPT_TOFH, locomo_dev->mapbase + offset);
++ else
++ locomo_writel(LOCOMO_LPT_TOFL, locomo_dev->mapbase + offset);
++ local_irq_restore(flags);
++}
++
++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)
++{
++ locomoled_brightness_set(led_cdev, value, LOCOMO_LPT1);
++}
++
++static struct led_classdev locomo_led0 = {
++ .name = "locomo:amber",
++ .brightness_set = locomoled_brightness_set0,
++};
++
++static struct led_classdev locomo_led1 = {
++ .name = "locomo:green",
++ .brightness_set = locomoled_brightness_set1,
++};
++
++static int locomoled_probe(struct locomo_dev *ldev)
++{
++ int ret;
++
++ ret = led_classdev_register(&ldev->dev, &locomo_led0);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&ldev->dev, &locomo_led1);
++ if (ret < 0)
++ led_classdev_unregister(&locomo_led0);
++
++ return ret;
++}
++
++static int locomoled_remove(struct locomo_dev *dev)
++{
++ led_classdev_unregister(&locomo_led0);
++ led_classdev_unregister(&locomo_led1);
++ return 0;
++}
++
++static struct locomo_driver locomoled_driver = {
++ .drv = {
++ .name = "locomoled"
++ },
++ .devid = LOCOMO_DEVID_LED,
++ .probe = locomoled_probe,
++ .remove = locomoled_remove,
++};
++
++static int __init locomoled_init(void) {
++ return locomo_driver_register(&locomoled_driver);
++}
++module_init(locomoled_init);
++
++MODULE_AUTHOR("John Lenz <lenz@cs.wisc.edu>");
++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 @@
++/*
++ * IXP4XX GPIO driver LED driver
++ *
++ * Author: John Bowler <jbowler@acm.org>
++ *
++ * Copyright (c) 2006 John Bowler
++ *
++ * Permission is hereby granted, free of charge, to any
++ * person obtaining a copy of this software and associated
++ * documentation files (the "Software"), to deal in the
++ * Software without restriction, including without
++ * limitation the rights to use, copy, modify, merge,
++ * publish, distribute, sublicense, and/or sell copies of
++ * the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the
++ * following conditions:
++ *
++ * The above copyright notice and this permission notice
++ * shall be included in all copies or substantial portions
++ * of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
++ * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
++ * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
++ * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
++ * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
++ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/spinlock.h>
++#include <linux/leds.h>
++#include <asm/arch/hardware.h>
++
++extern spinlock_t gpio_lock;
++
++/* Up to 16 gpio lines are possible. */
++#define GPIO_MAX 16
++static struct ixp4xxgpioled_device {
++ struct led_classdev ancestor;
++ int flags;
++} ixp4xxgpioled_devices[GPIO_MAX];
++
++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);
++ const u32 gpio_pin = ixp4xx_dev - ixp4xxgpioled_devices;
++
++ if (gpio_pin < GPIO_MAX && ixp4xx_dev->ancestor.name != 0) {
++ /* Set or clear the 'gpio_pin' bit according to the style
++ * and the required setting (value > 0 == on)
++ */
++ const int gpio_value =
++ (value > 0) == (ixp4xx_dev->flags != IXP4XX_GPIO_LOW) ?
++ IXP4XX_GPIO_HIGH : IXP4XX_GPIO_LOW;
++
++ {
++ unsigned long flags;
++ spin_lock_irqsave(&gpio_lock, flags);
++ gpio_line_set(gpio_pin, gpio_value);
++ spin_unlock_irqrestore(&gpio_lock, flags);
++ }
++ }
++}
++
++/* LEDs are described in resources, the following iterates over the valid
++ * LED resources.
++ */
++#define for_all_leds(i, pdev) \
++ for (i=0; i<pdev->num_resources; ++i) \
++ if (pdev->resource[i].start < GPIO_MAX && \
++ pdev->resource[i].name != 0)
++
++/* The following applies 'operation' to each LED from the given platform,
++ * 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)) {
++ 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)
++{
++ return apply_to_all_leds(pdev, led_classdev_suspend);
++}
++
++static int ixp4xxgpioled_resume(struct platform_device *pdev)
++{
++ return apply_to_all_leds(pdev, led_classdev_resume);
++}
++#endif
++
++static void ixp4xxgpioled_remove_one_led(struct led_classdev *pled) {
++ led_classdev_unregister(pled);
++ pled->name = 0;
++}
++
++static int ixp4xxgpioled_remove(struct platform_device *pdev)
++{
++ return apply_to_all_leds(pdev, ixp4xxgpioled_remove_one_led);
++}
++
++static int ixp4xxgpioled_probe(struct platform_device *pdev)
++{
++ /* The board level has to tell the driver where the
++ * LEDs are connected - there is no way to find out
++ * electrically. It must also say whether the GPIO
++ * lines are active high or active low.
++ *
++ * To do this read the num_resources (the number of
++ * LEDs) and the struct resource (the data for each
++ * LED). The name comes from the resource, and it
++ * isn't copied.
++ */
++ int i;
++ for_all_leds(i, pdev) {
++ const u8 gpio_pin = pdev->resource[i].start;
++ int rc;
++
++ if (ixp4xxgpioled_devices[gpio_pin].ancestor.name == 0) {
++ unsigned long flags;
++
++ spin_lock_irqsave(&gpio_lock, flags);
++ gpio_line_config(gpio_pin, IXP4XX_GPIO_OUT);
++ /* The config can, apparently, reset the state,
++ * I suspect the gpio line may be an input and
++ * the config may cause the line to be latched,
++ * so the setting depends on how the LED is
++ * connected to the line (which affects how it
++ * floats if not driven).
++ */
++ gpio_line_set(gpio_pin, IXP4XX_GPIO_HIGH);
++ spin_unlock_irqrestore(&gpio_lock, flags);
++
++ ixp4xxgpioled_devices[gpio_pin].flags =
++ pdev->resource[i].flags & IORESOURCE_BITS;
++
++ ixp4xxgpioled_devices[gpio_pin].ancestor.name =
++ pdev->resource[i].name;
++
++ /* This is how a board manufacturer makes the LED
++ * come on on reset - the GPIO line will be high, so
++ * make the LED light when the line is low...
++ */
++ if (ixp4xxgpioled_devices[gpio_pin].flags != IXP4XX_GPIO_LOW)
++ ixp4xxgpioled_devices[gpio_pin].ancestor.brightness = 100;
++ else
++ ixp4xxgpioled_devices[gpio_pin].ancestor.brightness = 0;
++
++ ixp4xxgpioled_devices[gpio_pin].ancestor.flags = 0;
++
++ ixp4xxgpioled_devices[gpio_pin].ancestor.brightness_set =
++ ixp4xxgpioled_brightness_set;
++
++ ixp4xxgpioled_devices[gpio_pin].ancestor.default_trigger = 0;
++ }
++
++ rc = led_classdev_register(&pdev->dev,
++ &ixp4xxgpioled_devices[gpio_pin].ancestor);
++ if (rc < 0) {
++ ixp4xxgpioled_devices[gpio_pin].ancestor.name = 0;
++ ixp4xxgpioled_remove(pdev);
++ return rc;
++ }
++ }
++
++ return 0;
++}
++
++static struct platform_driver ixp4xxgpioled_driver = {
++ .probe = ixp4xxgpioled_probe,
++ .remove = ixp4xxgpioled_remove,
++#ifdef CONFIG_PM
++ .suspend = ixp4xxgpioled_suspend,
++ .resume = ixp4xxgpioled_resume,
++#endif
++ .driver = {
++ .name = "IXP4XX-GPIO-LED",
++ },
++};
++
++static int __devinit ixp4xxgpioled_init(void)
++{
++ return platform_driver_register(&ixp4xxgpioled_driver);
++}
++
++static void ixp4xxgpioled_exit(void)
++{
++ platform_driver_unregister(&ixp4xxgpioled_driver);
++}
++
++module_init(ixp4xxgpioled_init);
++module_exit(ixp4xxgpioled_exit);
++
++MODULE_AUTHOR("John Bowler <jbowler@acm.org>");
++MODULE_DESCRIPTION("IXP4XX GPIO LED driver");
++MODULE_LICENSE("MIT");
+--- /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 @@
++/*
++ * LED Triggers Core
++ *
++ * Copyright 2005 Dirk Opfer
++ *
++ * Author: Dirk Opfer <Dirk@Opfer-Online.de>
++ * based on spitz.c
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ */
++
++#include <linux/config.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <asm/hardware/scoop.h>
++#include <asm/mach-types.h>
++#include <asm/arch/hardware.h>
++#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)
++{
++ if (value)
++ 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);
++}
++
++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);
++ else
++ reset_scoop_gpio(&tosascoop_jc_device.dev, TOSA_SCOOP_JC_NOTE_LED);
++}
++
++static struct led_classdev tosa_amber_led = {
++ .name = "tosa:amber",
++ .default_trigger = "sharpsl-charge",
++ .brightness_set = tosaled_amber_set,
++};
++
++static struct led_classdev tosa_green_led = {
++ .name = "tosa:green",
++ .default_trigger = "nand-disk",
++ .brightness_set = tosaled_green_set,
++};
++
++#ifdef CONFIG_PM
++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"))
++#endif
++ led_classdev_suspend(&tosa_amber_led);
++ led_classdev_suspend(&tosa_green_led);
++ return 0;
++}
++
++static int tosaled_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&tosa_amber_led);
++ led_classdev_resume(&tosa_green_led);
++ return 0;
++}
++#endif
++
++static int tosaled_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ ret = led_classdev_register(&pdev->dev, &tosa_amber_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &tosa_green_led);
++ if (ret < 0)
++ led_classdev_unregister(&tosa_amber_led);
++
++ return ret;
++}
++
++static int tosaled_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&tosa_amber_led);
++ led_classdev_unregister(&tosa_green_led);
++
++ return 0;
++}
++
++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)
++{
++ return platform_driver_register(&tosaled_driver);
++}
++
++static void tosaled_exit(void)
++{
++ platform_driver_unregister(&tosaled_driver);
++}
++
++module_init(tosaled_init);
++module_exit(tosaled_exit);
++
++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
+@@ -60,6 +60,7 @@
+ #include <linux/genhd.h>
+ #include <linux/slab.h>
+ #include <linux/delay.h>
++#include <linux/leds.h>
+
+ #define _IDE_DISK
+
+@@ -80,6 +81,8 @@ struct ide_disk_obj {
+
+ static DECLARE_MUTEX(idedisk_ref_sem);
+
++INIT_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
+
+ if (!blk_fs_request(rq)) {
+ blk_dump_rq_flags(rq, "ide_do_rw_disk - bad command");
+- ide_end_request(drive, 0, 0);
++ ide_end_rw_disk(drive, 0, 0);
+ return ide_stopped;
+ }
+
++ led_trigger_event(ide_led_trigger, LED_FULL);
++
+ 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 = {
+ .media = ide_disk,
+ .supports_dsc_overlap = 0,
+ .do_request = ide_do_rw_disk,
+- .end_request = ide_end_request,
++ .end_request = ide_end_rw_disk,
+ .error = __ide_error,
+ .abort = __ide_abort,
+ .proc = idedisk_proc,
+@@ -1236,11 +1247,13 @@ failed:
+
+ static void __exit idedisk_exit (void)
+ {
++ led_trigger_unregister_simple(ide_led_trigger);
+ driver_unregister(&idedisk_driver.gen_driver);
+ }
+
+ static int __init idedisk_init(void)
+ {
++ led_trigger_register_simple("ide-disk", &ide_led_trigger);
+ return driver_register(&idedisk_driver.gen_driver);
+ }
+
+--- 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
+@@ -80,6 +80,7 @@
+ #include <linux/mtd/compatmac.h>
+ #include <linux/interrupt.h>
+ #include <linux/bitops.h>
++#include <linux/leds.h>
+ #include <asm/io.h>
+
+ #ifdef CONFIG_MTD_PARTITIONS
+@@ -515,6 +516,8 @@ static int nand_block_checkbad (struct m
+ return nand_isbad_bbt (mtd, ofs, allowbbt);
+ }
+
++INIT_LED_TRIGGER(nand_led_trigger);
++
+ /*
+ * Wait for the ready pin, after a command
+ * The timeout is catched later.
+@@ -524,12 +527,14 @@ static void nand_wait_ready(struct mtd_i
+ struct nand_chip *this = mtd->priv;
+ unsigned long timeo = jiffies + 2;
+
++ led_trigger_event(nand_led_trigger, LED_FULL);
+ /* wait until command is processed or timeout occures */
+ do {
+ if (this->dev_ready(mtd))
+- return;
++ break;
+ touch_softlockup_watchdog();
+ } while (time_before(jiffies, timeo));
++ led_trigger_event(nand_led_trigger, LED_OFF);
+ }
+
+ /**
+@@ -817,6 +822,8 @@ static int nand_wait(struct mtd_info *mt
+ else
+ timeo += (HZ * 20) / 1000;
+
++ led_trigger_event(nand_led_trigger, LED_FULL);
++
+ /* Apply this short delay always to ensure that we do wait tWB in
+ * any case on any machine. */
+ ndelay (100);
+@@ -840,6 +847,8 @@ static int nand_wait(struct mtd_info *mt
+ }
+ cond_resched();
+ }
++ led_trigger_event(nand_led_trigger, LED_OFF);
++
+ status = (int) this->read_byte(mtd);
+ return status;
+ }
+@@ -2724,6 +2733,21 @@ void nand_release (struct mtd_info *mtd)
+ EXPORT_SYMBOL_GPL (nand_scan);
+ EXPORT_SYMBOL_GPL (nand_release);
+
++
++static int __init nand_base_init(void)
++{
++ led_trigger_register_simple("nand-disk", &nand_led_trigger);
++ return 0;
++}
++
++static void nand_base_exit(void)
++{
++ led_trigger_unregister_simple(nand_led_trigger);
++}
++
++module_init(nand_base_init);
++module_exit(nand_base_exit);
++
+ MODULE_LICENSE ("GPL");
+ MODULE_AUTHOR ("Steven J. Hill <sjhill@realitydiluted.com>, Thomas Gleixner <tglx@linutronix.de>");
+ MODULE_DESCRIPTION ("Generic NAND flash driver code");
diff --git a/packages/linux/ixp4xx-kernel/2.6.16/05-patch-2.6.16-rc2-ide2 b/packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc4-ide2
index 3ea46331f6..ea23ff47d3 100644
--- a/packages/linux/ixp4xx-kernel/2.6.16/05-patch-2.6.16-rc2-ide2
+++ b/packages/linux/ixp4xx-kernel/2.6.16/patch-2.6.16-rc4-ide2
@@ -1,6 +1,6 @@
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/arch/i386/pci/fixup.c linux-2.6.16-rc2/arch/i386/pci/fixup.c
---- linux.vanilla-2.6.16-rc2/arch/i386/pci/fixup.c 2006-02-06 12:21:33.000000000 +0000
-+++ linux-2.6.16-rc2/arch/i386/pci/fixup.c 2006-02-01 14:49:17.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/arch/i386/pci/fixup.c linux-2.6.16-rc4/arch/i386/pci/fixup.c
+--- linux.vanilla-2.6.16-rc4/arch/i386/pci/fixup.c 2006-02-20 11:22:15.000000000 +0000
++++ linux-2.6.16-rc4/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);
@@ -54,22 +54,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
static void __devinit pci_fixup_latency(struct pci_dev *d)
{
/*
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/cdrom/cdrom.c linux-2.6.16-rc2/drivers/cdrom/cdrom.c
---- linux.vanilla-2.6.16-rc2/drivers/cdrom/cdrom.c 2006-02-06 12:21:34.000000000 +0000
-+++ linux-2.6.16-rc2/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 --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/pci/probe.c linux-2.6.16-rc2/drivers/pci/probe.c
---- linux.vanilla-2.6.16-rc2/drivers/pci/probe.c 2006-02-06 12:21:35.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/pci/probe.c 2006-02-01 15:56:28.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/pci/probe.c linux-2.6.16-rc4/drivers/pci/probe.c
+--- linux.vanilla-2.6.16-rc4/drivers/pci/probe.c 2006-02-20 11:22:17.000000000 +0000
++++ linux-2.6.16-rc4/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)
{
@@ -110,21 +97,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
break;
case PCI_HEADER_TYPE_BRIDGE: /* bridge header */
-@@ -687,6 +713,10 @@
- dev->class = PCI_CLASS_NOT_DEFINED;
- }
-
-+ /* BIOS enabled, so assume there is a good reason */
-+ pci_read_config_word(dev, PCI_COMMAND, &cmd);
-+ if(cmd & PCI_COMMAND_MASTER)
-+ dev->is_enabled = 1;
- /* We found a fine healthy device, go go go... */
- return 0;
- }
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/ata_generic.c linux-2.6.16-rc2/drivers/scsi/ata_generic.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/ata_generic.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/ata_generic.c 2006-02-07 13:47:27.337665568 +0000
-@@ -0,0 +1,242 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/ata_generic.c linux-2.6.16-rc4/drivers/scsi/ata_generic.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/ata_generic.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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.
@@ -198,7 +174,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* 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))) {
++ if (dma_enabled & (1 << (5 + i))) {
+ dev->xfer_mode = XFER_MW_DMA_0;
+ dev->xfer_shift = ATA_SHIFT_MWDMA;
+ dev->flags &= ~ATA_DFLAG_PIO;
@@ -323,7 +299,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+}
+
+static struct pci_device_id pata_generic[] = {
-+ { PCI_DEVICE(PCI_VENDOR_ID_NS,PCI_DEVICE_ID_NS_87410),},
+ { 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), },
@@ -367,9 +342,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(pata_generic_init);
+module_exit(pata_generic_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/ata_piix.c linux-2.6.16-rc2/drivers/scsi/ata_piix.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/ata_piix.c 2006-02-06 12:21:35.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/ata_piix.c 2006-02-06 12:28:58.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/ata_piix.c linux-2.6.16-rc4/drivers/scsi/ata_piix.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/ata_piix.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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>
@@ -378,7 +353,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
#define DRV_NAME "ata_piix"
-#define DRV_VERSION "1.05"
-+#define DRV_VERSION "1.05-ac1"
++#define DRV_VERSION "1.05-ac7"
enum {
PIIX_IOCFG = 0x54, /* IDE I/O configuration register */
@@ -522,7 +497,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt,
-@@ -259,13 +356,9 @@
+@@ -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 */
@@ -531,13 +513,28 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
-#else
- .mwdma_mask = 0x00, /* mwdma broken */
-#endif
- .udma_mask = 0x3f, /* udma0-5 */
+- .udma_mask = 0x3f, /* udma0-5 */
- .port_ops = &piix_pata_ops,
++ .udma_mask = ATA_UDMA6,
+ .port_ops = &ich_pata_ops,
},
- /* ich5_sata */
-@@ -284,11 +377,7 @@
+- /* 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 */
@@ -549,62 +546,86 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.udma_mask = ATA_UDMA_MASK_40C,
.port_ops = &piix_pata_ops,
},
-@@ -316,6 +405,116 @@
- .udma_mask = 0x7f, /* udma0-6 */
+
+- /* 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 */
++ /* 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 = 0x07, /* UDMA33 only */
++ .udma_mask = ATA_UDMA4,
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* ich2_pata */
++ /* 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 = 0x1f, /* UDMA100 */
++ .udma_mask = ATA_UDMA5,
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* ich3_pata */
++ /* 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 = 0x1f, /* UDMA100 */
++ .udma_mask = ATA_UDMA5,
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* ich4_pata */
++ /* 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 = 0x1f, /* UDMA100 */
++ .udma_mask = ATA_UDMA5,
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* cich_pata */
++ /* 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 = 0x1f, /* UDMA100 */
++ .udma_mask = ATA_UDMA5,
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* piix3_pata */
++ /* piix3_pata: 10 */
+ {
+ .sht = &piix_sht,
+ .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST,
@@ -614,53 +635,53 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .port_ops = &piix_pata_ops,
+ },
+
-+ /* esb_pata */
++ /* 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 = 0x1f, /* UDMA100 */
++ .udma_mask = ATA_UDMA5,
+ .port_ops = &piix_pata_ops,
+ },
+
-+ /* ich_pata */
++ /* 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 = 0x07, /* UDMA66 */
++ .udma_mask = ATA_UDMA4, /* UDMA66 */
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* ich6_pata */
++ /* 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 = 0x3f, /* UDMA133 */
++ .udma_mask = ATA_UDMA6, /* UDMA133 */
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* ich7_pata */
++ /* 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 = 0x3f, /* UDMA133 */
++ .udma_mask = ATA_UDMA6,
+ .port_ops = &ich_pata_ops,
+ },
+
-+ /* esb2_pata */
++ /* 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 = 0x1f, /* UDMA100 -- CHECKME --*/
++ .udma_mask = ATA_UDMA5,
+ .port_ops = &ich_pata_ops,
+ },
};
@@ -784,7 +805,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* Ensure the UDMA bit is off - it will be turned back on if
+ UDMA is selected */
+
-+ if(ap->udma_mask) {
++ 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);
@@ -873,7 +894,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
- pci_write_config_byte(dev, 0x55, (u8) reg55 & ~w_flag);
+ unsigned int udma = adev->dma_mode - XFER_UDMA_0;
+ u16 udma_timing;
-+ u32 ideconf;
++ u16 ideconf;
+ int u_clock, u_speed;
+
+ /*
@@ -899,14 +920,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ udma_timing |= u_speed << (4 * devid);
+ pci_write_config_word(dev, 0x4A, udma_timing);
+
-+ if(isich) {
++ if (isich) {
+ /* Select a 33/66/100Mhz clock */
-+ pci_read_config_dword(dev, 0x54, &ideconf);
++ 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_dword(dev, 0x54, ideconf);
++ pci_write_config_word(dev, 0x54, ideconf);
}
- if ((reg4a & a_speed) != u_speed)
- pci_write_config_word(dev, 0x4a, (reg4a & ~a_speed) | u_speed);
@@ -966,7 +987,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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)
++ if (ap->udma_mask)
+ pci_write_config_byte(dev, 0x48, udma_enable);
+}
+
@@ -1003,10 +1024,30 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
}
#define AHCI_PCI_BAR 5
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/Kconfig linux-2.6.16-rc2/drivers/scsi/Kconfig
---- linux.vanilla-2.6.16-rc2/drivers/scsi/Kconfig 2006-02-06 12:21:35.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/Kconfig 2006-02-07 13:48:49.000000000 +0000
-@@ -599,6 +599,289 @@
+@@ -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-rc4/drivers/scsi/Kconfig linux-2.6.16-rc4/drivers/scsi/Kconfig
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/Kconfig 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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
@@ -1190,11 +1231,20 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ 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 old(?) PIIX PATA support.
++ This option enables support for early PIIX PATA interfaces.
+
+ If unsure, say N.
+
@@ -1209,19 +1259,37 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+config SCSI_PATA_PCMCIA
+ tristate "PCMCIA PATA support (Raving Lunatic)"
-+ depends on SCSI_SATA
++ 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
@@ -1296,9 +1364,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
config SCSI_BUSLOGIC
tristate "BusLogic SCSI support"
depends on (PCI || ISA || MCA) && SCSI && ISA_DMA_API
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/libata-core.c linux-2.6.16-rc2/drivers/scsi/libata-core.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/libata-core.c 2006-02-06 12:21:35.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/libata-core.c 2006-02-07 11:23:41.765951784 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/libata-core.c linux-2.6.16-rc4/drivers/scsi/libata-core.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/libata-core.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/libata-core.c 2006-02-23 13:37:47.358092040 +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);
@@ -1311,15 +1379,15 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
u8 *xfer_mode_out,
unsigned int *xfer_shift_out);
static void __ata_qc_complete(struct ata_queued_cmd *qc);
-@@ -614,7 +615,7 @@
- } else if (lba48 && (qc->ap->flags & ATA_FLAG_PIO_LBA48)) {
- /* Unable to use DMA due to host limitation */
- tf->protocol = ATA_PROT_PIO;
-- index = dev->multi_count ? 0 : 4;
-+ index = dev->multi_count ? 0 : 8;
- } else {
- tf->protocol = ATA_PROT_DMA;
- index = 16;
+@@ -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)");
+
@@ -1205,6 +1206,48 @@
return 0;
}
@@ -1392,7 +1460,33 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
}
/* ATAPI-specific feature tests */
-@@ -1497,7 +1547,11 @@
+@@ -1485,10 +1535,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);
+ }
+@@ -1497,7 +1561,11 @@
if ((!found) || (ap->flags & ATA_FLAG_PORT_DISABLED))
goto err_out_disable;
@@ -1405,7 +1499,31 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
if (ap->flags & ATA_FLAG_PORT_DISABLED)
goto err_out_disable;
-@@ -1824,16 +1878,19 @@
+@@ -1612,6 +1680,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.
+ *
+@@ -1824,16 +1909,19 @@
ap->id, dev->devno, xfer_mode_str[idx]);
}
@@ -1429,7 +1547,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
return -1;
}
-@@ -1843,34 +1900,24 @@
+@@ -1843,34 +1931,24 @@
DPRINTK("base 0x%x xfer_mode 0x%x mask 0x%x x %d\n",
(int)base, (int)xfer_mode, mask, x);
@@ -1477,7 +1595,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
}
}
-@@ -1886,32 +1933,64 @@
+@@ -1886,32 +1964,64 @@
*/
static void ata_set_mode(struct ata_port *ap)
{
@@ -1521,12 +1639,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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;
-+ }
- /* step 3: if that xfer mode isn't PIO, set host DMA timings */
- if (xfer_shift != ATA_SHIFT_PIO)
@@ -1535,6 +1647,12 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
- /* step 4: update devices' xfer mode */
- ata_dev_set_mode(ap, &ap->device[0]);
- ata_dev_set_mode(ap, &ap->device[1]);
++ /* 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. */
+
@@ -1560,7 +1678,118 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
if (ap->ops->post_set_mode)
ap->ops->post_set_mode(ap);
-@@ -2256,76 +2335,57 @@
+@@ -2200,132 +2310,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;
}
@@ -1614,6 +1843,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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;
@@ -1658,11 +1890,12 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
}
- }
- else {
-+ } else if (shift != ATA_SHIFT_PIO) {
- mask = 0xffffffff; /* shut up compiler warning */
- BUG();
- }
-
+- 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.
@@ -1672,7 +1905,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
return mask;
}
-@@ -2345,6 +2405,7 @@
+@@ -2345,6 +2449,7 @@
/**
* ata_choose_xfer_mode - attempt to find best transfer mode
* @ap: Port for which an xfer mode will be selected
@@ -1680,7 +1913,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
* @xfer_mode_out: (output) SET FEATURES - XFER MODE code
* @xfer_shift_out: (output) bit shift that selects this mode
*
-@@ -2359,6 +2420,7 @@
+@@ -2359,6 +2464,7 @@
*/
static int ata_choose_xfer_mode(const struct ata_port *ap,
@@ -1688,7 +1921,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
u8 *xfer_mode_out,
unsigned int *xfer_shift_out)
{
-@@ -2367,7 +2429,7 @@
+@@ -2367,7 +2473,7 @@
for (i = 0; i < ARRAY_SIZE(xfer_mode_classes); i++) {
shift = xfer_mode_classes[i].shift;
@@ -1697,22 +1930,41 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
x = fgb(mask);
if (x >= 0) {
-@@ -3010,7 +3072,7 @@
+@@ -3000,6 +3106,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
+@@ -3010,8 +3117,8 @@
* Inherited from caller.
*/
-static void ata_mmio_data_xfer(struct ata_port *ap, unsigned char *buf,
-+void ata_mmio_data_xfer(struct ata_port *ap, unsigned char *buf,
- unsigned int buflen, int write_data)
+- 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;
-@@ -3055,11 +3117,11 @@
+ unsigned int words = buflen >> 1;
+@@ -3045,6 +3152,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
+@@ -3055,11 +3163,11 @@
* Inherited from caller.
*/
-static void ata_pio_data_xfer(struct ata_port *ap, unsigned char *buf,
-+void ata_pio_data_xfer(struct ata_port *ap, unsigned char *buf,
- unsigned int buflen, int write_data)
+- 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;
-
@@ -1720,13 +1972,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
/* Transfer multiple of 2 bytes */
if (write_data)
outsw(ap->ioaddr.data_addr, buf, words);
-@@ -3082,36 +3144,53 @@
+@@ -3082,36 +3190,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
@@ -1741,8 +1994,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
*/
-static void ata_data_xfer(struct ata_port *ap, unsigned char *buf,
-+void ata_pio_data_xfer_noirq(struct ata_port *ap, unsigned char *buf,
- unsigned int buflen, int do_write)
+- 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)) {
@@ -1761,13 +2015,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
- }
+ unsigned long flags;
+ local_irq_save(flags);
-+ ata_pio_data_xfer(ap, buf, buflen, do_write);
++ 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
@@ -1780,45 +2035,45 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * Inherited from caller.
+ */
+
-+void ata_mmio_data_xfer_noirq(struct ata_port *ap, unsigned char *buf,
-+ unsigned int buflen, int do_write)
++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, buf, buflen, do_write);
++ ata_mmio_data_xfer(ap, adev, buf, buflen, do_write);
+ local_irq_restore(flags);
}
/**
-@@ -3157,7 +3236,7 @@
+@@ -3157,7 +3284,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, buf, ATA_SECT_SIZE, do_write);
++ ap->ops->data_xfer(ap, qc->dev, buf, ATA_SECT_SIZE, do_write);
kunmap(page);
}
-@@ -3204,7 +3283,7 @@
+@@ -3204,7 +3331,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, (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;
-@@ -3239,7 +3318,7 @@
+@@ -3239,7 +3366,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, buf, count, do_write);
++ ap->ops->data_xfer(ap, qc->dev, buf, count, do_write);
kunmap(page);
-@@ -3947,14 +4026,15 @@
+@@ -3948,14 +4075,15 @@
void ata_bmdma_irq_clear(struct ata_port *ap)
{
@@ -1842,22 +2097,22 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
}
-@@ -4193,12 +4273,12 @@
+@@ -4194,12 +4322,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->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->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;
-@@ -4504,7 +4584,7 @@
+@@ -4505,7 +4633,7 @@
* Number of ports registered. Zero on error (no ports registered).
*/
@@ -1866,7 +2121,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
{
unsigned int count = 0, i;
struct device *dev = ent->dev;
-@@ -4524,6 +4604,9 @@
+@@ -4525,6 +4653,9 @@
host_set->mmio_base = ent->mmio_base;
host_set->private_data = ent->private_data;
host_set->ops = ent->port_ops;
@@ -1876,7 +2131,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
/* register each port bound to this device */
for (i = 0; i < ent->n_ports; i++) {
-@@ -4535,6 +4618,14 @@
+@@ -4536,6 +4667,14 @@
goto err_out;
host_set->ports[i] = ap;
@@ -1891,7 +2146,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
xfer_mode_mask =(ap->udma_mask << ATA_SHIFT_UDMA) |
(ap->mwdma_mask << ATA_SHIFT_MWDMA) |
(ap->pio_mask << ATA_SHIFT_PIO);
-@@ -4551,6 +4642,7 @@
+@@ -4552,6 +4691,7 @@
ent->irq);
ata_chk_status(ap);
@@ -1899,7 +2154,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
host_set->ops->irq_clear(ap);
count++;
}
-@@ -4604,7 +4696,8 @@
+@@ -4605,7 +4745,8 @@
ata_scsi_scan_host(ap);
}
@@ -1909,7 +2164,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
VPRINTK("EXIT, returning %u\n", ent->n_ports);
return ent->n_ports; /* success */
-@@ -4778,6 +4871,7 @@
+@@ -4779,6 +4920,7 @@
{
struct ata_probe_ent *probe_ent =
ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[0]);
@@ -1917,7 +2172,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
int p = 0;
if (!probe_ent)
-@@ -4792,7 +4886,13 @@
+@@ -4793,7 +4935,13 @@
probe_ent->port[p].altstatus_addr =
probe_ent->port[p].ctl_addr =
pci_resource_start(pdev, 1) | ATA_PCI_CTL_OFS;
@@ -1932,7 +2187,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
ata_std_ports(&probe_ent->port[p]);
p++;
}
-@@ -4802,7 +4902,14 @@
+@@ -4803,7 +4951,14 @@
probe_ent->port[p].altstatus_addr =
probe_ent->port[p].ctl_addr =
pci_resource_start(pdev, 3) | ATA_PCI_CTL_OFS;
@@ -1948,7 +2203,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
ata_std_ports(&probe_ent->port[p]);
p++;
}
-@@ -4814,6 +4921,7 @@
+@@ -4815,6 +4970,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;
@@ -1956,7 +2211,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
probe_ent = ata_probe_ent_alloc(pci_dev_to_dev(pdev), port);
if (!probe_ent)
-@@ -4839,7 +4947,13 @@
+@@ -4840,7 +4996,13 @@
probe_ent->port[0].ctl_addr = 0x376;
break;
}
@@ -1971,7 +2226,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
ata_std_ports(&probe_ent->port[0]);
return probe_ent;
}
-@@ -5080,6 +5194,33 @@
+@@ -5081,6 +5243,33 @@
pci_set_master(pdev);
return 0;
}
@@ -2005,7 +2260,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
#endif /* CONFIG_PCI */
-@@ -5157,6 +5298,10 @@
+@@ -5158,6 +5347,10 @@
EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
EXPORT_SYMBOL_GPL(ata_bmdma_status);
EXPORT_SYMBOL_GPL(ata_bmdma_stop);
@@ -2016,7 +2271,15 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
EXPORT_SYMBOL_GPL(ata_port_probe);
EXPORT_SYMBOL_GPL(sata_phy_reset);
EXPORT_SYMBOL_GPL(__sata_phy_reset);
-@@ -5186,6 +5331,8 @@
+@@ -5175,6 +5368,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);
+@@ -5187,6 +5381,8 @@
EXPORT_SYMBOL_GPL(ata_pci_remove_one);
EXPORT_SYMBOL_GPL(ata_pci_device_suspend);
EXPORT_SYMBOL_GPL(ata_pci_device_resume);
@@ -2025,10 +2288,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
#endif /* CONFIG_PCI */
EXPORT_SYMBOL_GPL(ata_device_suspend);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/Makefile linux-2.6.16-rc2/drivers/scsi/Makefile
---- linux.vanilla-2.6.16-rc2/drivers/scsi/Makefile 2006-02-06 12:21:35.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/Makefile 2006-02-07 13:49:19.944546720 +0000
-@@ -139,6 +139,39 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/Makefile linux-2.6.16-rc4/drivers/scsi/Makefile
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/Makefile 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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
@@ -2050,10 +2313,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+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
@@ -2068,10 +2334,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
obj-$(CONFIG_ARM) += arm/
obj-$(CONFIG_CHR_DEV_ST) += st.o
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_ali.c linux-2.6.16-rc2/drivers/scsi/pata_ali.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_ali.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_ali.c 2006-02-07 13:41:31.570750360 +0000
-@@ -0,0 +1,602 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_ali.c linux-2.6.16-rc4/drivers/scsi/pata_ali.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_ali.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_ali.c 2006-02-20 12:28:04.000000000 +0000
+@@ -0,0 +1,606 @@
+/*
+ * ata-ali.c - ALI 15x3 PATA for new ATA layer
+ * (C) 2005 Red Hat Inc
@@ -2110,7 +2376,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "ali"
-+#define DRV_VERSION "0.1.1"
++#define DRV_VERSION "0.2.2"
+
+/**
+ * ali_c2_cable_detect - cable detection
@@ -2127,13 +2393,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ implement the detect logic */
+
+ /* Fujitsu P2000 */
-+ if(pdev->subsystem_vendor == 0x10CF && pdev->subsystem_device == 0x10AF)
++ 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))
++ if (ata66 & (1 << ap->hard_port_no))
+ return ATA_CBL_PATA40;
+ else
+ return ATA_CBL_PATA80;
@@ -2192,14 +2458,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+{
+ char model_num[40];
+ /* No DMA on CD for now */
-+ if(adev->class != ATA_DEV_ATA && shift != ATA_SHIFT_PIO)
++ if (adev->class != ATA_DEV_ATA && shift != ATA_SHIFT_PIO)
+ return 0;
+
-+ if(shift != ATA_SHIFT_UDMA)
++ 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"))
++ if (strstr(model_num, "WDC"))
+ return 0;
+ return mask;
+}
@@ -2226,8 +2492,8 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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 &= ~(0x0C << shift);
++ if (on)
+ fifo |= (0x04 << shift);
+ pci_write_config_byte(pdev, pio_fifo, fifo);
+}
@@ -2248,13 +2514,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+static void ali_program_modes(struct ata_port *ap, struct ata_device *adev, u8 cmd, u8 data, u8 ultra)
+{
+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
-+ int cbt = 0x59 + 4 * ap->hard_port_no;
-+ int drwt = 0x5A + 4 * ap->hard_port_no + adev->devno;
-+ int udmat = 0x56 + ap->hard_port_no;
++ 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(ultra == 0) {
++ if (ultra == 0) {
++ /* FIXME: We ought to set up pcas not rely on the BIOS */
+ /* Load the command block timing register */
+ pci_write_config_byte(pdev, cbt, cmd);
+
@@ -2267,7 +2534,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ udma &= ~(0x0F << shift);
+ udma |= ultra << shift;
+ pci_write_config_byte(pdev, udmat, udma);
-+
+}
+
+/**
@@ -2281,7 +2547,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+static void ali_set_piomode(struct ata_port *ap, struct ata_device *adev)
+{
-+ struct ata_device *pair = &ap->device[1-adev->devno];
++ struct ata_device *pair = ata_dev_pair(ap, adev);
+ int pio = adev->pio_mode - XFER_PIO_0;
+ int cmdpio = pio;
+
@@ -2289,17 +2555,17 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ static u8 cmd_block_timing[5] = { 0x0A, 0x03, 0x01, 0x33, 0x31 };
+ static u8 data_block_timing[5] = { 0x88, 0x58, 0x44, 0x33, 0x31 };
+
-+ if(adev->class != ATA_DEV_ATA)
++ if (adev->class != ATA_DEV_ATA)
+ ali_fifo_control(ap, adev, 0);
+
+ /* Command timing is shared, so pick the best we can use */
-+ if(ata_dev_present(pair))
++ if (pair)
+ cmdpio = min(pair->pio_mode, adev->pio_mode) - XFER_PIO_0;
+
+ ali_program_modes(ap, adev, cmd_block_timing[cmdpio],
+ data_block_timing[pio], 0);
+
-+ if(adev->class == ATA_DEV_ATA)
++ if (adev->class == ATA_DEV_ATA)
+ ali_fifo_control(ap, adev, 1);
+
+}
@@ -2316,7 +2582,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+{
+ static u8 udma_timing[7] = { 0xC, 0xB, 0xA, 0x9, 0x8, 0xF, 0xD };
+
-+ if(adev->dma_mode >= XFER_UDMA_0) {
++ if (adev->dma_mode >= XFER_UDMA_0) {
+ ali_program_modes(ap, adev, 0, 0, udma_timing[adev->dma_mode - XFER_UDMA_0]);
+ } else {
+ /* MWDMA is not yet supported */
@@ -2338,6 +2604,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+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;
+}
+
@@ -2578,7 +2848,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * mode data.
+ */
+
-+ if(rev < 0x20) {
++ if (rev < 0x20) {
+ port_info[0] = port_info[1] = &info_early;
+ } else if (rev < 0xC2) {
+ /* 1543-E/F, 1543C-C, 1543C-D, 1543C-E */
@@ -2596,30 +2866,30 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ } else
+ port_info[0] = port_info[1] = &info_c5;
+
-+ if(rev >= 0xC2) {
++ 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(0, PCI_DEVFN(0,0));
++ 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) {
++ 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)
++ if (rev == 0xC2)
+ pci_write_config_byte(isa_bridge, 0x79, tmp | 0x04);
-+ else if(rev > 0xC2)
++ else if (rev > 0xC2)
+ pci_write_config_byte(isa_bridge, 0x79, tmp | 0x02);
+ }
+
-+ if(rev >= 0x20) {
-+ if(rev < 0xC2) {
++ 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)
++ if ((tmp & 0x1E) == 0x12)
+ port_info[0] = port_info[1] = &info_20_udma;
+ }
+ /*
@@ -2628,7 +2898,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * via 0x54/55.
+ */
+ pci_read_config_byte(pdev, 0x53, &tmp);
-+ if(rev == 0x20)
++ if (rev == 0x20)
+ tmp &= ~0x02;
+ tmp |= 0x01;
+ pci_write_config_byte(pdev, 0x53, tmp);
@@ -2674,10 +2944,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(ali_init);
+module_exit(ali_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_amd.c linux-2.6.16-rc2/drivers/scsi/pata_amd.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_amd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_amd.c 2006-01-30 15:07:32.000000000 +0000
-@@ -0,0 +1,651 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_amd.c linux-2.6.16-rc4/drivers/scsi/pata_amd.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_amd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -2707,7 +2977,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "pata_amd"
-+#define DRV_VERSION "0.1.2"
++#define DRV_VERSION "0.1.3"
+
+/**
+ * timing_setup - shared timing computation and load
@@ -2730,8 +3000,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ };
+
+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
-+ /* Should libata have an ata_peer() function */
-+ struct ata_device *peer = &ap->device[1-adev->devno];
++ 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;
@@ -2746,9 +3015,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ return;
+ }
+
-+ if (ata_dev_present(peer)) {
++ if (peer) {
+ /* This may be over conservative */
-+ if(peer->dma_mode) {
++ if (peer->dma_mode) {
+ ata_timing_compute(peer, peer->dma_mode, &apeer, T, UT);
+ ata_timing_merge(&apeer, &at, &at, ATA_TIMING_8BIT);
+ }
@@ -3329,9 +3598,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(amd_init);
+module_exit(amd_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_artop.c linux-2.6.16-rc2/drivers/scsi/pata_artop.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_artop.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_artop.c 2006-02-07 13:41:48.130232936 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_artop.c linux-2.6.16-rc4/drivers/scsi/pata_artop.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_artop.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_artop.c 2006-02-07 13:41:48.000000000 +0000
@@ -0,0 +1,497 @@
+/*
+ * pata_artop.c - ARTOP ATA controller driver
@@ -3830,9 +4099,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+MODULE_DEVICE_TABLE(pci, artop_pci_tbl);
+MODULE_VERSION(DRV_VERSION);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_atiixp.c linux-2.6.16-rc2/drivers/scsi/pata_atiixp.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_atiixp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_atiixp.c 2006-02-07 13:42:02.706017080 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_atiixp.c linux-2.6.16-rc4/drivers/scsi/pata_atiixp.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_atiixp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -4133,9 +4402,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(atiixp_init);
+module_exit(atiixp_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cmd64x.c linux-2.6.16-rc2/drivers/scsi/pata_cmd64x.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cmd64x.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_cmd64x.c 2006-02-07 13:42:18.251653784 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cmd64x.c linux-2.6.16-rc4/drivers/scsi/pata_cmd64x.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cmd64x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -4172,7 +4441,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "pata_cmd64x"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.1.1"
+
+/*
+ * CMD64x specific registers definition.
@@ -4232,7 +4501,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* Check cable detect bits */
+ pci_read_config_byte(pdev, BMIDECSR, &r);
-+ if(r & (1 << ap->hard_port_no))
++ if (r & (1 << ap->hard_port_no))
+ ap->cbl = ATA_CBL_PATA80;
+ else
+ ap->cbl = ATA_CBL_PATA40;
@@ -4278,10 +4547,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ }
+ if (ap->hard_port_no) {
+ /* Slave has shared address setup */
-+ struct ata_device *pair = &ap->device[adev->devno ^ 1];
-+ struct ata_timing tp;
++ struct ata_device *pair = ata_dev_pair(ap, adev);
+
-+ if(ata_dev_present(pair)) {
++ 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);
+ }
@@ -4564,10 +4833,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ if (pdev->device == PCI_DEVICE_ID_CMD_646) {
+ /* Does UDMA work ? */
-+ if(class_rev > 4)
++ if (class_rev > 4)
+ info = &cmd_info[2];
+ /* Early rev with other problems ? */
-+ else if(class_rev == 1)
++ else if (class_rev == 1)
+ info = &cmd_info[3];
+ }
+
@@ -4623,9 +4892,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(cmd64x_init);
+module_exit(cmd64x_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cs5520.c linux-2.6.16-rc2/drivers/scsi/pata_cs5520.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cs5520.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_cs5520.c 2006-02-07 13:42:34.495184392 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cs5520.c linux-2.6.16-rc4/drivers/scsi/pata_cs5520.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cs5520.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_cs5520.c 2006-02-20 13:17:11.000000000 +0000
@@ -0,0 +1,322 @@
+/*
+ * IDE tuning and bus mastering support for the CS5510/CS5520
@@ -4670,7 +4939,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "cs5520"
-+#define DRV_VERSION "0.3"
++#define DRV_VERSION "0.4"
+
+struct pio_clocks
+{
@@ -4747,7 +5016,8 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+static void cs5520_set_dmamode(struct ata_port *ap, struct ata_device *adev)
+{
-+ cs5520_set_timings(ap, adev, adev->dma_mode);
++ 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);
+}
+
@@ -4767,7 +5037,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ cs5520_set_timings(ap, adev, adev->pio_mode);
+}
+
-+
+static struct scsi_host_template cs5520_sht = {
+ .module = THIS_MODULE,
+ .name = DRV_NAME,
@@ -4826,25 +5095,25 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_read_config_byte(dev, 0x60, &pcicfg);
+
+ /* Check if the ATA ports are enabled */
-+ if((pcicfg & 3) == 0)
++ if ((pcicfg & 3) == 0)
+ return -ENODEV;
+
-+ if((pcicfg & 0x40) == 0) {
++ 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)) {
++ 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)) {
++ 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)) {
++ if (pci_set_consistent_dma_mask(dev, DMA_32BIT_MASK)) {
+ printk(KERN_ERR DRV_NAME ": unable to configure consistent DMA mask.\n");
+ return -ENODEV;
+ }
@@ -4885,11 +5154,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ ata_std_ports(&probe[1].port[0]);
+
+ /* Now add the ports that are active */
-+ if(pcicfg & 1)
++ if (pcicfg & 1)
+ ports += ata_device_add(&probe[0]);
-+ if(pcicfg & 2)
++ if (pcicfg & 2)
+ ports += ata_device_add(&probe[1]);
-+ if(ports)
++ if (ports)
+ return 0;
+ return -ENODEV;
+}
@@ -4949,10 +5218,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+module_init(cs5520_init);
+module_exit(cs5520_exit);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cs5530.c linux-2.6.16-rc2/drivers/scsi/pata_cs5530.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cs5530.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_cs5530.c 2006-02-07 13:42:42.392983744 +0000
-@@ -0,0 +1,313 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cs5530.c linux-2.6.16-rc4/drivers/scsi/pata_cs5530.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cs5530.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_cs5530.c 2006-02-21 16:44:52.000000000 +0000
+@@ -0,0 +1,371 @@
+/*
+ * pata-cs5530.c - CS5530 PATA for new ATA layer
+ * (C) 2005 Red Hat Inc
@@ -4987,9 +5256,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#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.2"
++#define DRV_VERSION "0.4"
+
+/**
+ * cs5530_set_piomode - PIO setup
@@ -5015,7 +5285,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ format = (tuning & 0x80000000UL) ? 1 : 0;
+
+ /* Now load the right timing register */
-+ if(adev->devno)
++ if (adev->devno)
+ base += 0x08;
+
+ outl(cs5530_pio_timings[format][adev->pio_mode - XFER_PIO_0], base);
@@ -5027,11 +5297,8 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * @adev: Device being configured
+ *
+ * We cannot mix MWDMA and UDMA without reloading timings each switch
-+ * master to slave. We should implement the switch but for now we follow
-+ * the old IDE driver and just avoid setting such combinations.
-+ *
-+ * This will come up once the SATA core grows up and develops proper
-+ * timing code.
++ * 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)
@@ -5061,10 +5328,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ }
+ /* Merge in the PIO format bit */
+ timing |= (tuning & 0x80000000UL);
-+ if(adev->devno == 0) /* Master */
++ if (adev->devno == 0) /* Master */
+ outl(timing, base + 0x04);
+ else {
-+ if(timing & 0x00100000)
++ if (timing & 0x00100000)
+ tuning |= 0x00100000; /* UDMA for both */
+ else
+ tuning &= ~0x00100000; /* MWDMA for both */
@@ -5076,6 +5343,38 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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 = {
@@ -5099,8 +5398,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+};
+
+static struct ata_port_operations cs5530_port_ops = {
-+/* .set_mode = cs5530_set_mode, FIXME - for master/slave */
-+
+ .port_disable = ata_port_disable,
+ .set_piomode = cs5530_set_piomode,
+ .set_dmamode = cs5530_set_dmamode,
@@ -5117,7 +5414,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .bmdma_status = ata_bmdma_status,
+
+ .qc_prep = ata_qc_prep,
-+ .qc_issue = ata_qc_issue_prot,
++ .qc_issue = cs5530_qc_issue_prot,
+ .eng_timeout = ata_eng_timeout,
+ .data_xfer = ata_pio_data_xfer,
+
@@ -5129,6 +5426,26 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .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
@@ -5151,6 +5468,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .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,
++ .pio_mask = 0x1f,
++ .port_ops = &cs5530_port_ops
++ };
+ static struct ata_port_info *port_info[2] = { &info, &info };
+
+ dev = NULL;
@@ -5223,13 +5547,16 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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)
++ if (master_0)
+ pci_dev_put(master_0);
-+ if(cs5530_0)
++ if (cs5530_0)
+ pci_dev_put(cs5530_0);
+ return -ENODEV;
+}
@@ -5266,10 +5593,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(cs5530_init);
+module_exit(cs5530_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cs5535.c linux-2.6.16-rc2/drivers/scsi/pata_cs5535.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cs5535.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_cs5535.c 2006-02-07 13:42:50.000000000 +0000
-@@ -0,0 +1,294 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cs5535.c linux-2.6.16-rc4/drivers/scsi/pata_cs5535.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cs5535.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_cs5535.c 2006-02-16 15:37:21.000000000 +0000
+@@ -0,0 +1,286 @@
+/*
+ * pata-cs5535.c - CS5535 PATA for new ATA layer
+ * (C) 2005 Red Hat Inc
@@ -5311,7 +5638,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <asm/msr.h>
+
+#define DRV_NAME "cs5535"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.2.1"
+
+/*
+ * The Geode (Aka Athlon GX now) uses an internal MSR based
@@ -5355,7 +5682,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
+
+ pci_read_config_byte(pdev, CS5535_CABLE_DETECT, &cable);
-+ if(cable & 1)
++ if (cable & 1)
+ return ATA_CBL_PATA80;
+ else
+ return ATA_CBL_PATA40;
@@ -5392,26 +5719,24 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 0xF7F4, 0x53F3, 0x13F1, 0x5131, 0x1131
+ };
+ u32 reg, dummy;
-+ struct ata_device *pair = &ap->device[1 - adev->devno];
++ struct ata_device *pair = ata_dev_pair(ap, adev);
+
+ int mode = adev->pio_mode - XFER_PIO_0;
-+ int pairmode = pair->pio_mode - XFER_PIO_0;
+ int cmdmode = mode;
+
+ /* Command timing has to be for the lowest of the pair of devices */
-+ if(pair->class != ATA_DEV_NONE && pair->pio_mode)
++ 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);
+
-+ /* 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);
-+
+ /* 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);
@@ -5422,12 +5747,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * @ap: ATA interface
+ * @adev: Device being configured
+ *
-+ * We cannot mix MWDMA and UDMA without reloading timings each switch
-+ * master to slave. We should implement the switch but for now we follow
-+ * the old IDE driver and just avoid setting such combinations.
-+ *
-+ * This will come up once the SATA core grows up and develops proper
-+ * timing code.
+ */
+
+static void cs5535_set_dmamode(struct ata_port *ap, struct ata_device *adev)
@@ -5439,7 +5758,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ rdmsr(ATAC_CH0D0_DMA + 2 * adev->devno, reg, dummy);
+ reg &= 0x80000000UL;
-+ if(mode >= XFER_UDMA_0)
++ if (mode >= XFER_UDMA_0)
+ reg |= udma_timings[mode - XFER_UDMA_0];
+ else
+ reg |= mwdma_timings[mode - XFER_MW_DMA_0];
@@ -5524,10 +5843,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* 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))
++ if (CS5535_BAD_PIO(timings))
+ wrmsr(ATAC_CH0D0_PIO, 0xF7F4F7F4UL, 0);
+ rdmsr(ATAC_CH0D1_PIO, timings, dummy);
-+ if(CS5535_BAD_PIO(timings))
++ if (CS5535_BAD_PIO(timings))
+ wrmsr(ATAC_CH0D1_PIO, 0xF7F4F7F4UL, 0);
+ return ata_pci_init_one(dev, ports, 1);
+}
@@ -5564,9 +5883,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(cs5535_init);
+module_exit(cs5535_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cypress.c linux-2.6.16-rc2/drivers/scsi/pata_cypress.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_cypress.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_cypress.c 2006-02-07 13:43:01.234119456 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cypress.c linux-2.6.16-rc4/drivers/scsi/pata_cypress.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_cypress.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_cypress.c 2006-02-16 15:37:46.000000000 +0000
@@ -0,0 +1,215 @@
+/*
+ */
@@ -5637,7 +5956,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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) {
++ if (adev->devno == 0) {
+ pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr);
+
+ addr &= ~0x0F; /* Mask bits */
@@ -5745,7 +6064,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* 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)
++ if (PCI_FUNC(pdev->devfn) != 1)
+ return -ENODEV;
+
+ return ata_pci_init_one(pdev, port_info, 1);
@@ -5783,9 +6102,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(cy82c693_init);
+module_exit(cy82c693_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_efar.c linux-2.6.16-rc2/drivers/scsi/pata_efar.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_efar.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_efar.c 2006-02-07 13:41:17.978816648 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_efar.c linux-2.6.16-rc4/drivers/scsi/pata_efar.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_efar.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -5901,7 +6220,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* Enable PPE, IE and TIME as appropriate */
+
-+ if(adev->devno == 0) {
++ if (adev->devno == 0) {
+ idetm_data &= 0xCCF0;
+ idetm_data |= control;
+ idetm_data |= (timings[pio][0] << 12) |
@@ -6128,9 +6447,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+MODULE_DEVICE_TABLE(pci, efar_pci_tbl);
+MODULE_VERSION(DRV_VERSION);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt34x.c linux-2.6.16-rc2/drivers/scsi/pata_hpt34x.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt34x.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_hpt34x.c 2006-02-07 13:40:32.684702400 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt34x.c linux-2.6.16-rc4/drivers/scsi/pata_hpt34x.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt34x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_hpt34x.c 2006-02-16 15:38:47.000000000 +0000
@@ -0,0 +1,206 @@
+#include <linux/kernel.h>
+#include <linux/module.h>
@@ -6209,7 +6528,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ r1 |= (mode_num << (3 * dn));
+ r2 &= ~(0x11 << dn); /* Clear MWDMA and UDMA bits */
+
-+ if(adev->dma_mode >= XFER_UDMA_0)
++ if (adev->dma_mode >= XFER_UDMA_0)
+ r2 |= 0x01 << dn; /* Ultra mode */
+ else
+ r2 |= 0x10 << dn; /* MWDMA */
@@ -6297,7 +6616,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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)
++ if (cmd & PCI_COMMAND_MEMORY)
+ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0xF0);
+ else
+ pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0x20);
@@ -6338,10 +6657,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(hpt34x_init);
+module_exit(hpt34x_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt366.c linux-2.6.16-rc2/drivers/scsi/pata_hpt366.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt366.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_hpt366.c 2006-02-07 13:40:40.000000000 +0000
-@@ -0,0 +1,392 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt366.c linux-2.6.16-rc4/drivers/scsi/pata_hpt366.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt366.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_hpt366.c 2006-02-16 15:45:36.000000000 +0000
+@@ -0,0 +1,479 @@
+/*
+ * Libata driver for the highpoint 366 and 368 UDMA66 ATA controllers.
+ *
@@ -6355,8 +6674,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ *
+ *
+ * TODO
-+ * Filters if neccessary
-+ * PLL mode
++ * Maybe PLL mode
+ * Look into engine reset on timeout errors. Should not be
+ * required.
+ */
@@ -6372,7 +6690,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "hpt36x"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.2"
+
+struct hpt_clock {
+ u8 xfer_speed;
@@ -6459,6 +6777,93 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ { 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
@@ -6473,7 +6878,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct hpt_clock *clocks = ap->host_set->private_data;
+
+ while(clocks->xfer_speed) {
-+ if(clocks->xfer_speed == speed)
++ if (clocks->xfer_speed == speed)
+ return clocks->timing;
+ clocks++;
+ }
@@ -6493,7 +6898,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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))
++ if (ata66 & (1 << ap->hard_port_no))
+ ap->cbl = ATA_CBL_PATA40;
+ else
+ ap->cbl = ATA_CBL_PATA80;
@@ -6523,7 +6928,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* Fast interrupt prediction disable, hold off interrupt disable */
+ pci_read_config_byte(pdev, addr2, &fast);
-+ if(fast & 0x80) {
++ if (fast & 0x80) {
+ fast &= ~0x80;
+ pci_write_config_byte(pdev, addr2, fast);
+ }
@@ -6558,7 +6963,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* Fast interrupt prediction disable, hold off interrupt disable */
+ pci_read_config_byte(pdev, addr2, &fast);
-+ if(fast & 0x80) {
++ if (fast & 0x80) {
+ fast &= ~0x80;
+ pci_write_config_byte(pdev, addr2, fast);
+ }
@@ -6599,6 +7004,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .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,
@@ -6671,7 +7077,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* May be a later chip in disguise. Check */
+ /* Newer chips are in the HPT36x driver. Ignore them */
-+ if(class_rev > 2)
++ if (class_rev > 2)
+ return -ENODEV;
+
+ pci_write_config_byte(dev, PCI_CACHE_LINE_SIZE, (L1_CACHE_BYTES / 4));
@@ -6734,10 +7140,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(hpt36x_init);
+module_exit(hpt36x_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt37x.c linux-2.6.16-rc2/drivers/scsi/pata_hpt37x.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt37x.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_hpt37x.c 2006-02-07 13:40:49.417158680 +0000
-@@ -0,0 +1,1089 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt37x.c linux-2.6.16-rc4/drivers/scsi/pata_hpt37x.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt37x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_hpt37x.c 2006-02-16 15:45:27.000000000 +0000
+@@ -0,0 +1,1232 @@
+/*
+ * Libata driver for the highpoint 37x and 30x UDMA66 ATA controllers.
+ *
@@ -6750,9 +7156,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * Portions Copyright (C) 2003 Red Hat Inc
+ *
+ * TODO
-+ * Filters if neccessary
+ * PLL mode
-+ * Investigate if we need DPLL switching on the 370
+ * Look into engine reset on timeout errors. Should not be
+ * required.
+ */
@@ -6767,7 +7171,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "hpt37x"
-+#define DRV_VERSION "0.1.2"
++#define DRV_VERSION "0.2"
+
+struct hpt_clock {
+ u8 xfer_speed;
@@ -7081,12 +7485,111 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct hpt_clock *clocks = ap->host_set->private_data;
+
+ while(clocks->xfer_speed) {
-+ if(clocks->xfer_speed == 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
@@ -7107,7 +7610,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* Restore state */
+ pci_write_config_byte(pdev, 0x5B, scr2);
+
-+ if(ata66 & (1 << ap->hard_port_no))
++ if (ata66 & (1 << ap->hard_port_no))
+ ap->cbl = ATA_CBL_PATA40;
+ else
+ ap->cbl = ATA_CBL_PATA80;
@@ -7138,7 +7641,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
+
-+ if(!(PCI_FUNC(pdev->devfn) & 1)) {
++ if (!(PCI_FUNC(pdev->devfn) & 1)) {
+ hpt37x_phy_reset(ap);
+ return;
+ }
@@ -7155,7 +7658,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_write_config_word(pdev, 0x52, mcr3);
+ pci_write_config_word(pdev, 0x56, mcr6);
+
-+ if(ata66 & (1 << ap->hard_port_no))
++ if (ata66 & (1 << ap->hard_port_no))
+ ap->cbl = ATA_CBL_PATA40;
+ else
+ ap->cbl = ATA_CBL_PATA80;
@@ -7269,11 +7772,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 dma_cmd;
+ unsigned long bmdma = ap->ioaddr.bmdma_addr;
+
-+ if(dma_stat & 0x01) {
++ if (dma_stat & 0x01) {
+ udelay(20);
+ dma_stat = inb(bmdma + 2);
+ }
-+ if(dma_stat & 0x01) {
++ if (dma_stat & 0x01) {
+ /* Clear the engine */
+ pci_write_config_byte(pdev, 0x50 + 4 * ap->hard_port_no, 0x37);
+ udelay(10);
@@ -7374,7 +7877,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_byte(pdev, 0x6A, &bwsr_stat);
+ pci_read_config_byte(pdev, mscreg, &msc_stat);
-+ if(bwsr_stat & (1 << ap->hard_port_no))
++ if (bwsr_stat & (1 << ap->hard_port_no))
+ pci_write_config_byte(pdev, mscreg, msc_stat | 0x30);
+ ata_bmdma_stop(qc);
+}
@@ -7401,13 +7904,50 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+};
+
+/*
-+ * Configuration for HPT370, HPT370A
++ * 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,
@@ -7517,11 +8057,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+static int hpt37x_clock_slot(unsigned int freq, unsigned int base)
+{
+ unsigned int f = (base * freq) / 192; /* Mhz */
-+ if(f < 40)
++ if (f < 40)
+ return 0; /* 33Mhz slot */
-+ if(f < 45)
++ if (f < 45)
+ return 1; /* 40Mhz slot */
-+ if(f < 55)
++ if (f < 55)
+ return 2; /* 50Mhz slot */
+ return 3; /* 60Mhz slot */
+}
@@ -7543,12 +8083,12 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ for(tries = 0; tries < 0x5000; tries++) {
+ udelay(50);
+ pci_read_config_byte(dev, 0x5b, &reg5b);
-+ if(reg5b & 0x80) {
++ 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)
++ if ((reg5b & 0x80) == 0)
+ return 0;
+ }
+ /* Turn off tuning, we have the DPLL set */
@@ -7594,7 +8134,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
+{
-+ /* HPT370 and HPT370A - UDMA100 */
++ /* HPT370 - UDMA100 */
+ static struct ata_port_info info_hpt370 = {
+ .sht = &hpt37x_sht,
+ .host_flags = ATA_FLAG_SLAVE_POSS,
@@ -7603,6 +8143,15 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .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,
++ .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,
@@ -7645,13 +8194,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev);
+ class_rev &= 0xFF;
+
-+ if(dev->device == PCI_DEVICE_ID_TTI_HPT366) {
++ 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)
++ if (class_rev < 3)
+ return -ENODEV;
+ /* N series chips have their own driver. Ignore */
-+ if(class_rev == 6)
++ if (class_rev == 6)
+ return -ENODEV;
+
+ switch(class_rev) {
@@ -7660,7 +8209,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ chip_table = &hpt370;
+ break;
+ case 4:
-+ port = &info_hpt370;
++ port = &info_hpt370a;
+ chip_table = &hpt370a;
+ break;
+ case 5:
@@ -7675,14 +8224,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ switch(dev->device) {
+ case PCI_DEVICE_ID_TTI_HPT372:
+ /* 372N if rev >= 2*/
-+ if(class_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)
++ if (class_rev > 1)
+ return -ENODEV;
+ port = &info_hpt372;
+ /* Check this */
@@ -7722,7 +8271,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_write_config_byte(dev, 0x5b, 0x23);
+
+ pci_read_config_dword(dev, 0x70, &freq);
-+ if((freq >> 12) != 0xABCDE) {
++ if ((freq >> 12) != 0xABCDE) {
+ int i;
+ u8 sr;
+ u32 total = 0;
@@ -7745,7 +8294,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ */
+
+ clock_slot = hpt37x_clock_slot(freq, chip_table->base);
-+ if(chip_table->clocks[clock_slot] == NULL) {
++ if (chip_table->clocks[clock_slot] == NULL) {
+ /*
+ * We need to try PLL mode instead
+ */
@@ -7754,16 +8303,16 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ int adjust;
+
+ for(adjust = 0; adjust < 8; adjust++) {
-+ if(hpt37x_calibrate_dpll(dev))
++ if (hpt37x_calibrate_dpll(dev))
+ break;
+ /* See if it'll settle at a fractionally different clock */
-+ if((adjust & 3) == 3) {
++ if ((adjust & 3) == 3) {
+ f_low --;
+ f_high ++;
+ }
+ pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low);
+ }
-+ if(adjust == 8) {
++ if (adjust == 8) {
+ printk(KERN_WARNING "hpt37x: DPLL did not stabilize.\n");
+ return -ENODEV;
+ }
@@ -7778,9 +8327,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * if UDMA133 is available.
+ */
+
-+ if(clock_slot == 2 && chip_table == &hpt372) { /* 50Mhz */
++ 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)
++ if (port == &info_hpt372)
+ port = &info_hpt372_50;
+ else BUG();
+ }
@@ -7827,9 +8376,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(hpt37x_init);
+module_exit(hpt37x_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt3x2n.c linux-2.6.16-rc2/drivers/scsi/pata_hpt3x2n.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_hpt3x2n.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_hpt3x2n.c 2006-02-07 13:50:40.927235480 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt3x2n.c linux-2.6.16-rc4/drivers/scsi/pata_hpt3x2n.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_hpt3x2n.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_hpt3x2n.c 2006-02-16 15:36:58.000000000 +0000
@@ -0,0 +1,580 @@
+/*
+ * Libata driver for the highpoint 372N and 302N UDMA66 ATA controllers.
@@ -7939,7 +8488,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct hpt_clock *clocks = hpt3x2n_clocks;
+
+ while(clocks->xfer_speed) {
-+ if(clocks->xfer_speed == speed)
++ if (clocks->xfer_speed == speed)
+ return clocks->timing;
+ clocks++;
+ }
@@ -7965,7 +8514,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* Restore state */
+ pci_write_config_byte(pdev, 0x5B, scr2);
+
-+ if(ata66 & (1 << ap->hard_port_no))
++ if (ata66 & (1 << ap->hard_port_no))
+ ap->cbl = ATA_CBL_PATA40;
+ else
+ ap->cbl = ATA_CBL_PATA80;
@@ -8059,7 +8608,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_byte(pdev, 0x6A, &bwsr_stat);
+ pci_read_config_byte(pdev, mscreg, &msc_stat);
-+ if(bwsr_stat & (1 << ap->hard_port_no))
++ if (bwsr_stat & (1 << ap->hard_port_no))
+ pci_write_config_byte(pdev, mscreg, msc_stat | 0x30);
+ ata_bmdma_stop(qc);
+}
@@ -8111,7 +8660,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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)
++ if (pair->hsm_task_state == HSM_ST_IDLE)
+ return 1;
+ return 0;
+}
@@ -8133,10 +8682,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct ata_port *ap = qc->ap;
+ int flags = (long)ap->host_set->private_data;
+
-+ if(hpt3x2n_pair_idle(ap)) {
++ if (hpt3x2n_pair_idle(ap)) {
+ int dpll = hpt3x2n_use_dpll(ap, (tf->flags & ATA_TFLAG_WRITE));
-+ if((flags & USE_DPLL) != dpll) {
-+ if(dpll == 1)
++ if ((flags & USE_DPLL) != dpll) {
++ if (dpll == 1)
+ hpt3x2n_set_clock(ap, 0x21);
+ else
+ hpt3x2n_set_clock(ap, 0x23);
@@ -8216,12 +8765,12 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ for(tries = 0; tries < 0x5000; tries++) {
+ udelay(50);
+ pci_read_config_byte(dev, 0x5b, &reg5b);
-+ if(reg5b & 0x80) {
++ 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)
++ if ((reg5b & 0x80) == 0)
+ return 0;
+ }
+ /* Turn off tuning, we have the DPLL set */
@@ -8240,7 +8789,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u32 fcnt;
+
+ pci_read_config_dword(pdev, 0x70/*CHECKME*/, &fcnt);
-+ if((fcnt >> 12) != 0xABCDE) {
++ if ((fcnt >> 12) != 0xABCDE) {
+ printk(KERN_WARNING "hpt3xn: BIOS clock data not set.\n");
+ return 33; /* Not BIOS set */
+ }
@@ -8249,11 +8798,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ freq = (fcnt * 77) / 192;
+
+ /* Clamp to bands */
-+ if(freq < 40)
++ if (freq < 40)
+ return 33;
-+ if(freq < 45)
++ if (freq < 45)
+ return 40;
-+ if(freq < 55)
++ if (freq < 55)
+ return 50;
+ return 66;
+}
@@ -8314,16 +8863,16 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ switch(dev->device) {
+ case PCI_DEVICE_ID_TTI_HPT366:
-+ if(class_rev < 6)
++ if (class_rev < 6)
+ return -ENODEV;
+ break;
+ case PCI_DEVICE_ID_TTI_HPT372:
+ /* 372N if rev >= 1*/
-+ if(class_rev == 0)
++ if (class_rev == 0)
+ return -ENODEV;
+ break;
+ case PCI_DEVICE_ID_TTI_HPT302:
-+ if(class_rev < 2)
++ if (class_rev < 2)
+ return -ENODEV;
+ break;
+ case PCI_DEVICE_ID_TTI_HPT372N:
@@ -8358,17 +8907,17 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* Unlike the 37x we don't try jiggling the frequency */
+ for(adjust = 0; adjust < 8; adjust++) {
-+ if(hpt3xn_calibrate_dpll(dev))
++ if (hpt3xn_calibrate_dpll(dev))
+ break;
+ pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low);
+ }
-+ if(adjust == 8)
++ 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)
++ if (pci_mhz > 60)
+ port->private_data = (void *)PCI66;
+
+ /* Now kick off ATA set up */
@@ -8411,9 +8960,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(hpt3x2n_init);
+module_exit(hpt3x2n_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_isapnp.c linux-2.6.16-rc2/drivers/scsi/pata_isapnp.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_isapnp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_isapnp.c 2006-01-21 16:52:31.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_isapnp.c linux-2.6.16-rc4/drivers/scsi/pata_isapnp.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_isapnp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_isapnp.c 2006-01-21 16:52:31.000000000 +0000
@@ -0,0 +1,151 @@
+
+/*
@@ -8566,9 +9115,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(isapnp_init);
+module_exit(isapnp_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_it8172.c linux-2.6.16-rc2/drivers/scsi/pata_it8172.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_it8172.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_it8172.c 2006-02-07 13:40:09.935160856 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_it8172.c linux-2.6.16-rc4/drivers/scsi/pata_it8172.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_it8172.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -8672,14 +9221,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ */
+
+ reg40 |= 0x4000;
-+ if(adev->devno) {
++ if (adev->devno) {
+ reg40 |= 0xC006;
-+ if(pio > 1)
++ if (pio > 1)
+ /* Enable prefetch and IORDY sample-point */
+ reg40 |= 0x0060;
+ } else {
+ reg40 |= 0xC060;
-+ if(pio > 1)
++ if (pio > 1)
+ /* Enable prefetch and IORDY sample-point */
+ reg40 |= 0x0006;
+ }
@@ -8733,7 +9282,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ reg4a &= ~(3 << (4 * dn));
+
-+ if(adev->dma_mode >= XFER_UDMA_0) {
++ if (adev->dma_mode >= XFER_UDMA_0) {
+ reg48 |= 1 << dn;
+#ifdef UDMA_TIMING_SET
+ reg4a |= ((adev->dma_mode - XFER_UDMA_0) << (4 * dn));
@@ -8850,10 +9399,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(it8172_init);
+module_exit(it8172_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_it821x.c linux-2.6.16-rc2/drivers/scsi/pata_it821x.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_it821x.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_it821x.c 2006-02-07 13:41:20.868377368 +0000
-@@ -0,0 +1,741 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_it821x.c linux-2.6.16-rc4/drivers/scsi/pata_it821x.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_it821x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_it821x.c 2006-02-20 12:27:55.000000000 +0000
+@@ -0,0 +1,743 @@
+/*
+ * ata-it821x.c - IT821x PATA for new ATA layer
+ * (C) 2005 Red Hat Inc
@@ -8936,7 +9485,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+
+#define DRV_NAME "it821x"
-+#define DRV_VERSION "0.2"
++#define DRV_VERSION "0.2.1"
+
+struct it821x_dev
+{
@@ -9002,7 +9551,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 conf;
+
+ /* Program PIO/MWDMA timing bits */
-+ if(itdev->clock_mode == ATA_66)
++ if (itdev->clock_mode == ATA_66)
+ conf = timing >> 8;
+ else
+ conf = timing & 0xFF;
@@ -9031,11 +9580,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 conf;
+
+ /* Program UDMA timing bits */
-+ if(itdev->clock_mode == ATA_66)
++ if (itdev->clock_mode == ATA_66)
+ conf = timing >> 8;
+ else
+ conf = timing & 0xFF;
-+ if(itdev->timing10 == 0)
++ if (itdev->timing10 == 0)
+ pci_write_config_byte(pdev, 0x56 + 4 * channel + unit, conf);
+ else {
+ /* Early revision must be programmed for both together */
@@ -9058,14 +9607,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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 = &ap->device[1-unit];
++ 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]) {
++ if (itdev->want[0][0] > itdev->want[1][0]) {
+ clock = itdev->want[0][1];
+ altclock = itdev->want[1][1];
+ } else {
@@ -9074,18 +9623,18 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ }
+
+ /* Master doesn't care does the slave ? */
-+ if(clock == ATA_ANY)
++ if (clock == ATA_ANY)
+ clock = altclock;
+
+ /* Nobody cares - keep the same clock */
-+ if(clock == ATA_ANY)
++ if (clock == ATA_ANY)
+ return;
+ /* No change */
-+ if(clock == itdev->clock_mode)
++ if (clock == itdev->clock_mode)
+ return;
+
+ /* Load this into the controller ? */
-+ if(clock == ATA_66)
++ if (clock == ATA_66)
+ itdev->clock_mode = ATA_66;
+ else {
+ itdev->clock_mode = ATA_50;
@@ -9100,7 +9649,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * 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) {
++ 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]);
+ }
@@ -9108,7 +9657,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * 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) {
++ if (itdev->udma[unit] != UDMA_OFF) {
+ it821x_program_udma(ap, adev, itdev->udma[unit]);
+ it821x_program(ap, adev, itdev->pio[unit]);
+ }
@@ -9166,19 +9715,19 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ int unit = adev->devno;
+ u8 conf;
+
-+ if(adev->dma_mode >= XFER_UDMA_0) {
++ 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)
++ 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)
++ if (itdev->timing10)
+ conf &= channel ? 0x9F: 0xE7;
+ else
+ conf &= ~ (1 << (3 + 2 * channel + unit));
@@ -9195,7 +9744,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* UDMA bits off - Revision 0x10 do them in pairs */
+ pci_read_config_byte(pdev, 0x50, &conf);
-+ if(itdev->timing10)
++ if (itdev->timing10)
+ conf |= channel ? 0x60: 0x18;
+ else
+ conf |= 1 << (3 + 2 * channel + unit);
@@ -9220,9 +9769,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct it821x_dev *itdev = ap->private_data;
+ int unit = adev->devno;
+
-+ if(itdev->mwdma[unit] != MWDMA_OFF)
++ if (itdev->mwdma[unit] != MWDMA_OFF)
+ it821x_program(ap, adev, itdev->mwdma[unit]);
-+ else if(itdev->udma[unit] != UDMA_OFF && itdev->timing10)
++ else if (itdev->udma[unit] != UDMA_OFF && itdev->timing10)
+ it821x_program_udma(ap, adev, itdev->udma[unit]);
+ ata_bmdma_start(qc);
+}
@@ -9244,7 +9793,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ int unit = adev->devno;
+
+ ata_bmdma_stop(qc);
-+ if(itdev->mwdma[unit] != MWDMA_OFF)
++ if (itdev->mwdma[unit] != MWDMA_OFF)
+ it821x_program(ap, adev, itdev->pio[unit]);
+}
+
@@ -9260,7 +9809,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+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) {
++ 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;
@@ -9308,7 +9857,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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))) {
++ if (dma_enabled & (1 << (5 + i))) {
+ dev->xfer_mode = XFER_MW_DMA_0;
+ dev->xfer_shift = ATA_SHIFT_MWDMA;
+ dev->flags &= ~ATA_DFLAG_PIO;
@@ -9319,6 +9868,8 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ }
+ /* Keep sector count safe (LBA48 counts blow the
+ brains of the firmware) */
++
++ /* Do we need a dev_config method ? */
+ dev->flags |= ATA_DFLAG_LOCK_SECTORS;
+ }
+ }
@@ -9338,10 +9889,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct it821x_dev *itdev = ap->private_data;
+
+ /* No ATAPI DMA in smart mode */
-+ if(itdev->smart)
++ if (itdev->smart)
+ return -EOPNOTSUPP;
+ /* No ATAPI DMA on rev 10 */
-+ if(itdev->timing10)
++ if (itdev->timing10)
+ return -EOPNOTSUPP;
+ /* Cool */
+ return 0;
@@ -9365,11 +9916,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 conf;
+
+ int ret = ata_port_start(ap);
-+ if(ret < 0)
++ if (ret < 0)
+ return ret;
+
+ ap->private_data = kmalloc(sizeof(struct it821x_dev), GFP_KERNEL);
-+ if(ap->private_data == NULL) {
++ if (ap->private_data == NULL) {
+ ata_port_stop(ap);
+ return -ENOMEM;
+ }
@@ -9379,7 +9930,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_byte(pdev, 0x50, &conf);
+
-+ if(conf & 1) {
++ if (conf & 1) {
+ itdev->smart = 1;
+ /* Long I/O's although allowed in LBA48 space cause the
+ onboard firmware to enter the twighlight zone */
@@ -9396,10 +9947,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ itdev->last_device = -1;
+
+ pci_read_config_byte(pdev, PCI_REVISION_ID, &conf);
-+ if(conf == 0x10) {
++ if (conf == 0x10) {
+ itdev->timing10 = 1;
+ /* Need to disable ATAPI DMA for this case */
-+ if(!itdev->smart)
++ if (!itdev->smart)
+ printk(KERN_WARNING DRV_NAME": Revision 0x10, workarounds activated.\n");
+ }
+
@@ -9550,7 +10101,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ conf &= 1;
+
+ printk(KERN_INFO DRV_NAME ": controller in %s mode.\n", mode[conf]);
-+ if(conf == 0)
++ if (conf == 0)
+ port_info[0] = port_info[1] = &info_passthru;
+ else
+ port_info[0] = port_info[1] = &info_smart;
@@ -9595,10 +10146,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(it821x_init);
+module_exit(it821x_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_legacy.c linux-2.6.16-rc2/drivers/scsi/pata_legacy.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_legacy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_legacy.c 2006-02-07 11:44:14.578535784 +0000
-@@ -0,0 +1,668 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_legacy.c linux-2.6.16-rc4/drivers/scsi/pata_legacy.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_legacy.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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.
@@ -9618,7 +10169,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "legacy"
-+#define DRV_VERSION "0.3"
++#define DRV_VERSION "0.3.1"
+
+#define NR_HOST 6
+
@@ -9741,36 +10292,40 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+}
+
-+static void pdc_data_xfer_vlb(struct ata_port *ap, unsigned char *buf, unsigned int buflen, int write_data)
++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;
-+
-+ 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 (ata_id_has_dword_io(adev->id)) {
++ local_irq_save(flags);
+
-+ if (write_data)
-+ outsl(ap->ioaddr.data_addr, buf, buflen >> 2);
-+ else
-+ insl(ap->ioaddr.data_addr, buf, buflen >> 2);
++ /* Perform the 32bit I/O synchronization sequence */
++ inb(ap->ioaddr.nsect_addr);
++ inb(ap->ioaddr.nsect_addr);
++ inb(ap->ioaddr.nsect_addr);
+
-+ 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);
++ /* 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);
+ }
-+ local_irq_restore(flags);
++ else
++ ata_pio_data_xfer_noirq(ap, adev, buf, buflen, write_data);
+}
+
+static struct ata_port_operations pdc20230_port_ops = {
@@ -9809,7 +10364,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct ata_timing t;
+
+ /* Get the timing data in cycles. For now play safe at 50Mhz */
-+ ata_timing_compute(adev, adev->pio_mode, &t, 50000, 1000);
++ ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000);
+
+ active = FIT(t.active, 2, 15);
+ recover = FIT(t.recover, 4, 15);
@@ -9861,7 +10416,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct ata_timing t;
+
+ /* Get the timing data in cycles. For now play safe at 50Mhz */
-+ ata_timing_compute(adev, adev->pio_mode, &t, 50000, 1000);
++ ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000);
+
+ active = FIT(t.active, 2, 15);
+ recover = FIT(t.recover, 2, 16);
@@ -9876,7 +10431,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ if (adev->class != ATA_DEV_ATA) {
+ u8 rconf = inb(0x3E6);
-+ if(rconf & 0x24) {
++ if (rconf & 0x24) {
+ rconf &= ~ 0x24;
+ outb(rconf, 0x3E6);
+ }
@@ -9917,7 +10472,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+{
+ u8 active, recover, setup;
+ struct ata_timing t;
-+ struct ata_device *pair = &ap->device[adev->devno ^ 1];
++ struct ata_device *pair = ata_dev_pair(ap, adev);
+ int clock;
+ int khz[4] = { 50000, 40000, 33000, 25000 };
+ u8 rc;
@@ -9927,13 +10482,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ inb(ap->ioaddr.error_addr);
+
+ /* Read VLB clock strapping */
-+ clock = khz[inb(ap->ioaddr.lbah_addr) & 0x03];
++ 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 (ata_dev_present(pair)) {
++ if (pair) {
+ struct ata_timing tp;
+ ata_timing_compute(pair, pair->pio_mode, &tp, clock, 1000);
+
@@ -10054,7 +10609,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ outb(0x55, 0x1F2);
+ inb(0x1F2);
+ inb(0x1F2);
-+ if(inb(0x1F2) == 0x00) {
++ if (inb(0x1F2) == 0x00) {
+ printk(KERN_INFO "PDC20230-B VLB ATA controller detected.\n");
+ }
+ }
@@ -10267,9 +10822,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+module_init(legacy_init);
+module_exit(legacy_exit);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_mpiix.c linux-2.6.16-rc2/drivers/scsi/pata_mpiix.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_mpiix.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_mpiix.c 2006-01-21 16:55:12.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_mpiix.c linux-2.6.16-rc4/drivers/scsi/pata_mpiix.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_mpiix.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_mpiix.c 2006-02-16 15:38:41.000000000 +0000
@@ -0,0 +1,303 @@
+/*
+ * pata_mpiix.c - Intel MPIIX PATA for new ATA layer
@@ -10517,7 +11072,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* Now add the port that is active */
+ enabled = (idetim & 0x4000) ? 1 : 0;
+
-+ if(ata_device_add(&probe[enabled]))
++ if (ata_device_add(&probe[enabled]))
+ return 0;
+ return -ENODEV;
+}
@@ -10574,10 +11129,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(mpiix_init);
+module_exit(mpiix_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_netcell.c linux-2.6.16-rc2/drivers/scsi/pata_netcell.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_netcell.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_netcell.c 2006-02-07 13:48:27.721485832 +0000
-@@ -0,0 +1,178 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_netcell.c linux-2.6.16-rc4/drivers/scsi/pata_netcell.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_netcell.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_netcell.c 2006-02-08 14:05:57.000000000 +0000
+@@ -0,0 +1,176 @@
+/*
+ * pata_netcell.c - Netcell PATA driver
+ *
@@ -10620,8 +11175,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+static void netcell_phy_reset(struct ata_port *ap)
+{
-+ /* If you have enable bits for devices ... , if not delete */
-+ struct pci_dev *pdev = to_pci_dev(ap->host_set->dev);
+ ap->cbl = netcell_cable_detect(ap);
+ ata_port_probe(ap);
+ ata_bus_reset(ap);
@@ -10756,9 +11309,226 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+MODULE_DEVICE_TABLE(pci, netcell_pci_tbl);
+MODULE_VERSION(DRV_VERSION);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_oldpiix.c linux-2.6.16-rc2/drivers/scsi/pata_oldpiix.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_oldpiix.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_oldpiix.c 2006-01-21 16:55:29.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_ns87410.c linux-2.6.16-rc4/drivers/scsi/pata_ns87410.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_ns87410.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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-rc4/drivers/scsi/pata_oldpiix.c linux-2.6.16-rc4/drivers/scsi/pata_oldpiix.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_oldpiix.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_oldpiix.c 2006-01-21 16:55:29.000000000 +0000
@@ -0,0 +1,327 @@
+/*
+ * pata_oldpiix.c - Intel PATA/SATA controllers
@@ -11087,9 +11857,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+MODULE_DEVICE_TABLE(pci, oldpiix_pci_tbl);
+MODULE_VERSION(DRV_VERSION);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_opti.c linux-2.6.16-rc2/drivers/scsi/pata_opti.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_opti.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_opti.c 2006-01-21 16:55:42.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_opti.c linux-2.6.16-rc4/drivers/scsi/pata_opti.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_opti.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -11121,7 +11891,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "pata_opti"
-+#define DRV_VERSION "0.1.1"
++#define DRV_VERSION "0.1.2"
+
+enum {
+ READ_REG = 0, /* index of Read cycle timing register */
@@ -11217,7 +11987,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+static void opti_set_piomode(struct ata_port *ap, struct ata_device *adev)
+{
-+ struct ata_device *pair = &ap->device[1 - adev->devno];
++ 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;
@@ -11242,10 +12012,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ */
+
+ addr = addr_timing[clock][pio];
-+ if (ata_dev_present(pair)) {
++ if (pair) {
+ /* Hardware constraint */
+ u8 pair_addr = addr_timing[clock][pair->pio_mode - XFER_PIO_0];
-+ if(pair_addr > addr)
++ if (pair_addr > addr)
+ addr = pair_addr;
+ }
+
@@ -11359,9 +12129,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(opti_init);
+module_exit(opti_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_pcmcia.c linux-2.6.16-rc2/drivers/scsi/pata_pcmcia.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_pcmcia.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_pcmcia.c 2006-01-21 16:55:56.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_pcmcia.c linux-2.6.16-rc4/drivers/scsi/pata_pcmcia.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_pcmcia.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_pcmcia.c 2006-02-20 17:26:30.000000000 +0000
@@ -0,0 +1,406 @@
+/*
+ * pata-pcmcia.c - PCMCIA PATA controller driver.
@@ -11742,7 +12512,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+static struct pcmcia_driver pcmcia_driver = {
+ .owner = THIS_MODULE,
-+ .drv {
++ .drv = {
+ .name = DRV_NAME,
+ },
+ .id_table = pcmcia_devices,
@@ -11769,9 +12539,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(pcmcia_init);
+module_exit(pcmcia_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_pdc2027x.c linux-2.6.16-rc2/drivers/scsi/pata_pdc2027x.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_pdc2027x.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_pdc2027x.c 2006-01-21 16:56:47.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_pdc2027x.c linux-2.6.16-rc4/drivers/scsi/pata_pdc2027x.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_pdc2027x.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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.
@@ -12630,10 +13400,442 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(pdc2027x_init);
+module_exit(pdc2027x_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_qdi.c linux-2.6.16-rc2/drivers/scsi/pata_qdi.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_qdi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_qdi.c 2006-01-21 20:43:47.000000000 +0000
-@@ -0,0 +1,367 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_pdc202xx_old.c linux-2.6.16-rc4/drivers/scsi/pata_pdc202xx_old.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_pdc202xx_old.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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-rc4/drivers/scsi/pata_qdi.c linux-2.6.16-rc4/drivers/scsi/pata_qdi.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_qdi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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>
@@ -12660,7 +13862,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "pata_qdi"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.2"
+
+#define NR_HOST 4 /* Two 6580s */
+
@@ -12684,7 +13886,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 timing;
+
+ /* Get the timing data in cycles */
-+ ata_timing_compute(adev, adev->pio_mode, &t, 33000, 1000);
++ ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000);
+
+ if (qdi->fast) {
+ active = 8 - FIT(t.active, 1, 8);
@@ -12708,7 +13910,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 timing;
+
+ /* Get the timing data in cycles */
-+ ata_timing_compute(adev, adev->pio_mode, &t, 33, 1000);
++ ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000);
+
+ if (qdi->fast) {
+ active = 8 - FIT(t.active, 1, 8);
@@ -12751,25 +13953,28 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ return ata_qc_issue_prot(qc);
+}
+
-+static void qdi_data_xfer(struct ata_port *ap, unsigned char *buf, unsigned int buflen, int write_data)
++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 (write_data)
-+ outsl(ap->ioaddr.data_addr, buf, buflen >> 2);
-+ else
-+ insl(ap->ioaddr.data_addr, buf, buflen >> 2);
++ 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);
++ 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 = {
@@ -13001,9 +14206,334 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+module_init(qdi_init);
+module_exit(qdi_exit);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_rz1000.c linux-2.6.16-rc2/drivers/scsi/pata_rz1000.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_rz1000.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_rz1000.c 2006-02-07 13:37:54.369769928 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_radisys.c linux-2.6.16-rc4/drivers/scsi/pata_radisys.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_radisys.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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-rc4/drivers/scsi/pata_rz1000.c linux-2.6.16-rc4/drivers/scsi/pata_rz1000.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_rz1000.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_rz1000.c 2006-02-16 15:38:18.000000000 +0000
@@ -0,0 +1,183 @@
+/*
+ * RZ1000/1001 driver based upon
@@ -13139,10 +14669,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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)
++ if (pci_read_config_word(pdev, 0x40, &reg) != 0)
+ goto fail;
+ reg &= 0xDFFF;
-+ if(pci_write_config_word(pdev, 0x40, reg) != 0)
++ if (pci_write_config_word(pdev, 0x40, reg) != 0)
+ goto fail;
+ printk(KERN_INFO DRV_NAME ": disabled chipset readahead.\n");
+
@@ -13188,10 +14718,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+module_init(rz1000_init);
+module_exit(rz1000_exit);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sc1200.c linux-2.6.16-rc2/drivers/scsi/pata_sc1200.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sc1200.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_sc1200.c 2006-02-07 13:39:25.938849312 +0000
-@@ -0,0 +1,264 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sc1200.c linux-2.6.16-rc4/drivers/scsi/pata_sc1200.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sc1200.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_sc1200.c 2006-02-16 15:46:11.000000000 +0000
+@@ -0,0 +1,286 @@
+/*
+ * New ATA layer SC1200 driver Alan Cox <alan@redhat.com>
+ *
@@ -13234,7 +14764,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "sc1200"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.2"
+
+#define SC1200_REV_A 0x00
+#define SC1200_REV_B1 0x01
@@ -13256,7 +14786,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u8 silicon_rev = inb(0x903D);
+ u16 pci_clock;
+
-+ if(chip_id == 0x04 && silicon_rev < SC1200_REV_B1)
++ 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
@@ -13265,7 +14795,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_clock = inw(0x901E);
+ pci_clock >>= 8;
+ pci_clock &= 0x03;
-+ if(pci_clock == 3)
++ if (pci_clock == 3)
+ pci_clock = 0;
+ return pci_clock;
+}
@@ -13305,11 +14835,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * @adev: Device being configured
+ *
+ * We cannot mix MWDMA and UDMA without reloading timings each switch
-+ * master to slave. We should implement the switch but for now we follow
-+ * the old IDE driver and just avoid setting such combinations.
-+ *
-+ * This will come up once the SATA core grows up and develops proper
-+ * timing code.
++ * master to slave.
+ */
+
+static void sc1200_set_dmamode(struct ata_port *ap, struct ata_device *adev)
@@ -13332,12 +14858,12 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ int mode = adev->dma_mode;
+ u32 format;
+
-+ if(mode >= XFER_UDMA_0)
++ 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) {
++ if (adev->devno == 0) {
+ u32 timings;
+
+ pci_read_config_dword(pdev, reg + 4, &timings);
@@ -13348,6 +14874,34 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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,
@@ -13369,8 +14923,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+};
+
+static struct ata_port_operations sc1200_port_ops = {
-+/* .set_mode = sc1200_set_mode, FIXME - for master/slave */
-+
+ .port_disable = ata_port_disable,
+ .set_piomode = sc1200_set_piomode,
+ .set_dmamode = sc1200_set_dmamode,
@@ -13387,7 +14939,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ .bmdma_status = ata_bmdma_status,
+
+ .qc_prep = ata_qc_prep,
-+ .qc_issue = ata_qc_issue_prot,
++ .qc_issue = sc1200_qc_issue_prot,
+ .eng_timeout = ata_eng_timeout,
+ .data_xfer = ata_pio_data_xfer,
+
@@ -13456,10 +15008,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(sc1200_init);
+module_exit(sc1200_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_serverworks.c linux-2.6.16-rc2/drivers/scsi/pata_serverworks.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_serverworks.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_serverworks.c 2006-02-07 13:38:36.921301112 +0000
-@@ -0,0 +1,591 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_serverworks.c linux-2.6.16-rc4/drivers/scsi/pata_serverworks.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_serverworks.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -13611,7 +15163,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ struct sv_cable_table *cb = cable_detect;
+
+ while(cb->device) {
-+ if(cb->device == pdev->device &&
++ if (cb->device == pdev->device &&
+ (cb->subvendor == pdev->subsystem_vendor ||
+ cb->subvendor == PCI_ANY_ID)) {
+ return cb->cable_detect(ap);
@@ -13662,9 +15214,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+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)
++ if (shift != ATA_SHIFT_UDMA)
+ return mask;
-+ if(adev->class == ATA_DEV_ATA)
++ if (adev->class == ATA_DEV_ATA)
+ return 0;
+ return mask;
+}
@@ -13685,9 +15237,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ int len, i;
+
+ /* Disk, UDMA */
-+ if(shift != ATA_SHIFT_UDMA)
++ if (shift != ATA_SHIFT_UDMA)
+ return mask;
-+ if(adev->class != ATA_DEV_ATA)
++ if (adev->class != ATA_DEV_ATA)
+ return mask;
+
+ /* Actually do need to check */
@@ -13729,7 +15281,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* The OSB4 just requires the timing but the CSB series want the
+ mode number as well */
-+ if(serverworks_is_csb(pdev)) {
++ 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));
@@ -13757,7 +15309,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_byte(pdev, 0x54, &ultra_cfg);
+
-+ if(adev->dma_mode >= XFER_UDMA_0) {
++ 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);
@@ -13863,7 +15415,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ if (isa_dev) {
+ pci_read_config_dword(isa_dev, 0x64, &reg);
+ reg &= ~0x00002000; /* disable 600ns interrupt mask */
-+ if(!(reg & 0x00004000))
++ 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);
@@ -13895,11 +15447,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_write_config_dword(findev, 0x4C, reg4c);
+ pci_dev_put(findev);
+ }
-+#if 0
-+FIXME
-+ outb_p(0x06, 0x0c00);
-+ dev->irq = inb_p(0x0c01);
-+#endif
+ } else {
+ struct pci_dev * findev = NULL;
+ u8 reg41 = 0;
@@ -13987,7 +15534,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* 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)
++ if ( serverworks_fixup_osb4(pdev) < 0)
+ devinfo = &info[1];
+ }
+ /* setup CSB5/CSB6 : South Bridge and IDE option RAID */
@@ -13997,11 +15544,11 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ /* If the returned btr is the newer revision then
+ select the right info block */
-+ if(serverworks_fixup_csb(pdev) == 3)
++ if (serverworks_fixup_csb(pdev) == 3)
+ devinfo = &info[3];
+
+ /* Is this the 3rd channel CSB6 IDE ? */
-+ if(pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2)
++ if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2)
+ ports = 1;
+ }
+ /* setup HT1000E */
@@ -14051,10 +15598,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(serverworks_init);
+module_exit(serverworks_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sil680.c linux-2.6.16-rc2/drivers/scsi/pata_sil680.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sil680.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_sil680.c 2006-01-21 17:04:00.000000000 +0000
-@@ -0,0 +1,362 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sil680.c linux-2.6.16-rc4/drivers/scsi/pata_sil680.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sil680.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_sil680.c 2006-02-16 15:28:00.000000000 +0000
+@@ -0,0 +1,368 @@
+/*
+ * pata_sil680.c - SIL680 PATA for new ATA layer
+ * (C) 2005 Red Hat Inc
@@ -14078,7 +15625,6 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * TODO
+ * If we know all our devices are LBA28 (or LBA28 sized) we could use
+ * the command fifo mode.
-+ * Mode filters for shared PIO
+ */
+
+#include <linux/kernel.h>
@@ -14091,7 +15637,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "pata_sil680"
-+#define DRV_VERSION "0.1"
++#define DRV_VERSION "0.2.1"
+
+/**
+ * sil680_selreg - return register base
@@ -14143,7 +15689,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ unsigned long addr = sil680_selreg(ap, 0);
+ u8 ata66;
+ pci_read_config_byte(pdev, addr, &ata66);
-+ if(ata66 & 1)
++ if (ata66 & 1)
+ return ATA_CBL_PATA80;
+ else
+ return ATA_CBL_PATA40;
@@ -14182,8 +15728,8 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ * @adev: ATA device
+ *
+ * Program the SIL680 registers for PIO mode. Note that the task speed
-+ * registers are shared between the devices so once the speed filters are
-+ * in we must pick the lowest mode or switch.
++ * 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)
@@ -14195,14 +15741,22 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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[pio]);
++ pci_write_config_word(pdev, tfaddr, speed_t[lowest_pio]);
+
+ pci_read_config_word(pdev, tfaddr-2, &reg);
+ reg &= ~0x0200; /* Clear IORDY */
-+ if(pio > 2)
++ if (ata_pio_need_iordy(adev))
+ reg |= 0x0200; /* Enable IORDY */
+ pci_write_config_word(pdev, tfaddr-2, reg);
+}
@@ -14214,8 +15768,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ *
+ * 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. We don't yet handle
-+ * the shared pio speed stuff in full. FIXME
++ * while the chipset uses mode number for UDMA.
+ */
+
+static void sil680_set_dmamode(struct ata_port *ap, struct ata_device *adev)
@@ -14246,7 +15799,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* Extract scsc */
+ scsc = (scsc & 0x30) ? 1: 0;
+
-+ if(adev->dma_mode >= XFER_UDMA_0) {
++ if (adev->dma_mode >= XFER_UDMA_0) {
+ multi = 0x10C1;
+ ultra |= ultra_table[scsc][adev->dma_mode - XFER_UDMA_0];
+ mode |= (0x03 << port_shift);
@@ -14360,7 +15913,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ }
+
+ pci_read_config_byte(pdev, 0x8A, &tmpbyte);
-+ if((tmpbyte & 0x30) == 0)
++ if ((tmpbyte & 0x30) == 0)
+ port_info[0] = port_info[1] = &info_slow;
+
+ pci_write_config_byte(pdev, 0xA1, 0x72);
@@ -14417,9 +15970,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(sil680_init);
+module_exit(sil680_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sis.c linux-2.6.16-rc2/drivers/scsi/pata_sis.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sis.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_sis.c 2006-02-07 13:38:21.080709248 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sis.c linux-2.6.16-rc4/drivers/scsi/pata_sis.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sis.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_sis.c 2006-02-16 15:36:13.000000000 +0000
@@ -0,0 +1,982 @@
+/*
+ * pata_sis.c - SiS ATA driver
@@ -14480,7 +16033,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ u16 tmp;
+
+ pci_read_config_word(pdev, 0x50 + 2 * ap->hard_port_no, &tmp);
-+ if(tmp & 0x8000)
++ if (tmp & 0x8000)
+ return ATA_CBL_PATA40;
+ return ATA_CBL_PATA80;
+}
@@ -14527,7 +16080,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_byte(pdev, 0x48, &tmp);
+ tmp >>= ap->hard_port_no;
-+ if(tmp & 0x10)
++ if (tmp & 0x10)
+ return ATA_CBL_PATA40;
+ return ATA_CBL_PATA80;
+}
@@ -14608,7 +16161,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ reg4b &= ~mask;
+
+ /* Enable for ATA (disk) only */
-+ if(adev->class == ATA_DEV_ATA)
++ if (adev->class == ATA_DEV_ATA)
+ reg4b |= mask;
+ pci_write_config_byte(pdev, 0x4B, reg4b);
+}
@@ -14714,14 +16267,14 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ sis_set_fifo(ap, adev);
+
+ pci_read_config_dword(pdev, 0x54, &reg54);
-+ if(reg54 & 0x40000000)
++ 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 ? */
++ if (t1 & 0x08) /* 100 or 133 ? */
+ t1 |= timing133[speed];
+ else
+ t1 |= timing100[speed];
@@ -14755,7 +16308,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_word(pdev, drive_pci, &timing);
+
-+ if(adev->dma_mode < XFER_UDMA_0) {
++ 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;
@@ -14794,7 +16347,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_word(pdev, drive_pci, &timing);
+
-+ if(adev->dma_mode < XFER_UDMA_0) {
++ 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;
@@ -14831,7 +16384,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_word(pdev, drive_pci, &timing);
+
-+ if(adev->dma_mode < XFER_UDMA_0) {
++ 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 */
@@ -14866,7 +16419,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ pci_read_config_word(pdev, drive_pci, &timing);
+
-+ if(adev->dma_mode < XFER_UDMA_0) {
++ 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 */
@@ -14903,13 +16456,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ const u32 timing_u133[] = { 0x9F0, 0x6A0, 0x470, 0x250, 0x230, 0x220, 0x210 };
+
+ pci_read_config_dword(pdev, 0x54, &reg54);
-+ if(reg54 & 0x40000000)
++ 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) {
++ if (adev->dma_mode < XFER_UDMA_0) {
+ t1 &= ~0x00000004;
+ /* FIXME: need data sheet to add MWDMA here. Also lacking on
+ ide/pci driver */
@@ -14918,7 +16471,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* if & 8 no UDMA133 - need info for ... */
+ t1 &= ~0x00000FF0;
+ t1 |= 0x00000004;
-+ if(t1 & 0x08)
++ if (t1 & 0x08)
+ t1 |= timing_u133[speed];
+ else
+ t1 |= timing_u100[speed];
@@ -15161,10 +16714,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ if (sis->info == &sis_info133) {
+ pci_read_config_word(pdev, 0x50, &regw);
-+ if(regw & 0x08)
++ if (regw & 0x08)
+ pci_write_config_word(pdev, 0x50, regw & ~0x08);
+ pci_read_config_word(pdev, 0x52, &regw);
-+ if(regw & 0x08)
++ if (regw & 0x08)
+ pci_write_config_word(pdev, 0x52, regw & ~0x08);
+ return;
+ }
@@ -15286,7 +16839,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ if (chipset->device == 0x630) { /* SIS630 */
+ u8 host_rev;
+ pci_read_config_byte(host, PCI_REVISION_ID, &host_rev);
-+ if(host_rev >= 0x30) /* 630 ET */
++ if (host_rev >= 0x30) /* 630 ET */
+ chipset = &sis100_early;
+ }
+ break;
@@ -15325,7 +16878,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ }
+
+ /* Further check */
-+ if(chipset == NULL) {
++ if (chipset == NULL) {
+ struct pci_dev *lpc_bridge;
+ u16 trueid;
+ u8 prefctl;
@@ -15341,13 +16894,13 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ switch(trueid) {
+ case 0x5517:
+ lpc_bridge = pci_get_slot(0x00, 0x10); /* Bus 0 Dev 2 Fn 0 */
-+ if(lpc_bridge == NULL)
++ 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)) {
++ if (sbrev == 0x10 && (prefctl & 0x80)) {
+ chipset = &sis133_early;
+ break;
+ }
@@ -15403,9 +16956,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+MODULE_DEVICE_TABLE(pci, sis_pci_tbl);
+MODULE_VERSION(DRV_VERSION);
+
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sl82c105.c linux-2.6.16-rc2/drivers/scsi/pata_sl82c105.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_sl82c105.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_sl82c105.c 2006-01-21 17:05:02.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sl82c105.c linux-2.6.16-rc4/drivers/scsi/pata_sl82c105.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_sl82c105.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -15734,7 +17287,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+ rev = sl82c105_bridge_revision(dev);
+
-+ if(rev == -1)
++ 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");
@@ -15783,9 +17336,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(sl82c105_init);
+module_exit(sl82c105_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_triflex.c linux-2.6.16-rc2/drivers/scsi/pata_triflex.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_triflex.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_triflex.c 2006-01-21 17:05:13.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_triflex.c linux-2.6.16-rc4/drivers/scsi/pata_triflex.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_triflex.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/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
@@ -15904,7 +17457,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ triflex_timing &= ~ (0xFFFF << (16 * is_slave));
+ triflex_timing |= (timing << (16 * is_slave));
+
-+ if(triflex_timing != old_triflex_timing)
++ if (triflex_timing != old_triflex_timing)
+ pci_write_config_dword(pdev, channel_offset, triflex_timing);
+}
+
@@ -16055,9 +17608,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(triflex_init);
+module_exit(triflex_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/pata_via.c linux-2.6.16-rc2/drivers/scsi/pata_via.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/pata_via.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.16-rc2/drivers/scsi/pata_via.c 2006-01-21 17:06:09.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pata_via.c linux-2.6.16-rc4/drivers/scsi/pata_via.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pata_via.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.16-rc4/drivers/scsi/pata_via.c 2006-02-16 15:28:17.000000000 +0000
@@ -0,0 +1,547 @@
+/*
+ * pata_via.c - VIA PATA for new ATA layer
@@ -16121,7 +17674,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+#include <linux/libata.h>
+
+#define DRV_NAME "pata_via"
-+#define DRV_VERSION "0.1.3"
++#define DRV_VERSION "0.1.4"
+
+/*
+ * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx
@@ -16193,7 +17746,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ 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)))
++ if (ata66 & (0x1010 << (16 * ap->hard_port_no)))
+ return ATA_CBL_PATA80;
+ else
+ return ATA_CBL_PATA40;
@@ -16245,7 +17798,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+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 = &ap->device[1 - adev->devno];
++ struct ata_device *peer = ata_dev_pair(ap, adev);
+ struct ata_timing t, p;
+ static int via_clock = 33000; /* Bus clock in kHZ - ought to be tunable one day */
+ unsigned long T = 1000000000 / via_clock;
@@ -16259,19 +17812,19 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ ata_timing_compute(adev, adev->pio_mode, &t, T, UT);
+
+ /* We share 8bit timing so we must merge the constraints */
-+ if(ata_dev_present(peer)) {
-+ if(peer->pio_mode) {
++ 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);
+ }
-+ if(peer->dma_mode) {
++ if (peer->dma_mode) {
+ ata_timing_compute(peer, peer->dma_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) {
++ if (set_ast) {
+ u8 setup; /* 2 bits per drive */
+ int shift = 2 * offset;
+
@@ -16306,7 +17859,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ break;
+ }
+ /* Set UDMA unless device is not UDMA capable */
-+ if(udma_type)
++ if (udma_type)
+ pci_write_config_byte(pdev, 0x50 + offset, ut);
+}
+
@@ -16508,7 +18061,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* 0x40 low bits indicate enabled channels */
+ pci_read_config_byte(pdev, 0x40 , &enable);
+ enable &= 3;
-+ if(enable == 0) {
++ if (enable == 0) {
+ pci_dev_put(isa);
+ return -ENODEV;
+ }
@@ -16521,7 +18074,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ pci_read_config_byte(pdev, 0x43, &fifo);
+
+ /* Clear PREQ# until DDACK# for errata */
-+ if(config->flags & VIA_BAD_PREQ)
++ if (config->flags & VIA_BAD_PREQ)
+ fifo &= 0x7F;
+ else
+ fifo &= 0x9f;
@@ -16532,7 +18085,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ /* Clock set up */
+ switch(config->flags & VIA_UDMA) {
+ case VIA_UDMA_NONE:
-+ if(config->flags & VIA_NO_UNMASK)
++ if (config->flags & VIA_NO_UNMASK)
+ type = &via_mwdma_info_borked;
+ else
+ type = &via_mwdma_info;
@@ -16559,7 +18112,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+ break;
+ }
+
-+ if(config->flags & VIA_BAD_CLK66) {
++ if (config->flags & VIA_BAD_CLK66) {
+ /* Disable the 66MHz clock on problem devices */
+ pci_read_config_dword(pdev, 0x50, &timing);
+ timing &= ~0x80008;
@@ -16606,9 +18159,21 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
+
+module_init(via_init);
+module_exit(via_exit);
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_mv.c linux-2.6.16-rc2/drivers/scsi/sata_mv.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_mv.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_mv.c 2006-01-21 17:07:20.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/pdc_adma.c linux-2.6.16-rc4/drivers/scsi/pdc_adma.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/pdc_adma.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/pdc_adma.c 2006-02-23 13:15:50.480287896 +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-rc4/drivers/scsi/sata_mv.c linux-2.6.16-rc4/drivers/scsi/sata_mv.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_mv.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/sata_mv.c 2006-02-20 11:28:03.000000000 +0000
@@ -389,6 +389,7 @@
.qc_prep = mv_qc_prep,
@@ -16625,9 +18190,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = mv_eng_timeout,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_nv.c linux-2.6.16-rc2/drivers/scsi/sata_nv.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_nv.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_nv.c 2006-01-21 17:08:58.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_nv.c linux-2.6.16-rc4/drivers/scsi/sata_nv.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_nv.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16636,9 +18201,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.irq_handler = nv_interrupt,
.irq_clear = ata_bmdma_irq_clear,
.scr_read = nv_scr_read,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_promise.c linux-2.6.16-rc2/drivers/scsi/sata_promise.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_promise.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_promise.c 2006-02-06 12:36:12.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_promise.c linux-2.6.16-rc4/drivers/scsi/sata_promise.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_promise.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16655,9 +18220,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = pdc_eng_timeout,
.irq_handler = pdc_interrupt,
.irq_clear = pdc_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_qstor.c linux-2.6.16-rc2/drivers/scsi/sata_qstor.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_qstor.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_qstor.c 2006-01-21 17:09:57.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_qstor.c linux-2.6.16-rc4/drivers/scsi/sata_qstor.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_qstor.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/sata_qstor.c 2006-01-21 17:09:57.000000000 +0000
@@ -158,6 +158,7 @@
.phy_reset = qs_phy_reset,
.qc_prep = qs_qc_prep,
@@ -16666,9 +18231,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = qs_eng_timeout,
.irq_handler = qs_intr,
.irq_clear = qs_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sil24.c linux-2.6.16-rc2/drivers/scsi/sata_sil24.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sil24.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_sil24.c 2006-01-21 17:10:52.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sil24.c linux-2.6.16-rc4/drivers/scsi/sata_sil24.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sil24.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/sata_sil24.c 2006-01-21 17:10:52.000000000 +0000
@@ -309,6 +309,7 @@
.qc_prep = sil24_qc_prep,
@@ -16677,9 +18242,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = sil24_eng_timeout,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sil.c linux-2.6.16-rc2/drivers/scsi/sata_sil.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sil.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_sil.c 2006-01-21 17:11:06.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sil.c linux-2.6.16-rc4/drivers/scsi/sata_sil.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sil.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/sata_sil.c 2006-02-14 17:23:28.000000000 +0000
@@ -165,6 +165,7 @@
.bmdma_status = ata_bmdma_status,
.qc_prep = ata_qc_prep,
@@ -16688,9 +18253,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sis.c linux-2.6.16-rc2/drivers/scsi/sata_sis.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sis.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_sis.c 2006-01-21 17:11:23.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sis.c linux-2.6.16-rc4/drivers/scsi/sata_sis.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sis.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16699,9 +18264,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_svw.c linux-2.6.16-rc2/drivers/scsi/sata_svw.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_svw.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_svw.c 2006-02-06 12:30:23.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_svw.c linux-2.6.16-rc4/drivers/scsi/sata_svw.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_svw.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16710,9 +18275,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sx4.c linux-2.6.16-rc2/drivers/scsi/sata_sx4.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_sx4.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_sx4.c 2006-01-21 17:12:01.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sx4.c linux-2.6.16-rc4/drivers/scsi/sata_sx4.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_sx4.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16721,9 +18286,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = pdc_eng_timeout,
.irq_handler = pdc20621_interrupt,
.irq_clear = pdc20621_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_uli.c linux-2.6.16-rc2/drivers/scsi/sata_uli.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_uli.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_uli.c 2006-01-21 17:12:24.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_uli.c linux-2.6.16-rc4/drivers/scsi/sata_uli.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_uli.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16732,9 +18297,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_via.c linux-2.6.16-rc2/drivers/scsi/sata_via.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_via.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_via.c 2006-01-21 17:12:51.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_via.c linux-2.6.16-rc4/drivers/scsi/sata_via.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_via.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/drivers/scsi/sata_via.c 2006-01-21 17:12:51.000000000 +0000
@@ -126,6 +126,7 @@
.qc_prep = ata_qc_prep,
@@ -16743,10 +18308,10 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/drivers/scsi/sata_vsc.c linux-2.6.16-rc2/drivers/scsi/sata_vsc.c
---- linux.vanilla-2.6.16-rc2/drivers/scsi/sata_vsc.c 2006-02-06 12:21:40.000000000 +0000
-+++ linux-2.6.16-rc2/drivers/scsi/sata_vsc.c 2006-01-21 17:13:14.000000000 +0000
-@@ -252,6 +252,7 @@
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/drivers/scsi/sata_vsc.c linux-2.6.16-rc4/drivers/scsi/sata_vsc.c
+--- linux.vanilla-2.6.16-rc4/drivers/scsi/sata_vsc.c 2006-02-20 11:22:25.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16754,9 +18319,9 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
.eng_timeout = ata_eng_timeout,
.irq_handler = vsc_sata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/include/linux/ata.h linux-2.6.16-rc2/include/linux/ata.h
---- linux.vanilla-2.6.16-rc2/include/linux/ata.h 2006-02-06 12:21:42.000000000 +0000
-+++ linux-2.6.16-rc2/include/linux/ata.h 2006-02-07 11:30:07.000000000 +0000
+diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.16-rc4/include/linux/ata.h linux-2.6.16-rc4/include/linux/ata.h
+--- linux.vanilla-2.6.16-rc4/include/linux/ata.h 2006-02-20 11:22:26.000000000 +0000
++++ linux-2.6.16-rc4/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,
@@ -16766,7 +18331,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
ATA_CMD_READ_MULTI = 0xC4,
ATA_CMD_READ_MULTI_EXT = 0x29,
ATA_CMD_WRITE_MULTI = 0xC5,
-@@ -247,13 +249,16 @@
+@@ -247,18 +249,22 @@
};
#define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0)
@@ -16783,9 +18348,24 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
#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))
-diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6.16-rc2/include/linux/libata.h linux-2.6.16-rc2/include/linux/libata.h
---- linux.vanilla-2.6.16-rc2/include/linux/libata.h 2006-02-06 12:21:42.000000000 +0000
-+++ linux-2.6.16-rc2/include/linux/libata.h 2006-02-06 18:45:03.000000000 +0000
+ #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-rc4/include/linux/libata.h linux-2.6.16-rc4/include/linux/libata.h
+--- linux.vanilla-2.6.16-rc4/include/linux/libata.h 2006-02-20 11:22:26.000000000 +0000
++++ linux-2.6.16-rc4/include/linux/libata.h 2006-02-23 13:28:56.634774248 +0000
+@@ -41,7 +41,7 @@
+ #undef ATA_VERBOSE_DEBUG /* yet more debugging output */
+ #undef 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 */
@@ -16852,7 +18432,7 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
void (*bmdma_setup) (struct ata_queued_cmd *qc);
void (*bmdma_start) (struct ata_queued_cmd *qc);
+
-+ void (*data_xfer) (struct ata_port *, unsigned char *, unsigned int, int);
++ 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);
@@ -16871,15 +18451,24 @@ diff -u --exclude-from /usr/src/exclude --new-file --recursive linux.vanilla-2.6
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, unsigned char *buf,
++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, unsigned char *buf,
++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, unsigned char *buf,
++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, unsigned char *buf,
++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-rc2.bb b/packages/linux/ixp4xx-kernel_2.6.16-rc4-git9.bb
index a034fca982..e47f20a7ab 100644
--- a/packages/linux/ixp4xx-kernel_2.6.16-rc2.bb
+++ b/packages/linux/ixp4xx-kernel_2.6.16-rc4-git9.bb
@@ -3,62 +3,48 @@
# Increment PR_CONFIG for changes to the ixp4xx-kernel specific
# defconfig (do *NOT* increment anything in here for changes
# to other kernel configs!)
-PR_CONFIG = "2"
+PR_CONFIG = "0"
#
# Increment the number below (i.e. the digits after PR) when
# making changes within this file or for changes to the patches
# applied to the kernel.
-PR = "r3.${PR_CONFIG}"
+PR = "r0.${PR_CONFIG}"
include ixp4xx-kernel.inc
-RPSRC = "http://www.rpsys.net/openzaurus/patches"
+# RPSRC = "http://www.rpsys.net/openzaurus/patches"
# IXP4XX_PATCHES - full list of patches to apply
IXP4XX_PATCHES = ""
-IXP4XX_PATCHES += "file://05-patch-2.6.16-rc2-ide2;patch=1"
+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://10-nslu2-fix-flash.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 += "${RPSRC}/led_core-r11.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_triggers-r9.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_trig_timer-r4.patch;patch=1"
-# IXP4XX_PATCHES += "${RPSRC}/led_trig_sharpsl_pm-r4a.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_zaurus-r8.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_locomo-r5.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_ixp4xx-r0.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_tosa-r3.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_ide-r2.patch;patch=1"
-IXP4XX_PATCHES += "${RPSRC}/led_nand-r2.patch;patch=1"
-IXP4XX_PATCHES += "file://950-leds-timer.patch;patch=1"
IXP4XX_PATCHES += "file://951-ixp4xx-leds-cpu-activity.patch;patch=1"
IXP4XX_PATCHES += "file://40-rtc-class.patch;patch=1"
IXP4XX_PATCHES += "file://45-eeprom-notifier.patch;patch=1"
IXP4XX_PATCHES += "file://48-setup-byteswap-cmdline.patch;patch=1"
-IXP4XX_PATCHES += "file://61-ixp4xx-beeper-irq.patch;patch=1"
-IXP4XX_PATCHES += "file://61-nslu2-beeper.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://80-nas100d-fix-i2c.patch;patch=1"
-IXP4XX_PATCHES += "file://81-nslu2-power.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://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"
-# 93-loft-maclist is still required, but does not apply cleanly.
-# IXP4XX_PATCHES += "file://93-loft-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"
-# 96-loft-leds is still required, but does not apply cleanly.
-# IXP4XX_PATCHES += "file://96-loft-leds.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-misc.patch;patch=1"
IXP4XX_PATCHES += "file://97-ds101-pci.patch;patch=1"
-IXP4XX_PATCHES += "file://97-ds101-power.patch;patch=1"
-IXP4XX_PATCHES += "file://97-ds101-setup.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/linux/linux-jlime-sh3_2.6.11.bb b/packages/linux/linux-jlime-sh3_2.6.11.bb
index f77de8ab9e..b646c1a3b8 100644
--- a/packages/linux/linux-jlime-sh3_2.6.11.bb
+++ b/packages/linux/linux-jlime-sh3_2.6.11.bb
@@ -19,6 +19,6 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
+ install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 arch/$(ARCH)/boot/$(KERNEL_IMAGETYPE) $(DEPLOY_DIR)/images/$(KERNEL_IMAGETYPE)
}
diff --git a/packages/linux/linux-mtx-1_2.4.27.bb b/packages/linux/linux-mtx-1_2.4.27.bb
index 31015634cc..cce3b3c30c 100644
--- a/packages/linux/linux-mtx-1_2.4.27.bb
+++ b/packages/linux/linux-mtx-1_2.4.27.bb
@@ -70,10 +70,10 @@ fi
FILES_kernel += " /tmp"
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/mips/zboot/images/mtx-1.flash.bin ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.flash.bin
- install -m 0644 arch/mips/zboot/images/mtx-1.flash.srec ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.flash.srec
- install -m 0644 arch/mips/zboot/images/mtx-1.srec ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.ram.srec
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/mips/zboot/images/mtx-1.flash.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.bin
+ install -m 0644 arch/mips/zboot/images/mtx-1.flash.srec ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.srec
+ install -m 0644 arch/mips/zboot/images/mtx-1.srec ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.ram.srec
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-omap-2.6_2.6.9-omap1.bb b/packages/linux/linux-omap-2.6_2.6.9-omap1.bb
index adaf84f1cc..5cb4a439b1 100644
--- a/packages/linux/linux-omap-2.6_2.6.9-omap1.bb
+++ b/packages/linux/linux-omap-2.6_2.6.9-omap1.bb
@@ -25,8 +25,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-omap1_2.6.12-rc2.bb b/packages/linux/linux-omap1_2.6.12-rc2.bb
index e3dc282017..133fe9ac2c 100644
--- a/packages/linux/linux-omap1_2.6.12-rc2.bb
+++ b/packages/linux/linux-omap1_2.6.12-rc2.bb
@@ -32,12 +32,12 @@ do_configure_prepend() {
}
do_deploy_omap5912osk() {
- install -d ${DEPLOY_DIR}/images
+ install -d ${DEPLOY_DIR_IMAGE}
arm-linux-objcopy -O binary -R .note -R .comment -S arch/arm/boot/compressed/vmlinux ${DEPLOY_DIR}/linux.bin
gzip -f -9 ${DEPLOY_DIR}/linux.bin
mkimage -A arm -O linux -T kernel -C gzip -a 0x10c08000 -e 0x10c08000 -n "OE" -d ${DEPLOY_DIR}/linux.bin.gz ${DEPLOY_DIR}/uImage_bb.cc
cp ${DEPLOY_DIR}/uImage_bb.cc /tftpboot
-# install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+# install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
}
diff --git a/packages/linux/linux-openzaurus-2.6.15/defconfig-qemuarm b/packages/linux/linux-openzaurus-2.6.15/defconfig-qemuarm
new file mode 100644
index 0000000000..0f5e611cb9
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.15/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 is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_SMC91X=y
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# 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 is not set
+
+#
+# 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.inc b/packages/linux/linux-openzaurus.inc
index 8403965269..c0b01616ac 100644
--- a/packages/linux/linux-openzaurus.inc
+++ b/packages/linux/linux-openzaurus.inc
@@ -115,8 +115,8 @@ do_compile_append() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PV}-${MACHINE}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-openzaurus_2.6.15.bb b/packages/linux/linux-openzaurus_2.6.15.bb
index cfd02bb25c..360bce4d87 100644
--- a/packages/linux/linux-openzaurus_2.6.15.bb
+++ b/packages/linux/linux-openzaurus_2.6.15.bb
@@ -1,6 +1,6 @@
include linux-openzaurus.inc
-PR = "r6"
+PR = "r10"
# Handy URLs
# git://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git \
@@ -64,16 +64,18 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.bz2 \
${RPSRC}/pxa_cf_initorder_hack-r1.patch;patch=1 \
${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \
${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \
- ${RPSRC}/alsa/alsa-soc-0.9.patch;patch=1 \
- ${RPSRC}/alsa/alsa-soc-0.9-0.10rc1.patch;patch=1 \
- ${RPSRC}/alsa_soc_rpupdate7-r2.patch;patch=1 \
- ${RPSRC}/alsa_akita_fix-r0.patch;patch=1 \
+ ${RPSRC}/alsa/asoc-0.10rc2.diff.bz2;patch=1 \
+ ${RPSRC}/alsa/asoc-v0.10rc2-rc3.patch;patch=1 \
+ ${RPSRC}/misc_fix1-r0.patch;patch=1 \
${RPSRC}/zaurus_keyboard_tweak-r0.patch;patch=1 \
${RPSRC}/corgi_bl_cleanup-r2.patch;patch=1 \
${RPSRC}/corgi_bl_generic-r2.patch;patch=1 \
${RPSRC}/pxafb_tweaks-r0.patch;patch=1 \
${RPSRC}/pm_changes-r0.patch;patch=1 \
${RPSRC}/sharpsl_pm-do-r2.patch;patch=1 \
+ ${RPSRC}/headphone_switch-r3.patch;patch=1 \
+ ${RPSRC}/backport_i2c_asoc_fix-r0.patch;patch=1 \
+ ${RPSRC}/integrator_rtc-r0.patch;patch=1 \
${DOSRC}/kexec-arm-r0.patch;patch=1 \
file://add-oz-release-string.patch;patch=1 \
file://pxa-serial-hack.patch;patch=1 \
@@ -86,6 +88,7 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.bz2 \
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
diff --git a/packages/linux/linux-sun4cdm_2.4.26.bb b/packages/linux/linux-sun4cdm_2.4.26.bb
index 5075523179..d91b952787 100644
--- a/packages/linux/linux-sun4cdm_2.4.26.bb
+++ b/packages/linux/linux-sun4cdm_2.4.26.bb
@@ -23,8 +23,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- elftoaout -o ${DEPLOY_DIR}/images/linux-aout-${DATETIME} ${KERNEL_IMAGETYPE}
+ install -d ${DEPLOY_DIR_IMAGE}
+ elftoaout -o ${DEPLOY_DIR_IMAGE}/linux-aout-${DATETIME} ${KERNEL_IMAGETYPE}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-wrt_2.4.20.bb b/packages/linux/linux-wrt_2.4.20.bb
index 9eb3218f6e..8e49ffa2c2 100644
--- a/packages/linux/linux-wrt_2.4.20.bb
+++ b/packages/linux/linux-wrt_2.4.20.bb
@@ -50,8 +50,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PACKAGE_ARCH}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PACKAGE_ARCH}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-wrt_2.4.30.bb b/packages/linux/linux-wrt_2.4.30.bb
index efcd20df9b..0d9229c5d8 100644
--- a/packages/linux/linux-wrt_2.4.30.bb
+++ b/packages/linux/linux-wrt_2.4.30.bb
@@ -103,9 +103,9 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
+ install -d ${DEPLOY_DIR_IMAGE}
cat ${KERNEL_OUTPUT} | lzma e -si -so -eos > \
- ${DEPLOY_DIR}/images/wrt-kernel-${PV}.lzma
+ ${DEPLOY_DIR_IMAGE}/wrt-kernel-${PV}.lzma
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/linux-xxs1500_2.4.21.bb b/packages/linux/linux-xxs1500_2.4.21.bb
index e4f7fac776..4754b17046 100644
--- a/packages/linux/linux-xxs1500_2.4.21.bb
+++ b/packages/linux/linux-xxs1500_2.4.21.bb
@@ -27,8 +27,8 @@ do_configure_prepend() {
FILES_kernel += " /tmp"
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR}/images/${MACHINE}-${KV}-${KERNEL_IMAGETYPE}-${DATETIME}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${MACHINE}-${KV}-${KERNEL_IMAGETYPE}-${DATETIME}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/mainstone-kernel_2.6.11.bb b/packages/linux/mainstone-kernel_2.6.11.bb
index 2a4d168ac0..12422c96de 100644
--- a/packages/linux/mainstone-kernel_2.6.11.bb
+++ b/packages/linux/mainstone-kernel_2.6.11.bb
@@ -28,8 +28,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/nslu2-kernel.inc b/packages/linux/nslu2-kernel.inc
index d30bcf77ce..b4c675264a 100644
--- a/packages/linux/nslu2-kernel.inc
+++ b/packages/linux/nslu2-kernel.inc
@@ -251,8 +251,8 @@ do_install_append() {
do_deploy[dirs] = "${S}"
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- redboot_fixup '${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${N2K_SUFFIX}'
+ install -d ${DEPLOY_DIR_IMAGE}
+ redboot_fixup '${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${N2K_SUFFIX}'
}
addtask deploy before do_build after do_compile
diff --git a/packages/linux/nslu2-linksys-kernel_2.4.22.bb b/packages/linux/nslu2-linksys-kernel_2.4.22.bb
index 0e2ea3e804..40bceb373e 100644
--- a/packages/linux/nslu2-linksys-kernel_2.4.22.bb
+++ b/packages/linux/nslu2-linksys-kernel_2.4.22.bb
@@ -42,8 +42,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb b/packages/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb
index e5574dd35b..d9addd968a 100644
--- a/packages/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb
+++ b/packages/linux/openzaurus-pxa27x_2.4.20-rmk2-embedix20050602.bb
@@ -91,8 +91,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${PACKAGE_ARCH}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${PACKAGE_ARCH}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc b/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
index d8c87d9f02..4c8b43121d 100644
--- a/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
+++ b/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
@@ -105,8 +105,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb b/packages/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
index 0c3ca93fa1..f600acbaed 100644
--- a/packages/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
+++ b/packages/linux/openzaurus-sa_2.4.18-rmk7-pxa3-embedix20030509.bb
@@ -91,9 +91,9 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
+ install -d ${DEPLOY_DIR_IMAGE}
install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} \
- ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-${DATETIME}.bin
+ ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}-${COLLIE_MEMORY_SIZE}-${COLLIE_RAMDISK_SIZE}-${DATETIME}.bin
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/triton-kernel_2.6.11.bb b/packages/linux/triton-kernel_2.6.11.bb
index 5e95d969d1..6fc575c2b0 100644
--- a/packages/linux/triton-kernel_2.6.11.bb
+++ b/packages/linux/triton-kernel_2.6.11.bb
@@ -29,8 +29,8 @@ do_configure_prepend() {
}
do_deploy() {
- install -d ${DEPLOY_DIR}/images
- install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR}/images/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX}
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${KERNEL_SUFFIX}
}
do_deploy[dirs] = "${S}"
diff --git a/packages/linux/unslung-kernel/defconfig b/packages/linux/unslung-kernel/defconfig
index 52864f46f6..027dbfb80b 100644
--- a/packages/linux/unslung-kernel/defconfig
+++ b/packages/linux/unslung-kernel/defconfig
@@ -334,7 +334,7 @@ CONFIG_MTD_IXP425=y
# CONFIG_CISS_SCSI_TAPE is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
-CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_NBD is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=16384
@@ -513,6 +513,11 @@ CONFIG_TUN=m
CONFIG_ETHERTAP=m
#
+# Netconsole support
+#
+CONFIG_NETCONSOLE=m
+
+#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
@@ -900,8 +905,8 @@ CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
CONFIG_RAMFS=y
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
# CONFIG_JFS_DEBUG is not set
@@ -1182,7 +1187,7 @@ CONFIG_USB_SERIAL_VISOR=m
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
-# CONFIG_USB_SERIAL_KEYSPAN is not set
+CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_MCT_U232=m
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
diff --git a/packages/linux/unslung-kernel/netconsole.patch b/packages/linux/unslung-kernel/netconsole.patch
new file mode 100644
index 0000000000..c54f4d160e
--- /dev/null
+++ b/packages/linux/unslung-kernel/netconsole.patch
@@ -0,0 +1,383 @@
+diff -Naur linux-2.4.22/drivers/net/Config.in.orig linux-2.4.22/drivers/net/Config.in
+--- linux-2.4.22/drivers/net/Config.in.orig 2006-02-26 11:49:28.000000000 -0600
++++ linux-2.4.22/drivers/net/Config.in 2006-02-26 11:40:31.000000000 -0600
+@@ -338,6 +338,8 @@
+ dep_tristate ' SysKonnect FDDI PCI support' CONFIG_SKFP $CONFIG_PCI
+ fi
+
++dep_tristate 'Network logging support' CONFIG_NETCONSOLE
++
+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+ if [ "$CONFIG_INET" = "y" ]; then
+ bool 'HIPPI driver support (EXPERIMENTAL)' CONFIG_HIPPI
+diff -Naur linux-2.4.22/drivers/net/Makefile.orig linux-2.4.22/drivers/net/Makefile
+--- linux-2.4.22/drivers/net/Makefile.orig 2006-02-26 11:49:45.000000000 -0600
++++ linux-2.4.22/drivers/net/Makefile 2006-02-26 11:38:58.000000000 -0600
+@@ -272,6 +272,8 @@
+ obj-y += ../acorn/net/acorn-net.o
+ endif
+
++obj-$(CONFIG_NETCONSOLE) += netconsole.o
++
+ #
+ # HIPPI adapters
+ #
+diff -Naur linux-2.4.22/drivers/net/netconsole.c.orig linux-2.4.22/drivers/net/netconsole.c
+--- linux-2.4.22/drivers/net/netconsole.c.orig 1969-12-31 18:00:00.000000000 -0600
++++ linux-2.4.22/drivers/net/netconsole.c 2006-02-26 16:16:23.000000000 -0600
+@@ -0,0 +1,342 @@
++/* linux/drivers/net/netconsole.c
++ *
++ * Copyright (C) 2001 Ingo Molnar <mingo@redhat.com>
++ *
++ * This file contains the implementation of an IRQ-safe, crash-safe
++ * kernel console implementation that outputs kernel messages to the
++ * network.
++ *
++ * Modification history:
++ *
++ * 2001-09-17 started by Ingo Molnar.
++ * 2006-02-26 very minor modifications to suit the NSLU2 w/Unslung -- Mike Westerhof.
++ */
++
++/****************************************************************
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ ****************************************************************/
++
++#include <net/tcp.h>
++#include <net/udp.h>
++#include <linux/mm.h>
++#include <linux/tty.h>
++#include <linux/init.h>
++#include <linux/module.h>
++#include <asm/unaligned.h>
++#include <linux/console.h>
++#include <linux/smp_lock.h>
++#include <linux/netdevice.h>
++#include <linux/tty_driver.h>
++#include <linux/etherdevice.h>
++
++static struct net_device *netconsole_dev;
++static u16 source_port, target_port;
++static u32 source_ip, target_ip;
++static unsigned char daddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff} ;
++
++#define NETCONSOLE_VERSION 0x01
++#define HEADER_LEN 5
++
++#define MAX_UDP_CHUNK 1460
++#define MAX_PRINT_CHUNK (MAX_UDP_CHUNK-HEADER_LEN)
++
++/*
++ * We maintain a small pool of fully-sized skbs,
++ * to make sure the message gets out even in
++ * extreme OOM situations.
++ */
++#define MAX_NETCONSOLE_SKBS 32
++
++static spinlock_t netconsole_lock = SPIN_LOCK_UNLOCKED;
++static int nr_netconsole_skbs;
++static struct sk_buff *netconsole_skbs;
++
++#define MAX_SKB_SIZE \
++ (MAX_UDP_CHUNK + sizeof(struct udphdr) + \
++ sizeof(struct iphdr) + sizeof(struct ethhdr))
++
++static void __refill_netconsole_skbs(void)
++{
++ struct sk_buff *skb;
++ unsigned long flags;
++
++ spin_lock_irqsave(&netconsole_lock, flags);
++ while (nr_netconsole_skbs < MAX_NETCONSOLE_SKBS) {
++ skb = alloc_skb(MAX_SKB_SIZE, GFP_ATOMIC);
++ if (!skb)
++ break;
++ if (netconsole_skbs)
++ skb->next = netconsole_skbs;
++ else
++ skb->next = NULL;
++ netconsole_skbs = skb;
++ nr_netconsole_skbs++;
++ }
++ spin_unlock_irqrestore(&netconsole_lock, flags);
++}
++
++static struct sk_buff * get_netconsole_skb(void)
++{
++ struct sk_buff *skb;
++
++ unsigned long flags;
++
++ spin_lock_irqsave(&netconsole_lock, flags);
++ skb = netconsole_skbs;
++ if (skb)
++ netconsole_skbs = skb->next;
++ skb->next = NULL;
++ nr_netconsole_skbs--;
++ spin_unlock_irqrestore(&netconsole_lock, flags);
++
++ return skb;
++}
++
++static spinlock_t sequence_lock = SPIN_LOCK_UNLOCKED;
++static unsigned int offset;
++
++static void send_netconsole_skb(struct net_device *dev, const char *msg, unsigned int msg_len)
++{
++ int total_len, eth_len, ip_len, udp_len;
++ unsigned long flags;
++ struct sk_buff *skb;
++ struct udphdr *udph;
++ struct iphdr *iph;
++ struct ethhdr *eth;
++
++ udp_len = msg_len + HEADER_LEN + sizeof(*udph);
++ ip_len = eth_len = udp_len + sizeof(*iph);
++ total_len = eth_len + ETH_HLEN;
++
++ if (nr_netconsole_skbs < MAX_NETCONSOLE_SKBS)
++ __refill_netconsole_skbs();
++
++ skb = alloc_skb(total_len, GFP_ATOMIC);
++ if (!skb) {
++ skb = get_netconsole_skb();
++ if (!skb)
++ /* tough! */
++ return;
++ }
++
++ atomic_set(&skb->users, 1);
++ skb_reserve(skb, total_len - msg_len - HEADER_LEN);
++ skb->data[0] = NETCONSOLE_VERSION;
++
++ spin_lock_irqsave(&sequence_lock, flags);
++ put_unaligned(htonl(offset), (u32 *) (skb->data + 1));
++ offset += msg_len;
++ spin_unlock_irqrestore(&sequence_lock, flags);
++
++ memcpy(skb->data + HEADER_LEN, msg, msg_len);
++ skb->len += msg_len + HEADER_LEN;
++
++ udph = (struct udphdr *) skb_push(skb, sizeof(*udph));
++ udph->source = source_port;
++ udph->dest = target_port;
++ udph->len = htons(udp_len);
++ udph->check = 0;
++
++ iph = (struct iphdr *)skb_push(skb, sizeof(*iph));
++
++ iph->version = 4;
++ iph->ihl = 5;
++ iph->tos = 0;
++ iph->tot_len = htons(ip_len);
++ iph->id = 0;
++ iph->frag_off = 0;
++ iph->ttl = 64;
++ iph->protocol = IPPROTO_UDP;
++ iph->check = 0;
++ iph->saddr = source_ip;
++ iph->daddr = target_ip;
++ iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
++
++ eth = (struct ethhdr *) skb_push(skb, ETH_HLEN);
++
++ eth->h_proto = htons(ETH_P_IP);
++ memcpy(eth->h_source, dev->dev_addr, dev->addr_len);
++ memcpy(eth->h_dest, daddr, dev->addr_len);
++
++repeat:
++ spin_lock(&dev->xmit_lock);
++ dev->xmit_lock_owner = smp_processor_id();
++
++ if (netif_queue_stopped(dev)) {
++ dev->xmit_lock_owner = -1;
++ spin_unlock(&dev->xmit_lock);
++
++ dev->poll_controller(dev);
++ goto repeat;
++ }
++
++ dev->hard_start_xmit(skb, dev);
++
++ dev->xmit_lock_owner = -1;
++ spin_unlock(&dev->xmit_lock);
++}
++
++static void write_netconsole_msg(struct console *con, const char *msg, unsigned int msg_len)
++{
++ int len, left;
++ struct net_device *dev;
++
++ dev = netconsole_dev;
++ if (!dev)
++ return;
++
++ if (dev->poll_controller && netif_running(dev)) {
++ unsigned long flags;
++
++ __save_flags(flags);
++ __cli();
++ left = msg_len;
++repeat:
++ if (left > MAX_PRINT_CHUNK)
++ len = MAX_PRINT_CHUNK;
++ else
++ len = left;
++ send_netconsole_skb(dev, msg, len);
++ msg += len;
++ left -= len;
++ if (left)
++ goto repeat;
++ __restore_flags(flags);
++ }
++}
++
++static char *dev;
++static int target_eth_byte0 = 255;
++static int target_eth_byte1 = 255;
++static int target_eth_byte2 = 255;
++static int target_eth_byte3 = 255;
++static int target_eth_byte4 = 255;
++static int target_eth_byte5 = 255;
++
++MODULE_AUTHOR("Ingo Molnar <mingo@redhat.com>");
++MODULE_DESCRIPTION("kernel network console implementation");
++MODULE_LICENSE("GPL");
++MODULE_PARM(target_ip, "i");
++MODULE_PARM(target_eth_byte0, "i");
++MODULE_PARM(target_eth_byte1, "i");
++MODULE_PARM(target_eth_byte2, "i");
++MODULE_PARM(target_eth_byte3, "i");
++MODULE_PARM(target_eth_byte4, "i");
++MODULE_PARM(target_eth_byte5, "i");
++MODULE_PARM(source_port, "h");
++MODULE_PARM(target_port, "h");
++MODULE_PARM(dev, "s");
++
++static struct console netconsole =
++ { flags: CON_ENABLED, write: write_netconsole_msg };
++
++static int init_netconsole(void)
++{
++ struct net_device *ndev = NULL;
++ struct in_device *in_dev;
++
++ // Set some reasonable defaults, at least for the NSLU2 device
++ if (!target_port)
++ target_port = 6666;
++ if (!source_port)
++ source_port = 6666;
++ if (!dev)
++ dev = "ixp0";
++
++ printk(KERN_INFO "netconsole: using network device <%s>\n", dev);
++ // this will be valid once the device goes up.
++ if (dev)
++ ndev = dev_get_by_name(dev);
++ if (!ndev) {
++ printk(KERN_ERR "netconsole: network device %s does not exist, aborting.\n", dev);
++ return -1;
++ }
++ if (!ndev->poll_controller) {
++ printk(KERN_ERR "netconsole: %s's network driver does not implement netlogging yet, aborting.\n", dev);
++ return -1;
++ }
++ in_dev = in_dev_get(ndev);
++ if (!in_dev) {
++ printk(KERN_ERR "netconsole: network device %s is not an IP protocol device, aborting.\n", dev);
++ return -1;
++ }
++ source_ip = ntohl(in_dev->ifa_list->ifa_local);
++ if (!source_ip) {
++ printk(KERN_ERR "netconsole: network device %s has no local address, aborting.\n", dev);
++ return -1;
++ }
++ source_ip = htonl(source_ip);
++#define IP(x) ((char *)&source_ip)[x]
++ printk(KERN_INFO "netconsole: using source IP %i.%i.%i.%i\n",
++ IP(0), IP(1), IP(2), IP(3));
++#undef IP
++ if (!target_ip) {
++ printk(KERN_ERR "netconsole: target_ip parameter not specified, aborting.\n");
++ return -1;
++ }
++ target_ip = htonl(target_ip);
++#define IP(x) ((char *)&target_ip)[x]
++ printk(KERN_INFO "netconsole: using target IP %i.%i.%i.%i\n",
++ IP(0), IP(1), IP(2), IP(3));
++#undef IP
++ if (!source_port) {
++ printk(KERN_ERR "netconsole: source_port parameter not specified, aborting.\n");
++ return -1;
++ }
++ printk(KERN_INFO "netconsole: using source UDP port: %i\n", source_port);
++ source_port = htons(source_port);
++ if (!target_port) {
++ printk(KERN_ERR "netconsole: target_port parameter not specified, aborting.\n");
++ return -1;
++ }
++ printk(KERN_INFO "netconsole: using target UDP port: %i\n", target_port);
++ target_port = htons(target_port);
++
++ daddr[0] = target_eth_byte0;
++ daddr[1] = target_eth_byte1;
++ daddr[2] = target_eth_byte2;
++ daddr[3] = target_eth_byte3;
++ daddr[4] = target_eth_byte4;
++ daddr[5] = target_eth_byte5;
++
++ if ((daddr[0] & daddr[1] & daddr[2] & daddr[3] & daddr[4] & daddr[5]) == 255)
++ printk(KERN_INFO "netconsole: using broadcast ethernet frames to send packets.\n");
++ else
++ printk(KERN_INFO "netconsole: using target ethernet address %02x:%02x:%02x:%02x:%02x:%02x.\n", daddr[0], daddr[1], daddr[2], daddr[3], daddr[4], daddr[5]);
++
++ netconsole_dev = ndev;
++#define STARTUP_MSG "[...network console startup...]\n"
++ write_netconsole_msg(NULL, STARTUP_MSG, strlen(STARTUP_MSG));
++
++ register_console(&netconsole);
++ printk(KERN_INFO "netconsole: network logging started up successfully!\n");
++ return 0;
++}
++
++static void cleanup_netconsole(void)
++{
++ printk(KERN_INFO "netconsole: network logging shut down.\n");
++ unregister_console(&netconsole);
++
++#define SHUTDOWN_MSG "[...network console shutdown...]\n"
++ write_netconsole_msg(NULL, SHUTDOWN_MSG, strlen(SHUTDOWN_MSG));
++ netconsole_dev = NULL;
++}
++
++module_init(init_netconsole);
++module_exit(cleanup_netconsole);
++
++int dummy = MAX_SKB_SIZE;
+diff -Naur linux-2.4.22/include/linux/netdevice.h.orig linux-2.4.22/include/linux/netdevice.h
+--- linux-2.4.22/include/linux/netdevice.h.orig 2006-02-26 11:50:24.000000000 -0600
++++ linux-2.4.22/include/linux/netdevice.h 2006-02-26 11:37:14.000000000 -0600
+@@ -428,6 +428,9 @@
+ int (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
+ int (*accept_fastpath)(struct net_device *, struct dst_entry*);
+
++#define HAVE_POLL_CONTROLLER
++ void (*poll_controller)(struct net_device *dev);
++
+ /* open/release and usage marking */
+ struct module *owner;
+
diff --git a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
index 170651afab..b8d3c13a32 100644
--- a/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
+++ b/packages/linux/unslung-kernel_2.4.22.l2.3r63.bb
@@ -4,7 +4,7 @@ include nslu2-linksys-kernel_2.4.22.bb
DESCRIPTION = "Unslung kernel for the Linksys NSLU2 device"
MAINTAINER = "NSLU2 Linux <www.nlsu2-linux.org>"
-PR = "r8"
+PR = "r10"
KERNEL_SUFFIX = "unslung"
@@ -25,6 +25,7 @@ SRC_URI += "file://linux-kernel-R25_to_R29.patch;patch=1 \
file://ppp_mppe.patch;patch=1 \
file://nfs-blocksize.patch;patch=1 \
file://pl2303.patch;patch=1 \
+ file://netconsole.patch;patch=1 \
${UNSLUNG_KERNEL_EXTRA_SRC_URI}"
FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/unslung-kernel', '${FILE_DIRNAME}/nslu2-linksys-kernel-2.4.22', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
diff --git a/packages/lirc/lirc_0.7.1.bb b/packages/lirc/lirc_0.7.1.bb
index c3eaa3aa87..cd65dcedae 100644
--- a/packages/lirc/lirc_0.7.1.bb
+++ b/packages/lirc/lirc_0.7.1.bb
@@ -3,7 +3,7 @@ SECTION = "console/network"
PRIORITY = "optional"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
LICENSE = "GPL"
-DEPENDS = "virtual/kernel x11 xau libsm ice"
+DEPENDS = "virtual/kernel libx11 libxau libsm libice"
PR = "r5"
SRC_URI = "${SOURCEFORGE_MIRROR}/lirc/lirc-${PV}.tar.gz \
diff --git a/packages/lirc/lirc_0.8.0.bb b/packages/lirc/lirc_0.8.0.bb
index 62ef3b5d3d..69d054ceae 100644
--- a/packages/lirc/lirc_0.8.0.bb
+++ b/packages/lirc/lirc_0.8.0.bb
@@ -8,7 +8,7 @@ SECTION = "console/network"
PRIORITY = "optional"
MAINTAINER = "Matthias Goebl <matthias.goebl@goebl.net>"
LICENSE = "GPL"
-DEPENDS = "virtual/kernel libx11 libxau libsm ice"
+DEPENDS = "virtual/kernel libx11 libxau libsm libice"
DEPENDS_nslu2 = "virtual/kernel lirc-modules"
RDEPENDS = "lirc-modules"
RDEPENDS_lirc-x = "lirc"
diff --git a/packages/maemo/hildon-fm_0.9.1-2.bb b/packages/maemo/hildon-fm_0.9.1-2.bb
index f5346286c0..93bf0cbfa2 100644
--- a/packages/maemo/hildon-fm_0.9.1-2.bb
+++ b/packages/maemo/hildon-fm_0.9.1-2.bb
@@ -2,7 +2,7 @@ PR = "r1"
LICENSE = "GPL/LGPL"
MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "gtk+-2.6.4-1.osso7 outo libxi xt libpng gconf hildon-lgpl osso-thumbnail osso-gwconnect"
+DEPENDS = "gtk+-2.6.4-1.osso7 outo libxi libxt libpng gconf hildon-lgpl osso-thumbnail osso-gwconnect"
SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-fm/hildon-fm_${PV}.tar.gz"
S = "${WORKDIR}/hildon-fm-0.9.1"
diff --git a/packages/maemo/hildon-lgpl_0.9.14-2.bb b/packages/maemo/hildon-lgpl_0.9.14-2.bb
index f3ef59c8dc..9656fd85b6 100644
--- a/packages/maemo/hildon-lgpl_0.9.14-2.bb
+++ b/packages/maemo/hildon-lgpl_0.9.14-2.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
MAINTAINER = "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "gtk+-2.6.4-1.osso7 outo xtst libmatchbox libxi xt libpng gconf"
+DEPENDS = "gtk+-2.6.4-1.osso7 outo libxtst libmatchbox libxi libxt libpng gconf"
SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/h/hildon-lgpl/hildon-lgpl_${PV}.tar.gz \
file://hildon-lgpl-noWerror.patch;patch=1"
diff --git a/packages/maemo/osso-af-utils_0.4.bb b/packages/maemo/osso-af-utils_0.4.bb
index 070d2e0c66..54f2305b17 100644
--- a/packages/maemo/osso-af-utils_0.4.bb
+++ b/packages/maemo/osso-af-utils_0.4.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
MAINTAINER= "Koen Kooi <koen@handhelds.org>"
-DEPENDS = "x11 dbus libosso"
+DEPENDS = "libx11 dbus libosso"
SRC_URI = "http://stage.maemo.org:80/pool/maemo/ossw/source/o/osso-af-utils/osso-af-utils_${PV}-1.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/maemo/xpext_1.0-5.bb b/packages/maemo/xpext_1.0-5.bb
index cd5aec2d13..75b7903e84 100644
--- a/packages/maemo/xpext_1.0-5.bb
+++ b/packages/maemo/xpext_1.0-5.bb
@@ -3,7 +3,7 @@ LICENSE= "MIT"
DESCRIPTION = "X Server Nokia 770 extensions library"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "x11 xextensions xext"
+DEPENDS = "libx11 xextensions libxext"
SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/x/${PN}/${PN}_${PV}.tar.gz \
file://auxdir.patch;patch=1;pnum=0"
diff --git a/packages/maemo/xsp_1.0.0-8.bb b/packages/maemo/xsp_1.0.0-8.bb
index 0c4a4c62f8..068193c6aa 100644
--- a/packages/maemo/xsp_1.0.0-8.bb
+++ b/packages/maemo/xsp_1.0.0-8.bb
@@ -3,7 +3,7 @@ LICENSE= "MIT"
DESCRIPTION = "X Server Nokia 770 extensions library"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "x11 xextensions xext xpext"
+DEPENDS = "libx11 xextensions libxext xpext"
SRC_URI = "http://repository.maemo.org/pool/maemo/ossw/source/x/xsp/${PN}_${PV}.tar.gz"
S = "${WORKDIR}/Xsp"
diff --git a/packages/matchbox-panel/matchbox-panel.inc b/packages/matchbox-panel/matchbox-panel.inc
index 7ae9342b42..f82b66a0e9 100644
--- a/packages/matchbox-panel/matchbox-panel.inc
+++ b/packages/matchbox-panel/matchbox-panel.inc
@@ -1,6 +1,6 @@
DESCRIPTION = "Matchbox Window Manager Panel"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xpm apmd startup-notification virtual/kernel wireless-tools"
+DEPENDS = "libmatchbox libx11 libxext libxpm apmd startup-notification virtual/kernel wireless-tools"
SECTION = "x11/wm"
inherit autotools pkgconfig gettext
@@ -15,6 +15,7 @@ EXTRA_OECONF_append_collie = " --enable-small-icons "
EXTRA_OECONF_append_poodle = " --enable-small-icons "
EXTRA_OECONF_append_mnci = " --enable-small-icons "
EXTRA_OECONF_append_integral13 = " --enable-small-icons "
+PACKAGE_ARCH = "${MACHINE}"
FILES_${PN} = "${bindir} \
${datadir}/applications \
diff --git a/packages/matchbox-panel/matchbox-panel_0.8.1.bb b/packages/matchbox-panel/matchbox-panel_0.8.1.bb
index 5844cad1f1..75609a598e 100644
--- a/packages/matchbox-panel/matchbox-panel_0.8.1.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.8.1.bb
@@ -2,7 +2,7 @@ SECTION = "x11/utils"
PR = "r4"
DESCRIPTION = "Matchbox panel"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xpm apmd startup-notification virtual/kernel"
+DEPENDS = "libmatchbox libx11 libxext libxpm apmd startup-notification virtual/kernel"
SRC_URI = "ftp://ftp.handhelds.org/matchbox/sources/matchbox-panel/0.8/matchbox-panel-${PV}.tar.bz2 \
file://automake-lossage.patch;patch=1 \
diff --git a/packages/matchbox-panel/matchbox-panel_0.8.3.bb b/packages/matchbox-panel/matchbox-panel_0.8.3.bb
index 1566cce487..8726982c70 100644
--- a/packages/matchbox-panel/matchbox-panel_0.8.3.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.8.3.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Matchbox Window Manager Panel"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xpm apmd startup-notification virtual/kernel"
+DEPENDS = "libmatchbox libx11 libxext libxpm apmd startup-notification virtual/kernel"
SECTION = "x11/wm"
PR = "r1"
diff --git a/packages/matchbox-panel/matchbox-panel_0.8.bb b/packages/matchbox-panel/matchbox-panel_0.8.bb
index fd31832b39..331c049468 100644
--- a/packages/matchbox-panel/matchbox-panel_0.8.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.8.bb
@@ -1,7 +1,7 @@
SECTION = "x11/utils"
DESCRIPTION = "Matchbox panel"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xpm"
+DEPENDS = "libmatchbox libx11 libxext libxpm"
RDEPENDS = "libmatchbox matchbox-common"
SRC_URI = "ftp://ftp.handhelds.org/matchbox/sources/matchbox-panel/${PV}/matchbox-panel-${PV}.tar.bz2"
diff --git a/packages/matchbox-panel/matchbox-panel_0.9.1.bb b/packages/matchbox-panel/matchbox-panel_0.9.1.bb
index d22391ea1c..d1c263db38 100644
--- a/packages/matchbox-panel/matchbox-panel_0.9.1.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.9.1.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Matchbox Window Manager Panel"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xpm apmd startup-notification virtual/kernel"
+DEPENDS = "libmatchbox libx11 libxext libxpm apmd startup-notification virtual/kernel"
SECTION = "x11/wm"
PR = "r2"
diff --git a/packages/matchbox-panel/matchbox-panel_0.9.bb b/packages/matchbox-panel/matchbox-panel_0.9.bb
index c54af97626..725fe257e1 100644
--- a/packages/matchbox-panel/matchbox-panel_0.9.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.9.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Matchbox Window Manager Panel"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xpm apmd startup-notification virtual/kernel"
+DEPENDS = "libmatchbox libx11 libxext libxpm apmd startup-notification virtual/kernel"
SECTION = "x11/wm"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/${PV}/${PN}-${PV}.tar.gz"
diff --git a/packages/matchbox-wm/matchbox-wm_0.8.3.bb b/packages/matchbox-wm/matchbox-wm_0.8.3.bb
index 0a005d1f81..5db605cd0d 100644
--- a/packages/matchbox-wm/matchbox-wm_0.8.3.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.8.3.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
SRC_URI = "ftp://ftp.handhelds.org/matchbox/sources/matchbox-window-manager/0.8/matchbox-window-manager-${PV}.tar.bz2 \
diff --git a/packages/matchbox-wm/matchbox-wm_0.8.4.bb b/packages/matchbox-wm/matchbox-wm_0.8.4.bb
index 0a005d1f81..5db605cd0d 100644
--- a/packages/matchbox-wm/matchbox-wm_0.8.4.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.8.4.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
SRC_URI = "ftp://ftp.handhelds.org/matchbox/sources/matchbox-window-manager/0.8/matchbox-window-manager-${PV}.tar.bz2 \
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.2.bb b/packages/matchbox-wm/matchbox-wm_0.9.2.bb
index 9bf7be1e69..359ab819ec 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.2.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.2.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
PR = "r1"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.3.bb b/packages/matchbox-wm/matchbox-wm_0.9.3.bb
index 11447fe78a..1e8779fa34 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.3.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.3.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
PR = "r2"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.4.bb b/packages/matchbox-wm/matchbox-wm_0.9.4.bb
index cff86dc7ef..0ee65e689d 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.4.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.4.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.5.bb b/packages/matchbox-wm/matchbox-wm_0.9.5.bb
index 69bddc3544..358e62a9de 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.5.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.5.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
PR="r0"
diff --git a/packages/matchbox-wm/matchbox-wm_0.9.bb b/packages/matchbox-wm/matchbox-wm_0.9.bb
index 8a581b0c93..4db68fcf94 100644
--- a/packages/matchbox-wm/matchbox-wm_0.9.bb
+++ b/packages/matchbox-wm/matchbox-wm_0.9.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+DEPENDS = "libmatchbox libx11 libxext libxcomposite libxfixes libxdamage libxrender startup-notification expat gconf matchbox-common"
RDEPENDS = "matchbox-common"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/matchbox-window-manager/${PV}/matchbox-window-manager-${PV}.tar.gz"
diff --git a/packages/matchbox-wm/matchbox-wm_svn.bb b/packages/matchbox-wm/matchbox-wm_svn.bb
index d8084b006e..7654ebd94c 100644
--- a/packages/matchbox-wm/matchbox-wm_svn.bb
+++ b/packages/matchbox-wm/matchbox-wm_svn.bb
@@ -1,7 +1,7 @@
SECTION = "x11/wm"
DESCRIPTION = "Matchbox window manager"
LICENSE = "GPL"
-DEPENDS = "libmatchbox x11 xext xcomposite libxfixes xdamage libxrender startup-notification expat gconf matchbox-common"
+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"
diff --git a/packages/meta/meta-sdk.bb b/packages/meta/meta-sdk.bb
index 8d50034e00..4ae2718c36 100644
--- a/packages/meta/meta-sdk.bb
+++ b/packages/meta/meta-sdk.bb
@@ -14,7 +14,10 @@ SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
IPKG_HOST = "ipkg-cl -f ${SDK_DIR}/ipkg-host.conf -o ${SDK_OUTPUT}"
IPKG_TARGET = "ipkg-cl -f ${SDK_DIR}/ipkg-target.conf -o ${SDK_OUTPUT}/${prefix}"
-HOST_INSTALL = "task-sdk-cross"
+HOST_INSTALL = "\
+ binutils-cross-sdk \
+ gcc-cross-sdk \
+ gdb-cross"
TARGET_INSTALL = "\
task-sdk-base \
task-sdk-opie \
diff --git a/packages/meta/task-sdk.bb b/packages/meta/task-sdk.bb
index 271f2a128b..8508e385fa 100644
--- a/packages/meta/task-sdk.bb
+++ b/packages/meta/task-sdk.bb
@@ -1,21 +1,15 @@
DESCRIPTION = "SDK packages for Opie and GPE"
-PR = "r0"
+PR = "r1"
LICENSE = MIT
ALLOW_EMPTY = "1"
PACKAGES = "\
- task-sdk-cross \
task-sdk-base \
task-sdk-opie \
task-sdk-x11 \
task-sdk-x11-ext \
task-sdk-gpe"
-RDEPENDS_task-sdk-cross := "\
- binutils-cross-sdk \
- gcc-cross-sdk \
- gdb-cross"
-
RDEPENDS_task-sdk-base := "\
glibc \
glibc-dev \
diff --git a/packages/meta/unslung-image.bb b/packages/meta/unslung-image.bb
index 003d348f25..8ab50cebf4 100644
--- a/packages/meta/unslung-image.bb
+++ b/packages/meta/unslung-image.bb
@@ -1,5 +1,5 @@
LICENSE = MIT
-PR = "r11"
+PR = "r13"
IMAGE_BASENAME = "unslung"
@@ -9,11 +9,11 @@ USE_DEVFS = "1"
DEPENDS = "virtual/kernel \
${UNSLUNG_EXTRA_DEPENDS}"
-RDEPENDS = "kernel unslung-rootfs \
+RDEPENDS = "kernel update-modules unslung-rootfs \
libc6-unslung slingbox ipkg cpio findutils \
${UNSLUNG_EXTRA_RDEPENDS}"
-IPKG_INSTALL = "unslung-rootfs \
+IPKG_INSTALL = "kernel update-modules unslung-rootfs \
libc6-unslung slingbox ipkg cpio findutils \
${UNSLUNG_EXTRA_INSTALL}"
@@ -23,19 +23,28 @@ inherit image_ipk
# Note that anything in this function must be repeatable without having to rebuild the rootfs
unslung_clean_image () {
+
# Remove the patches
rm -rf ${IMAGE_ROOTFS}/patches
+
# Remove the kernel image
rm -rf ${IMAGE_ROOTFS}/boot
+ # And remove the post and pre scripts for the kernel; saves flash space
+ rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/kernel.postinst
+ rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/kernel.postrm
+
# Remove info from the local feed used to build the image
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/*
rm -f ${IMAGE_ROOTFS}/${sysconfdir}/version
+
# Tidy up some thing which are in the wrong place
mv ${IMAGE_ROOTFS}${libdir}/libipkg* ${IMAGE_ROOTFS}/lib/
+
# Remove the ipkg symlink - unsling puts it back in
rm -f ${IMAGE_ROOTFS}${bindir}/ipkg
# and make the ipkg symlink point to the ipkg-fl utility instead.
ln -s ipkg-fl ${IMAGE_ROOTFS}${bindir}/ipkg
+
# Hack out the modutils stuff - it's too hard to make it work
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/update-modules.postinst
rm -rf ${IMAGE_ROOTFS}/etc/rcS.d
@@ -45,6 +54,11 @@ unslung_clean_image () {
echo "#!/bin/sh" > ${IMAGE_ROOTFS}/sbin/depmod
echo "exit 0" >> ${IMAGE_ROOTFS}/sbin/depmod
chmod ugo+x ${IMAGE_ROOTFS}/sbin/depmod
+
+ # Don't need this empty directory hanging around
+ rm -rf ${IMAGE_ROOTFS}/lib/modules/2.4.22-xfs/pcmcia
+
+ # Strip symbols and fix permissions on the libgcc_s.so.1 library
${STRIP} ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
chmod ugo+x ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
diff --git a/packages/miniclipboard/miniclipboard_0.3.bb b/packages/miniclipboard/miniclipboard_0.3.bb
index 9b741d9e2b..885f5a7d20 100644
--- a/packages/miniclipboard/miniclipboard_0.3.bb
+++ b/packages/miniclipboard/miniclipboard_0.3.bb
@@ -2,7 +2,7 @@ SECTION = "x11/utils"
inherit gpe
LICENSE = "LGPL"
DESCRIPTION = "Clipboard management application"
-DEPENDS = "x11"
+DEPENDS = "libx11"
RDEPENDS = "gdk-pixbuf-loader-xpm"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
PR = "r1"
diff --git a/packages/minipredict/minipredict.bb b/packages/minipredict/minipredict.bb
index 7dc6e92d49..ded01f503e 100644
--- a/packages/minipredict/minipredict.bb
+++ b/packages/minipredict/minipredict.bb
@@ -1,7 +1,7 @@
inherit gpe pkgconfig
DESCRIPTION = "Minipredict is a app that sits above the dock, e.g. mbdock, and suggests words for completion."
-DEPENDS = "x11 xext gtk+ libdictionary zlib"
+DEPENDS = "libx11 libxext gtk+ libdictionary zlib"
SECTION = "gpe"
PRIORITY = "optional"
diff --git a/packages/mrxvt/mrxvt_0.4.1.bb b/packages/mrxvt/mrxvt_0.4.1.bb
index 1efbf58d9d..09ea06f98d 100644
--- a/packages/mrxvt/mrxvt_0.4.1.bb
+++ b/packages/mrxvt/mrxvt_0.4.1.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://materm.sourceforge.net"
AUTHOR = "Jimmy Zhou <jimmyzhou@users.sf.net>"
LICENSE = "GPL"
SECTION = "x11/apps"
-DEPENDS = "x11 xext xpm jpeg libpng"
+DEPENDS = "libx11 libxext libxpm jpeg libpng"
PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/materm/mrxvt-${PV}.tar.gz \
diff --git a/packages/mtd/mtd-utils-native_20060223.bb b/packages/mtd/mtd-utils-native_20060223.bb
new file mode 100644
index 0000000000..cd1fb7d11b
--- /dev/null
+++ b/packages/mtd/mtd-utils-native_20060223.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPLv2"
+SECTION = "base"
+include mtd-utils_${PV}.bb
+inherit native
+DEPENDS = "zlib-native"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/mtd-utils"
+
+do_stage () {
+ for binary in ${mtd_utils}; do
+ install -m 0755 util/$binary ${STAGING_BINDIR}/
+ done
+}
diff --git a/packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-20060131.patch b/packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-20060131.patch
new file mode 100644
index 0000000000..e24f395890
--- /dev/null
+++ b/packages/mtd/mtd-utils/add-exclusion-to-mkfs-jffs2-20060131.patch
@@ -0,0 +1,100 @@
+--- mtd/util/mkfs.jffs2.c~add-exclusion-to-mkfs-jffs2.patch
++++ mtd/util/mkfs.jffs2.c
+@@ -92,7 +92,12 @@
+ struct filesystem_entry *files; /* Only relevant to directories */
+ };
+
+-
++struct ignorepath_entry {
++ struct ignorepath_entry* next; /* Points to the next ignorepath element */
++ char name[PATH_MAX]; /* Name of the entry */
++};
++
++static struct ignorepath_entry* ignorepath = 0;
+ static int out_fd = -1;
+ static int in_fd = -1;
+ static char default_rootdir[] = ".";
+@@ -367,7 +372,7 @@
+ char *hpath, *tpath;
+ struct dirent *dp, **namelist;
+ struct filesystem_entry *entry;
+-
++ struct ignorepath_entry* element = ignorepath;
+
+ if (lstat(hostpath, &sb)) {
+ perror_msg_and_die("%s", hostpath);
+@@ -376,6 +381,15 @@
+ entry = add_host_filesystem_entry(targetpath, hostpath,
+ sb.st_uid, sb.st_gid, sb.st_mode, 0, parent);
+
++ while ( element ) {
++ if ( strcmp( element->name, targetpath ) == 0 ) {
++ printf( "Note: ignoring directories below '%s'\n", targetpath );
++ return entry;
++ break;
++ }
++ element = element->next;
++ }
++
+ n = scandir(hostpath, &namelist, 0, alphasort);
+ if (n < 0) {
+ perror_msg_and_die("opening directory %s", hostpath);
+@@ -1157,6 +1171,7 @@
+ {"root", 1, NULL, 'r'},
+ {"pagesize", 1, NULL, 's'},
+ {"eraseblock", 1, NULL, 'e'},
++ {"ignore", 1, NULL, 'I'},
+ {"output", 1, NULL, 'o'},
+ {"help", 0, NULL, 'h'},
+ {"verbose", 0, NULL, 'v'},
+@@ -1199,6 +1214,7 @@
+ " -L, --list-compressors Show the list of the avaiable compressors\n"
+ " -t, --test-compression Call decompress and compare with the original (for test)\n"
+ " -n, --no-eraseblock-headers Don't add a eraseblock header to every eraseblock\n"
++ " -I, --ignore=PATH Ignore sub directory and file tree below PATH when recursing over the file system\n"
+ " -o, --output=FILE Output to FILE (default: stdout)\n"
+ " -l, --little-endian Create a little-endian filesystem\n"
+ " -b, --big-endian Create a big-endian filesystem\n"
+@@ -1368,11 +1384,12 @@
+ struct filesystem_entry *root;
+ char *compr_name = NULL;
+ int compr_prior = -1;
++ struct ignorepath_entry* element = ignorepath;
+
+ jffs2_compressors_init();
+
+ while ((opt = getopt_long(argc, argv,
+- "D:d:r:s:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
++ "D:d:r:s:I:o:qUPfh?vVe:lbp::nc:m:x:X:Lty:i:", long_options, &c)) >= 0)
+ {
+ switch (opt) {
+ case 'D':
+@@ -1395,6 +1412,28 @@
+ page_size = strtol(optarg, NULL, 0);
+ break;
+
++ case 'I':
++ printf( "Note: Adding '%s' to ignore Path\n", optarg );
++ element = ignorepath;
++ if ( !ignorepath ) {
++ ignorepath = xmalloc( sizeof( struct ignorepath_entry ) );
++ ignorepath->next = 0;
++ strcpy( &ignorepath->name[0], optarg );
++ } else {
++ while ( element->next ) element = element->next;
++ element->next = xmalloc( sizeof( struct ignorepath_entry ) );
++ element->next->next = 0;
++ strcpy( &element->next->name[0], optarg );
++ }
++ printf( "--------- Dumping ignore path list ----------------\n" );
++ element = ignorepath;
++ while ( element ) {
++ printf( " * '%s'\n", &element->name[0] );
++ element = element->next;
++ }
++ printf( "---------------------------------------------------\n" );
++ break;
++
+ case 'o':
+ if (out_fd != -1) {
+ error_msg_and_die("output filename specified more than once");
diff --git a/packages/mtd/mtd-utils/fix-ignoreerrors-20060131.patch b/packages/mtd/mtd-utils/fix-ignoreerrors-20060131.patch
new file mode 100644
index 0000000000..8266a37c46
--- /dev/null
+++ b/packages/mtd/mtd-utils/fix-ignoreerrors-20060131.patch
@@ -0,0 +1,20 @@
+--- mtd/util/nanddump.c.orig 2006-01-30 21:19:22.000000000 +0100
++++ mtd/util/nanddump.c 2006-01-30 21:19:24.000000000 +0100
+@@ -224,7 +224,7 @@
+ }
+ }
+
+- if (badblock) {
++ if (badblock && !ignoreerrors) {
+ if (omitbad)
+ continue;
+ memset (readbuf, 0xff, bs);
+@@ -259,7 +259,7 @@
+ if (omitoob)
+ continue;
+
+- if (badblock) {
++ if (badblock && !ignoreerrors) {
+ memset (readbuf, 0xff, meminfo.oobsize);
+ } else {
+ /* Read OOB data and exit on failure */
diff --git a/packages/mtd/mtd-utils_20060223.bb b/packages/mtd/mtd-utils_20060223.bb
new file mode 100644
index 0000000000..21d0f21fcd
--- /dev/null
+++ b/packages/mtd/mtd-utils_20060223.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Tools for managing memory technology devices."
+SECTION = "base"
+DEPENDS = "zlib"
+HOMEPAGE = "http://www.linux-mtd.infradead.org/"
+LICENSE = "GPLv2"
+PR = "r0"
+SRCDATE = "${PV}"
+
+SRC_URI = "cvs://anoncvs:anoncvs@cvs.infradead.org/home/cvs;module=mtd \
+ file://add-exclusion-to-mkfs-jffs2-20060131.patch;patch=1 \
+ file://fix-ignoreerrors-20060131.patch;patch=1"
+S = "${WORKDIR}/mtd/"
+
+CFLAGS_prepend = "-I${S}/include "
+
+do_compile () {
+ oe_runmake -C util ${mtd_utils}
+}
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/mtd
+ for f in ${S}/include/mtd/*.h; do
+ install -m 0644 $f ${STAGING_INCDIR}/mtd/
+ done
+}
+
+mtd_utils = "ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
+ mkfs.jffs ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info mtd_debug \
+ flashcp nandwrite jffs2dump sumtool"
+
+do_install () {
+ install -d ${D}${bindir}
+ for binary in ${mtd_utils}; do
+ install -m 0755 util/$binary ${D}${bindir}
+ done
+}
diff --git a/packages/mythtv/mythtv_0.18.1.bb b/packages/mythtv/mythtv_0.18.1.bb
index 09aa63062f..37b75b6a23 100644
--- a/packages/mythtv/mythtv_0.18.1.bb
+++ b/packages/mythtv/mythtv_0.18.1.bb
@@ -9,7 +9,7 @@ SRC_URI = "http://www.mythtv.org/mc/mythtv-${PV}.tar.bz2 \
file://msmpeg-underscore-pic.patch;patch=1 \
file://settings.pro"
-DEPENDS = "xinerama lame libxv libxxf86vm libxvmc lirc"
+DEPENDS = "libxinerama lame libxv libxxf86vm libxvmc lirc"
RDEPENDS = "qt-x11-plugins"
inherit qmake qt3x11
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/NOTES b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/NOTES
index 4e09b459c2..d37bf07d6b 100644
--- a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/NOTES
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/NOTES
@@ -168,8 +168,14 @@ Also not that telnet is not enabled by default - there is an openssh package
and a dropbear package that either can replace telnet access with secure shell
access.
- - Dropbear package details on NSLU2-Linux wiki at:
+OpenSSH is the simplest to install:
+
+ - OpenSSH package details on NSLU2-Linux wiki at:
+ http://www.nslu2-linux.org/wiki/HowTo/UseOpenSSHForRemoteAccess
+
+Dropbear is preferred by some:
+ - Dropbear package details on NSLU2-Linux wiki at:
http://www.nslu2-linux.org/wiki/HowTo/UseDropBearForRemoteAccess
The rationale behind not enabling telnet by default is ensure that an Unslung
@@ -333,7 +339,8 @@ Split from 3.x stream to allow parallel development.
4.2:
-New switchbox implementation with NFS and external USB disk root filesystem support.
+New switchbox implementation with NFS and external USB disk root filesystem
+support.
4.3:
@@ -451,3 +458,32 @@ First public release of 5.x firmware.
6.0:
First alpha release of 6.x Unslung firmware, based on Linksys V2.3R63 firmware.
+
+6.5:
+
+Unsling script now prompts for a root password to be used, additional sanity
+checks added to minimize the chance of an improper unsling. User feedback
+added to indicate the status (running from internal flash or booted up from
+an external drive) via /etc/motd, ipkg, as well as the main web page. Improved
+diagnostic messages from unsling. Added a Linksys customization to "mount"
+to the slingbox version of mount.
+
+6.6:
+
+Changed the code that handles the ".ext3flash" functionality so that it can
+handle booting from either /dev/sda or /dev/sdb.
+Cleanup of the "telnet.htm" management page.
+Unsling now creates the wmtp and utmp files.
+Unsling now "edits" the .../conf/passwd file instead of replacing it.
+Ipkg dependencies fixed so that kernel-modules no longer need "force-install".
+Support for loopback mounting ISO images (loop.o and isofs.o are now created).
+The keyspan.o USB serial kernel-module is also created at build time.
+README file updated to reflect the new unsling script as well as the
+change in preferred port for the primary external disk.
+
+6.7:
+
+Added original "netconsole" code as a kernel module
+Fixed problem with password changing from the GUI and automatic mounting of
+drives and flash devices in port 1.
+Remove unnecessary directory /lib/modules/2.4.22-xfs/pcmcia.
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/README b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/README
index f4ffe4d29b..2667692af9 100644
--- a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/README
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/README
@@ -1,8 +1,8 @@
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
-instructions step by step.
+do not skip ahead thinking you know what you are doing and that therefore you
+don't need to follow instructions step by step.
If at any time you have any questions concerning the installation or operation
of Unslung firmware, your first port of call should be the NSLU2-Linux wiki at:
@@ -10,8 +10,8 @@ of Unslung firmware, your first port of call should be the NSLU2-Linux wiki at:
http://www.nslu2-linux.org
If you are looking for further Unslung notes - including ipkg usage, diversion
-script details, or ChangeLog information, please consult the associated NOTES
-file.
+script details, or ChangeLog information, please consult the associated Unslung
+NOTES file.
-------------------------------------------------------------------------------
@@ -42,10 +42,45 @@ PRE-INSTALLATION CONSIDERATIONS
It is possible to make changes to the root filesystem in the internal
flash storage, but the space is very limited. In fact, just running
"ipkg update" on an NSLU2 which does not have an external disk attached
- will most likely render the NSLU2 unusable due to filling up the flash (if
- this happens then you will need to follow the recovery instructions in
- the previous step). So unless you are an expert, then use an external
- disk.
+ will most likely render the NSLU2 unusable due to filling up the flash
+ (if this happens then you will need to follow the recovery instructions
+ in the previous step). So unless you are an expert, then use an external
+ disk. The remainder of these instructions assume that you have a
+ suitable external disk or flash disk you will be using for this purpose.
+
+ A few words on selecting which port to use:
+
+ Completely contrary to previous versions of Unslung, the preferred port
+ for the Unslung external disk as of Unslung 6.x is often port 2. This
+ will free up the far-more-flexible port number 1 for other uses.
+
+ However, this "feature" (part of the Linksys R63 firmware) may cause some
+ small consternation for users upgrading from earlier versions of Unslung.
+ But in general, swapping the drives between the two ports will likely be
+ the least painful solution. The basic challenge faced by upgraders is
+ that *something* must change: if the drive remains in port 1, then it will
+ remain mounted at "/share/hdd/..." but the drive nomenclature will change
+ from "/dev/sda" to "/dev/sdb". On the other hand, if the drive is moved
+ to port 2, then it will remain "/dev/sda" but it will then be mounted at
+ "/share/flash/...". What difference this might make depends on each
+ individual configuration; check the wiki for possible assistance for your
+ particular configuration.
+
+ For new users, the following guidelines can help:
+ - if you have only a single drive, use port 2.
+ - if you have a single drive that will be formatted by the NSLU2, and
+ all other drives or flash devices will be either FAT or NTFS, use
+ port 2.
+ - if you have two drives, and both will be formatted by the NSLU2, then
+ unsling to the drive in port 1.
+
+ If you unsling to port 2, and later add a drive in port 1 that will be
+ formatted by the NSLU2, initial testing indicates that it should work
+ as expected -- however, the drive to be added MUST be formatted by the
+ unslung NSLU2 in question, and once formatted, the drive must NOT be
+ removed -- as the unslung NSLU2 will move it's "conf" datafiles to the
+ drive in port 1 during the format, and thus will be dependent upon the
+ presence of both drives for proper operation. You have been warned!
3) The external disk that you use as the target for package installation must
be (or have previously been) formatted by the NSLU2. It is possible to
@@ -54,9 +89,21 @@ PRE-INSTALLATION CONSIDERATIONS
disk, so make sure all your file modifications are in those directories,
as you were warned in the README file in all previous Unslung versions :-)
+ [Note: Since this point qualifies as a "frequently asked question", it
+ is worth some clarification here. It is only possible to unsling to
+ a disk that has been formatted by the NSLU2 - you cannot unsling to a
+ FAT or NTFS disk. In fact, it is not sufficient to format the disk
+ using another UNIX system -- in order to be recognized as a "Formatted
+ (ext3)" disk by the NSLU2, and hence be suitable for unslinging, the
+ disk must be specifically partitioned, formatted, and the partitions
+ must contain a specific set of configuration files created by the
+ NSLU2. So the simple rule is that if the NSLU2 web interface "Disk"
+ page does not list the disk as "Formatted (ext3)", you will be unable
+ to unsling to that disk.]
+
4) If you want to use a flash disk as the target for package installation,
- ensure that it is at least 256MB, plugged into port 1, and formatted
- via the Linksys web interface.
+ ensure that it is at least 256MB, and formatted as above via the
+ Linksys web interface.
5) Please verify that any disks you are going to connect to the NSLU2 are
recognized and working properly *before* updating your firmware (including
@@ -175,10 +222,18 @@ NOTE: There are two root-passwords. One is saved in a internal file called
without a attached harddisk) the other is stored in a external file called
/share/hdd/conf/passwd (we don't know this one - it's used when you boot with a
external harddisk attached). Later in the process you can change both of
-them. That means: Everytime you boot WITHOUT a attached harddisk you gain
+them. That means: Everytime you boot WITHOUT an attached harddisk you gain
root-access with the "uNSLUng" password. If you boot WITH an attached harddisk,
you won't have access until you change the file /share/hdd/conf/passwd.
+NOTE about the NOTE: New in Unslung 6.x is that by default the "unsling"
+script will prompt for a new password. This new password will become the
+new password used whenever the NSLU2 is booted without it's disk (replacing
+the "uNSLUng" password), and it will also be the new root password used when
+the NSLU2 boots up with it's disk. If you are upgrading, or wish to preserve
+your passwords just the way they are, use the "-nopw" option with the unsling
+script.
+
1) Power up the NSLU2 without any disks connected.
- This only has to be done when you update the firmware.
@@ -187,15 +242,18 @@ you won't have access until you change the file /share/hdd/conf/passwd.
If you powered up your NSLU2 with a disk attached, shutdown the
NSLU2, unplug the disks, and power up again.
-2) Enable telnet by going to "http://192.168.1.77/Management/telnet.cgi", and
- press the enable button.
+2) Enable telnet by going to the NSLU2's web interface and clicking on the
+ "Manage Telnet" link (right-hand side), then on the "Enable/Disable
+ NSLU2 telnet Service" page, click on the "Enable" button to turn on
+ the telnet service.
+
+ (You can browse directly to the enable/disable telnet page in your
+ browser: "http://192.168.1.77/Management/telnet.cgi".)
- - If you had previously changed the IP address of your NSLU2 from
- 192.168.1.77 to something else, then you should use that new IP
- address to enable telnet. Again 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).
+ - 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).
- Make sure you have **** NO DISKS ATTACHED AT THIS TIME ****
@@ -217,33 +275,29 @@ you won't have access until you change the file /share/hdd/conf/passwd.
the time to do that. Make sure that the drive is recognized in the
web interface.
-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).
+ Be patient - it make take several minutes for the NSLU2 to recognize
+ the hardware, mount the partitions, and verify that the drive is correctly
+ configured to be considered "Formatted". Do not continue if the drive
+ is not marked as "Formatted (ext3)" in the NSLU2 web interface.
+
+5) In the telnet session, run "/sbin/unsling disk2".
+ If you've decided to unsling to a device connected to port 1, you'll run
+ "/sbin/unsling disk1", of course. Which port to which you should connect
+ the device you intend to unsling depends on many factors.
- Once you "unsling" to an external disk on a particular port (Disk 1 or
Disk 2), it is important that you keep that disk continually plugged
into that same port whenever the NSLU2 is turned on.
- ***** Unsling will not change the password on your disk, so if you had
- previously changed the password on a disk, then your password will
- not be changed. Also note that simply editing the /etc/passwd file
- is not enough to permanently change a password. See:
+ ***** By default, unsling WILL prompt you for a new root password, and it
+ will change the password on your disk as well. If this is NOT what
+ you wish it to do, use the "-nopw" flag with the "unsling" command:
+ "/sbin/unsling -nopw disk2" for example.
+ For more information on changing passwords and all the places where
+ the NSLU2 stores passwords, please see the following wiki article:
http://www.nslu2-linux.org/wiki/HowTo/ChangePasswordsFromTheCommandLine
- NOTE: There are two root-passwords. One is saved in a internal
- file called /usr/local/passwd (we know this one - it's "uNSLUng"
- and used when you boot without a attached harddisk) the other is
- stored in a external file called /share/hdd/conf/passwd (we don't
- know this one - it's used when you boot with a external harddisk
- attached). That means: Everytime you boot WITHOUT a attached harddisk
- you gain root-access with the "uNSLUng" password. If you boot
- WITH an attached harddisk, you won't have access until you change
- the file /share/hdd/conf/passwd. So you should change this file
- as soon as you unsling to an external disk, before you exit the
- telnet session that you are using to unsling to the disk.
-
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, 5.x and 6.x location on the data partition, then run:
@@ -269,11 +323,20 @@ you won't have access until you change the file /share/hdd/conf/passwd.
8) Wait for the NSLU2 to boot, telnet in, and confirm that the root filesystem
is being loaded from the external disk.
-***** Congratulations, you're now Unslung! *****
+ You can verify that your NSLU2 is unslung by checking the NSLU2 web admin
+ GUI - you are unslung if the text at the bottom reads something like:
+ "uNSLUng status: Unslung to disk2, /dev/sda1"
+
+ Also, when you login to the NSLU2, the login message printed will clearly
+ indicate if you are unslung, or if something went awry and you are still
+ running on the internal flash.
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.
+http://groups.yahoo.com/group/nslu2-linux/database?method=reportRows&tbl=12
+
+
If you make no further changes, your NSLU2 will continue to operate normally.
But to customize things, you'll be downloading packages and adding stuff to the
/unslung directory using diversion scripts.
@@ -281,4 +344,3 @@ But to customize things, you'll be downloading packages and adding stuff to the
Read the NOTES file to expand the capabilities of your Unslung NSLU2!
Enjoy!
-
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/ipkg-fl b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/ipkg-fl
index 514ccd4ec8..ade959a759 100755
--- a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/ipkg-fl
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/ipkg-fl
@@ -2,7 +2,7 @@
echo
echo "Error: The ipkg command cannot currently be used because this"
echo "system is running from its internal flash; it is not currently"
-echo "\"uNSLUng\" to an external disk or flash device."
+echo "\"unslung\" to an external disk or flash device."
echo
echo "Please complete the process of \"unslinging\" this system, or"
echo "resolve the issues that did not permit it to boot from the"
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/rc.sysinit-clean_var.patch b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/rc.sysinit-clean_var.patch
new file mode 100644
index 0000000000..17e7ebef43
--- /dev/null
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/rc.sysinit-clean_var.patch
@@ -0,0 +1,22 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit.orig 2006-03-01 17:55:20.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.sysinit 2006-03-01 18:25:06.000000000 -0600
+@@ -30,6 +30,19 @@
+ mkdir -p /var/log/samba >/dev/null
+ touch /var/log/server.log >/dev/null
+ chmod 755 /var/log/samba >/dev/null
++
++# Clean up /var/lock and /var/run (fixes bug where USB_Detect fails),
++# and empty utmp and wtmp (but do not create them if they don't exist).
++rm -f /var/run/*.pid
++rm -f /var/lock/samba/*.pid
++rm -f /var/lock/ds_diag
++if ( [ -f /var/run/utmp ] ) ; then
++ > /var/run/utmp
++fi
++if ( [ -f /var/log/wtmp ] ) ; then
++ > /var/log/wtmp
++fi
++
+ /bin/echo "Starting Hostname :"; hostname ${HOSTNAME}; check_status
+ #/bin/echo "Starting System Log :"; . /etc/rc.d/rc.syslogd
+ /bin/echo "Starting Modules :"; . /etc/rc.d/rc.modules
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/remount-noatime.patch b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/remount-noatime.patch
new file mode 100644
index 0000000000..a39dc678b5
--- /dev/null
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/remount-noatime.patch
@@ -0,0 +1,51 @@
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.1.orig 2006-02-24 20:48:18.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.1 2006-02-24 21:13:01.000000000 -0600
+@@ -3,6 +3,24 @@
+ #/sbin/ifconfig ixp0 hw ether 00:C0:02:01:01:04
+ /bin/echo "Starting Set CGI_ds.conf:"; /etc/rc.d/rc.bootbin; check_status
+
++if ( [ -f /.ext3flash ] ) ; then
++ dsk="nodisk"
++ /bin/grep -q "^/dev/sda1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sda"
++ else
++ /bin/grep -q "^/dev/sdb1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sdb"
++ fi
++ fi
++ /bin/echo "Remounting /dev/${dsk}1 as ext3flash:"
++ /bin/mount -o remount,rw,noatime /dev/${dsk}1
++ /bin/echo "Remounting /dev/${dsk}2 as ext3flash:"
++ /bin/mount -o remount,rw,sync,noatime /dev/${dsk}2
++ /bin/echo "Removing swap from ext3flash:"
++ /sbin/swapoff /dev/${dsk}3
++fi
+
+ /bin/echo "Restore time and timezone:"; /etc/rc.d/rc.rstimezone; check_status
+ /bin/echo "Restore usrgrpshares:"; /etc/rc.d/rc.reset_usrgrpshare; check_status
+--- nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.quota.orig 2006-02-24 20:48:31.000000000 -0600
++++ nslu2-linksys-ramdisk-2.3r63/etc/rc.d/rc.quota 2006-02-24 21:12:46.000000000 -0600
+@@ -8,6 +8,21 @@
+ echo "Done."
+ fi
+
++if ( [ -f /.ext3flash ] ) ; then
++ dsk="nodisk"
++ /bin/grep -q "^/dev/sda1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sda"
++ else
++ /bin/grep -q "^/dev/sdb1 / ext3" /proc/mounts
++ if ( [ $? -eq 0 ] ) ; then
++ dsk="sdb"
++ fi
++ fi
++ /bin/echo "Remounting /dev/${dsk}1 as ext3flash:"
++ /bin/mount -o remount,rw,noatime /dev/${dsk}1
++fi
++
+ if [ -x "/usr/bin/quotaon" ]
+ then
+ echo "Turning on quota."
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/telnet.htm b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/telnet.htm
new file mode 100644
index 0000000000..7807f228a2
--- /dev/null
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/telnet.htm
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+ <HEAD>
+ <META HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
+ <TITLE>Enable/Disable NSLU2 telnet Service</TITLE>
+ <LINK REL="stylesheet" TYPE="text/css" HREF="../ig_n.css">
+ <SCRIPT language="JavaScript" type="text/javascript" src="../stdlib.js"></SCRIPT>
+ </HEAD>
+
+ <IMG SRC="../linksys.gif">
+ <H2><P ALIGN=CENTER>Enable/Disable NSLU2 telnet Service</P></H2>
+
+ <BODY onLoad="showMsg();">
+ <CENTER>
+ <HR>
+ <P>Current telnet service status: <FONT color="ff1111">@status#</FONT></P>
+ <FORM ACTION="telnet.cgi" METHOD="post">
+ <INPUT type="submit" name="action" value="@action#">
+ <INPUT type="Hidden" name="message" value="@message#">
+ </FORM>
+ </CENTER>
+ <HR>
+ <P>NOTICE: The telnet service is inherently not secure. Among other security concerns, the login id and passwords you enter will be sent in plaintext across the network. In order to provide a slightly higher degree of security, the service will not be automatically restarted upon reboot. However, if you do not intend to reboot soon, it is recommended that you use this page to disable the service as soon as it is no longer needed.</P>
+ <P>A better solution than telnet for network terminal access to the NSLU2 is to use an SSH package, such as "openssh" or "dropbear". These packages are secure, and will not require any special steps to enable once installed. Openssh can be installed using the standard "ipkg" mechanism: "ipkg install openssh".</P>
+ <HR>
+ <CENTER>
+ <P><A HREF="/index.cgi">Back</A></P>
+ </CENTER>
+ </BODY>
+
+</HTML>
diff --git a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/unsling b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/unsling
index 3c25316751..c8b3dc8662 100755
--- a/packages/nslu2-binary-only/unslung-rootfs-2.3r63/unsling
+++ b/packages/nslu2-binary-only/unslung-rootfs-2.3r63/unsling
@@ -19,12 +19,14 @@ if [ $# -eq 1 ] ; then
targconf=/share/hdd/conf
flag=.sdb1root
htmlinfo="disk1, /dev/sdb1"
+ fixconf=0
elif [ "$1" = "disk2" ] ; then
mtch="/dev/sda1 /share/flash/data ext3 rw 0 0"
targ=/share/flash/data
targconf=/share/flash/conf
flag=.sda1root
htmlinfo="disk2, /dev/sda1"
+ fixconf=1
else
echo $usage
exit 1
@@ -126,18 +128,23 @@ if [ -f $targ/.unslung ] ; then
fi
# Change the root password
-if [ "$nopw" = 0 ] ; then
+if [ "$nopw" -eq 0 ] ; then
echo
echo "Please enter the new root password. This will be the new root"
echo "password used when the NSLU2 boots up with or without disks"
echo
passwd
- if [ $? != 0 ] ; then
+ if [ $? -ne 0 ] ; then
echo "Error setting password."
exit 1
fi
cp /etc/passwd /usr/local/passwd
- cp /etc/passwd $targconf/passwd
+# cp /etc/passwd $targconf/passwd
+ grep "^root:" /etc/passwd >$targconf/passwd.new
+ grep -v "^root:" $targconf/passwd >>$targconf/passwd.new
+ mv $targconf/passwd $targconf/passwd.save
+ mv $targconf/passwd.new $targconf/passwd
+ chmod 644 $targconf/passwd
fi
# Start at the root directory
@@ -179,6 +186,34 @@ cp $targ/home/httpd/html/home.htm $targ/home/httpd/html/home.htm_bak
sed "$sedcommand" $targ/home/httpd/html/home.htm_bak > $targ/home/httpd/html/home.htm
chmod 644 $targ/home/httpd/html/home.htm
+# Create a few empty files that are expected to be present
+touch $targ/var/log/wtmp
+chmod 644 $targ/var/log/wtmp
+touch $targ/var/run/utmp
+chmod 644 $targ/var/run/utmp
+
+# The "user password" Linksys utility is hard-coded to /share/hdd; also the
+# QuickSet utility seems to have some difficulty as well. Ugly fix is to
+# add symlinks if we are unslinging to /share/flash. It might seem more
+# reasonable to point to /etc/passwd, for example, but this approach seems to
+# be more likely to avoid looping symlinks.
+
+if [ "$fixconf" -eq 1 ] ; then
+ ln -s ../../flash/conf/.htpasswd $targ/share/hdd/conf/.htpasswd
+ ln -s ../../flash/conf/backup_sh.conf $targ/share/hdd/conf/backup_sh.conf
+ ln -s ../../flash/conf/config $targ/share/hdd/conf/config
+ ln -s ../../flash/conf/group $targ/share/hdd/conf/group
+ ln -s ../../flash/conf/passwd $targ/share/hdd/conf/passwd
+ ln -s ../../flash/conf/server.log $targ/share/hdd/conf/server.log
+ ln -s ../../flash/conf/share $targ/share/hdd/conf/share
+ ln -s ../../flash/conf/share.info $targ/share/hdd/conf/share.info
+ ln -s ../../flash/conf/smb.conf $targ/share/hdd/conf/smb.conf
+ ln -s ../../flash/conf/smbpasswd $targ/share/hdd/conf/smbpasswd
+ ln -s ../../flash/conf/tmp $targ/share/hdd/conf/tmp
+ ln -s ../../flash/conf/upgrade $targ/share/hdd/conf/upgrade
+ ln -s ../../flash/conf/usrgrp.info $targ/share/hdd/conf/usrgrp.info
+fi
+
# Create the boot flag file.
rm -f /.sd??root $targ/.sd??root
diff --git a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
index d45e4103b8..910ad102a9 100644
--- a/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
+++ b/packages/nslu2-binary-only/unslung-rootfs_2.3r63.bb
@@ -1,6 +1,6 @@
SECTION = "base"
-PR = "r8"
+PR = "r11"
DEPENDS = "nslu2-linksys-libs"
@@ -42,7 +42,10 @@ SRC_URI = "http://nslu.sf.net/downloads/nslu2-linksys-ramdisk-2.3r63-2.tar.bz2 \
file://wait-for-quotacheck.patch;patch=1 \
file://mount_usbdevfs.patch;patch=1 \
file://security-fixes.patch;patch=1 \
- file://upgrade.htm file://upgrade.cgi \
+ file://rc.sysinit-clean_var.patch;patch=1 \
+ file://upgrade.htm \
+ file://upgrade.cgi \
+ file://telnet.htm \
file://rc.bootbin \
"
@@ -60,6 +63,8 @@ do_compile () {
install -m 644 ${WORKDIR}/unslung.gif ${S}/home/httpd/html/linksys.gif
+ install -m 644 ${WORKDIR}/telnet.htm ${S}/home/httpd/html/Management/telnet.htm
+
sed -i -e 's/@version#</@version#-uNSLUng-'${DISTRO_VERSION}'</' ${S}/home/httpd/html/home.htm
sed -i -e s/@ds_sw_version#/@ds_sw_version#-uNSLUng-${DISTRO_VERSION}/ \
${S}/home/httpd/html/Management/upgrade.htm
diff --git a/packages/pango/pango_1.10.0.bb b/packages/pango/pango_1.10.0.bb
index dda4df2fda..869b146d56 100644
--- a/packages/pango/pango_1.10.0.bb
+++ b/packages/pango/pango_1.10.0.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc cairo"
+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."
diff --git a/packages/pango/pango_1.10.2.bb b/packages/pango/pango_1.10.2.bb
index 0f2c8fdb7a..068eeafddf 100644
--- a/packages/pango/pango_1.10.2.bb
+++ b/packages/pango/pango_1.10.2.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc cairo"
+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."
diff --git a/packages/pango/pango_1.2.5.bb b/packages/pango/pango_1.2.5.bb
index ed71f43370..1380a6af52 100644
--- a/packages/pango/pango_1.2.5.bb
+++ b/packages/pango/pango_1.2.5.bb
@@ -1,6 +1,6 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/pango/pango_1.4.0.bb b/packages/pango/pango_1.4.0.bb
index 93c8cc6d94..8d165989c8 100644
--- a/packages/pango/pango_1.4.0.bb
+++ b/packages/pango/pango_1.4.0.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/pango/pango_1.4.1.bb b/packages/pango/pango_1.4.1.bb
index 8cd251049c..10e5bc3f69 100644
--- a/packages/pango/pango_1.4.1.bb
+++ b/packages/pango/pango_1.4.1.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt gtk-doc"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/pango/pango_1.8.0.bb b/packages/pango/pango_1.8.0.bb
index 1d2638f0ec..a692fd7299 100644
--- a/packages/pango/pango_1.8.0.bb
+++ b/packages/pango/pango_1.8.0.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt gtk-doc"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/pango/pango_1.8.1.bb b/packages/pango/pango_1.8.1.bb
index 1d2638f0ec..a692fd7299 100644
--- a/packages/pango/pango_1.8.1.bb
+++ b/packages/pango/pango_1.8.1.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt gtk-doc"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/pango/pango_1.8.2.bb b/packages/pango/pango_1.8.2.bb
index 4163c0c4a7..2b0322a5be 100644
--- a/packages/pango/pango_1.8.2.bb
+++ b/packages/pango/pango_1.8.2.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt gtk-doc"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/pango/pango_1.9.1.bb b/packages/pango/pango_1.9.1.bb
index e66b65f367..db01079fe1 100644
--- a/packages/pango/pango_1.9.1.bb
+++ b/packages/pango/pango_1.9.1.bb
@@ -1,7 +1,7 @@
LICENSE = "LGPL"
SECTION = "x11/libs"
# Xt needed to keep autoconf's check for X11 happy
-DEPENDS = "glib-2.0 fontconfig freetype zlib x11 libxft xt gtk-doc"
+DEPENDS = "glib-2.0 fontconfig freetype zlib libx11 libxft libxt gtk-doc"
DESCRIPTION = "The goal of the Pango project is to provide an \
Open Source framework for the layout and rendering of \
internationalized text."
diff --git a/packages/panoramixext/panoramixext_cvs.bb b/packages/panoramixext/panoramixext_cvs.bb
index 5a7a67e32b..cd35d0d34c 100644
--- a/packages/panoramixext/panoramixext_cvs.bb
+++ b/packages/panoramixext/panoramixext_cvs.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
DESCRIPTION = "PanoramiX extension headers"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=PanoramiXExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=PanoramiXExt"
S = "${WORKDIR}/PanoramiXExt"
inherit autotools pkgconfig
diff --git a/packages/python/python-2.4.2-manifest.inc b/packages/python/python-2.4.2-manifest.inc
index 6d3696b754..67f10cfff9 100644
--- a/packages/python/python-2.4.2-manifest.inc
+++ b/packages/python/python-2.4.2-manifest.inc
@@ -1,5 +1,5 @@
########################################################################################################################
-### AUTO-GENERATED by './generate-oe.py' [(C) 2002-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Sun Feb 12 19:58:10 2006
+### AUTO-GENERATED by './generate-oe.py' [(C) 2002-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>] on Thu Feb 23 14:35:29 2006
###
### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
###
@@ -8,7 +8,7 @@
########################################################################################################################
-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-xml python-mime python-tests python-unittest python-stringold python-lib-old-and-deprecated python-compile python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
+PACKAGES="python-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="ml1"
@@ -46,9 +46,9 @@ 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/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="ml1"
+PR_python-io="ml2"
RDEPENDS_python-io="python-core python-math"
-FILES_python-io="${libdir}/python2.4/lib-dynload/_socket.so ${libdir}/python2.4/lib-dynload/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.* "
+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"
@@ -170,6 +170,11 @@ PR_python-logging="ml1"
RDEPENDS_python-logging="python-core"
FILES_python-logging="${libdir}/python2.4/logging "
+DESCRIPTION_python-mailbox="Python Mailbox Format Support"
+PR_python-mailbox="ml1"
+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"
RDEPENDS_python-xml="python-core python-re"
diff --git a/packages/python/python-imdbpy_2.0.bb b/packages/python/python-imdbpy_2.4.bb
index eca49ba62f..34e83ad5bd 100644
--- a/packages/python/python-imdbpy_2.0.bb
+++ b/packages/python/python-imdbpy_2.4.bb
@@ -6,7 +6,7 @@ LICENSE = "GPL"
SRCNAME = "IMDbPY"
PR = "ml0"
-SRC_URI = "${SOURCEFORGE_MIRROR}/imdbpy/${SRCNAME}-${PV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/imdbpy/imdbpy-${PV}.tar.gz"
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit distutils
diff --git a/packages/python/python_2.4.2.bb b/packages/python/python_2.4.2.bb
index 3f8a942e45..f065b68112 100644
--- a/packages/python/python_2.4.2.bb
+++ b/packages/python/python_2.4.2.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 = "ml3"
+PR = "ml4"
PYTHON_MAJMIN = "2.4"
diff --git a/packages/libxfixes/.mtn2git_empty b/packages/qemu/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxfixes/.mtn2git_empty
+++ b/packages/qemu/files/.mtn2git_empty
diff --git a/packages/qemu/files/configure.patch b/packages/qemu/files/configure.patch
new file mode 100644
index 0000000000..ea83f8cd6d
--- /dev/null
+++ b/packages/qemu/files/configure.patch
@@ -0,0 +1,13 @@
+Index: qemu/configure
+===================================================================
+--- qemu.orig/configure 2006-02-09 17:58:47.000000000 +0000
++++ qemu/configure 2006-02-21 17:47:31.000000000 +0000
+@@ -482,7 +482,7 @@
+ fi
+ echo "HOST_CC=$host_cc" >> $config_mak
+ echo "AR=$ar" >> $config_mak
+-echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
++echo "STRIP=$strip" >> $config_mak
+ echo "CFLAGS=$CFLAGS" >> $config_mak
+ echo "LDFLAGS=$LDFLAGS" >> $config_mak
+ echo "EXESUF=$EXESUF" >> $config_mak
diff --git a/packages/qemu/qemu-native_cvs.bb b/packages/qemu/qemu-native_cvs.bb
new file mode 100644
index 0000000000..07b9dae420
--- /dev/null
+++ b/packages/qemu/qemu-native_cvs.bb
@@ -0,0 +1,4 @@
+include qemu_cvs.bb
+inherit native
+prefix = "${STAGING_DIR}/${BUILD_SYS}"
+
diff --git a/packages/qemu/qemu_cvs.bb b/packages/qemu/qemu_cvs.bb
new file mode 100644
index 0000000000..88c18c3b6d
--- /dev/null
+++ b/packages/qemu/qemu_cvs.bb
@@ -0,0 +1,10 @@
+LICENSE = "GPL"
+PV = "0.8.0+cvs${SRCDATE}"
+
+SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
+ file://configure.patch;patch=1"
+
+S = "${WORKDIR}/qemu"
+
+inherit autotools
+
diff --git a/packages/qpf-fonts/qpf-dejavu.inc b/packages/qpf-fonts/qpf-dejavu.inc
index 33d0e2eb57..a2ef48161d 100644
--- a/packages/qpf-fonts/qpf-dejavu.inc
+++ b/packages/qpf-fonts/qpf-dejavu.inc
@@ -5,7 +5,7 @@ LICENSE = "Bitstream Vera"
HOMEPAGE = "http://dejavu.sourceforge.net/wiki/index.php/Main_Page"
PACKAGE_ARCH = "all"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/${PN}-${PV}.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${PN}"
diff --git a/packages/qpf-fonts/qpf-freemono_1.0.bb b/packages/qpf-fonts/qpf-freemono_1.0.bb
index d5c7a45993..642e942dd9 100644
--- a/packages/qpf-fonts/qpf-freemono_1.0.bb
+++ b/packages/qpf-fonts/qpf-freemono_1.0.bb
@@ -6,7 +6,7 @@ LICENSE = "GPL"
HOMEPAGE = "http://savannah.nongnu.org/projects/freefont/"
PACKAGE_ARCH = "all"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/${PN}-${PV}.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${PN}"
diff --git a/packages/qpf-fonts/qpf-freeserif_1.0.bb b/packages/qpf-fonts/qpf-freeserif_1.0.bb
index f894abeb91..51010df359 100644
--- a/packages/qpf-fonts/qpf-freeserif_1.0.bb
+++ b/packages/qpf-fonts/qpf-freeserif_1.0.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://savannah.nongnu.org/projects/freefont/"
PACKAGE_ARCH = "all"
PR = "r2"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/${PN}-${PV}.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}.tar.bz2"
S = "${WORKDIR}/${PN}"
diff --git a/packages/qpf-fonts/qpf-helvetica_1.0.bb b/packages/qpf-fonts/qpf-helvetica_1.0.bb
index f5f00518c5..d04207c1fd 100644
--- a/packages/qpf-fonts/qpf-helvetica_1.0.bb
+++ b/packages/qpf-fonts/qpf-helvetica_1.0.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Marcin Juszkiewicz <openembedded@hrw.one.pl>"
HOMEPAGE = "http://www.pobox.sk/~mico/zaurus.html"
PR = "r1"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/qpf-helvetica.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-helvetica.tar.bz2"
S = "${WORKDIR}/helvetica"
do_install () {
diff --git a/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb b/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb
index 7fb5e58b2d..79de04ea1f 100644
--- a/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb
+++ b/packages/qpf-fonts/qpf-hunkysans_0.3.0.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://www.yoper.com/ariszlo/hunky.html http://sourceforge.net/proje
PACKAGE_ARCH = "all"
PR = "r5"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/${PN}-${PV}-r4.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}-r4.tar.bz2"
S = "${WORKDIR}/${PN}"
diff --git a/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb b/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb
index b316ce3a86..34acde69d2 100644
--- a/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb
+++ b/packages/qpf-fonts/qpf-hunkyserif_0.3.0.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://www.yoper.com/ariszlo/hunky.html http://sourceforge.net/proje
PACKAGE_ARCH = "all"
PR = "r5"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/${PN}-${PV}-r4.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/${PN}-${PV}-r4.tar.bz2"
S = "${WORKDIR}/${PN}"
diff --git a/packages/qpf-fonts/qpf-utopia_1.0.bb b/packages/qpf-fonts/qpf-utopia_1.0.bb
index e40dd12483..5ce0c06296 100644
--- a/packages/qpf-fonts/qpf-utopia_1.0.bb
+++ b/packages/qpf-fonts/qpf-utopia_1.0.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://www.pobox.sk/~mico/zaurus.html"
PACKAGE_ARCH = "all"
PR = "r1"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/qpf-utopia.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/qpf-utopia.tar.bz2"
S = "${WORKDIR}/utopia"
do_install () {
diff --git a/packages/qt/qt-x11-free_3.3.5.bb b/packages/qt/qt-x11-free_3.3.5.bb
index afa33f98af..0f57314971 100644
--- a/packages/qt/qt-x11-free_3.3.5.bb
+++ b/packages/qt/qt-x11-free_3.3.5.bb
@@ -4,7 +4,7 @@ PRIORITY = "optional"
LICENSE = "GPL QPL"
HOMEPAGE = "http://www.trolltech.com"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-DEPENDS = "uicmoc3-native freetype x11 xft xext libxrender libxrandr libxcursor mysql"
+DEPENDS = "uicmoc3-native freetype libx11 xft libxext libxrender libxrandr libxcursor mysql"
PROVIDES = "qt3x11"
PR = "r10"
diff --git a/packages/qt/qt-x11-free_4.0.1.bb b/packages/qt/qt-x11-free_4.0.1.bb
index e08fc23ea0..32ddca6158 100644
--- a/packages/qt/qt-x11-free_4.0.1.bb
+++ b/packages/qt/qt-x11-free_4.0.1.bb
@@ -4,7 +4,7 @@ PRIORITY = "optional"
HOMEPAGE = "http://www.trolltech.com"
LICENSE = "GPL QPL"
MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
-DEPENDS = "uicmoc4-native freetype jpeg x11 xft xext libxrender libxrandr libxcursor mysql"
+DEPENDS = "uicmoc4-native freetype jpeg libx11 xft libxext libxrender libxrandr libxcursor mysql"
PROVIDES = "qt4x11"
# FIXME: Make it use 'our' qmake
# DEPENDS += "qmake-native-2.00a"
diff --git a/packages/quilt/quilt-native_0.39.bb b/packages/quilt/quilt-native_0.39.bb
index 5dabcffd74..ba58f9dba6 100644
--- a/packages/quilt/quilt-native_0.39.bb
+++ b/packages/quilt/quilt-native_0.39.bb
@@ -2,6 +2,8 @@ include quilt.inc
INHIBIT_AUTOTOOLS_DEPS = "1"
+RDEPENDS_${PN} = "diffstat-native patch-native bzip2-native"
+
SRC_URI = "cvs://anoncvs:@savannah.nongnu.org/cvsroot/quilt;method=ext;rsh=ssh;module=quilt;tag=VER_${@(bb.data.getVar('PV', d, 1) or '').replace('.', '_')} \
file://install.patch;patch=1 \
file://nostrip.patch;patch=1 \
diff --git a/packages/quilt/quilt-native_0.42.bb b/packages/quilt/quilt-native_0.42.bb
index ad3834ea21..19b4a3b865 100644
--- a/packages/quilt/quilt-native_0.42.bb
+++ b/packages/quilt/quilt-native_0.42.bb
@@ -2,6 +2,8 @@ include quilt.inc
INHIBIT_AUTOTOOLS_DEPS = "1"
+RDEPENDS_${PN} = "diffstat-native patch-native bzip2-native"
+
SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/cvsroot/quilt;method=pserver;module=quilt;tag=VER_${@(bb.data.getVar('PV', d, 1) or '').replace('.', '_')} \
file://install.patch;patch=1 \
file://nostrip.patch;patch=1 \
diff --git a/packages/randrext/randrext_cvs.bb b/packages/randrext/randrext_cvs.bb
index 15b3768436..a16139b539 100644
--- a/packages/randrext/randrext_cvs.bb
+++ b/packages/randrext/randrext_cvs.bb
@@ -4,7 +4,7 @@ SECTION = "libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DESCRIPTION = "X Resize and Rotate extension headers"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Randr"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Randr"
S = "${WORKDIR}/Randr"
inherit autotools pkgconfig
diff --git a/packages/rdesktop/rdesktop_1.3.1.bb b/packages/rdesktop/rdesktop_1.3.1.bb
index 5a0d679a74..43cee1b303 100644
--- a/packages/rdesktop/rdesktop_1.3.1.bb
+++ b/packages/rdesktop/rdesktop_1.3.1.bb
@@ -5,7 +5,7 @@
DESCRIPTION = "RDesktop is a X11 based RDP client"
HOMEPAGE = "http://www.rdesktop.org/"
LICENSE = "GPL"
-DEPENDS = "x11 openssl"
+DEPENDS = "libx11 openssl"
RDEPENDS= "openssl"
SECTION = "x11/network"
diff --git a/packages/rdesktop/rdesktop_1.4.1.bb b/packages/rdesktop/rdesktop_1.4.1.bb
index f25e7145fb..fd60ac5b13 100644
--- a/packages/rdesktop/rdesktop_1.4.1.bb
+++ b/packages/rdesktop/rdesktop_1.4.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Rdesktop rdp client for X"
-DEPENDS = "x11 openssl"
+DEPENDS = "libx11 openssl"
HOMEPAGE = "http://www.rdesktop.org"
SECTION = "x11/network"
MAINTAINER = "Adrian Davey <ade@beth2.org>"
diff --git a/packages/rdesktop/rdesktop_cvs.bb b/packages/rdesktop/rdesktop_cvs.bb
index 0dabdf3f3b..00c2423f85 100644
--- a/packages/rdesktop/rdesktop_cvs.bb
+++ b/packages/rdesktop/rdesktop_cvs.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Rdesktop rdp client for X"
-DEPENDS = "x11 openssl"
+DEPENDS = "libx11 openssl"
HOMEPAGE = "http://www.rdesktop.org"
SECTION = "x11/network"
MAINTAINER = "Adrian Davey <ade@beth2.org>"
diff --git a/packages/recordext/recordext_cvs.bb b/packages/recordext/recordext_cvs.bb
index 1c6bd0b931..494b53acdd 100644
--- a/packages/recordext/recordext_cvs.bb
+++ b/packages/recordext/recordext_cvs.bb
@@ -4,7 +4,7 @@ SECTION = "libs"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
DESCRIPTION = "XRecord extension protocol bits"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=RecordExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=RecordExt"
S = "${WORKDIR}/RecordExt"
inherit autotools pkgconfig
diff --git a/packages/renderext/renderext_cvs.bb b/packages/renderext/renderext_cvs.bb
index 85a790a6e7..af84c6f8ee 100644
--- a/packages/renderext/renderext_cvs.bb
+++ b/packages/renderext/renderext_cvs.bb
@@ -5,7 +5,7 @@ MAINTAINER = "Greg Gilbert <greg@treke.net>"
DESCRIPTION = "X Render extension headers"
DEFAULT_PREFERENCE = "1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Render"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Render"
S = "${WORKDIR}/Render"
inherit autotools pkgconfig
diff --git a/packages/resourceext/resourceext_cvs.bb b/packages/resourceext/resourceext_cvs.bb
index b2cbfd7592..92ac8d75b0 100644
--- a/packages/resourceext/resourceext_cvs.bb
+++ b/packages/resourceext/resourceext_cvs.bb
@@ -5,7 +5,7 @@ MAINTAINER = "Greg Gilbert <greg@treke.net>"
DEPENDS = "xextensions"
DESCRIPTION = "X Resource usage extension headers"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=ResourceExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=ResourceExt"
S = "${WORKDIR}/ResourceExt"
inherit autotools pkgconfig
diff --git a/packages/rosetta/rosetta_cvs.bb b/packages/rosetta/rosetta_cvs.bb
index b634315335..ff320a96b5 100644
--- a/packages/rosetta/rosetta_cvs.bb
+++ b/packages/rosetta/rosetta_cvs.bb
@@ -1,6 +1,6 @@
SECTION = "x11/utils"
PV = "0.0+cvs${SRCDATE}"
-DEPENDS = "gtk+ libgpewidget x11 libxrandr libxft xtst xext xau \
+DEPENDS = "gtk+ libgpewidget libx11 libxrandr libxft libxtst libxext libxau \
virtual/libintl"
DESCRIPTION = "Multistroke / full word handwriting recognition for X"
LICENSE = "GPL"
diff --git a/packages/rxvt-unicode/rxvt-unicode_4.8.bb b/packages/rxvt-unicode/rxvt-unicode_4.8.bb
index 94bd63e9d3..2174ccb6d6 100644
--- a/packages/rxvt-unicode/rxvt-unicode_4.8.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_4.8.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt-unicode/rxvt-unicode_4.9.bb b/packages/rxvt-unicode/rxvt-unicode_4.9.bb
index 61582491d5..6dbedf2c83 100644
--- a/packages/rxvt-unicode/rxvt-unicode_4.9.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_4.9.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt-unicode/rxvt-unicode_5.2.bb b/packages/rxvt-unicode/rxvt-unicode_5.2.bb
index fc39d1109d..ac891b6a3b 100644
--- a/packages/rxvt-unicode/rxvt-unicode_5.2.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_5.2.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt-unicode/rxvt-unicode_5.3.bb b/packages/rxvt-unicode/rxvt-unicode_5.3.bb
index 92915bf872..6ceefddd89 100644
--- a/packages/rxvt-unicode/rxvt-unicode_5.3.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_5.3.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt-unicode/rxvt-unicode_5.4.bb b/packages/rxvt-unicode/rxvt-unicode_5.4.bb
index 92915bf872..6ceefddd89 100644
--- a/packages/rxvt-unicode/rxvt-unicode_5.4.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_5.4.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt-unicode/rxvt-unicode_5.6.bb b/packages/rxvt-unicode/rxvt-unicode_5.6.bb
index 43d9d0c14a..9351a96a98 100644
--- a/packages/rxvt-unicode/rxvt-unicode_5.6.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_5.6.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt-unicode/rxvt-unicode_cvs.bb b/packages/rxvt-unicode/rxvt-unicode_cvs.bb
index ceee7cd51a..8059c5d489 100644
--- a/packages/rxvt-unicode/rxvt-unicode_cvs.bb
+++ b/packages/rxvt-unicode/rxvt-unicode_cvs.bb
@@ -1,5 +1,5 @@
SECTION = "x11/utils"
-DEPENDS = "x11 xt libxft"
+DEPENDS = "libx11 libxt libxft"
DESCRIPTION = "rxvt-unicode is a clone of the well known \
terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
diff --git a/packages/rxvt/rxvt_2.7.9.bb b/packages/rxvt/rxvt_2.7.9.bb
index c201d16f8a..20b3e28ff7 100644
--- a/packages/rxvt/rxvt_2.7.9.bb
+++ b/packages/rxvt/rxvt_2.7.9.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Well known terminal emulator"
SECTION = "x11/utils"
PR = "r1"
-DEPENDS = "x11 libxft"
+DEPENDS = "libx11 libxft"
LICENSE = "GPL"
SRC_URI = "${HANDHELDS_CVS};module=apps/rxvt \
file://include.patch;patch=1"
diff --git a/packages/sablevm/sablevm-classpath_1.1.9.bb b/packages/sablevm/sablevm-classpath_1.1.9.bb
index 3ca91fa8d5..1c1c3a11ce 100644
--- a/packages/sablevm/sablevm-classpath_1.1.9.bb
+++ b/packages/sablevm/sablevm-classpath_1.1.9.bb
@@ -6,7 +6,7 @@ MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
PR = "r1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native fastjar-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native fastjar-native"
RDEPENDS_${PN} = "${PN}-native"
SRC_URI = "http://sablevm.org/download/release/${PV}/${PN}-${PV}.tar.gz \
diff --git a/packages/sablevm/sablevm-classpath_1.11.3.bb b/packages/sablevm/sablevm-classpath_1.11.3.bb
index b712816326..ee6c58138c 100644
--- a/packages/sablevm/sablevm-classpath_1.11.3.bb
+++ b/packages/sablevm/sablevm-classpath_1.11.3.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-native (>= ${PV})"
SRC_URI = "http://sablevm.org/download/release/${PV}/${PN}-${PV}.tar.gz \
diff --git a/packages/sablevm/sablevm-classpath_1.12.bb b/packages/sablevm/sablevm-classpath_1.12.bb
index b712816326..ee6c58138c 100644
--- a/packages/sablevm/sablevm-classpath_1.12.bb
+++ b/packages/sablevm/sablevm-classpath_1.12.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango xtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
RDEPENDS_${PN} = "${PN}-native (>= ${PV})"
SRC_URI = "http://sablevm.org/download/release/${PV}/${PN}-${PV}.tar.gz \
diff --git a/packages/skippy/skippy-xd_0.5.0.bb b/packages/skippy/skippy-xd_0.5.0.bb
index 39d8266ca1..167310d4ec 100644
--- a/packages/skippy/skippy-xd_0.5.0.bb
+++ b/packages/skippy/skippy-xd_0.5.0.bb
@@ -2,7 +2,7 @@ LICENSE = "GPLV2"
DESCRIPTION = "Skippy is a full-screen task-switcher for X11."
SECTION = "x11"
MAINTAINER = "Chris Lord <cwiiis@handhelds.org>"
-DEPENDS = "virtual/xserver xdamage xcomposite"
+DEPENDS = "virtual/xserver libxdamage libxcomposite"
inherit pkgconfig
diff --git a/packages/libxfixes/files/.mtn2git_empty b/packages/spca5xx/spca5xx-20060202/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxfixes/files/.mtn2git_empty
+++ b/packages/spca5xx/spca5xx-20060202/.mtn2git_empty
diff --git a/packages/spca5xx/spca5xx-20060202/Makefile.patch b/packages/spca5xx/spca5xx-20060202/Makefile.patch
new file mode 100644
index 0000000000..8053858ee1
--- /dev/null
+++ b/packages/spca5xx/spca5xx-20060202/Makefile.patch
@@ -0,0 +1,19 @@
+*** spca5xx-20060202/Makefile.orig Thu Feb 2 21:33:18 2006
+--- spca5xx-20060202/Makefile Sun Feb 19 12:39:35 2006
+***************
+*** 51,57 ****
+ default:
+ @echo ' Building SPCA5XX driver for 2.5/2.6 kernel.'
+ @echo ' Remember: you must have read/write access to your kernel source tree.'
+! $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) modules
+
+ install:
+ mkdir -p $(MODULE_INSTALLDIR)
+--- 51,57 ----
+ default:
+ @echo ' Building SPCA5XX driver for 2.5/2.6 kernel.'
+ @echo ' Remember: you must have read/write access to your kernel source tree.'
+! $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC="$(CC)" modules
+
+ install:
+ mkdir -p $(MODULE_INSTALLDIR)
diff --git a/packages/spca5xx/spca5xx_20060202.bb b/packages/spca5xx/spca5xx_20060202.bb
new file mode 100644
index 0000000000..a5798f5b59
--- /dev/null
+++ b/packages/spca5xx/spca5xx_20060202.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "USB Webcam driver for spca5xx chipset family supporting \
+over 100 models of camera""
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+MAINTAINER = "dyoung <dyoung8888@yahoo.com>"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://mxhaard.free.fr/spca50x/Download/spca5xx-20060202.tar.gz \
+ file://Makefile.patch;patch=1"
+
+S = "${WORKDIR}/spca5xx-20060202"
+
+inherit module
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake 'KERNELDIR=${STAGING_KERNEL_DIR}' \
+ 'CC=${KERNEL_CC}' \
+ 'LD=${KERNEL_LD}'
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+ install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/usb/media
+}
+
diff --git a/packages/startup-monitor/startup-monitor_0.18-2.bb b/packages/startup-monitor/startup-monitor_0.18-2.bb
index cee61003b5..9eb48b6369 100644
--- a/packages/startup-monitor/startup-monitor_0.18-2.bb
+++ b/packages/startup-monitor/startup-monitor_0.18-2.bb
@@ -3,7 +3,7 @@ LICENSE = "GPL"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Florian Boor <florian.boor@kernelconcepts.de>"
-DEPENDS = "x11 startup-notification glib-2.0 libmatchbox"
+DEPENDS = "libx11 startup-notification glib-2.0 libmatchbox"
inherit gpe pkgconfig
diff --git a/packages/startup-notification/startup-notification_0.5.bb b/packages/startup-notification/startup-notification_0.5.bb
index 7b1d50acb1..e59056ab56 100644
--- a/packages/startup-notification/startup-notification_0.5.bb
+++ b/packages/startup-notification/startup-notification_0.5.bb
@@ -3,7 +3,7 @@ LICENSE = "LGPL"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
inherit autotools pkgconfig
diff --git a/packages/startup-notification/startup-notification_0.8.bb b/packages/startup-notification/startup-notification_0.8.bb
index e6f934ddeb..e7649bd65d 100644
--- a/packages/startup-notification/startup-notification_0.8.bb
+++ b/packages/startup-notification/startup-notification_0.8.bb
@@ -3,7 +3,7 @@ LICENSE = "LGPL"
SECTION = "libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
inherit autotools pkgconfig
diff --git a/packages/synergy/synergy_1.2.7.bb b/packages/synergy/synergy_1.2.7.bb
index 0bd27f5e06..738139428d 100644
--- a/packages/synergy/synergy_1.2.7.bb
+++ b/packages/synergy/synergy_1.2.7.bb
@@ -4,7 +4,7 @@ LICENSE = "GPLv2"
MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
SECTION = "x11"
# NOTE: This depends on full x11, not diet-x11
-DEPENDS = "x11 xtst"
+DEPENDS = "libx11 libxtst"
PR = "r0"
SRC_URI = "${SOURCEFORGE_MIRROR}/synergy2/synergy-${PV}.tar.gz"
diff --git a/packages/tcltk/tk_8.4.11.bb b/packages/tcltk/tk_8.4.11.bb
index ed72f336da..b993a4be03 100644
--- a/packages/tcltk/tk_8.4.11.bb
+++ b/packages/tcltk/tk_8.4.11.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Tool Command Language ToolKit Extension"
LICENSE = "tcl"
SECTION = "devel/tcltk"
HOMEPAGE = "http://tcl.sourceforge.net"
-DEPENDS = "tcl x11"
+DEPENDS = "tcl libx11"
RDEPENDS = "tcl"
PR = "r2"
diff --git a/packages/tetex/tetex_3.0.bb b/packages/tetex/tetex_3.0.bb
index c3f52751e7..5f9fa62f79 100644
--- a/packages/tetex/tetex_3.0.bb
+++ b/packages/tetex/tetex_3.0.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "teTeX is a complete TeX distribution for UNIX compatible systems"
LICENSE = "GPL"
SECTION = "console/utils"
-DEPENDS = "tetex-native flex gd ncurses libpng t1lib x11 xau xext xt zlib"
+DEPENDS = "tetex-native flex gd ncurses libpng t1lib libx11 libxau libxext libxt zlib"
TETEX_BUILDSYSTEM_TAMER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
PR = "r2"
diff --git a/packages/tickypip/tickypip-levels_1.1.bb b/packages/tickypip/tickypip-levels_1.1.bb
index 6f7a8f6be1..c92a8a1169 100644
--- a/packages/tickypip/tickypip-levels_1.1.bb
+++ b/packages/tickypip/tickypip-levels_1.1.bb
@@ -9,7 +9,7 @@ RDEPENDS = "tickypip"
PACKAGE_ARCH = "all"
PR = "r1"
-SRC_URI = "http://www.hrw.one.pl/_pliki/oe/files/tickypip-levels_${PV}.tar.bz2"
+SRC_URI = "http://ewi546.ewi.utwente.nl/mirror/hrw-oe-sources/tickypip-levels_${PV}.tar.bz2"
S = "${WORKDIR}/"
diff --git a/packages/libxft/.mtn2git_empty b/packages/tinymail/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxft/.mtn2git_empty
+++ b/packages/tinymail/.mtn2git_empty
diff --git a/packages/libxft/files/.mtn2git_empty b/packages/tinymail/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxft/files/.mtn2git_empty
+++ b/packages/tinymail/files/.mtn2git_empty
diff --git a/packages/tinymail/files/gtk-doc.m4 b/packages/tinymail/files/gtk-doc.m4
new file mode 100644
index 0000000000..3ec41666b2
--- /dev/null
+++ b/packages/tinymail/files/gtk-doc.m4
@@ -0,0 +1,53 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH(html-dir,
+ AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST(HTML_DIR)
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE(gtk-doc,
+ AC_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [default=no]]),,
+ enable_gtk_doc=no)
+
+ have_gtk_doc=no
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+ fi
+
+ dnl do we want to do a version check?
+ifelse([$1],[],,
+ [gtk_doc_min_version=$1
+ if test "$have_gtk_doc" = yes; then
+ AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+ if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ have_gtk_doc=no
+ fi
+ fi
+])
+ if test x$enable_gtk_doc = xyes; then
+ if test "$have_gtk_doc" != yes; then
+ enable_gtk_doc=no
+ fi
+ fi
+
+ AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+ AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
diff --git a/packages/tinymail/files/gtk-doc.make b/packages/tinymail/files/gtk-doc.make
new file mode 100644
index 0000000000..c319e7ad7c
--- /dev/null
+++ b/packages/tinymail/files/gtk-doc.make
@@ -0,0 +1,148 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST = \
+ $(content_files) \
+ $(HTML_IMAGES) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE).types \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-scan.o $(DOC_MODULE)-unused.txt $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB)
+ @echo '*** Scanning header files ***'
+ @-chmod -R u+w $(srcdir)
+ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null ; then \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ else \
+ cd $(srcdir) ; \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ cd $(srcdir) && \
+ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo '*** Rebuilding template files ***'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE)
+ touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml
+ @echo '*** Building XML ***'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml $(MKDB_OPTIONS)
+ touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo '*** Building HTML ***'
+ @-chmod -R u+w $(srcdir)
+ rm -rf $(srcdir)/html
+ mkdir $(srcdir)/html
+ cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ @echo '-- Fixing Crossreferences'
+ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ touch html-build.stamp
+endif
+
+##############
+
+clean-local:
+ rm -f *~ *.bak
+
+maintainer-clean-local: clean
+ cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+install-data-local:
+ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR)
+ (installfiles=`echo $(srcdir)/html/*`; \
+ if test "$$installfiles" = '$(srcdir)/html/*'; \
+ then echo '-- Nothing to install' ; \
+ else \
+ for i in $$installfiles; do \
+ echo '-- Installing '$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+ done; \
+ echo '-- Installing $(srcdir)/html/index.sgml' ; \
+ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ fi)
+
+uninstall-local:
+ rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ mkdir $(distdir)/tmpl
+ mkdir $(distdir)/xml
+ mkdir $(distdir)/html
+ -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ -cp $(srcdir)/xml/*.xml $(distdir)/xml
+ -cp $(srcdir)/html/* $(distdir)/html
+
+.PHONY : dist-hook-local
diff --git a/packages/tinymail/tinymail_svn.bb b/packages/tinymail/tinymail_svn.bb
new file mode 100644
index 0000000000..a8888f6537
--- /dev/null
+++ b/packages/tinymail/tinymail_svn.bb
@@ -0,0 +1,22 @@
+SECTION = "x11/utils"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs-dbus libgnomeui eds-dbus"
+DESCRIPTION = "TinyMail is an attempt to create an E-mail client for mobile devices"
+LICENSE = "GPL"
+MAINTAINER = "Patrick Steiner <patrick.steiner@a1.net>"
+
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.cronos.be/svn/tinymail;module=trunk;proto=https \
+ file://gtk-doc.m4 \
+ file://gtk-doc.make"
+
+inherit pkgconfig autotools
+S = "${WORKDIR}/trunk"
+
+do_configure_prepend() {
+ mkdir -p m4
+ install ${WORKDIR}/gtk-doc.m4 ./m4/
+ install ${WORKDIR}/gtk-doc.make ./
+}
+
diff --git a/packages/tslib/tslib_cvs.bb b/packages/tslib/tslib_cvs.bb
index cd2d65f515..2513a436a6 100644
--- a/packages/tslib/tslib_cvs.bb
+++ b/packages/tslib/tslib_cvs.bb
@@ -19,7 +19,7 @@ S = "${WORKDIR}/tslib"
LICENSE = "LGPL"
CONFFILES_${PN} = "${sysconfdir}/ts.conf"
-inherit autotools
+inherit autotools pkgconfig
PACKAGES = "tslib-conf libts libts-dev tslib-tests tslib-calibrate"
EXTRA_OECONF = "--enable-shared"
diff --git a/packages/v4l2apps/v4l2apps_20020317.bb b/packages/v4l2apps/v4l2apps_20020317.bb
index 67ab643b2d..779372a775 100644
--- a/packages/v4l2apps/v4l2apps_20020317.bb
+++ b/packages/v4l2apps/v4l2apps_20020317.bb
@@ -1,7 +1,7 @@
SECTION = "console/utils"
DESCRIPTION = "Video4linux Two sample applications"
LICENSE = "PD"
-DEPENDS = "xaw x11 xt"
+DEPENDS = "libxaw libx11 libxt"
SRC_URI = "http://www.thedirks.org/pub/v4l2/apps/apps${PV}.tgz"
S = "${WORKDIR}"
diff --git a/packages/libxi/.mtn2git_empty b/packages/vnc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxi/.mtn2git_empty
+++ b/packages/vnc/.mtn2git_empty
diff --git a/packages/libxi/files/.mtn2git_empty b/packages/vnc/tightvnc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxi/files/.mtn2git_empty
+++ b/packages/vnc/tightvnc/.mtn2git_empty
diff --git a/packages/vnc/tightvnc/Makefile b/packages/vnc/tightvnc/Makefile
new file mode 100644
index 0000000000..0367fbc702
--- /dev/null
+++ b/packages/vnc/tightvnc/Makefile
@@ -0,0 +1,23 @@
+SOURCES = argsresources.c \
+caps.c \
+colour.c \
+cursor.c \
+desktop.c \
+dialogs.c \
+fullscreen.c \
+listen.c \
+misc.c \
+popup.c \
+rfbproto.c \
+selection.c \
+shm.c \
+sockets.c \
+tunnel.c \
+vncviewer.c \
+../libvncauth/vncauth.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/vnc/tightvnc_1.3dev7.bb b/packages/vnc/tightvnc_1.3dev7.bb
new file mode 100644
index 0000000000..54503ee408
--- /dev/null
+++ b/packages/vnc/tightvnc_1.3dev7.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "A Unix VNC client"
+HOMEPAGE = "http://www.tightvnc.com/"
+DEPENDS = "libx11 zlib libxmu libxaw"
+LICENSE = "GPL"
+MAINTAINER = "Graeme Gregory <dp@xora.org.uk>"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/vnc-tight/tightvnc-1.3dev7_unixsrc.tar.gz \
+ file://Makefile"
+
+S = ${WORKDIR}/vnc_unixsrc/vncviewer/
+
+PACKAGES="tightvncviewer"
+FILES_tightvncviewer = "/usr/bin/tightvncviewer"
+
+do_compile () {
+ install ${WORKDIR}/Makefile ${S}
+ oe_runmake
+}
+
+do_install () {
+ install -d ${D}${bindir}
+ install tightvncviewer ${D}${bindir}
+}
+
diff --git a/packages/vnc/vnc_3.3.7.bb b/packages/vnc/vnc_3.3.7.bb
new file mode 100644
index 0000000000..06fa0fedf2
--- /dev/null
+++ b/packages/vnc/vnc_3.3.7.bb
@@ -0,0 +1,21 @@
+# vnc OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION = "A Unix VNC client"
+HOMEPAGE = "http://www.realvnc.com/"
+DEPENDS = "zlib libxmu libxaw"
+LICENSE="GPL"
+
+SRC_URI="http://www.realvnc.com/dist/vnc-${PV}-unixsrc.tar.gz"
+
+S="${WORKDIR}/vnc-${PV}-unixsrc"
+
+inherit autotools
+EXTRA_OECONF = " --with-installed-zlib"
+
+do_install() {
+ install -d ${D}/usr/bin/
+ install -m 0755 vncviewer/vncviewer ${D}/usr/bin/vncviewer
+}
+
diff --git a/packages/waimea/waimea_cvs.bb b/packages/waimea/waimea_cvs.bb
index 3d35dfffab..05cce5d1ce 100644
--- a/packages/waimea/waimea_cvs.bb
+++ b/packages/waimea/waimea_cvs.bb
@@ -2,7 +2,7 @@ SECTION = "x11/wm"
DESCRIPTION = "Waimea is a highly customizable window manager for the X Window \
system conforming to the latest EWMH specification."
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
-DEPENDS = "cairo libpng xrandr libsvg-cairo xext"
+DEPENDS = "cairo libpng xrandr libsvg-cairo libxext"
PV = "0.0+cvs${SRCDATE}"
LICENSE = "GPL"
SRC_URI = "cvs://anoncvs:@cvs.waimea.org/cvs/waimea;module=waimea;method=pserver"
diff --git a/packages/wpa-supplicant/files/defconfig-gnutls b/packages/wpa-supplicant/files/defconfig-gnutls
new file mode 100644
index 0000000000..2df5e51df8
--- /dev/null
+++ b/packages/wpa-supplicant/files/defconfig-gnutls
@@ -0,0 +1,176 @@
+# 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.
+
+CFLAGS = $(TARGET_CFLAGS) -I../hostapd -I../utils -I../driver/modules -Wall -MMD
+LIBS = $(TARGET_LDFLAGS)
+
+# Driver interface for Host AP driver
+CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for Agere driver
+#CONFIG_DRIVER_HERMES=n
+
+# Driver interface for madwifi driver
+#CONFIG_DRIVER_MADWIFI=y
+
+# Driver interface for Prism54 driver
+#CONFIG_DRIVER_PRISM54=y
+
+# Driver interface for ndiswrapper
+#CONFIG_DRIVER_NDISWRAPPER=y
+
+# Driver interface for Atmel driver
+#CONFIG_DRIVER_ATMEL=y
+
+# Driver interface for Broadcom driver
+#CONFIG_DRIVER_BROADCOM=y
+
+# Driver interface for Intel ipw2100 driver
+#CONFIG_DRIVER_IPW2100=y
+
+# Driver interface for generic Linux wireless extensions
+CONFIG_DRIVER_WEXT=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
+
+# Driver interface for development testing
+#CONFIG_DRIVER_TEST=y
+
+# Driver interface for wired Ethernet drivers
+CONFIG_DRIVER_WIRED=y
+
+# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
+# included)
+CONFIG_IEEE8021X_EAPOL=y
+
+# EAP-MD5 (automatically included if EAP-TTLS is enabled)
+CONFIG_EAP_MD5=y
+
+# EAP-MSCHAPv2 (automatically included if EAP-PEAP is enabled)
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-TLS
+CONFIG_EAP_TLS=y
+
+# EAL-PEAP
+CONFIG_EAP_PEAP=y
+
+# EAP-TTLS
+CONFIG_EAP_TTLS=y
+
+# EAP-GTC
+CONFIG_EAP_GTC=y
+
+# EAP-OTP
+CONFIG_EAP_OTP=y
+
+# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used)
+#CONFIG_EAP_SIM=y
+
+# EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-PAX
+#CONFIG_EAP_PAX=y
+
+# LEAP
+CONFIG_EAP_LEAP=y
+
+# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used)
+#CONFIG_EAP_AKA=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
+
+# Smartcard support (i.e., private key on a smartcard), e.g., with openssl
+# engine.
+CONFIG_SMARTCARD=y
+
+# PC/SC interface for smartcards (USIM, GSM SIM)
+# Enable this if EAP-SIM or EAP-AKA is included
+#CONFIG_PCSC=y
+
+# Development testing
+#CONFIG_EAPOL_TEST=y
+
+# Replace native Linux implementation of packet sockets with libdnet/libpcap.
+# This will be automatically set for non-Linux OS.
+#CONFIG_DNET_PCAP=y
+
+# Include control interface for external programs, e.g, wpa_cli
+CONFIG_CTRL_IFACE=y
+
+# Include support for GNU Readline and History Libraries in wpa_cli.
+# When building a wpa_cli binary for distribution, please note that these
+# libraries are licensed under GPL and as such, BSD license may not apply for
+# the resulting binary.
+#CONFIG_READLINE=y
+
+# Remove debugging code that is printing out debug message to stdout.
+# This can be used to reduce the size of the wpa_supplicant considerably
+# if debugging code is not needed. The size reduction can be around 35%
+# (e.g., 90 kB).
+#CONFIG_NO_STDOUT_DEBUG=y
+
+# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save
+# 35-50 kB in code size.
+#CONFIG_NO_WPA=y
+
+# Select configuration backend:
+# file = text file (e.g., wpa_supplicant.conf)
+# winreg = Windows registry (see win_example.reg for an example)
+CONFIG_BACKEND=file
+
+# Select program entry point implementation:
+# main = UNIX/POSIX like main() function (default)
+# main_winsvc = Windows service (read parameters from registry)
+# main_none = Very basic example (development use only)
+#CONFIG_MAIN=main
+
+# Select wrapper for operatins system and C library specific functions
+# unix = UNIX/POSIX like systems (default)
+# win32 = Windows systems
+# none = Empty template
+#CONFIG_OS=unix
+
+# Select event loop implementation
+# eloop = select() loop (default)
+# eloop_win = Windows events and WaitForMultipleObject() loop
+# eloop_none = Empty template
+#CONFIG_ELOOP=eloop
+
+# Select layer 2 packet implementation
+# linux = Linux packet socket (default)
+# pcap = libpcap/libdnet/WinPcap
+# freebsd = FreeBSD libpcap
+# winpcap = WinPcap with receive thread
+# none = Empty template
+#CONFIG_L2_PACKET=linux
+
+# IEEE 802.11i/IEEE 802.11e STAKey negotiation for direct link connection
+#CONFIG_STAKEY=y
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA)
+# none = Empty template
+CONFIG_TLS=gnutls
+
+# Whether to enable TLS/IA support, which is required for EAP-TTLSv1.
+# You need CONFIG_TLS=gnutls for this to have any effect. Please note that
+# even though the core GnuTLS library is released under LGPL, this extra
+# library uses GPL and as such, the terms of GPL apply to the combination
+# of wpa_supplicant and GnuTLS if this option is enabled. BSD license may not
+# apply for distribution of the resulting binary.
+CONFIG_GNUTLS_EXTRA=y
+
diff --git a/packages/wpa-supplicant/files/wpa_supplicant.conf-gnutls b/packages/wpa-supplicant/files/wpa_supplicant.conf-gnutls
new file mode 100644
index 0000000000..da407b5ef3
--- /dev/null
+++ b/packages/wpa-supplicant/files/wpa_supplicant.conf-gnutls
@@ -0,0 +1,502 @@
+##### Example wpa_supplicant configuration file ###############################
+# Empty lines and lines starting with # are ignored
+
+# NOTE! This file may contain password information and should probably be made
+# readable only by root user on multiuser systems.
+
+# global configuration (shared by all network blocks)
+#
+# Interface for separate control program. If this is specified, wpa_supplicant
+# will create this directory and a UNIX domain socket for listening to requests
+# from external programs (CLI/GUI, etc.) for status information and
+# configuration. The socket file will be named based on the interface name, so
+# multiple wpa_supplicant processes can be run at the same time if more than
+# one interface is used.
+# /var/run/wpa_supplicant is the recommended directory for sockets and by
+# default, wpa_cli will use it when trying to connect with wpa_supplicant.
+ctrl_interface=/var/run/wpa_supplicant
+
+# Access control for the control interface can be configured by setting the
+# directory to allow only members of a group to use sockets. This way, it is
+# possible to run wpa_supplicant as root (since it needs to change network
+# configuration and open raw sockets) and still allow GUI/CLI components to be
+# run as non-root users. However, since the control interface can be used to
+# change the network configuration, this access needs to be protected in many
+# cases. By default, wpa_supplicant is configured to use gid 0 (root). If you
+# want to allow non-root users to use the control interface, add a new group
+# and change this value to match with that group. Add users that should have
+# control interface access to this group. If this variable is commented out or
+# not included in the configuration file, group will not be changed from the
+# value it got by default when the directory or socket was created.
+#
+# This variable can be a group name or gid.
+#ctrl_interface_group=wheel
+ctrl_interface_group=0
+
+# IEEE 802.1X/EAPOL version
+# wpa_supplicant was implemented based on IEEE 802-1X-REV-d8 which defines
+# EAPOL version 2. However, there are many APs that do not handle the new
+# version number correctly (they seem to drop the frames completely). In order
+# to make wpa_supplicant interoperate with these APs, the version number is set
+# to 1 by default. This configuration value can be used to set it to the new
+# version (2).
+eapol_version=1
+
+# AP scanning/selection
+# By default, wpa_supplicant requests driver to perform AP scanning and then
+# uses the scan results to select a suitable AP. Another alternative is to
+# allow the driver to take care of AP scanning and selection and use
+# wpa_supplicant just to process EAPOL frames based on IEEE 802.11 association
+# information from the driver.
+# 1: wpa_supplicant initiates scanning and AP selection
+# 0: driver takes care of scanning, AP selection, and IEEE 802.11 association
+# parameters (e.g., WPA IE generation); this mode can also be used with
+# non-WPA drivers when using IEEE 802.1X mode; do not try to associate with
+# APs (i.e., external program needs to control association)
+# 2: like 0, but associate with APs using security policy and SSID (but not
+# BSSID); this can be used, e.g., with ndiswrapper and NDIS driver to
+# enable operation with hidden SSIDs and optimized roaming; in this mode,
+# only the first network block in the configuration file is used and this
+# configuration should have explicit security policy (i.e., only one option
+# in the lists) for key_mgmt, pairwise, group, proto variables
+ap_scan=1
+
+# EAP fast re-authentication
+# By default, fast re-authentication is enabled for all EAP methods that
+# support it. This variable can be used to disable fast re-authentication.
+# Normally, there is no need to disable this.
+fast_reauth=1
+
+# network block
+#
+# Each network (usually AP's sharing the same SSID) is configured as a separate
+# block in this configuration file. The network blocks are in preference order
+# (the first match is used).
+#
+# network block fields:
+#
+# ssid: SSID (mandatory); either as an ASCII string with double quotation or
+# as hex string; network name
+#
+# scan_ssid:
+# 0 = do not scan this SSID with specific Probe Request frames (default)
+# 1 = scan with SSID-specific Probe Request frames (this can be used to
+# find APs that do not accept broadcast SSID or use multiple SSIDs;
+# this will add latency to scanning, so enable this only when needed)
+#
+# bssid: BSSID (optional); if set, this network block is used only when
+# associating with the AP using the configured BSSID
+#
+# priority: priority group (integer)
+# By default, all networks will get same priority group (0). If some of the
+# networks are more desirable, this field can be used to change the order in
+# which wpa_supplicant goes through the networks when selecting a BSS. The
+# priority groups will be iterated in decreasing priority (i.e., the larger the
+# priority value, the sooner the network is matched against the scan results).
+# Within each priority group, networks will be selected based on security
+# policy, signal strength, etc.
+# Please note that AP scanning with scan_ssid=1 is not using this priority to
+# select the order for scanning. Instead, it uses the order the networks are in
+# the configuration file.
+#
+# mode: IEEE 802.11 operation mode
+# 0 = infrastructure (Managed) mode, i.e., associate with an AP (default)
+# 1 = IBSS (ad-hoc, peer-to-peer)
+# Note: IBSS can only be used with key_mgmt NONE (plaintext and static WEP)
+# and key_mgmt=WPA-NONE (fixed group key TKIP/CCMP). In addition, ap_scan has
+# to be set to 2 for IBSS. WPA-None requires following network block options:
+# proto=WPA, key_mgmt=WPA-NONE, pairwise=NONE, group=TKIP (or CCMP, but not
+# both), and psk must also be set.
+#
+# proto: list of accepted protocols
+# WPA = WPA/IEEE 802.11i/D3.0
+# RSN = WPA2/IEEE 802.11i (also WPA2 can be used as an alias for RSN)
+# If not set, this defaults to: WPA RSN
+#
+# key_mgmt: list of accepted authenticated key management protocols
+# WPA-PSK = WPA pre-shared key (this requires 'psk' field)
+# WPA-EAP = WPA using EAP authentication (this can use an external
+# program, e.g., Xsupplicant, for IEEE 802.1X EAP Authentication
+# IEEE8021X = IEEE 802.1X using EAP authentication and (optionally) dynamically
+# generated WEP keys
+# NONE = WPA is not used; plaintext or static WEP could be used
+# If not set, this defaults to: WPA-PSK WPA-EAP
+#
+# auth_alg: list of allowed IEEE 802.11 authentication algorithms
+# OPEN = Open System authentication (required for WPA/WPA2)
+# SHARED = Shared Key authentication (requires static WEP keys)
+# LEAP = LEAP/Network EAP (only used with LEAP)
+# If not set, automatic selection is used (Open System with LEAP enabled if
+# LEAP is allowed as one of the EAP methods).
+#
+# pairwise: list of accepted pairwise (unicast) ciphers for WPA
+# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
+# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
+# NONE = Use only Group Keys (deprecated, should not be included if APs support
+# pairwise keys)
+# If not set, this defaults to: CCMP TKIP
+#
+# group: list of accepted group (broadcast/multicast) ciphers for WPA
+# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
+# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
+# WEP104 = WEP (Wired Equivalent Privacy) with 104-bit key
+# WEP40 = WEP (Wired Equivalent Privacy) with 40-bit key [IEEE 802.11]
+# If not set, this defaults to: CCMP TKIP WEP104 WEP40
+#
+# psk: WPA preshared key; 256-bit pre-shared key
+# The key used in WPA-PSK mode can be entered either as 64 hex-digits, i.e.,
+# 32 bytes or as an ASCII passphrase (in which case, the real PSK will be
+# generated using the passphrase and SSID). ASCII passphrase must be between
+# 8 and 63 characters (inclusive).
+# This field is not needed, if WPA-EAP is used.
+# Note: Separate tool, wpa_passphrase, can be used to generate 256-bit keys
+# from ASCII passphrase. This process uses lot of CPU and wpa_supplicant
+# startup and reconfiguration time can be optimized by generating the PSK only
+# only when the passphrase or SSID has actually changed.
+#
+# eapol_flags: IEEE 802.1X/EAPOL options (bit field)
+# Dynamic WEP key require for non-WPA mode
+# bit0 (1): require dynamically generated unicast WEP key
+# bit1 (2): require dynamically generated broadcast WEP key
+# (3 = require both keys; default)
+#
+# Following fields are only used with internal EAP implementation.
+# eap: space-separated list of accepted EAP methods
+# MD5 = EAP-MD5 (unsecure and does not generate keying material ->
+# cannot be used with WPA; to be used as a Phase 2 method
+# with EAP-PEAP or EAP-TTLS)
+# MSCHAPV2 = EAP-MSCHAPv2 (cannot be used separately with WPA; to be used
+# as a Phase 2 method with EAP-PEAP or EAP-TTLS)
+# OTP = EAP-OTP (cannot be used separately with WPA; to be used
+# as a Phase 2 method with EAP-PEAP or EAP-TTLS)
+# GTC = EAP-GTC (cannot be used separately with WPA; to be used
+# as a Phase 2 method with EAP-PEAP or EAP-TTLS)
+# TLS = EAP-TLS (client and server certificate)
+# PEAP = EAP-PEAP (with tunnelled EAP authentication)
+# TTLS = EAP-TTLS (with tunnelled EAP or PAP/CHAP/MSCHAP/MSCHAPV2
+# authentication)
+# If not set, all compiled in methods are allowed.
+#
+# identity: Identity string for EAP
+# anonymous_identity: Anonymous identity string for EAP (to be used as the
+# unencrypted identity with EAP types that support different tunnelled
+# identity, e.g., EAP-TTLS)
+# password: Password string for EAP
+# ca_cert: File path to CA certificate file. This file can have one or more
+# trusted CA certificates. If ca_cert is not included, server certificate
+# will not be verified. This is insecure and the CA file should always be
+# configured.
+# client_cert: File path to client certificate file (PEM/DER)
+# private_key: File path to client private key file (PEM/DER/PFX)
+# When PKCS#12/PFX file (.p12/.pfx) is used, client_cert should be
+# commented out. Both the private key and certificate will be read from
+# the PKCS#12 file in this case.
+# private_key_passwd: Password for private key file
+# dh_file: File path to DH/DSA parameters file (in PEM format)
+# This is an optional configuration file for setting parameters for an
+# ephemeral DH key exchange. In most cases, the default RSA
+# authentication does not use this configuration. However, it is possible
+# setup RSA to use ephemeral DH key exchange. In addition, ciphers with
+# DSA keys always use ephemeral DH keys. This can be used to achieve
+# forward secrecy. If the file is in DSA parameters format, it will be
+# automatically converted into DH params.
+# subject_match: Substring to be matched against the subject of the
+# authentication server certificate. If this string is set, the server
+# sertificate is only accepted if it contains this string in the subject.
+# The subject string is in following format:
+# /C=US/ST=CA/L=San Francisco/CN=Test AS/emailAddress=as@example.com
+# phase1: Phase1 (outer authentication, i.e., TLS tunnel) parameters
+# (string with field-value pairs, e.g., "peapver=0" or
+# "peapver=1 peaplabel=1")
+# 'peapver' can be used to force which PEAP version (0 or 1) is used.
+# 'peaplabel=1' can be used to force new label, "client PEAP encryption",
+# to be used during key derivation when PEAPv1 or newer. Most existing
+# PEAPv1 implementation seem to be using the old label, "client EAP
+# encryption", and wpa_supplicant is now using that as the default value.
+# Some servers, e.g., Radiator, may require peaplabel=1 configuration to
+# interoperate with PEAPv1; see eap_testing.txt for more details.
+# 'peap_outer_success=0' can be used to terminate PEAP authentication on
+# tunneled EAP-Success. This is required with some RADIUS servers that
+# implement draft-josefsson-pppext-eap-tls-eap-05.txt (e.g.,
+# Lucent NavisRadius v4.4.0 with PEAP in "IETF Draft 5" mode)
+# sim_min_num_chal=3 can be used to configure EAP-SIM to require three
+# challenges (by default, it accepts 2 or 3)
+# phase2: Phase2 (inner authentication with TLS tunnel) parameters
+# (string with field-value pairs, e.g., "auth=MSCHAPV2" for EAP-PEAP or
+# "autheap=MSCHAPV2 autheap=MD5" for EAP-TTLS)
+# Following certificate/private key fields are used in inner Phase2
+# authentication when using EAP-TTLS or EAP-PEAP.
+# ca_cert2: File path to CA certificate file. This file can have one or more
+# trusted CA certificates. If ca_cert2 is not included, server
+# certificate will not be verified. This is insecure and the CA file
+# should always be configured.
+# client_cert2: File path to client certificate file
+# private_key2: File path to client private key file
+# private_key2_passwd: Password for private key file
+# dh_file2: File path to DH/DSA parameters file (in PEM format)
+# subject_match2: Substring to be matched against the subject of the
+# authentication server certificate.
+#
+# EAP-PSK variables:
+# eappsk: 16-byte (128-bit, 32 hex digits) pre-shared key in hex format
+# nai: user NAI
+# server_nai: authentication server NAI
+#
+# EAP-FAST variables:
+# pac_file: File path for the PAC entries. wpa_supplicant will need to be able
+# to create this file and write updates to it when PAC is being
+# provisioned or refreshed.
+# phase1: fast_provisioning=1 option enables in-line provisioning of EAP-FAST
+# credentials (PAC)
+#
+# wpa_supplicant supports number of "EAP workarounds" to work around
+# interoperability issues with incorrectly behaving authentication servers.
+# These are enabled by default because some of the issues are present in large
+# number of authentication servers. Strict EAP conformance mode can be
+# configured by disabling workarounds with eap_workaround=0.
+
+# Example blocks:
+
+# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
+network={
+ ssid="simple"
+ psk="very secret passphrase"
+ priority=5
+}
+
+# Same as previous, but request SSID-specific scanning (for APs that reject
+# broadcast SSID)
+network={
+ ssid="second ssid"
+ scan_ssid=1
+ psk="very secret passphrase"
+ priority=2
+}
+
+# Only WPA-PSK is used. Any valid cipher combination is accepted.
+network={
+ ssid="example"
+ proto=WPA
+ key_mgmt=WPA-PSK
+ pairwise=CCMP TKIP
+ group=CCMP TKIP WEP104 WEP40
+ psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
+ priority=2
+}
+
+# Only WPA-EAP is used. Both CCMP and TKIP is accepted. An AP that used WEP104
+# or WEP40 as the group cipher will not be accepted.
+network={
+ ssid="example"
+ proto=RSN
+ key_mgmt=WPA-EAP
+ pairwise=CCMP TKIP
+ group=CCMP TKIP
+ eap=TLS
+ identity="user@example.com"
+ ca_cert="/etc/cert/ca.pem"
+ client_cert="/etc/cert/user.pem"
+ private_key="/etc/cert/user.prv"
+ private_key_passwd="password"
+ priority=1
+}
+
+# EAP-PEAP/MSCHAPv2 configuration for RADIUS servers that use the new peaplabel
+# (e.g., Radiator)
+network={
+ ssid="example"
+ key_mgmt=WPA-EAP
+ eap=PEAP
+ identity="user@example.com"
+ password="foobar"
+ ca_cert="/etc/cert/ca.pem"
+ phase1="peaplabel=1"
+ phase2="auth=MSCHAPV2"
+ priority=10
+}
+
+# EAP-TTLS/EAP-MD5-Challenge configuration with anonymous identity for the
+# unencrypted use. Real identity is sent only within an encrypted TLS tunnel.
+network={
+ ssid="example"
+ key_mgmt=WPA-EAP
+ eap=TTLS
+ identity="user@example.com"
+ anonymous_identity="anonymous@example.com"
+ password="foobar"
+ ca_cert="/etc/cert/ca.pem"
+ priority=2
+}
+
+# EAP-TTLS/MSCHAPv2 configuration with anonymous identity for the unencrypted
+# use. Real identity is sent only within an encrypted TLS tunnel.
+network={
+ ssid="example"
+ key_mgmt=WPA-EAP
+ eap=TTLS
+ identity="user@example.com"
+ anonymous_identity="anonymous@example.com"
+ password="foobar"
+ ca_cert="/etc/cert/ca.pem"
+ phase2="auth=MSCHAPV2"
+}
+
+# WPA-EAP, EAP-TTLS with different CA certificate used for outer and inner
+# authentication.
+network={
+ ssid="example"
+ key_mgmt=WPA-EAP
+ eap=TTLS
+ # Phase1 / outer authentication
+ anonymous_identity="anonymous@example.com"
+ ca_cert="/etc/cert/ca.pem"
+ # Phase 2 / inner authentication
+ phase2="autheap=TLS"
+ ca_cert2="/etc/cert/ca2.pem"
+ client_cert2="/etc/cer/user.pem"
+ private_key2="/etc/cer/user.prv"
+ private_key2_passwd="password"
+ priority=2
+}
+
+# Both WPA-PSK and WPA-EAP is accepted. Only CCMP is accepted as pairwise and
+# group cipher.
+network={
+ ssid="example"
+ bssid=00:11:22:33:44:55
+ proto=WPA RSN
+ key_mgmt=WPA-PSK WPA-EAP
+ pairwise=CCMP
+ group=CCMP
+ psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
+}
+
+# Special characters in SSID, so use hex string. Default to WPA-PSK, WPA-EAP
+# and all valid ciphers.
+network={
+ ssid=00010203
+ psk=000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
+}
+
+
+# EAP-SIM with a GSM SIM or USIM
+network={
+ ssid="eap-sim-test"
+ key_mgmt=WPA-EAP
+ eap=SIM
+ pin="1234"
+ pcsc=""
+}
+
+
+# EAP-PSK
+network={
+ ssid="eap-psk-test"
+ key_mgmt=WPA-EAP
+ eap=PSK
+ identity="eap_psk_user"
+ eappsk=06b4be19da289f475aa46a33cb793029
+ nai="eap_psk_user@example.com"
+ server_nai="as@example.com"
+}
+
+
+# IEEE 802.1X/EAPOL with dynamically generated WEP keys (i.e., no WPA) using
+# EAP-TLS for authentication and key generation; require both unicast and
+# broadcast WEP keys.
+network={
+ ssid="1x-test"
+ key_mgmt=IEEE8021X
+ eap=TLS
+ identity="user@example.com"
+ ca_cert="/etc/cert/ca.pem"
+ client_cert="/etc/cert/user.pem"
+ private_key="/etc/cert/user.prv"
+ private_key_passwd="password"
+ eapol_flags=3
+}
+
+
+# LEAP with dynamic WEP keys
+network={
+ ssid="leap-example"
+ key_mgmt=IEEE8021X
+ eap=LEAP
+ identity="user"
+ password="foobar"
+}
+
+# EAP-FAST with WPA (WPA or WPA2)
+network={
+ ssid="eap-fast-test"
+ key_mgmt=WPA-EAP
+ eap=FAST
+ anonymous_identity="FAST-000102030405"
+ identity="username"
+ password="password"
+ phase1="fast_provisioning=1"
+ pac_file="/etc/wpa_supplicant.eap-fast-pac"
+}
+
+# Plaintext connection (no WPA, no IEEE 802.1X)
+network={
+ ssid="plaintext-test"
+ key_mgmt=NONE
+}
+
+
+# Shared WEP key connection (no WPA, no IEEE 802.1X)
+network={
+ ssid="static-wep-test"
+ key_mgmt=NONE
+ wep_key0="abcde"
+ wep_key1=0102030405
+ wep_key2="1234567890123"
+ wep_tx_keyidx=0
+ priority=5
+}
+
+
+# Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key
+# IEEE 802.11 authentication
+network={
+ ssid="static-wep-test2"
+ key_mgmt=NONE
+ wep_key0="abcde"
+ wep_key1=0102030405
+ wep_key2="1234567890123"
+ wep_tx_keyidx=0
+ priority=5
+ auth_alg=SHARED
+}
+
+
+# IBSS/ad-hoc network with WPA-None/TKIP.
+network={
+ ssid="test adhoc"
+ mode=1
+ proto=WPA
+ key_mgmt=WPA-NONE
+ pairwise=NONE
+ group=TKIP
+ psk="secret passphrase"
+}
+
+
+# Catch all example that allows more or less all configuration modes
+network={
+ ssid="example"
+ scan_ssid=1
+ key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
+ pairwise=CCMP TKIP
+ group=CCMP TKIP WEP104 WEP40
+ psk="very secret passphrase"
+ eap=TTLS PEAP TLS
+ identity="user@example.com"
+ password="foobar"
+ ca_cert="/etc/cert/ca.pem"
+ client_cert="/etc/cert/user.pem"
+ private_key="/etc/cert/user.prv"
+ private_key_passwd="password"
+ phase1="peaplabel=0"
+}
diff --git a/packages/wpa-supplicant/wpa-supplicant_0.5.1.bb b/packages/wpa-supplicant/wpa-supplicant_0.5.1.bb
new file mode 100644
index 0000000000..05d82cd892
--- /dev/null
+++ b/packages/wpa-supplicant/wpa-supplicant_0.5.1.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "A Client for Wi-Fi Protected Access (WPA)."
+SECTION = "network"
+LICENSE = "GPL"
+MAINTAINER = "Holger Schurig"
+HOMEPAGE = "http://hostap.epitest.fi/wpa_supplicant/"
+DEPENDS = "gnutls"
+
+SRC_URI = "http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz \
+ file://defconfig-gnutls \
+ file://wpa_supplicant.conf-gnutls"
+
+S = "${WORKDIR}/wpa_supplicant-${PV}"
+
+do_configure () {
+ install -m 0755 ${WORKDIR}/defconfig-gnutls .config
+}
+
+do_compile () {
+ make
+}
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m755 wpa_supplicant ${D}${sbindir}
+ install -m755 wpa_passphrase ${D}${sbindir}
+ install -m755 wpa_cli ${D}${sbindir}
+
+ install -d ${D}${sysconfdir}
+ install -m644 ${WORKDIR}/wpa_supplicant.conf-gnutls ${D}${sysconfdir}/wpa_supplicant.conf
+
+ install -d ${D}${docdir}/wpa_supplicant
+ install -m644 README ${D}${docdir}/wpa_supplicant
+}
diff --git a/packages/xauth/xauth_cvs.bb b/packages/xauth/xauth_cvs.bb
index 358da9bd35..54700574b7 100644
--- a/packages/xauth/xauth_cvs.bb
+++ b/packages/xauth/xauth_cvs.bb
@@ -1,12 +1,12 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT"
-DEPENDS = "x11 xau xmu xext"
+DEPENDS = "libx11 libxau libxmu libxext"
DESCRIPTION = "X authority file utility"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "x11/base"
PR = "r2"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xorg;module=xc/programs/xauth \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc/programs/xauth \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/xauth"
diff --git a/packages/xawtv/xawtv_3.93.bb b/packages/xawtv/xawtv_3.93.bb
index e22851c994..d2bd5d2a93 100644
--- a/packages/xawtv/xawtv_3.93.bb
+++ b/packages/xawtv/xawtv_3.93.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "XawTV is a simple Xaw-based TV program which uses the bttw \
driver or video4linux. It also contains various command-line utilities for \
grabbing images and AVI movies, tuning in TV stations, etc."
MAINTAINER = "Chris Larson <kergoth@handhelds.org>"
-DEPENDS = "xaw xmu xt xpm xext x11 ncurses libxft fs jpeg"
+DEPENDS = "libxaw libxmu libxt libxpm libxext libx11 ncurses libxft fs jpeg"
SRC_URI = "http://dl.bytesex.org/releases/xawtv/xawtv-${PV}.tar.gz \
file://make.patch;patch=1"
diff --git a/packages/xcalibrate/xcalibrate_cvs.bb b/packages/xcalibrate/xcalibrate_cvs.bb
index 31a60a3202..ab2b076079 100644
--- a/packages/xcalibrate/xcalibrate_cvs.bb
+++ b/packages/xcalibrate/xcalibrate_cvs.bb
@@ -2,10 +2,10 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE = "BSD-X"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "x11 xcalibrateext xext"
+DEPENDS = "libx11 xcalibrateext libxext"
DESCRIPTION = "XCalibrate client-side library"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XCalibrate"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XCalibrate"
S = "${WORKDIR}/XCalibrate"
inherit autotools pkgconfig
diff --git a/packages/xcalibrateext/xcalibrateext_cvs.bb b/packages/xcalibrateext/xcalibrateext_cvs.bb
index 133d19ee36..4e47c1677e 100644
--- a/packages/xcalibrateext/xcalibrateext_cvs.bb
+++ b/packages/xcalibrateext/xcalibrateext_cvs.bb
@@ -3,7 +3,7 @@ SECTION = "x11/libs"
LICENSE = "BSD-X"
DESCRIPTION = "XCalibrate extension headers"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XCalibrateExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XCalibrateExt"
S = "${WORKDIR}/XCalibrateExt"
inherit autotools pkgconfig
diff --git a/packages/xchat/xchat_2.6.1.bb b/packages/xchat/xchat_2.6.1.bb
new file mode 100644
index 0000000000..462ed4d6e9
--- /dev/null
+++ b/packages/xchat/xchat_2.6.1.bb
@@ -0,0 +1,9 @@
+LICENSE = "GPL"
+HOMEPAGE = "http://www.xchat.org"
+MAINTAINER = "Koen Kooi <koen@handhelds.org"
+DEPENDS = "libgcrypt zlib gtk+"
+SRC_URI = "http://www.xchat.org/files/source/2.6/xchat-${PV}.tar.bz2"
+
+inherit autotools
+EXTRA_OECONF = " --disable-perl --disable-python "
+
diff --git a/packages/xcompmgr/xcompmgr_cvs.bb b/packages/xcompmgr/xcompmgr_cvs.bb
index 3be8b3ed1b..451f289611 100644
--- a/packages/xcompmgr/xcompmgr_cvs.bb
+++ b/packages/xcompmgr/xcompmgr_cvs.bb
@@ -3,10 +3,10 @@ LICENSE = "BSD-X"
SECTION = "x11"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 xdamage xcomposite libxrender"
+DEPENDS = "libx11 libxdamage libxcomposite libxrender"
DESCRIPTION = "X Compositing Manager"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xapps;module=xcompmgr"
+SRC_URI = "${FREEDESKTOP_CVS}/xapps;module=xcompmgr"
S = "${WORKDIR}/xcompmgr"
inherit autotools
diff --git a/packages/xdemineur/xdemineur_2.1.1.bb b/packages/xdemineur/xdemineur_2.1.1.bb
index 58d6dd8dc6..2e4b59151c 100644
--- a/packages/xdemineur/xdemineur_2.1.1.bb
+++ b/packages/xdemineur/xdemineur_2.1.1.bb
@@ -1,7 +1,7 @@
inherit gpe
LICENSE = "BSD-X"
-DEPENDS = "x11 xpm"
+DEPENDS = "libx11 libxpm"
SECTION = "gpe"
DESCRIPTION = "Mine-sweeper game for GPE."
PRIORITY = "optional"
diff --git a/packages/xdmcp/files/.mtn2git_empty b/packages/xdmcp/files/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xdmcp/files/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xdpyinfo/xdpyinfo_cvs.bb b/packages/xdpyinfo/xdpyinfo_cvs.bb
index 6b0a4242f5..eb63ae7f4d 100644
--- a/packages/xdpyinfo/xdpyinfo_cvs.bb
+++ b/packages/xdpyinfo/xdpyinfo_cvs.bb
@@ -1,12 +1,12 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT"
-DEPENDS = "x11 xext xtst"
+DEPENDS = "libx11 libxext libxtst"
DESCRIPTION = "X display information utility"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "x11/base"
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xapps;module=xdpyinfo"
+SRC_URI = "${FREEDESKTOP_CVS}/xapps;module=xdpyinfo"
S = "${WORKDIR}/xdpyinfo"
inherit autotools pkgconfig
diff --git a/packages/xev/xev_cvs.bb b/packages/xev/xev_cvs.bb
index 035e63c855..3ea9d05c63 100644
--- a/packages/xev/xev_cvs.bb
+++ b/packages/xev/xev_cvs.bb
@@ -4,10 +4,10 @@ HOMEPAGE = "http://freedesktop.org/wiki/Software_2fxapps"
LICENSE = "MIT"
MAINTAINER = "Justin Patrin <papercrane@reversefold.com>"
SECTION = "x11/base"
-DEPENDS = "x11 xau"
+DEPENDS = "libx11 libxau"
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xapps;module=xev \
+SRC_URI = "${FREEDESKTOP_CVS}/xapps;module=xev \
file://diet-x11.patch;patch=1"
S = "${WORKDIR}/xev"
diff --git a/packages/xext/.mtn2git_empty b/packages/xext/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xext/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xext/files/.mtn2git_empty b/packages/xext/files/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xext/files/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xextensions/xextensions_20050610.bb b/packages/xextensions/xextensions_20050610.bb
index 735ba64a07..00cea3bc85 100644
--- a/packages/xextensions/xextensions_20050610.bb
+++ b/packages/xextensions/xextensions_20050610.bb
@@ -6,7 +6,7 @@ SECTION = "x11/libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DESCRIPTION = "various extension headers."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XExtensions;date=${FIXEDSRCDATE}"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XExtensions;date=${FIXEDSRCDATE}"
S = "${WORKDIR}/XExtensions"
inherit autotools pkgconfig
diff --git a/packages/xextensions/xextensions_cvs.bb b/packages/xextensions/xextensions_cvs.bb
index 05dc2976ee..18b95f5b00 100644
--- a/packages/xextensions/xextensions_cvs.bb
+++ b/packages/xextensions/xextensions_cvs.bb
@@ -4,7 +4,7 @@ SECTION = "x11/libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DESCRIPTION = "various extension headers."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XExtensions"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XExtensions"
S = "${WORKDIR}/XExtensions"
inherit autotools pkgconfig
diff --git a/packages/xfcalendar/xfcalendar_4.2.0.bb b/packages/xfcalendar/xfcalendar_4.2.0.bb
index 9dc7b6ef53..07b9b75000 100644
--- a/packages/xfcalendar/xfcalendar_4.2.0.bb
+++ b/packages/xfcalendar/xfcalendar_4.2.0.bb
@@ -4,5 +4,5 @@
DESCRIPTION="XFCE Calendar"
SECTION = "x11"
-DEPENDS="x11 libxfcegui4 libxfce4mcs"
+DEPENDS="libx11 libxfcegui4 libxfce4mcs"
inherit xfce
diff --git a/packages/xfdesktop/xfdesktop_4.2.0.bb b/packages/xfdesktop/xfdesktop_4.2.0.bb
index d2e1489205..e053a47fc0 100644
--- a/packages/xfdesktop/xfdesktop_4.2.0.bb
+++ b/packages/xfdesktop/xfdesktop_4.2.0.bb
@@ -4,7 +4,7 @@
DESCRIPTION="xfce4 Desktop Background Manager"
SECTION = "x11/base"
-DEPENDS="x11 libxfcegui4 libxfce4mcs libxml2"
+DEPENDS="libx11 libxfcegui4 libxfce4mcs libxml2"
inherit xfce
PACKAGES += "xfdesktop-backdrops"
diff --git a/packages/xfont/.mtn2git_empty b/packages/xfont/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xfont/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xfont/files/.mtn2git_empty b/packages/xfont/files/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xfont/files/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xfonts/xfonts-xorg_6.8.bb b/packages/xfonts/xfonts-xorg_6.8.bb
index 5bb1f522bb..f6710dcd5b 100644
--- a/packages/xfonts/xfonts-xorg_6.8.bb
+++ b/packages/xfonts/xfonts-xorg_6.8.bb
@@ -3,7 +3,7 @@ PR = "r1"
# XXX Is this true? These fonts are from X.org.
LICENSE = "XFree86"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xorg;module=xc;tag=XORG-6_8_0;method=pserver \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc;tag=XORG-6_8_0;method=pserver \
file://lexer.patch;patch=1"
diff --git a/packages/xfwm4/xfwm4_4.2.0.bb b/packages/xfwm4/xfwm4_4.2.0.bb
index 0fdfd136be..71a46646ea 100644
--- a/packages/xfwm4/xfwm4_4.2.0.bb
+++ b/packages/xfwm4/xfwm4_4.2.0.bb
@@ -9,7 +9,7 @@ inherit xfce
FILES_${PN} += "${datadir}/xfwm4/defaults ${datadir}/xfwm4/themes/default.keys/*"
-DEPENDS="startup-notification x11 xpm libxfce4util libxfcegui4 libxfce4mcs xfce-mcs-manager"
+DEPENDS="startup-notification libx11 libxpm libxfce4util libxfcegui4 libxfce4mcs xfce-mcs-manager"
EXTRA_OECONF += " --enable-startup-notification"
diff --git a/packages/xhost/xhost_20040413.bb b/packages/xhost/xhost_20040413.bb
index d25560493c..4d36e62bee 100644
--- a/packages/xhost/xhost_20040413.bb
+++ b/packages/xhost/xhost_20040413.bb
@@ -1,13 +1,13 @@
FIXEDSRCDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}"
LICENSE = "MIT"
PV = "0.0+cvs${FIXEDSRCDATE}"
-DEPENDS = "x11 xext xmu"
+DEPENDS = "libx11 libxext libxmu"
DESCRIPTION = "server access control program for X"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "x11/base"
PR = "r2"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xorg;module=xc/programs/xhost;date=${FIXEDSRCDATE} \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc/programs/xhost;date=${FIXEDSRCDATE} \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/xhost"
diff --git a/packages/xinerama/.mtn2git_empty b/packages/xinerama/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xinerama/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xkbd/xkbd_0.8.15.bb b/packages/xkbd/xkbd_0.8.15.bb
index daa82dd82e..d27ee5f9e2 100644
--- a/packages/xkbd/xkbd_0.8.15.bb
+++ b/packages/xkbd/xkbd_0.8.15.bb
@@ -7,7 +7,7 @@ PR = "r1"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "x11"
-DEPENDS = "xpm xtst libxft"
+DEPENDS = "libxpm libxtst libxft"
inherit autotools
diff --git a/packages/libxkbfile/.mtn2git_empty b/packages/xlibs/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxkbfile/.mtn2git_empty
+++ b/packages/xlibs/.mtn2git_empty
diff --git a/packages/x11/diet-x11_20050226.bb b/packages/xlibs/diet-x11_20050226.bb
index acb6fc330b..cab8c5d570 100644
--- a/packages/x11/diet-x11_20050226.bb
+++ b/packages/xlibs/diet-x11_20050226.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include x11_${PV}.bb
+include libx11_${PV}.bb
EXTRA_OECONF = "--disable-xcms --disable-xlocale --disable-xkb"
diff --git a/packages/x11/diet-x11_6.2.1.bb b/packages/xlibs/diet-x11_6.2.1.bb
index b63bfa041a..643e658412 100644
--- a/packages/x11/diet-x11_6.2.1.bb
+++ b/packages/xlibs/diet-x11_6.2.1.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include x11_${PV}.bb
+include libx11_${PV}.bb
EXTRA_OECONF = "--disable-xcms --disable-xlocale --disable-xkb"
CFLAGS += "-D_GNU_SOURCE"
diff --git a/packages/x11/diet-x11_cvs.bb b/packages/xlibs/diet-x11_cvs.bb
index 0adf717f17..eea73f0964 100644
--- a/packages/x11/diet-x11_cvs.bb
+++ b/packages/xlibs/diet-x11_cvs.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include x11_cvs.bb
+include libx11_cvs.bb
EXTRA_OECONF = "--disable-xcms --disable-xlocale --disable-xkb"
diff --git a/packages/libxp/.mtn2git_empty b/packages/xlibs/libice/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxp/.mtn2git_empty
+++ b/packages/xlibs/libice/.mtn2git_empty
diff --git a/packages/ice/files/autofoo.patch b/packages/xlibs/libice/autofoo.patch
index 8ab0585fb8..8ab0585fb8 100644
--- a/packages/ice/files/autofoo.patch
+++ b/packages/xlibs/libice/autofoo.patch
diff --git a/packages/ice/ice_6.3.3.bb b/packages/xlibs/libice_6.3.3.bb
index 7722bc4ae5..1311145334 100644
--- a/packages/ice/ice_6.3.3.bb
+++ b/packages/xlibs/libice_6.3.3.bb
@@ -2,7 +2,8 @@ SECTION = "libs"
LICENSE= "MIT"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
+PROVIDES = "ice"
DESCRIPTION = "X11 ICE library"
PR = "r1"
diff --git a/packages/ice/ice_cvs.bb b/packages/xlibs/libice_cvs.bb
index f3ead54e92..90c98d594a 100644
--- a/packages/ice/ice_cvs.bb
+++ b/packages/xlibs/libice_cvs.bb
@@ -2,12 +2,12 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE= "MIT"
SECTION = "libs"
PRIORITY = "optional"
-MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11"
+DEPENDS = "libx11"
+PROVIDES = "ice"
DESCRIPTION = "X11 ICE library"
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=ICE"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=ICE"
S = "${WORKDIR}/ICE"
inherit autotools pkgconfig
diff --git a/packages/libxrandr/.mtn2git_empty b/packages/xlibs/libsm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxrandr/.mtn2git_empty
+++ b/packages/xlibs/libsm/.mtn2git_empty
diff --git a/packages/libsm/files/autofoo.patch b/packages/xlibs/libsm/autofoo.patch
index 8cb204a66e..8cb204a66e 100644
--- a/packages/libsm/files/autofoo.patch
+++ b/packages/xlibs/libsm/autofoo.patch
diff --git a/packages/libsm/libsm_6.0.3.bb b/packages/xlibs/libsm_6.0.3.bb
index 2d78d3decb..08f9597045 100644
--- a/packages/libsm/libsm_6.0.3.bb
+++ b/packages/xlibs/libsm_6.0.3.bb
@@ -2,7 +2,7 @@ SECTION = "libs"
LICENSE = "MIT-X"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 ice"
+DEPENDS = "libx11 libice"
DESCRIPTION = "Session management library"
PR = "r1"
diff --git a/packages/libsm/libsm_cvs.bb b/packages/xlibs/libsm_cvs.bb
index ff5fcd8c0e..22b316cf57 100644
--- a/packages/libsm/libsm_cvs.bb
+++ b/packages/xlibs/libsm_cvs.bb
@@ -2,13 +2,13 @@ PV = "6.0.3+cvs${SRCDATE}"
LICENSE = "MIT-X"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "x11 ice"
+DEPENDS = "libx11 libice"
DESCRIPTION = "Session management library"
PR = "r1"
DEFAULT_PREFERENCE="-1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=SM"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=SM"
S = "${WORKDIR}/SM"
inherit autotools pkgconfig
diff --git a/packages/x11/x11-native_6.2.1.bb b/packages/xlibs/libx11-native_6.2.1.bb
index cb44531b87..b1fd2aa0db 100644
--- a/packages/x11/x11-native_6.2.1.bb
+++ b/packages/xlibs/libx11-native_6.2.1.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include x11_${PV}.bb
+include libx11_${PV}.bb
inherit native
DEPENDS = "xproto-native xextensions-native xau-native xtrans-native libxdmcp-native"
PROVIDES = ""
diff --git a/packages/x11/x11-native_cvs.bb b/packages/xlibs/libx11-native_cvs.bb
index 30a31ebf9b..161c070899 100644
--- a/packages/x11/x11-native_cvs.bb
+++ b/packages/xlibs/libx11-native_cvs.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include x11_cvs.bb
+include libx11_cvs.bb
inherit native
DEPENDS = "xproto-native xextensions-native xau-native xtrans-native libxdmcp-native"
PROVIDES = ""
diff --git a/packages/libxrandr/files/.mtn2git_empty b/packages/xlibs/libx11/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxrandr/files/.mtn2git_empty
+++ b/packages/xlibs/libx11/.mtn2git_empty
diff --git a/packages/x11/files/autofoo.patch b/packages/xlibs/libx11/autofoo.patch
index 8bdba09768..8bdba09768 100644
--- a/packages/x11/files/autofoo.patch
+++ b/packages/xlibs/libx11/autofoo.patch
diff --git a/packages/x11/files/errordb-keysymdb-path-fix.patch b/packages/xlibs/libx11/errordb-keysymdb-path-fix.patch
index f43d38065e..f43d38065e 100644
--- a/packages/x11/files/errordb-keysymdb-path-fix.patch
+++ b/packages/xlibs/libx11/errordb-keysymdb-path-fix.patch
diff --git a/packages/x11/files/fix-utf8-wrong-define.patch b/packages/xlibs/libx11/fix-utf8-wrong-define.patch
index dca88fba92..dca88fba92 100644
--- a/packages/x11/files/fix-utf8-wrong-define.patch
+++ b/packages/xlibs/libx11/fix-utf8-wrong-define.patch
diff --git a/packages/x11/files/xim.patch b/packages/xlibs/libx11/xim.patch
index 0eab197a80..0eab197a80 100644
--- a/packages/x11/files/xim.patch
+++ b/packages/xlibs/libx11/xim.patch
diff --git a/packages/x11/x11_20050226.bb b/packages/xlibs/libx11_20050226.bb
index b8206c29df..0bc30a42cc 100644
--- a/packages/x11/x11_20050226.bb
+++ b/packages/xlibs/libx11_20050226.bb
@@ -1,6 +1,6 @@
SRCDATE = "20050226"
-include x11_cvs.bb
+include libx11_cvs.bb
DEFAULT_PREFERENCE = "0"
diff --git a/packages/x11/x11_6.2.1.bb b/packages/xlibs/libx11_6.2.1.bb
index b1de21c383..ac3cce8bd7 100644
--- a/packages/x11/x11_6.2.1.bb
+++ b/packages/xlibs/libx11_6.2.1.bb
@@ -2,11 +2,12 @@ SECTION = "x11/libs"
LICENSE = "XFree86"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
-DEPENDS = "xproto xextensions xau xtrans xdmcp"
+DEPENDS = "xproto xextensions libxau xtrans libxdmcp"
+PROVIDES = "x11"
DESCRIPTION = "Base X libs."
FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB"
FILES_${PN}-locale += "${datadir}/X11/locale"
-PROVIDES = "x11"
+PROVIDES = "libx11"
PR = "r4"
SRC_URI = "${XLIBS_MIRROR}/libX11-${PV}.tar.bz2 \
diff --git a/packages/x11/x11_cvs.bb b/packages/xlibs/libx11_cvs.bb
index 6f666f5a15..56830f9253 100644
--- a/packages/x11/x11_cvs.bb
+++ b/packages/xlibs/libx11_cvs.bb
@@ -4,13 +4,14 @@ PR = "r6"
SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
-DEPENDS = "xproto xextensions xau xtrans xdmcp"
+DEPENDS = "xproto xextensions libxau xtrans libxdmcp"
+PROVIDES = "x11"
DESCRIPTION = "Base X libs."
FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB"
FILES_${PN}-locale += "${datadir}/X11/locale"
-PROVIDES = "x11"
+PROVIDES = "libx11"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=X11 \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=X11 \
file://errordb-keysymdb-path-fix.patch;patch=1"
S = "${WORKDIR}/X11"
diff --git a/packages/xau/xau-native_0.1.1.bb b/packages/xlibs/libxau-native_0.1.1.bb
index 251749dc45..3897fa6afe 100644
--- a/packages/xau/xau-native_0.1.1.bb
+++ b/packages/xlibs/libxau-native_0.1.1.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include xau_${PV}.bb
+include libxau_${PV}.bb
inherit native
DEPENDS = "xproto-native"
PROVIDES = ""
diff --git a/packages/xau/xau-native_cvs.bb b/packages/xlibs/libxau-native_cvs.bb
index 8c8bbb4dd1..eee93dd44c 100644
--- a/packages/xau/xau-native_cvs.bb
+++ b/packages/xlibs/libxau-native_cvs.bb
@@ -1,5 +1,5 @@
SECTION = "x11/base"
-include xau_cvs.bb
+include libxau_cvs.bb
inherit native
DEPENDS = "xproto-native"
PROVIDES = ""
diff --git a/packages/libxrandr/libxrandr-1.0.2/.mtn2git_empty b/packages/xlibs/libxau/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxrandr/libxrandr-1.0.2/.mtn2git_empty
+++ b/packages/xlibs/libxau/.mtn2git_empty
diff --git a/packages/xau/files/autofoo.patch b/packages/xlibs/libxau/autofoo.patch
index 1e42eb974d..1e42eb974d 100644
--- a/packages/xau/files/autofoo.patch
+++ b/packages/xlibs/libxau/autofoo.patch
diff --git a/packages/xau/xau_0.1.1.bb b/packages/xlibs/libxau_0.1.1.bb
index 3c8b4a030b..dc1a28171b 100644
--- a/packages/xau/xau_0.1.1.bb
+++ b/packages/xlibs/libxau_0.1.1.bb
@@ -3,6 +3,7 @@ LICENSE= "MIT"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DEPENDS = "xproto"
+PROVIDES = "xau"
DESCRIPTION = "Authorization Protocol for X."
PR = "r1"
diff --git a/packages/xau/xau_cvs.bb b/packages/xlibs/libxau_cvs.bb
index 46958baf19..518744816d 100644
--- a/packages/xau/xau_cvs.bb
+++ b/packages/xlibs/libxau_cvs.bb
@@ -5,9 +5,10 @@ SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DEPENDS = "xproto"
+PROVIDES = "xau"
DESCRIPTION = "Authorization Protocol for X."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xau"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xau"
S = "${WORKDIR}/Xau"
inherit autotools pkgconfig
diff --git a/packages/libxrender/.mtn2git_empty b/packages/xlibs/libxaw/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxrender/.mtn2git_empty
+++ b/packages/xlibs/libxaw/.mtn2git_empty
diff --git a/packages/xaw/files/auxdir.patch b/packages/xlibs/libxaw/auxdir.patch
index 4226ab6a4d..4226ab6a4d 100644
--- a/packages/xaw/files/auxdir.patch
+++ b/packages/xlibs/libxaw/auxdir.patch
diff --git a/packages/xaw/xaw_7.0.2.bb b/packages/xlibs/libxaw_7.0.2.bb
index d75cefbdbb..929b54a127 100644
--- a/packages/xaw/xaw_7.0.2.bb
+++ b/packages/xlibs/libxaw_7.0.2.bb
@@ -2,7 +2,8 @@ SECTION = "x11/libs"
LICENSE = "MIT"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "xproto x11 xt xmu xpm"
+DEPENDS = "xproto libx11 libxt libxmu libxpm"
+PROVIDES = "xaw"
DESCRIPTION = "X Athena Widgets library"
SRC_URI = "${XLIBS_MIRROR}/libXaw-${PV}.tar.bz2 \
diff --git a/packages/xaw/xaw_cvs.bb b/packages/xlibs/libxaw_cvs.bb
index ade2156cef..7860f6e6b1 100644
--- a/packages/xaw/xaw_cvs.bb
+++ b/packages/xlibs/libxaw_cvs.bb
@@ -2,11 +2,11 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT"
SECTION = "x11/libs"
PRIORITY = "optional"
-MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "xproto x11 xt xmu xpm"
+DEPENDS = "xproto libx11 libxt libxmu libxpm"
+PROVIDES = "xaw"
DESCRIPTION = "X Athena Widgets library"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xaw"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xaw"
S = "${WORKDIR}/Xaw"
inherit autotools pkgconfig
diff --git a/packages/libxrender/files/.mtn2git_empty b/packages/xlibs/libxcomposite-1.0.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxrender/files/.mtn2git_empty
+++ b/packages/xlibs/libxcomposite-1.0.1/.mtn2git_empty
diff --git a/packages/xcomposite/xcomposite-1.0.1/autofoo.patch b/packages/xlibs/libxcomposite-1.0.1/autofoo.patch
index 072cf25214..072cf25214 100644
--- a/packages/xcomposite/xcomposite-1.0.1/autofoo.patch
+++ b/packages/xlibs/libxcomposite-1.0.1/autofoo.patch
diff --git a/packages/xcomposite/xcomposite_1.0.1.bb b/packages/xlibs/libxcomposite_1.0.1.bb
index d31ec4dad7..e2ca3bbc7b 100644
--- a/packages/xcomposite/xcomposite_1.0.1.bb
+++ b/packages/xlibs/libxcomposite_1.0.1.bb
@@ -1,6 +1,7 @@
SECTION = "x11/libs"
LICENSE= "BSD-X"
-DEPENDS = "x11 compositeext xextensions libxfixes"
+DEPENDS = "libx11 compositeext xextensions libxfixes"
+PROVIDES = "xcomposite"
DESCRIPTION = "X Composite extension library."
PR = "r1"
diff --git a/packages/xcomposite/xcomposite_cvs.bb b/packages/xlibs/libxcomposite_cvs.bb
index 8469e9c366..1d8b69c8c6 100644
--- a/packages/xcomposite/xcomposite_cvs.bb
+++ b/packages/xlibs/libxcomposite_cvs.bb
@@ -1,10 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE= "BSD-X"
SECTION = "x11/libs"
-DEPENDS = "x11 compositeext xextensions libxfixes"
+DEPENDS = "libx11 compositeext xextensions libxfixes"
+PROVIDES = "xcomposite"
DESCRIPTION = "X Composite extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xcomposite"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xcomposite"
S = "${WORKDIR}/Xcomposite"
inherit autotools pkgconfig
diff --git a/packages/libxss/.mtn2git_empty b/packages/xlibs/libxcursor-1.1.2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxss/.mtn2git_empty
+++ b/packages/xlibs/libxcursor-1.1.2/.mtn2git_empty
diff --git a/packages/libxcursor/libxcursor-1.1.2/autofoo.patch b/packages/xlibs/libxcursor-1.1.2/autofoo.patch
index 99cd45a7ea..99cd45a7ea 100644
--- a/packages/libxcursor/libxcursor-1.1.2/autofoo.patch
+++ b/packages/xlibs/libxcursor-1.1.2/autofoo.patch
diff --git a/packages/libxv/.mtn2git_empty b/packages/xlibs/libxcursor/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxv/.mtn2git_empty
+++ b/packages/xlibs/libxcursor/.mtn2git_empty
diff --git a/packages/libxcursor/files/autofoo.patch b/packages/xlibs/libxcursor/autofoo.patch
index 7aa573ce13..7aa573ce13 100644
--- a/packages/libxcursor/files/autofoo.patch
+++ b/packages/xlibs/libxcursor/autofoo.patch
diff --git a/packages/libxcursor/libxcursor_1.1.2.bb b/packages/xlibs/libxcursor_1.1.2.bb
index 25744c7dca..25744c7dca 100644
--- a/packages/libxcursor/libxcursor_1.1.2.bb
+++ b/packages/xlibs/libxcursor_1.1.2.bb
diff --git a/packages/libxcursor/libxcursor_cvs.bb b/packages/xlibs/libxcursor_cvs.bb
index a719652530..5fe2334b85 100644
--- a/packages/libxcursor/libxcursor_cvs.bb
+++ b/packages/xlibs/libxcursor_cvs.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "X Cursor library"
DEPENDS = "libxfixes"
PR = "r2"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xcursor"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xcursor"
S = "${WORKDIR}/Xcursor"
FILES_${PN} += "${libdir}/libXcursor.so"
diff --git a/packages/libxvmc/.mtn2git_empty b/packages/xlibs/libxdamage-1.0.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxvmc/.mtn2git_empty
+++ b/packages/xlibs/libxdamage-1.0.1/.mtn2git_empty
diff --git a/packages/xdamage/xdamage-1.0.1/autofoo.patch b/packages/xlibs/libxdamage-1.0.1/autofoo.patch
index 1e3ec45d4a..1e3ec45d4a 100644
--- a/packages/xdamage/xdamage-1.0.1/autofoo.patch
+++ b/packages/xlibs/libxdamage-1.0.1/autofoo.patch
diff --git a/packages/libxvmc/files/.mtn2git_empty b/packages/xlibs/libxdamage/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxvmc/files/.mtn2git_empty
+++ b/packages/xlibs/libxdamage/.mtn2git_empty
diff --git a/packages/xdamage/xdamage/m4.patch b/packages/xlibs/libxdamage/m4.patch
index 393f3d13d2..393f3d13d2 100644
--- a/packages/xdamage/xdamage/m4.patch
+++ b/packages/xlibs/libxdamage/m4.patch
diff --git a/packages/xdamage/xdamage_1.0.1.bb b/packages/xlibs/libxdamage_1.0.1.bb
index 5b6c301374..040e863447 100644
--- a/packages/xdamage/xdamage_1.0.1.bb
+++ b/packages/xlibs/libxdamage_1.0.1.bb
@@ -1,6 +1,7 @@
SECTION = "x11/libs"
LICENSE= "BSD-X"
-DEPENDS = "x11 damageext libxfixes xproto"
+DEPENDS = "libx11 damageext libxfixes xproto"
+PROVIDES = "xdamage"
DESCRIPTION = "X Damage extension library."
PR = "r1"
diff --git a/packages/xdamage/xdamage_cvs.bb b/packages/xlibs/libxdamage_cvs.bb
index c10852783e..ba8a68033a 100644
--- a/packages/xdamage/xdamage_cvs.bb
+++ b/packages/xlibs/libxdamage_cvs.bb
@@ -1,10 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE= "BSD-X"
SECTION = "x11/libs"
-DEPENDS = "x11 damageext libxfixes xproto"
+DEPENDS = "libx11 damageext libxfixes xproto"
+PROVIDES = "xdamage"
DESCRIPTION = "X Damage extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xdamage \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xdamage \
file://m4.patch;patch=1"
S = "${WORKDIR}/Xdamage"
diff --git a/packages/xdmcp/libxdmcp-native_0.1.1.bb b/packages/xlibs/libxdmcp-native_0.1.1.bb
index bd6d990f53..bd6d990f53 100644
--- a/packages/xdmcp/libxdmcp-native_0.1.1.bb
+++ b/packages/xlibs/libxdmcp-native_0.1.1.bb
diff --git a/packages/xdmcp/libxdmcp-native_0.1.3.bb b/packages/xlibs/libxdmcp-native_0.1.3.bb
index bd6d990f53..bd6d990f53 100644
--- a/packages/xdmcp/libxdmcp-native_0.1.3.bb
+++ b/packages/xlibs/libxdmcp-native_0.1.3.bb
diff --git a/packages/libxxf86dga/.mtn2git_empty b/packages/xlibs/libxdmcp/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxxf86dga/.mtn2git_empty
+++ b/packages/xlibs/libxdmcp/.mtn2git_empty
diff --git a/packages/xdmcp/files/autofoo.patch b/packages/xlibs/libxdmcp/autofoo.patch
index ff1a76ad04..ff1a76ad04 100644
--- a/packages/xdmcp/files/autofoo.patch
+++ b/packages/xlibs/libxdmcp/autofoo.patch
diff --git a/packages/xdmcp/libxdmcp_0.1.1.bb b/packages/xlibs/libxdmcp_0.1.1.bb
index 19fba1529e..19fba1529e 100644
--- a/packages/xdmcp/libxdmcp_0.1.1.bb
+++ b/packages/xlibs/libxdmcp_0.1.1.bb
diff --git a/packages/xdmcp/libxdmcp_0.1.3.bb b/packages/xlibs/libxdmcp_0.1.3.bb
index aa2736cdb2..aa2736cdb2 100644
--- a/packages/xdmcp/libxdmcp_0.1.3.bb
+++ b/packages/xlibs/libxdmcp_0.1.3.bb
diff --git a/packages/xdmcp/libxdmcp_cvs.bb b/packages/xlibs/libxdmcp_cvs.bb
index b4f0fdf368..20b957b522 100644
--- a/packages/xdmcp/libxdmcp_cvs.bb
+++ b/packages/xlibs/libxdmcp_cvs.bb
@@ -8,7 +8,7 @@ DEPENDS = "xproto"
PROVIDES = "xdmcp"
DESCRIPTION = "X Display Manager Control Protocol library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xdmcp"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xdmcp"
S = "${WORKDIR}/Xdmcp"
inherit autotools pkgconfig
diff --git a/packages/xext/xext-native_cvs.bb b/packages/xlibs/libxext-native_cvs.bb
index 6be231f154..dfc439a9f6 100644
--- a/packages/xext/xext-native_cvs.bb
+++ b/packages/xlibs/libxext-native_cvs.bb
@@ -1,4 +1,4 @@
SECTION = "unknown"
-include xext_${PV}.bb
+include libxext_${PV}.bb
inherit native
DEPENDS = "x11-native xextensions-native"
diff --git a/packages/libxxf86vm/.mtn2git_empty b/packages/xlibs/libxext/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/libxxf86vm/.mtn2git_empty
+++ b/packages/xlibs/libxext/.mtn2git_empty
diff --git a/packages/xext/files/autofoo.patch b/packages/xlibs/libxext/autofoo.patch
index c006884526..c006884526 100644
--- a/packages/xext/files/autofoo.patch
+++ b/packages/xlibs/libxext/autofoo.patch
diff --git a/packages/xext/xext_cvs.bb b/packages/xlibs/libxext_cvs.bb
index 84ecd349bc..0ef675ca70 100644
--- a/packages/xext/xext_cvs.bb
+++ b/packages/xlibs/libxext_cvs.bb
@@ -4,9 +4,10 @@ LICENSE= "MIT"
DESCRIPTION = "X Server Extension library"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "xproto x11 xextensions"
+DEPENDS = "xproto libx11 xextensions"
+PROVIDES = "xext"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xext"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xext"
S = "${WORKDIR}/Xext"
inherit autotools pkgconfig
diff --git a/packages/x11/.mtn2git_empty b/packages/xlibs/libxfixes/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/x11/.mtn2git_empty
+++ b/packages/xlibs/libxfixes/.mtn2git_empty
diff --git a/packages/libxfixes/files/autofoo.patch b/packages/xlibs/libxfixes/autofoo.patch
index 26803cf7f3..26803cf7f3 100644
--- a/packages/libxfixes/files/autofoo.patch
+++ b/packages/xlibs/libxfixes/autofoo.patch
diff --git a/packages/libxfixes/libxfixes_2.0.1.bb b/packages/xlibs/libxfixes_2.0.1.bb
index 29e23e379d..710fa17454 100644
--- a/packages/libxfixes/libxfixes_2.0.1.bb
+++ b/packages/xlibs/libxfixes_2.0.1.bb
@@ -1,6 +1,6 @@
SECTION = "x11/libs"
LICENSE= "BSD-X"
-DEPENDS = "x11 fixesext"
+DEPENDS = "libx11 fixesext"
DESCRIPTION = "X Fixes extension library."
PR = "r1"
diff --git a/packages/libxfixes/libxfixes_cvs.bb b/packages/xlibs/libxfixes_cvs.bb
index 6a9ae6194f..4494dc9326 100644
--- a/packages/libxfixes/libxfixes_cvs.bb
+++ b/packages/xlibs/libxfixes_cvs.bb
@@ -1,10 +1,10 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE= "BSD-X"
SECTION = "x11/libs"
-DEPENDS = "x11 fixesext"
+DEPENDS = "libx11 fixesext"
DESCRIPTION = "X Fixes extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xfixes"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xfixes"
S = "${WORKDIR}/Xfixes"
inherit autotools pkgconfig
diff --git a/packages/x11/files/.mtn2git_empty b/packages/xlibs/libxfont/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/x11/files/.mtn2git_empty
+++ b/packages/xlibs/libxfont/.mtn2git_empty
diff --git a/packages/xfont/files/autofoo.patch b/packages/xlibs/libxfont/autofoo.patch
index 4998625c24..4998625c24 100644
--- a/packages/xfont/files/autofoo.patch
+++ b/packages/xlibs/libxfont/autofoo.patch
diff --git a/packages/xfont/files/scalable.patch b/packages/xlibs/libxfont/scalable.patch
index 7f97b9a8f6..7f97b9a8f6 100644
--- a/packages/xfont/files/scalable.patch
+++ b/packages/xlibs/libxfont/scalable.patch
diff --git a/packages/xfont/xfont_1.4.2.bb b/packages/xlibs/libxfont_1.4.2.bb
index 7ef1d2b17f..0cc45397fe 100644
--- a/packages/xfont/xfont_1.4.2.bb
+++ b/packages/xlibs/libxfont_1.4.2.bb
@@ -3,6 +3,7 @@ LICENSE = "BSD-X"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DEPENDS = "xproto xtrans zlib"
+PROVIDES = "xfont"
DESCRIPTION = "X font library (used by the X server)."
PR = "r2"
diff --git a/packages/xfont/xfont_cvs.bb b/packages/xlibs/libxfont_cvs.bb
index 1873d74dfc..bd21e0fd12 100644
--- a/packages/xfont/xfont_cvs.bb
+++ b/packages/xlibs/libxfont_cvs.bb
@@ -4,9 +4,10 @@ SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DEPENDS = "xproto xtrans zlib"
+PROVIDES = "xfont"
DESCRIPTION = "X font library (used by the X server)."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xfont \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xfont \
file://scalable.patch;patch=1"
S = "${WORKDIR}/Xfont"
diff --git a/packages/xau/.mtn2git_empty b/packages/xlibs/libxft/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xau/.mtn2git_empty
+++ b/packages/xlibs/libxft/.mtn2git_empty
diff --git a/packages/libxft/files/autofoo.patch b/packages/xlibs/libxft/autofoo.patch
index 54120aa612..54120aa612 100644
--- a/packages/libxft/files/autofoo.patch
+++ b/packages/xlibs/libxft/autofoo.patch
diff --git a/packages/libxft/libxft_2.1.6.bb b/packages/xlibs/libxft_2.1.6.bb
index 12c8bdfb62..c3f1f74e40 100644
--- a/packages/libxft/libxft_2.1.6.bb
+++ b/packages/xlibs/libxft_2.1.6.bb
@@ -1,6 +1,6 @@
SECTION = "x11/libs"
LICENSE = "MIT-X"
-DEPENDS = "x11 xproto libxrender freetype fontconfig"
+DEPENDS = "libx11 xproto libxrender freetype fontconfig"
DESCRIPTION = "X FreeType library. Client-side fonts with FreeType."
PROVIDES = "xft"
PR = "r1"
diff --git a/packages/libxft/libxft_cvs.bb b/packages/xlibs/libxft_cvs.bb
index 6d5c11f36b..6c1a5f5c32 100644
--- a/packages/libxft/libxft_cvs.bb
+++ b/packages/xlibs/libxft_cvs.bb
@@ -1,11 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT-X"
SECTION = "x11/libs"
-DEPENDS = "x11 xproto libxrender freetype fontconfig"
+DEPENDS = "libx11 xproto libxrender freetype fontconfig"
DESCRIPTION = "X FreeType library. Client-side fonts with FreeType."
PROVIDES = "xft"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xft"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xft"
S = "${WORKDIR}/Xft"
FILES_${PN} = ${libdir}/lib*.so.*
diff --git a/packages/xau/files/.mtn2git_empty b/packages/xlibs/libxi/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xau/files/.mtn2git_empty
+++ b/packages/xlibs/libxi/.mtn2git_empty
diff --git a/packages/libxi/files/autofoo.patch b/packages/xlibs/libxi/autofoo.patch
index f1bce9ed7a..f1bce9ed7a 100644
--- a/packages/libxi/files/autofoo.patch
+++ b/packages/xlibs/libxi/autofoo.patch
diff --git a/packages/libxi/libxi_6.0.1.bb b/packages/xlibs/libxi_6.0.1.bb
index 05ad22989f..5c44d06df3 100644
--- a/packages/libxi/libxi_6.0.1.bb
+++ b/packages/xlibs/libxi_6.0.1.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "X Input Extension library"
LICENSE = "MIT-X"
SECTION = "x11/libs"
-DEPENDS = "xproto x11 xextensions"
+DEPENDS = "xproto libx11 xextensions"
PR = "r1"
SRC_URI = "${XLIBS_MIRROR}/libXi-${PV}.tar.bz2 \
diff --git a/packages/libxi/libxi_cvs.bb b/packages/xlibs/libxi_cvs.bb
index 3935d4a636..767c641a95 100644
--- a/packages/libxi/libxi_cvs.bb
+++ b/packages/xlibs/libxi_cvs.bb
@@ -1,11 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT-X"
SECTION = "x11/libs"
-DEPENDS = "xproto x11 xextensions"
+DEPENDS = "xproto libx11 xextensions"
DESCRIPTION = "X Input extension library."
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xi \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xi \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/Xi"
diff --git a/packages/xinerama/xinerama_1.0.2+cvs20050505.bb b/packages/xlibs/libxinerama_1.0.2+cvs20050505.bb
index 749fcc62d8..dc5d82b9b0 100644
--- a/packages/xinerama/xinerama_1.0.2+cvs20050505.bb
+++ b/packages/xlibs/libxinerama_1.0.2+cvs20050505.bb
@@ -3,9 +3,10 @@ LICENSE = "MIT"
SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "panoramixext xproto x11 xext"
+DEPENDS = "panoramixext xproto libx11 libxext"
+PROVIDES = "xinerama"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xinerama;date=20050505"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xinerama;date=20050505"
S = "${WORKDIR}/Xinerama"
inherit autotools pkgconfig
diff --git a/packages/xinerama/xinerama_1.0.2.bb b/packages/xlibs/libxinerama_1.0.2.bb
index d67d750f46..a267e6c2d9 100644
--- a/packages/xinerama/xinerama_1.0.2.bb
+++ b/packages/xlibs/libxinerama_1.0.2.bb
@@ -3,7 +3,8 @@ DESCRIPTION = "Xinerama library"
SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "panoramixext xproto x11 xext"
+DEPENDS = "panoramixext xproto libx11 libxext"
+PROVIDES = "xinerama"
PR = "r1"
SRC_URI = "${XLIBS_MIRROR}/libXinerama-${PV}.tar.bz2"
diff --git a/packages/xinerama/xinerama_cvs.bb b/packages/xlibs/libxinerama_cvs.bb
index 3d3c854685..3e959df19e 100644
--- a/packages/xinerama/xinerama_cvs.bb
+++ b/packages/xlibs/libxinerama_cvs.bb
@@ -2,10 +2,11 @@ DESCRIPTION = "Xinerama library"
LICENSE = "MIT"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "panoramixext xproto x11 xext"
+DEPENDS = "panoramixext xproto libx11 libxext"
+PROVIDES = "xinerama"
PV = "0.0+cvs${SRCDATE}"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xinerama"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xinerama"
S = "${WORKDIR}/Xinerama"
inherit autotools pkgconfig
diff --git a/packages/libxkbfile/libxkbfile_cvs.bb b/packages/xlibs/libxkbfile_cvs.bb
index 9dcbfe78b3..1b433ef65f 100644
--- a/packages/libxkbfile/libxkbfile_cvs.bb
+++ b/packages/xlibs/libxkbfile_cvs.bb
@@ -2,10 +2,10 @@ LICENSE = "GPL"
PV = "0.0+cvs${SRCDATE}"
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "x11"
+DEPENDS = "libx11"
DESCRIPTION = "X11 keyboard library"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=xkbfile"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=xkbfile"
S = "${WORKDIR}/xkbfile"
inherit autotools pkgconfig
diff --git a/packages/xmu/xmu_cvs.bb b/packages/xlibs/libxmu_cvs.bb
index 3f62a89643..500b373c32 100644
--- a/packages/xmu/xmu_cvs.bb
+++ b/packages/xlibs/libxmu_cvs.bb
@@ -2,10 +2,11 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "xt xext"
+DEPENDS = "libxt libxext"
+PROVIDES = "xmu"
PR = "r2"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xmu"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xmu"
S = "${WORKDIR}/Xmu"
PACKAGES =+ "xmuu xmuu-dev"
diff --git a/packages/libxp/libxp_cvs.bb b/packages/xlibs/libxp_cvs.bb
index fa3abb1455..eaf6546d0e 100644
--- a/packages/libxp/libxp_cvs.bb
+++ b/packages/xlibs/libxp_cvs.bb
@@ -3,10 +3,10 @@ LICENSE = "MIT"
PV = "0.0+cvs${SRCDATE}"
SECTION = "libs"
-DEPENDS = "x11 xext"
+DEPENDS = "libx11 libxext"
DESCRIPTION = "X print extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xp"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xp"
S = "${WORKDIR}/Xp"
inherit autotools pkgconfig
diff --git a/packages/xaw/.mtn2git_empty b/packages/xlibs/libxpm/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xaw/.mtn2git_empty
+++ b/packages/xlibs/libxpm/.mtn2git_empty
diff --git a/packages/xpm/files/autofoo.patch b/packages/xlibs/libxpm/autofoo.patch
index 6b2174bf02..6b2174bf02 100644
--- a/packages/xpm/files/autofoo.patch
+++ b/packages/xlibs/libxpm/autofoo.patch
diff --git a/packages/xpm/xpm_3.5.1.bb b/packages/xlibs/libxpm_3.5.1.bb
index ea863f1eb6..513261efd3 100644
--- a/packages/xpm/xpm_3.5.1.bb
+++ b/packages/xlibs/libxpm_3.5.1.bb
@@ -2,7 +2,8 @@ SECTION = "x11/libs"
LICENSE = "X-BSD"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
-DEPENDS = "xproto x11"
+DEPENDS = "xproto libx11"
+PROVIDES = "xpm"
DESCRIPTION = "X Pixmap library."
PR = "r1"
diff --git a/packages/xpm/xpm_cvs.bb b/packages/xlibs/libxpm_cvs.bb
index e23928023a..1b46855735 100644
--- a/packages/xpm/xpm_cvs.bb
+++ b/packages/xlibs/libxpm_cvs.bb
@@ -3,11 +3,12 @@ LICENSE = "X-BSD"
SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
-DEPENDS = "xproto x11"
+DEPENDS = "xproto libx11"
+PROVIDES = "xpm"
DESCRIPTION = "X Pixmap library."
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xpm"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xpm"
S = "${WORKDIR}/Xpm"
inherit autotools pkgconfig
diff --git a/packages/xaw/files/.mtn2git_empty b/packages/xlibs/libxrandr-1.0.2/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xaw/files/.mtn2git_empty
+++ b/packages/xlibs/libxrandr-1.0.2/.mtn2git_empty
diff --git a/packages/libxrandr/libxrandr-1.0.2/autofoo.patch b/packages/xlibs/libxrandr-1.0.2/autofoo.patch
index 21f6e7fd78..21f6e7fd78 100644
--- a/packages/libxrandr/libxrandr-1.0.2/autofoo.patch
+++ b/packages/xlibs/libxrandr-1.0.2/autofoo.patch
diff --git a/packages/xcomposite/.mtn2git_empty b/packages/xlibs/libxrandr/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xcomposite/.mtn2git_empty
+++ b/packages/xlibs/libxrandr/.mtn2git_empty
diff --git a/packages/libxrandr/files/autofoo.patch b/packages/xlibs/libxrandr/autofoo.patch
index 7b1db760f2..7b1db760f2 100644
--- a/packages/libxrandr/files/autofoo.patch
+++ b/packages/xlibs/libxrandr/autofoo.patch
diff --git a/packages/libxrandr/libxrandr_1.0.2.bb b/packages/xlibs/libxrandr_1.0.2.bb
index ff32e0aa35..efd0505544 100644
--- a/packages/libxrandr/libxrandr_1.0.2.bb
+++ b/packages/xlibs/libxrandr_1.0.2.bb
@@ -1,6 +1,6 @@
SECTION = "x11/libs"
LICENSE = "BSD-X"
-DEPENDS = "randrext x11 libxrender xext"
+DEPENDS = "randrext libx11 libxrender libxext"
DESCRIPTION = "X Resize and Rotate extension library."
PR = "r1"
diff --git a/packages/libxrandr/libxrandr_cvs.bb b/packages/xlibs/libxrandr_cvs.bb
index 7617b752ef..3b6fd02de8 100644
--- a/packages/libxrandr/libxrandr_cvs.bb
+++ b/packages/xlibs/libxrandr_cvs.bb
@@ -1,11 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE = "BSD-X"
SECTION = "x11/libs"
-DEPENDS = "randrext x11 libxrender xext"
+DEPENDS = "randrext libx11 libxrender libxext"
DESCRIPTION = "X Resize and Rotate extension library."
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xrandr"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xrandr"
S = "${WORKDIR}/Xrandr"
inherit autotools pkgconfig
diff --git a/packages/xcomposite/xcomposite-1.0.1/.mtn2git_empty b/packages/xlibs/libxrender/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xcomposite/xcomposite-1.0.1/.mtn2git_empty
+++ b/packages/xlibs/libxrender/.mtn2git_empty
diff --git a/packages/libxrender/files/autofoo.patch b/packages/xlibs/libxrender/autofoo.patch
index eb21c766f8..eb21c766f8 100644
--- a/packages/libxrender/files/autofoo.patch
+++ b/packages/xlibs/libxrender/autofoo.patch
diff --git a/packages/libxrender/libxrender_0.8.4.bb b/packages/xlibs/libxrender_0.8.4.bb
index 7c357b4c22..b36c5701ba 100644
--- a/packages/libxrender/libxrender_0.8.4.bb
+++ b/packages/xlibs/libxrender_0.8.4.bb
@@ -1,5 +1,5 @@
SECTION = "libs"
-DEPENDS = "renderext x11"
+DEPENDS = "renderext libx11"
DESCRIPTION = "X Render extension library."
LICENSE = "BSD"
PR = "r1"
diff --git a/packages/libxrender/libxrender_cvs.bb b/packages/xlibs/libxrender_cvs.bb
index c4d26b5c2d..ea6b1f4607 100644
--- a/packages/libxrender/libxrender_cvs.bb
+++ b/packages/xlibs/libxrender_cvs.bb
@@ -1,11 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
PR = "r1"
SECTION = "libs"
-DEPENDS = "renderext x11"
+DEPENDS = "renderext libx11"
DESCRIPTION = "X Render extension library."
LICENSE = "BSD"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xrender"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xrender"
S = "${WORKDIR}/Xrender"
inherit autotools pkgconfig
diff --git a/packages/xres/xres_1.0.1.bb b/packages/xlibs/libxres_1.0.1.bb
index 06226eb100..c01731d37a 100644
--- a/packages/xres/xres_1.0.1.bb
+++ b/packages/xlibs/libxres_1.0.1.bb
@@ -1,6 +1,7 @@
SECTION = "x11/libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
-DEPENDS = "x11 xextensions xext resourceext"
+DEPENDS = "libx11 xextensions libxext resourceext"
+PROVIDES = "xres"
DESCRIPTION = "X Resource usage library."
LICENSE = "X-MIT"
SRC_URI = "${XLIBS_MIRROR}/libXres-${PV}.tar.bz2"
diff --git a/packages/xres/xres_cvs.bb b/packages/xlibs/libxres_cvs.bb
index d7f8c68dfe..e3e5c6704c 100644
--- a/packages/xres/xres_cvs.bb
+++ b/packages/xlibs/libxres_cvs.bb
@@ -1,10 +1,11 @@
PV = "0.0+cvs${SRCDATE}"
SECTION = "x11/libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
-DEPENDS = "x11 xextensions xext resourceext"
+DEPENDS = "libx11 xextensions libxext resourceext"
+PROVIDES = "xres"
DESCRIPTION = "X Resource usage library."
LICENSE = "X-MIT"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XRes"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XRes"
S = "${WORKDIR}/XRes"
inherit autotools pkgconfig
diff --git a/packages/libxss/libxss_cvs.bb b/packages/xlibs/libxss_cvs.bb
index ea85e16da5..af064f5b4d 100644
--- a/packages/libxss/libxss_cvs.bb
+++ b/packages/xlibs/libxss_cvs.bb
@@ -4,10 +4,10 @@ PV = "0.0+cvs${SRCDATE}"
PR = "r2"
SECTION = "libs"
-DEPENDS = "x11 xext"
+DEPENDS = "libx11 libxext"
DESCRIPTION = "X screen saver extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xss"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xss"
S = "${WORKDIR}/Xss"
inherit autotools pkgconfig
diff --git a/packages/xdamage/.mtn2git_empty b/packages/xlibs/libxt/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xdamage/.mtn2git_empty
+++ b/packages/xlibs/libxt/.mtn2git_empty
diff --git a/packages/xt/files/autofoo.patch b/packages/xlibs/libxt/autofoo.patch
index ff6dfdbbcc..ff6dfdbbcc 100644
--- a/packages/xt/files/autofoo.patch
+++ b/packages/xlibs/libxt/autofoo.patch
diff --git a/packages/xt/xt_0.1.5.bb b/packages/xlibs/libxt_0.1.5.bb
index 52235e2d97..00cbe9a3ad 100644
--- a/packages/xt/xt_0.1.5.bb
+++ b/packages/xlibs/libxt_0.1.5.bb
@@ -1,7 +1,8 @@
SECTION = "x11/libs"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 libsm"
+DEPENDS = "libx11 libsm"
+PROVIDES = "xt"
DESCRIPTION = "X Toolkit Intrinsics"
LICENSE = "X-MIT"
PR = "r1"
diff --git a/packages/xt/xt_cvs.bb b/packages/xlibs/libxt_cvs.bb
index fa240e4cad..fdabe1d90f 100644
--- a/packages/xt/xt_cvs.bb
+++ b/packages/xlibs/libxt_cvs.bb
@@ -1,12 +1,12 @@
PV = "0.0+cvs${SRCDATE}"
SECTION = "x11/libs"
PRIORITY = "optional"
-MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 libsm"
+DEPENDS = "libx11 libsm"
+PROVIDES = "xt"
DESCRIPTION = "X Toolkit Intrinsics"
LICENSE = "X-MIT"
PR = "r1"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xt"
S = "${WORKDIR}/Xt"
inherit autotools pkgconfig
diff --git a/packages/xtst/xtst_cvs.bb b/packages/xlibs/libxtst_cvs.bb
index fab1ee2069..c7c24d5d74 100644
--- a/packages/xtst/xtst_cvs.bb
+++ b/packages/xlibs/libxtst_cvs.bb
@@ -2,11 +2,12 @@ LICENSE = "GPL"
PV = "0.0+cvs${SRCDATE}"
SECTION = "x11/libs"
PRIORITY = "optional"
-DEPENDS = "x11 recordext xext"
+DEPENDS = "libx11 recordext libxext"
+PROVIDES = "xtst"
DESCRIPTION = "X Test Extension: client side library"
PR = "r3"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xtst"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xtst"
S = "${WORKDIR}/Xtst"
inherit autotools pkgconfig
diff --git a/packages/libxv/libxv_2.2.2+cvs20040918.bb b/packages/xlibs/libxv_2.2.2+cvs20040918.bb
index 374377a4c5..e70ce9cee9 100644
--- a/packages/libxv/libxv_2.2.2+cvs20040918.bb
+++ b/packages/xlibs/libxv_2.2.2+cvs20040918.bb
@@ -1,9 +1,9 @@
LICENSE = "GPL"
SECTION = "x11/libs"
-DEPENDS = "x11 xext"
+DEPENDS = "libx11 libxext"
DESCRIPTION = "X Video extension library."
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xlibs;module=Xv;date=20040918;method=pserver"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xv;date=20040918;method=pserver"
S = "${WORKDIR}/Xv"
inherit autotools pkgconfig
diff --git a/packages/libxv/libxv_2.2.2.bb b/packages/xlibs/libxv_2.2.2.bb
index d52f3ef76c..49e9670120 100644
--- a/packages/libxv/libxv_2.2.2.bb
+++ b/packages/xlibs/libxv_2.2.2.bb
@@ -1,6 +1,6 @@
LICENSE = "GPL"
SECTION = "x11/libs"
-DEPENDS = "x11 xext"
+DEPENDS = "libx11 libxext"
DESCRIPTION = "X Video extension library."
SRC_URI = "${XLIBS_MIRROR}/libXv-${PV}.tar.bz2"
diff --git a/packages/xdamage/xdamage-1.0.1/.mtn2git_empty b/packages/xlibs/libxvmc/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xdamage/xdamage-1.0.1/.mtn2git_empty
+++ b/packages/xlibs/libxvmc/.mtn2git_empty
diff --git a/packages/libxvmc/files/drm.patch b/packages/xlibs/libxvmc/drm.patch
index d48cdb3d0b..d48cdb3d0b 100644
--- a/packages/libxvmc/files/drm.patch
+++ b/packages/xlibs/libxvmc/drm.patch
diff --git a/packages/libxvmc/files/true.patch b/packages/xlibs/libxvmc/true.patch
index 7059295007..7059295007 100644
--- a/packages/libxvmc/files/true.patch
+++ b/packages/xlibs/libxvmc/true.patch
diff --git a/packages/libxvmc/files/via.patch b/packages/xlibs/libxvmc/via.patch
index 21cdfbdd6b..21cdfbdd6b 100644
--- a/packages/libxvmc/files/via.patch
+++ b/packages/xlibs/libxvmc/via.patch
diff --git a/packages/libxvmc/libxvmc_20040919.bb b/packages/xlibs/libxvmc_20040919.bb
index e06759182b..b70c9f52e4 100644
--- a/packages/libxvmc/libxvmc_20040919.bb
+++ b/packages/xlibs/libxvmc_20040919.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "X Video Motion Compensation extension library."
SECTION = "x11/libs"
-DEPENDS = "x11 xext libxv drm xserver-xorg"
+DEPENDS = "libx11 libxext libxv drm xserver-xorg"
PR = "r2"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xlibs;module=XvMC;date=${PV};method=pserver \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XvMC;date=${PV};method=pserver \
cvs://anonymous@cvs.sourceforge.net/cvsroot/unichrome;module=libxvmc;date=${PV};method=pserver \
file://via.patch;patch=1 \
file://true.patch"
diff --git a/packages/libxvmc/libxvmc_20041025.bb b/packages/xlibs/libxvmc_20041025.bb
index cbd360eb94..829a74d92b 100644
--- a/packages/libxvmc/libxvmc_20041025.bb
+++ b/packages/xlibs/libxvmc_20041025.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "X Video Motion Compensation extension library."
SECTION = "x11/libs"
-DEPENDS = "x11 xext libxv drm xserver-xorg"
+DEPENDS = "libx11 libxext libxv drm xserver-xorg"
PR = "r2"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xlibs;module=XvMC;date=${PV};method=pserver \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XvMC;date=${PV};method=pserver \
file://true.patch;patch=1 file://drm.patch;patch=1"
S = "${WORKDIR}/XvMC"
diff --git a/packages/libxvmc/libxvmc_20050612.bb b/packages/xlibs/libxvmc_20050612.bb
index 20d77d2d55..18cd369acc 100644
--- a/packages/libxvmc/libxvmc_20050612.bb
+++ b/packages/xlibs/libxvmc_20050612.bb
@@ -1,10 +1,10 @@
DESCRIPTION = "X Video Motion Compensation extension library."
SECTION = "x11/libs"
-DEPENDS = "x11 xext libxv drm xserver-xorg"
+DEPENDS = "libx11 libxext libxv drm xserver-xorg"
PR = "r0"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xlibs;module=XvMC;date=${PV};method=pserver \
- cvs://anoncvs@cvs.freedesktop.org/cvs/xorg;module=xc/lib/XvMC;date=${PV};method=pserver \
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XvMC;date=${PV};method=pserver \
+ ${FREEDESKTOP_CVS}/xorg;module=xc/lib/XvMC;date=${PV};method=pserver \
file://true.patch;patch=1 file://drm.patch;patch=1"
S = "${WORKDIR}/XvMC"
diff --git a/packages/libxxf86dga/libxxf86dga_cvs.bb b/packages/xlibs/libxxf86dga_cvs.bb
index a03081b8ad..96acce5d0e 100644
--- a/packages/libxxf86dga/libxxf86dga_cvs.bb
+++ b/packages/xlibs/libxxf86dga_cvs.bb
@@ -2,10 +2,10 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE = "XFree86"
SECTION = "x11/libs"
-DEPENDS = "x11 xext xxf86dgaext"
+DEPENDS = "libx11 libxext xxf86dgaext"
DESCRIPTION = "Xxf86dga extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xxf86dga"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xxf86dga"
S = "${WORKDIR}/Xxf86dga"
inherit autotools pkgconfig
diff --git a/packages/libxxf86vm/libxxf86vm_cvs.bb b/packages/xlibs/libxxf86vm_cvs.bb
index f81a18d8db..5eb48f930d 100644
--- a/packages/libxxf86vm/libxxf86vm_cvs.bb
+++ b/packages/xlibs/libxxf86vm_cvs.bb
@@ -2,10 +2,10 @@ PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT"
SECTION = "x11/libs"
-DEPENDS = "x11 xext xxf86vmext"
+DEPENDS = "libx11 libxext xxf86vmext"
DESCRIPTION = "Xxf86vm extension library."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xxf86vm"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xxf86vm"
S = "${WORKDIR}/Xxf86vm"
inherit autotools pkgconfig
diff --git a/packages/xtrans/xtrans-native_0.1.bb b/packages/xlibs/xtrans-native_0.1.bb
index 80de95c869..80de95c869 100644
--- a/packages/xtrans/xtrans-native_0.1.bb
+++ b/packages/xlibs/xtrans-native_0.1.bb
diff --git a/packages/xtrans/xtrans_0.1.bb b/packages/xlibs/xtrans_0.1.bb
index 8fee0d5089..8fee0d5089 100644
--- a/packages/xtrans/xtrans_0.1.bb
+++ b/packages/xlibs/xtrans_0.1.bb
diff --git a/packages/xtrans/xtrans_cvs.bb b/packages/xlibs/xtrans_cvs.bb
index 86d5346680..9714f4017b 100644
--- a/packages/xtrans/xtrans_cvs.bb
+++ b/packages/xlibs/xtrans_cvs.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "network API translation layer to \
insulate X applications and libraries from OS \
network vageries."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=xtrans"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=xtrans"
S = "${WORKDIR}/xtrans"
inherit autotools pkgconfig
diff --git a/packages/xmodmap/xmodmap_cvs.bb b/packages/xmodmap/xmodmap_cvs.bb
index 6c00f069c9..773466e6bb 100644
--- a/packages/xmodmap/xmodmap_cvs.bb
+++ b/packages/xmodmap/xmodmap_cvs.bb
@@ -5,9 +5,9 @@ MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "x11/base"
PR = "r1"
-DEPENDS = "x11"
+DEPENDS = "libx11"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xorg;module=xc/programs/xmodmap \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc/programs/xmodmap \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/xmodmap"
diff --git a/packages/xmonobut/xmonobut_0.4.1.bb b/packages/xmonobut/xmonobut_0.4.1.bb
index ebb379c1b3..a0800f7010 100644
--- a/packages/xmonobut/xmonobut_0.4.1.bb
+++ b/packages/xmonobut/xmonobut_0.4.1.bb
@@ -2,7 +2,7 @@ LICENSE = "GPL"
PR = "r1"
DESCRIPTION = "utility to allow middle and right clicking with a stylus"
SECTION = "x11/utils"
-DEPENDS = "x11 xext xpm libmatchbox"
+DEPENDS = "libx11 libxext libxpm libmatchbox"
SRC_URI = "http://www.handhelds.org/~philippe/sources/xmonobut-${PV}.tar.gz \
file://xmonobut.desktop"
inherit autotools
diff --git a/packages/xmonobut/xmonobut_0.4.bb b/packages/xmonobut/xmonobut_0.4.bb
index 928049d161..e4907831f6 100644
--- a/packages/xmonobut/xmonobut_0.4.bb
+++ b/packages/xmonobut/xmonobut_0.4.bb
@@ -2,7 +2,7 @@ LICENSE = "GPL"
PR = "r1"
DESCRIPTION = "utility to allow middle and right clicking with a stylus"
SECTION = "x11/utils"
-DEPENDS = "x11 xext xpm"
+DEPENDS = "libx11 libxext libxpm"
SRC_URI = "http://www.handhelds.org/~mallum/downloadables/xmonobut/xmonobut-${PV}.tar.gz \
file://xmonobut.desktop"
inherit autotools
diff --git a/packages/xmu/.mtn2git_empty b/packages/xmu/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xmu/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xpm/.mtn2git_empty b/packages/xpm/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xpm/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xpm/files/.mtn2git_empty b/packages/xpm/files/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xpm/files/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xprop/xprop_cvs.bb b/packages/xprop/xprop_cvs.bb
index 895a36fa82..f6dd54b7cd 100644
--- a/packages/xprop/xprop_cvs.bb
+++ b/packages/xprop/xprop_cvs.bb
@@ -1,12 +1,12 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE = "MIT"
-DEPENDS = "x11 xmu xext"
+DEPENDS = "libx11 libxmu libxext"
DESCRIPTION = "property displayer for X"
MAINTER = "Rene Wagner <rw@handhelds.org>"
SECTION = "x11/base"
PR = "r2"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xorg;module=xc/programs/xprop;tag=XORG-MAIN \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc/programs/xprop;tag=XORG-MAIN \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/xprop"
diff --git a/packages/xproto/xproto_6.6.2+cvs20050226.bb b/packages/xproto/xproto_6.6.2+cvs20050226.bb
index a5a92fee40..594a351155 100644
--- a/packages/xproto/xproto_6.6.2+cvs20050226.bb
+++ b/packages/xproto/xproto_6.6.2+cvs20050226.bb
@@ -3,7 +3,7 @@ SECTION = "x11/libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DESCRIPTION = "X protocol and ancillary headers."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xproto;date=20050226"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xproto;date=20050226"
S = "${WORKDIR}/Xproto"
inherit autotools pkgconfig
diff --git a/packages/xproto/xproto_cvs.bb b/packages/xproto/xproto_cvs.bb
index b5ecf2d7ef..1d9c96c87d 100644
--- a/packages/xproto/xproto_cvs.bb
+++ b/packages/xproto/xproto_cvs.bb
@@ -4,7 +4,7 @@ SECTION = "x11/libs"
MAINTAINER = "Greg Gilbert <greg@treke.net>"
DESCRIPTION = "X protocol and ancillary headers."
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=Xproto"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=Xproto"
S = "${WORKDIR}/Xproto"
inherit autotools pkgconfig
diff --git a/packages/xqt/xqt_0.0.9.bb b/packages/xqt/xqt_0.0.9.bb
index 8c87c3b797..d5a8e70332 100644
--- a/packages/xqt/xqt_0.0.9.bb
+++ b/packages/xqt/xqt_0.0.9.bb
@@ -4,7 +4,7 @@ SECTION = "x11"
SRCDATE = "20041111"
-DEPENDS = "freetype libxi xmu flex-2.5.4-native virtual/libqte2 libqpe-opie"
+DEPENDS = "freetype libxi libxmu flex-2.5.4-native virtual/libqte2 libqpe-opie"
SRC_URI = "cvs://anonymous@cvs.sourceforge.jp/cvsroot/xqt;module=xc;method=pserver \
file://imake-staging.patch;patch=1 \
diff --git a/packages/xrandr/xrandr_cvs.bb b/packages/xrandr/xrandr_cvs.bb
index ea6c71c6ab..0ab7c745f4 100644
--- a/packages/xrandr/xrandr_cvs.bb
+++ b/packages/xrandr/xrandr_cvs.bb
@@ -1,10 +1,10 @@
PV = "0.0+cvs${SRCDATE}"
LICENSE= "BSD-X"
-DEPENDS = "libxrandr x11 xext"
+DEPENDS = "libxrandr libx11 libxext"
DESCRIPTION = "X Resize and Rotate extension command."
SECTION = "x11/base"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xapps;module=xrandr"
+SRC_URI = "${FREEDESKTOP_CVS}/xapps;module=xrandr"
S = "${WORKDIR}/xrandr"
inherit autotools pkgconfig
diff --git a/packages/xrdb/xrdb_cvs.bb b/packages/xrdb/xrdb_cvs.bb
index daa896874f..cbf2caac70 100644
--- a/packages/xrdb/xrdb_cvs.bb
+++ b/packages/xrdb/xrdb_cvs.bb
@@ -1,12 +1,12 @@
PV = "0.0+cvs${SRCDATE}"
-DEPENDS = "x11 xmu xext"
+DEPENDS = "libx11 libxmu libxext"
DESCRIPTION = "X server resource database utility"
MAINTAINER = "Rene Wagner <rw@handhelds.org>"
SECTION = "x11/base"
LICENSE = "xrdb"
PR = "r2"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xorg;module=xc/programs/xrdb \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc/programs/xrdb \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/xrdb"
diff --git a/packages/xres/.mtn2git_empty b/packages/xres/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xres/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xscreensaver/xscreensaver_4.16.bb b/packages/xscreensaver/xscreensaver_4.16.bb
index 6db40ab4bc..acf629f558 100644
--- a/packages/xscreensaver/xscreensaver_4.16.bb
+++ b/packages/xscreensaver/xscreensaver_4.16.bb
@@ -16,7 +16,7 @@ HOMEPAGE="http://www.jwz.org/xscreensaver/"
PR = "r1"
SECTION="x11-misc"
-DEPENDS="intltool x11 gtk+ libxml2 libglade"
+DEPENDS="intltool libx11 gtk+ libxml2 libglade"
# xscreensaver-demo is a glade app
LDFLAGS_append = " -Wl,--export-dynamic"
diff --git a/packages/xscreensaver/xscreensaver_4.22.bb b/packages/xscreensaver/xscreensaver_4.22.bb
index df4c45fb1c..ba6bd9c58e 100644
--- a/packages/xscreensaver/xscreensaver_4.22.bb
+++ b/packages/xscreensaver/xscreensaver_4.22.bb
@@ -13,7 +13,7 @@ HOMEPAGE="http://www.jwz.org/xscreensaver/"
PR = "r0"
SECTION="x11-misc"
-DEPENDS="intltool x11 gtk+ libxml2 libglade"
+DEPENDS="intltool libx11 gtk+ libxml2 libglade"
# xscreensaver-demo is a glade app
LDFLAGS_append = " -Wl,--export-dynamic"
diff --git a/packages/xserver/xserver-kdrive-omap_6.6.3.bb b/packages/xserver/xserver-kdrive-omap_6.6.3.bb
index 5b131de8bd..31bcb0c273 100644
--- a/packages/xserver/xserver-kdrive-omap_6.6.3.bb
+++ b/packages/xserver/xserver-kdrive-omap_6.6.3.bb
@@ -1,5 +1,5 @@
LICENSE = "MIT"
-DEPENDS = "xsp tslib-maemo xproto xdmcp xextensions xtrans xau x11 xext libxrandr fixesext damageext xfont resourceext compositeext xcalibrateext recordext"
+DEPENDS = "xsp tslib-maemo xproto libxdmcp xextensions xtrans libxau libx11 libxext libxrandr fixesext damageext libxfont resourceext compositeext xcalibrateext recordext"
PROVIDES = "virtual/xserver"
PACKAGES = "${PN} ${PN}-doc ${PN}-dev ${PN}-locale"
SECTION = "x11/base"
diff --git a/packages/xserver/xserver-kdrive_20050207.bb b/packages/xserver/xserver-kdrive_20050207.bb
index 788b8580c4..e0db6be3e7 100644
--- a/packages/xserver/xserver-kdrive_20050207.bb
+++ b/packages/xserver/xserver-kdrive_20050207.bb
@@ -3,7 +3,7 @@ FIXEDSRCDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}"
DEFAULT_PREFERENCE = "1"
LICENSE = "MIT"
-DEPENDS = "tslib xproto xdmcp xextensions-1.0.1 xtrans xau x11 xext libxrandr fixesext damageext xfont resourceext compositeext xcalibrateext recordext"
+DEPENDS = "tslib xproto libxdmcp xextensions-1.0.1 xtrans libxau libx11 libxext libxrandr fixesext damageext libxfont resourceext compositeext xcalibrateext recordext"
PROVIDES = "virtual/xserver"
RPROVIDES = "virtual/xserver"
PACKAGES = "xserver-kdrive-mach64 xserver-kdrive-fbdev xserver-kdrive-vesa xserver-kdrive-mga xserver-kdrive-via xserver-kdrive-ati xserver-kdrive-fake xserver-kdrive-i810 xserver-kdrive-xephyr xserver-kdrive-epson ${PN}-doc ${PN}-dev ${PN}-locale"
@@ -33,12 +33,12 @@ FILES_xserver-kdrive-i810 = "${bindir}/Xi810"
FILES_xserver-kdrive-epson = "${bindir}/Xepson"
FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xserver;module=xserver;date=${FIXEDSRCDATE} \
+SRC_URI = "${FREEDESKTOP_CVS}/xserver;module=xserver;date=${FIXEDSRCDATE} \
file://kmode.patch;patch=1 \
file://disable-apm.patch;patch=1 \
file://fbdev-not-fix.patch;patch=1 "
-SRC_URI_h3600 = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xserver;module=xserver;date=${FIXEDSRCDATE} \
+SRC_URI_h3600 = "${FREEDESKTOP_CVS}/xserver;module=xserver;date=${FIXEDSRCDATE} \
file://kmode.patch;patch=1 \
file://faster-rotated.patch;patch=1 \
file://fbdev-not-fix.patch;patch=1 "
diff --git a/packages/xserver/xserver-kdrive_20050624.bb b/packages/xserver/xserver-kdrive_20050624.bb
index 7c8949a896..c2e44f7837 100644
--- a/packages/xserver/xserver-kdrive_20050624.bb
+++ b/packages/xserver/xserver-kdrive_20050624.bb
@@ -2,7 +2,7 @@ PV = "0.0+cvs${FIXEDSRCDATE}"
FIXEDSRCDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}"
LICENSE = "MIT"
-DEPENDS = "tslib xproto xdmcp xextensions xtrans xau x11 xext libxrandr fixesext damageext xfont resourceext compositeext xcalibrateext recordext"
+DEPENDS = "tslib xproto libxdmcp xextensions xtrans libxau libx11 libxext libxrandr fixesext damageext libxfont resourceext compositeext xcalibrateext recordext"
PROVIDES = "virtual/xserver"
RPROVIDES = "virtual/xserver"
PACKAGES = "xserver-kdrive-mach64 xserver-kdrive-fbdev xserver-kdrive-vesa xserver-kdrive-mga xserver-kdrive-via xserver-kdrive-ati xserver-kdrive-fake xserver-kdrive-i810 xserver-kdrive-xephyr xserver-kdrive-epson ${PN}-doc ${PN}-dev ${PN}-locale"
@@ -32,7 +32,7 @@ FILES_xserver-kdrive-i810 = "${bindir}/Xi810"
FILES_xserver-kdrive-epson = "${bindir}/Xepson"
FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xserver;module=xserver;date=${FIXEDSRCDATE} \
+SRC_URI = "${FREEDESKTOP_CVS}/xserver;module=xserver;date=${FIXEDSRCDATE} \
file://kmode.patch;patch=1 \
file://no-serial-probing.patch;patch=1 \
file://fbdev-not-fix.patch;patch=1"
diff --git a/packages/xserver/xserver-kdrive_cvs.bb b/packages/xserver/xserver-kdrive_cvs.bb
index 05395132ab..b891bca467 100644
--- a/packages/xserver/xserver-kdrive_cvs.bb
+++ b/packages/xserver/xserver-kdrive_cvs.bb
@@ -2,7 +2,7 @@ PV = "0.0+cvs${SRCDATE}"
DEFAULT_PREFERENCE = "-2"
LICENSE = "MIT"
-DEPENDS = "tslib xproto xdmcp xextensions xtrans xau x11 xext libxrandr fixesext damageext xfont resourceext compositeext xcalibrateext recordext"
+DEPENDS = "tslib xproto xdmcp xextensions xtrans libxau libx11 libxext libxrandr fixesext damageext libxfont resourceext compositeext xcalibrateext recordext"
PROVIDES = "virtual/xserver"
RPROVIDES = "virtual/xserver"
PACKAGES = "xserver-kdrive-mach64 xserver-kdrive-fbdev xserver-kdrive-vesa xserver-kdrive-mga xserver-kdrive-via xserver-kdrive-ati xserver-kdrive-fake xserver-kdrive-i810 xserver-kdrive-xephyr xserver-kdrive-epson ${PN}-doc ${PN}-dev ${PN}-locale"
@@ -32,7 +32,7 @@ FILES_xserver-kdrive-i810 = "${bindir}/Xi810"
FILES_xserver-kdrive-epson = "${bindir}/Xepson"
FILES_xserver-kdrive-xephyr = "${bindir}/Xephyr"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xserver;module=xserver \
+SRC_URI = "${FREEDESKTOP_CVS}/xserver;module=xserver \
file://kmode.patch;patch=1 \
file://no-serial-probing.patch;patch=1 \
file://kdrive-evdev.patch;patch=1 \
diff --git a/packages/xserver/xserver-xorg_6.8.99.10.bb b/packages/xserver/xserver-xorg_6.8.99.10.bb
index 0358b0688f..37546fe1ee 100644
--- a/packages/xserver/xserver-xorg_6.8.99.10.bb
+++ b/packages/xserver/xserver-xorg_6.8.99.10.bb
@@ -4,9 +4,9 @@ PROVIDES = "virtual/xserver"
LICENSE = "Xorg"
PR = "r2"
-DEPENDS = "fontconfig freetype libxi xmu flex-native zlib"
+DEPENDS = "fontconfig freetype libxi libxmu flex-native zlib"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xorg;module=xc;method=pserver;tag=XORG-6_8_99_10 \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc;method=pserver;tag=XORG-6_8_99_10 \
file://imake-staging.patch;patch=1 \
file://imake-installed.patch;patch=1 \
file://fontfile.patch;patch=1 file://freetype.patch;patch=1 \
diff --git a/packages/xserver/xserver-xorg_6.8.99.11.bb b/packages/xserver/xserver-xorg_6.8.99.11.bb
index 84ff41e218..e60f62ef57 100644
--- a/packages/xserver/xserver-xorg_6.8.99.11.bb
+++ b/packages/xserver/xserver-xorg_6.8.99.11.bb
@@ -4,9 +4,9 @@ PROVIDES = "virtual/xserver"
LICENSE = "Xorg"
PR = "r0"
-DEPENDS = "fontconfig freetype libxi xmu flex-native zlib"
+DEPENDS = "fontconfig freetype libxi libxmu flex-native zlib"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xorg;module=xc;method=pserver;tag=XORG-6_8_99_11 \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc;method=pserver;tag=XORG-6_8_99_11 \
file://imake-staging.patch;patch=1 \
file://imake-installed.patch;patch=1 \
file://fontfile.patch;patch=1 file://freetype.patch;patch=1 \
diff --git a/packages/xserver/xserver-xorg_cvs.bb b/packages/xserver/xserver-xorg_cvs.bb
index 9c52864bef..e410581e17 100644
--- a/packages/xserver/xserver-xorg_cvs.bb
+++ b/packages/xserver/xserver-xorg_cvs.bb
@@ -5,9 +5,9 @@ PROVIDES = "virtual/xserver"
PR = "r3"
PV = "6.8.1+cvs${SRCDATE}"
-DEPENDS = "fontconfig freetype libxi xmu flex-2.5.4-native"
+DEPENDS = "fontconfig freetype libxi libxmu flex-2.5.4-native"
-SRC_URI = "cvs://anoncvs@cvs.freedesktop.org/cvs/xorg;module=xc;method=pserver \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc;method=pserver \
file://imake-staging.patch;patch=1 \
file://dri.patch;patch=1"
diff --git a/packages/xset/xset_20040817.bb b/packages/xset/xset_20040817.bb
index 201b963515..daf57d15c8 100644
--- a/packages/xset/xset_20040817.bb
+++ b/packages/xset/xset_20040817.bb
@@ -5,13 +5,13 @@ FIXEDSRCDATE = "${@bb.data.getVar('FILE', d, 1).split('_')[-1].split('.')[0]}"
PV = "0.0+cvs${FIXEDSRCDATE}"
PR = "r1"
-DEPENDS = "x11 xext xextensions xmu"
+DEPENDS = "libx11 libxext xextensions libxmu"
CFLAGS += "-D_GNU_SOURCE"
SECTION = "x11/base"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xorg;module=xc/programs/xset;date=${FIXEDSRCDATE} \
+SRC_URI = "${FREEDESKTOP_CVS}/xorg;module=xc/programs/xset;date=${FIXEDSRCDATE} \
file://autofoo.patch;patch=1"
S = "${WORKDIR}/xset"
diff --git a/packages/xstroke/xstroke_0.6.bb b/packages/xstroke/xstroke_0.6.bb
index c905b7b601..590e2745b6 100644
--- a/packages/xstroke/xstroke_0.6.bb
+++ b/packages/xstroke/xstroke_0.6.bb
@@ -3,7 +3,7 @@ LICENSE = "GPL"
SECTION = "x11"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 xft xtst xpm"
+DEPENDS = "libx11 xft libxtst libxpm"
PR = "r2"
SRC_URI = "http://xstroke.org/releases/xstroke-0.6.tar.gz \
diff --git a/packages/xstroke/xstroke_cvs.bb b/packages/xstroke/xstroke_cvs.bb
index d19b7d0d45..90e8aec033 100644
--- a/packages/xstroke/xstroke_cvs.bb
+++ b/packages/xstroke/xstroke_cvs.bb
@@ -3,7 +3,7 @@ LICENSE = "GPL"
SECTION = "x11"
PRIORITY = "optional"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
-DEPENDS = "x11 xft xtst xpm"
+DEPENDS = "libx11 xft libxtst libxpm"
PV = "0.0+cvs${SRCDATE}"
PR = "r1"
diff --git a/packages/xt/.mtn2git_empty b/packages/xt/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xt/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xt/files/.mtn2git_empty b/packages/xt/files/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xt/files/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xtrans/.mtn2git_empty b/packages/xtrans/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xtrans/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xtscal/xtscal_0.4.bb b/packages/xtscal/xtscal_0.4.bb
index d2d4adc37e..fbd8a8d4c9 100644
--- a/packages/xtscal/xtscal_0.4.bb
+++ b/packages/xtscal/xtscal_0.4.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Touchscreen calibration utility"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "x11/base"
LICENSE = "GPL"
-DEPENDS = "x11 libxft libxrandr"
+DEPENDS = "libx11 libxft libxrandr"
SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2"
diff --git a/packages/xtscal/xtscal_0.5.1.bb b/packages/xtscal/xtscal_0.5.1.bb
index a76b2f3010..ef415227ef 100644
--- a/packages/xtscal/xtscal_0.5.1.bb
+++ b/packages/xtscal/xtscal_0.5.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Touchscreen calibration utility"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "x11/base"
LICENSE = "GPL"
-DEPENDS = "x11 libxft libxrandr xcalibrate"
+DEPENDS = "libx11 libxft libxrandr xcalibrate"
PR = "r1"
diff --git a/packages/xtscal/xtscal_0.5.bb b/packages/xtscal/xtscal_0.5.bb
index 64c51b96a2..757f7d1f21 100644
--- a/packages/xtscal/xtscal_0.5.bb
+++ b/packages/xtscal/xtscal_0.5.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Touchscreen calibration utility"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "x11/base"
LICENSE = "GPL"
-DEPENDS = "x11 libxft libxrandr xcalibrate"
+DEPENDS = "libx11 libxft libxrandr xcalibrate"
SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2"
diff --git a/packages/xtscal/xtscal_0.6.3.bb b/packages/xtscal/xtscal_0.6.3.bb
index a2a770f4fe..70666f1fbf 100644
--- a/packages/xtscal/xtscal_0.6.3.bb
+++ b/packages/xtscal/xtscal_0.6.3.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Touchscreen calibration utility"
MAINTAINER = "Phil Blundell <pb@handhelds.org>"
SECTION = "x11/base"
-DEPENDS = "x11 libxft libxrandr xcalibrate"
+DEPENDS = "libx11 libxft libxrandr xcalibrate"
PR = "r1"
diff --git a/packages/xtst/.mtn2git_empty b/packages/xtst/.mtn2git_empty
deleted file mode 100644
index e69de29bb2..0000000000
--- a/packages/xtst/.mtn2git_empty
+++ /dev/null
diff --git a/packages/xxf86dgaext/xxf86dgaext_cvs.bb b/packages/xxf86dgaext/xxf86dgaext_cvs.bb
index 9b46c91c1a..30788049c7 100644
--- a/packages/xxf86dgaext/xxf86dgaext_cvs.bb
+++ b/packages/xxf86dgaext/xxf86dgaext_cvs.bb
@@ -3,7 +3,7 @@ LICENSE = "Xorg"
SECTION = "x11/libs"
DESCRIPTION = "Xxf86dga extension headers"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XF86DGAExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XF86DGAExt"
S = "${WORKDIR}/XF86DGAExt"
inherit autotools pkgconfig
diff --git a/packages/xxf86vmext/xxf86vmext_cvs.bb b/packages/xxf86vmext/xxf86vmext_cvs.bb
index 181d763e32..06145e2905 100644
--- a/packages/xxf86vmext/xxf86vmext_cvs.bb
+++ b/packages/xxf86vmext/xxf86vmext_cvs.bb
@@ -3,7 +3,7 @@ LICENSE = "MIT"
SECTION = "x11/libs"
DESCRIPTION = "Xxf86vm extension headers"
-SRC_URI = "cvs://anoncvs:anoncvs@pdx.freedesktop.org/cvs/xlibs;module=XF86VMExt"
+SRC_URI = "${FREEDESKTOP_CVS}/xlibs;module=XF86VMExt"
S = "${WORKDIR}/XF86VMExt"
inherit autotools pkgconfig
diff --git a/packages/xdamage/xdamage/.mtn2git_empty b/packages/zaurusd/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xdamage/xdamage/.mtn2git_empty
+++ b/packages/zaurusd/.mtn2git_empty
diff --git a/packages/zaurusd/zaurusd_svn.bb b/packages/zaurusd/zaurusd_svn.bb
new file mode 100644
index 0000000000..5717e004b3
--- /dev/null
+++ b/packages/zaurusd/zaurusd_svn.bb
@@ -0,0 +1,18 @@
+LICENSE = "GPL"
+SECTION = "base"
+MAINTAINER = "Richard Purdie <rpurdie@openedhand.com>"
+DESCRIPTION = "Daemon to handle device specifc features."
+PV = "0.0+svn${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "svn://svn.o-hand.com/repos/misc/trunk;module=zaurusd;proto=http"
+S = "${WORKDIR}/${PN}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+inherit autotools pkgconfig
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "zaurusd"
+INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
diff --git a/packages/xdmcp/.mtn2git_empty b/packages/zd1211/zd1211-r59/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/xdmcp/.mtn2git_empty
+++ b/packages/zd1211/zd1211-r59/.mtn2git_empty
diff --git a/packages/zd1211/zd1211-r59/makefile.patch b/packages/zd1211/zd1211-r59/makefile.patch
new file mode 100644
index 0000000000..5c575faece
--- /dev/null
+++ b/packages/zd1211/zd1211-r59/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_r59.bb b/packages/zd1211/zd1211_r59.bb
new file mode 100644
index 0000000000..b855abe2a1
--- /dev/null
+++ b/packages/zd1211/zd1211_r59.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Driver for zd1211 family of wireless USB Dongles"
+PRIORITY = "optional"
+SECTION = "kernel/modules"
+MAINTAINER = "Oyvind Repvik <nail@nslu2-linux.org>"
+LICENSE = "GPL"
+PR = "r0"
+RDEPENDS = "wireless-tools"
+
+SRC_URI = "http://zd1211.ath.cx/download/zd1211-driver-${PV}.tgz \
+ file://makefile.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/zd1211-driver-${PV}"
+
+inherit module
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
+ oe_runmake 'MODPATH={D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net' \
+ 'KERNEL_SOURCE=${STAGING_KERNEL_DIR}' \
+ 'KDIR=${STAGING_KERNEL_DIR}' \
+ 'KERNEL_VERSION=${KERNEL_VERSION}' \
+ 'CC="${KERNEL_CC}"' \
+ 'LD="${KERNEL_LD}"'
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
+ install -m 0644 ${S}/zd1211*${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net
+}
+
diff --git a/site/mipsel-linux b/site/mipsel-linux
index b4aab3beb0..fe0ee88c52 100644
--- a/site/mipsel-linux
+++ b/site/mipsel-linux
@@ -102,3 +102,15 @@ rd_cv_ieee_works=${rd_cv_ieee_works=yes}
# gettext
am_cv_func_working_getline=${am_cv_func_working_getline=yes}
+
+# samba
+samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}
+
+# vim
+ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
+
+# sudo
+sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10}
+
+#intercom
+ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}